Bootstrap

Linux:文件系统(软硬链接)

目录

inode

ext2文件系统

Block Group

超级块(Super Block)

GDT(Group Descriptor Table)

块位图(Block Bitmap) 

inode位图(Inode Bitmap) 

i节点表(inode Table) 

数据区(Data Blocks)

软硬链接

硬链接

软链接

软硬链接的对比

软硬链接的用途


inode

文件 = 内容 + 属性

而这个属性是存储在inode结构中的

文件的数据都存储在“块”中,在Linux系统中还需要找一块地方来存储这个文件的信息(属性),这种存储文件信息的区域叫做inode,中文名为“索引节点”

inode是保存文件属性的集合,一个文件只有一个inode

ls -l命令可以看到文件的详细属性,这些属性就是从inode中获取的

inode内有一个唯一的标识符,叫做inode号,我们可以通过ls -i命令查看inode号

文件名属性并未被纳入inode中,而是存储在当前文件所在的文件夹的数据结构中

inode的大小一般是128字节或者256字节,文件内容大小可以不同,属性大小一定相同

ext2文件系统

我们想要在硬盘上存储文件,必须先把硬盘格式化为某种格式的文件系统,才能存储文件,文件系统的目的就是组织和管理硬盘上的文件

ext2文件系统将整个分区划分为若干个同样大小的块组(Block Group),只要能管理一个分区,就能管理所有的分区,也就能管理所有的磁盘文件

Block Group

ext2文件系统会根据分区的大小划分为若干个Block Group,而每个Block Group都有着相同的结构组成

超级块(Super Block)

存放着文件系统本身的结构信息,描述着整个分区文件系统的信息。主要有block和inode的总量,未使用block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息

Super Block若是被破坏,可以说整个文件系统结构就被破坏了

GDT(Group Descriptor Table)

块组描述符表,描述块组属性信息,每个块组描述符存储一个块组的描述信息。如在这个块组中从哪里开始是inode Table,从哪里开始是Data Blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有一份拷贝

块位图(Block Bitmap) 

Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用

inode位图(Inode Bitmap) 

每个bit表示一个inode是否空闲可用

i节点表(inode Table) 

存放文件属性。如文件大小,所有者,最近修改时间等

是当前分组所有inode属性的集合 

inode编号以分区为单位整体划分,不可跨分区

数据区(Data Blocks)

存放文件的内容,也就是一个个的Block

对于普通文件,文件的数据存储在数据块中

对于目录,该目录下所有的文件名和目录名存储在所在目录的数据块中

Block号按照分区划分,不可跨分区

软硬链接

硬链接

ln 被链接的文件 新文件

真正找到磁盘上文件的并不是文件名,而是inode

Linux中可以让多个文件名对应于同一个inode

test1和test2的链接状态完全相同,他们被称为指向文件的硬链接,从上图可以看出它们的inode是相同的,2表示的是inode526302的链接数为2,若是删除其一,则链接数-1

软链接

ln -s 被链接的文件 新文件

软链接是通过名字引用另外一个文件

但实际上,新引用的文件和被引用的文件inode不同

软硬链接的对比

软链接是独立的文件

硬链接只是文件名和目标文件inode的映射关系

软硬链接的用途

硬链接:

  • 目录中的 . .. 就是硬链接
  • 文件备份

软链接:

  • 快捷方式

;