0. ํ์ต์๋
HDD์ SSD์ ์์ฐจ I/O ์๊ฐ์ ๊ฑฐ์ ๋น์ทํ๋ค๋ ๋ง ์์ฒด๊ฐ ์ดํด๊ฐ ๋์ง ์์๋ค. ์ ๊ธฐ์ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง๋ SSD๊ฐ HDD๋ณด๋ค ๋น์ฐํ ๋ชจ๋ ๋ฉด์์ ์๋ฑํด์ผ ํ๋ ๊ฒ ์๋๊ฐ?? ํด๋น ๋ฌผ์์ ๋ตํ๊ธฐ ์ํด ๋จผ์ HDD์ SSD์ ์๋์๋ฆฌ์ ๋ํ์ฌ ์ดํด๋ณด์๋ค.
1. HDD์ ๋ํ์ฌ
(1) ๊ตฌ์ฑ์์
Platter(ํ๋ ํฐ)
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ํ ์๊ธฐ(magnetic) ๋์คํฌ
์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ปํ๋ ์์ฑ๋ฌผ์ง๋ค๋ก ์ธ๋ถ๊ฐ ์ฝํ ๋์ด ์์.
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ํ ์๊ธฐ(magnetic) ๋์คํฌ
Spindle(์คํ๋ค)
- ๋ชจ๋ ํ๋ ํฐ๋ฅผ ๊ดํต ๋ฐ ๊ณ ์ ํ๊ณ ํ์ ์ํค๋ ์ถ
- ํ๋ ํฐ๋ฅผ ํ์ ์์ผ์ arm์ด ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์นํฐ๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ์ญํ
Track(ํธ๋)
- ํ๋ํฐ ์์ ๋์ฌ์ ๋ชจ์์ผ๋ก ๋ฐฐ์ด๋ ๋ฐ์ดํฐ์ ์ ์ฅ ๋จ์
- ํ๋์ ํ๋ํฐ์ ์์ฒ ~ ์๋ง ๊ฐ์ ํธ๋์ด ์กด์ฌ
Sector
- ํธ๋์ ์ฌ๋ฌ๊ฐ์ ๋ถ์ฑ๊ผด๋ก ๋๋ ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ ์ ์ฅ ๋จ์
- ๋ณดํต 1์นํฐ = 512 byte ~ 4096 byte ์ ์ฅ
- ์ค์ ์ฝ๊ธฐ์ ์ฐ๊ธฐ ์์ ์ ์ด ์นํฐ ๋จ์๋ก ์ด๋ฃจ์ด์ง๋ค.
- ๋ฐ๊นฅ ๋์ฌ์์ ํธ๋์ด ์นํฐ๊ฐ ์๋์ ์ผ๋ก ๋ ๋ง๊ณ , ์์ชฝ ๋์ฌ์์ ํธ๋์ด ์นํฐ๊ฐ ์๋์ ์ผ๋ก ์ ๋ค.
Read-Write Head
- ํ๋ ํฐ ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ์๊ธฐ ์ผ์
- Read ์: ์๊ธฐ์ฅ์ผ๋ก, ์นํฐ๋ด์ ์์ฑ๋ฌผ์ง๋ค์ ๊ฐ์ง
- write ์: ์๊ธฐ์ฅ์ผ๋ก ์์ฑ๋ฌผ์ง๋ค์ ๋ณํ์์ผ์ ๊ธฐ๋ก
- ํ๋ํฐ์ ์ง์ ์ ์ดํ์ง ์๊ณ ๊ณต๊ธฐ์์ผ๋ก ๋ฌ ์ฑ๋ก ์์ฑ๋ง์ผ๋ก read or write
(2) ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ณผ์ (๊ณตํต)
์์ฐจ I/O, ๋๋ค I/O ์๊ด์์ด ๊ณตํต์ ์ผ๋ก ๊ฑฐ์น๋ ๊ณผ์ ์ ์ด์ ์ ๋ง์ถ์ด ์ค๋ช
I/O ์์ฒญ ๋์ฐฉ
- OS ๋๋ DBMS๊ฐ ํ์ผ ํน์ ๋ธ๋ก์ ์ฝ๊ธฐ ์ํด ๋์คํฌ์ read system call ํธ์ถ
- ๋์คํฌ ์ค์ผ์ค๋ฌ(I/O ํ)์ ์์ฒญ ๋ฑ๋ก
LBA โ ๋ฌผ๋ฆฌ์ฃผ์ ๋ณํ
- LBA(Logical Block Adress)๋ฅผ ํ๋ํฐ ๋ฒํธ, ํธ๋ ๋ฒํธ, ์นํฐ ๋ฒํธ๋ก ๋งคํ
- ๋์คํฌ์ ํ์จ์ด ํน์ ์ปจํธ๋กค๋ฌ๊ฐ ์ด ๋งคํ ๊ณผ์ ์ ์ํํ๋ค.
ํค๋ ์ด๋
- read/write header๋ฅผ ์ํ๋ ํธ๋ ์์น๋ก ์ฎ๊ธด๋ค.
- ์ด๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ Seek Time ์ด๋ผ๊ณ ํ๋ค.
(๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๊น์ด ํธ๋์ด๋ฉด ms์ ์๊ฐ, ๋ฉ ๊ฒฝ์ฐ ์ด๋จ์๋ก ๊ฑธ๋ฆด ์ ์์ /๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆผ)
ํ๋ํฐ ํ์
- ๋์คํฌ๊ฐ ํ์ ํ๋ฉด์, ์ํ๋ ์นํฐ๊ฐ ํค๋ ์๋ ์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
- ์ด๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ Rotational Latency ํ์ ์๊ฐ์ด๋ผ๊ณ ํจ.
(ํ์ ์๋๊ฐ 7200RPM์ด๋ฉด 8.3ms, ํ๊ท ์ ์ผ๋ก 4.15ms)
๋ฐ์ดํฐ ์ฝ๊ธฐ
- Read-Write Header๊ฐ ์นํฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ํน์ ๋ฐ์ดํฐ ์กฐ์ ๊ณผ์ ์ ์๋ฃํ๊ณ , ๋ฐํํด์ผํ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์บ์์ ์ ์ฅํ๋ค.
- ์ด๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ Transfer Time์ด๋ผ๊ณ ํ๋ค.
๋ฐ์ดํฐ ์ ์ก
- ๋์คํฌ ์บ์์์ SATA ํน์ SAS ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ก
OS/ ์์ฉ ๊ณ์ธต์ ์ ๋ฌ
- ์ปค๋์ ํ์ด์ง ์บ์ ๋ฑ์ ๊ฑฐ์ณ, ์ฌ์ฉ์ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋จ.
(3) ์๊ฒฐ
ํ๊ท ns ๋ ๋ฒจ์ ์๋๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฉ์ธ๋ณด๋์ ์ฐ์ฐ ์์ฉ ๋ฐ ๋ฉ๋ชจ๋ฆฌ read/write์ ๋ฌ๋ฆฌ ๊ธฐ๊ณ์ ๋์คํฌ์ธ HDD๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ฌผ๋ฆฌ์ ์ธ ์์ง์์ ๋ฐ๋ผ์ ms ~ s ๋จ์์ ์๊ฐ์ด ๋ ๋ค. ๋ฐ๋ผ์ ๋์คํฌ I/O ์์ฒด๊ฐ ๋ณ๋ชฉ์ด ๋๋ค.
2. SSD์ ๋ํ์ฌ
(1) ๋์จ ์ด์
A. HDD์ ์ต๋ ๋ณ๋ชฉ์ ๋ฌผ๋ฆฌ์ ์ธ ์ง์ฐ์ด๋ผ ๊ทน๋ณต ๋ถ๊ฐ
- HDD์ ์ต๋ ๋ณ๋ชฉ์ธ SEEK TIME (ํค๋ ์ด๋ ์๊ฐ), Rotational Latency(ํ์ ์ง์ฐ)์ผ๋ก ์ธํด ๋ฐ์ดํฐ ํ๋ ์ฝ๋๋ฐ ํ๊ท 10ms ~15ms๊ฐ ๊ฑธ๋ฆฐ๋ค.
- ๋ฐ์ดํฐ ํ๋ ์ฝ๊ธฐ๊ฐ ์ด ์ ๋์ธ๋ฐ, ์๋ง ๊ฑด์ ๋๋ค read๊ฐ ๋ฐ์ํ๋ DB๋ OS, ์น์๋ฒ์์๋ ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๊ฐ ์ ๊ณต๋๊ธฐ ๊น์ง ์์ด๊ฐ ๊ฑธ๋ฆด ์๋ ์๋ค.
- ํด๋น ์๊ฐ ์ง์ฐ์ ๋์คํฌ๊ฐ ์ด๋ ํธ๋, ์ด๋ ์นํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๊ฐ์ ๋ฐ๋ผ ์๊ธฐ๋ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒ์ด๋ผ ๊ทน๋ณต ๋ถ๊ฐ!
B. ๋ณ๋ ฌ์ฑ์ ๋ํ ์์ ์ฆ๊ฐ
- ์ํํธ์จ์ด ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ฝ์ด์ค๋ ๋ณ๋ ฌ ์ ๊ทผ์ ๋ํ ์์๊ฐ ์ปค์ง
(2) ๊ตฌ์ฑ ์์
NAND Flash Memory
- ๋นํ๋ฐ์ฑ ์ ์ฅ์ (์ ์ ๊บผ์ ธ๋ ๋ฐ์ดํฐ ์ ์ง)
- ํ๋์จ์ด์ ๊ตฌ์ฑ์์ = ์ : ์ ์๋ฅผ ์ ์ฅํ๋ ํธ๋์ง์คํฐ ๊ตฌ์กฐ
- ๋
ผ๋ฆฌ์ ๊ตฌ์ฑ์์
- Channel: ์ปจํธ๋กค๋ฌ์ Package ์ฌ์ด๋ฅผ ์๋ ํต์ ์
- Package: ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๊ฐ์ฅ ํฐ ๋จ์
- Die: ํจํค์ง ๋ด์ ๋ฐ์ดํฐ ์์ญ์ ๋๋๋ ๋จ์
- Plaine: Die ๋ด๋ถ๋ฅผ ๋๋๋ ๋จ์
- Block: ์ฌ๋ฌ ํ์ด์ง๋ค์ ์งํฉ (๋ณดํต 128 ~ 512 Page๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. HDD์ Track์ ํด๋น)
- Page: ๊ฐ์ฅ ์์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๋จ์ (๋ณดํต 4KB, HDD์ ์นํฐ์ ํด๋น)
โโโ Channel (์ฑ๋) ← ๋ณ๋ ฌ ๋ฐ์ดํฐ ํต์ ๋ผ์ธ โ โโโ Package (NAND ํจํค์ง) โ โ โโโ Die (๋ค์ด) ← ์ค์ ์ค๋ฆฌ์ฝ ์นฉ. ๋ ๋ฆฝ ๋์ ๊ฐ๋ฅ โ โ โ โโโ Plane (ํ๋ฉด) ← ๋ณ๋ ฌ ์ก์ธ์ค ๊ฐ๋ฅํ ํ์ ๋จ์ โ โ โ โ โโโ Block ← ์ง์ฐ๊ธฐ ๋จ์ (128~512 Page) โ โ โ โ โ โโโ Page ← ์ฝ๊ธฐ/์ฐ๊ธฐ ๋จ์ (๋ณดํต 4KB)
Controller
- SSD์ ๋๋, ๋ชจ๋ ๋์์ ์งํ
- ์ญํ :
- ๋ ผ๋ฆฌ ์ฃผ์(LBA) โ ๋ฌผ๋ฆฌ ์ฃผ์ ๋งคํ(FTL ์ฒ๋ฆฌ)
- ์ฐ๊ธฐ ๊ท ํํ (Wear Leveling)
- ๊ฐ๋น์ง ์ปฌ๋ ์ (GC)
- ECC (์ค๋ฅ ์ ์ )
- ์บ์ ๊ด๋ฆฌ
- ์ธํฐํ์ด์ค (SATA ๋ฑ)์ ์ ํธ ์ฒ๋ฆฌ
FTL (Flash Translation Layer)
- ๋
ผ๋ฆฌ์ฃผ์์ ๋ฌผ๋ฆฌ์ ์ธ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ์ถ์๊ณ์ธต
(ํจ์์ <๋ ผ๋ฆฌ์ฃผ์, ๋ฌผ๋ฆฌ์ฃผ์>๊ฐ ์ฐ๊ฒฐ๋ MAP์ผ๋ก ์ธ๋ถ ๊ตฌ์ฑ๋จ) - ์์น: ๋ณดํต ์ปจํธ๋กค๋ฌ ๋ด๋ถ์ ํฌํจ๋๋ฉฐ DRAM์ ์์ ์ ํ ์ด๋ธ์ ์ ์งํ๊ณ ์๋ค.
- ์ญํ
- OS๊ฐ ๋๊ฒจ์ค LBA ์ฃผ์๋ฅผ NAND์ Page/Block ์ฃผ์๋ก ๋ณํ
- ํ์ด์ง ๋งคํ, ๋ธ๋ก ๋งคํ, ํ์ด๋ธ๋ฆฌ๋ ๋งคํ ๋ฑ ์๊ณ ๋ฆฌ์ฆ์ด ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ ์ด๊ฒ์ ์ด์ฉ
- ๋
ผ๋ฆฌ์ฃผ์์ ๋ฌผ๋ฆฌ์ ์ธ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ์ถ์๊ณ์ธต
(3) ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ณผ์
I/O ์์ฒญ์ด ๋์ฐฉ
- OS ๋๋ DBMS์์ read System call์ ๋ฐ์์์ผ์ SSD ๋๋ผ์ด๋ฒ๋ก ์ ๋ฌ
- SATA ๋ฑ์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ปจํธ๋กค๋ฌ์ ์์ฒญ
๋ ผ๋ฆฌ ์ฃผ์ โ ๋ฌผ๋ฆฌ ์ฃผ์ ๋ณํ (FTL ๋งคํ)
- ์์ฒญํ LBA ์ฃผ์๋ฅผ ์ค์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ์ ํ์ด์ง ์์น๋ก ๋ณํ
- ์ด ๋งคํ ์์
์ SSD ๋ด๋ถ์ FTL(Flash Translation Layer)๊ฐ ์ฒ๋ฆฌ ํ๋ค.
- ํ์ด์ง ๋งคํ, ๋ธ๋ก๋งคํ, ํ์ด๋ธ๋ฆฌ๋ ๋งคํ ์ค ํ๋์ ๋ฐฉ๋ฒ ์ฑํ
- ๋งคํ ํ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ DRAM ์บ์์ FTL ํ ์ด๋ธ์ ์ ์ฅ
NAND ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
- ๋งคํ๋ Page ๋จ์ ์์น๋ก ์ ๊ทผ
- ์ ๊ธฐ์ ์ ๊ทผ์์ผ๋ก ๋ณ๋ ฌ ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํด์ง (HDD๋ ๋ฌผ๋ฆฌ์ ์ธ ์ ๊ทผ์ด๋ผ ํ ๋ฒ์ ํ๋์ ๋ฐ์ดํฐ๋ง ๊ฐ๋ฅํจ)
๋ฐ์ดํฐ ์ฝ๊ธฐ
- ํ ํ์ด์ง(๋ณดํต 4KB ~ 16KB)๋ฅผ ์ฝ์ด์ SSD DRAM ์บ์ ๋๋ ๋ฒํผ์ ์ ์ฌ
๋ฐ์ดํฐ ์ ์ก
- SSD ์บ์์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ฅผ ์์ฒญํ๋ ๋ฉ์ธ๋ณด๋(ํน์ ์๋ฒ)์ OS ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ์ดํฐ ์ ์ก
OS/ ์์ฉ ๊ณ์ธต์ ์ ๋ฌ
- ๋ฉ์ธ๋ณด๋ ํน์ ์๋ฒ์ OS๊ฐ ์ปค๋ ๋ ๋ฒจ์ ์ ์ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ ๋ฌ
๋ชจ๋ฅด๋ ๋จ์ด ์ ๋ฆฌ
SATA
,SAS
: ์ ์ฅ์ฅ์น์ ๋ฉ์ธ๋ณด๋(์ปดํจํฐ ํน์ ์๋ฒ)๊ฐ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ง์ ๋ํ ์ ์ก ๊ท๊ฒฉ
SATA๋ ์ผ๋ฐ ์๋น์์ฉ, SAS๋ ๋ฐ์ดํฐ ์ผํฐ, ๊ณ ์ฑ๋ฅ ์๋ฒ ๋ฑ ๊ธฐ์ ์ฉDAS
,SAN
: ๋ ๋ค ์ ์ฅ์(Storage)์ ์ํคํ ์ฒ์- DAS: ์ ์ฅ ์ฅ์น๊ฐ ์ง์ ์๋ฒ๋ ์ปดํจํฐ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ์ ์ฅ์ ์ํคํ ์ฒ
- SAN: ์ ์ฉ ์คํ ๋ฆฌ์ง ๋คํธ์ํฌ๋ฅผ ํตํด ์ฌ๋ฌ ์๋ฒ๊ฐ ๊ณต์ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ ์ํคํ ์ฒ