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
Õâ¸öÖ÷´ÓÐÞ¶©°æ±¾ºÅÈð²×°´úÂëÄÜÅжϴËÎļþϵͳÊÇ·ñÖ§³ÖÖ»´æÔÚÓÚ
ij¸öÌØ¶¨°æ±¾ÎļþϵͳÖеÄÊôÐÔ¡£Í¬Ê±Ëü»¹ÊÇÌØÐÔ¼æÈݱêÖ¾ÒÔ°ïÖú°²
×°´úÂëÅжϴËÎļþϵͳµÄÐÂÌØÐÔÊÇ·ñ¿ÉÒÔ°²È«Ê¹Óá£
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ˮľÇ廪վ¡Ã¾«»ªÇø