์ฝ XNUMX๋
๊ฐ์ ๊ฐ๋ฐ ๋์
Linux์ ZFS์ ์ผ๋ถ๋ก ํ์ผ ์์คํ ์๋ ๋ฐ ๋ณผ๋ฅจ ๊ด๋ฆฌ์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ZFS ๊ตฌ์ฑ ์์์ ๊ตฌํ์ด ์ค๋น๋์์ต๋๋ค. ํนํ SPA(Storage Pool Allocator), DMU(Data Management Unit), ZVOL(ZFS Emulated Volume) ๋ฐ ZPL(ZFS POSIX Layer) ๊ตฌ์ฑ ์์๊ฐ ๊ตฌํ๋ฉ๋๋ค. ๋ํ ์ด ํ๋ก์ ํธ๋ ZFS๋ฅผ Lustre ํด๋ฌ์คํฐ ํ์ผ ์์คํ ์ ๋ฐฑ์๋๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ํ๋ก์ ํธ์ ์์ ์ OpenSolaris ํ๋ก์ ํธ์์ ๊ฐ์ ธ์จ ์๋ณธ ZFS ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ Illumos ์ปค๋ฎค๋ํฐ์ ๊ฐ์ ๋ฐ ์์ ์ผ๋ก ๊ฐํ๋์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋ฏธ๊ตญ ์๋์ง๋ถ์์ ๊ณ์ฝ์ ๋ฐ๋ผ ๋ฆฌ๋ฒ๋ชจ์ด ๊ตญ๋ฆฝ ์ฐ๊ตฌ์ ์ง์๋ค์ ์ฐธ์ฌ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค.
์ด ์ฝ๋๋ GPLv2์ ํธํ๋์ง ์๋ ๋ฌด๋ฃ CDDL ๋ผ์ด์ผ์ค๋ก ๋ฐฐํฌ๋ฉ๋๋ค. GPLv2์ CDDL ๋ผ์ด์ผ์ค๋ก ์ฝ๋๋ฅผ ํผํฉํ๋ ๊ฒ์ ํ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ Linux์ ZFS๊ฐ Linux ์ปค๋์ ์ฃผ์ ๋ถ๊ธฐ์ ํตํฉ๋๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ด ๋ผ์ด์ ์ค ๋นํธํ์ฑ์ ํผํ๊ธฐ ์ํด ์ ์ฒด ์ ํ์ CDDL ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ์ฝ์ด์ ๋ณ๋๋ก ์ ๊ณต๋๋ ๋ณ๋๋ก ๋ก๋ ๊ฐ๋ฅํ ๋ชจ๋๋ก ๋ฐฐํฌํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. Linux ์ฝ๋๋ฒ ์ด์ค์์ ZFS์ ์์ ์ฑ์ ๋ค๋ฅธ Linux์ฉ ํ์ผ ์์คํ ๊ณผ ๋น์ทํ ๊ฒ์ผ๋ก ํ๊ฐ๋ฉ๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ํ์ผ ์์คํ ๋ฐ ํํฐ์ ์์ค์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ํธํ์ ๋ํ ๋ด์ฅ ์ง์์ ์ถ๊ฐํ์ต๋๋ค. ๊ธฐ๋ณธ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ aes-256-ccm์ ๋๋ค. ์ํธํ ํค๋ฅผ ๋ก๋ํ๊ธฐ ์ํด "zfs load-key" ๋ช ๋ น์ด ์ ์๋์์ต๋๋ค.
- 'zfs send' ๋ฐ 'zfs receive' ๋ช ๋ น์ ์คํํ ๋ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. โ-wโ ์ต์ ์ ์ง์ ํ๋ฉด ํ์์ ์ด๋ฏธ ์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ค๊ฐ ๋ณตํธํ ์์ด ๊ทธ๋๋ก ๋ค๋ฅธ ํ๋ก ์ ์กํ๋ค. ์ด๋ฌํ ๋ณต์ฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ ๋ฐ์ ์์ ํค์ ์ํด ๋ณดํธ๋ ์ํ๋ก ์ ์ง๋๋ฏ๋ก ์ ๋ขฐํ ์ ์๋ ์์คํ ์ ๋ํ ๋ฐฑ์ ์ ์ด ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค(์์ ์๊ฐ ์์๋ ๊ฒฝ์ฐ ๊ณต๊ฒฉ์๋ ํค ์์ด ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์).
- ๊ฐ๋ณ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ฌ์ ์ผ๋ถ๋ก ์ฐ๊ฒฐ๋ ์คํ ๋ฆฌ์ง ํ์์ ๊ธฐ๋ณธ ๋๋ผ์ด๋ธ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ ๊ฑฐ๋ "zpool remove" ๋ช ๋ น์ผ๋ก ์ํ๋ฉ๋๋ค. ์ญ์ ํ๋ก์ธ์ค๋ ์ ์ธ๋ ๋๋ผ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํ์ ๋๋จธ์ง ๊ธฐ๋ณธ ๋๋ผ์ด๋ธ๋ก ๋ณต์ฌํฉ๋๋ค.
- ์ ์ฅ๋ ํน์ ์์ ์ ๋ํ ์ถ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋กค๋ฐฑํ ์ ์๋ ๊ธฐ๋ฅ๊ณผ ํจ๊ป ํ์ ํ์ฌ ์ํ๋ฅผ ์ ์ฅํ๋ "zpool checkpoint" ๋ช ๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค(์ ์ฒด ํ์ ์ค๋ ์ท์ด ์์ฑ๋จ). ์ด ๊ธฐ๋ฅ์ ์ ์ฌ์ ์ผ๋ก ์ํํ ๋ณต์กํ ๊ด๋ฆฌ ์์ ์ ์ํํ๋ ๊ณผ์ ์์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ ์์ ์ธ ์กฐ๊ฑด์์๋ ๋๋๋ฆด ์ ์๋ ๋ณ๊ฒฝ(์: ์ ZFS ๊ธฐ๋ฅ์ ๋ํ ํ๋๊ทธ ํ์ฑํ ๋๋ ๋ฐ์ดํฐ ์ง์ฐ๊ธฐ)์ด ๋ฐ์ํฉ๋๋ค.
- ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ์นํฐ์ ๋ํด ํ์์ ์ฌ์ฉ๋๋ ๋๋ผ์ด๋ธ์ ์๋ฆฌ๊ธฐ ์ํด "zpool trim" ๋ช ๋ น์ด ์ถ๊ฐ๋์์ต๋๋ค. TRIM ์์ ์ ์ฌ์ฉํ๋ฉด SSD ๋๋ผ์ด๋ธ์ ํจ์จ์ฑ์ ๋์ด๊ณ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. TRIM ๋ช ๋ น ์ ์ก์ ์ง์์ ์ธ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ํ์ฑํํ๊ธฐ ์ํด ์๋ก์ด "autotrim" ์์ฑ์ด ์ ์๋์์ต๋๋ค.
- "zpool initialize" ๋ช ๋ น์ ์ถ๊ฐํ์ฌ ํ ๋น๋์ง ์์ ๋ชจ๋ ๋์คํฌ ๊ณต๊ฐ์ ์ด๊ธฐํํ์ฌ ์ฒซ ๋ฒ์งธ ์ก์ธ์ค ์ ์ฑ๋ฅ ์ ํ ์์ด ์ฆ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค(์: VMware VMDK์ ๊ฐ์ ๊ฐ์ํ๋ ์คํ ๋ฆฌ์ง๋ฅผ ํธ์คํ ํ ๋).
- ์ด์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน ์์ค ํ ๋น๋ ์ธ์๋ ํ๊ณ ๋ฐ ํ๋ก์ ํธ ์์ค ํ ๋น๋์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก ํ๋ก์ ํธ๋ ๋ณ๋์ ์๋ณ์(ํ๋ก์ ํธ ID)์ ์ฐ๊ฒฐ๋ ๊ฐ์ฒด์ ๋ณ๋ ๊ณต๊ฐ์ ๋๋ค. ๋ฐ์ธ๋ฉ์ 'chattr -p' ์์ ๋๋ ์์ฑ ์์์ ํตํด ์ ์๋ฉ๋๋ค. ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ์ํด "zfs project" ๋ฐ "zfs projectspace" ๋ช ๋ น์ด ์ ๊ณต๋์ด ํ๋ก์ ํธ ์์ฑ์ ๊ด๋ฆฌํ๊ณ ํ๋ก์ ํธ์ ๋ํ ๋์คํฌ ๊ณต๊ฐ ์ ํ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ZFS๋ก ๋ค์ํ ์์ ์ ์๋ํํ๊ธฐ ์ํด Lua ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ "zpool program" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํน์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋ฉ๋๋ค.
- ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌํ
ํผ์ฆํ์ค , Python ์ ํ๋ฆฌ์ผ์ด์ ์์ ZFS๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์์ ์ ์ธ API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ libzfs_core ์ฃผ๋ณ์ ๋ํผ์ด๋ฉฐ ๋์ผํ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํ์ง๋ง ๋ ๊ฐ๊น์ด Python ์ ํ์ ์ฌ์ฉํฉ๋๋ค. - arcstat, arcsummary ๋ฐ dbufstat ์ ํธ๋ฆฌํฐ๋ Python 3๊ณผ ํธํ๋ฉ๋๋ค. arcstat.py, arc_summary.py ๋ฐ dbufstat.py ์ ํธ๋ฆฌํฐ๋ ".py" ํ์ฅ์๊ฐ ์๋ ๋ฒ์ ์ผ๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
- ๋ฒํผ๋ง ๋ฐ ์บ์ ์ฐํ ์์ด ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๋ Linux Direct IO(O_DIRECT) ์ปค๋ ์ธํฐํ์ด์ค์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ ๋์
:
- "scrub" ๋ฐ "resilver" ๋ช ๋ น ์์ ์ด ๋ ๋จ๊ณ๋ก ๋ถํ ๋์ด ๊ฐ์ํ๋์์ต๋๋ค. ๋ ์);
- Allocation ํด๋์ค์ ๋ํ ์ง์ ์ถ๊ฐ,
์๋์ ์ผ๋ก ์์ SSD๋ฅผ ํ๋งํ๊ณ ๋ฉํ๋ฐ์ดํฐ, DDT ๋ฐ์ดํฐ ๋ฐ ์์ ํ์ผ ๋ธ๋ก๊ณผ ๊ฐ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํน์ ์ ํ์ ๋ธ๋ก๋ง ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. - ๋ค์๊ณผ ๊ฐ์ ๊ด๋ฆฌ ๋ช
๋ น์ ์ฑ๋ฅ ํฅ์
์์ ์ ํ์ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ์ฌ "zfs list" ๋ฐ "zfs get" - ๊ฐ metaslab ๊ทธ๋ฃน์ ๋ํด ๋ณ๋์ ํ ๋น์ ํ๋ก์ธ์ค๋ฅผ ์คํํ์ฌ ๋ธ๋ก ํ ๋น ์์ ์ ๋ณ๋ ฌํ์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค. ๊ธฐ์กด ์์คํ ์์๋ 5-10%์ ์ฑ๋ฅ ํฅ์์ด ์์ง๋ง ๋๊ท๋ชจ ์์คํ (8 128GB SSD, 24์ฝ์ด NUMA, 256GB RAM)์์๋ ๋ธ๋ก ํ ๋น ์์ ์ ์ฆ๊ฐ๊ฐ 25%์ ๋ฌํ ์ ์์ต๋๋ค.
- "resilver" ๋ช ๋ น ์คํ ์ง์ฐ ๊ฐ๋ฅ์ฑ ์ถ๊ฐ(๋๋ผ์ด๋ธ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ ๊ณ ๋ คํ์ฌ ๋ฐ์ดํฐ ๋ฐฐํฌ ์ฌ๊ตฌ์ถ) - ์ ์์ ์ ์์ํ ๋ ์ด์ ์์ ์ด ์์ง ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ์ ํธ๋ค๋ฌ๋ ๋ค์ ์ดํ์๋ง ์คํ์ ์์ํฉ๋๋ค. ์ด์ ๊ฒ์ด ๋๋ฌ์ต๋๋ค.
- ZIL(ZFS Intent Log)์ ์ต์ ํ๊ฐ ์ถ๊ฐ๋์ด ์คํ ๋ฆฌ์ง์์ ์์ง ์ฒ๋ฆฌ ์ค์ธ ๋ธ๋ก์ด ์์ ๋ ๋ธ๋ก์ ์์ฑํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์์คํ ์ ํํฐ์ (zvol) ๋ฑ๋ก ์๊ฐ์ด ๋จ์ถ๋์์ต๋๋ค. ํ์ ๋ง์ ํํฐ์ ์ด ํฌํจ๋ ๊ฒฝ์ฐ "zpool import"๋ฅผ ์ํํ ํ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Intel QAT(Quick Assist Technology) ์นฉ์ ์ฌ์ฉํ AES-GSM ์ํธํ ์์ ๋ฐ SHA256 ํด์์ ํ๋์จ์ด ๊ฐ์ ๊ณ์ฐ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. Intel C62x ์นฉ์ ๋ฐ CPU Atom C3000์ ํ๋์จ์ด ๊ฐ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru