- 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의 주 목적
- Mass storage에 대해 가장 간단한 인터페이스 제공
- 최대 동시성에 대해 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(닮은 정도)를 제공한다.
- 수명이 있기 때문에 닮은 정도를 제공해 골고루 사용할 수 있도록 한다.
- Flash Translation Layer(FTL) table을 유지한다.
HDD Scheduling
-
OS는 하드웨어를 효율적으로 사용하려 한다.
- 효율적? fast access time, disk bandwidth
- Disk bandwidth : 전송되는 byte의 총량. 첫 요청과 전송 완료까지의 총 시간으로 나누어진다.
-
목적
- Minimize seek time
- Seek time과 Seek distance는 서로 비슷하기 때문에 거리를 줄이자!
- Minimize seek time
-
드라이브에 I/O 필요하면 OS에 system call 을 호출시킨다.
- I/O 요청이 포함하는 것
- input인지 output인지
- 전송을 위한 메모리 주소
- 전송 데이터의 크기
- Idle(안 바쁜 상태) : 즉시 처리
- 바쁘면 queue에 저장
- I/O 요청이 포함하는 것
-
과거에는 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
- 컴퓨터 전원 on
- mother board 위에 있는 BIOS Firmware가 시작 테스트하고 실행
- 디스크 특정위치의 Master Block Record를 읽어 boot partition을 찾는다.
- Boot loader가 boot partition읽어 load
- kernel을 메모리에 Load, kernel 초기화 및 설정
Swap-Space Management
- DRAM이 모든 프로세스를 다루기에 충분히 크지 않기 때문에 swapping, paging 사용
- OS는 이를 다루기 위해 swap space management를 제공
- Swap space를 파일 시스템 내부에 둘 수도 있으나 별도 partition 사용이 일반적
- Secondary storage 느리기에 성능 최적화 중요
- 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조됨
- 따라서, blcok 크기, 저장 방식이 일반 파일 시스템과 다르다.
Storage Attachment
저장소 접근 방식
- local I/O 포트를 통해서 호스트 연결방식
- Remote procedure call 통해 네트워크 연결방식
- 클라우드 사용
RAID
- RAID : Redundant Array of Inexpensive(Independent) Disks
- Redundancy : 중복성 ⇒ 여러 개의 디스크를 묶어서 사용한다.
- Multiple Disk인 경우 분리되어 있어 각각 직접 접근해줘야 한다.
- RAID의 경우 물리적으로는 분리되어 있으므로 평행하게 접근 가능하다.
- 처리 속도 향상
- Block의 내용을 분산 저장 가능
- 병렬적 읽기 가능
- 신뢰성 향상
- 동일 정보를 여러 디스크에 중복 저장 가능
- 하나의 디스크 고장 시 다른 디스크에서 읽을 수 있음
-
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
- 성능 증가, 신뢰도 증가
-
RAID 4, 5, 6 (block interleaved parity)
- Parity disk를 하나를 둔다. ---⇒
- mirroring할 때 2배의 디스크를 사용해야 하지만 parity disk 하나에 저장해 중복도를 줄인다.
- parity disk가 타격을 입으면 파일 복구가 불가능하다.
- RAID 5 → parity를 분산시켜 놓는다.
- redundancy를 더 적게 사용한다.
참 : https://www.prepressure.com/library/technology/raid
- Parity disk를 하나를 둔다. ---⇒
-