您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Linux 磁盘与文件系统管理
第1页共16页-1-Linux磁盘与文件系统管理磁盘分割(Partition):在了解了硬盘的物理组件之后,再接着下来介绍的就是硬盘的分割(Partition)!为什么要进行硬盘分割?因为我们必须要告诉操作系统:『我这块硬盘可以存取的区域是由A磁柱到B磁柱』,如此一来,操作系统才能够控制硬盘磁头去A-B范围内的磁柱存取数据;这就是磁盘分割(Partition)的重点了:也就是记录每一个分割区(Partition)的起始与结束磁柱!文件系统:在告知系统我的partition所在的起始与结束磁柱之后,再来则是需要将partition格式化为『我的操作系统认识的文件系统(Filesystem)』!不论是哪一种文件系统,数据总是需要储存的!既然硬盘是用来储存数据的,想当然数据就必须写入硬盘!刚刚我们提到硬盘的最小储存单位是扇区,不过数据所储存的最小单位并不是扇区,因为用扇区来储存太没有效率了。怎么说呢?因为一个扇区只有512Bytes,而磁头是一个一个扇区的读取,也就是说,如果我的文件有10MBytes,那么为了读这个文件,我的磁头必须要进行读取(I/O)20480次!为了克服这个效率上的困扰,所以就有逻辑区块(Block)的产生了!逻辑区块是在硬盘分割进行硬盘的分割的格式化时,所指定的『最小储存单位』,这个最小储存单位当然是架构在扇区的大小上面(因为扇区为硬盘的最小物理储存单位啊!),所以,逻辑区块Block的大小为扇区的2的次方倍数。此时,磁头一次可以读取一个block,如果假设我们在格式化的时候,指定一个逻辑区块(Block)为4KBytes(亦即由连续的八个扇区所构成一个block),那么同样一个10MBytes的文件,磁头要读取的次数则大幅降为2560次,这个时候可就大大的增加文件的读取效能!不过,逻辑区块(Block)单位的规划并不是越大越好!怎么说呢?因为一个Block最多仅能容纳一个文件(这里指Linux的ext2文件系统)!这有什么问题呢?举例来说好了,假如您的Block规划为4KBytes,而您有一个文件大小为0.1KBytes,这个小文件将占用掉一个Block的空间,也就是说,该Block虽然可以容纳4Kbytes的容量,然而由于文件只占用了0.1Kbytes,所以,实际上剩下的3.9KBytes是不能再被使用了,所以,在考虑Block的规划时,需要同时考虑到:第2页共16页-2-文件读取的效能文件大小可能造成的硬盘空间浪费Linux的EXT2文件系统(inode):inode译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等在Linux系统当中,每个文件不止有文件的内容数据,还包括文件的种种属性,例如:所属群组、所属使用者、能否执行、文件建立时间、文件特殊属性等等。由于Linux操作系统是一个多人多任务的环境,为了要保护每个使用者所拥有数据的隐密性,所以具有多样化的文件属性是在所难免的!在标准的ext2文件系统当中,我们将每个文件的内容分为两个部分来储存,一个是文件的属性,另一个则是文件的内容。为了应付这两个不同的,所以ext2规划出inode与Block来分别储存文件的属性(放在节点inode当中)与文件的内容(放置在Blockarea当中)。当我们要将一个partition格式化(format)为ext2时,就必须要指定inode与Block的大小才行,也就是说,当partition被格式化为ext2的文件系统时,他一定会有inodetable与blockarea这两个区域。底下我们分别针对目录与文件来说明:目录:当我们在Linux下的ext2文件系统建立一个目录时,ext2会分配一个inode与至少一块Block给该目录。其中,inode记录该目录的相关属性,并指向分配到的那块Block;而Block则是记录在这个目录下的相关连的文件(或目录)的关连性!文件:当我们在Linux下的ext2建立一个一般文件时,ext2会分配至少一个inode与相对于该文件大小的Block数量给该文件。例如:假设我的一个Block为4Kbytes,而我要建立一个100KBytes的文件,那么linux将分配一个inode与25个Block来储存该文件!第3页共16页-3-要注意的是,节点inode本身并不纪录文件名,而是记录文件的相关属性,至于文件名则是记录在目录所属的block区域!那么文件与目录的关系又是如何呢?就如同上面的目录提到的,文件的相关连结会记录在目录的block数据区域,所以当我们要读取一个文件的内容时,我们的Linux会先由根目录/取得该文件的上层目录所在inode,再由该目录所记录的文件关连性(在该目录所属的block区域)取得该文件的inode,最后在经由inode内提供的block指向,而取得最终的文件内容。挂载点的意义(mountpoint):我们上面提到的都是关于文件系统(filesystem),但是要能够让我们的Linux使用的话,非得『挂载(mount)』上我们的Linux系统才行,举例来说,,我们将硬盘分割为几大部分,同时主要将/与/home设定为两个partition的挂载点。假设/是接在/dev/hda1,而/home是接在/dev/hda2上面,那么,也就是说,在/home底下的所有次目录,使用的都是/dev/hda2那个partition的资料!而非/home的则都是使用/dev/hda1的数据!请注意,挂载点一定是『目录』而不是文件!也就是说,这个挂载点就是进入该filesystem的入口!磁盘与目录的容量:在文字接口底下有什么方法可以查看目前的磁盘最大容量、已经使用掉的容量、目前所在目录的已使用容量?还有还有,怎么知道目前目录底下使用掉的硬盘容量呢?以及如何查询目前的inodes数目?底下我们就来谈一谈主要的两个指令:[root@linux~]#df[-ahikHTm][目录或文件名]参数:-a:列出所有的文件系统,包括系统特有的/proc等文件系统;-k:以KBytes的容量显示各文件系统;-m:以MBytes的容量显示各文件系统;-h:以人们较易阅读的GBytes,MBytes,KBytes等格式自行显示;第4页共16页-4--H:以M=1000K取代M=1024K的进位方式;-T:连同该partition的filesystem名称(例如ext3)也列出;-i:不用硬盘容量,而以inode的数量来显示范例:范例一:将系统内所有的partition列出来![root@linux~]#dfFilesystem1K-blocksUsedAvailableUse%Mountedon/dev/hda159522523012332263268054%//dev/shm19283601928360%/dev/shm/dev/hda5949264422160487810603%/home#特别注意,在Linux(FC4)底下,如果df没有加任何参数,那么预设会将系统内所有的(不含特殊内存内的文件系统与swap)都以Kbytes的容量来列出来!至于那个/dev/shm是与内存有关的挂载,先不要理他!范例二:将容量结果以易读的容量格式显示出来[root@linux~]#df-hFilesystemSizeUsedAvailUse%Mountedon/dev/hda15.7G2.9G2.6G54%//dev/shm189M0189M0%/dev/shm/dev/hda59.1G217M8.4G3%/home#不同于范例一,这里会以G/M等容量格式显示出来,比较容易看!范例三:将/etc底下的可用的磁盘容量以易读的容量格式显示[root@linux~]#df-h/etcFilesystemSizeUsedAvailUse%Mountedon/dev/hda15.7G2.9G2.6G54%/#这个范例比较有趣一点,在df后面加上目录或者是文件时,df会自动的分析该目录或文件所在的partition,并将该partition的容量显示出来,所以,您就可以知道某个目录底下还有多少容量可以使用了!^_^范例五:将目前各个partition当中可用的inode数量列出[root@linux~]#df-ihFilesystemInodesIUsedIFreeIUse%Mountedon/dev/hda11.5M141K1.4M10%//dev/shm48K148K1%/dev/shm/dev/hda52.4M672.4M1%/home第5页共16页-5-[root@linux~]#du[-ahskm]文件或目录名称参数:-a:列出所有的文件与目录容量,因为预设仅统计目录底下的文件量而已。-h:以人们较易读的容量格式(G/M)显示;-s:列出总量而已,而不列出每个各别的目录占用容量;-k:以KBytes列出容量显示;-m:以MBytes列出容量显示;范例:范例一:列出目前目录下的所有文件容量[root@linux~]#du[root@vbird~]#du16./.gnome216./.ssh.......中间省略........292.#直接输入du没有加任何参数时,则du会分析『目前所在目录』的文件与目录所占用的硬盘空间。但是,实际显示时,仅会显示目录容量,但我的.目录有很多文件没有被列出来,所以,全部的目录相加不会等于.的容量!范例二:同范例一,但是将文件的容量也列出来[root@linux~]#du-a12./install.log.syslog16./.gnome216./.ssh76./install.log16./.bash_history4./.bashrc.......中间省略........292.#加上这个-a参数后,就会将目录底下的文件也一起列示出来,#而不是仅列出文件信息而已!注意~^_^磁盘分割:fdisk[root@linux~]#fdisk[-l]装置名称参数:-l:输出后面接的装置所有的partition内容。若仅有fdisk-l时,第6页共16页-6-则系统将会把整个系统内能够搜寻到的装置的partition均列出来。范例:范例:查阅您的第一颗硬盘内的相关信息[root@linux~]#fdisk/dev/hda==仔细看,不要加上数字!Thenumberofcylindersforthisdiskissetto2494.Thereisnothingwrongwiththat,butthisislargerthan1024,andcouldincertainsetupscauseproblemswith:1)softwarethatrunsatboottime(e.g.,oldversionsofLILO)2)bootingandpartitioningsoftwarefromotherOSs(e.g.,DOSFDISK,OS/2FDISK)#在你进入fdisk这支程序的工作画面后,如果您的硬盘太大的话,就会出现如上讯息。这个讯息仅是在告知你,因为某些旧版的软件与操作系统并无法支持大于1024磁柱(cylinter)后的扇区使用,不过我们Linux是没问题!Command(mforhelp):m==输入m后,就会看到底下这些指令介绍CommandactionatoggleabootableflagbeditbsddisklabelctogglethedoscompatibilityflagddeleteapartitionllistknownpartitiontypesmprintthismenunaddanewpartitionocreateanewemptyDOSpartitiontablepprintthepartitiontableqquitwithoutsavingchangesscreateanewemptySundisklabeltchangeapartition'ssystemiduchangedi
本文标题:Linux 磁盘与文件系统管理
链接地址:https://www.777doc.com/doc-3382260 .html