ZFS ½ÃÀÛÇϱâ
From OpenSolaris.org  

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 º¼·ý¿¡ ¾ÐÃà ¿É¼ÇÀ» Ȱ¼ºÈ­ ÇÑ´Ù¸é »ç¿ëÀÚ´Â ¾ÐÃàµÈ °¡»ó ¸Þ¸ð¸® °ø°£À» °¡Áö°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

ZFS ½ÃÀÛÇϱâ

ÆÄÀϽýºÅÛ°ú º¼·ýÀ» °ü¸®Çϴµ¥ Á¸Àç Çß´ø ºÒÆíÇÔÀÌ ¸ðµÎ Á¦°Å µÇ¾ú½À´Ï´Ù: ´õÀÌ»ó 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¿¡¼­ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.