一. Inode节点
扇区
文件储存在硬盘上,硬盘上最小的储存单位叫做’扇区’(一个磁道上有很多扇区,一个柱面上有很多磁道,一个硬盘上有很多柱面),每个扇区储存512字节(不同硬盘可能不一定相同),相当于是0.5KB.
块(block)
操作系统在读取硬盘的时候,不会一个个扇区的读取,这样的效率太低,而是一次性连续读取多个扇区,即一次读取一个’块’.这种由多个扇区组成的块,就是文件存取的最小单元.块的大小,最常见的是4KB,即连续8个扇区组成一个block.(块的大小的取值也是有权衡的,太大导致内部碎片太多,太小的话导致读取效率低下)
硬盘格式化时,操作系统自动将硬盘分成两个区:
- 数据区
- Inode区:存放包含inode所包含的所有信息。 可以用df命令查看每个硬盘分区的inode数量和已经使用的数量
inode的内容
inode包含文件的元信息,具体来说有以下内容:
- 文件的字节数
- 设备ID(储存文件的设备ID)
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读,写,执行权限
- 额外的系统和用户标志位:限制文件的使用和修改来保护文件
- 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间.
- 链接数:有多少文件名指向这个inode(硬连接)
- 文件块指针:指向文件数据block的位置
linux系统中,查找文件不是用文件名,而是使用inode编号来识别文件。
查找文件三步骤:
- 找到文件名对应的inode编号
- 通过inode编号获取inode信息
- 根据inode信息找到文件数据所在的block读取数据
二. 硬链接
- A和B都是硬链接(A,B都是文件名),则A的目录项中的Inode节点号与B中目录项的Inode节点号相同。 即一个Inode节点对应两个不同的文件名,两个文件名指向同一个文件。
- 如果删除了一个文件,对另一个没有影响,Inode节点上的链接数减一;
- 直到链接数为零,inode节点和对应的数据块才被回收。
- 文件和文件名不同。rm A删除的是A这个文件名,而对A对应的数据块(文件)只有在链接数减少为0时才被系统回收
- 不能对目录,不同的文件系统 和 不存在的文件创建硬链接
三. 软链接
- A和B目录项中的inode节点号不一样,A和B指向不同的inode号,继而指向不同的数据块。
- A的数据块只是存放B的路径名(根据这个找到B的目录项)
- A和·B之间是主从关系。
- 如果B被删除了,A仍然存在,但是指向一个无效的链接。
- 可以对目录,不同的文件系统 和 不存在的文件创建软链接
- 由于软链接文件包含源文件的路径信息,所以当源文件移动后,系统就找不到了。而硬链接没有这个缺陷,想怎么移动就怎么移动;它要系统分配额外的空间用于建立新的索引节点和保存原文件路径