ZFS¶õ ¹«¾ùÀԴϱî?
ZFS´Â °£ÆíÇÑ °ü¸®¼º, Æ®·£Á§¼Ç ±â¹ÝÀÇ ±¸¹®, ¿Ïº®ÇÑ µ¥ÀÌŸ ¹«°á¼º º¸Àå, ´ë¿ë·®ÀÇ È®À强À» Á¦°øÇÏ´Â ÀüÇô »õ·Î¿î Á¾·ùÀÇ ÆÄÀÏ
½Ã½ºÅÛÀÔ´Ï´Ù. ZFS´Â ±âÁ¸ÀÇ Á¸ÀçÇÏ´ø ±â¼úÀÇ ¹ßÀüÀÌ ¾Æ´Õ´Ï´Ù;±âº»ÀûÀ¸·Î µ¥ÀÌŸ °ü¸®¿¡ ´ëÇÑ »õ·Î¿î Á¢±ÙÀÔ´Ï´Ù. ¿ì¸®´Â Áö³ 20³â°£
Áö¼ÓµÇ¿Â »õ·Î¿î °³³äÀÇ °³¹ß, ¼Ò½ºÀÇ º¹À⼺ Á¦°ÅµîÀÇ ¹æ¹ýµéÀ» ¸ðµÎ ³¯·Á ¹ö¸®°í »ç¿ëÀÌ °£ÆíÇÑ »õ·Î¿î Á¾·ùÀÇ ½ºÅ丮Áö ½Ã½ºÅÛÀ» ¸¸µé¾ú½À´Ï´Ù.
ZFS´Â ½ºÅ丮Áö Ç® ¸ðµ¨À» Á¦½ÃÇÔÀ¸·Î½á ±âÁ¸ÀÇ º¼·ý°ú ±×¿¡ ±â¹ÝÇÑ ÆÄƼ¼Å´×, ÇÁ·ÎºñÁ®´×, ´ë¿ªÆø ³¶ºñ, ÀÌÀüÀÇ ºÒÆí¼ºµîÀÇ ¹®Á¦¸¦
¿ÏÀüÈ÷ Á¦°ÅÇß½À´Ï´Ù. ¼öõ°³ÀÇ ÆÄÀϽýºÅÛÀÌ ÇϳªÀÇ ÀÏ¹Ý ½ºÅ丮Áö ¾È¿¡ ´ã°Ü Áú ¼ö ÀÖ°í °¢°¢ÀÇ ÆÄÀϽýºÅÛÀº ¿ÀÁ÷ ½ÇÁ¦·Î ÇÊ¿äÇÑ ¸¸ÅÀÇ
°ø°£¸¸À» »ç¿ëÇÏ°Ô µÆ½À´Ï´Ù. Ç®ÀÇ ¸ðµç µð¹ÙÀ̽ºµéÀÇ ´ë¿ªÆøÀº Ç×»ó ¸ðµç ÆÄÀϽýºÅÛ¿¡¼ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
¸ðµç µ¿ÀÛÀº copy-on-write Æ®·»Á§¼ÇÀ¸·Î ÀÌ·ç¾îÁ® ÀÖ¾î¼ µð½ºÅ©ÀÇ »óÅ´ Ç×»ó À¯È¿ ÇÕ´Ï´Ù. Áï ´õÀÌ»ó fsck(1M)¸¦
ZFS ÆÄÀÏ ½Ã½ºÅÛ¿¡ ½ÇÇàÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¸ðµç ºí·°µéÀº µ¥ÀÌŸ ¿À·ù¿¡ ´ëºñÇØ Ç×»ó üũ¼¶ µÇ¸ç replicate ¼³Á¤(¹Ì·¯
¶Ç´Â RAID)¿¡ ÀÇÇØ ÀÚµ¿À¸·Î Ä¡À¯°¡ °¡´ÉÇÕ´Ï´Ù. ¸¸¾à ÇϳªÀÇ Ä«Çǰ¡ ¼Õ»óÀ» ÀÔ¾ú´Ù¸é ZFS´Â ¹ß°ß ÈÄ¿¡ ´Ù¸¥ Ä«ÇǸ¦ ÀÌ¿ëÇÏ¿©
º¹±¸ ÇØ ÁÝ´Ï´Ù.
ZFS´Â RAID-Z¶ó´Â »õ·Î¿î µ¥ÀÌŸ replication ¸ðµ¨À» Á¦°øÇÕ´Ï´Ù. RAID-Z´Â RAID-5¿Í ºñ½ÁÇÏÁö¸¸ °¡º¯ stripe
width¸¦ Á¦°øÇÔÀ¸·Î½á RAID-5ÀÇ write hole(stripe ¿À·ù´Â µ¥ÀÌŸ¿Í Æä¸®Æ¼ ºñÆ®°¡ ¾÷µ¥ÀÌÆ® µÉ¶§ÀÇ Á¤ÀüÀ¸·Î ¹ß»ýÇÕ´Ï´Ù)¿À·ù¸¦
Á¦°ÅÇß½À´Ï´Ù. ¸ðµç RAID-Z´Â full-stripe ¾²±â ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. Àбâ-¼öÁ¤-¾²±âµîÀÇ ºÎ°¡ °úÁ¤ÀÌ ÇÊ¿ä ¾ø°í write
hole ¹®Á¦µµ ¾øÀ¸¸ç °¡Àå Áß¿äÇÑ °ÍÀº Çϵå¿þ¾î¿¡ NVRAMÀÌ ÀÖÀ» Çʿ䰡 ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ZFS´Â Àú·ÅÇÑ µð½ºÅ©¸¦ ¼±È£ÇÕ´Ï´Ù.
¹°·Ð Àú·ÅÇÑ µð½ºÅ©´Â ¿À·ù°¡ »ý±æ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î ZFS´Â µð½ºÅ© scrubbingÀ» Á¦°øÇÕ´Ï´Ù. ECC memoryÀÇ scrubbing°ú
°°ÀÌ ¹Ù·Î Á¤Á¤ÀÌ °¡´ÉÇÏ´õ¶óµµ ¸ðµç µ¥ÀÌŸ¸¦ ´Ù½Ã ÀÐ¾î µé¿©¼ ÀáÀçÀûÀÎ ¿À·ù¸¦ ã¾Æ³»°Ô µË´Ï´Ù. scrubÀº ¸ðµç ½ºÅ丮Áö Ç®À»
¼øÈ¸ ÇÏ¸é¼ ¸ðµç ºí·°ÀÇ Ä«ÇǵéÀ» Àаí 256ºñÆ® üũ¼¶À» ÀÌ¿ëÇÏ¿© °ËÁõ ÇÑ ÈÄ¿¡ º¹±¸°¡ ÇÊ¿ä ÇÏ¸é º¹±¸¸¦ ÇÏ°Ô µË´Ï´Ù. ÀÌ ¸ðµç
ÀÛ¾÷Àº ½ºÅ丮Áö Ç®ÀÌ ¿Â¶óÀÎÀÎ »óÅ¿¡¼ ÀÌ·ç¾îÁö°Ô µË´Ï´Ù.
ZFS´Â CPUÀÇ ÆÄÀÌÇÁ¶óÀÎ °³³ä°ú ºñ½ÁÇÑ I/O ÆÄÀÌÇÁ¶óÀÎ ¿£ÁøÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ÆÄÀÌÇÁ¶óÀÎÀº I/O ÀÇÁ¸¼º ±×·¡ÇÁ¿¡ ±â¹ÝÇÏ¿©
½ºÄھµù, ¿ì¼±¼øÀ§, µ¥µå¶óÀÎ ½ºÄÉÁÙ¸µ, ¿À·ù ¹ß»ý ´ëó ¹× I/O Àϰý ó¸® µîÀÇ ±â¹ýÀ» Á¦°øÇÕ´Ï´Ù. ´Ù¸¥
ÆÄÀÏ ½Ã½ºÅÛ¿¡ ½É°¢ÇÑ ¿µÇâÀ» ÁÖ´Â I/O ·Îµå´Â ÀÌÁ¦ ZFSÀÇ I/O ÆÄÀÌÇÁ¶óÀÎÀ» ÅëÇØ ¼Õ½±°Ô ´ëóÇÒ ¼ö ÀÖ½À´Ï´Ù.
ZFS´Â »ó¼ö¹üÀ§ ¾È¿¡¼ ¹«Á¦ÇÑÀûÀÎ ½º³À¼¦°ú Ŭ·ÐµéÀ» Á¦°øÇÕ´Ï´Ù. ½º³À¼¦Àº Àбâ Àü¿ëÀÇ ÆÄÀϽýºÅÛ º¹»çº»À̰í Ŭ·ÐÀº ½º³À¼¦¿¡ ¾²±â
±â´ÉÀÌ ´õÇØÁø °ÍÀÔ´Ï´Ù. Ŭ·ÐÀº ¿öÅ©½ºÆäÀ̽º³ª ¼ÒÇÁÆ®¿þ¾î ¼³Ä¡, µð½ºÅ©°¡ ¾ø´Â Ŭ¶óÀÌ¾ðÆ®µîÀÇ ºÐ¾ß¿¡¼ ÃÖ°íÀÇ °ø°£Àý¾à È¿À²¼ºÀ» Á¦°øÇÕ´Ï´Ù.
ZFS ¹é¾÷°ú º¹±¸´Â ½º³À¼¦¿¡ ÀÇÇØ °·ÂÇØ Áý´Ï´Ù. ¸ðµç ½º³À¼¦Àº Ç®¹é¾÷ÀÌ °¡´ÉÇÏ°í ¶ÇÇÑ ¾î¶°ÇÑ Â¦ÀÇ ½º³À¼¦µµ Áõ°¡ºÐ ¹é¾÷ÀÌ °¡´ÉÇÕ´Ï´Ù.
Áõ°¡ºÐ ¹é¾÷Àº ¿ø°Ý replication¿¡¼ ¾öû³ª°Ô È¿°úÀûÀÎ ¹æ¹ý ÀÔ´Ï´Ù. - ¿¹¸¦ µé¾î 10ÃÊ¿¡ Çѹø¾¿ Áõ°¡ºÐÀ» Àü¼ÛÇÒ °æ¿ì
ZFS¿¡ ÇѰè´Â ¾ø½À´Ï´Ù. »ç¿ëÀÚ°¡ ¿øÇÏ´Â ¼ö ¸¸ÅÀÇ ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù;64ºñÆ® ÆÄÀÏ ¿ÀÇÁ¼Â, ¹«Á¦ÇÑ ÀûÀÎ ¸µÅ©¿Í µð·ºÅ丮
¿£Æ®¸®, ±×¸®°í ½º³À¼¦µîÀ» ÀÌ¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù.
ZFS´Â ±âº»ÀûÀ¸·Î ¾ÐÃàÀ» Á¦°øÇÕ´Ï´Ù. °ø°£À» 2~3¹è ÁÙÀÌ´Â°Í ÀÌ»óÀ¸·Î I/OÀÇ ¾çÀ» 2~3¹è Á¤µµ ÁÙ¿ä ÁÖ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ
ÀÌÀ¯·Î ¾ÐÃà ¿É¼ÇÀ» Ȱ¼ºÈ ½Ãų °æ¿ì ¸¹Àº ¿öÅ© ·ÎµåµéÀÌ Á»´õ ºü¸£°Ô ó¸® µÉ ¼ö ÀÖÀ»°Í ÀÔ´Ï´Ù.
ÆÄÀϽýºÅÛ°ú ´õºÒ¾î ZFS ½ºÅ丮Áö Ç®Àº raw-µð¹ÙÀ̽º ±¸¹®ÀÌ ÇÊ¿äÇÑ ¾îÇø®ÄÉÀ̼ǵ鿡°Ô º¼·ýÀ» Á¦°øÇÕ´Ï´Ù. ZFS º¼·ýÀº swap
µð¹ÙÀ̽º·Î »ç¿ë µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î swap º¼·ý¿¡ ¾ÐÃà ¿É¼ÇÀ» Ȱ¼ºÈ ÇÑ´Ù¸é »ç¿ëÀÚ´Â ¾ÐÃàµÈ °¡»ó ¸Þ¸ð¸® °ø°£À» °¡Áö°Ô
µÇ´Â °ÍÀÔ´Ï´Ù.
ÆÄÀϽýºÅÛ°ú º¼·ýÀ» °ü¸®Çϴµ¥ Á¸Àç Çß´ø ºÒÆíÇÔÀÌ ¸ðµÎ Á¦°Å µÇ¾ú½À´Ï´Ù: ´õÀÌ»ó format, newfs, mount, /etc/vfstab
¼öÁ¤, fsck, growfs, metadb, metainit µîÀÇ ÀÛ¾÷ÀÌ ÇÊ¿ä ¾ø½À´Ï´Ù.
zpool(1M) °ú zfs(1M)
¸¦ ¼Ò°³ÇØ µå¸®°Ú½À´Ï´Ù.
ZFS´Â °£ÆíÇÕ´Ï´Ù. ±×·¯¹Ç·Î ¹Ù·Î ¿©·¯ºÐÀÇ Ã¹¹øÂ° Ç®À» ¸¸µé¾î º¸°Ú½À´Ï´Ù:
# zpool create tank c1t2d0
ÀÌÁ¦ ´ç½ÅÀº tank¶ó´Â À̸§ÀÇ ½Ì±Û µð½ºÅ© ½ºÅ丮Áö Ç®À» °¡Áö°Ô µÇ¾ú°í /tank¿¡ ¸¶¿îÆ®µÈ ÇϳªÀÇ ÆÄÀÏ ½Ã½ºÅÛÀ» °¡Áö°Ô µÇ¾ú½À´Ï´Ù.
´õ ÀÌ»óÀÇ Ãß°¡ ÀÛ¾÷Àº ÇÊ¿ä ¾ø½À´Ï´Ù.
mailÀ̳ª home µð·ºÅ丮µéÀ» À§ÇØ ½ºÅ丮Áö¸¦ ¹Ì·¯Çϱ⸦ ¿øÇÑ´Ù¸é ÀÌ·¸°Ô °£´ÜÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù:
Ç®À» »ý¼º:
# zpool create tank mirror c1t2d0 c2t2d0
/var/mail ÆÄÀÏ ½Ã½ºÅÛ »ý¼º:
# zfs create tank/mail
# zfs set mountpoint=/var/mail tank/mail
home µð·ºÅ丮µéÀ» »ý¼ºÇÑ ÈÄ /export/home/<username>¿¡ ¸¶¿îÆ®:
# zfs create tank/home
# zfs set mountpoint=/export/home tank/home
# zfs create tank/home/ahrens
# zfs create tank/home/billm
# zfs create tank/home/bonwick
# zfs create tank/home/eschrock
…
ZFS»óÀÇ ÆÄÀϽýºÅÛÀº ¼öÁ÷ÀûÀÔ´Ï´Ù:°¢°¢ÀÇ ½Ã½ºÅÛÀº ¹Ù·Î »óÀ§ÀÇ ¼Ó¼ºµéÀ» ¹°·Á ¹Þ°Ô µÇ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¸¶¿îÆ® Æ÷ÀÎÆ® ¼Ó¼ºÀº pathname
prefix¸¦ »ó¼ÓÇÏ°Ô µË´Ï´Ù. Áï tank/home/ahrensÀº ÀÚµ¿ÀûÀ¸·Î /export/home/ahrens¿¡ ¸¶¿îÆ® µË´Ï´Ù.
¿Ö³ÄÇϸé tank/homeÀº /export/home¿¡ ¸¶¿îÆ® µÇÀֱ⠶§¹®ÀÔ´Ï´Ù. °¢°¢ÀÇ °³ÀÎ »ç¿ëÀÚµéÀÇ ¸¶¿îÆ® Æ÷ÀÎÆ®¸¦ ¸ðµÎ ÁöÁ¤ÇÒ
Çʿ䰡 ¾ø½À´Ï´Ù.
À̰ÍÀº ½ÇÁ¦·Î Àϳ⠹ݵ¿¾È ZFS¸¦ ¿î¿ëÇØ ¿Â zion.eng¿¡¼ home µð·ºÅ丮¿Í ¸ÞÀÏ ¼ºñ½º¸¦ ¼³Á¤ÇÑ ¹æ¹ýÀÔ´Ï´Ù.
À̰ÍÀÌ ÀüºÎ°¡ ¾Æ´Õ´Ï´Ù!
ZFS´Â ±âº»ÀûÀ¸·Î ¾ÐÃàÀ» Á¦°øÇÕ´Ï´Ù. home µð·ºÅ丮¸¦ ¾ÐÃàÇϱâ:
# zfs set compression=on tank/home
ahrens¿¡°Ô 10GÀÇ ÄõÅ͸¦ ÇÒ´çÇϱâ:
# zfs set quota=10g tank/home/ahrens
bonwick¿¡°Ô 100GÀÇ °ø°£À» ¿¹¾à:
# zfs set reservation=100g tank/home/bonwick
NFS-export½Ã ÀÚµ¿ÀûÀ¸·Î ¸ðµç home µð·ºÅ丮¿¡ read/write ±ÇÇÑ ÁÖ±â:
# zfs set sharenfs=rw tank/home
¸ðµç µð½ºÅ©µéÀ» scrubÇÏ¿© Ç®¾ÈÀÇ µ¥ÀÌŸ¿¡ ´ëÇÑ ¹«°á¼º °Ë»ç:
# zpool scrub tank
¿À·ù°¡ ÀÖ´Â µð½ºÅ© ±³Ã¼:
# zpool replace tank c2t2d0 c4t1d0
°ø°£ Ãß°¡Çϱâ:
# zpool add tank mirror c5t1d0 c6t1d0
SPARC ¸Ó½Å 'sparky'¿¡ ÀÖ´Â Ç®À» AMD ¸Ó½Å 'amdy'·Î À̵¿:
[on sparky]
# zpool export tank
¹°¸®ÀûÀ¸·Î sparkyÀÇ µð½ºÅ©µéÀ» amdy·Î À̵¿
[on amdy]
# zpool import tank
¸ðµç°ÍÀÌ ÀÌ·¸°Ô °£´ÜÇÏ°Ô µ¿ÀÛÇÕ´Ï´Ù. — ZFS´Â ¼·Î ´Ù¸¥ ¹ÙÀÌÆ® ¿À´õ¸¦ °¡Áö°í ÀÖ´Â ¸ðµç ½Ã½ºÅÛ¿¡¼µµ µ¿ÀÛ Çϵµ·Ï 'adaptive
endianness' ¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
¸ðµç ZFSÀÇ µ¿ÀÛÀº ÀÌ·¸°Ô °£´ÜÇÑ ÇϳªÀÇ ¸í·ÉÀ¸·Î ½ÇÇàµÇ¾î Áú ¼ö ÀÖ½À´Ï´Ù.
Á»´õ ÀÚ¼¼ÇÑ Á¤º¸´Â OpenSolaris.orgÀÇ ZFS docuemtation section¿¡¼
¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
|