文件系统特性

磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个文件系统。为什么需要进行“格式化”?这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的“文件系统格式(filesystem)”。
传统的磁盘与文件系统之应用中,一个分区就是只能够被格式化成为一个文件系统,所以我们可以说一个filesystem就是一个partition。但是由于新技术的利用,例如我们常听到的LVM 与软件磁盘阵列(software raid),这些技术可以将一个分区格式化为多个文件系统(例如 LVM),也能够将多个分区合成一个文件系统(LVM,RAID)所以说,目前我们在格式化 时已经不再说成针对partition来格式化了,通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区。

inode & block

文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到inode中,至于实际数据则放置到data block区块中。另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

superblock:

记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等

inode:

记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码

block:

实际记录文件的内容,若文件太大时,会占用多个block

索引式文件系统:

假设某一个文件的属性与权限数据是放置到inode4号,而这个inode记录了文件数据的实际放置点为2,7,13,15这四个block号码,此时我们的操作系统就能够据此来排列磁盘的读取顺序,可以一口气将四个block内容读出来。
image.png

FAT格式系统(如U盘):

FAT这种格式的文件系统并没有inode存在,所以FAT没有办法将这个文件的所有block在一开始就读取出来,每个block号码都记录在前一个block当中。
image.png

EXT2文件系统

image.png
image.png
image.png

image.png
image.png
image.png
image.png

du、df

df

image.png

du

image.png

实体链接与符号链接:ln

Hard Link (实体链接, 硬式链接或实际链接)

增加inode引用计数,当引用计数为0时才删除。hard link 只是在某个目录下新增一笔文件名链接到某 inode 号码的关连记录而已。
一般来说,使用 hard link 设置链接文件时,磁盘的空间与 inode 的数目都不会改变!hard link 只是在某个目录下的 block 多写入一个关连数据而已,既不会增加 inode 也不会耗用 block 数量!
hard link 的制作中,其实还是可能会改变系统的 block 的,那就是当你新增这笔数据却刚好将目录的 block 填满时,就可能会新加一个 block 来记录文件名关连性,而导致磁盘空间的变化!不过,一般 hard link 所用掉的关连数据量很小,所以通常不会改变 inode 与磁盘空间的大小!
image.png
image.png
如果使用 hard link 链接到目录时, 链接的数据需要连同被链接目录下面的所有数据都创建链接,举例来说,如果你要将/etc使用实体链接创建一个/etc_hd的目录时,那么在/etc_hd下面的所有文件名同时都与/etc下面的文件名要创建hard link的,而不是仅链接到/etc_hd与/etc而已。并且,未来如果需要在/etc_hd下面创建新文件时,连带的,/etc下面的数据又得要创建一次hard link,因此造成环境相当大的复杂度。所以啰,目前hard link对于目录暂时还是不支持的。

Symbolic Link (符号链接,亦即是捷径)

类似于快捷方式。基本上, Symbolic link 就是在创建一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的文件名!由于只是利用文件来做为指向的动作, 所以,当来源文件被删除之后,symbolic link 的文件会“开不了”, 会一直说“无法打开某文件!”。实际上就是找不到原始“文件名”而已!
ln -s

image.png
image.png

XFS 文件系统

Ext 文件系统家族对于文件格式化的处理方面,采用的是预先规划出所有的 inode/block/metadata 等数据,未来系统可以直接取用, 不需要再进行动态配置的作法。这个作法在早期磁盘容量还不大的时候还算 OK 没啥问题,但时至今日,磁盘容量越来越大,连传统的 MBR 都已经被 GPT 所取代,超大 TB 容量也已经不够看,现在都已经说到 PB 或 EB 以上容量。TB 以上等级的传统 ext 家族文件系统在格式化的时候,光是系统要预先分配 inode 与 block 就消耗好多好多时间了
image.png
image.png