• toc {:toc}

Mass Storage

  • 영구적으로 파일과 데이터들을 관리하기 위해서는 mass storage가 필요하다.
  • Hard disk / nonvolatile memory devices

여러 측면 존재

  • Sequential access vs Random access
  • Synchronous transfer vs Asynchronous transfer
  • Dedicated vs Shared
  • Read-only vs Read-write

OS의 주 목적

  1. Mass storage에 대해 가장 간단한 인터페이스 제공
  2. 최대 동시성에 대해 I/O 최적화

Hard Disk Drive

Transclude of Hard-Disk-Drive

Nonvolatile Memory Devices

  • Read-only memory(ROM) : 생산될 때 프로그램이 작성된다.

  • Programmable ROM(PROM) : 한번 프로그램이 작성될 수 있다.

  • Erasable PROM(EPROM) : 지워질 수 있다.

  • Electrically erasable PROM (EEPROM) : 전자기적 삭제 가능성

  • Flash memory : EEPROM이다. block 단위로 삭제 가능

  • Flash memory-based NVM

    • Solid-state disks(SSDs)
    • USB drives
    • 회로에 박혀있는 memory
  • 장점

    • 전기적 NVM들은 HDD보다 더 안전하고 빠르다. HDD는 외부 충격에 고장나기 쉽기 때문.
    • 움직이지 않아도 되기 때문에 seek time, rotational latency가 발생하지 않는다.
  • 단점

    • NVM들은 더 비싸고 더 적은 용량을 갖는다.
    • 더 짧은 수명을 갖는다.
    • 전기적 성질로 인해 삭제 가능한 정도가 제한되어 있다.

NAND Flash Controller

  • HDD의 sector와 같이 Page 조각 block 단위로 읽히고 씌여진다.

  • 이 block 단위가 최소단위가 되고 block 내부 중간만 수정할 수 없다.

  • NAND Flash Controller

    • Flash Translation Layer(FTL) table을 유지한다.
      • Logical block들이 유효한지 추적하기 위해
    • Garbage collection을 구현
      • invalid page space를 할당 해제하기 위해
      • valid 얼마 안남은 경우 전부 옮기고 block clear, invalid
    • Overpositioning을 할당한다.
      • GC에 대한 작업 공간을 제공하기 위해
    • Wear leveling(닮은 정도)를 제공한다.
      • 수명이 있기 때문에 닮은 정도를 제공해 골고루 사용할 수 있도록 한다.

HDD Scheduling

  • OS는 하드웨어를 효율적으로 사용하려 한다.

    • 효율적? fast access time, disk bandwidth
    • Disk bandwidth : 전송되는 byte의 총량. 첫 요청과 전송 완료까지의 총 시간으로 나누어진다.
  • 목적

    • Minimize seek time
      • Seek time과 Seek distance는 서로 비슷하기 때문에 거리를 줄이자!
  • 드라이브에 I/O 필요하면 OS에 system call 을 호출시킨다.

    • I/O 요청이 포함하는 것
      • input인지 output인지
      • 전송을 위한 메모리 주소
      • 전송 데이터의 크기
    • Idle(안 바쁜 상태) : 즉시 처리
    • 바쁘면 queue에 저장
  • 과거에는 OS가 queue, 디스크 head 이동을 다뤄야 했지만 현재는 Storage가 전담

    • Logical block address만 제공한다.
    • Drive controller가 queue를 다룰 수 있다.

FCFS Scheduling

  • First-come, first-served : 큐에 들어온 순서대로 처리한다.
  • 빠르진 않다.

SCAN Algorithm

  • 종종 elevator algorithm이라 불린다.
  • 위/아래 한쪽으로 쭉 이동하고 다음 쪽으로 이동한다.
  • FCFS 보다는 적은 이동거리를 갖는다.

C-SCAN Scheduling

  • Circular SCAN이다.
  • 한쪽 끝에 도달하면 내려가는 것이 아니라 계속해서 올라간다.
  • seek time이 좀 더 평등하게 평균적으로 위치하도록 만든다.

Error Detection and Correction

  • Error Dectection : 문제가 발생했는지 안 했는지 탐색하는 것
    • ex) bit flipping(하나의 bit(데이터)가 바뀌는 것)
  • Parity Bit : 에러 탐지를 위해 하나의 추가 정보를 제공하는 것(더했을 때 홀, 짝)
    • 2개 변경되면 변하지 않기 때문에 한계가 있다.
  • Error-Correction Code (ECC) : 탐지할 뿐만 아니라 정정한다.
    • 정정 되면 soft error
    • 정정 안되면 hard error

Storage Device Management

  • Low-level formatting / Physical formatting : 디스크를 disk controller가 읽거나 쓸 수 있는 sector(구역)으로 나눈다.

    • 각 sector는 header information, plus data, ECC를 갖을 수 있다.
    • 주로 512 bytes
  • Logical formatting (making a file system)

    • Partition : 디스크를 하나, 혹은 그 이상의 실린더로 나누는 것
    • 파티션 각각을 logical disk로 취급한다.
    • 대부분 파일 시스템 block들 cluster들로 묶인다. (효율 증가)
  • Root partition OS 포함. boot time에 mount 된다.

  • Mount : 운영체제와 해당 사용자가 파일 시스템에 접근할 수 있도록 하는 과

  • Mount 될 때, 파일 시스템은 메타데이터를 확인한다.

    • 올바르지 않으면? 고치고 다시
    • 올바르면 접근 허용
  • Initial bootstrap은 NVM flash memory firmware에 저장되어 있다.

  • Full bootstrap program은 boot partition의 boot block에 저장되어 있다.

  • Booting Process

  1. 컴퓨터 전원 on
  2. mother board 위에 있는 BIOS Firmware가 시작 테스트하고 실행
  3. 디스크 특정위치의 Master Block Record를 읽어 boot partition을 찾는다.
  4. Boot loader가 boot partition읽어 load
  5. kernel을 메모리에 Load, kernel 초기화 및 설정

Swap-Space Management

  • DRAM이 모든 프로세스를 다루기에 충분히 크지 않기 때문에 swapping, paging 사용
  • OS는 이를 다루기 위해 swap space management를 제공
  • Swap space를 파일 시스템 내부에 둘 수도 있으나 별도 partition 사용이 일반적
    • Secondary storage 느리기에 성능 최적화 중요
    • 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조됨
    • 따라서, blcok 크기, 저장 방식이 일반 파일 시스템과 다르다.

Storage Attachment

저장소 접근 방식

  1. local I/O 포트를 통해서 호스트 연결방식
  2. Remote procedure call 통해 네트워크 연결방식
  3. 클라우드 사용

RAID

  • RAID : Redundant Array of Inexpensive(Independent) Disks
  • Redundancy : 중복성 여러 개의 디스크를 묶어서 사용한다.
  • Multiple Disk인 경우 분리되어 있어 각각 직접 접근해줘야 한다.
  • RAID의 경우 물리적으로는 분리되어 있으므로 평행하게 접근 가능하다.
  • 처리 속도 향상
    • Block의 내용을 분산 저장 가능
    • 병렬적 읽기 가능
  • 신뢰성 향상
    • 동일 정보를 여러 디스크에 중복 저장 가능
    • 하나의 디스크 고장 시 다른 디스크에서 읽을 수 있음

image

  • Mean Time Between Failures(MTBF) : 문제가 생겨 사용 불가한 평균시간

  • Mean Time to Repair

  • Mean Time to Data Loss

  • 가장 간단하지만 비싼 접근 : 매일 drive 복사하는 것

  • RAID scheme

    • RAID 0 (non-redundant striping) - 같은 내용 백업되어 있지 않다.

    • RAID 1 (mirroring or shadowing) - 복구 가능하도록 data copy

    • RAID 0+1 (mirrored stripes) - stripe된 후 mirror

    • RAID 1+0 (striped mirrors) - mirror된 후 stripe

      • 성능 증가, 신뢰도 증가

      image

    • RAID 4, 5, 6 (block interleaved parity)

      • Parity disk를 하나를 둔다. ---
        • mirroring할 때 2배의 디스크를 사용해야 하지만 parity disk 하나에 저장해 중복도를 줄인다.
        • parity disk가 타격을 입으면 파일 복구가 불가능하다.
      • RAID 5 parity를 분산시켜 놓는다.
      • redundancy를 더 적게 사용한다. image 참 : https://www.prepressure.com/library/technology/raid