BBSˮľÇ廪վ¡Ã¾«»ªÇø

·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: Linux        
±ê  Ìâ: linux bible µÚ¾ÅÕ Îļþϵͳ 
·¢ÐÅÕ¾: BBS Ë®Ä¾Ç廪վ (Mon Oct 25 17:56:05 1999) 
 
·¢ÐÅÈË: coolzhang (coolzhang), ÐÅÇø: UNIX 
±ê  Ìâ: linux bible µÚ¾ÅÕ Îļþϵͳ 
·¢ÐÅÕ¾: Î人°×ÔÆ»Æº×Õ¾ (Mon Oct 25 16:34:06 1999), Õ¾ÄÚÐżþ 
 
µÚ¾ÅÕ Îļþϵͳ 
 
 
±¾ÕÂÖ÷ÒªÃèÐðLinuxºËÐĶÔÎļþϵͳµÄÖ§³Ö,ÐéÄâÎļþϵͳ£¨VFS£©ÒÔ 
¼°LinuxºËÐĶÔʵ¼ÊÎļþϵͳµÄÖ§³Ö¡£ 
 
LinuxµÄ×îÖØÒªÌØÕ÷Ö®Ò»¾ÍÊÇÖ§³Ö¶àÖÖÎļþϵͳ¡£ÕâÑùËü¸ü¼ÓÁé»î²¢ 
¿ÉÒÔºÍÐí¶àÆäËüÖÖ²Ù×÷ϵͳ¹²´æ¡£ÔÚ±¾ÎÄд×÷ʱLinuxÒѾ­Ö§³Ö15ÖÖ 
Îļþϵͳ£ºext,ext2,xia,minix,umsdos,msdos,vfat,proc,smb,ncp, 
iso9660,sysv,hpfs,affsÒÔ¼°ufs¡£ºÁÎÞÒÉÎÊ,½ñºóÖ§³ÖµÄÎļþϵͳÀà 
ÐÍ»¹½«Ôö¼Ó¡£ 
 
LinuxºÍUnix²¢²»Ê¹ÓÃÉ豸±êÖ¾·û£¨ÈçÉ豸ºÅ»òÇý¶¯Æ÷Ãû³Æ£©À´·ÃÎʶÀ 
Á¢Îļþϵͳ£¬¶øÊÇͨ¹ýÒ»¸ö½«Õû¸öÎļþϵͳ±íʾ³Éµ¥Ò»ÊµÌåµÄ²ã´ÎÊ÷ 
½á¹¹À´·ÃÎÊËü¡£Linuxÿ°²×°(mount)Ò»¸öÎļþϵͳʱ¶¼»áÆä¼ÓÈëµ½ÎÄ 
¼þϵͳ²ã´ÎÊ÷ÖС£²»¹ÜÊÇÎļþϵͳÊôÓÚʲôÀàÐÍ£¬¶¼±»Á¬½Óµ½Ò»¸öÄ¿ 
¼ÉÏÇÒ´ËÎļþϵͳÉϵÄÎļþ½«È¡´ú´ËĿ¼ÖÐÒÑ´æÔÚµÄÎļþ¡£Õâ¸öĿ¼ 
±»³ÆÎª°²×°µã»òÕß°²×°Ä¿Â¼¡£µ±Ð¶ÔØ´ËÎļþϵͳʱÕâ¸ö°²×°Ä¿Â¼ÖÐÔ­ 
ÓеÄÎļþ½«ÔٴγöÏÖ¡£ 
 
µ±´ÅÅ̳õʼ»¯Ê±£¨Ê¹ÓÃfdisk£©£¬´ÅÅÌÖн«Ìí¼ÓÒ»¸öÃèÐðÎïÀí´ÅÅÌÂß¼­ 
¹¹³ÉµÄ·ÖÇø½á¹¹¡£Ã¿¸ö·ÖÇø¿ÉÒÔÓµÓÐÒ»¸ö¶ÀÁ¢ÎļþϵͳÈçEXT2¡£Îļþ 
ϵͳ½«Îļþ×éÖ¯³É°üº¬Ä¿Â¼£¬ÈíÁ¬½ÓµÈ´æÔÚÓÚÎïÀí¿éÉ豸ÖеÄÂß¼­²ã 
´Î½á¹¹¡£°üº¬ÎļþϵͳµÄÉ豸½Ð¿éÉ豸¡£LinuxÎļþϵͳÈÏΪÕâЩ¿éÉè 
±¸ÊǼòµ¥µÄÏßÐԿ鼯ºÏ£¬Ëü²¢²»¹ØÐÄ»òÀí½âµ×²ãµÄÎïÀí´ÅÅ̽ṹ¡£Õâ¸ö 
¹¤×÷ÓÉ¿éÉ豸Çý¶¯À´Íê³É£¬ÓÉËü½«¶Ôij¸öÌØ¶¨¿éµÄÇëÇóÓ³Éäµ½ÕýÈ·µÄ 
É豸ÉÏÈ¥£»´Ë¿éËùÔÚÓ²Å̵ĶÔÓ¦´ÅµÀ¡¢ÉÈÇø¼°ÖùÃæÊý¶¼±»±£´æÆðÀ´¡£²» 
¹ÜÄĸöÉ豸³ÖÓÐÕâ¸ö¿é£¬Îļþϵͳ¶¼±ØÐëʹÓÃÏàͬµÄ·½Ê½À´Ñ°ÕÒ²¢²Ù×Ý 
´Ë¿é¡£LinuxÎļþϵͳ²»¹Ü£¨ÖÁÉÙ¶ÔϵͳÓû§À´Ëµ£©ÏµÍ³ÖÐÓÐÄÄЩ²»Í¬ 
µÄ¿ØÖÆÆ÷¿ØÖÆ×ÅÄÄЩ²»Í¬µÄÎïÀí½éÖÊÇÒÕâЩÎïÀí½éÖÊÉÏÓм¸¸ö²»Í¬µÄÎÄ 
¼þϵͳ¡£ÎļþϵͳÉõÖÁ»¹¿ÉÒÔ²»ÔÚ±¾µØÏµÍ³¶øÔÚͨ¹ýÍøÂçÁ¬½ÓµÄÔ¶³ÌÓ² 
ÅÌÉÏ¡£ÉèÓÐÒ»¸ö¸ùĿ¼ÄÚÈÝÈçϵÄSCSIÓ²ÅÌ£º 
 
A         E         boot      etc       lib       opt       tmp       usr 
C         F         cdrom     fd        proc      root      var       sbin 
D         bin       dev       home      mnt       lost+found 
 
´Ëʱ²»¹ÜÊÇÓû§»¹ÊdzÌÐò¶¼ÎÞÐèÖªµÀËûÃÇÏÖÔÚ²Ù×ݵÄÕâЩÎļþÖеÄ/Cʵ 
¼ÊÉÏÊÇλÓÚϵͳµÚÒ»¸öIDEÓ²ÅÌÉϲ¢ÒѰ²×°VFATÎļþϵͳ¡£ÔÚ´ËÀýÖÐ/E±í 
ʾϵͳÖеڶþ¸öIDE¿ØÖÆÆ÷ÉϵÄÖ÷IDEÓ²ÅÌ¡£ÖÁÓÚµÚÒ»¸öIDE¿ØÖÆÆ÷ÊÇPCI 
¿ØÖÆÆ÷ºÍµÚ¶þ¸öÔòÊÇ¿ØÖÆIDE CDROMµÄISA¿ØÖÆÆ÷Î޹ؽôÒª¡£µ±Ê¹ÓÃmodem 
ͨ¹ýPPPÍøÂçЭÒéÀ´²¦ÈëÍøÂçʱ,¿ÉÒÔ½«Alpha AXP LinuxÎļþϵͳ°²×°µ½ 
/mnt/remoteĿ¼Ï¡£ 
 
ÎļþϵͳÖеÄÎļþÊÇÊý¾ÝµÄ¼¯ºÏ£»°üº¬±¾ÕÂÄÚÈݵÄÎļþÊÇÒ»¸öÃû½Ð 
filesystems.texµÄASCIIÎļþ¡£Îļþϵͳ²»½ö°üº¬×ÅÎļþÖеÄÊý¾Ý¶øÇÒ»¹ 
ÓÐÎļþϵͳµÄ½á¹¹¡£ËùÓÐLinuxÓû§ºÍ³ÌÐò¿´µ½µÄÎļþ¡¢Ä¿Â¼¡¢ÈíÁ¬½Ó¼° 
Îļþ±£»¤ÐÅÏ¢µÈ¶¼´æ´¢ÔÚÆäÖС£´ËÍâÎļþϵͳÖбØÐë°üº¬°²È«ÐÅÏ¢ÒÔ±ã 
±£³Ö²Ù×÷ϵͳµÄ»ù±¾ÍêÕûÐÔ¡£Ã»ÈËÔ¸ÒâʹÓÃÒ»¸ö¶¯²»¶¯¾Í¶ªÊ§Êý¾ÝºÍÎļþ 
µÄ²Ù×÷ϵͳ¡£ 
 
Linux×îÔçµÄÎļþϵͳÊÇMinix£¬ËüÊÜÏÞÉõ´óÇÒÐÔÄܵÍÏ¡£ÆäÎļþÃû×²» 
Äܳ¬¹ý14¸ö×Ö·û£¨ËäÈ»±È8.3ÎļþÃûÒªºÃ£©ÇÒ×î´óÎļþ´óСΪ64M×Ö½Ú¡£64M 
×Ö½Ú¿´ÉÏÈ¥ºÜ´ó,µ«Êµ¼ÊÉÏÒ»¸öÖеȵÄÊý¾Ý¿â½«³¬¹ýÕâ¸ö³ß´ç¡£µÚÒ»¸öר 
ÃÅΪLinuxÉè¼ÆµÄÎļþϵͳ±»³ÆÎªÀ©Õ¹Îļþϵͳ£¨Extended File System£© 
»òEXT¡£Ëü³öÏÖÓÚ1992ÄêËÄÔ£¬ËäÈ»Äܹ»½â¾öһЩÎÊÌ⵫ÐÔÄÜÒÀ¾É²»ºÃ¡£ 
1993ÄêÀ©Õ¹ÎļþϵͳµÚ¶þ°æ»òEXT2±»Éè¼Æ³öÀ´²¢Ìí¼Óµ½LinuxÖС£ËüÊDZ¾ 
Õ½«ÏêϸÌÖÂÛµÄÎļþϵͳ¡£ 
 
½«EXTÎļþϵͳÌí¼ÓÈëLinux²úÉúÁËÖØ´óÓ°Ï졣ÿ¸öʵ¼ÊÎļþϵͳ´Ó²Ù×÷ϵ 
ͳºÍϵͳ·þÎñÖзÖÀë³öÀ´£¬ËüÃÇÖ®¼äͨ¹ýÒ»¸ö½Ó¿Ú²ã£ºÐéÄâÎļþϵͳ»òVFS 
À´Í¨Ñ¶¡£ 
 
VFSʹµÃLinux¿ÉÒÔÖ§³Ö¶à¸ö²»Í¬µÄÎļþϵͳ£¬Ã¿¸ö±íʾһ¸öVFSµÄͨÓýӿڡ£ 
ÓÉÓÚÈí¼þ½«LinuxÎļþϵͳµÄËùÓÐϸ½Ú½øÐÐÁËת»»,ËùÒÔLinuxºËÐĵįäËü²¿ 
·Ö¼°ÏµÍ³ÖÐÔËÐеijÌÐò½«¿´µ½Í³Ò»µÄÎļþϵͳ¡£LinuxµÄÐéÄâÎļþϵͳÔÊÐí 
Óû§Í¬Ê±ÄÜ͸Ã÷µØ°²×°Ðí¶à²»Í¬µÄÎļþϵͳ¡£ 
 
ÐéÄâÎļþϵͳµÄÉè¼ÆÄ¿±êÊÇΪLinuxÓû§Ìṩ¿ìËÙÇÒ¸ßЧµÄÎļþ·ÃÎÊ·þÎñ¡£ 
ͬʱËü±ØÐë±£Ö¤Îļþ¼°ÆäÊý¾ÝµÄÕýÈ·ÐÔ¡£ÕâÁ½¸öÄ¿±êÏ໥¼ä¿ÉÄÜ´æÔÚ³åÍ»¡£ 
µ±°²×°Ò»¸öÎļþϵͳ²¢Ê¹ÓÃʱ,Linux VFSΪÆä»º´æÏà¹ØÐÅÏ¢¡£´Ë»º´æÖÐÊý 
¾ÝÔÚ´´½¨¡¢Ð´ÈëºÍɾ³ýÎļþÓëĿ¼ʱÈç¹û±»Ð޸ģ¬Ôò±ØÐë½÷É÷µØ¸üÐÂÎļþ 
ϵͳÖжÔÓ¦ÄÚÈÝ¡£Èç¹ûÄܹ»ÔÚÔËÐкËÐÄÄÚ¿´µ½ÎļþϵͳµÄÊý¾Ý½á¹¹,ÄÇô 
¾Í¿ÉÒÔ¿´µ½ÄÇЩÕý±»Îļþϵͳ¶ÁдµÄÊý¾Ý¿é¡£ÃèÐðÎļþÓëĿ¼µÄÊý¾Ý½á¹¹ 
±»²»¶ÏµÄ´´½¨Óëɾ³ý¶øÉ豸Çý¶¯½«²»Í£µØ¶ÁÈ¡ÓëдÈëÊý¾Ý¡£ÕâЩ»º´æÖÐ×î 
ÖØÒªµÄÊÇBuffer Cache£¬Ëü±»¼¯³Éµ½¶ÀÁ¢Îļþϵͳ·ÃÎʵײã¿éÉ豸µÄÀý³Ì 
ÖС£µ±½øÐÐ¿é´æÈ¡Ê±Êý¾Ý¿éÊ×ÏȽ«±»·ÅÈëBuffer CacheÀï²¢¸ù¾ÝÆä״̬±£ 
´æÔÚ¸÷¸ö¶ÓÁÐÖС£´ËBuffer Cache²»½ö»º´æÊý¾Ý¶øÇÒ°ïÖú¹ÜÀí¿éÉ豸Çý¶¯ 
ÖеÄÒì²½½Ó¿Ú¡£ 
 
9.1  µÚ¶þ´úÀ©Õ¹Îļþϵͳ£¨EXT2£© 
 
 
µÚ¶þ´úÀ©Õ¹ÎļþϵͳÓÉRey 
CardÉè¼Æ£¬ÆäÄ¿±êÊÇΪLinuxÌṩһ¸öÇ¿´óµÄ¿ÉÀ©Õ¹Îļþϵͳ¡£ËüͬʱҲ 
ÊÇLinux½çÖÐÉè¼Æ×î³É¹¦µÄÎļþϵͳ¡£ 
 
ÏóºÜ¶àÎļþϵͳһÑù,EXT2½¨Á¢ÔÚÊý¾Ý±»±£´æÔÚÊý¾Ý¿éÖеÄÎļþÄÚÕâ¸öǰ 
ÌáÏ¡£ÕâЩÊý¾Ý¿é³¤¶ÈÏàµÈÇÒÕâ¸ö³¤¶È¿ÉÒԱ仯£¬Ä³¸öEXT2ÎļþϵͳµÄ¿é 
´óСÔÚ´´½¨£¨Ê¹ÓÃmke2fs£©Ê±ÉèÖá£Ã¿¸öÎļþµÄ´óСºÍ¸ÕºÃ´óÓÚËüµÄ¿é´ó 
СÕýÊý±¶ÏàµÈ¡£Èç¹û¿é´óСΪ1024×Ö½Ú¶øÒ»¸ö1025×Ö½Ú³¤µÄÎļþ½«Õ¼¾ÝÁ½ 
¸ö1024×Ö½Ú´óСµÄ¿é¡£ÕâÑùÄã²»µÃ²»À˷Ѳ¶àÒ»°ãµÄ¿Õ¼ä¡£ÎÒÃÇͨ³£Ðè 
ÒªÔÚCPUµÄÄÚ´æÀûÓÃÂʺʹÅÅ̿ռäʹÓÃÉϽøÐÐÕÛÖС£¶ø´ó¶àÊý²Ù×÷ϵͳ£¬°ü 
À¨LinuxÔÚÄÚ£¬ÎªÁ˼õÉÙCPUµÄ¹¤×÷¸ºÔضø±»ÆÈÑ¡ÔñÏà¶Ô½ÏµÍµÄ´ÅÅ̿ռäÀû 
ÓÃÂÊ¡£²¢²»ÊÇÎļþÖÐÿ¸ö¿é¶¼°üº¬Êý¾Ý£¬ÆäÖÐÓÐЩ¿é±»ÓÃÀ´°üº¬ÃèÐð´ËÎÄ 
¼þϵͳ½á¹¹µÄÐÅÏ¢¡£EXT2ͨ¹ýÒ»¸öinode½á¹¹À´ÃèÐðÎļþϵͳÖÐÎļþ²¢È·¶¨ 
´ËÎļþϵͳµÄÍØÆË½á¹¹¡£inode½á¹¹ÃèÐðÎļþÖÐÊý¾ÝÕ¼¾ÝÄĸö¿éÒÔ¼°ÎļþµÄ 
´æÈ¡È¨ÏÞ¡¢ÎļþÐÞ¸Äʱ¼ä¼°ÎļþÀàÐÍ¡£EXT2ÎļþϵͳÖеÄÿ¸öÎļþÓÃÒ»¸ö 
inodeÀ´±íʾÇÒÿ¸öinodeÓÐΨһµÄ±àºÅ¡£ÎļþϵͳÖÐËùÓеÄinode¶¼±»±£´æ 
ÔÚinode±íÖС£EXT2Ŀ¼½öÊÇÒ»¸ö°üº¬Ö¸ÏòÆäĿ¼Èë¿ÚÖ¸ÕëµÄÌØÊâÎļþ 
£¨Ò²ÓÃinode±íʾ£©¡£ 
 
Õ¼ÓÃһϵÁÐÊý¾Ý¿éµÄEXT2ÎļþϵͳµÄ²¼¾Ö¡£¶ÔÎļþϵͳ¶øÑÔÎļþ½öÊÇÒ» 
ϵÁпɶÁдµÄÊý¾Ý¿é¡£Îļþϵͳ²¢²»ÐèÒªÁ˽âÊý¾Ý¿éÓ¦¸Ã·ÅÖõ½ÎïÀí½éÖÊ 
ÉÏʲôλÖã¬ÕâЩ¶¼ÊÇÉ豸Çý¶¯µÄÈÎÎñ¡£ÎÞÂÛºÎʱֻҪÎļþϵͳÐèÒª´Ó°ü 
º¬ËüµÄ¿éÉ豸ÖжÁÈ¡ÐÅÏ¢»òÊý¾Ý£¬Ëü½«ÇëÇóµ×²ãµÄÉ豸Çý¶¯¶Áȡһ¸ö»ù±¾ 
¿é´óСÕûÊý±¶µÄÊý¾Ý¿é¡£EXT2Îļþϵͳ½«ËüËùʹÓõÄÂß¼­·ÖÇø»®·Ö³ÉÊý¾Ý 
¿é×顣ÿ¸öÊý¾Ý¿é×齫ÄÇЩ¶ÔÎļþϵͳÍêÕûÐÔ×îÖØÒªµÄÐÅÏ¢¸´ÖƳöÀ´,ͬʱ 
½«Êµ¼ÊÎļþºÍĿ¼¿´×÷ÐÅÏ¢ÓëÊý¾Ý¿é¡£ÎªÁË·¢ÉúÔÖÄÑÐÔʼþʱÎļþϵͳµÄ 
ÐÞ¸´£¬ÕâЩ¸´ÖƷdz£ÓбØÒª¡£ÒÔÏÂÒ»½Ú½«×ÅÖØÃèÐðÿ¸öÊý¾Ý¿é×éµÄÄÚÈÝ¡£ 
 
9.1.1  The EXT2 Inode 
 
ÔÚEXT2ÎļþϵͳÖÐinodeÊÇ»ù±¾¿é£»ÎļþϵͳÖеÄÿ¸öÎļþÓëĿ¼ÓÉΨһµÄ 
inodeÀ´ÃèÐð¡£Ã¿¸öÊý¾Ý¿é×éµÄEXT2inode±»±£´æÔÚinode±íÖÐ,ͬʱ»¹ÓÐÒ» 
¸öλͼ±»ÏµÍ³ÓÃÀ´¸ú×ÙÒÑ·ÖÅäºÍδ·ÖÅäµÄinode¡£ 
inodeµÄ¸ñʽ£¬Ëü°üº¬ÒÔϼ¸¸öÓò£º 
 
mode 
     Ëü°üº¬Á½ÀàÐÅÏ¢£»inodeÃèÐðµÄÄÚÈÝÒÔ¼°Óû§Ê¹ÓÃȨÏÞ¡£EXT2ÖеĠ
     inode¿ÉÒÔ±íʾһ¸öÎļþ¡¢Ä¿Â¼¡¢·ûºÅÁ¬½Ó¡¢¿éÉ豸¡¢×Ö·ûÉ豸»òFIFO¡£ 
Owner Information 
     ±íʾ´ËÎļþ»òĿ¼ËùÓÐÕßµÄÓû§ºÍ×é±êÖ¾·û¡£Îļþϵͳ¸ù¾ÝËü¿ÉÒÔ 
     ½øÐÐÕýÈ·µÄ´æÈ¡¡£ 
Size ÒÔ×Ö½Ú¼ÆËãµÄÎļþ³ß´ç¡£ 
Timestamps 
     inode´´½¨¼°×îºóÒ»´Î±»Ð޸ĵÄʱ¼ä¡£ 
Datablocks 
     Ö¸Ïò´ËinodeÃèÐðµÄ°üº¬Êý¾ÝµÄ¿éÖ¸Õ롣ǰ12¸öÖ¸ÕëÖ¸Ïò°üº¬ÓÉinode 
     ÃèÐðµÄÎïÀí¿é,×îºóÈý¸öÖ¸Õë°üº¬¶à¼¶¼ä½ÓÖ¸Õë¡£ÀýÈçÁ½¼¶¼ä½ÓÖ¸Õë 
     Ö¸ÏòÒ»¿éÖ¸Õ룬¶øÕâЩָÕëÓÖÖ¸ÏòһЩÊý¾Ý¿é¡£ÕâÒâζ×Å·ÃÎÊÎļþ³ß 
     ´çСÓÚ»òµÈÓÚ12¸öÊý¾Ý¿éµÄÎļþ½«±È·ÃÎÊ´óÎļþ¿ìµÃ¶à¡£ 
 
EXT2 inode»¹¿ÉÒÔÃèÐðÌØÊâÉ豸Îļþ¡£ËäÈ»ËüÃDz»ÊÇÕæÕýµÄÎļþ,µ«¿ÉÒÔͨ 
¹ýËüÃÇ·ÃÎÊÉ豸¡£ËùÓÐÄÇЩλÓÚ/devÖеÄÉ豸Îļþ¿ÉÓÃÀ´´æÈ¡LinuxÉ豸¡£ 
ÀýÈçmount³ÌÐò¿É°ÑÉ豸Îļþ×÷Ϊ²ÎÊý¡£ 
 
9.1.2  EXT2 ³¬¿é 
 
³¬¿éÖаüº¬ÁËÃèÐðÎļþϵͳ»ù±¾³ß´çºÍÐÎ̬µÄÐÅÏ¢¡£Îļþϵͳ¹ÜÀíÆ÷ÀûÓà
ËüÃÇÀ´Ê¹ÓúÍά»¤Îļþϵͳ¡£Í¨³£°²×°Îļþϵͳʱֻ¶ÁÈ¡Êý¾Ý¿é×é0Öеij¬ 
¿é£¬µ«ÊÇΪÁË·ÀÖ¹Îļþϵͳ±»ÆÆ»µ,ÿ¸öÊý¾Ý¿é×é¶¼°üº¬Á˸´ÖÆ¿½±´¡£³¬¿é 
°üº¬ÈçÏÂÐÅÏ¢£º 
 
Magic Number 
     Îļþϵͳ°²×°Èí¼þÓÃÀ´¼ìÑéÊÇ·ñÊÇÒ»¸öÕæÕýµÄEXT2Îļþϵͳ³¬¿é¡£µ± 
     Ç°EXT2°æ±¾ÖÐΪ0xEF53¡£ 
Revision Level 
     Õâ¸öÖ÷´ÓÐÞ¶©°æ±¾ºÅÈð²×°´úÂëÄÜÅжϴËÎļþϵͳÊÇ·ñÖ§³ÖÖ»´æÔÚÓÚ 
     Ä³¸öÌØ¶¨°æ±¾ÎļþϵͳÖеÄÊôÐÔ¡£Í¬Ê±Ëü»¹ÊÇÌØÐÔ¼æÈݱêÖ¾ÒÔ°ïÖú°² 
     ×°´úÂëÅжϴËÎļþϵͳµÄÐÂÌØÐÔÊÇ·ñ¿ÉÒÔ°²È«Ê¹Óᣠ
Mount Count and Maximum Mount Count 
     ÏµÍ³Ê¹ÓÃËüÃÇÀ´¾ö¶¨ÊÇ·ñÓ¦¶Ô´ËÎļþϵͳ½øÐÐÈ«Ãæ¼ì²é¡£Ã¿´ÎÎļþϵ 
     Í³°²×°Ê±´Ë°²×°¼ÇÊý½«µÝÔö£¬µ±ËüµÈÓÚ×î´ó°²×°¼ÇÊýʱϵͳ½«ÏÔʾһ 
     Ìõ¾¯¸æÐÅÏ¢¡°maxumal mount count reached, running e2fsck is recommended¡±¡£ 
Block Group Number 
     ³¬¿éµÄ¿½±´¡£ 
Block Size 
     ÒÔ×Ö½Ú¼ÇÊýµÄÎļþϵͳ¿é´óС£¬Èç1024×Ö½Ú¡£ 
Blocks per Group 
     Ã¿¸ö×éÖпéÊýÄ¿¡£µ±Îļþϵͳ´´½¨Ê±´Ë¿é´óС±»¹Ì¶¨ÏÂÀ´¡£ 
Free Blocks 
     ÎļþϵͳÖпÕÏпéÊý¡£ 
Free Inodes 
     ÎļþϵͳÖпÕÏÐInodeÊý¡£ 
First Inode 
     ÎļþϵͳÖеÚÒ»¸öinodeºÅ¡£EXT2¸ùÎļþϵͳÖеÚÒ»¸öinode½«ÊÇÖ¸ 
     Ïò'/'Ŀ¼µÄĿ¼Èë¿Ú¡£ 
 
9.1.3  EXT2 ×é±êÖ¾·û 
 
ÿ¸öÊý¾Ý¿é×é¶¼ÓµÓÐÒ»¸öÃèÐðËü½á¹¹¡£Ï󳬿éÒ»Ñù£¬ËùÓÐÊý¾Ý¿é×éÖеÄ×éÃè 
Ðð·û±»¸´ÖƵ½Ã¿¸öÊý¾Ý¿é×éÖÐÒÔ·ÀÎļþϵͳ±ÀÀ£¡£Ã¿¸ö×éÃèÐð·û°üº¬ÒÔÏÂÐÅÏ¢£º 
 
 
 
Blocks Bitmap 
     ¶ÔÓ¦´ËÊý¾Ý¿é×éµÄ¿é·ÖÅäλͼµÄ¿éºÅ¡£ÔÚ¿é·ÖÅäºÍ»ØÊÕʱʹÓᣠ
Inode Bitmap 
     ¶ÔÓ¦´ËÊý¾Ý¿é×éµÄinode·ÖÅäλͼµÄ¿éºÅ¡£ÔÚinode·ÖÅäºÍ»ØÊÕʱʹÓᣠ
Inode Table 
     ¶ÔÓ¦Êý¾Ý¿é×éµÄinode±íµÄÆðʼ¿éºÅ¡£Ã¿¸öinodeÓÃÏÂÃæµÄEXT2 
     inode½á¹¹À´±íʾ¡£ 
Free blocks count, Free Inodes count, Used directory count 
 
×éÃèÐð·û·ÅÖÃÔÚÒ»ÆðÐγÉÁË×éÃèÐð·û±í¡£Ã¿¸öÊý¾Ý¿é×éÔÚ³¬¿é¿½±´ºó°üº¬Õû 
¸ö×éÃèÐð·û±í¡£EXT2Îļþϵͳ½öʹÓõÚÒ»¸ö¿½±´£¨ÔÚÊý¾Ý¿é×é0ÖУ©¡£ÆäËü¿½ 
±´¶¼Ï󳬿鿽±´Ò»ÑùÓÃÀ´·ÀÖ¹Ö÷¿½±´±»ÆÆ»µ¡£ 
 
9.1.4  EXT2 Ä¿Â¼ 
 
 
ÔÚEXT2ÎļþϵͳÖÐĿ¼ÊÇÓÃÀ´´´½¨ºÍ°üº¬ÎļþϵͳÖÐÎļþ´æÈ¡Â·¾¶µÄÌØÊâÎļþ¡£ 
 
Ŀ¼ÎļþÊÇÒ»×éĿ¼Èë¿ÚµÄÁ´±í£¬ËüÃǰüº¬ÒÔÏÂÐÅÏ¢£º 
 
inode 
     ¶ÔӦÿ¸öĿ¼Èë¿ÚµÄinode¡£Ëü±»ÓÃÀ´Ë÷Òý´¢´æÔÚÊý¾Ý¿é×éµÄInode±íÖР
     µÄinodeÊý×é¡£ 
 
name length 
     ÒÔ×Ö½Ú¼ÇÊýµÄĿ¼Èë¿Ú³¤¶È¡£ 
name 
     Ä¿Â¼Èë¿ÚµÄÃû³Æ 
 
ÿ¸öĿ¼µÄǰÁ½¸öÈë¿Ú×ÜÊÇ"."ºÍ".."¡£ËüÃÇ·Ö±ð±íʾµ±Ç°Ä¿Â¼ºÍ¸¸Ä¿Â¼¡£ 
 
9.1.5  ÔÚEXT2ÎļþϵͳÖÐËÑѰÎļþ 
 
LinuxÎļþÃûµÄ¸ñʽÓëUnixÀàËÆ,ÊÇһϵÁÐÒÔ"/"¸ô¿ªµÄĿ¼Ãû²¢ÒÔÎļþÃû½áβ¡£ 
/home/rusling/.cshrcÖÐ/homeºÍ/rusling¶¼ÊÇĿ¼Ãû¶øÎļþÃûΪ.cshrc¡£Ïó 
UnixϵͳһÑù£¬Linux²¢²»¹ØÐÄÎļþÃû¸ñʽ±¾Éí£¬Ëü¿ÉÒÔÓÉÈÎÒâ¿É´òÓ¡×Ö·û×é 
³É¡£ÎªÁËѰÕÒEXT2ÎļþϵͳÖбíʾ´ËÎļþµÄinode£¬ÏµÍ³±ØÐ뽫ÎļþÃû´ÓĿ¼ 
ÃûÖзÖÀë³öÀ´¡£ 
 
ÎÒÃÇËùÐèÒªµÄµÚÒ»¸öinodeÊǸùÎļþϵͳµÄinode£¬Ëü±»´æ·ÅÔÚÎļþϵͳµÄ³¬ 
¿éÖС£Îª¶Áȡij¸öEXT2 inode,ÎÒÃDZØÐëÔÚÊʵ±Êý¾Ý¿é×éµÄinode±íÖнøÐÐËÑ 
Ѱ¡£Èç¹û¸ùinodeºÅΪ42ÔòÎÒÃÇÐèÒªÊý¾Ý¿é×é0 inode±íµÄµÚ42¸öinode¡£´Ë 
¸ùinode¶ÔÓ¦ÓÚÒ»¸öEXT2Ŀ¼£¬¼´¸ùinodeµÄmodeÓò½«ËüÃèÐð³ÉĿ¼ÇÒÆäÊý¾Ý 
¿é°üº¬EXT2Ŀ¼Èë¿Ú¡£homeĿ¼ÊÇÐí¶àĿ¼µÄÈë¿Úͬʱ´ËĿ¼¸øÎÒÃÇÌṩÁË 
´óÁ¿ÃèÐð/homeĿ¼µÄinode¡£ÎÒÃDZØÐë¶ÁÈ¡´ËĿ¼ÒÔÕÒµ½ruslingĿ¼Èë¿Ú£¬ 
´ËÈë¿ÚÓÖÌṩÁËÐí¶àÃèÐð/home/ruslingĿ¼µÄinode¡£×îºó¶ÁÈ¡ÓÉ/home/rusling 
Ŀ¼ÃèÐðµÄinodeÖ¸ÏòµÄĿ¼Èë¿ÚÒÔÕÒ³ö.cshrcÎļþµÄinodeºÅ²¢´ÓÖÐÈ¡µÃ°ü 
º¬ÔÚÎļþÖÐÐÅÏ¢µÄÊý¾Ý¿é¡£ 
 
 
 
9.1.6  ¸Ä±äEXT2ÎļþϵͳÖÐÎļþµÄ´óС 
 
ÎļþϵͳÆÕ±é´æÔÚµÄÒ»¸öÎÊÌâÊÇËé¿é»¯¡£Ò»¸öÎļþËù°üº¬µÄÊý¾Ý¿é±é²¼Õû¸ö 
Îļþϵͳ,ÕâʹµÃ¶ÔÎļþÊý¾Ý¿éµÄ˳Ðò·ÃÎÊÔ½À´Ô½Âý¡£EXT2ÎļþϵͳÊÔͼͨ 
¹ý·ÖÅäÒ»¸öºÍµ±Ç°ÎļþÊý¾Ý¿éÔÚÎïÀíλÖÃÉÏÁÚ½Ó»òÕßÖÁÉÙλÓÚͬһ¸öÊý¾Ý¿é 
×éÖеÄпéÀ´½â¾öÕâ¸öÎÊÌâ¡£Ö»ÓÐÔÚÕâÖÖ·ÖÅä²ßÂÔʧ°Üʱ²ÅÔÚÆäËüÊý¾Ý¿é×é 
ÖзÖÅä¿Õ¼ä¡£ 
 
µ±½ø³Ì×¼±¸Ð´Ä³Îļþʱ, 
LinuxÎļþϵͳÊ×Ïȼì²éÊý¾ÝÊÇ·ñÒѾ­³¬³öÁËÎļþ×îºóÒ»¸ö±»·ÖÅäµÄ¿é¿Õ¼ä¡£ 
Èç¹ûÊÇÔò±ØÐëΪ´ËÎļþ·ÖÅäÒ»¸öÐÂÊý¾Ý¿é¡£½ø³Ì½«Ò»Ö±µÈ´ýµ½´Ë·ÖÅäÍê³É£» 
È»ºó½«ÆäÓàÊý¾ÝдÈë´ËÎļþ¡£EXT2¿é·ÖÅäÀý³ÌËù×÷µÄµÚÒ»¼þÊÂÊǶԴËÎļþϵ 
ͳµÄEXT2³¬¿é¼ÓËø¡£ÕâÊÇÒòΪ¿é·ÖÅäºÍ»ØÊÕ½«µ¼Ö³¬¿éÖÐijЩÓòµÄ¸Ä±ä£¬ 
LinuxÎļþϵͳ²»ÄÜÔÚͬһʱ¿ÌΪ¶à¸ö½ø³Ì½øÐдËÀà·þÎñ¡£Èç¹ûÁíÍâÒ»¸ö½ø³Ì 
ÐèÒª·ÖÅä¸ü¶àµÄÊý¾Ý¿éʱËü±ØÐëµÈµ½´Ë½ø³ÌÍê³É·ÖÅä²Ù×÷Ϊֹ¡£ 
ÔÚ³¬¿éÉϵȴýµÄ½ø³Ì½«±»¹ÒÆðÖ±µ½³¬¿éµÄ¿ØÖÆÈ¨±»Æäµ±Ç°Ê¹ÓÃÕßÊÍ·Å¡£¶Ô³¬ 
¿éµÄ·ÃÎÊ×ñÑ­ÏÈÀ´ÏÈ·þÎñÔ­Ôò£¬Ò»µ©½ø³ÌÈ¡µÃÁ˳¬¿éµÄ¿ØÖÆÔòËü±ØÐë±£³Öµ½ 
²Ù×÷½áÊøÎªÖ¹¡£Èç¹ûϵͳÖпÕÏп鲻¶àÔò´Ë·ÖÅäµÄ½«Ê§°Ü£¬½ø³Ì»áÊͷŶÔÎÄ 
¼þϵͳ³¬¿éµÄ¿ØÖÆ¡£ 
 
Èç¹ûEXT2Îļþϵͳ±»Éè³ÉÔ¤ÏÈ·ÖÅäÊý¾Ý¿éÔòÎÒÃÇ¿ÉÒÔ´ÓÖÐÈ¡µÃÒ»¸ö¡£Ô¤ÏÈ·Ö 
Åä¿éʵ¼ÊÉϲ¢²»´æÔÚ£¬ËüÃǽö½ö°üº¬ÔÚÒÑ·ÖÅä¿éµÄλͼÖС£ÎÒÃÇÊÔͼΪ֮·Ö 
ÅäÐÂÊý¾Ý¿éÎļþËù¶ÔÓ¦µÄVFS inode°üº¬Á½¸öEXT2ÌØÊâÓò£ºprealloc_blockºÍ 
prealloc_count£¬ËüÃÇ·Ö±ð´ú±íµÚÒ»¸öÔ¤ÏÈ·ÖÅäÊý¾Ý¿éµÄ¿éºÅÒÔ¼°¸÷×ÔµÄÊý 
Ä¿¡£Èç¹ûûÓÐʹÓÃÔ¤ÏÈ·ÖÅä¿é»ò¿éÔ¤ÏÈ·ÖÅäÊý¾Ý¿é²ßÂÔ£¬ÔòEXT2Îļþϵͳ±Ø 
Ðë·ÖÅäÒ»¸öп顣ËüÊ×Ïȼì²é´ËÎļþ×îºóÒ»¸ö¿éºóµÄÊý¾Ý¿éÊÇ·ñ¿ÕÏС£´ÓÂß 
¼­ÉÏÀ´ËµÕâÊÇÈÃÆä˳Ðò·ÃÎʸü¿ìµÄ×îÓÐЧ¿é·ÖÅä²ßÂÔ¡£Èç¹û´Ë¿éÒѱ»Ê¹ÓÃÔò 
Ëü»áÔÚÀíÏë¿éÖÜΧ64¸ö¿éÖÐÑ¡ÔñÒ»¸ö¡£Õâ¸ö¿éËäÈ»²»ÊÇ×îÀíÏ뵫ºÍ´ËÎļþµÄ 
ÆäËüÊý¾Ý¿é¶¼Î»ÓÚͬһ¸öÊý¾Ý¿é×éÖС£ 
 
Èç¹û´Ë¿é»¹ÊDz»¿ÕÏÐÔò½ø³Ì½«ÔÚËùÓÐÆäËüÊý¾Ý¿é×éÖÐËÑѰ£¬Ö±µ½ÕÒµ½Ò»¿ÕÏР
¿é¡£¿é·ÖÅä´úÂ뽫ÔÚij¸öÊý¾Ý¿é×éÖÐѰÕÒÒ»¸öÓÉ8¸ö¿ÕÏÐÊý¾Ý¿é×é³ÉµÄ´Ø¡£Èç 
¹ûÕÒ²»µ½ÄÇôËü½«È¡¸üСµÄ³ß´ç¡£Èç¹ûʹÓÃÁË¿éÔ¤ÏÈ·ÖÅäÔòËü½«¸üÐÂÏàÓ¦µÄ 
prealloc_blockºÍprealloc_count¡£ 
 
ÕÒµ½¿ÕÏпéºó¿é·ÖÅä´úÂ뽫¸üÐÂÊý¾Ý¿é×éÖеÄλͼ²¢ÔÚbuffer 
cacheÖÐΪËü·ÖÅäÒ»¸öÊý¾Ý»º´æ¡£Õâ¸öÊý¾Ý»º´æÓÉÎļþϵͳ֧³ÅÉ豸µÄ±êÖ¾·û 
ÒÔ¼°ÒÑ·ÖÅä¿éµÄ¿éºÅÀ´±êÖ¾¡£»º´æÖеÄÊý¾Ý±»ÖÃ0ÇÒ»º´æ±»±ê¼Ç³ÉdirtyÒÔÏÔ 
ʾÆäÄÚÈÝ»¹Ã»ÓÐдÈëÎïÀí´ÅÅÌ¡£×îºó³¬¿éÒ²±»±ê¼ÇΪdirtyÒÔ±íʾËüÒѱ»¸üР
²¢½âËøÁË¡£Èç¹ûÓнø³ÌÔڵȴýÕâ¸ö³¬¿éÔò¶ÓÁÐÖеĵÚÒ»¸ö½ø³Ì½«µÃµ½ÔËÐв¢ 
È¡µÃ¶Ô³¬¿éµÄ¶ÀÕ¼¿ØÖÆ¡£Èç¹ûÊý¾Ý¿é±»ÌîÂúÔò½ø³ÌµÄÊý¾Ý±»Ð´ÈëÐÂÊý¾Ý¿éÖУ¬ 
ÒÔÉϵÄÕû¸ö¹ý³Ì½«Öظ´ÇÒÁíÒ»¸öÊý¾Ý¿é±»·ÖÅä¡£ 
 
9.2  ÐéÄâÎļþϵͳ(VFS) 
 
LinuxºËÐÄÖÐÐéÄâÎļþϵͳºÍʵ¼ÊÎļþϵͳ¼äµÄ¹ØÏµ¡£´ËÐéÄâÎÄ 
¼þϵͳ±ØÐëÄܹ»¹ÜÀíÔÚÈκÎʱ¿Ìmountµ½ÏµÍ³µÄ²»Í¬Îļþϵͳ¡£Ëüͨ¹ýά»¤Ò» 
¸öÃèÐðÕû¸öÐéÄâÎļþϵͳºÍʵ¼ÊÒѰ²×°ÎļþϵͳµÄ½á¹¹À´Íê³ÉÕâ¸ö¹¤×÷¡£ 
 
ÈÝÒ×ÈÃÈË»ìÏýµÄÊÇVFSʹÓÃÁ˺ÍEXT2ÎļþϵͳÀàËÆµÄ·½Ê½£º³¬¿éºÍinodeÀ´Ãè 
ÐðÎļþϵͳ¡£ÏóEXT2inodeÒ»Ñù VFSinodeÃèÐðϵͳÖеÄÎļþºÍĿ¼ÒÔ¼°VFSÖР
µÄÄÚÈݺÍÍØÆË½á¹¹¡£´ÓÏÖÔÚ¿ªÊ¼ÎÒ½«ÓÃVFSinodeºÍVFS³¬¿éÀ´½«ËüÃǺ͠
EXT2 inodeºÍ³¬¿é½øÐÐÇø·Ö¡£ 
 
Îļþϵͳ³õʼ»¯Ê±½«Æä×ÔÉí×¢²áµ½VFSÖС£Ëü·¢ÉúÔÚϵͳÆô¶¯ºÍ²Ù×÷ϵͳ³õ 
ʼ»¯Ê±¡£ÕâЩʵ¼ÊÎļþϵͳ¿ÉÒÔ¹¹Ôìµ½ºËÐÄÖÐÒ²¿ÉÒÔÉè¼Æ³É¿É¼ÓÔØÄ£¿é¡£ 
Îļþϵͳģ¿é¿ÉÒÔÔÚϵͳÐèҪʱ½øÐмÓÔØ£¬ÀýÈçVFAT¾Í±»ÊµÏÖ³ÉÒ»¸öºËÐÄ 
Ä£¿é£¬µ±mount VFATÎļþϵͳʱËü½«±»¼ÓÔØ¡£mountÒ»¸ö»ùÓÚ¿éÉ豸ÇÒ°üº¬ 
¸ùÎļþϵͳµÄÎļþϵͳʱ£¬VFS±ØÐë¶ÁÈ¡Æä³¬¿é¡£Ã¿¸öÎļþϵͳÀàÐ͵ij¬¿é 
¶ÁÈ¡Àý³Ì±ØÐëÁ˽âÎļþϵͳµÄÍØÆË½á¹¹²¢½«ÕâЩÐÅÏ¢Ó³Éäµ½VFS³¬¿é½á¹¹ÖС£ 
VFSÔÚϵͳÖб£´æ×ÅÒ»×éÒѰ²×°ÎļþϵͳµÄÁ´±í¼°ÆäVFS³¬¿é¡£Ã¿¸öVFS 
³¬¿é°üº¬Ò»Ð©ÐÅÏ¢ÒÔ¼°Ò»¸öÖ´ÐÐÌØ¶¨¹¦Äܵĺ¯ÊýÖ¸Õë¡£ÀýÈç±íʾһ¸öÒѰ²×° 
EXT2ÎļþϵͳµÄ³¬¿é°üº¬Ò»¸öÖ¸ÏòEXT2Ïà¹Øinode¶ÁÀý³ÌµÄÖ¸Õë¡£Õâ¸öEXT2 
inode¶ÁÀý³ÌÏóËùÓÐÎļþϵͳÏà¹Ø¶ÁÀý³ÌÒ»ÑùÌî³äÁËVFS inodeÖеÄÓò¡£Ã¿¸ö 
VFS³¬¿é°üº¬´ËÎļþϵͳÖеÚÒ»¸öVFS inodeµÄÖ¸Õë¡£¶ÔÓÚ¸ùÎļþϵͳ´Ëinode 
±íʾµÄÊÇ"/"Ŀ¼¡£ÕâÖÖÐÅÏ¢Ó³É䷽ʽ¶ÔEXT2Îļþϵͳ·Ç³£ÓÐЧµ«ÊÇ¶ÔÆäËü 
ÎļþϵͳҪÉԲ 
 
ϵͳÖнø³Ì·ÃÎÊĿ¼ºÍÎļþʱ½«Ê¹ÓÃϵͳµ÷ÓñéÀúϵͳµÄVFS inode¡£ 
 
ÀýÈç¼üÈëls»òcatÃüÁîÔò»áÒýÆðÐéÄâÎļþϵͳ¶Ô±íʾ´ËÎļþϵͳµÄVFS inode 
µÄËÑѰ¡£ÓÉÓÚϵͳÖÐÿ¸öÎļþÓëĿ¼¶¼Ê¹ÓÃÒ»¸öVFS inodeÀ´±íʾ£¬ËùÒÔÐí 
¶àinode»á±»Öظ´·ÃÎÊ¡£ÕâЩinode±»±£´æÔÚinode cacheÖÐÒÔ¼Ó¿ì·ÃÎÊËÙ¶È¡£ 
Èç¹ûij¸öinode²»ÔÚinode cacheÖÐÔò±ØÐëµ÷ÓÃÒ»¸öÎļþϵͳÏà¹ØÀý³ÌÀ´¶ÁÈ¡ 
´Ëinode¡£¶ÔÕâ¸öinodeµÄ¶Á½«°Ñ´ËËü·Åµ½inode cacheÖÐÒÔ±¸ÏÂÒ»´Î·ÃÎÊ¡£ 
²»¾­³£Ê¹ÓõÄVFS inode½«»á´ÓcacheÖÐÒÆ³ö¡£ 
 
ËùÓÐLinuxÎļþϵͳʹÓÃÒ»¸öͨÓÃbuffer cacheÀ´»º³åÀ´×ԵײãÉ豸µÄÊý 
¾ÝÒÔ±ã¼ÓËÙ¶Ô°üº¬´ËÎļþϵͳµÄÎïÀíÉ豸µÄ´æÈ¡¡£ 
 
Õâ¸öbuffer 
cacheÓëÎļþϵͳÎ޹ز¢±»¼¯³Éµ½LinuxºËÐÄ·ÖÅäÓë¶ÁдÊý¾Ý»º´æµÄ»úÖÆÖС£ 
ÈÃLinuxÎļþϵͳ¶ÀÁ¢Óڵײã½éÖʺÍÉ豸Çý¶¯ºÃ´¦ºÜ¶à¡£ËùÓеĿé½á¹¹É豸 
½«Æä×ÔÉí×¢²áµ½LinuxºËÐÄÖв¢Ìṩ»ùÓÚ¿éµÄÒ»ÖÂÐÔÒì²½½Ó¿Ú¡£ÏóSCSIÉ豸 
ÕâÖÖÏà¶Ô¸´ÔӵĿéÉ豸ҲÊÇÈç´Ë¡£µ±Êµ¼ÊÎļþϵͳ´Óµ×²ãÎïÀí´ÅÅ̶ÁÈ¡Êý 
¾Ýʱ£¬¿éÉ豸Çý¶¯½«´ÓËüÃÇËù¿ØÖƵÄÉ豸ÖжÁÈ¡ÎïÀí¿é¡£buffer cacheÒ² 
±»¼¯³Éµ½ÁË¿éÉ豸½Ó¿ÚÖС£µ±Îļþϵͳ¶ÁÈ¡Êý¾Ý¿éʱËüÃǽ«±»±£´æÔÚÓÉË 
 ÓÐÎļþϵͳºÍLinuxºËÐĹ²ÏíµÄÈ«¾Öbuffer cacheÖС£ÕâЩbufferÓÉÆä¿é 
ºÅºÍ¶ÁÈ¡É豸µÄÉ豸ºÅÀ´±íʾ¡£ËùÒÔµ±Ä³¸öÊý¾Ý¿é±»Æµ·±Ê¹ÓÃÔòËüºÜ¿ÉÄÜ 
ÄÜ´Óbuffercache¶ø²»ÊÇ´ÅÅÌÖжÁÈ¡³öÀ´£¬ºóÕßÏÔÈ»½«»¨·Ñ¸ü³¤µÄʱ¼ä¡£ÓР
ЩÉ豸֧³Öͨ¹ýÔ¤²â½«ÏÂÒ»´Î¿ÉÄÜʹÓõÄÊý¾ÝÌáǰ¶ÁÈ¡³öÀ´¡£ 
 
VFS»¹Ö§³ÖÒ»ÖÖĿ¼cacheÒÔ±ã¶Ô¾­³£Ê¹ÓõÄĿ¼¶ÔÓ¦µÄinode½øÐпìËÙ²é 
ÕÒ¡£ÎÒÃÇ¿ÉÒÔ×öÒ»¸öÕâÑùµÄʵÑ飬Ê×ÏÈÎÒÃǶÔÒ»¸ö×î½üûÓÐÖ´ÐйýÁÐĿ¼ 
²Ù×÷µÄĿ¼½øÐÐÁÐĿ¼²Ù×÷¡£µÚÒ»´ÎÁÐĿ¼ʱÄã¿ÉÄÜ·¢ÏÖ»áÓн϶̵ÄÍ£¶Ù 
µ«µÚ¶þ´Î²Ù×÷ʱ½á¹û»áÁ¢¿Ì³öÏÖ¡£Ä¿Â¼cache²»´æ´¢Ä¿Â¼±¾ÉíµÄinode£»Õâ 
ЩӦ¸ÃÔÚinodecacheÖУ¬Ä¿Â¼cache ½ö½ö±£´æÈ«Ä¿Â¼ÃûºÍÆäinodeºÅÖ®¼äµÄ 
Ó³Éä¹ØÏµ¡£ 
 
9.2.1  VFS ³¬¿é 
 
ÿ¸öÒѰ²×°µÄÎļþϵͳÓÉÒ»¸öVFS³¬¿é±íʾ£»Ëü°üº¬ÈçÏÂÐÅÏ¢£º 
 
Device 
     ±íʾÎļþϵͳËùÔÚ¿éÉ豸µÄÉ豸±êÖ¾·û¡£ÀýÈçϵͳÖеÚÒ»¸öIDEÓ²Å̵Ġ
     É豸±êÖ¾·ûΪ0x301¡£ 
Inode pointers 
     Õâ¸ömounted inodeÖ¸ÕëÖ¸ÏòÎļþϵͳÖеÚÒ»¸öinode¡£¶øcovered 
     inodeÖ¸ÕëÖ¸Ïò´ËÎļþϵͳ°²×°Ä¿Â¼µÄinode¡£¸ùÎļþϵͳµÄVFS³¬¿é²» 
     °üº¬coveredÖ¸Õë¡£ 
Blocksize 
     ÒÔ×Ö½Ú¼ÇÊýµÄÎļþϵͳ¿é´óС£¬Èç1024×Ö½Ú¡£ 
Superblock operations 
     Ö¸Ïò´ËÎļþϵͳһ×鳬¿é²Ù×ÝÀý³ÌµÄÖ¸Õë¡£ÕâЩÀý³Ì±»VFSÓÃÀ´¶Áд 
     inodeºÍ³¬¿é¡£ 
File System type 
     ÕâÊÇÒ»¸öÖ¸ÏòÒѰ²×°ÎļþϵͳµÄfile_system_type½á¹¹µÄÖ¸Õë¡£ 
File System specific 
     Ö¸ÏòÎļþϵͳËùÐèÐÅÏ¢µÄÖ¸Õë¡£ 
 
9.2.2  The VFS Inode 
 
ºÍEXT2ÎļþϵͳÏàͬ£¬VFSÖеÄÿ¸öÎļþ¡¢Ä¿Â¼µÈ¶¼ÓÃÇÒÖ»ÓÃÒ»¸öVFS 
inode±íʾ¡£Ã¿¸öVFS 
inodeÖеÄÐÅϢͨ¹ýÎļþϵͳÏà¹ØÀý³Ì´Óµ×²ãÎļþϵͳÖеõ½¡£VFS 
inode½ö´æÔÚÓÚºËÐÄÄÚ´æ²¢ÇÒ±£´æÖ»Òª¶ÔϵͳÓÐÓã¬ËüÃǾͻᱻ±£´æÔÚÔÚVFS 
inode cacheÖС£Ã¿¸öVFS inode°üº¬ÏÂÁÐÓò£º 
 
device 
     °üº¬´ËÎļþ»ò´ËVFS inode´ú±íµÄÈκζ«Î÷µÄÉ豸µÄÉ豸±êÖ¾·û¡£ 
inode number 
     ÎļþϵͳÖÐΨһµÄinodeºÅ¡£ÔÚÐéÄâÎļþϵͳÖÐdeviceºÍinodeºÅµÄ×é 
     ºÏÊÇΨһµÄ¡£ 
mode 
     ºÍEXT2ÖеÄÏàͬ, ±íʾ´ËVFS inodeµÄ´æÈ¡È¨ÏÞ¡£ 
user ids 
     ËùÓÐÕߵıêÖ¾·û¡£ 
times 
     VFS inode ´´½¨¡¢Ð޸ĺÍдÈëʱ¼ä¡£ 
block size 
     ÒÔ×Ö½Ú¼ÆËãµÄÎļþ¿é´óС£¬Èç1024×Ö½Ú¡£ 
inode operations 
     Ö¸ÏòÒ»×éÀý³ÌµØÖ·µÄÖ¸Õë¡£ÕâЩÀý³ÌºÍÎļþϵͳÏà¹ØÇÒ¶Ô´ËinodeÖ´ÐР
     ²Ù×÷£¬Èç½Ø¶Ï´Ëinode±íʾµÄÎļþ¡£ 
count 
     Ê¹ÓôËVFS 
     inodeµÄϵͳ²¿¼þÊý¡£Ò»¸öcountΪ0µÄinode¿ÉÒÔ±»×ÔÓɵĶªÆú»òÖØÐÂʹÓᣠ
lock ÓÃÀ´¶Ôij¸öVFS inode¼ÓËø£¬ÈçÓÃÓÚ¶ÁÈ¡Îļþϵͳʱ¡£ 
dirty ±íʾÕâ¸öVFS inodeÊÇ·ñÒѾ­±»Ð´¹ý£¬Èç¹ûÊÇÔòµ×²ãÎļþϵͳÐèÒª¸üС£ 
file system specific information 
 
9.2.3  ×¢²áÎļþϵͳ 
 
 
µ±ÖØÐ½¨Á¢LinuxºËÐÄʱ°²×°³ÌÐò»áѯÎÊÊÇ·ñÐèÒªËùÓпÉÖ§³ÖµÄÎļþϵͳ¡£ºË 
ÐÄÖØ½¨Ê±ÎļþϵͳÆô¶¯´úÂë°üº¬ÁËËùÓÐÄÇЩ±àÈëºËÐĵÄÎļþϵͳµÄ³õʼ»¯Àý³Ì¡£ 
 
LinuxÎļþϵͳ¿É¹¹Ôì³ÉÄ£¿é,´ËʱËüÃÇ»á½öÔÚÐèҪʱ¼ÓÔØ»òÕßʹÓÃinsmodÀ´ÔØ 
Èë¡£µ±Îļþϵͳģ¿é±»¼ÓÔØÊ±,Ëü½«ÏòºËÐÄ×¢²á²¢ÔÚÐ¶ÔØÊ±³·³ý×¢²á¡£Ã¿¸öÎļþ 
ϵͳµÄ³õʼ»¯Àý³Ì»¹½«ÏòÐéÄâÎļþϵͳע²á£¬ËüÓÃÒ»¸ö°üº¬ÎļþϵͳÃû³ÆºÍ 
Ö¸ÏòÆäVFS³¬¿é¶ÁÀý³ÌµÄÖ¸ÕëµÄfile_system_type½á¹¹±íʾ¡£Ã¿¸öfile_system_type 
½á¹¹°üº¬ÏÂÁÐÐÅÏ¢£º 
 
Superblock read routine 
     ´ËÀý³ÌÔØÎļþϵͳµÄÒ»¸öʵÀý±»°²×°Ê±ÓÉVFSµ÷Óᣠ
File System name 
     ÎļþϵͳµÄÃû³ÆÈçext2¡£ 
Device needed 
     ÎļþϵͳÊÇ·ñÐèÒªÉ豸֧³Ö¡£²¢²»ÊÇËùÓеÄÎļþϵͳ¶¼ÐèÒªÉ豸À´±£´æ 
     Ëü¡£ÀýÈç/procÎļþϵͳ²»ÐèÒª¿éÉ豸֧³Ö¡£ 
 
Äã¿ÉÒÔͨ¹ý²éÔÄ/proc/filesystems¿ÉÕÒ³öÒÑ×¢²áµÄÎļþϵͳ£¬È磺 
 
      ext2 
nodev proc 
      iso9660 
 
9.2.4  °²×°Îļþϵͳ 
 
µ±³¬¼¶Óû§ÊÔͼ°²×°Ò»¸öÎļþϵͳʱ£¬LinuxºËÐÄÊ×ÏÈʹϵͳµ÷ÓÃÖеIJÎÊýÓÐЧ 
»¯¡£¾¡¹Ümount³ÌÐò»á×öһЩ»ù±¾µÄ¼ì²é,µ«ÊÇËü²¢²»ÖªµÀºËÐĹ¹ÔìʱÒѾ­Ö§³Ö 
ÄÇЩÎļþϵͳ,ͬʱÄÇЩ½¨ÒéµÄ°²×°µãµÄÈ·´æÔÚ¡£¿´ÈçϵÄÒ»¸ömountÃüÁ 
 
$ mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom 
 
mountÃüÁ´«µÝÈý¸ö²ÎÊý¸øºËÐÄ£ºÎļþϵͳÃû£¬°üº¬ÎļþϵͳµÄÎïÀí¿éÉ豸ÒÔ 
¼°´ËÐÂÎļþϵͳҪ°²×°µ½µÄÒÑ´æÔÚµÄĿ¼Ãû¡£ 
 
ÐéÄâÎļþϵͳÊ×ÏȱØÐë×öµÄÊÇÕÒµ½´ËÎļþϵͳ¡£Ëü½«Í¨¹ýÓÉÁ´Ö¸Õëfile_systems 
Ö¸ÏòµÄfile_system_type½á¹¹À´ÔÚËùÓÐÒÑÖªÎļþϵͳÖÐËÑѰ¡£ 
 
Èç¹ûÕÒµ½ÁËÒ»¸öÏàÆ¥ÅäµÄÎļþϵͳÃû,ÄÇôËü¾ÍÖªµÀºËÐÄÖ§³Ö´ËÎļþϵͳ 
²¢¿ÉµÃµ½¶ÁÈ¡´ËÎļþϵͳ³¬¿éÏà¹ØÀý³ÌµÄÖ¸Õë¡£Èç¹ûÕÒ²»µ½,µ«Îļþϵͳ 
ʹÓÃÁ˿ɶ¯Ì¬¼ÓÔØºËÐÄÄ£¿é,Ôò²Ù×÷ÈԿɼÌÐø¡£´ËʱºËÐĽ«ÇëÇóºËÐĺǫ́ 
½ø³Ì¼ÓÔØÏàÓ¦µÄÎļþϵͳģ¿é¡£ 
 
½ÓÏÂÀ´Èç¹ûÓÉmount´«µÝµÄÎïÀíÉ豸»¹Ã»Óа²×°,Ôò±ØÐëÕÒµ½ÐÂÎļþϵͳ 
½«Òª°²×°µ½µÄÄǸöĿ¼µÄVFS inode¡£ Õâ¸öVFSinode¿ÉÄÜÔÚinode 
cacheÖÐÒ²¿ÉÄÜÔÚÖ§³ÅÕâ¸ö°²×°µãËùÔÚÎļþϵͳµÄ¿éÉ豸ÖС£Ò»µ©ÕÒµ½Õâ 
¸öinodeÔò½«¶ÔËü½øÐмì²éÒÔÈ·¶¨ÔÚ´ËĿ¼ÖÐÊÇ·ñÒѾ­°²×°ÁËÆäËüÀàÐ͵Ġ
Îļþϵͳ¡£¶à¸öÎļþϵͳ²»ÄÜʹÓÃÏàͬĿ¼×÷Ϊ°²×°µã¡£ 
 
´ËʱVFS°²×°´úÂë±ØÐë·ÖÅäÒ»¸öVFS³¬¿é²¢½«°²×°ÐÅÏ¢´«µÝµ½´ËÎļþϵͳ 
µÄ³¬¿é¶ÁÀý³ÌÖС£ÏµÍ³ÖÐËùÓеÄVFS³¬¿é¶¼±»±£´æÔÚÓÉsuper_block½á¹¹ 
¹¹³ÉµÄsuper_blocksÊý×éÖÐ,²¢ÇÒ¶ÔÓ¦´Ë°²×°Ó¦ÓÐÒ»¸öÕâÖֽṹ¡£³¬¿é¶Á 
Àý³Ì½«»ùÓÚÕâЩ´ÓÎïÀíÉ豸ÖжÁÈ¡µÄÐÅÏ¢À´Ìî³äÕâЩVFS³¬¿éÓò¡£¶ÔÓÚ 
EXT2Îļþϵͳ´ËÐÅÏ¢µÄת»¯¹ý³ÌÊ®·Ö¼ò±ã£¬½öÐèÒª¶ÁÈ¡EXT2³¬¿é²¢Ìî³ä 
VFS³¬¿é¡£µ«ÆäËüÎļþϵͳÈçMS-DOSÎļþϵͳ¾Í²»ÄÇôÈÝÒ×ÁË¡£²»¹ÜÄÄÖÖ 
Îļþϵͳ£¬¶ÔVFS³¬¿éµÄÌî³äÒâζ×ÅÎļþϵͳ±ØÐë´ÓÖ§³ÖËüµÄ¿éÉ豸ÖжÁ 
È¡ÃèÐðËüµÄËùÓÐÐÅÏ¢¡£Èç¹û¿éÉ豸Çý¶¯²»ÄÜ´ÓÖжÁÈ¡»ò²»°üº¬ÕâÖÖÀàÐÍ 
ÎļþϵͳÔòmountÃüÁî»áʧ°Ü¡£ 
 
 
ÿ¸öÎļþϵͳÓÃÒ»¸övfsmount½á¹¹À´ÃèÐð¡£Èçͼ9.6Ëùʾ¡£ËüÃDZ»ÅÅÈëÓÉ 
vfsmntlistÖ¸ÏòµÄµÄÁ´±íÖС£ 
 
ÁíÍâÒ»¸öÖ¸Õ룺vfsmnttailÖ¸ÏòÁ´±íµÄ×îºóÒ»¸öÈë¿Ú,ͬʱmru_vfsmntÖ¸ 
ÕëÖ¸Ïò×î½üʹÓÃ×î¶àµÄÎļþϵͳ¡£Ã¿¸övfsmount½á¹¹ÖÐÓÉÒÔϲ¿·Ö×é³É£º 
°üº¬´ËÎļþϵͳµÄ¿éÉ豸µÄÉ豸ºÅ£¬´ËÎļþϵͳ°²×°µÄĿ¼ÒÔ¼°Îļþϵͳ 
°²×°Ê±·ÖÅäµÄVFS³¬¿éÖ¸Õë¡£VFS³¬¿éÖ¸ÏòÕâÖÖÀàÐÍÎļþϵͳºÍ´ËÎļþϵͳ 
¸ùinodeµÄfile_system_type½á¹¹¡£Ò»µ©´ËÎļþϵͳ±»¼ÓÔØ,Õâ¸öinode½« 
һֱפÁôÔÚVFS inod cacheÖС£ 
 
9.2.5  ÔÚÐéÄâÎļþϵͳÖÐËÑѰÎļþ 
 
ΪÁËÔÚÐéÄâÎļþϵͳÖÐÕÒµ½Ä³¸öÎļþµÄVFS inode£¬VFS±ØÐëÒÀ´Î½âÎö´Ë 
ÎļþÃû×ÖÖеļä½ÓĿ¼ֱµ½ÕÒµ½´ËVFSinode¡£Ã¿´ÎĿ¼²éÕÒ°üÀ¨Ò»¸ö¶Ô 
°üº¬ÔÚ±íʾ¸¸Ä¿Â¼VFS inodeÖеIJéÕÒº¯ÊýµÄµ÷Óá£ÓÉÓÚÎÒÃÇ×ÜÊÇÈÃÿ 
¸öÎļþϵͳµÄ¸ù¿ÉÓò¢ÇÒÓÉ´ËϵͳµÄVFS³¬¿éÖ¸ÏòËü£¬ËùÒÔÕâÊÇÒ»¸ö¿ÉÐР
·½°¸¡£Ã¿´ÎÔÚʵ¼ÊÎļþϵͳÖÐѰÕÒinodeʱ£¬Îļþϵͳ½«ÔÚĿ¼cacheÖР
ѰÕÒÏàӦĿ¼¡£Èç¹ûÔÚĿ¼cacheÖÐÎÞÏàÓ¦Èë¿ÚÔòÎļþϵͳ±ØÐë´Óµ×²ãÎÄ 
¼þϵͳ»òinode cacheÖÐÈ¡µÃ´ËVFS inode¡£ 
 
9.2.6  Creating a File in the Virtual File System 
 
9.2.7  Ð¶ÔØÎļþϵͳ 
 
Èç¹ûÒѰ²×°ÎļþϵͳÖÐÓÐЩÎļþ»¹ÔÚ±»ÏµÍ³Ê¹ÓÃÔò²»ÄÜÐ¶ÔØ´ËÎļþϵͳ¡£ 
ÀýÈçÓнø³ÌʹÓÃ/mnt/cdrom»òÆä×ÓĿ¼ʱ½«²»ÄÜÐ¶ÔØ´ËÎļþϵͳ¡£Èç¹û½« 
ÒªÐ¶ÔØµÄÎļþϵͳÖÐÓÐЩÎļþ»¹ÔÚ±»Ê¹Óã¬ÄÇôÔÚVFSinode cacheÖÐÓÐÓë 
Æä¶ÔÓ¦µÄVFS inode¡£Í¨¹ýÔÚinodeÁ´±íÖвéÕÒ´ËÎļþϵͳռÓÃÉ豸µÄinode 
À´Íê³É´Ë¹¤×÷¡£¶ÔÓ¦´ËÒѰ²×°ÎļþϵͳµÄVFS³¬¿éΪdirty£¬±íʾËüÒѱ»ÐÞ 
¸Ä¹ýËùÒÔ±ØÐëд»Øµ½´ÅÅ̵ÄÎļþϵͳÖС£Ò»µ©Ð´Èë´ÅÅÌ,VFS³¬¿éÕ¼ÓõÄÄÚ 
´æ½«¹é»¹µ½ºËÐĵĿÕÏÐÄÚ´æ³ØÖС£×îºó¶ÔÓ¦µÄvfsmount½á¹¹½«´Óvfsmntlist 
ÖÐÊÍ·Å¡£ 
 
9.2.8  The VFS Inode Cache 
 
²Ù×ÝÒѰ²×°Îļþϵͳʱ£¬ËüÃǵÄVFS inode½«±»Á¬Ðø¶Áд¡£ÐéÄâÎļþϵ 
ͳͨ¹ýά»¤Ò»¸öinode cacheÀ´¼ÓËÙ¶ÔËùÓÐÒѰ²×°ÎļþϵͳµÄ·ÃÎÊ¡£Ã¿ 
´ÎVFS inode¶¼¿É´ÓinodecacheÖжÁÈ¡³öÀ´ÒÔ¼ÓËÙ¶ÔÎïÀíÉ豸µÄ·ÃÎÊ¡£ 
 
VFS inode cacheÒÔÉ¢ÁбíÐÎʽʵÏÖ£¬ÆäÈë¿ÚʱָÏò¾ßÓÐÏàͬɢÁÐÖµµÄVFS 
inodeÁ´±í¡£Ã¿¸öinodeµÄÉ¢ÁÐÖµ¿Éͨ¹ý°üº¬´ËÎļþϵͳµÄµ×²ãÎïÀíÉ豸±ê 
Ö¾·ûºÍinodeºÅ¼ÆËã³öÀ´¡£Ã¿µ±ÐéÄâÎļþϵͳ·ÃÎÊÒ»¸öinodeʱ,ϵͳ½«Ê×ÏÈ 
ÔÚVFS inode cacheÖвéÕÒ¡£ÎªÁËÔÚcacheÖÐѰÕÒinode£¬ÏµÍ³ÏȼÆËã³öÆä 
É¢ÁÐֵȻºó½«Æä×÷ΪinodeÉ¢ÁбíµÄË÷Òý¡£ÕâÑù½«µÃµ½Ö¸ÏòһϵÁÐÏàͬɢ 
ÁÐÖµµÄinodeÁ´±í¡£È»ºóÒÀ´Î¶Áȡÿ¸öinodeÖ±µ½ÕÒµ½ÄǸö¾ßÓÐÏàͬinode 
ºÅÒÔ¼°É豸±êÖ¾·ûµÄinodeΪֹ¡£ 
 
Èç¹ûÔÚcacheÖÐÕÒµ½ÁË´ËinodeÔòËüµÄcountÖµµÝÔöÒÔ±íʾÓû§Ôö¼ÓÁËÒ»¸ö, 
ͬʱÎļþ²Ù×÷½«¼ÌÐø½øÐС£·ñÔò±ØÐëÕÒµ½Ò»¸ö¿ÕÏÐVFSinodeÒÔ±ãÎļþϵͳ 
ÄÜ´ÓÄÚ´æÖжÁÈ¡´Ëinode¡£VFSÓÐÐí¶àÖÖÑ¡ÔñÀ´È¡µÃ¿ÕÏÐinode¡£Èç¹ûϵͳ 
¿ÉÒÔ·ÖÅä¶à¸öVFSinodeÔòËü½«°´Èçϲ½Öè½øÐУºÊ×ÏÈ·ÖÅäºËÐÄÒ³Ãæ²¢½«Æä 
´òËé³ÉеĿÕÏÐinode²¢½«Æä·ÅÈëinodeÁ´±íÖС£ÏµÍ³ËùÓеÄVFSinode¶¼±» 
·Åµ½ÓÉfirst_inodeÖ¸ÏòµÄÁ´±íºÍinodeÉ¢ÁбíÖС£Èç¹ûϵͳÒѾ­ÓµÓÐËùÓР
inode,ÔòËü±ØÐëÕÒµ½±ãÓÚÖØÐÂʹÓõÄinode¡£ÄÇЩinode×îºÃcount¼ÇÊýΪ0£» 
ÒòΪÕâÖÖinodeûÓÐË­ÔÚʹÓ᣺ÜÖØÒªµÄVFSinode£¬ÈçÎļþϵͳµÄ¸ùinode£¬ 
ÆäcountÓò×ÜÊÇ´óÓÚ0£¬ËùÒÔËüËùʹÓõÄinodeÊDz»Äܱ»ÖØÐÂʹÓõġ£Ò»µ©ÕÒ 
µ½¿ÉÖØÓÃinodeÔòÓ¦Çå³ýÖ®:ÆäVFSinode¿ÉÄÜΪdirty,±ØÐëҪдÈëµ½Îļþϵ 
ͳÖлòÕßÐèÒª¼ÓËø£¬´Ëʱϵͳ±ØÐëµÈµ½½âËøÊ±²ÅÄܼÌÐøÔËÐС£ 
 
ÕÒµ½ÐµÄVFS 
inodeºó±ØÐëµ÷ÓÃÎļþϵͳÏà¹ØÀý³ÌʹÓôӵײãʵ¼ÊÎļþϵͳÖжÁ³öµÄÄÚ 
ÈÝÌî³äËü¡£ÔÚÌî³ä¹ý³ÌÖУ¬´ËÐÂVFSinodeµÄcount¼ÇÊýΪ1²¢±»¼ÓËøÒÔÅųâ 
ÆäËü½ø³Ì¶ÔËüµÄʹÓÃÖ±µ½´Ëinode°üº¬ÓÐЧÐÅϢΪֹ¡£ 
 
ΪÁËÈ¡µÃÕæÕýÐèÒªµÄVFS 
inode£¬Îļþϵͳ¿ÉÄÜÐèÒª´æÈ¡¼¸ÀàÆäËüinode¡£ÎÒÃǶÁȡһ¸öĿ¼ʱËäÈ» 
Ö»ÐèÒª×îºóÒ»¼¶Ä¿Â¼µ«ÊÇËùÓеÄÖмäĿ¼Ҳ±»¶ÁÁ˳öÀ´¡£ÓÉÓÚʹÓÃÁËVFS 
inode cache£¬½ÏÉÙʹÓõÄinode½«±»¶ªÆú¶ø½Ï¶àʹÓõÄinode½«±£´æÔÚcache 
ÖС£ 
 
9.2.9  Ä¿Â¼ Cache 
 
ΪÁ˼ÓËÙ¶Ô³£ÓÃĿ¼µÄ·ÃÎÊ£¬VFSά»¤×ÅÒ»¸öĿ¼Èë¿Úcache¡£ 
 
µ±ÔÚʵ¼ÊÎļþϵͳѰÕÒĿ¼ʱ£¬ÓйشËĿ¼µÄϸ½Ú½«±»´æÈëĿ¼cacheÖС£ 
µ±ÔÙ´ÎѰÕÒ´ËĿ¼ʱ£¬ÀýÈçÔÚ´ËĿ¼ÖÐÁÐÎļþÃû»ò´ò¿ªÎļþ£¬ÔòÕâЩÐÅÏ¢ 
¾Í¿ÉÒÔÔÚĿ¼cacheÖÐÕÒµ½¡£ÔÚʵ¼ÊʵÏÖÖÐÖ»ÓжÌĿ¼Èë¿Ú£¨×î¶à15¸ö×Ö 
·û£©±»»º´æ£¬ÕâÊÇÒòΪÄÇЩ½Ï¶ÌĿ¼ÃûµÄĿ¼ÕýÊÇʹÓÃ×îÆµ·±µÄ¡£ÀýÈç 
/usr/X11R6/binÕâ¸ö¶ÌĿ¼¾­³£±»XserverËùʹÓᣠ
 
Ŀ¼cacheÒ²ÓÉÉ¢Áбí×é³É£¬Ã¿¸öÈë¿ÚÖ¸Ïò¾ßÓÐÏàͬɢÁÐÖµµÄĿ¼cacheÈË 
¿ÚÁ´±í¡£É¢Áк¯ÊýʹÓðüº¬´ËÎļþϵͳµÄÉ豸ºÅÒÔ¼°Ä¿Â¼Ãû³ÆÀ´¼ÆËãÔÚ´Ë 
É¢ÁбíÖÐµÄÆ«ÒÆÖµ»òÕßË÷ÒýÖµ,ÕâÑùÄܺܿìÕÒµ½±»»º´æµÄĿ¼¡£ 
Èç¹ûÔÚcacheÖеÄËÑѰÏûºÄµÄʱ¼äÌ«³¤»òÕßÉõÖÁûÓÐÕÒµ½ÔòʹÓôËcacheÓà
´¦²»´ó¡£ 
 
ΪÁ˱£Ö¤cacheµÄÓÐЧÐԺͼ°Ê±¸üУ¬VFS±£´æ×ÅÒ»¸ö×î½ü×îÉÙʹÓã¨LRU£© 
µÄĿ¼cacheÈË¿ÚÁ´±í¡£µ±Ê״βéÕÒ´ËĿ¼ʱÆäĿ¼Èë¿Ú±»Ê״ηÅÈëcacheÖР
²¢Ìí¼Óµ½µÚÒ»¼¶LRUÁ´±íµÄβ²¿¡£ÔÚÒѾ­³äÂúµÄcacheÖÐËü´úÌæÎ»ÓÚLRUÁ´±í 
×îǰ¶ËµÄÏÖ´æÈë¿Ú¡£´ËĿ¼Èë¿Ú±»ÔÙ´ÎʹÓÃʱËü½«±»·Åµ½µÚ¶þ¼¶LRUcacheÁ´ 
±íµÄ×îºó¡£´ËʱÐèÒª½«Î»ÓÚµÚ¶þ¼¶LRU cacheÁ´±íµÄ×îǰ¶ËµÄÄǸöÌæ»»µô¡£ 
Èë¿ÚÔÚÁ´±íǰ¶ËµÄΨһԭÒòÊÇËüÃÇÒѾ­ºÜ¾Ãû±»·ÃÎʹýÁË¡£Èç¹û±»·ÃÎʹýÄÇ 
ôËüÃǽ«Î»ÓÚ´ËÁ´±íµÄβ²¿¸½½ü¡£Î»ÓÚµÚ¶þ¼¶LRUcacheÁ´±íÖеÄÈë¿ÚÒª±È 
λÓÚµÚÒ»¼¶LRU cacheÁ´±íÖеİ²È«Ò»Ð©¡£ 
 
9.3  The Buffer Cache 
 
 
²Ù×ÝÒѰ²×°Îļþϵͳ½«²úÉú´óÁ¿¶Ô´Ë¿éÉ豸µÄ¶ÁдÇëÇó¡£ÕâЩ¿é¶ÁдÇëÇó 
¶¼ÊÇͨ¹ý±ê×¼ºËÐÄÀý³Ìµ÷ÓÃÒÔbuffer_head½á¹¹ÐÎʽ´«µÝµ½É豸Çý¶¯ÖС£Ëü 
ÃÇÌṩÁËÉ豸Çý¶¯ËùÐèµÄËùÓÐÐÅÏ¢£º±íʾÉ豸µÄÉ豸±êÖ¾·ûÒÔ¼°ÇëÇóµÄ¿éºÅ¡£ 
ËùÓпéÉ豸¶¼±»¿´³ÉÏàͬ¿é´óСµÄÏßÐԿ鼯ºÏ¡£ÎªÁ˼ÓËÙ¶ÔÎïÀí¿éÉ豸µÄ·ÃÎÊ£¬ 
LinuxʹÓÃÁËÒ»¸ö¿ébuffer cache¡£ÏµÍ³ÖÐÈ«²¿µÄ¿é»º³å£¬°üÀ¨ÄÇЩûʹÓà
¹ýµÄлº³å¶¼±£´æÔÚ´ËbuffercacheÖС£Õâ¸öcache±»¶à¸öÎïÀí¿éÉ豸¹²Ïí£» 
ÈκÎʱ¿Ì´ËcacheÖж¼ÓÐÐí¶àÊôÓÚ²»Í¬ÏµÍ³¿éÉ豸ÇÒ״̬²»Í¬µÄ¿é»º³å¡£Èç¹û 
ÓÐЧÊý¾Ý¿ÉÒÔ´Óbuffer cacheÖÐÕÒµ½Ôò½«½ÚÊ¡´óÁ¿·ÃÎÊÎïÀíÉ豸µÄʱ¼ä¡£ÈΠ
ºÎ¶Ô¿éÉ豸¶ÁдµÄ¿é»º³å¶¼±»·ÅÈë´ËcacheÖС£ËæÊ±¼äµÄ±ä»¯ÓÐЩ¿é»º³å¿ÉÄÜ 
½«»á±»´ËcacheÖÐɾ³ýÒÔΪ¸üÐèÒªËüµÄ»º³åÌÚ³ö¿Õ¼ä£¬Èç¹ûËü±»Æµ·±Ê¹ÓÃÔò¿É 
ÒÔÒ»Ö±±£´æÔÚ´ËcacheÖС£ 
 
´ËcacheÖеĿ黺³åÓÉÉ豸±êÖ¾·ûÒÔ¼°»º³å¶ÔÓ¦µÄ¿éºÅÀ´Î¨Ò»µÄ±íʾ¡£ËüÓÉÁ½ 
¸ö¹¦Äܲ¿·Ö×é³É¡£ÆäÒ»ÊÇ¿ÕÏп黺³åÁ´±í¡£ËüΪÿ¸ö¿ÉÖ§³ÖµÄ¿é´óСÌṩÁËÒ» 
¸öÁ´±í²¢ÇÒϵͳÖеĿÕÏп黺³åÔÚ´´½¨»òÕß±»¶ªÆúʱ¶¼±»ÅÅÈë´ËÁ´±íÖС£µ±Ç° 
¿ÉÖ§³ÖµÄ¿é´óСΪ512¡¢1024¡¢2048¡¢4096Óë8192×Ö½Ú¡£Æä¶þÊÇcache×ÔÉí¡£Ëü 
ÊÇÓÃÒ»×éÖ¸Ïò¾ßÓÐÏàͬɢÁÐË÷ÒýÖµµÄ»º³åÁ´µÄÉ¢ÁÐ±í¡£Õâ¸öÉ¢ÁÐË÷Òýֵͨ¹ýÆä 
×ÔÉíµÄÉ豸±êÖ¾·ûÓëÊý¾Ý¿éÉ豸µÄ¿éºÅÀ´²úÉú¡£Í¼9.7¸ø³öÁËÒ»¸ö´øÓÐһЩÈë¿Ú 
µÄÉ¢ÁÐ±í¡£¿é»º³åҪôÔÚ¿ÕÏÐÁ´±íÖÐҪôÔÚ´Ëbuffer cacheÖС£Èç¹ûÔÚbuffer 
cacheÖÐÔòËüÃǰ´ÕÕ×î½ü×îÉÙʹÓã¨LRU£©Á´±íÀ´ÅÅÁС£¶ÔÓÚÿÖÖ»º³åÀàÐͶ¼Ó 
 Ò»¸öLRUÁ´±í£¬ÏµÍ³Ê¹ÓÃËüÃÇÀ´¶ÔijÖÖ»º³å½øÐвÙ×÷£¬È罫´øÐÂÊý¾ÝµÄ»º³åд 
Èëµ½´ÅÅÌÉÏ¡£»º³åµÄÀàÐͱíʾÆäµ±Ç°×´Ì¬£¬LinuxÏÖÔÚÖ§³ÖÒÔϼ¯ÖÐÀàÐÍ£º 
 
clean Î´Ê¹ÓõÄлº³å 
locked 
     µÈ´ýдÈëÇÒ¼ÓËøµÄ»º³å 
dirty dirty»º³å¡£ËüÃǰüº¬ÐµÄÓÐЧÊý¾Ý£¬µ«Ä¿Ç°Ã»±»µ÷¶ÈÖ´ÐÐд²Ù×÷¡£ 
shared 
     ¹²Ïí»º³å 
unshared 
     ÒÔǰ±»¹²Ïíµ«ÏÖÔÚûÓб»¹²ÏíµÄ»º³å 
 
µ±ÎļþϵͳÐèÒª´ÓÆäµ×²ãÎïÀíÉ豸¶Áȡһ¸ö»º³å¿éʱ£¬Ëü½«Ê×ÏÈÔÚbuffer 
cacheÀïѰÕÒ¡£Èç¹ûÔÚ´ËbuffercacheÖÐÕÒ²»µ½ÔòËü½«´ÓÊʵ±´óСµÄ¿ÕÏÐÁ´ÖР
È¡µÃÒ»¸öclean״̬µÄ½Úµã,ͬʱ½«Ð»º³åÌí¼Óµ½buffer cache ÖÐÈ¥¡£Èç¹û 
ËùÐèµÄ»º³åλÓÚbuffercacheÖУ¬ÄÇôËü¿ÉÄÜÒѾ­»òûÓиüС£Èç¹ûûÓб» 
¸üлòÕßËüΪпéÔòÎļþϵͳ±ØÐëÇëÇóÏàÓ¦µÄÊý¾ÝÇý¶¯´Ó´ÅÅÌÖжÁÈ¡¸ÃÊý¾Ý¿é¡£ 
 
 
ΪÁËÈôËbuffer cacheÔËÐиü¼ÓÓÐЧ²¢ÇÒÔÚʹÓôËbuffercacheµÄ¿éÉ豸 
Ö®¼äºÏÀíµÄ·ÖÅäcacheÈë¿Ú£¬ÏµÍ³±ØÐë¶ÔÆä½øÐÐά»¤¡£LinuxʹÓÃbdflush 
ºËÐĺǫ́½øÐÐÀ´¶Ô´ËcacheÖ´ÐÐÐí¶àËöË鹤×÷,µ«ÓÐʱ×÷ΪʹÓÃcacheµÄ½á 
¹¹×Ô¶¯½øÐС£ 
 
9.3.1  bdflush ºËÐĺǫ́½ø³Ì 
 
bdflushÊǶԹý¶àµÄdirty»º³åϵͳÌṩ¶¯Ì¬ÏìÓ¦µÄ¼òµ¥ºËÐĺǫ́½ø³Ì£»Õâ 
Щ»º³å¿éÖаüº¬±ØÐ뱻дÈëµ½Ó²ÅÌÉϵÄÊý¾Ý¡£ËüÔÚϵͳÆô¶¯Ê±×÷Ϊһ¸öºË 
ÐÄÏß³ÌÔËÐУ¬ÆäÃû×Ö½Ð"kflushd"¡£Äã¿ÉÒÔʹÓÃpsÃüÁî¿´µ½´Ëϵͳ½ø³Ì¡£Í¨ 
³£Çé¿öÏ´˽ø³ÌÒ»Ö±ÔÚ˯ÃßÖ±µ½ÏµÍ³ÖеÄdirty»º³åÊýÄ¿Ôö´óµ½Ò»¶¨ÊýÄ¿¡£ 
µ±·ÖÅäÓ붪Æú»º³åʱ,ϵͳÖÐdirty»º³åµÄÊýÄ¿½«×öÒ»¸öͳ¼Æ¡£Èç¹ûÆäÊýÄ¿ 
³¬¹ýij¸öÊýÖµÔò»½ÐÑbdflush½ø³Ì¡£È±Ê¡µÄ·§ÖµÎª60%£¬µ«ÊÇÈç¹ûϵͳ¼± 
Ð軺³åÔòÈκÎʱ¿Ì¶¼¿ÉÄÜ»½ÐÑbdflush¡£ 
ʹÓÃupdateÃüÁî¿ÉÒÔ¿´µ½ºÍ¸Ä±äÕâ¸öÊýÖµ¡£ 
 
# update -d 
 
bdflush version 1.4 
0:    60 Max fraction of LRU list to examine for dirty blocks 
1:   500 Max number of dirty blocks to write each time bdflush activated 
2:    64 Num of clean buffers to be loaded onto free list by refill_freelist 
3:   256 Dirty block threshold for activating bdflush in refill_freelist 
4:    15 Percentage of cache to scan for free clusters 
5:  3000 Time for data buffers to age before flushing 
6:   500 Time for non-data (dir, bitmap, etc) buffers to age before flushing 
7:  1884 Time buffer cache load average constant 
8:     2 LAV ratio (used to determine threshold for buffer fratricide). 
 
 
µ«ÓÐÊý¾ÝдÈ뻺³åʹ֮±ä³Édirtyʱ£¬ËùÓеÄdirty»º³å±»Á¬½Óµ½Ò»¸öBUF_DIRTY 
LRUÁ´±íÖУ¬bdflush»á½«Êʵ±ÊýÄ¿µÄ»º³å¿éдµ½´ÅÅÌÉÏ¡£Õâ¸öÊýÖµµÄȱʡֵΪ500¡£ 
 
9.3.2  update½ø³Ì 
 
updateÃüÁî²»½ö½öÊÇÒ»¸öÃüÁËü»¹ÊÇÒ»¸öºǫ́½ø³Ì¡£µ±×÷Ϊ³¬¼¶Óû§ÔËÐÐʱ 
£¨ÔÚϵͳ³õʼ»¯Ê±£©Ëü½«ÖÜÆÚÐÔµ÷ÓÃϵͳ·þÎñÀý³Ì½«ÀϵÄdirty»º³å³åË¢µ½´ÅÅÌÉÏ 
È¥¡£ËüËùÍê³ÉµÄÕâ¸ö¹¤×÷ÓëbdflushÀàËÆ¡£µ±Ò»¸ödirty»º³åÍê³É´Ë²Ù×÷ºó,Ëü½« 
°Ñ±¾Ó¦Ð´Èëµ½¸÷×Ô´ÅÅÌÉϵÄʱ¼ä±ê¼Çµ½ÆäÖС£updateÿ´ÎÔËÐÐʱËü½«ÔÚϵͳµÄËù 
ÓÐdirty»º³åÖвéÕÒÄÇЩ³åˢʱ¼äÒѹýÆÚµÄ¡£ÕâЩ¹ýÆÚ»º³å¶¼±»Ð´Èëµ½´ÅÅÌ¡£ 
 
9.4  /procÎļþϵͳ 
 
/procÎļþÏµÍ³ÕæÕýÏÔʾÁËLinuxÐéÄâÎļþϵͳµÄÄÜÁ¦¡£ÊÂʵÉÏËü²¢²»´æÔÚ-²»¹Ü 
ʱ/procĿ¼»¹ÊÇÆä×ÓĿ¼ºÍÎļþ¶¼²»ÕæÕýµÄ´æÔÚ¡£µ«ÊÇÎÒÃÇÊÇÈçºÎÄܹ»Ö´ÐÐcat 
/proc/devicesÃüÁîµÄ£¿/procÎļþϵͳÏóÒ»¸öÕæÕýµÄÎļþϵͳһÑù½«ÏòÐéÄâÎļþ 
ϵͳע²á¡£È»¶øµ±ÓжÔ/procÖеÄÎļþºÍĿ¼µÄÇëÇó·¢Éúʱ,VFSϵͳ½«´ÓºËÐÄÖР
µÄÊý¾ÝÖÐÁÙʱ¹¹ÔìÕâЩÎļþºÍĿ¼¡£ÀýÈçºËÐĵÄ/proc/devicesÎļþÊÇ´ÓÃèÐðÆä 
É豸µÄÄÚºËÊý¾Ý½á¹¹ÖвúÉú³öÀ´¡£/procÎļþϵͳÌṩ¸øÓû§Ò»¸öºËÐÄÄÚ²¿¹¤×÷µÄ 
¿É¶Á´°¿Ú¡£¼¸¸öLinux×Óϵͳ£¬ÈçÔÚmodulesÒ»ÕÂÃèÐðµÄLinuxºËÐÄÄ£¿é¶¼ÔÚ/proc 
ÎļþϵͳÖд´½¨Èë¿Ú¡£ 
 
 
 
9.5  Éè±¸ÌØÊâÎļþ 
 
ºÍËùÓÐUnix°æ±¾Ò»ÑùLinux½«Ó²¼þÉ豸¿´³ÉÌØÊâµÄÎļþ¡£Èç/dev/null±íʾһ¸ö¿Õ 
É豸¡£É豸Îļþ²»Ê¹ÓÃÎļþϵͳÖеÄÈκÎÊý¾Ý¿Õ¼ä£¬Ëü½ö½öÊǶÔÉ豸Çý¶¯µÄ·ÃÎÊ 
Èë¿Úµã¡£EXT2ÎļþϵͳºÍLinux VFS¶¼½«É豸ÎļþʵÏÖ³ÉÌØÊâµÄinodeÀàÐÍ¡£ÓÐÁ½ 
ÖÖÀàÐ͵ÄÉ豸Îļþ£º×Ö·ûÓë¿éÉè±¸ÌØÊâÎļþ¡£ÔÚºËÐÄÄÚ²¿É豸Çý¶¯ÊµÏÖÁËÀàËÆÎÄ 
¼þµÄ²Ù×÷¹ý³Ì£ºÎÒÃÇ¿ÉÒÔ¶ÔËüÖ´Ðдò¿ª¡¢¹Ø±ÕµÈ¹¤×÷¡£×Ö·ûÉ豸ÔÊÐíÒÔ×Ö·ûģʽ 
½øÐÐI/O²Ù×÷¶ø¿éÉ豸µÄI/O²Ù×÷ÐèҪͨ¹ýbuffer  cache¡£µ±¶ÔÒ»¸öÉ豸Îļþ·¢ 
³öµÄI/OÇëÇ󽫱»´«µÝµ½ÏàÓ¦µÄÉ豸Çý¶¯¡£³£³£ÕâÖÖÉ豸Îļþ²¢²»ÊÇÒ»¸öÕæÕýµÄÉè 
±¸Çý¶¯¶ø½ö½öÊÇÒ»¸öαÉ豸Çý¶¯£¬ÈçSCSIÉ豸Çý¶¯²ã¡£É豸Îļþͨ¹ý±íʾÉ豸Àà 
Ð͵ÄÖ÷ÀàÐͱêÖ¾·ûºÍ±íʾµ¥Ôª»òÖ÷ÀàÐÍʵÀýµÄ´ÓÀàÐÍÀ´ÒýÓá£ÀýÈçÔÚϵͳÖеÚÒ» 
¸öIDE¿ØÖÆÆ÷ÉϵÄIDEÓ²Å̵ÄÖ÷É豸ºÅΪ3¶øÆäµÚÒ»¸ö·ÖÇøµÄ´Ó±êÖ¾·ûΪ1¡£ËùÒÔÖ´ 
ÐÐls-l /dev/hda1½«ÓÐÈçϽá¹û£º 
 
$ brw-rw----   1 root    disk       3,    1  Nov 24  15:09 /dev/hda1 
 
ÔÚºËÐÄÄÚ²¿Ã¿¸öÉ豸ÓÉΨһµÄkdev_t½á¹¹À´±íʾ£¬Æä³¤¶ÈΪÁ½×Ö½Ú£¬Ê××Ö½Ú°üº¬ 
´ÓÉ豸ºÅ¶øÎ²×Ö½Ú°üº¬Ö÷É豸ºÅ¡£ 
ÉÏÀýÖеĺËÐÄIDEÉ豸Ϊ0x0301¡£±íʾ¿é»òÕß×Ö·ûÉ豸µÄEXT2inodeÔÚÆäµÚÒ»¸ö 
Ö±½Ó¿éÖ¸Õë°üº¬ÁËÉ豸µÄÖ÷´ÓÉ豸ºÅ¡£µ±VFS¶ÁÈ¡Ëüʱ£¬±íʾËüµÄVFS inode½á¹¹ 
µÄi_rdevÓò±»ÉèÖóÉÏàÓ¦µÄÉ豸±êÖ¾·û¡£ 
   
 
-- 
¡ù À´Ô´:¡¤BBS Ë®Ä¾Ç廪վ bbs.net.tsinghua.edu.cn¡¤[FROM: 202.114.2.2] 

BBSˮľÇ廪վ¡Ã¾«»ªÇø