๐Ÿ’พ NAND

ZNS OpenChannelSSD Analysis

ZNS ยท Open-Channel SSD ์ƒ์„ธ ๋ถ„์„

Host-Managed Flash ยท Zone Write Pointer ยท Zone Append ยท FTL Offload ยท Log-Structured Software

๊ฐœ์š”

์ „ํ†ต SSD๋Š” NAND์˜ ๋ณต์žก์„ฑ์„ ๋ธ”๋ก ์ธํ„ฐํŽ˜์ด์Šค ๋’ค์— ์ˆจ๊ธฐ์ง€๋งŒ, ๊ทธ ๋Œ€๊ฐ€๋กœ GC์™€ write amplification, tail latency๊ฐ€ ํ˜ธ์ŠคํŠธ ์ž…์žฅ์—์„œ ๋ถˆํˆฌ๋ช…ํ•ด์ง‘๋‹ˆ๋‹ค. ๋ณธ ๋ฌธ์„œ๋Š” ์ด๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ Open-Channel SSD์™€ ZNS(Zoned Namespace)์˜ ์„ค๊ณ„ ์ฒ ํ•™, ์ธํ„ฐํŽ˜์ด์Šค, ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ ๋ณ€ํ™”๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

Open-Channel SSD๋Š” ๋ฌผ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฐฐ์น˜ ์ฑ…์ž„์„ ํ˜ธ์ŠคํŠธ ์ชฝ์œผ๋กœ ํฌ๊ฒŒ ์˜ฎ๊ธฐ๊ณ , ZNS๋Š” NVMe ํ‘œ์ค€ ์•ˆ์—์„œ zone๊ณผ write pointer๋งŒ ๋…ธ์ถœํ•ด ํ˜ธ์ŠคํŠธ๊ฐ€ append์™€ reclaim ์ •์ฑ…์„ ๋” ์ž˜ ๋งž์ถœ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ ์ˆ˜๋ช…๊ณผ ๊ฐฑ์‹  ํŒจํ„ด์„ ๊ฐ€์žฅ ์ž˜ ์•„๋Š” ์ฃผ์ฒด๊ฐ€ ํ˜ธ์ŠคํŠธ๋ผ๋Š” ์ ์„ ์ „์ œ๋กœ, ์ €์žฅ์žฅ์น˜ ๋‚ด๋ถ€์˜ ์ˆจ์€ ์ •๋ฆฌ ๋น„์šฉ์„ ์ค„์ด๋ ค๋Š” ์ ‘๊ทผ์ž…๋‹ˆ๋‹ค.

1. ์™œ ๊ธฐ์กด Block SSD ๋ชจ๋ธ์ด ํ•œ๊ณ„์— ๋ถ€๋”ชํžˆ๋Š”๊ฐ€

๊ธฐ์กด SSD๋Š” LBA ๊ธฐ๋ฐ˜ ๋ธ”๋ก ์žฅ์น˜๋กœ ๋ณด์ด๋ฏ€๋กœ ์‘์šฉ๊ณผ ํŒŒ์ผ์‹œ์Šคํ…œ์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๋ถ€ FTL์ด ์–ธ์ œ GC๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์–ด๋–ค ๋ธ”๋ก์„ ์ด๋™์‹œํ‚ค๋Š”์ง€๋Š” ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ผํ•œ ์“ฐ๊ธฐ ํŒจํ„ด๋„ ์‹œ์ ์— ๋”ฐ๋ผ ์ง€์—ฐ๊ณผ WAF๊ฐ€ ํฌ๊ฒŒ ํ”๋“ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋กœ๊ทธ๊ตฌ์กฐ DB๋‚˜ ์„ธ๊ทธ๋จผํŠธ ๊ธฐ๋ฐ˜ ์ €์žฅ์†Œ์ฒ˜๋Ÿผ ์ƒ์œ„ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ด๋ฏธ '๋ฌด์—‡์ด ์˜ค๋ž˜ ์‚ด๊ณ  ๋ฌด์—‡์ด ๊ณง ๋ฒ„๋ ค์งˆ์ง€'๋ฅผ ์•Œ๊ณ  ์žˆ์–ด๋„, ์ด๋ฅผ SSD์— ์ง์ ‘ ์ „๋‹ฌํ•  ๋ฐฉ๋ฒ•์ด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

nand_0030_zns_openchannelssd_analysis

๊ทธ๋ฆผ 1. ๊ธฐ์กด Block SSD ๋ชจ๋ธ โ€” FTL์˜ ๋ณต์žก์„ฑ์ด ๋””๋ฐ”์ด์Šค ๋‚ด๋ถ€์— ์ˆจ๊ฒจ์ง

2. Open-Channel SSD

Open-Channel SSD๋Š” PPA(Physical Page Address)๋ฅผ ๋” ์ง์ ‘์ ์œผ๋กœ ๋…ธ์ถœํ•ด, ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณ„์ธต์ด ๋ฐฐ์น˜์™€ cleaning ์ •์ฑ…์„ ํ†ต์ œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ์žฅ์น˜ ๋‚ด๋ถ€์˜ FTL ์ผ๋ถ€ ์ฑ…์ž„์„ ์ƒ์œ„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์˜ฌ๋ ค๋ณด๋‚ด๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ์€ ๋งค์šฐ ์œ ์—ฐํ•˜์ง€๋งŒ ์‘์šฉ ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ฌผ๋ฆฌ ๋ฐฐ์น˜ ์ •์ฑ…์„ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ณต์žก๋„๊ฐ€ ํฌ๊ฒŒ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ฐ๊ตฌ์™€ ํŠน์ • ์‹œ์Šคํ…œ์—์„œ๋Š” ๋งค๋ ฅ์ ์ด์ง€๋งŒ, ์ผ๋ฐ˜ ๋ชฉ์  NVMe ์ƒํƒœ๊ณ„์˜ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋˜๊ธฐ์—๋Š” ๋ถ€๋‹ด์ด ํฝ๋‹ˆ๋‹ค.

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 2. ์ „ํ†ต SSD์™€ Open-Channel SSD์˜ ์ฑ…์ž„ ๋ถ„ํ•  ๋น„๊ต

3. ZNS(Zoned Namespace)์˜ ๊ธฐ๋ณธ ๋ชจ๋ธ

ZNS๋Š” Open-Channel์ฒ˜๋Ÿผ ๋ฌผ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ „๋ถ€ ๋“œ๋Ÿฌ๋‚ด์ง€๋Š” ์•Š๋˜, ์ €์žฅ ๊ณต๊ฐ„์„ Zone ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ Zone์— ์ˆœ์ฐจ ์“ฐ๊ธฐ ๊ทœ์น™๊ณผ write pointer๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” zone append๋ฅผ ๋”ฐ๋ผ ์“ฐ๊ณ , ํ•„์š” ์—†์–ด์ง„ Zone์€ resetํ•˜์—ฌ ํ•œ ๋ฒˆ์— ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ NVMe ํ‘œ์ค€์˜ ๋ฒ”์œ„ ์•ˆ์—์„œ host-managed ํŠน์„ฑ์„ ๋„์ž…ํ•˜๋Š” ์ ˆ์ถฉ์•ˆ์ž…๋‹ˆ๋‹ค. ์žฅ์น˜๋Š” zone ๋‚ด๋ถ€ ๋ฐฐ์น˜๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ , ํ˜ธ์ŠคํŠธ๋Š” ๋กœ๊ทธ๊ตฌ์กฐ ์„ธ๊ทธ๋จผํŠธ๋ฅผ Zone์— ๋งž์ถฐ ๋ฐฐ์น˜ํ•ด ๋‚ด๋ถ€ GC ๋ถ€๋‹ด์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zone ์ข…๋ฅ˜์™€ ์ œ์•ฝ

๊ตฌ๋ถ„ ์ ‘๊ทผ ์ œ์•ฝ ์žฌ์‚ฌ์šฉ ๋ฐฉ์‹ ์ž˜ ๋งž๋Š” ๋ฐ์ดํ„ฐ
Conventional Zone ์ผ๋ฐ˜ ๋ธ”๋ก์ฒ˜๋Ÿผ ์ž„์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ฐ€๋Šฅ ์ผ๋ฐ˜ ๋ธ”๋ก ๋™์ž‘ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์ž‘์€ ๋žœ๋ค ์“ฐ๊ธฐ
Sequential Zone ์ˆœ์ฐจ append๋งŒ ํ—ˆ์šฉ, write pointer ์ค€์ˆ˜ ํ•„์š” zone reset ํ›„ ์žฌ์‚ฌ์šฉ ๋กœ๊ทธ, SSTable, object extent

Sequential Zone์—์„œ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋งˆ์ง€๋ง‰ write pointer ์œ„์น˜์— ๋งž์ถฐ appendํ•ด์•ผ ํ•˜๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ zone append๋ฅผ ์‚ฌ์šฉํ•ด ์žฅ์น˜๊ฐ€ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฐฐ์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋„๋ก ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์žฅ์น˜๋Š” ๋™์‹œ์— ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” zone ์ˆ˜์— ์ œํ•œ์ด ์žˆ์œผ๋ฏ€๋กœ, ์ƒ์œ„ ๊ณ„์ธต์€ open๊ณผ close ํƒ€์ด๋ฐ์„ ๊ณ ๋ คํ•ด ์“ฐ๊ธฐ ์‹คํŒจ๋ฅผ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 3. ZNS์˜ Zone๊ณผ Write Pointer ๋ชจ๋ธ

4. GC๋ฅผ ๋ˆ„๊ฐ€ ๋งก๋Š”๊ฐ€

์ „ํ†ต SSD์—์„œ๋Š” invalid page๊ฐ€ device ๋‚ด๋ถ€์— ํฉ์–ด์ง€๊ณ , SSD๊ฐ€ valid page migration์„ ์ˆ˜ํ–‰ํ•œ ๋’ค eraseํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ZNS์—์„œ๋Š” ์ƒ์œ„ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ obsolete ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๊ณ , ๋น„์›Œ์ง„ Zone ์ „์ฒด๋ฅผ resetํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ device ๋‚ด๋ถ€ copy๊ฐ€ ํฌ๊ฒŒ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์ฆ‰ ZNS๋Š” FTL์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•œ๋‹ค๊ธฐ๋ณด๋‹ค, host๊ฐ€ ๋” ๊ตฌ์กฐ์ ์ธ ์ •๋ณด์™€ ๋ฐฐ์น˜ ์˜๋„๋ฅผ ์ œ๊ณตํ•ด device ๋‚ด๋ถ€ cleaning์˜ ์–‘์„ ์ค„์ด๋Š” ๋ฐฉํ–ฅ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค. ์ด ๋•๋ถ„์— tail latency์™€ WAF๋ฅผ ๋” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์ฒ˜๋ฆฌ ํ๋ฆ„

  1. ์žฅ์น˜์˜ zone geometry๋ฅผ ์ฝ๊ณ  zone ๊ฒฝ๊ณ„๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
  2. ์“ฐ๊ธฐ ๋ฐ์ดํ„ฐ๋Š” sequential zone์˜ ๋์— appendํ•ฉ๋‹ˆ๋‹ค.
  3. ๋” ์ด์ƒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ํ•ด๋‹น zone์„ resetํ•ด ๊ณต๊ฐ„์„ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ํŒŒ์ผ์‹œ์Šคํ…œ์ด๋‚˜ DB๋Š” ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์™€ zone ๊ฒฝ๊ณ„๋ฅผ ๋งž์ถฐ ๋‚ด๋ถ€ migration์„ ์ค„์ž…๋‹ˆ๋‹ค.
ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 4. ์ „ํ†ต GC์™€ ZNS์˜ zone reset ๊ธฐ๋ฐ˜ ์ •๋ฆฌ ๋ฐฉ์‹ ๋น„๊ต

5. ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ๊ณผ ์›Œํฌ๋กœ๋“œ ์ ํ•ฉ์„ฑ

ZNS๋Š” RocksDB ๊ฐ™์€ LSM-tree, ๋กœ๊ทธ ์ˆ˜์ง‘ ์‹œ์Šคํ…œ, ๊ฐ์ฒด ์ €์žฅ์†Œ์ฒ˜๋Ÿผ ์›๋ž˜๋„ append์™€ segment cleaning ๊ฐœ๋…์„ ๊ฐ–๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ํŠนํžˆ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค. Zone์„ SSTable, ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ, object extent์™€ ์ •๋ ฌํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ๋‚ด๋ถ€ ์žฌ๋ฐฐ์น˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ์ค‘์‹ฌ์˜ ๋ฒ”์šฉ ํŒŒ์ผ์‹œ์Šคํ…œ์ด๋‚˜ legacy block API์— ๊ทธ๋Œ€๋กœ ๋งž์ถ”๋ ค๋ฉด ์ค‘๊ฐ„ ๊ณ„์ธต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ZNS์˜ ์„ฑ๋Šฅ ์ž ์žฌ๋ ฅ์€ ๋‹จ์ˆœํžˆ SSD๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํŒŒ์ผ์‹œ์Šคํ…œ/DB/๋Ÿฐํƒ€์ž„์ด zone ๊ทœ์น™์„ ์–ผ๋งˆ๋‚˜ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํก์ˆ˜ํ•˜๋А๋ƒ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋น„๊ต

๋ชจ๋ธ ๋…ธ์ถœ ๋ฒ”์œ„ GC ์œ„์น˜ ์•ฑ ๋ณต์žก๋„ ์žฅ์  ํ•œ๊ณ„
Traditional Block SSD LBA๋งŒ ๋…ธ์ถœ device ๋‚ด๋ถ€ ๋‚ฎ์Œ ํ˜ธํ™˜์„ฑ ๋†’์Œ WAF์™€ tail latency๊ฐ€ ์ˆจ๊ฒจ์ง
Open-Channel SSD PPA์™€ ๋ฐฐ์น˜ ํžŒํŠธ๊นŒ์ง€ ๋…ธ์ถœ host ๋˜๋Š” host-side stack ๋†’์Œ ์ œ์–ด๋ ฅ ์ตœ๋Œ€ํ™” ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ๋Ÿ‰์ด ํผ
ZNS zone, write pointer, reset host + device ๋ถ„๋‹ด ์ค‘๊ฐ„ ํ‘œ์ค€ํ™”๋œ ์ ˆ์ถฉ์•ˆ zone-aware ๊ณ„์ธต์ด ํ•„์š”
ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 5. ZNS ์†Œํ”„ํŠธ์›จ์–ด ์Šคํƒ โ€” Zoned-aware ๊ณ„์ธต์ด ๋ฐฐ์น˜ ์ •์ฑ…์„ ๋‹ด๋‹น

6. Open-Channel vs ZNS ์ •๋ฆฌ

Open-Channel SSD๋Š” ๋ฌผ๋ฆฌ ์ œ์–ด๊ถŒ์„ ํฌ๊ฒŒ ์—ด์–ด์ฃผ์ง€๋งŒ ์•ฑ ๋ณต์žก๋„๊ฐ€ ๋†’๊ณ , ZNS๋Š” ํ‘œ์ค€ํ™”๋œ zone ๊ทœ์น™๋งŒ ๋…ธ์ถœํ•ด ํ˜„์‹ค์  ์ฑ„ํƒ ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ๋‘ ์ ‘๊ทผ ๋ชจ๋‘ '๋ธ”๋ž™๋ฐ•์Šค FTL์— ๋ชจ๋“  ๊ฒƒ์„ ๋งก๊ธฐ์ง€ ๋ง์ž'๋Š” ๊ณตํ†ต ์ฒ ํ•™์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ํ•ต์‹ฌ์€ host๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ช…๊ณผ ๊ฐฑ์‹  ํŒจํ„ด์„ ๊ฐ€์žฅ ์ž˜ ์•ˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ ์ •๋ณด๋ฅผ ์ €์žฅ์žฅ์น˜ ์ธํ„ฐํŽ˜์ด์Šค์— ์–ผ๋งˆ๋‚˜ ๋ฐ˜์˜ํ•˜๋А๋ƒ๊ฐ€ ์•ž์œผ๋กœ์˜ SSD ์†Œํ”„ํŠธ์›จ์–ด-ํ•˜๋“œ์›จ์–ด ๊ณต๋™ ์ตœ์ ํ™” ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๋„์‹์€ ์ด ์ฒ ํ•™์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ์œผ๋กœ, ์ „ํ†ต SSD์˜ FTL ๋™์ž‘๊ณผ ๋ธ”๋ก ์ธํ„ฐํŽ˜์ด์Šค, Open-Channel์˜ ์ฑ…์ž„ ์ด๋™, ZNS์˜ write pointer ๋ชจ๋ธ์„ ๋‚˜๋ž€ํžˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 6. ์ „ํ†ต SSD๊ฐ€ ๋‚ด๋ถ€ FTL๋กœ ํ•ด๊ฒฐํ•˜๋˜ ๋งคํ•‘, GC, wear leveling, OP์˜ ์—ญํ• 

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 7. ๋ธ”๋ก SSD ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ๋‚ด๋ถ€ ์ •๋ฆฌ ๋น„์šฉ์ด ํ˜ธ์ŠคํŠธ์— ์ž˜ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์Œ

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 8. Open-Channel SSD๋Š” ๋ฐฐ์น˜์™€ cleaning ์ •์ฑ… ์ผ๋ถ€๋ฅผ ํ˜ธ์ŠคํŠธ ์Šคํƒ์œผ๋กœ ์ด๋™

ZNS OpenChannelSSD Analysis

๊ทธ๋ฆผ 9. ZNS๋Š” zone, write pointer, reset๋งŒ ๋…ธ์ถœํ•ด ํ‘œ์ค€ ์•ˆ์—์„œ host-managed ํŠน์„ฑ์„ ์ œ๊ณต

7. ์žฅ๋‹จ์ 

์žฅ์ 

  • host๊ฐ€ append์™€ reclaim ์ •์ฑ…์„ ์ง์ ‘ ๋งž์ถœ ์ˆ˜ ์žˆ์–ด write amplification์„ ์ค„์ด๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • zone reset๊ณผ ์ˆœ์ฐจ ์“ฐ๊ธฐ ๊ทœ์น™ ๋•๋ถ„์— tail latency์˜ ๋ณ€๋™ ํญ์„ ์ค„์ด๊ธฐ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ZNS๋Š” NVMe ํ‘œ์ค€ ๊ธฐ๋ฐ˜์ด๋ผ Open-Channel๋ณด๋‹ค ๋„์ž… ์žฅ๋ฒฝ์ด ๋‚ฎ๊ณ , zonefs ๊ฐ™์€ ์ƒ์œ„ ๊ณ„์ธต๊ณผ๋„ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค.

ํ•œ๊ณ„

  • ์ž„์˜ overwrite ์ค‘์‹ฌ ์›Œํฌ๋กœ๋“œ๋Š” zone ๊ทœ์น™๊ณผ ์ž˜ ๋งž์ง€ ์•Š์•„ ์„ฑ๋Šฅ ์ด์ ์ด ์ž‘์Šต๋‹ˆ๋‹ค.

  • active/open zone ์ˆ˜ ์ œํ•œ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์•ฑ์ด๋‚˜ ํŒŒ์ผ์‹œ์Šคํ…œ์ด ๋” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ๋ฒ”์šฉ block API๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๊ธฐ ์–ด๋ ต๊ณ , zone-aware ๊ณ„์ธต์ด ์—†์œผ๋ฉด ์ด์ ์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.

8. ๊ด€๋ จ ๊ธฐ์ˆ 

  • NAND NVMe SSD Analysis: NVMe SSD ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ NAND/์ปจํŠธ๋กค๋Ÿฌ ๊ด€๊ณ„

  • FTL WearLeveling GarbageCollection: L2P ๋งคํ•‘, GC, Wear Leveling, TRIM

  • SSD Internal Parallelism Channel Die Plane: ์ฑ„๋„/๋‹ค์ด/ํ”Œ๋ ˆ์ธ ๋ณ‘๋ ฌ์„ฑ

  • VFS FS PageCache BlockIO: zonefs์ฒ˜๋Ÿผ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต์ด ์žฅ์น˜ ์ œ์•ฝ์„ ํก์ˆ˜ํ•˜๋Š” ๋ฐฉ์‹

  • NVMe Architecture: NVMe ํ ๊ตฌ์กฐ์™€ ํ˜ธ์ŠคํŠธ I/O ๋ฐœํ–‰ ๊ฒฝ๋กœ

  • Virtual Memory: ๋กœ๊ทธํ˜• ์ €์žฅ์†Œ์™€ page cache, mmap ์ƒํ˜ธ์ž‘์šฉ ์ดํ•ด์— ๋„์›€

์ฐธ๊ณ  ๋ฌธํ—Œ

  • NVM Express, Specifications โ€” https://nvmexpress.org/specifications/

  • NVM Express, NVM Express Base Specification 2.0d โ€” https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0d-2024.01.11-Ratified.pdf

  • The Linux Kernel Documentation, ZoneFS - Zone filesystem for Zoned block devices โ€” https://www.kernel.org/doc/html/latest/filesystems/zonefs.html

  • Wikipedia, Open-channel SSD โ€” https://en.wikipedia.org/wiki/Open-channel_SSD

  • Bjรธrling, Gonzalez, Bonnet, LightNVM: The Linux Open-Channel SSD Subsystem (FAST 2017) โ€” https://www.usenix.org/system/files/conference/fast17/fast17-bjorling.pdf

9. ํ•ต์‹ฌ ์ •๋ฆฌ

ZNS์™€ Open-Channel SSD๋Š” NAND์˜ ๋น„๋Œ€์นญ์„ฑ๊ณผ GC ๋น„์šฉ์„ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋” ์ž˜ ๋‹ค๋ฃจ๋„๋ก ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ”๊พธ๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค. Open-Channel์€ ์ œ์–ด๊ถŒ์ด ํฌ์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด ๋ถ€๋‹ด์ด ํฌ๊ณ , ZNS๋Š” zone๊ณผ write pointer๋งŒ ๋…ธ์ถœํ•ด ํ‘œ์ค€ํ™”์™€ ์‹ค์šฉ์„ฑ ์‚ฌ์ด์—์„œ ํƒ€ํ˜‘ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์„ฑ๋Šฅ์€ ์žฅ์น˜๋งŒ์œผ๋กœ ๊ฒฐ์ •๋˜์ง€ ์•Š๊ณ , ํŒŒ์ผ์‹œ์Šคํ…œ๊ณผ DB๊ฐ€ append, reset, reclaim์„ ์–ผ๋งˆ๋‚˜ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํก์ˆ˜ํ•˜๋А๋ƒ์— ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์„œ์˜ ํ•ต์‹ฌ์€ "์ €์žฅ์žฅ์น˜๊ฐ€ ์ˆจ๊ธฐ๋˜ ๋น„์šฉ์„ ์–ด๋””๊นŒ์ง€ ํ˜ธ์ŠคํŠธ๋กœ ๋“œ๋Ÿฌ๋‚ผ ๊ฒƒ์ธ๊ฐ€"๋ผ๋Š” ์„ค๊ณ„ ์„ ํƒ์ž…๋‹ˆ๋‹ค.