Linux中inode

来源:互联网 发布:知乎怎么用邮箱注册 编辑:程序博客网 时间:2024/05/24 00:09

什么是inode

文件储存在硬盘上,硬盘的最小存储单位叫做“扇区“(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

所以对于Linux:

  • data block 存储真正的数据
  • inode 存储元数据
  • SuperBlock 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,inode/block的总量、使用量、剩余量,指向空间 inode 和数据块的指针等相关信息。

硬链接

每一个inode对于数据区里面的一块数据。一般来说一个文件名对应一个inode,但是一个inode也可以对于多个文件名(多个文件共享一个inode),也就是说一块数据有多个名字,修改每一个文件,都会改变所有的文件。这时候,inode的Links就会增加。

首先又一个wqh的文件,然后创建一个硬链接。

$ ln wqh wqhHard

可以看到wqh的Links为2
HardLink

修改wqhHard会改变wqh的内容。可以参考下面这个图来理解:
HardLink

软链接

一个文件的内容存储另一个文件的路径,读取A时,系统自动将访问者导向B.所以无论到开那个文件,都是B的内容。(A的内容看不到哦)
SoftLink

小结

由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
  1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。
  2. 移动文件或重命名文件,只是改变文件名,不影响inode号码。
  3. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。
第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode号码,识别运行中的文件,不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

0 0
原创粉丝点击