Chapter#19 I/O : HDD and RAID
- Hard Distk Drives
- Disk Scheduling
- RAID
시스템 프로그래밍 수업 내용이랑 겹치는 부분
Hard Disk Drivers (HDDs)
Disk Geometry
각 Platter : 2 surface
각 Surface : Ring 형태의 tracks
각 track : gaps로 나눠진 sectors
Disk Operation
disk surface : fixed rotation rate로 회전
read/write head : arm 끝에 달려서 disk surface를 얇은 air cushion을 두고 읽음. arm에 의해 track이동
Disk Access
surface는 CCW로 돎
헤더가 위에 있을 때 해당 sector의 read/write작업 수행
Disk Access Time Components
Average Time to access some target sector : Taccess = Tavg seek + Tavg rotation + Tavg transfer
Seek Time(Tavg seek) :
- target sector에 해당하는 track 찾는데 걸리는 시간
- 3-9 ms
Rotational Latency(Tavg rotation) :
- target sector 위치로 헤드를 옮기는데 걸리는 시간
- 1/2 x 1/RPMs x 60sec/min
- 7200RPMs
Transfer Time(Tavg transfer) :
- target sector 읽는데 걸리는 시간
- 1/RPMs x 1/(avg # sectors/track) x 60sec/min
seek time과 rotational latency가 dominant함
sector의 첫 bit가 가장 expensive하다
SRAM access time은 4ns/doubleword, DRAM access time은 60ns, Disk는 SRAM보다 40,000배 느림
Logical Disk Blocks
Disk를 복잡하게 생각하지 않고 b-sized logical blocks로 이뤄져있다고 abstraction을 둠
Mapping between logical blocks and actual sectors
- disk controller라는 hardware/firmware device에 의해 유지됨
- logical block에 대한 request를 (surface, track, sector) triple로 변환
- 연속적인 logical block은 연속적인 sector에 map
- bad sector에 대한 logical block은 healthy sector로 remap
Disk Scheduling
Seek time과 Rotational latency를 줄이자!
I/O request에 들어오는 정보
- I/O mode (read or write)
- Memory address
- Disk address(offset)
- Number of sectors to transfer(length)
I/O queueing
- disk drive가 available하면 I/O request 즉시 응답
- 아니면, 새 I/O request가 queue에 들어옴
I/O(or Disk) scheduling
- queue는 pending request를 가짐
- OS는 I/O performance를 최대화 하기 위한 pending request 선택 전략을 짜야함
FCFS (First-Come and First-Served) : 먼저 들어온 순서대로
SSTF (Shortest Seek Time First) : 현재 head 위치에서 가장 가까운 위치로 이동 -> starvation 발생할 수 있음
SCAN(Elevator Algorithm) : 한쪽 끝까지 갔다가 다시 반대쪽 끝까지 가는 것을 반복
-> 헤드가 지나간 자리에 request가 들어오면, 반대끝까지 갔다가 다시 돌아와야됨
C-SCAN : 한쪽 끝까지 갔다가 바로 다시 원래 시작점으로 가서 다시 시작
Selecting Disk-Scheduling Algorithm
- SSTF가 일반적 전략
- SCAN/C-SCAN이 Disk에 heavy load하는 경우 less starvation을 일으켜 더 좋음
RAID ( Redundant Array of Inexpensive Disks )
여러 disk를 묶어서 faster, bigger, more reliable disk system을 만들자!
Performance & Capacity : Using multiple disks in parallel
Reliability : RAID는 loss of disk 허용
RAID Abstraction & Interface
기존과 똑같이 모든 disks를 묶어서 logical blocks를 map
RAID 0
logical block을 각 disk에 번갈아가며 둠
장점 : performance & space efficiency
- High performance : n times
- High space efficiency : 1.0
단점 : high failure rate
- r이 drive failure rate이면 array failure rate은 1-(1-r)^n
- r이 5%라 가정하고 n=2라면 array failure rate은 0.0975(>r)
RAID 1
똑같은 data를 2개 이상 disk에 extra copy함
장점 : log failure rate
- r이 drive failure rate이면 array failure rate은 r^n
- r이 5%라 가정하고 n=2라면 array failure rate은 0.0025
단점 : low performance & space efficiency
- read performance : n times
- write performance : 1
- space efficiency : 1/n
RAID 4
n-1개 disk에는 각 data를 넣음, 마지막 disk에는 각 disk data를 xor시켜둔 parity block을 둠
=> 한 disk가 깨지는 경우 복원 가능
Relatively high performance : n-1 times read/write
Relatively high space efficiency : 1/n
Relatively low failure rate : 1-{(1-r)^n + nr(1-r)^n-1}
- r이 5%라 가정하고 n=4라면 array failure rate은 0.014
RAID 5
RAID 4와 달리 한 disk에 parity block 다 집어넣지 않고, 여러 디스크에 분산시킴
better random performance - parity disk is not a bottleneck
RAID 6
RAID 5에서 parity block을 하나 더 추가
RAID 5에 비해 lower failure rate
RAID 5에 비해 lower performance : write operation에서 parity 연산에 대한 overhead가 커짐
General Solution in enterprise systems
학교 강의를 토대로 개인 공부 목적으로 작성되어 오타가 및 오류가 있을 수 있으며, 문제가 될 시 삭제될 수 있습니다.
'Study > 운영체제' 카테고리의 다른 글
Chapter#21 IO : File and Directory (0) | 2021.12.10 |
---|---|
Chapter#20 Flash-based SSDs (0) | 2021.12.10 |
Chapter#18 I/O Device (0) | 2021.12.10 |
Chapter#17 Swapping (0) | 2021.12.10 |
Chapter#16 Paging Advanced (0) | 2021.12.09 |