- 查看文件属性
- 认识磁盘
- 磁盘基本构成
- 线性存储
- inode 和 data block 管理
- 磁盘文件的创建
- 磁盘文件的删除
- 目录和 inode
- 目录的创建
- 软硬链接
- 关于独立的理解
- 问题产生
- 提出解释
文件属性(inode) 和 文件数据(data) 均在磁盘
文件包含内容和属性,上面查看结果只列出了文件内容的大小,实际上,即使创建出一个空文件,空文件本身内容大小为0,但文件属性的大小也要占据一定的空间。
文件属性信息也叫做元信息。inode 就是保存着这些信息,而文件内容保存在磁盘中(inode 也是存储在磁盘中)。在 Linux 中 inode是任何一个文件的属性集合,因为系统可能存在很多 inode,为了区分,就有了 inode 编号。
认识磁盘磁盘基本构成磁盘–唯一的机械设备,效率低
线性化管理磁盘,效率高
磁盘是由多个盘面组成,其中每个盘面半径相同的的同心圆构成柱面。其中这里的同心圆也叫做磁道。一个盘面的同心圆上的一小段区域。
线性存储对磁盘进行管理,磁盘虽然是非线性结构,但是在对磁盘进行管理时,可以将磁盘看作是线性的,其中最小单位为扇区。
BOOT BLOCK 在系统启动时,系统会根据它内部的数据去寻找有关系统启动的数据。
将磁盘分为几个分区后,还需要给每个分区写入管理信息,也就是格式化,具体的格式化方式,是根据不同文件系统决定的。
每个分区又分为几个块组,因此只要管理好一个块组,就可以管理好其他块组,进而管理好一个分区,同理管理好所有分区,进而实现磁盘管理。
inode 和 data block 管理在一个块组中,inode 存放在 Inode Table 中,分区格式化之后,inode 的个数是确定的,因此,可以根据 inode 个数,采用位图的方式来记录 inode 的位置和使用情况,这就是 Inode Bitmap 负责的工作。同理,Block Bitmap 可以来记录 Data Blocks 的位置和使用情况。
磁盘文件的创建-
首先在 Inode Bitmap 中按照一定的规则找到未被使用的 Inode。然后,将此 Inode 标记为已使用,表示此 inode 为该创建的磁盘文件所使用。
-
然后在 Inode Table 中找到对应的 inode 记录磁盘文件属性。
数据写入过程同上,在 Block Bitmap 中找到未被使用的data block,然后标记该数据块,在 Data Blocks 中申请使用对应的数据块,最后就可以把数据写入。
磁盘文件的删除删除即覆盖,只需要在 Inode Bitmap 中将对应的 inode 标记为未使用状态,然后再 Block Bitmap 中找到 data block 对应的位置,标记为未使用。
目录和 inode目录也是文件,因此它也有 inode。
目录的创建首先在 Inode Bitmap 中找到未被使用的 Inode,系统到 Inode Table 中为 目录申请 Inode。Inode 中存放目录的大小、权限等信息。但是目录内文件名不会存放在 Inode 中,而是以 文件名–Inode 指针 存放在数据块中。
所以,当创建一个文件时,目录的 Data Blocks 中就会多一条映射关系。
当我们执行ls时,就是在Inode Table 中找到当前目录对应的 Inode,进而在数据块中找到文件映射关系,取出文件名显示,就是我们所看到的结果。
执行ls -l时,就是找到当前目录对应的 Inode 后,在对应数据块中找到当前目录中包含的文件名对应的 Inode,进而在 Inode Table 中找到每个 Inode 的属性,将这些属性和文件名拼接显示就是我们看到的结果。
软硬链接
软链接和源文件的 Inode 编号不同,因此二者独立。
硬链接和源文件的 Inode 编号相同,二者不独立。
感性的理解是软链接相当于快捷方式,源文件删除了,快捷方式就无效了,那硬链接呢,给源文件做了一个备份,源文件删除了,那么硬链接还有效。



