文件系统说明与操作:
文件系统简介
由于每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,
因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。
Windows98以前的微软操作系统主要使用FAT格式,Windows2000以后的版本有所谓的NTFS格式,Linus的正统文件系统则为ext2。
传统的磁盘与文件系统中,一个分区就只能够被格式化成为一个文件系统,现在,由于新技术的使用,一个分区可以格式化为多个
文件系统(LVM),多个分区也可以合并成一个文件系统(LVM,RAID),所以我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。
操作系统的文件会分别存放在不同的区域:
-
- inode:记录文件的属性与权限,一个文件占用一个inode,同时记录此文件的数据所在的区块号码;
- 数据区块:实际记录文件的内容,若文件太大时,会占用多个区块;
- 超级区块:记录此文件系统的整体信息,包括inode与数据区块的总量、使用量、剩余量,以及文件系统的格式与相关信息等。
举例:文件系统先格式化出inode和数据区块,某一文件的属性与权限放在inode4号,相对应的数据放在2、7、13、15这4个区块。
我们的操作系统就能据此来排列磁盘的读取顺序,可以一口气将四个区块读取出来,如下图的箭头所示。
以上这种数据存取的方法我们称为索引式文件系统,ext2就是这种文件系统。
FAT就不属于这种文件系统,因此无法做到一口气读取所有区块,只能一个一个的将区块读出后,才知道一下区块在何处。
注:我们常听到所谓的碎片整理,就是因为文件写入的区块太过于离散,此时文件读取的性能将变得很差。
这时需要将同一个文件所属的区块集中在一起,这样数据读取会比较容易。
其实磁盘碎片产生的主要原因是频繁的删除大文件,由于大文件数据过于分散,删除后会留下多余的空间。
由于ext2是索引式文件系统,一般很少需要进行碎片整理。
ext2文件系统:
文件系统一开始就将inode与数据区块规划好了,除非重新格式化(或利用resize2fs等命令修改其大小),否则inode与数据区块固定后就不同变动。
为了便于管理,ext2文件系统格式化的时候会将其分为多个区块群组,每个区块群组都有独立的inode、数据区块、超级区块系统。
文件系统的最前面有一个启动扇区(boot sector),这个启动扇区可以安装启动引导程序。
正是因为这个设计,我们才能够将不同的启动引导程序安装到别的文件系统最前端,从而制作出多重引导环境。
至于每一个区块群组的六个主要内容如下:
1.数据区块
用来放置文件数据的地方,在ext2文件系统中所支持的区块大小有1k、2k、4k三种。
区块大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大单一文件容量不相同。
区块的使用限制:
-
-
-
- 原则上,区块的大小与数量在格式化完就不能够再修改;(除非格式化)
- 每个区块内最多只能够放置一个文件的数据;
- 承上,如果文件大于区块的大小,则一个文件会占用多个区块数量;
- 承上,若文件小于区块的大小,则该区块剩余容量就不能够再被使用了。(磁盘空间会被浪费)
-
-
2.inode table(inode表)
inode记录的数据如下:
该文件的读写属性(read、write、excute)
该文件的拥有者与用户组(owner、group)
该文件的大小
该文件建立或状态改变的时间(ctime)
最近一次的读取时间(atime)
最近修改的时间(mtime)
定义文件特性的标识,如SetUID
该文件真正内容的指向
inode的特色:
每个inode大小均固定为128B;(新的ext4与xfs可设置到256B)
每个文件均只会占用一个inode而已;
承上,文件系统能够建立的文件数量与inode的数量有关;
系统读取文件时需要先找到inode,并分析inode所记录的权限与用户是否符合,若符合才能够读取区块的内容。
3.Superblock(超级区块)
记录整个文件系统相关信息的地方 ,主要信息如下:
数据区块与inode的总量;
未使用与已使用的inode与数据区块数量;
数据区块与inode的大小;(block为1、2、4K,inode为128B或256B)
文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘的时间等;
一个有效位数值,若此文件系统已被挂载,则有效位为0,若未被挂载,则有效位为1。
4.Filesystem Description(文件系统描述说明)
描述每个区块群组的开始与结束的区块,以及说明每个区块分别介于哪一个区块之间。
5.block bitmap(区块对照表)
记录区块号码的标志,是否空白,是否使用中,比如想要知道哪个区块是空的,就需要区块对照表的辅助。
6.inode bitmap(inode对照表)
记录inode号码的标志,是否空白,是否使用中。
注:可使用dumpe2fs命令查询ext系列超级区块信息。