Ext2fs º¹±¸ ¹Ì´Ï-ÇÏ¿ìÅõBy Aaron Crane < aaronc@pobox.com>1997³â 1¿ù 18ÀÏ Åä¿äÀÏ, v1.0 ¹ø¿ªÀÚ : ¹ÚÀº¿µ < pey1@nownuri.net > ¹ø¿ªÀÏ : 1997³â 5¿ù 8ÀÏ ¸ñ¿äÀϹø¿ªÁÖ : ¿ì¼± ¸®´ª½º¸¦ Á¦´ë·Î ¾²Áöµµ ¸øÇÏ´Â Ãʺ¸°¡ ±×°Íµµ ªÀº ¿µ¾î ½Ç·ÂÀ¸·Î ÇÏ¿ìÅõ ¹ø¿ª¿¡ Âü°¡ÇÏ´Â Á¡À» ºÎ²ô·´°Ô »ý°¢Çϸç, ext2 ¿¡¼ »èÁ¦µÈ ÈÀÏÀÇ º¹±¸ ¹æ¹ýÀ» ¼³¸íÇÑ ÀÌ ¹Ì´Ï ÇÏ¿ìÅõ¸¦ µÎ ºÎºÐÀ¸·Î ³ª´©¾î ¿Ã¸³´Ï´Ù.(1Æí: óÀ½ 8Àå / 2Æí: 9Àå ³¡ ÀÌ·¸°Ô µÑ·Î ³ª´®) ¸¸¾à ¿À¿ªÀÌ µÇ¾î ¼öÁ¤ÇÒ ºÎºÐÀÌ ÀÖ´Ù¸é ¼½¿Ä¡ ¸¶½Ã°í À§¿¡ ÀûÈù Á¦ ÁÖ¼Ò·Î ¸ÞÀÏ Áֽøé Áï½Ã °íÄ¡°Ú½À´Ï´Ù. 1. µé¾î°¡¸é¼ÀÌ ¹Ì´Ï ÇÏ¿ìÅõ ¹®¼´Â ext2 ÈÀÏ ½Ã½ºÅÛ¿¡¼ Áö¿öÁø ÈÀÏÀ» º¹±¸ÇÏ´Â ¹æ¹ýÀ» ¾Ë·Á ´ëºñÇÏ°Ô Çϱâ À§ÇØ ÀÛ¼º µÇ¾ú´Ù. ÀÌ ¹®¼´Â ¶ÇÇÑ ¿ì¼±ÀûÀ¸·Î ¾î¶»°Ô Çϸé ÈÀÏ »èÁ¦¸¦ ÇÇÇÏ´ÂÁö¿¡ ´ëÇÑ ³íÀǵ鿡 ÇÑÁ¤µÇ¾î ÀÖ´Ù. ³ª´Â ÀÌ ±ÛÀ» 'rm' À¸·Î ÀÎÇØ ¹®Á¦°¡ ÀÖ´Â »ç¶÷µé¿¡°Ô È®½ÇÇÑ µµ¿òÀ» ÁÖ·Á´Â Àǵµ·Î ÀÛ¼ºÇßÁö¸¸ - ¾ðÁ¨°¡ ¿©±â ÀÖ´Â ¾à°£ÀÇ Á¤º¸·Î À§ÇèÀ» ¸éÇÒ ¼ö ÀÖÀ»Áöµµ ¸ð¸£´Â ÀÏÀÌ´Ï - ¾Æ¹«Æ° ¿©·¯ »ç¶÷µéÀÌ ÀÐ¾î º¸±â¸¦ ¹Ù¶õ´Ù. ÀÌ ¹®¼´Â ÀϹÝÀûÀÎ À¯´Ð½º ÈÀÏ ½Ã½ºÅÛ¿¡ ´ëÇÑ ¾à°£ÀÇ ¹è°æÁö½ÄÀ» °¡Á¤ÇØ ÀÛ¼ºµÇ¾úÁö¸¸ ´ëºÎºÐÀÇ ¸®´ª½º »ç¿ëÀڵ鿡°Ô ½±°Ô ÀÌÇØµÇ±æ ¹Ù¶õ´Ù. ¸¸¾à ¾ÆÁÖ Ãʺ¸ÀÚ¶ó¸é ¸®´ª½º üÁ¦ ÇÏ¿¡¼ ÈÀÏÀ» º¹±¸ÇÏ´Â °ÍÀº ´çºÐ°£ ±â¼úÀû Áö½Ä°ú ²ö±â µîµîÀÌ ²À ÇÊ¿äÇÏ´Ù. Àû¾îµµ ÈÀÏÀÌ ÀúÀåµÈ raw device¿¡ read access ¾øÀÌ ext2 ÈÀÏ ½Ã½ºÅÛ¿¡¼ Áö¿öÁø ÈÀÏÀ» º¹±¸ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÒ °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î À̰ÍÀº ·çÆ®¿©¾ß¸¸ ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¶ÇÇÑ 'e2fsprogs' ÆäŰÁöÀÇ 'debugfs'°¡ ÇÊ¿äÇѵ¥ ÀÌ´Â ±¸ºÐÇØ¼ ¼³Ä¡ÇßÀ» °ÍÀÌ´Ù. ³»°¡ ÀÌ ±ÛÀ» ¾²´Â ÀÌÀ¯´Â ³» ÀÚ½ÅÀÌ ÁÖ·Î ·çÆ®¿¡¼ ¾î¸®¼®°í ºñÂüÇÏ°Ô 'rm -r' ¸í·ÉÀ» »ç¿ëÇÑ °æÇè¿¡¼ ³ª¿Â °ÍÀÌ´Ù. ³ ³»°Ô ÇÊ¿äÇÑ 97°³¿¡ ´ÞÇÏ´Â JPEG ÈÀÏÀ» Áö¿ü¾ú´Âµ¥ ´Ù¸¥ ¼Ò½º·ÎºÎÅ͵µ °ÅÀÇ º¹±¸°¡ ºÒ°¡´É Çß¾ú´Ù. ¾à°£ÀÇ µµ¿òµÇ´Â Á¤º¸¿Í ±²ÀåÇÑ Àγ»·Î ¼Õ»óµÇÁö ¾ÊÀº 91°³ÀÇ ÈÀÏÀ» º¹±¸ Çß¾ú°í, ³ª¸ÓÁö ´Ù¼¸ ºÎºÐµµ ¾Æ¹«Æ° µÂã¾Ò´Ù. ´ÜÁö Çϳª°¡ º¸±â ºÒ°¡´É Çß¾ú´Âµ¥ À̸¶Àú 1024 ¹ÙÀÌÆ®¿¡ Áö³ªÁö ¾Ê´Â ºÎºÐ¸¸ ÀÒ¾î ¹ö·È´Ù. ÀÌ¿¡ ³ª´Â ´õ ³ª°¡¼ ÈÀÏÀ» »èÁ¦ÇßÀ»¶§ ±â´ëÇÒ ¸¸ÇÑ º¹±¸ ¹æ¹ýÀ» ¼³¸í ÇϰíÀÚ ÇÑ´Ù. 2. ¾î¶»°Ô Çϸé ÈÀÏÀ» Áö¿ìÁö ¾ÊÀ»±îÀ̰ÍÀº MS-DOG º¸´Ù Linux ¿¡¼ Ä¡¸íÀûÀÌ´Ù. Win95¸¦ Æ÷ÇÔÇÑ MS-DOG´Â ÀϹÝÀûÀ¸·Î »èÁ¦µÈ ÈÀÏÀÌ »ó´çÈ÷ ¿Ïº®ÇÏ°Ô º¹±¸µÈ´Ù -- ½ÉÁö¾î ÀÌ ¿î¿µ üÁ¦´Â º¹±¸°úÁ¤ ´ëºÎºÐÀÌ ÀÚµ¿ÈµÈ À¯Æ¿¸®°¡ ÀÖ´Ù. Linux ¿¡¼ ÀÌ·± °æ¿ì´Â ÀÖÀ» ¼ö ¾ø´Ù. ±×·¯¹Ç·Î ´ç½ÅÀÌ ±â¾ïÇØ¾ß ÇÒ ÃÖ°íÀÇ ¹ýÄ¢À̸ç Á¦ÀÏÀÇ ¹ýÄ¢Àº : ¾î¶² ÀÏÀÌ À־ *** ¹é¾÷À» ÇÏ´Â °ÍÀÌ´Ù *** ÀÌ°Ô ¸»Çϱâ´Â ÁÁÀº °ÍÀÎ ÁÙ ¾È´Ù. ´ÜÁö ³ª´Â ¸ðµç ¸®´ª½º »ç¿ëÀÚµéÀÌ ³ª°¡¼ À¯¿ëÇÑ ¹é¾÷ ÀåÄ¡¸¦ ±¸ÀÔÇϰí ÀûÀýÇÑ ¹é¾÷ °èȹÀ» ¼¼¿ö ¹é¾÷¿¡ Ãæ½ÇÇ϶ó´Â °ÍÀ» ±ÇÇÑ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº Frisch(1995)¸¦ Âü°íÇØ¶ó. ¹é¾÷ÀÌ ¾ÊµÇ¸é ¾î¶»°Ô ÇÒ °ÍÀΰ¡? Áß¿ä ÈÀÏÀÇ permissionsÀ» 440À̳ª ±×º¸´Ù Àû°Ô µÖ¶ó: ¸¸¾à ÀÚ½ÅÀÌ accessÇϱ⠰źÎÇÑ´Ù¸é 'rm'Àº Áö¿ì±â Àü¿¡ È®½ÇÇÑ È®ÀÎÀÌ ÇÊ¿äÇÏ´Ù. (±×·¯³ª ³ª´Â 'rm -r'·Î µð·ºÅ丮 »èÁ¦½Ã ¿ì¼± ÇÁ·Î±×·¥À» Áß´ÜÇϰí È®ÀÎÇÑ ´ÙÀ½ 'rm -rf' ¸í·ÉÀ» Àç½ÇÇà ÇÒ °ÍÀ» ¹ß°ßÇß´Ù) ¼±ÅÃµÈ ÈÀÏÀ» À§ÇÑ ÁÁÀº ¹æ¹ýÀº ¼ûÀº µð·ºÅ丮 ¾È¿¡ ÇÏµå ¸µÅ©¸¦ ¸¸µå´Â °ÍÀÌ´Ù. ¾ðÁ¨°¡ ³ª´Â /etc/passwd ¸¦ »ç°í·Î ÀÎÇØ ¹Ýº¹ÀûÀ¸·Î Áö¿ì°í ±×°Í ¶§¹®¿¡ ½Ã½ºÅÛÀÇ ¹ÝÀ» ³¯¸° sysadmin ¿¡ ´ëÇÑ À̾߱⸦ µéÀº ÀûÀÌ ÀÖ´Ù. À̸¦ °íÄ¡´Â °ÍÀº ·çÆ®¿¡¼ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
# mkdir /.backup
# ln /etc/passwd /.backup
¿Ïº®È÷ Á¢±ÙÇØ¼ ÈÀÏÀ» Áö¿ì´Â °ÍÀº »ç½Ç»ó ¸¹Àº ³ë·ÂÀÌ ÇÊ¿äÇÏ´Ù. ¸¸¾à ´ÙÀ½°ú °°ÀÌ Çϰí
# rm /etc/passwd
±×¸®°í ³ª¼
# ln /.backup/passwd /etc
ÀÌ·¸°Ô Çϸé À§¿¡¼ Áö¿ü´ø °ÍÀÌ º¹±¸µÉ °ÍÀÌ´Ù. ¹°·Ð À̰ÍÀº ÈÀÏ¿¡
µ¤¾î¾²±â¸¦ ÇßÀ»¶§´Â ¼Ò¿ëÀÌ ¾ø´Ù.±×·¯¹Ç·Î ¾Æ¹«Æ° ¹é¾÷À» ÇØ¾ß ÇÑ´Ù.
¸î¸î »ç¶÷µéÀº ÀÏ¸í ½©À̳ª ÇÔ¼ö¿¡¼ 'rm'À» 'rm -i'·Î ¸¸µé°ÍÀ»
ÁÖÀåÇÑ´Ù.('rm -i'´Â ¸ðµç »èÁ¦ÇÒ ÈÀÏ È®ÀÎÇØ ¹¯´Â °ÍÀÌ´Ù)
°³ÀÎÀûÀ¸·Î ³ª´Â ¼ÒÇÁÆ®¿þ¾î´Â ºÎÁÖÀÇ ÇÏ°Ô ¿î¿µÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù ¶ó´Â
ÀÔÀå¿¡ ÀÖÁö ¾Ê¾Æ¼ ±×·¸°Ô ÇÏÁö ¾Ê´Â´Ù.
¶ÇÇÑ ¸ÓÁö ¾Ê¾Æ¼³ª ³ªÁßÀ̳ª, ´ç½ÅÀÌ ÇÑ»ç¶÷¸¸ÀÇ ¸ðµå¸¦ ¿î¿µÇϰÇ, ´Ù¸¥ ½©À» »ç¿ëÇÏ°Ç È¤Àº ´Ù¸¥ ±â°è¸¦ »ç¿ëÇ졂 ¾îµð¼³ª ´ç½ÅÀÇ 'rm' ÇÔ¼ö´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÌ ¹®Á¦Á¡ÀÌ´Ù. ¸¸¾à ÈÀÏ »èÁ¦½Ã ÀÏÀÏÈ÷ È®ÀÎÇØ ¹°¾îÁֱ⸦ ¹Ù¶õ´Ù¸éÀº »èÁ¦ ÈÀÏÀÌ ³Ê¹« ¸¹¾Æ¼ ÁöÁ¤ÇÒ ¼ö ¾ø°í ¾îµð¿¡ ÀÖ´ÂÁö Àر⠽±´Ù. 'rm' ¸í·ÉÀÇ ¾î¶°ÇÑ º¯Çü ¾øÀÌ »ç¿ëÇÏ´Â °ÍÀ» Á¦¿ÜÇÑ Á»´õ ³ªÀº ÇØ°áÃ¥Àº Àç»ý °¡´ÉÇÑ »èÁ¦ ÆäŰÁö¸¦ »ç¿ëÇϱ⠽ÃÀÛÇÏ´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ °ÍÀº Peek, et al(1993)À» Âü°íÇ϶ó. 3. ¾ó¸¶ ¸¸ÅÀÇ º¹±¸¸¦ ±â´ëÇÒ ¼ö ÀÖÀ»±î?±×°Ç ³ª¸§´ë·ÎÀÌ´Ù. Linux¿Í °°Àº High-quality, Multi-tasking, Mult-user ¿¡¼ ÈÀÏ º¹±¸½Ã ¹®Á¦´Â ¾ðÁ¦ ´©°¡ µð½ºÅ©¿¡ ±â·ÏÇϱ⸦ ¿øÇÏ´ÂÁö ¸ð¸£´Â °ÍÀ̶ó´Âµ¥ ÀÖ´Ù. ±×·¡¼ ¿î¿µÃ¼Á¦¿¡¼ ÈÀÏ »èÁ¦¸¦ ¸í·É½Ã, ÀÌ´Â ÈÀÏÀÌ »õÈÀÏÀÇ Àå¼Ò ÇÒ´çÀ» ¿øÇÒ¶§ °øÆòÇϰԲû ºí·°ÀÌ »ç¿ë µÈ´Ù°í °¡Á¤ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ÄÄÇ»ÅÍ »ç¿ëÀÚ°¡ ¸¹¾ÆÁú¼ö·Ï ¼º°øÀûÀ¸·Î ÈÀÏÀ» º¹±¸ÇÒ ¼ö ÀÖ´Â °¡´É¼ºÀº Àû¾îÁø´Ù. ¶ÇÇÑ µð½ºÅ© ÆÄ¼ÕÀº ÈÀÏ º¹±¸¸¦ ¿ëÀÌÇÏ°Ô ÇÏ´Â È¿°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù. ¸¸¾à ÆÄƼ¼ÇÀ» Æ÷ÇÔÇØ ÈÀÏÀÌ Áö¿öÁø °Å¶ó¸é ³Ê¹« ÆÄ¼ÕµÈ °ÍÀÌ¿©¼ ¸ðµç ÈÀÏÀ» Àд °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÏ´Ù. ¸¸ÀÏ ÄÄÇ»ÅͰ¡ ÀÚ½ÅÀÇ °Í°ú °°ÀÌ ½ÇÁ¦·Î sing-user workstation À̶ó¸é Ä¡¸íÀûÀÎ »èÁ¦°¡ ¾Æ´Ò½Ã »ó´çÈ÷ ³ôÀº ºñÀ²ÀÇ º¹±¸¸¦ ±â´ëÇÑ´Ù. ³ª´Â ¼Õ»óµÇÁö ¾ÊÀº ¹ÙÀ̳ʸ® ÈÀÏÀÇ °ÅÀÇ 94%¸¦ ȸº¹ ½ÃŲ´Ù. ´ç½ÅÀÌ 80%³ª ±× ÀÌ»óÀ» °¡Áö°í ÀÖ´Ù¸é Àڽſ¡°Ô ²Ï ±â»ÝÀ» ´À³¥ °ÍÀÌ´Ù. 4. ±×·³ ÈÀÏÀ» ¾î¶»°Ô º¹±¸ ½ÃŰ³ª?´ëüÀûÀ¸·Î ÈÀÏ º¹±¸ ÀýÂ÷´Â raw partition device ¿¡¼ µ¥ÀÌŸ¸¦ ¹ß°ßÇØ ±×°ÍÀ» ´Ù½Ã º¼¼ö ÀÖ°Ô ÇØ¼ ¿î¿µÃ¼Á¦·Î °¡Á®°¡´Â °ÍÀ» ÀǹÌÇÑ´Ù. À̰ÍÀ» Çϴµ¥¿¡´Â ±âº»ÀûÀ¸·Î µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù : Çϳª´Â »èÁ¦µÈ inodes°¡ °¡Áö°í ÀÖ´Â 'deleted' flag ¸¦ Á¸ÀçÇÏ´Â ÈÀÏ ½Ã½ºÅÛÀ¸·Î º¯°æÇØ ±× ÀÚ·áµéÀÌ ±âÀûÀûÀ¸·Î ±×°÷¿¡ ¿À±æ ¹Ù¶ó´Â °ÍÀÌ´Ù. ¼Óµµ´Â ´ÊÁö¸¸ ¾ÈÀüÇÑ ´Ù¸¥ ¹æ¹ýÀº ÆÄƼ¼Ç¿¡ ÀÖ´Â ÀÚ·áµéÀ» °èȹÀ» ¼¼¿ö »õ·Î¿î ÈÀÏ¿¡ ¿Å°Ü ¾²´Â °ÍÀÌ´Ù. 4Àå 6Àå¿¡ °ÉÃÄ ÀÚ·á º¹±¸¸¦ ½ÃÀÛÇϱâ Àü¿¡ ÀÌÇØÇØ¾ß ÇÒ ´Ü°èµéÀ» »ó¼¼È÷ ¼³¸íÇßÀ¸¸ç 7Àå 10Àå¿¡ °ÉÃļ´Â ÈÀÏ º¹±¸¹ýÀ» ¼³¸íÇÏ¿´´Ù. 5. Unmounting the Filesystem¾î¶°ÇÑ ¹æ¹ýÀ» ¼±ÅÃÇÏ´ÂÁö¿¡ °ü°è ¾øÀÌ º¹±¸ÀÇ Ã¹Â° ´Ü°è´Â »èÁ¦µÈ ÈÀÏÀ» Æ÷ÇÔÇÑ ÈÀÏ ½Ã½ºÅÛÀ» unmount ÇÏ´Â °ÍÀÌ´Ù. mountµÈ ÈÀÏ ½Ã½ºÅÛ¿¡¼ ¾Æ¸¶µµ ½Ç¼öÇÒ °ÍÀÌ Æ²¸² ¾ø´Ù´Â ¾î¶² ÁÖÀåµµ °ÇÏ°Ô ºÎÀÎÇÑ´Ù. ÀÌ ´Ü°è´Â ÈÀÏÀÌ »èÁ¦µÈ°É ¾È ÈÄ¿¡ °¡´ÉÇÑÇÑ »¡¸® ¼öÇàµÇ¾î¾ß ÇÑ´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ´ÙÀ½°ú °°ÀÌ ÇÏ´Â °ÍÀÌ´Ù: Áö¿öÁø ÈÀÏÀÌ /usr partition ¿¡ ÀÖ´Ù °¡Á¤Çϰí
# umount /usr
±×·¯³ª /usr ¿¡ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀ» µÎ±æ ¿øÇÒ¼öµµ ÀÖÀ¸¹Ç·Î À̰ÍÀ»
read-only·Î remount ÇÑ´Ù:
# mount -o ro,remount /usr
¸¸¾à root ¿¡¼ ÈÀÏÀ» Áö¿ü´Ù¸é /etc/mtab ¿¡ ¾²¿©Áö´Â °ÍÀ¸·ÎºÎÅÍ
mount¸¦ ¸·±âÀ§ÇØ '-n' option À» Ãß°¡ÇØ¾ß ÇÑ´Ù.
# mount -n -o ro,remount /
ÀÌ ¸ðµç °ÍÀ» °³ÀÇÄ¡ ¾ÊÀº filesystemÀ» »ç¿ëÇÑ ´Ù¸¥ °úÁ¤ÀÌ °¡´ÉÇÏ´Ù.
(ÀÌ´Â 'Resource busy' °°Àº ¿¡·¯ ¸Þ¼¼Áö·Î unmount ½ÇÆÐ¸¦ ÃÊ·¡ÇÑ´Ù)
À̰ÍÀº ÁÖ¿öÁø ÈÀÏÀ̳ª mount point¸¦ »ç¿ëÇÑ ¾î¶² °úÁ¤¿¡°Ô¶óµµ ½ÅÈ£¸¦
º¸³»´Â ÇÁ·Î±×·¥ÀÌ´Ù: 'fuser'.
/usr partition ¿¡ ´ÙÀ½°ú °°ÀÌ ÇØº¸ÀÚ.
# fuser -v -m /usr
À̰ÍÀº ±× °úÁ¤¿¡ °ü·ÃµÈ °ÍÀ» ±â·ÏÇÑ´Ù. ±×°Íµé ¸ðµÎ Áß¿äÇÏÁö ¾Ê´Ù°í
°¡Á¤ÇÏ°í ´ÙÀ½°ú °°ÀÌ ¸í·ÉÇØ SIGKILL °¢°¢ÀÇ °úÁ¤À» º¸³½´Ù.
# fuser -k -v -m /usr
ȤÀº ¿¹¸¦ µé¾î
# fuser -k -TERM -v -m /usr
°¢°¢ SIGTERM À» ÁØ´Ù.
6. Á÷Á¢ÀûÀ¸·Î inodes ¸¦ ¹Ù²Ü Áغñ¸¦ ÇÑ´Ù.³ªÀÇ Ãæ°í´Â ÀÌ ¹æ¹ýÀ» ¾²Áö ¸»´Â °ÍÀÌ´Ù.. ³ª´Â Á¤¸» ÀÌ ÀÏÀ» Çϱ⿡ ¼öÁØÀÌ ³·Àº ÈÀÏ ½Ã½ºÅÛ¿¡¼ ÀÛµ¿ÇÏ´Â °ÍÀ» Çö¸íÇÏ´Ù°í »ý°¢ÇÏÁö ¾Ê´Â´Ù. ¶ÇÇÑ ÀÌ´Â ¹Ì´þ°Ôµµ ´ÜÁö °¢ ÈÀÏÀÇ Ã¹¹øÂ° 12 blocks¸¸ º¹±¸ÇÒ ¼ö ÀÖ´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù. ±×·¯¹Ç·Î ±ä ÈÀÏÀ» º¹±¸ ÇÒ·Á¸é ¾Æ¹«Æ° ´Ù¸¥ ¹æ¹ýÀ» ã¾Æ¾ß ÇÒ °ÍÀÌ´Ù. (11ÀåÀ» ºÁµµ ºÎ°¡ÀûÀÎ Á¤º¸ÀÌ´Ù.) ¿©·¯ºÐÀÌ ÀÌ ¹æ¹ýÀ¸·Î ²À ÇØ¾ß¸¸ ÇÑ´Ù°í ´À³¤´Ù¸é raw ÆÄƼ¼Ç ÀڷḦ ´Ù¸¥ ÆÄƼ¼Ç¿¡ º¹»çÇÑ ´ÙÀ½ À̰ÍÀ» loopback ¸¦ »ç¿ëÇØ mount ÇØ¶ó.
# cp /dev/hda5 /root/working
# mount -t ext2 -o loop /root/working /mnt
±×·¯³ª À̰ÍÀº 'mount'ÀÇ ÃֽйöÁ¯ÀÌ ÇÊ¿äÇÏ´Ù.
ÈÀÏ ½Ã½ºÅÛÀ» ¿ÏÀüÈ÷ ÆÄ±«ÇßÀ»¶§ loopback À» »ç¿ëÇÑ´Ù´Â Àǹ̴ ¸ðµÎ
raw ÆÄƼ¼ÇÀ» º¹»çÇØ¼ ´Ù½Ã ½ÃÀÛÇØ¾ß¸¸ ÇÑ´Ù´Â °ÍÀÌ´Ù.
7. ´Ù¸¥°÷¿¡ ÀڷḦ ¾µ(write) Áغñ¸¦ ÇÑ´Ù.¿©·¯ºÐÀº ¾îµò°¡¿¡ ÀÖ´Â ±¸ÃâµÈ ÆÄƼ¼ÇÀ» È®½ÇÇÏ°Ô ¸¸µé Çʿ䰡 ÀÖ´Ù. À߸¸µÇ¸é ´ç½Å ½Ã½ºÅÛÀº ¾Æ¸¶ root, /usr, /home ¿¡ ¸î°³ÀÇ ÆÄƼ¼ÇÀ» °¡Áö°í ÀÖ´Ù. À̵éÁß °í¸£¸é ¾Æ¹« ¹®Á¦µµ ¾øÀ» °ÍÀÌ´Ù: ´ÜÁö ÀÌÁß Çϳª¿¡ »õ·Î¿î µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù. ¿ÀÁ÷ root ¸¸ °¡Áö°í ÀÖ°í root¿¡´Ù°¡ ¸ðµç°ÍÀ» ÀúÀå Çß´Ù¸é Á»´õ ´Ù·ç±â Èûµé °ÍÀÌ´Ù. ´ç½ÅÀº MS-DOG ³ª Windows ÆÄƼ¼ÇÀ» °¡Áö°í ÀÖ°í ±×°ÍÀ» »ç¿ëÇϴ°¡? ȤÀº Ä¿³Î¿¡ ¸ðµâó·³ ramdisk µå¶óÀ̹ö¸¦ °¡Áö°í Àִ°¡? Ä¿³ÎÀÌ 1.3.48 ÀÌ»óÀ̸é ramdisk ¸¦ »ç¿ëÇØ¼ ´ÙÀ½°ú °°ÀÌ ÇØ¶ó.
# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
# mke2fs -v -m 0 /dev/ram0 2048
# mount -t ext2 /dev/ram0 /mnt
À̰ÍÀº 2MB ÀÇ ramdisk volume À» ¸¸µé°í À̸¦ /mnt¿¡ mount ÇÏ´Â °ÍÀÌ´Ù.
°æ°í: ¸¸¾à 'kerneld'¸¦ automatically load and unload kernel
modules·Î »ç¿ëÇÑ´Ù¸é À̰ÍÀ¸·ÎºÎÅÍ ¾î¶² ÈÀϵµ º¹»çÇϱâ Àü±îÁö´Â
ºñÈֹ߼º ±â¾ïÀåÄ¡ À§¿¡ ramdisk ¸¦ unmount ÇÏÁö ¸»¾Æ¶ó. Çѹø À̰ÍÀ»
unmount Çϸé 'knrneld'´Â À̰ÍÀº ¸ðµâÀ» unload ÇÒ¼ö ÀÖ´Ù°í °¡Á¤Çϸç,
ÀÌÀÏÀÌ ÀϾ¸é ¸Þ¸ð¸®´Â Ä¿³ÎÀÇ ´Ù¸¥ ºÎºÐ¿¡¼ ´Ù½Ã »ç¿ëµÇ°í, ÀڷḦ
º¹±¸ ÇÏ´À¶ó °É¸° ¸ðµç Èû°Ü¿î ½Ã°£µéÀ» ÀÒ¾î¹ö¸®°Ô µÇ´Â °ÍÀÌ´Ù.
¸¸¾à ¾î¶² »õ·Î¿î superfioopy removable device ¸¦ °¡Áö°í ÀÖ´Ù¸é ±× ¹æ¹ýµéÀº ÆÄƼ¼ÇÀ» º¹±¸Çϴµ¥ ÁÁÀº ¼±ÅÃÀÌ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´ç½ÅÀº Ç÷ÎÇÇ¿¡ ³¡±îÁö Ãæ½ÇÇØ¾ß ÇÑ´Ù. ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ ´Ù¸¥ ÇѰ¡Áö´Â ÆÄƼ¼Ç deviceÀÇ Áß¾ÓÀ¸·Î ºÎÅÍ ÇÊ¿äÇÑ ÀڷḦ ÀÐÀ» ¼ö ÀÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. °ï°æ¿¡ óÇßÀ»¶§ 'dd'´Â ±× ÀÏÀ» ÇÒ °ÍÀÌÁö¸¸, 600MB ÆÄƼ¼ÇÀ» 800MB ÆÄƼ¼ÇÀ¸·Î Àоîµé¿© ¸í·É Çϰí, 'dd'´Â Àб⸦ °íÁýÇÏÁö¸¸ óÀ½ 600MB´Â ¹«½ÃÇÑ´Ù.ÀÌ´Â ½Ã°£ÀÌ ¸¹ÀÌ °É¸°´Ù. ¹æ¹ýÀº ÆÄƼ¼Ç Áß¾ÓÀ» ãÀ» ÇÁ·Î±×·¥À» ±â·ÏÇÏ´Â °ÍÀÌ´Ù. À̸¦ 'fsgrab'¶ó ºÎ¸£´Âµ¥ uuencoded, gizpped tar file ¿¡¼ »ç¿ë¹ý, ¼³Ä¡¹ý, ÀúÀÛ±Ç ¸Þ¼¼Áö¿Í ÇÔ²² ±¸ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀ¸·Î À̸¦ °Ë»öÇØ º¸ÀÚ :
$ uuencoded < Ext2fs-Undeldtion-mini-HOWTO
$ gzip -dc fsgrab.tar.gz | tar xf -
begin 644 fsgrab.tar.gz
,
end
ÀÌ ÇÁ·Î±×·¥ÀÌ ¿Ïº®ÇÏ°Ô ÀÛµ¿µÇ´õ¶óµµ ¾î¶»°Ô À̸¦ ¼öÇàÇÏ´ÂÁö´Â
Ã¥ÀÓÁú ¼ö ¾ø´Ù´Â Á¡À» °æ°íÇÑ´Ù. warranty ¿¡¼ ºÎÁ·ÇÑ ºÎºÐÀÇ »ó¼¼ÇÑ
°ÍÀº GNU General Public Licence¸¦ Æ÷ÇÔÇÑ 'COPYING' ÈÀÏÀÇ
'No warranty' ¼½¼ÇÀ» ºÁ¶ó.
8. »èÁ¦µÈ inodes ¸¦ ã´Â´Ù.´ÙÀ½ ´Ü°è´Â ÃÖ±Ù inodes°¡ ÀÚÀ¯·Ó°Ô µÈ ÈÀÏ ½Ã½ºÅÛÀ» ¹¯´Â °ÍÀÌ´Ù. ÀÌ ÀÏÀº 'debugfs'¿Í °°ÀÌ ÇØ¾ß ÇÏ´Â ÀÏÀÌ´Ù. ÈÀÏ ½Ã½ºÅÛÀÌ ÀúÀåµÈ device¿¡ À̸§À» ÁÖ°í 'debugfs'¸¦ ½ÃÀÛÇÏÀÚ:
# debugfs /dev/hda5
inodes¸¦ Á÷Á¢ÀûÀ¸·Î º¯°æÇÏ·Á¸é ±â·Ï °¡´ÉÇÑ ÈÀÏ ½Ã½ºÅÛ¿¡ '-w' ¿É¼ÇÀ»
Ãß°¡ÇÑ´Ù:
# debugfs -w /dev/hda5
»èÁ¦µÈ inodes ¸¦ ã´Â 'debugfs' ¸í·ÉÀº 'lsdel' ÀÌ´Ù.
ÀÚ, ´ÙÀ½ ¸í·ÉÀ» ÇÁ·ÒÇÁÆ®¿¡ ½áº¸ÀÚ.
debugfs: lsdel
µð½ºÅ©°¡ µ¹¾Æ°¡´Â ¼Ò¸®°¡ ³ ÈÄ ±æ´Ù¶õ ¸ñ·ÏÀÌ ¿øÇÏ´Â °÷À¸·Î ¿î¹ÝµÈ´Ù.
±×·¯¸é À̰ÍÀ» ¾îµò°¡¿¡ º¹»çÇØ ÀúÀåÇϱ⸦ ¿øÇÒ °ÍÀÌ´Ù. 'less' ¿É¼ÇÀ»
°¡Áö°í ÀÖ´Ù¸é '-o' ¿É¼ÇÀ» Ãâ·Â ÈÀÏ À̸§¿¡ ºÙÈú ¼ö ÀÖ´Ù.
±×·¸Áö ¾ÊÀ¸¸é ±× Ãâ·ÂÀ» º¸³¾ °÷À» Á¤ÇØ¾ß ÇÑ´Ù.
debugfs: quit
# echo lsdel | debugfs /dev/hda5 > lsdel.out
ÀÚ, »èÁ¦µÈ ½Ã°£, Å©±â, ÇüÅÂ, ÆÛ¹Ì¼Ç ¼ýÀÚ, ¼ÒÀ¯ÀÚ µîµî¿¡ ±Ù°Å¸¦ µÎ°í
¿øÇÏ´Â Áö¿öÁø inodes ¸¦ »ý°¢ÇØ ³»¾ß¸¸ ÇÑ´Ù. ¿îÁÁÀ¸¸é »èÁ¦µÈ inode °¡
Ä¿´Ù¶õ ¹«¸®À̰í 5ºÐÀü¿¡ »èÁ¦µÈ °ÍÀ̹ǷΠ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
±×·¸Áö ¾ÊÀ¸¸é ¼¼¼¼ÇÑ ¸ñ·ÏÀ» ÅëÇØ trawl ÇÑ´Ù.
°¡´ÉÇÏ´Ù¸é ³ª´Â º¹±¸Çϱ⸦ ¿øÇÏ´Â inodes ¸¦ ÇÁ¸°Æ® Çϱæ Á¦¾ÈÇÑ´Ù.
ÀÌ´Â À§ÀÇ °ÍÀ» ´õ¿í ½±°Ô ¸¸µé °ÍÀÌ´Ù.
9. inodes ÀÇ ¼¼ºÎ °úÁ¤À» ¾ò´Â´Ù.Debugfs ¿¡´Â inodeÀÇ ¼¼ºÎ»çÇ×À» Ãâ·ÂÇÏ´Â 'stat'¸í·ÉÀÌ ÀÖ´Ù. ÀÌ´Â º¹±¸ ¸ñ·Ï¿¡ ÀÖ´Â °¢ inode ¸¦ ¹ßÇàÇÑ´Ù. ¿¹¸¦µé¾î ÀÚÁÖ »ç¿ëÇÏ´Â inode ¹øÈ£°¡ 148003 À̶ó¸é ´ÙÀ½°ú °°ÀÌ ÇØº¸ÀÚ.
debugfs: stat <148003>
Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 503 Group: 100 Size: 6065
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 12
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6
º¹±¸ÇÒ ÈÀÏÀÌ ¸¹´Ù¸é À§ÀÇ °ÍÀÌ ÀÚµ¿ÀûÀ¸·Î µÇ±æ ¹Ù¶ö °ÍÀÌ´Ù. º¹±¸ÇÒ inodes 'lsdel' ¸ñ·ÏÀÌ 'list'¿¡ ÀÖ´Ù °¡Á¤ÇÏ°í ´ÙÀ½°ú °°ÀÌ ÇØº¸ÀÚ. # cut -c1-6 list | grep "[0-9]" | tr -d " " > inodes ÀÌ ÈÀÏÀÇ 'inodes'¸¦ ³ªÁß¿¡ Æí¸®ÇÏ°Ô ÇϱâÀ§ÇØ º¹±¸ÇÒ inodesÀÇ ¹øÈ£¸¦ ÁÙ¸¶´Ù Çϳª¾¿ Æ÷ÇÔÇØ ÀúÀåÇß¾ú´Ù. ±×¸®°í ³ª¼ ´ÙÀ½°ú °°ÀÌ ÇØº¸ÀÚ. # sed 's/^.*$/stat <\0>/' inodes | debugfs /dev/hda5 > stats ¿©±â¼ 'stats'´Â ¸ðµç 'stat' ¸í·ÉÀÇ Ãâ·ÂÀ» Æ÷ÇÔÇÑ´Ù. 10. µ¥ÀÌÅÍ ºí·°À» º¹±¸ÇÑ´Ù.º¹±¸ÇÒ ÈÀÏÀÌ 12 ºí·°º¸´Ù ±æÁö ¾Ê´Ù¸é ÀÌ ¸ðµç ÀÚ·áÀÇ ºí·° ¹øÈ£´Â inode ¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ÀÌ´Â 'stat' ¸í·ÉÀ¸·Î Áï½Ã inode ¸¦ Ãâ·ÂÇØ ÀÐÀ» ¼ö ÀÖÁö¸¸, 'fsgrab'¸¦ »ç¿ëÇÏ¸é ´õ ½±°Ô ÇÒ¼ö ÀÖ´Ù. 8Àå¿¡¼ ºÃ´ø ¿¹¸¦ ´Ù½Ã º¸ÀÚ.
debugfs: stat <148003>
Inode: 148003 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 503 Group: 100 Size: 6065
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 12
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 1996
atime: 0x31a21dd1 -- Tue May 21 20:47:29 1996
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 1996
dtime: 0x31a9a574 -- Mon May 27 13:52:04 1996
BLOCKS:
594810 594811 594814 594815 594816 594817
TOTAL: 6
ÀÌ ÈÀÏÀº 6°³ ºí·°À» °¡Áö°í ÀÖ´Ù. 'recoverde.001' À̶ó´Â »õÈÀÏ¿¡ Á¤È®È÷ ±â·ÏÇϱâ À§ÇØ ´ÙÀ½°ú °°ÀÌ ÇØº¸ÀÚ. # fsgrab -c 2 -s 594810 /dev/hda5 > recovered.001 # fsgrab -c 4 -s 594817 /dev/hda5 >> recovered.001 ³¡ºÎºÐÀÇ 'recovered.001'´Â ÇÊ¿ä ¾øÀ» ¼öµµ ÀÖÁö¸¸ º°·Î Áß¿äÄ¡ ¾Ê´Ù. ¹°·Ð Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ °ü·ÃµÈ ºí·°µéÀÌ µ¤¿© ¾²¿´À» °¡´É¼ºµµ ÀÖ´Ù. ¸¸¾à ±×·¸´Ù¸é ¿îÀÌ ¾ø´Â °ÍÀÌ´Ï ±× ºí·°¿¡ ´ëÇØ¼± ÀØ¾î ¹ö·Á¶ó. ¹®Á¦´Â ÈÀÏÀÌ 12 ºí·°º¸´Ù ±æ¶§ ³ªÅ¸³´Ù. À̶§´Â À¯´Ð½º ÈÀϽýºÅÛ¿¡ ´ëÇØ ¾à°£Àº ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ÈÀÏÀÇ ÀÚ·á´Â 'block' À̶ó ºÒ¸®´Â ÁýÇÕü¿¡ ÀúÀåµÈ´Ù. ±×¸®°í ÀÌ ºí·°µéÀº ¼øÂ÷ÀûÀ¸·Î ¹øÈ£°¡ ¸Å°ÜÁ® ÀÖ´Ù. ¶ÇÇÑ ÈÀÏ¿¡´Â ¼ÒÀ¯ÀÚ, ÆÛ¹Ì¼Ç, Á¾·ùµîÀÇ Á¤º¸°¡ º¸°üµÇ¾î ÀÖ´Â 'inode' ¶ó´Â °ÍÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ºí·°°ú inode´Â ¼øÂ÷ÀûÀ¸·Î ¹øÈ£°¡ ¸Å°ÜÁ® ÀÖ°í ´Ù¸¥ ¼ø¼¸¦ °®´Â´Ù. ±×¸®°í µð·ºÅ丮´Â ÈÀÏ À̸§°ú inode ¹øÈ£·Î ±¸¼º µÈ´Ù. ÆÛ¹Ì¼Ç Á¤º¸ µîµî°ú ¸¶Âù°¡Áö·Î inode ¶ÇÇÑ ÈÀÏ µ¥ÀÌÅÍÀÇ À§Ä¡¸¦ º¸À¯ÇÑ´Ù. óÀ½ 12 µ¥ÀÌÅÍ ºí·°Àº inode ±× ÀÚü¿¡ ÀúÀåµÇ´Âµ¥ À̸¦ direct blocks¶ó ÇÑ´Ù. ±×·¯°í ³ª¸é inode ´Â 'indirect blocks'À» Æ÷ÇÔ Çϴµ¥ ¿©±â¼ ºí·°Àº ºÎ°¡ÀûÀÎ direct blocks ¹øÈ£¸¦ Æ÷ÇÔÇÑ´Ù. ¶ÇÇÑ inode´Â indirect blocks ¹øÈ£ ¸ñ·ÏÀ» Æ÷ÇÔÇÑ µÎ¹èÀÇ indirect blocks ¹øÈ£¸¦ °¡Áö°í, ¶Ç À̸¦ Æ÷ÇÔÇÑ ¸ñ·ÏÀ» °¡Áø ¼¼¹èÀÇ indirect blocksÀ» °¡Áø´Ù. ´Ù½Ã ÀоÀÚ : ÀÌ´Â º¹ÀâÇÏÁö¸¸ Áß¿äÇÏ´Ù. ÀÚ, ºÒÇàÇϰԵµ ÃÖ±ÙÀÇ Ä¿³Î ¼öÇàÀº ÈÀÏ deletionÀÇ ¸ðµç indirect blocks ÀÌ 0ÀÌ´Ù.±×·¡¼ 12ºí·° º¸´Ù ±ä ÈÀÏÀ̶ó¸é ÇÊ¿äÇÑ ¸ðµç ºí·°ÀÇ ¹øÈ£¸¦ ¹ß°ßÇÒ ¼ö ÀÖ´Ù´Â°Í Á¶Â÷ º¸ÁõÇÒ ¼ö ¾ø´Ù. ±×·¯ÇÑ °ÍÀ» ¾Ë¾Æ³¾ À¯ÀÏÇÑ ¹æ¹ýÀº ±× ÈÀϵéÀÌ Á¶°¢³ªÁö ¾Ê¾Ò´Ù°í °¡Á¤ ÇÏ´Â °ÍÀÌ´Ù. ¸¸¾à »ê»ê Á¶°¢ÀÌ ³µ´Ù¸é ¹®Á¦°¡ ÀÖ´Ù. ÈÀÏ¿¡ indirect block ÀÌ ÇÊ¿äÇÏ´Ù¸é Á¶°¢³ªÁö ¾ÊÀº °ÍµéÀº ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³´Ù.
#Blocks Contents
12 Data (direct blocks)
1 Indirect block
256 Data (blocks in the indirect block)
1 Doubly indirect block
[1 Indirect block of the doubly indirect block
256 Data
] (256 times -- one for each indirect block in the doubly indirect)
1 Triply indirect block
[[1 Doubly indirect block
256 Data
] (256 times -- one for each indirect block in the doubly indirect
block of the triply indirect block)
] (256 times -- one for each doubly indirect block in the triply
indirect block)
À§ÀÇ °ÍÀÌ ¸íÈ®Çϱ⸦ ¹Ù¶õ´Ù. ÈÀÏÀÌ ´ÜÁö 268 ºí·° »ÓÀ̶ó¸é ÀÌ´Â ÀüÀûÀ¸·Î °¡´ÉÇÏ´Ù. À̵éÀº 12ºí·° µ¥ÀÌÅÍÀ̰í (ÀÌ ¹øÈ£´Â inode ÀÚü¿¡ ³ªÅ¸³´Ù) indirect block À» µû¸£¸ç ´Ù¸¥ 256 Á¦ÀÌÅÍ ºí·°À» µû¸¥´Ù. ¸¸¾à ÈÀÏÀÌ À§ÀÇ °Íº¸´Ù ±æ´Ù¸é µÎ¹èÀÇ indirect block À» Ãß°¡ÇÑ´Ù. ±× ÀÌÈÄ °¢°¢ÀÇ ºÎ°¡ÀûÀÎ 256 µ¥ÀÌÅÍ ºí·°¿¡´Ù ÇϳªÀÇ indirect block °ú 256 µ¥ÀÌÅÍ ºí·°À» Ãß°¡Çϴµ¥ ÃÖ´ë°¡ 256 ÀÌ´Ù. À̺¸´Ù ÈÀÏÀÌ ´õ ±æ´Ù¸é Á¶°¢³ª ÀÖÁö ¾ÊÀ» °¡´É¼ºÀº °ÅÀÇ ¾øÁö¸¸ ´õ ±ä ÈÀÏ¿¡ ±× Á¶Á÷ÀÌ À̾îÁ® ³ªÅ¸³¯ ¼öµµ ÀÖ´Ù. ¿©·¯ºÐÀÇ ºí·° Å©±â´Â ¸ðµÎ 1024 bytes À̰í À̴ ǥÁذªÀÌ´Ù. ºí·°ÀÌ À̺¸´Ù Å©´Ù¸é ¾à°£ÀÇ ¹øÈ£µéÀÌ ¹Ù²î¾î ³ªÅ¸³´Ù. Ưº°È÷: °¢ ºí·° ¹øÈ£°¡ 4 bytes µô´Ù¸é blocksize/4 ´Â °¢°¢ÀÇ indirect block ¿¡ ÀúÀåµÇ´Â ºí·° ¹øÈ£ÀÌ´Ù. ±×·¡¼ ¸Å¹ø ¸ñÂ÷¿¡ ³ªÅ¸³ª´Â 256 À̶ó´Â ¹øÈ£¸¦ blocksize/4 ·Î ¹Ù²Ù´Â °ÍÀÌ´Ù. 11. inodes ¸¦ Á÷Á¢ º¯°æÇÑ´Ù.ÀÌ ¹æ¹ýÀº °Ñº¸±â¿¡ ´õ ½¬¿ö º¸ÀÌÁö¸¸ 12 ºí·° º¸´Ù ±æ¶§¿Í ¸Â¸ÔÀ» ¼ö ¾ø´Ù. º¹±¸¸¦ ¿øÇÏ´Â °¢°¢ÀÇ inode ¿¡ ¹Ýµå½Ã »ç¿ë¹ýÀ» Çϳª·Î ÇØ¾ßÇϰí deletion ½Ã°£À» 0À¸·Î ÇØ¾ßÇÑ´Ù. ÀÌ ÀÛ¾÷Àº ' degugfs' ¸í·ÉÁß 'mi' ¿¡ ÀÇÇØ ÀÌ·ç¾îÁø´Ù. inode 14800 3À¸·ÎºÎÅÍ ¾à°£ÀÇ ¿¹¸¦ Ãâ·ÂÇØ º¸ÀÚ.
debugfs: mi <148003>
Mode [0100644]
User ID [503]
Group ID [100]
Size [6065]
Creation time [833201524]
Modification time [832708049]
Access time [826012887]
Deletion time [833201524] 0
Link count [0] 1
Block count [12]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
Direct Block #1 [594811]
Direct Block #2 [594814]
Direct Block #3 [594815]
Direct Block #4 [594816]
Direct Block #5 [594817]
Direct Block #6 [0]
Direct Block #7 [0]
Direct Block #8 [0]
Direct Block #9 [0]
Direct Block #10 [0]
Direct Block #11 [0]
Indirect Block [0]
Double Indirect Block [0]
Triple Indirect Block [0]
À§ÀǰÍÀº deletion ½Ã°£À» 0À¸·Î ÇÏ°í ¸µÅ©¸¦ 1·Î ¸ÂÃç °¢°¢ ´Ù¸¥ °÷¿¡¼ ¾ÐÃàÇØ µÇµ¹¸° °ÍÀÌ´Ù. ¼³·É À̰ÍÀÌ ¾î¸®¼®°Ô º¸ÀÏ Áö¶óµµ ¸¹Àº ÈÀÏÀ» º¹±¸ÇØ¾ß ÇÑ´Ù¸é ÀÌ ¹æ¹ýÀ¸·Î ´ëóÇÒ ¼ö ÀÖ´Ù. [ ±×·±µ¥ : 'mi' Ãâ·ÂÀÌ inode¿¡ ÀÖ´Â 'Creation time'¿¡ °ü·ÃµÇ¾î ÀÖ´Ù´Â °Ç °ÅÁþ¸»ÀÌ´Ù. »ç½Ç ÈÀÏÀÌ ¸¸µé¾îÁú ¶§´Â À¯´Ð½º ÈÀÏ ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌÄ¥ ¼ö ¾ø´Ù. 'st_ctime' 'struct stat'±¸¼ºÀº 'inode change time'¿¡ °ü·ÃµÇ¾î ÀÖ´Ù. ÀÌ´Â inode ¼¼ºÎ»çÇ×ÀÌ ¹Ù²î´Â ¸¶Áö¸· ½ÃÁ¡¿¡¼ÀÌ´Ù. ] º¯°æµÈ inodes°¡ ÀÖ´Ù¸é 'debugfs' ¿¡¼ ¹þ¾î³ª ¸í·ÉÇÒ ¼ö ÀÖ´Ù. # e2fsck -f /dev/hda5 ¿©·¯ºÐÀº µµ¿òµÇ´Â Ãâ·Â°ú ¾à°£ÀÇ Áú¹®À» ¹ÞÀ» °ÍÀÌ´Ù. 'summary information' °ú º¯°æÇÑ inodes¿¡ °üÇÑ ¸ðµç Àß¹®¿¡ 'Yes'¶ó°í ÇØ¶ó. ¸ðµç Áú¹®¿¡ 'Yes'¶ó ´äÇÏ´Â °ÍÀº ÁÁÀº ¹æ¹ýÀÌ´Ù. 'e2fsck'°¡ ³¡³ª¸é ÈÀÏ ½Ã½ºÅÛÀ» remount ÇÒ ¼ö ÀÖ´Ù. »èÁ¦µÈ ÈÀÏÀº ÈÀÏ ½Ã½ºÅÛÀÇ /lost+found µð·ºÅ丮¿¡ ÀÚ¸®Çϰí ÀÖ´Ù. (ÆÄƼ¼ÇÀÌ /usr ¿¡ mount µÆ´Ù¸é /usr/lost+found ¸¦ ºÁ¶ó) ±×°ÍµéÀº inode ¹øÈ£¿¡ µû¶ó À̸§ÀÌ ºÒ·ÁÁø´Ù. ¿©·¯ºÐÀÌ °è¼Ó ÇØ¾ß ÇÒ °ÍÀº ±× ÈÀϵéÀÇ ³»¿ë¿¡ ¾Ë¸Â°Ô À̸§À» »ý°¢ÇØ ³»´Â °ÍÀ̸ç, ±×°ÍµéÀ» ÈÀÏ ½Ã½ºÅÛ ±¸Á¶¿¡ ¾Ë¸Â´Â °÷À¸·Î µÇµ¹¸®´Â ÀÏÀÌ´Ù. »ç½Ç Àú°ÍµéÀº 'e2fsck'·Î ÈÀÏÀ» /lost+found ·Î º¸³»´Â °ÍÁß ÇϳªÀÌ´Ù. ¿©·¯ºÐÀº inode ¿¡´Ù ÈÀÏ ½Ã½ºÅÛ¿¡¼ ¸µÅ©¸¦ ¸¸µå´Âµ¥ 'debugfs'¸¦ »ç¿ë ÇÒ ¼ö ÀÖ´Ù. 'debugfs' 'link' ¸í·ÉÀº inode ¸¦ º¯°æÇÑ ÈÄ »ç¿ëÇØ¶ó. debugfs: link <148003> foo.txt À§ÀÇ ¿¹´Â 'debugfs' °¡ ÃÖ±ÙÀÇ µð·ºÅ丮¶ó »ý°¢ÇÏ´Â °÷¿¡´Ù°¡ 'foo.txt' ¶ó´Â ÈÀÏÀ» ¸¸µå´Â °ÍÀ̸ç 'foo.txt' ´Â ´ç½ÅÀÇ ÈÀÏÀÌ µÉ °ÍÀÌ´Ù. 'e2fsck' ¸í·ÉÀº 'summary information' µîµîÀ» °íÄ¥¶§±îÁö °è¼Ó »ç¿ëÇÒ Çʿ伺ÀÌ ÀÖ´Ù. 12. ÀÌ·±°ÍÀº ³ªÁß¿¡´Â ´õ ½±°Ô ¾òÀ» ¼ö ÀÖÀ»±î?±×·¸´Ù. »ç½Ç ³ À̰ÍÀÌ ¹ú½á ÀÖ´Ù°í ¹Ï´Â´Ù. 2.1.X ½Ã¸®Áî¿¡ ÀÖ´Â ÃÖ±Ù Ä¿³ÎÀº indirect blocks À» 0À¸·Î ÇÏÁö ¾Ê´Â´Ù°í µé¾ú´Ù. indirect blocks ÀÌ »èÁ¦½Ã ÇÇÇØ¸¦ ÀÔÁö ¾Ê°í ³²¾Æ ÀÖ´Â ¶Ç ´Ù¸¥ 2.0.X Ä¿³Î Á¦Ç°À» Á¦ÀÛ ÇÑ´Ù´Â ¾ê±â°¡ ³ª¿À±â ½ÃÀÛÇÑ °ÍÀÌ 1996³â 12¿ùÀÌ´Ù. ¸®´©½º¿Í ´Ù¸¥ Ä¿³Î ÇØÄ¿µéÀº ÀÌ ÇѰ踦 ±Øº¹Çß°í, ¼ÕÀ¸·Î inode ¸¦ º¯°æÇÏ´Â ³ªÀÇ ¹æ¹ý¿¡´Â ¸¹Àº °áÇÔÀÌ ³ªÅ¸³¯ °ÍÀÌ´Ù. 13. ÀÌ °úÁ¤ÀÌ ÀÚµ¿ÀûÀ¸·Î µÇ´Â µµ±¸°¡ ÀÖ´Â °÷Àº?ÀÌ ÀÏÀÌ ÀÏ¾î³´Ù¸é ¹Ù·Î ±×°÷¿¡ ÀÖ´Ù. ºÒÇàÈ÷ ±×°÷¿¡µµ inode º¯°æ ±â¼ú ¸Þ´º¾ó°ú °°Àº ¹®Á¦Á¡ÀÌ ÀÖÀ¸¸®¶ó »ý°¢ÇÑ´Ù : indirect blocks Àº º¹±¸°¡ ºÒ°¡´ÉÇÏ´Ù. ±×·¯³ª ÀÌ´Â ¸ÓÁö¾Ê¾Æ ´õÀÌ»ó ¹®Á¦°¡ µÇÁö ¾ÊÀ» °ÍÀ̸ç, Áö±Ý ÀÌ·¯ÇÑ ÇÁ·Î±×·¥ÀÌ ³ª¿Ã °¡´É¼ºÀÌ ÀÖ´Ù°í º»´Ù. ´©±º°¡°¡ net ¿¡¼ Scott D. Heavner ÀÇ 'lde' ¸¦ ¾ð±ÞÇß¾ú´Ù. ¼ÖÁ÷È÷ ³ª´Â À̰ÍÀ» ÀÚµ¿ÀûÀ¸·Î ÈÀÏÀÌ º¹±¸µÇ´Â µµ±¸·Î º¸Áö ¾Ê´Â´Ù. ÀÌ´Â 'debugfs' ·Î ȸéÀ» °¡µæ ä¿ì±â´Â ÇÏÁö¸¸, È®½ÇÇÑ ÈÀÏÀÇ Á¾·ù¸¦ Á¤¹Ð °Ë»çÇÏ´Â ´É·Â°ú °°Àº Ư¡À» °¡Áö°í ÀÖ´Ù. ¶ÇÇÑ À̰ÍÀº xia¿Í minix ÈÀÏ ½Ã½ºÅÛ°ú ÇÔ²² ÀÛ¾÷À» Çϴµ¥ ÀÌ·¯ÇÑ ÀÌÀ¯µé·Î ´ç½Ã¿¡ À̰ÍÀ» Àß ÆÈ¸®°Ô ÇÑ°Í °°´Ù. URL : sunsite.unc.edu/pub/Linux/system/Filesystems/lde-2.2.tar.gz ½ÇÁ¦·Î ÀÛ¾÷Àº GNU Midnight Commander,`mc' ó·³ µé¸°´Ù. ÀÌ´Â full-screen ÈÀÏ Á¶Á¤ µµ±¸À̸ç, 'NC'¶ó ¾Ë·ÁÁ® ÀÖ´Â MS-DOG full-screen ÈÀÏ Á¶Á¤ µµ±¸ÀÎ AFAIK¿¡ ±Ù°Å¸¦ µÐ °ÍÀÌ´Ù. 'mc'´Â ¸®´ª½º Äְܼú xterm ¿¡¼ ¸¶¿ì½º¸¦ Áö¿øÇϸç tarfile¿¡ 'cd'ing ÇÏ´Â °Í°ú ¸¶Âù°¡Áö·Î ½ÇÁúÀûÀÎ ÈÀÏ ½Ã½ºÅÛÀ» Á¦°øÇÑ´Ù. ÀÌµé ½ÇÁúÀû ÈÀÏ ½Ã½ºÅÛÀº ext2 undeletion ÀÌ´Ù. À̰ÍÀº ¸Å¿ì ¹ø°Å·Ó°Ô µé¸®°í ³» ÀÚ½ÅÀÌ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ¾ø´Ù ¿©°Ü ³ ¿À·¡µÈ ½© ¸í·ÉÀ» ¿ÀÈ÷·Á ÁÁ¾ÆÇÑ´Ù. ºÐ¸íÈ÷ Çϳª´Â `--with-ext2undel' ¿É¼ÇÀ¸·Î ÇÁ·Î±×·¥À» ¹è¿ÇÑ´Ù. ¶ÇÇÑ ¶óÀ̺귯¸®¿Í 'e2fsprogs' ÆÐŰÁö¿Í ¿À´Â ÈÀÏÀ» Æ÷ÇÔÇÑ ¹ßÀüÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ³ª´Â ÀÏ´Ü `cd undel:/dev/hda5' ¶ó ºÎ¸¦¼ö ÀÖ´Â ¸¸µé¾îÁø ÇÁ·Î±×·¥À» ¼öÁýÇϰí, »èÁ¦µÈ ÈÀÏÀÇ `directory listing' À» ÃëÇß´Ù. °¡Àå ¸¶Áö¸· ¹öÁ¯Àº ¾Æ¸¶ 3.2.11 ÀÌ´Ù. Ä¿³Î ÀÚü¿Í ¸¶Âù°¡Áö·Î °³¹ß¹öÁ¯Àº ÇØÄ¿°¡ ¾Æ´Ñ »ç¶÷¿¡°Ô ±ÇÇÏÁö ¾Ê´Â´Ù. À̰ÍÀº URLs·Î ºÎÅÍ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. sunsite.unc.edu/pub/Linux/utils/file/managers/ (may be an older version) ftp.nuclecu.unam.mx/linux/local/ ftp.nuclecu.unam.mx/linux/local/devel/ (unsupported, developmental, alpha versions) ftp.cvut.cz/pub/mc/ (European mirror of public and alpha releases) À¥ »çÀÌÆ®´Â ´ÙÀ½°ú °°´Ù stekt.oulu.fi/~jtklehto/mc/ 14. ³¡
A. Colophon
============
I intend to produce regular updates to this document as long as I have both
time and something interesting to say. This means that I am eager to hear
comments from readers. Could my writing be clearer?. Can you think of
something that would make matters easier? Is there some new tool that does
it all automatically? Who *did* kill JFK?
Whatever. If you have something to say, about this document or any other
subject, drop me a line on <<url url="mailto:aaronc@pobox.com" name="aaronc@pobox.com">>.
B. Credits
===========
"If I have seen farther than others, it is because I was standing
on the shoulders of giants."
-- Isaac Newton
Much of this mini-Howto was derived from a posting in comp.os.linux.misc by
Robin Glover <<url url="swrglovr@met.rdg.ac.uk" name="swrglovr@met.rdg.ac.uk">>. I would like to thank Robin for
graciously allowing me to rework his ideas into this mini-Howto.
C. Bibliography
================
Frisch, ?een (1995), `Essential System Administration', second edition,
O'Reilly and Associates, Inc., ISBN: 1-56592-127-5.
Glover, Robin (31 Jan 1996), `HOW-TO : undelete linux files
(ext2fs/debugfs)', comp.os.linux.misc Usenet posting.
Peek, Jerry, Tim O'Reilly, Mike Loukides et al (1993), `Unix Power Tools',
O'Reilly and Associates, Inc./Random House, Inc., ISBN: 0-679-79073-X.
D. Legalities
==============
MS-DOG and Windoze are not trademarks. Any resemblance these names may
bear to those of any commercial software products is entirely coincidental.
Unix is not a trademark, and has not been for quite some time now. Wake up
and smell the flowers!
The trademark status of the name `Linux' is currently being contested by
lawyers, as a certain Walter R. Della Croce has made an apparently false
trademark registration for the term. I however refuse to acknowledge the
name as anything other than public property of all net.citizens. If Linus
had wanted a trademark on the name, he'd have taken one out himself.
This document is Copyright ?1997 Aaron Crane <<url url="aaronc@pobox.com" name="aaronc@pobox.com">>. It may
be freely redistributed in its entirety, including the whole of this
copyright notice, but may not changed without permission from the author or
from the Linux Documentation Project Co-ordinator. Dispensation is granted
for copying small verbatim portions for the purposes of reviews or for
quoting: in these circumstances, sections may be reproduced in the presence
of an appropriate citation but without this copyright notice.
The author requests but does not require that parties intending to sell
copies of this document, whether on computer-readable media or on paper,
inform him or the Linux HOWTO Co-ordinator of their intentions.
The Linux HOWTO Co-ordinator is Greg Hankins <<url url="gregh@sunsite.unc.edu" name="gregh@sunsite.unc.edu">>.
»þ·Ð¹Ú(pey1)
|
Someone is speaking well of you. |











