13. Mass Storage Management
Dept. of Computer Science
Hanyang University
Physical Disk Structure
๋์คํฌ๋ ์์ ๊ธ์ ํ๋ํฐ(platter)๋ก ๊ตฌ์ฑ๋๋ฉฐ,
๊ทธ ์๋ฅผ ์ฝ๊ธฐ/์ฐ๊ธฐ ํค๋๊ฐ ๋นํํ๋ฉฐ ๋์๋์คํฌ์์ ์ฝ๊ธฐ ์ํด ์ง์ ํด์ผ ํ ์์:
- cylinder #
- surface #
- sector #
- transfer size
- memory address
์ ์ก ์๊ฐ(Transfer time)์ ๋ค์์ ํฌํจ:
- Seek time
- Rotational delay
- Transfer time
Disk Structure
๋์คํฌ ๋๋ผ์ด๋ธ๋ ๋ ผ๋ฆฌ ๋ธ๋ก(logical block)์ 1์ฐจ์ ๋ฐฐ์ด๋ก ์ฃผ์ ์ง์ ๋จ
โ ๋ ผ๋ฆฌ ๋ธ๋ก์ ์ ์ก์ ์ต์ ๋จ์์ด 1์ฐจ์ ๋ฐฐ์ด์ ๋์คํฌ์ ์นํฐ๋ค๋ก ๋งคํ๋จ
- sector 0 = ์ต์ธ๊ณฝ ์ค๋ฆฐ๋์ ์ฒซ ๋ฒ์งธ ํธ๋์ ์ฒซ ๋ฒ์งธ ์นํฐ
- ๋งคํ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ํธ๋์ ์์๋๋ก ์งํ
โ ์ค๋ฆฐ๋ ๋ฐ๊นฅ์ชฝ์์ ์์ชฝ์ผ๋ก ์งํ
(์ค์ ๊ตฌํ์ ์ ํ๋ง๋ค ๋ค๋ฆ)
Disk Scheduling
๋์คํฌ ์ ๊ทผ ์๊ฐ์ ๋ ๊ฐ์ง ์ฃผ์ ์์๋ก ๊ตฌ์ฑ๋จ:
- Seek time: ๋์คํฌ ํค๋๋ฅผ ์ํ๋ ์ค๋ฆฐ๋๋ก ์ด๋ํ๋ ์๊ฐ
- Rotational latency: ์ํ๋ ์นํฐ๊ฐ ํค๋ ์๋๋ก ์ฌ ๋๊น์ง์ ๋๊ธฐ ์๊ฐ
๋ชฉํ: Seek time ์ต์ํ
- Seek time โ Seek distance
๋์คํฌ ๋์ญํญ:
Seek Time Benchmark
์ค๋ฆฐ๋ ์์ ๋ฐ๋ฅธ ํ๊ท seek time์ ๋ณํ ๊ทธ๋ํ
Seek time ๋ชจ๋ธ:
Disk Scheduling (Cont.)
๋์คํฌ I/O ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ํจ
์์ ์์ฒญ ํ (0~199):
98, 183, 37, 122, 14, 124, 65, 67
ํ์ฌ ํค๋ ์์น: 53
FCFS
- First-Come, First-Served ๋์คํฌ ์ค์ผ์ค๋ง ๋ฐฉ์
- ์์ฒญ ์์๋๋ก ์ฒ๋ฆฌํจ
- ๋จ์ํ์ง๋ง, seek ์ด๋์ด ๋นํจ์จ์
- ์์:
queue = 98, 183, 37, 122, 14, 124, 65, 67 head starts at 53
- ์ด ์ด๋ ๊ฑฐ๋ฆฌ: 640 cylinders
SSTF
- Shortest Seek Time First
- ํ์ฌ ํค๋ ์์น์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ฒญ๋ถํฐ ์ฒ๋ฆฌ
- SJF(Shortest Job First)์ ์ผ์ข ์ผ๋ก, ์ผ๋ถ ์์ฒญ์ ๊ธฐ์(starvation) ์ํ ๋ฐ์ ๊ฐ๋ฅ
- ์ฑ๋ฅ์ ์์ธก ๋ถ๊ฐ๋ฅ
- ์์์์์ ์ด ์ด๋ ๊ฑฐ๋ฆฌ: 236 cylinders
SSTF (Cont.)
- ๊ฐ์ queue์ ์์ ์์น์์
SSTF ๋ฐฉ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ฒญ๋ถํฐ ์ฐจ๋ก๋ก ์ ๊ทผ
โ ํจ์จ์ ์ด๋, ํธํฅ๋ ์์ฒญ์ ๋ฌด๊ธฐํ ๋๊ธฐํ ์ ์์
SCAN
๋์คํฌ ์์ด ๋์คํฌ์ ํ์ชฝ ๋์์ ์์ํ์ฌ ๋ฐ๋ํธ ๋์ผ๋ก ์ด๋ํ๋ฉฐ ์์ฒญ ์ฒ๋ฆฌ
๋์ ๋๋ฌํ๋ฉด ๋ฐฉํฅ์ ๋ฐ๊ฟ ๋ค์ ์ด๋ํ๋ฉฐ ์์ฒญ ์ฒ๋ฆฌ
์๋ฆฌ๋ฒ ์ดํฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ:
- ์ฌ๋ผ๊ฐ๋ฉด์ ์์ฒญ ์ฒ๋ฆฌ
- ๋ด๋ ค์ค๋ฉด์๋ ์์ฒญ ์ฒ๋ฆฌ
์ด ์ด๋ ๊ฑฐ๋ฆฌ: 208 cylinders
๋ฌธ์ ์ :
- ์์ชฝ ํธ๋์ ๋ ๋ฒ ์๋น์ค๋จ (ํธ๋๋ง๋ค ์ ๊ทผ)
- ์ธ๊ณฝ ํธ๋์ ๋นํด ๋ถ๊ณต์
C-SCAN
SCAN๋ณด๋ค ๋ ๊ท ๋ฑํ ๋๊ธฐ ์๊ฐ ์ ๊ณต
๋์คํฌ์ ํ์ชฝ ๋์์ ๋ค๋ฅธ ๋๊น์ง ์ด๋ํ๋ฉฐ ์์ฒญ ์ฒ๋ฆฌ
โ ๋์ ๋๋ฌํ๋ฉด ๋๋์์ค๋ ๊ฒฝ๋ก์์๋ ์์ฒญ ์ฒ๋ฆฌํ์ง ์์์ํ ๋์คํฌ ๋ฆฌ์คํธ(circular list)์ฒ๋ผ ์๋
โ ๋ง์ง๋ง ์ค๋ฆฐ๋์์ ์ฒซ ๋ฒ์งธ ์ค๋ฆฐ๋๋ก ์ ํ๋ฌธ์ ์ :
- ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ ์ค์๋ ์์ฒญ์ด ์๋๋ผ๋ ๊ณ์ ์งํ
C-SCAN
์๊ณ ๋ฆฌ์ฆ์ ๋์คํฌ ํค๋ ์ด๋ ๊ฒฝ๋ก ์๊ฐํํ ๋ฐฉํฅ์ผ๋ก ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ํ,
๋๋์๊ฐ๋ ๊ฒฝ๋ก์์๋ ์์ฒญ์ ๋ฌด์ํ๊ณ ์ฒ์ ์์น๋ก ์ด๋
C-LOOK
C-SCAN
์ ๋ณํ ๋ฒ์ - ๋์คํฌ ๋๊น์ง ์ด๋ํ์ง ์๊ณ , ์์ฒญ์ด ์๋ ๋ง์ง๋ง ์์น๊น์ง๋ง ์ด๋
- ๊ทธ ํ ์ฆ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ ํ
- ๋์คํฌ ๋๊น์ง ๊ฐ๋ ๋ถํ์ํ ์ด๋ ์ ๊ฑฐ
C-LOOK (Cont.)
- ์์ queue:
queue = 98, 183, 37, 122, 14, 124, 65, 67 head starts at 53
- ์์ฒญ์ด ์๋ ๋ง์ง๋ง ์ง์ ๊น์ง๋ง ์ด๋ํ๊ณ ๋๋์์ด
โ ๋ณด๋ค ํจ์จ์ ์ธ ์ด๋ ๊ฑฐ๋ฆฌ ํ๋ณด
Arm Stickiness Problem
SCAN
,C-SCAN
,SSTF
๋ Arm Stickiness ๋ฌธ์ ๋ฅผ ๊ฐ์ง ์ ์์์ค๋ช :
- ํน์ ํธ๋์ ์ ๊ทผ ๋น๋๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ์์ ๊ฒฝ์ฐ
- ํด๋น ํธ๋์๋ง ๋ฐ๋ณต์ ์ผ๋ก ์ ๊ทผ ์์ฒญ์ ๋ณด๋ด๋ฉด์ ๋์คํฌ ์์ ๊ทธ ์์น์ ๊ณ ์ ์ํด
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์คํฌ ์ ์ฒด ์ฌ์ฉ์ด ๋นํจ์จํด์ง
Disk Management
๋ฌผ๋ฆฌ์ ํฌ๋งท(Physical formatting) ๋๋ ์ ์์ค ํฌ๋งท
- ๋์คํฌ๋ฅผ ์นํฐ ๋จ์๋ก ๋๋์ด ์ปจํธ๋กค๋ฌ๊ฐ ์ฝ๊ณ ์ธ ์ ์๋๋ก ํจ
- ์นํฐ = ํค๋ + ๋ฐ์ดํฐ(๋ณดํต 512B) + ํธ๋ ์ผ๋ฌ
- ์ฌ๋ถ ์นํฐ ๋๋ ์ค๋ฆฐ๋๋ bad block ๋๋น์ฉ
ํ์ผ ์์คํ ์ฌ์ฉ์ ์ํ ๋ ผ๋ฆฌ ํฌ๋งท(Logical formatting) ํ์
- OS๊ฐ ํํฐ์ ์ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๊ตฌ๋ถ
- ํํฐ์ ๋ง๋ค ํ์ผ ์์คํ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํ
๋ถํ ๊ณผ์ (Power-up)
- ์์ bootstrap loader๋ ROM์์ ์คํ๋จ
- ๋์คํฌ์ ๋ถํธ ๋ธ๋ก์ ๋ก๋ฉํ์ฌ OS๋ฅผ ์คํ
RAID
RAID (Redundant Array of Inexpensive Disks)
- ๋ค์์ ๋์คํฌ๋ฅผ ๋ณ๋ ฌ๋ก ๊ตฌ์ฑํ์ฌ ๊ณ ์ฉ๋ ๋ฐ ๊ณ ์ ์ ๊ณต
- ์ ๋ขฐ์ฑ ํฅ์: ๋ฐ์ดํฐ ์ค๋ณต ์ ์ฅ โ ์ผ๋ถ ๋์คํฌ ์คํจ ์์๋ ๋ณต๊ตฌ ๊ฐ๋ฅ
์ด์ :
- ํ๋์ ๋์คํฌ๊ฐ ๊ณ ์ฅ๋ ํ๋ฅ < ์ฌ๋ฌ ๋์คํฌ ์ค ์ผ๋ถ๊ฐ ๊ณ ์ฅ๋ ํ๋ฅ
- ํ์ง๋ง RAID๋ ๋ณต๊ตฌ ๊ฐ๋ฅ์ฑ์ ๋์ฌ ์ ์ฒด ์์คํ ์ ๋ขฐ์ฑ์ ํฅ์์ํด
์์:
- 100๊ฐ์ ๋์คํฌ๋ฅผ ๊ฐ์ง ์์คํ
- ๊ฐ ๋์คํฌ MTTF: 100,000์๊ฐ
- ์์คํ ์ ์ฒด MTTF๋ ์ฝ 1000์๊ฐ (41์ผ)
- 100๊ฐ์ ๋์คํฌ๋ฅผ ๊ฐ์ง ์์คํ
๋๊ท๋ชจ ๋์คํฌ ์์คํ ์์๋ ๋ฐ์ดํฐ ์์ค ๋ฐฉ์ง ๊ธฐ์ ์ด ํ์
Improvement of Reliability via Redundancy
- Redundancy: ๋์คํฌ ๊ณ ์ฅ ์ ์์ค๋ ์ ๋ณด๋ฅผ ๋ณต๊ตฌํ ์ ์๋ ์ถ๊ฐ ์ ๋ณด ์ ์ฅ
- ์์: Mirroring (shadowing)
- ๋ ๊ฐ์ ๋ฌผ๋ฆฌ ๋์คํฌ์ ๋์ผํ ๋ ผ๋ฆฌ ๋์คํฌ ๋ด์ฉ์ ์ ์ฅ
- ๊ฐ ์ฐ๊ธฐ ์์ ์ ๋ ๋์คํฌ ๋ชจ๋์ ์ํ๋จ
- ์ฝ๊ธฐ ์์ฒญ์ ์ด๋ ๋์คํฌ์์๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ฅ์ :
- ํ ๋์คํฌ๊ฐ ๊ณ ์ฅ ๋๋๋ผ๋ ๋ค๋ฅธ ๋์คํฌ์์ ์ ๋ณด ๋ณต๊ตฌ ๊ฐ๋ฅ
- ๋์ ๊ณ ์ฅ ํ๋ฅ ์ด ๋งค์ฐ ๋ฎ์
- ๋จ์ :
- ๋์คํฌ ์ ์ฆ๊ฐ
- ํ๊ท ๋ฐ์ดํฐ ์์ค ์๊ฐ = ๊ณ ์ฅ๊น์ง์ ํ๊ท ์๊ฐ + ๋ณต๊ตฌ ์๊ฐ
- MTTF = 100,000์๊ฐ, ๋ณต๊ตฌ = 10์๊ฐ โ RAID 1 ๊ตฌ์ฑ ์ ์ฝ 5์ฒ๋ง ์๊ฐ
Improvement in Performance via Parallelism
- ๋์คํฌ ๋ณ๋ ฌ์ฑ์ ๋ชฉํ:
- ๋ถํ ๋ถ์ฐ โ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ
- ๋ณ๋ ฌ ์ ๊ทผ โ ์๋ต ์๊ฐ ๋จ์ถ
- Bit-level striping
- ๊ฐ ๋ฐ์ดํธ์ ๋นํธ๋ฅผ ์ฌ๋ฌ ๋์คํฌ์ ๋๋ ์ ์ฅ
- ์ฝ๊ธฐ ์๋๋ ๋น ๋ฅด์ง๋ง, seek/latency๋ ๋จ์ผ ๋์คํฌ๋ณด๋ค ๋์ ์ ์์
- Block-level striping
- ๋ธ๋ก ๋จ์๋ก ๋์คํฌ์ ๋ถ์ฐ ์ ์ฅ:
- ์: ๋์คํฌ ์ ์ ์ฅ โ
- ์ฐ์๋ ๋ธ๋ก ์์ฒญ ์ ์ฌ๋ฌ ๋์คํฌ์์ ๋์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๋ธ๋ก ๋จ์๋ก ๋์คํฌ์ ๋ถ์ฐ ์ ์ฅ:
RAID Levels
- RAID๋ ๋์คํฌ ์คํธ๋ผ์ดํ + ํจ๋ฆฌํฐ๋ฅผ ํตํด ์ ๋น์ฉ์ผ๋ก ์ค๋ณต์ฑ ์ ๊ณต
- ๋ค์ํ RAID ๋ ๋ฒจ์ ๋น์ฉ, ์ฑ๋ฅ, ์ ๋ขฐ์ฑ ์ธก๋ฉด์์ ์ฐจ์ด๋ฅผ ๋ณด์
- RAID 0: ๋ธ๋ก ์คํธ๋ผ์ดํ, ์ค๋ณต ์์
- ๋ฐ์ดํฐ ์์ค ํ์ฉ ๋ถ๊ฐ๋ฅํ ํ๊ฒฝ์๋ ์ ํฉํ์ง ์์
- RAID 1: ๋ฏธ๋ฌ๋ง (๋ณต์ ๋์คํฌ)
- ๋ฐ์ด๋ ์ฐ๊ธฐ ์ฑ๋ฅ ์ ๊ณต
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๋ฑ์ ์ ํฉ
- RAID 2: Bit-level striping + ECC ๋์คํฌ
- ๊ฐ ๋นํธ ๋จ์๋ก ๋์คํฌ ๋ถ์ฐ, ECC๋ก ์๋ฌ ๋ณต๊ตฌ ๊ฐ๋ฅ
- RAID 3: Byte-level striping + ํจ๋ฆฌํฐ ์ ์ฉ ๋์คํฌ
- ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ๋๋ ์ฌ๋ฌ ๋์คํฌ์ ์ ์ฅ
- ํจ๋ฆฌํฐ๋ ๋ณ๋์ ๋์คํฌ์ ์ ์ฅ๋จ
- RAID 4: Block-interleaved parity, block-level striping
- ๋ชจ๋ ๋์คํฌ์์์ ํด๋น ๋ธ๋ก๋ค๊ณผ XORํ์ฌ ํจ๋ฆฌํฐ ๋์คํฌ์ ์ ์ฅ
- ํจ๋ฆฌํฐ ๋ธ๋ก์ ๋ณ๋ ฌ ์ฐ๊ธฐ ๋ณ๋ชฉ ํ์์ ์์ธ์ด ๋ ์ ์์
- RAID 5: Block-interleaved distributed parity, block-level striping
- ๋ฐ์ดํฐ์ ํจ๋ฆฌํฐ๋ฅผ ๋ชจ๋ ๋์คํฌ์ ๋ถ์ฐ ์ ์ฅ
- ์: ๋์คํฌ๊ฐ 5๊ฐ์ผ ๋,
- ๋ฒ์งธ ๋ธ๋ก์ ํจ๋ฆฌํฐ๋ ๋ฒ์งธ ๋์คํฌ์ ์ ์ฅ
- ๋๋จธ์ง 4๊ฐ ๋์คํฌ์๋ ๋ฐ์ดํฐ ๋ธ๋ก ์ ์ฅ
- ๋ถ์ฐ ํจ๋ฆฌํฐ โ ๋ณ๋ชฉ ํ์ ์ค์
Choice of RAID Level
RAID ๋ ๋ฒจ ์ ํ ์ ๊ณ ๋ ค ์์:
- ๋น์ฉ (Monetary cost)
- ์ฑ๋ฅ: ์ด๋น I/O ์ฐ์ฐ ์, ์ ์ ์๋ ์ค ๋์ญํญ
- ์ฅ์ ๋ฐ์ ์ ์ฑ๋ฅ
- ๋์คํฌ ๋ณต๊ตฌ ์ ์ฑ๋ฅ
RAID 0: ๋ฐ์ดํฐ ์์ ์ด ์ค์ํ์ง ์์ ๋๋ง ์ฌ์ฉ
- ๋ค๋ฅธ ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ
RAID 2, 3: ํ์ฌ๋ ์ฌ์ฉ๋์ง ์์
- ๋นํธ/๋ฐ์ดํธ ๋จ์ striping์ ๋ชจ๋ ๋์คํฌ ์ ๊ทผ์ ๊ฐ์
- ๋์คํฌ ์ ์ด๋ ๋ญ๋น โ ๋ธ๋ก ๋จ์ striping์ด ์ด๋ฅผ ํผํจ (RAID 4, 5)
RAID 4: RAID 5์ ํก์๋์ด ์ฌ์ฉ๋์ง ์์
โ ์ค์ง์ ์ ํ์ง๋ RAID 1 vs RAID 5
RAID 1: RAID 5๋ณด๋ค ํจ์ฌ ๋์ ์ฐ๊ธฐ ์ฑ๋ฅ
- RAID 5๋ ๋ธ๋ก 1๊ฐ ์ฐ๊ธฐ์๋ ์ต์ 2๊ฐ์ ์ฝ๊ธฐ + 2๊ฐ์ ์ฐ๊ธฐ ํ์
- RAID 1์ ๋ธ๋ก 2๊ฐ ์ฐ๊ธฐ๋ง ํ์
- ๋ก๊ทธ ๋์คํฌ ๋ฑ ์ ๋ฐ์ดํธ ๋น๋ ๋์ ํ๊ฒฝ์ ์ ํฉ
RAID 1์ ๋จ์ : ์ ์ฅ ๊ณต๊ฐ ์๊ตฌ๋์ด RAID 5๋ณด๋ค ํผ
- ํ์ง๋ง ๋์คํฌ ์ฉ๋์ ๋น ๋ฅด๊ฒ ์ฆ๊ฐ (์ฐ๊ฐ 50%)
- ๋์คํฌ ์ ๊ทผ ์๊ฐ์ ์ฒ์ฒํ ๊ฐ์ (10๋ ๊ฐ 3๋ฐฐ ์์ค)
- ์น ์๋ฒ ๋ฑ์์ I/O ์๊ตฌ๋์ด ๋งค์ฐ ํผ
- ์ถฉ๋ถํ ๋์คํฌ๋ฅผ ํ๋ณดํด๋์๋ค๋ฉด ์ฌ์ ์ฉ๋์ด ๋จ๋ ๊ฒฝ์ฐ๋ ๋ง์
โ ์ด ๊ฒฝ์ฐ RAID 1๋ ์ถ๊ฐ ๋น์ฉ ์์ด ๊ตฌ์ฑ ๊ฐ๋ฅ
RAID 5: ์ ๋ฐ์ดํธ๊ฐ ์ ๊ณ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ํ๊ฒฝ์ ์ ํฉ
RAID 1: ๊ทธ ์ธ ๋ชจ๋ ์ํฉ์ ๊ถ์ฅ๋จ