您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第05章 linux磁盘与文件系统管理
系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文件无法储存的困扰。此外,我们在前面几章谈到的档案权限与属性中,这些权限与属性分别记录在文件系统的哪个区块内?这就得要了解文件系统中的inode与block了。在本章我们的重点在于如何制作文件系统,包括分割、格式化与挂载等。在文字接口下面有什么方法可以查看目前的磁盘最大容许容量、已经使用掉的容量、目前所在目录的已使用容量?还有,怎么知道目前目录下使用掉的硬盘容量呢?以及如何查询目前的inodes数目?第五章Linux磁盘与文件系统管理1文件系统特性我们都知道磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个分区。为什么需要进行格式化呢?因为每种操作系统所设定的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统之应用中,一个分区就是只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个分区。由于新技术(LVM)的利用,可以将一个分区格式化为多个文件系统,也能够将多个分区合成一个文件系统。所以说,目前我们在格式化时已经不再说成针对分区来格式化了,通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。LVM是LogicalVolumeManager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由HeinzMauelshagen在Linux2.4内核上实现1文件系统如何运行这与操作系统的文件数据有关。内容+属性superblock:记录此文件的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;inode:记录文件的属性,一个文件占用一个inode,同时记录文件的数据所在的block号码;block:实际记录文件的内容,若文件太大时,会占用多个block。所以:找到文件的inode,自然就会知道这个文件的block号码,也就能够读出该文件的实际数据。inode/block数据访问示意图索引式文件系统FAT文件系统数据访问示意图碎片整理碎片整理的原因就是文件写入的block太过于离散了,此时文件读取的效能将会变的很差所致。这个时候可以透过碎片整理将同一个文件所属的blocks汇整在一起,这样数据的读取会比较容易。2Linux的Exts2文件系统(block)Ext2文件系统一开始就将inode与block规划好了,除非重新格式化(或者利用resize2fs等指令变更文件系统大小),否则inode与block固定后就不再变动。Ext2文件系统在格式化的时候基本上是区分为多个块组(blockgroup)的,每个区块群组都有独立的inode/block/superblock系统。Ext2格式化后如下图所示。Ext2文件系统示意图datablock:用来放置文件内容数据地方,在Ext2文件系统中所支持的block大小有1K,2K及4K三种而已。block大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大单一文件容量并不相同.Block大小1KB2KB4KB最大單一文件限制16GB256GB2TB最大文件系統总容量2TB8TB16TBExt2基本限制如下:原则上,block的大小与数量在格式化完就不能够再改变了(除非重新格式化);每个block内最多只能够放置一个文件的数据;承上,如果文件大于block的大小,则一个文件会占用多个block数量;承上,若文件小于block,则该block的剩余容量就不能够再被使用了(磁盘空间会浪费)例假设你的Ext2文件系统使用4Kblock,而该文件系统中有10000个小文件,每个文件大小均为50bytes,请问此时你的磁盘浪费多少容量?inodetable(inode表格)如前所述inode的内容在记录文件的属性以及该文件实际数据是放置在哪几号block内。基本上,inode记录的文件数据至少有下面这些:该文件的存取模式(read/write/excute);该文件的拥有者与群组(owner/group);该文件的容量;该文件建立或状态改变的时间(ctime);最近一次的读取时间(atime);最近修改的时间(mtime);定义文件特性的旗标(flag),如SetUID...;该文件真正内容的指向(pointer);inode的数量与大小也是在格式化时就已经固定了,除此之外inode还有些什么特色?每个inode大小均固定为128bytes(记录一个block占用4byte);每个文件都仅会占用一个inode而已;承上,因此文件系统能够建立的文件数量与inode的数量有关;分析:inode/block与文件大小的关系。假设我一个文件有400MB且每个block为4KB时,那么至少也要十万条block号码的记录。所以:系统很聪明的将inode记录block号码的区域定义为12个直接,一个间接,一个双间接与一个三间接记录区。inode结构示意图Superblock(超级区块)记录整个文件相关信息的地方,没有Superblock,就没有这个文件系统了。它记录的信息主要有:block与inode的总量;未使用与已使用的inode/block数量;block与inode的大小(block为1,2,4K,inode为128bytes);文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息;一个validbit数值,若此文件系统已被挂载,则validbit为0,若未被挂载,则validbit为1。FilesystemDescription(文件系统描述说明)这个区段可以描述每个blockgroup的开始与结束的block号码,以及说明每个区段(superblock,bitmap,inodemap,datablock)分别介于哪一个block号码之间。这部份也能够用dumpe2fs来观察的。blockbitmap(区块对照表)如果你想要添加文件时总会用到block吧!那你要使用哪个block来记录呢?当然是选择『空的block』来记录新文件的数据。从blockbitmap当中可以知道哪些block是空的,因此我们的系统就能够很快速的找到可使用的空间来处置文件。inodebitmap(inode对照表)blockbitmap是类似的功能,只是blockbitmap记录的是使用与未使用的block号码,至于inodebitmap则是记录使用与未使用的inode号码。3查看文件系统#dumpe2fs[-bh]设备文件名參數:-b:列出保留為坏道的部分(一般用不到吧!?)-h:仅列出superblock的数据,不会列出其他的区段內容例:找出你的根目磁盘文件名,并查看文件系统的相关信息例:查看root目录内的文件所占用的inode号码2文件系统的简单操作2.1磁盘与目录的容量我们知道,磁盘的数据是在superblock块中,但是每个各别文件的容量则在inode当中记载的。那么,在命令行界面下该如何调出这几个数据?df:列出文件系统的整体磁盘使用量du:评估文件系统的磁盘使用量(常用于评估目录所占容量)#df[-ahikHTm][目录或文件名]参数:-a:列出所有的文件系统,包括系统特有的/proc等档案系统;-k:以KBytes的容量显示各文库系统;-m:以MBytes的容量显示各文件系统;-h:以人们较易阅读的GBytes,MBytes,KBytes等格式自行显示;-H:以M=1000K取代M=1024K的进位方式;-T:连同该partition的filesystem名称(例如ext3)也列出;-i:不用硬盘容量,而以inode的数量来显示例1:将系统内所有文件系统列出来。例2:将容量结果以易读的容量格式显示出来例3:将系统内所有特殊文件格式以及名称都列出来例4:将/etc下面的可用磁盘容量以易读的容量格式显示例5:将目前各个分区当中可用的inode数量列出来#du[-ahskm]文件或目录名称参数:-a:列出所有的文件与目录容量,因为默认仅统计目录下的文件量-h:以人们较易读的容量格式(G/M)显示;-s:列出总量而已,而不列出每个各别的目录占用容量;-k:以KBytes列出容量显示;-m:以MBytes列出容量显示;例6:列出目前目录下的所有文件容量例7:同例6,但是将文件的容量也列出来例8:检查根目录下每个目录所占用的容量1.2连接文件Linux下面的连接文件有2种,一种类似Windows的“快捷方式”,可以让你快速连接到目标文件或者目录;另外一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬连接。这2个是完全不一样的东西。hardlink(硬连接或实际连接)我们知道,文件的读取方式为:1.先由一层一层的目录取得文件相关的关连数据,2.再到对应的inode取得文件的属性,以及文件内容数据所在的block,3.最后到blockarea取得文件的数据。例:假设系统有个/etc/crontab,它是/etc/crontab的实际连接,也就是说这2个文件名连接到同一个inode,自然这2个文件名的所有信息都会一模一样(除了文件名)。由于hardlink是在同一个partition上面进行数据关连的建立,所以hardlink是有限制的:•不能跨文件系统;•不能link目录。symboliclink(符号连接,即快捷方式)symboliclink就是在建立一个独立的文件,而这个文件会让数据的读取指向他link的那个文件内容!由于只是利用文件来做为指向的动作,所以,当来源文件被删除之后,symboliclink的文件会打不开,会一直说无法开启某文件。例:假设系统有个/etc/crontab,创建软连接crontab2#ln[-sf]来源文件目标文件参数:-s:如果ln不加任何参数就进行连接,那就是hardlink,至于-s就是symboliclink-f:如果目标文件存在时,就主动的将目标文件直接删除后在创建例9:将/etc/passwd复制到/tmp下面,并且查看inode与block例10:将/tmp/passwd制作hardlink成为passwd-hd,查看文件与容量。例11:将/tmp/passwd创建一个符号连接例12:删除源文件passwd,其他2个文件是否能够开启?关于目录的连接数当我们以hardlink进行文件连接时,可以发现,在ls-l所显示的第二字段会增加1才对,那么如果建立目录时,它默认的连接数量会是多少?一个“空目录”里面至少会存在些什么?当新建一个目录如/tmp/testing,基本上会有三个东西,即:/tmp/testing/tmp/testing/./tmp/testing/..所以:新的目录连接数为?,而上层目录的连接数会增加?2磁盘的分区、格式化、检验与挂载2.1磁盘分区:fdisk#fdisk[-l]设备名称参数:-l:输出后面接的设备所有的partition内容。若仅有fdisk-l时,则系统将会把整个系统内能够搜寻到的设备的partition均列出来。例13:找出系统中的根目录所在磁盘,并查阅该硬盘内的相关信息。删除磁盘分区测试如何删除系统的/dev/sda某个分区,步骤:•先进入fdisk界面•p:查看分区信息•d:删除分区•w(or)q新增磁盘分区新增分区包括主分区、扩展分区、逻辑分区例14:进入fdisk分区界面,并删除所有分区;新增一个主分区,且指定为3号;继续新增一个扩展分区;任意新增一个1GB的分区。练习:依照你的系统情况,新建一个大约2GB左右分分区,并显示该分区的相关信息。2.2磁盘格式化mkfs[-t文件系统格式]设备文件名参数:-t:可以接文件系统格式,例如ext2,ext3,vfat等#mke2fs[-bicLj]设备参数
本文标题:第05章 linux磁盘与文件系统管理
链接地址:https://www.777doc.com/doc-3177814 .html