3Linux磁盘与档案系统管理7347.docx
Linux 磁盘与档案系统管理1认识 EXXT2 档档案系统11硬盘物理组组成1磁盘分割 ( Paartittion )2档案系统33Linuxx 的 EXTT2 档案案系统( inodde )44EXT2/EXT33 档案的的存取与日日志式档案案系统的功功能8数据的不一一致 (IInconnsisttent) 状态11Linuxx 档案系系统的运作作12挂载点的意意义 (mmountt poiint)113其它 Liinux 支持的档档案系统113档案系统的的简单操作作14磁盘与目录录的容量114df14du17连结档的介介绍:lnn18# Harrd Liink (硬式连结结或实际连连结)19# Symmboliic Liink (符号连结结,亦即是是快捷方式式)20关于目录的的 linnk 数量量22磁盘的分割割、格式化化、检验与与挂载233磁盘分割: fdiisk244# 删除磁磁盘分割槽槽27新增磁盘分分割槽288# 操作环环境的说明明30# 注意事事项:311磁盘格式化化31mkboootdissk (制制作软盘开开机片)33fdforrmat (进行软软盘低阶格格式化)33磁盘检验: fscck, bbadbllockss33fsck334badbllockss35sync335磁盘挂载与与卸载366umounnt (将将装置档案案卸载)39磁盘参数修修订39mknodd39e2labbel400tune22fs411# hdpparm441设定开机挂挂载43各式磁盘挂挂载与中文文编码挂载载还有 UUSB 随随身碟444挂载软盘444挂载 Wiindowws 磁盘盘44挂载 USSB 随身身碟45开机挂载 /etcc/fsttab 及及 /ettc/mttab455特殊装置 loopp 挂载49建立大型档档案49格式化499挂载50虚拟内存之之建置500建立虚拟内内存装置551建立虚拟内内存档案551虚拟内存的的限制533本章习题练练习:533Linuxx 磁盘与与档案系统统管理我们在前面面的档案权权限介绍的的章节当中中,提到很很多的权限限与属性的的观念,那那么接下来来要了解的的是,这些些属性是记记录在硬盘盘的那个地地方?这里里就要特别别了解到 Linuux 档案案系统( fileesysttem )是如何记记录档案,与档案是如何被读取的啰!而要了解整个档案系统的观念,就不能不知道硬盘的组成组件!所以,在这个章节当中,我们由最基础的硬盘组成组件介绍起,并介绍 inode 与连结文件等基本知识,以及如何利用开机即可挂载的方式来使我们的各个 partition 可以在开机时就已经进行好挂载的动作喔!认识 EXXT2 档档案系统既然这个章章节主要在在探讨 LLinuxx 的磁盘盘档案系统统,所以我我们当然就就需要先来来了解一下下硬盘是个个什么东西西啦!首先先,我们就就来看一看看硬盘的物物理组成,了了解了物理理组成之后后,再来说说明一下怎怎么样进行行硬盘的分分割 (ppartiitionn) 吧!硬盘物理组组成就硬盘的物物理组件来来说,硬盘盘其实是由由许许多多多的圆形硬硬盘盘所组组成的,依依据硬盘盘盘能够容纳纳的数据量量,而有所所谓的单碟碟 (一块硬硬盘里面只只有一个硬硬盘盘) 或者是多多碟 (一块硬硬盘里面含含有多个硬硬盘盘)的硬盘。在在这里我们们以单一个个硬盘盘来来说明,硬硬盘盘可由由底下的图图形来示意意:图二、磁柱示意图图一、硬盘盘示意图首先,硬盘盘里面一定定会有所谓谓的磁头 ( Heead ) 在进进行该硬盘盘盘上面的的读写动作作,而磁头头是固定在在机械手臂臂上面的,机机械手臂上上有多个磁磁头可以进进行读取的的动作。而而当磁头固固定不动 (假设机机械手臂不不动) ,硬盘盘盘转一圈圈所画出来来的圆就是是所谓的磁磁道( TTrackk );而而如同我们们前面刚刚刚提到的,一一块硬盘里里面可能具具有多个硬硬盘盘,所所有硬盘盘盘上面相同同半径的那那一个磁道道就组成了了所谓的磁磁柱( CCylinnder )。例如上图二二所示意,在在两个硬盘盘盘上面的的同一个磁磁道就是一一个磁柱啦啦!这个磁磁柱也是磁磁盘分割( parrtitiion )时的最小小单位了;另外,由由圆心向外外划直线,则则可将磁道道再细分为为一个一个个的扇区( Secctor ),这个个扇区就是是硬盘盘上上面的最小小储存物理理量了!通通常一个 secttor 的的大小约为为 5122 Byttes 。以以上就是整整个硬盘的的基本组件件。在计算整个个硬盘的储储存量时,简简单的计算算公式就是是:Cyllindeer x Headd x SSectoor x 512 Bytees。另外外,硬盘在在读取时,主主要是硬硬盘盘会转转动,利用用机械手臂臂将磁头移移动到正确确的数据位位置(单方向的的前后移动动),然后将将数据依序序读出。在这个操操作的过程程当中,由由于机械手手臂上的磁磁头与硬盘盘盘的接触触是很细微微的空间,如果有抖动或者是脏污在磁头与硬盘盘之间时,就会造成数据的损毁或者是实体硬盘整个损毁因此,正确确的使用计计算机的方方式,应该该是在计算算机通电之之后,就绝绝对不要移移动主机,并并免抖动到到硬盘,而而导致整个个硬盘数据据发生问题题啊!另外外,也不要要随便将插插头拔掉就就以为是顺顺利关机!因为机械械手臂必须须要归回原原位,所以以使用操作作系统的正正常关机方方式,才能能够有比较较好的硬盘盘保养啊!因为他会会让硬盘的的机械手臂臂归回原位位啊!磁盘分割 ( Paartittion )在了解了硬硬盘的物理理组件之后后,再接着着下来介绍绍的就是硬硬盘的分割割( Paartittion )啰!为什么么要进行硬硬盘分割啊啊?!因为为我们必须须要告诉操操作系统:我这块块硬盘可以以存取的区区域是由 A 磁柱柱到 B 磁柱,如如此一来,操作系统才能够控制硬盘磁头去 A-B 范围内的磁柱存取数据;如果没有告诉操作系统这个信息,那么操作系统就无法利用我们的硬盘来进行数据的存取了,因为操作系统将无法知道他要去哪里读取数据啊!这就是磁盘分割( Partition )的重点了:也就是记录每一个分割区( Partition )的起始与结束磁柱!好了,那么么这个分割割区的起始始与结束磁磁柱的数据据放在哪里里呢?!那那就是我们们在 Liinux 安装与多多重开机技技巧那个章章节提到的的主要开机机扇区( Mastter BBoot Recoorderr, MBBR )啰啰!事实上上, MBBR 就是是在一块硬硬盘的第零零轨上面,这这也是计算算机开机之之后要去利利用该硬盘盘时,必须须要读取的的第一个区区域!在这这个区域内内记录的就就是硬盘里里面的所有有分割信息息,以及开开机的时候候可以进行行开机管理理程序的写写入的处所所啊!所以以,当一个个硬盘的 MBR 坏掉时,由由于分割的的数据不见见了,呵呵呵,那么这这个硬盘也也就几乎可可以说是寿寿终正寝了了,因为操操作系统不不知道该去去哪个磁柱柱上读取数数据啊那么 MBBR 有什什么限制呢呢?他最大大的限制来来自于他的的大小不够够大到储存存所有分割割与开机管管理程序的的信息,因因此,MBBR 仅提提供最多四四个 paartittion 的记忆,这这就是所谓谓的 Prrimarry (PP)与 Exttendeed (EE) 的 parrtitiion 最最多只能有有四个的原原因了。所所以说,如如果你预计计分割超过过 4 个 parrtitiion 的的话,那么么势必需要要使用 33P + 1E ,并并且将所有有的剩余空空间都拨给给 Exttendeed 才行行( 记得呦呦! Exxtendded 最最多只能有有一个 ),否则只只要 3PP + EE 之后还还有剩下的的空间,那那么那些容容量将成为为废物而浪浪费了,所所以结论就就是如果果您要分割割硬盘时,并并且已经预预计规划使使用掉 MMBR 所所提供的 4 个 parrtitiion ( 3P + E 或 4P )那么磁磁盘的全部部容量需要要使用光,否否则剩下的的容量也不不能再被使使用。不不过,如果果您仅是分分割出 11P + 1E 的的话,那么么剩下的空空间就还能能再分割两两个 prrimarry paartittion !档案系统在告知系统统我的 ppartiitionn 所在的的起始与结结束磁柱之之后,再来来则是需要要将 paartittion 格式化为为我的操操作系统认认识的档案案系统( Fileesysttem )啰!因因为每个操操作系统认认识的 ffilessysteem 并不不相同!例例如 Wiindowws 操作作系统在预预设状态下下就无法认认识 Liinux 的档案系系统 ( 这里指 LLinuxx 的标准准档案系统统 extt2 )。所所以当然要要针对我们们的操作系系统来格式式化 paartittion 啰!我们可以说说,每一个个 parrtitiion 就就是一个 Fileesysttem ,那那么一个 parttitioon 是否否可以具有有两个 FFilessysteem 呢?!理论上上应该是不不行的!因因为每个档档案系统都都有其独特特的支持方方式,例如如 Linnux 的的 extt3 就无无法被 WWindoows 系系统所读取取!而你将将一个 ppartiitionn 格式化化的时候,总总不能格式式化为 eext3 也同时格格式化为 fat332 吧?!那是不不可能的啊啊!不论是哪一一种 fiilesyystemm ,数据据总是需要要储存的吧吧!既然硬硬盘是用来来储存数据据的,想当当然尔,数数据就必须须写入硬盘盘啦!刚刚刚我们提到到硬盘的最最小储存单单位是 ssectoor ,不不过数据所所储存的最最小单位并并不是 ssectoor 喔,因因为用 ssectoor 来储储存太没有有效率了。怎怎么说呢?因为一个个 secctor 只有 5112 Byytes ,而磁头头是一个一一个 seectorr 的读取取,也就是是说,如果果我的档案案有 100 MByytes ,那么为为了读这个个档案,我我的磁头必必须要进行行读取 (I/O) 204480 次次!为了克服这这个效率上上的困扰,所所以就有逻逻辑区块( Bloock )的产生了了!逻辑区区块是在 parttitioon 进行行 fillesysstem 的格式化化时,所指指定的最最小储存单单位,这这个最小储储存单位当当然是架构构在 seectorr 的大小小上面( 因为 seectorr 为硬盘盘的最小物物理储存单单位啊! ),所以以啦, BBlockk 的大小小为 seectorr 的 2 的次次方倍数。此此时,磁头头一次可以以读取一个个 bloock ,如如果假设我我们在格式式化的时候候,指定 Blocck 为 4 KKBytees ( 亦即由连连续的八个个 secctor 所构成一一个 bllock ),那么么同样一个个 10 MByttes 的的档案,磁磁头要读取取的次数则则大幅降为为 25660 次,这这个时候可可就大大的的增加档案案的读取效效能啦!不过,Bllock 单位的规规划并不是是越大越好好喔!怎么么说呢?因因为一个 Blocck 最多多仅能容纳纳一个档案案 (这里指指 Linnux 的的 extt2 档案案系统)!这有什什么问题呢呢?举例来来说好了,假假如您的 Blocck 规划划为 4 KByttes ,而而您有一个个档案大小小为 0.1 KBBytess ,这个个小档案将将占用掉一一个 Bllock 的空间,也也就是说,该该 Bloock 虽虽然可以容容纳 4 Kbyttes 的的容量,然然而由于档档案只占用用了 0.1 Kbbytess ,所以以,实际上上剩下的 3.9 KByttes 是是不能再被被使用了,所所以,在考考虑 Bllock 的规划时时,需要同同时考虑到到: * 档案读读取的效能能 * 档案大大小可能造造成的硬盘盘空间浪费费因此,在规规划您的磁磁盘时,需需要留意到到您主机的的用途来进进行规划较较佳!例如如 BBSS 主机由由于文章较较短,也就就是说档案案较小,那那么 Bllock 小一点的的好;而如如果您的主主机主要用用在储存大大容量的档档案,那么么考虑到效效能,当然然 Bloock 理理论上,规规划的大一一点会比较较妥当啦!Superrblocck:如同同前面说的的,当我们们在进行磁磁盘分割( parrtitiion )时,每个个磁盘分割割槽( ppartiitionn )就是是一个档案案系统( fileesysttem ),而每个档档案系统开开始的位置置的那个 blocck 就称称为 suuperbblockk ,supeerbloock 的的作用是储储存像是档档案系统的的大小、空空的和填满满的区块,以以及他各自自的总数和和其它诸如如此类的信信息等等,这也就是说,当您要使用这一个磁盘分割槽( 或者说是档案系统 )来进行数据存取的时候,第一个要经过的就是 superblock 这个区块了,所以啰, superblock 坏了,您的这个磁盘槽大概也就回天乏术了!Linuxx 的 EXTT2 档案案系统( inodde )看完了上面面的说明,您您应该对于于硬盘有一一定程度的的认识了!好了,那那么接下来来就是要谈谈一谈 LLinuxx 的档案案系统( Fileesysttem )啰!我们们这里以 Linuux 最标标准的 eext2 这个档案案系统来作作为说明。还还记得我们们在 Liinux 档案属性性与目录配配置那个章章节提到的的,在 LLinuxx 系统当当中,每个个档案不止止有档案的的内容数据据,还包括括档案的种种种属性,例例如:所属属群组、所所属使用者者、能否执执行、档案案建立时间间、档案特特殊属性等等等。由于于 Linnux 操操作系统是是一个多人人多任务的的环境,为为了要保护护每个使用用者所拥有有数据的隐隐密性,所所以具有多多样化的档档案属性是是在所难免免的!在标标准的 eext2 档案系统统当中,我我们将每个个档案的内内容分为两两个部分来来储存,一一个是档案案的属性,另另一个则是是档案的内内容。为了应付这这两个不同同的咚咚,所所以 exxt2 规规划出 iinodee 与 Bloock 来来分别储存存档案的属属性( 放在 innode 当中 )与档案案的内容( 放置在在 Bloock aarea 当中 )。当我我们要将一一个 paartittion 格式化( formmat )为 extt2 时,就就必须要指指定 innode 与 Bloock 的的大小才行行,也就是是说,当 parttitioon 被格格式化为 ext22 的档案案系统时,他他一定会有有 inoode ttablee 与 bloock aarea 这两个区区域。Blockk 已经在在前面说过过了,他是是数据储存存的最小单单位。那么么 inoode 是是什么?!简单的说说, Bllock 是记录档案内容容数据的的区域,至至于 innode 则是记录录该档案案的相关属属性,以及及档案内容容放置在哪哪一个 BBlockk 之内的信息。简单的说, inode 除了记录档案的属性外,同时还必须要具有指向( pointer )的功能,亦即指向档案内容放置的区块之中,好让操作系统可以正确的去取得档案的内容啊!底下几个是 inode 记录的信息(当然不止这些): * 该档案案的拥有者者与群组(owneer/grroup); * 该档案案的存取模模式(reead/wwritee/exccute); * 该档案案的类型(typee); * 该档案案建立或状状态改变的的时间(cctimee)、最近近一次的读读取时间(atimme)、最最近修改的的时间(mmtimee); * 该档案案的容量; * 定义档档案特性的的旗标(fflag),如 SeetUIDD.; * 该档案案真正内容容的指向 (poiinterr);我们在前一一章 Liinux 档案与目目录管理当当中提到过过利用 lls 查询询档案所记记载的时间间,就是 atimme / ctimme / mtimme 三种种时间。这这三种时间间的意义我我们已经在在前一章的的 touuch 指指令介绍时时提过,这这三种时间间就是记录录在 innode 里面的啦啦如果回回到前一章章,您会发发现,我们们可以利用用 ls 的相关功功能来查询询到时间喔喔!而预设设的显示时时间是 mmtimee 。roottlinnux # lls -lla -timee=atiime PPATH那个 PAATH 是是您所想要要查询的档档案或目录录名称。利利用上面的的 ls 相关参数数,就可以以取得您想想要知道的的档案相关关的三种时时间啰至至于一个 inodde 的大大小为 1128 bbytess 这么大大 (可以使使用底下要要介绍的 dumppe2fss 来查阅阅 inoode 的的大小喔!) !好了了,那么我我的 Liinux 系统到底底是如何读读取一个档档案的内容容呢?底下下我们分别别针对目录录与档案来来说明: * 目录:当我们在 Linuux 下的的 extt2 档案案系统建立立一个目录录时, eext2 会分配一一个 innode 与至少一一块 Bllock 给该目录录。其中,inode 记录该目录的相关属性,并指向分配到的那块 Block ;而 Block 则是记录在这个目录下的相关连的档案(或目录)的关连性! * 档案案:当我们在 Linuux 下的的 extt2 建立立一个一般般档案时, ext2 会分配至少一个 inode 与相对于该档案大小的 Block 数量给该档案。例如:假设我的一个 Block 为 4 Kbytes ,而我要建立一个 100 KBytes 的档案,那么 linux 将分配一个 inode 与 25 个 Block 来储存该档案!要注意的是是, innode 本身并不不纪录文件件名,而是是记录档案案的相关属属性,至于于文件名则则是记录在在目录所属属的 bllock 区域!那么么档案与目目录的关系系又是如何何呢?就如如同上面的的目录提到到的,档案案的相关连连结会记录录在目录的的 bloock 数数据区域,所以当我们要读取一个档案的内容时,我们的 Linux 会先由根目录 / 取得该档案的上层目录所在 inode ,再由该目录所记录的档案关连性 (在该目录所属的 block 区域) 取得该档案的 inode ,最后在经由 inode 内提供的 block 指向,而取得最终的档案内容。我们以 /etc/crontab 这个档案的读取为例,他的内容数据是这样取得的:图三、读取取 /ettc/crrontaab 的简简易流程示示意。一块 paartittion 在 extt2 底下下会被格式式化为 iinodee tabble 与与 bloock aarea 两个区域域,所以在在图三里面面,我们将将 parrtitiion 以以长条的方方式来示意意,会比较较容易理解解的啦!而而读取 /etc/cronntab 的流程为为: 1. 操作系系统根据根根目录( / )的的相关资料料可取得 /etcc 这个目目录所在的的 inoode ,并并前往读取取 /ettc 这个个目录的所所有相关属属性; 2. 根据 /etcc 的 inoode 的的资料,可可以取得 /etcc 这个目目录底下所所有档案的的关连数据据是放置在在哪一个 Blocck 当中中,并前往往该 bllock 读取档案案的关连性性内容; 3. 由上个个步骤的 Blocck 当中中,可以知知道 crrontaab 这个个档案的 inodde 所在在地,并前前往该 iinodee ; 4. 由上个个步骤的 inodde 当中中,可以取取得 crrontaab 这个个档案的所所有属性,并并且可前往往由 innode 所指向的的 Bloock 区区域,顺利利的取得 cronntab 的档案内内容。整个读取的的流程大致致上就是这这样,如果果您想要实实作一下以以了解整个个流程的话话,可以这这样试做看看看:1. 察看看一下根目目录所记载载的所有档档案关连性性数据roottlinnux # lls -llia / 2 ddrwxrr-xr-x 224 rooot rroot 40996 Juul 166 23:45 . 2 ddrwxrr-xr-x 224 rooot rroot 40996 Juul 166 23:45 .7194889 drrwxr-xr-xx 833 rooot rooot 1122888 Jull 21 04:002 ettc 5232265 ddrwxrr-xr-x 224 rooot rroot 40996 Juun 255 20:16 vvar# 注意看看一下,在在上面的 . 与 . 都是连结结到 innode 号码为 22 的那个个 inoode ,# 也就是是说, / 与其上上层目录 . 都都是指向同同一个 iinodee nummber 啊!两者者是相同的的。# 而在根根目录所记记载的档案案关连性 (在 bloock 内内) 得到 /eetc 的的 inoode nnumbeer# 为 77194889 那个个 inoode nnumbeer 喔!2. 察看看一下 /etc/ 内的档档案关连性性的数据roottlinnux # lls -lliad /etcc/croontabb /ettc/.7194889 drrwxr-xr-xx 833 rooot rooot 1122888 Jull 21 04:002 /eetc/.7234996 -rrw-r-r- 11 rooot rooot 6633 Jull 4 12:003 /eetc/ccronttab# 瞧!此此时就能够够将 /eetc/ccronttab 找找到关连性性啰!所以您知道道,目录的的最大功能能就是在提提供档案的的关连性,在在关连性里里面,当然然最主要的的就是档档名与 iinodee 的对应应数据啰啰!另外,关关于 EXXT2 档档案系统,这这里有几点点小事情要要提醒一下下: * extt2 与 extt3 档案案在建立时时 (foormatt) 就已已经设定好好固定的 inodde 数与与 bloock 数数目了; * 格式化化 Linnux 的的 extt2 档案案系统,可可以使用 mke22fs 这这个程序来来执行! * extt2 允许许的 bllock sizee 为 10224, 22048 及 40996 byytes; * 一个 paartittion (fillesysstem) 所能容容许的最大大档案数,与与 inoode 的的数量有关关,因为一一个档案至至少要占用用一个 iinodee 啊! * 在目录录底下的档档案数如果果太多而导导致一个 Blocck 无法法容纳的下下所有的关关连性数据据时,Liinux 会给予该该目录多一一个 Bllock 来继续记记录关连数数据; * 通常 innode 数量的多多寡设定为为 (paartittion 的容量) 除以 (一个 innode 预计想要要控制的容容量)。举例来说说,若我的的 bloock 规规划为 44Kbyttes,假假设我的一一个 innode 会控制两两个 bllock ,亦即是是假设我的的一个档案案大致的容容量在 88Kbyttes 左左右时,假假设我的这这个 paartittion 容量为 11GByttes,则 inoode 数数量共有:( 1GG * 11024MM/G * 10224K/MM ) / ( 88K ) = 13310722 个。而而一个 iinodee 占用 1228 byytes 的空间,因因此格式化化时就会有有 ( 11310772个 * 1128byytes/个 ) = 1677772116 byyes = 163384 KKbytees 的 inoode ttablee 。也就就是说,这这一个 11GB 的的 parrtitiion 在在还没有储储存任何数数据前,就就已经少了了 16MMBytees 的容容量啊! * 因为一一个 innode 只能记录录一个档案案的属性,所所以 innode 数量比 bblockk 多是没没有意义的的!举上面面的例子来来说,我的的 Bloock 规规划为 44 Kbyytes ,所以 11GB 大大概就有 2621144 个个 4Kbbytess 的 bloock ,如如果一个 blocck 对应应一个 iinodee 的话,那那么当我的的 inoode 数数量大于 2621144 时时,多的 inodde 将没没有任何用用处,徒然然浪费硬盘盘的空间而而已!另外外一层想法法,如果我我的档案容容量都很大大,那么一一个档案占占用一个 inodde 以及及数个 bblockk,当然 iinodee 数量就就可以规划划的少很多多啦! * 当 bloock 大大小越小,而而 inoode 数数量越多,则则可利用的的空间越多多,但是大大档案写入入的效率较较差;这种种情况适合合档案数量量多,但是是档案容量量小的系统统,例如 BBS 或者是新新闻群组( Newws )这这方面服务务的系统; * 当 Bloock 大大小越大,而而 inoode 数数量越少时时,大档案案写入的效效率较佳,但但是可能浪浪费的硬盘盘空间较多多;这种状状况则比较较适合档案案容量较大大的系统!简单的归纳纳一下, ext22 有几个个特色: * Bloocks 与 inoddes 在在一开始格格式化时 (forrmat) 就已经经固定了; * 一个 paartittion 能够容纳纳的档案数数与 innode 有关; * 一般来来说,每 4Kbyytes 的硬盘空空间分配一一个 innode ; * 一个 innode 的大小为为 1288 byttes; * Bloock 为为固定大小小,目前支支持 10024/22048/40966 byttes 等等; * Bloock 越越大,则损损耗的硬盘盘空间也越越多。 * 关于单单一档案:若 bloock ssize=10244,最大容容量为 116GB,若若 bloock ssize=40966,容量最最大为 22TB; * 关于整整个 paartittion :若 bloock ssize=10244,则容量量达 2TTB,若 bllock sizee=40996,则容容量达 332TB。 * 文件名名最长达 255 字符,完完整文件名名长达 44096 字符。另外,关于于 parrtitiion 的的使用效率率上,当您您的一个 parttitioon 规划划的很大时时,例如 100GGB 这么么大,由于于硬盘上面面的数据总总是来来去去去的,所所以,整个个 parrtitiion 上上面的档案案通常无法法连续写在在一起,而而是填入式式的将数据据填入没有有被使用的的 bloock 当当中。如果果档案写入入的 bllock 真的分的的很散,此此时就会有有所谓的档档案离散的的问题发生生了。虽然然我们的 ext22 在 inoode 处处已经将该该档案所记记录的 bblockk nummber 都记上了了,所以资资料可以一一次性读取取,但是如如果档案真真的太过离离散,确实实还是会发发生读取效效率低落的的问题。果果真如此,那那么可以将将整个 ppartiitionn 内的数数据全部复复制出来,将将该 paartittion 重新格式式化,再将将数据给他他复制回去去即可解决决。此外,如果果 parrtitiion 真真的太大了了,那么当当一个档案案分别记录录在这个 parttitioon 的最最前面与最最后面的 blocck,此时会造造成硬盘的的机械手臂臂移动幅度度过大,也也会造成数数据读取效效能的低落落。因此, partition 的规划并不是越大越好,而是真的要针对您的主机用途来进行规划才行!_EXT2/EXT33 档案的的存取与日日志式档案案系统的功功能综合上面谈谈的种种,我我们可以知知道,当一一个 exxt2 的的 fillesysstem 被建立时时,他拥有有 supperbllock / grroup desccripttion / bllock bitmmap / inoode bbitmaap / inodde taable / daata bblockks 等等等区域。要要注意的是是,每个 ext22 fillesysstem 在被建立立的时候,会会依据 ppartiitionn 的大小小,给予数数个 bllock grouup ,而而每个 bblockk grooup 就就有上述的的这些部分分。整个 fileesysttem 的的架构可以以下图展现现:图四、整个个 fillesysstem 的展现示示意图我们将整个个 fillesysstem 简单化,假假设仅有一一个 bllock grouup ,那那么上面的的各个部分分分别代表表什么呢? * SupperBllock:如前所述述, Suuperbblockk 是记录录整个 ffilessysteem 相关关信息的地地方,没有有 Supperbllock ,就没有有这个 ffilessysteem 了。他他记录的信信息主要有有: o bblockk 与 inoode 的的总量; o 未未使用与已已使用的 inodde / blocck 数量量; o 一一个 bllock 与一个 iinodee 的大小小; o ffilessysteem 的挂挂载时间、最最近一次写写入数据的的时间、最最近一次检检验磁盘 (fscck) 的的时间等档档案系统的的相关信息息; o 一一个 vaalid bit 数值,若若此档案系系统已被挂挂载,则 valiid biit 为 0 ,若若未被挂载载,则 vvalidd bitt 为 1 。 * Grooup DDescrriptiion:纪纪录此 bblockk 由由何何处开始记记录; * Bloock bbitmaap:此处处记录那个个 bloock 有有没有被使使用; * Inoode bbitmaap:此处处记录那个个 inoode 有有没有被使使用; * Inoode ttablee:为每个个 inoode 数数据存放区区; * Datta Bllockss:为每个个 bloock 数数据存放区区。如果想要知知道某个 ext22/extt3 的档档案系统内内,关于上上述提到的的相关信息息时,可以以使用 ddumpee2fs 这个指令令来读取,举举例来说,鸟鸟哥将我自自己的主机机 /deev/hdda1 读读出 exxt3 的的讯息:roottlinnux # ddumpee2fs /devv/hdaa1Filessysteem voolumee namme: /Filessysteem sttate: cleeanErrorrs beehaviior: ConntinuueFilessysteem OSS typpe: LinnuxInodee couunt: 153370888Blockk couunt: 153362077Free bloccks: 7355609Free inoddes: 139930899Firstt bloock: 0Blockk sizze: 40996Filessysteem crreateed: Satt Junn 25 16:221:133 20005Last mounnt tiime: Satt Jull 16 23:445:044 20005Last writte tiime: Satt Jull 16 23:445:044 20005Last checcked: Satt Junn 25 16:221:133 20005Firstt inoode: 11Inodee sizze: 1288Journnal iinodee: 8Groupp 0: (Bloocks 0-322767) Priimaryy supperbllock at 00, Grroup desccripttors at 11-1 Resserveed GDDT bllockss at 2-3776 Bloock bbitmaap att 3777 (+3377), Inoode bbitmaap att 3788 (+3378) Inoode ttablee at 379-14000 (+3379) 0 ffree bloccks, 324224 frree iinodees, 111 diirecttoriees Freee bllockss: Freee innodess: 2881-322704Groupp 1: (Bloocks 327668-655535) Bacckup supeerbloock aat 322768