千家信息网

Linux中inode有什么用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Linux中inode有什么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中inode有什么用"这篇文章吧。inod
千家信息网最后更新 2026年11月01日Linux中inode有什么用

这篇文章主要为大家展示了"Linux中inode有什么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中inode有什么用"这篇文章吧。

inode是用来做什么的

inode是用来存储文件元信息的区域。中文译名叫做"索引节点"。

关于inode的背景知识

我们先复习下文件存储的一些内容。我们知道,文件存储在硬盘上,硬盘的最小存储单元呢,又被称为扇区,扇区的大小是512字节。

操作系统在硬盘上读取信息时,是按照一次性读取多个扇区的方式来的,而这多个扇区也叫块。通常,块的大小是4KB,大概有8个扇区的大小。需要注意的是,读取的块是连续的空间。

这个时候我们能知道,文件是存储在"块"中的,就像我们写C语言程序的时候,我们知道,当我们声明一个数组的时候,不仅仅会存储放在数组里面的值,还会存储对应的数组信息,比如数组的首地址、文件类型和数组长度等等,同样的,需要找一个地方存储文件的元信息,类似于文件的创建相关的信息、文件的长度等等。而这个地方,我们称做inode。

inode中存储的内容

inode包含着所存储文件的元信息,包含着这些内容:

  • 文件的字节数。

  • 文件创建者的ID。

  • 文件的Group ID。

  • 文件的读写等权限。

  • 文件的相关时间戳。具体的有三个:ctime-->inode上一次变动的时间;mtime-->文件内容上一次变动的时间;atime-->文件上一次打开的时间。

  • 链接数

  • 文件数据的块位置

inode号码

第一次看到上面的存储内容后,我想大家多少会有相同的疑问,既然inode是存储文件相关信息的,为什么不存储文件名呢。理由就是,文件名并不是Unix/Linux操作系统识别不同文件的标准。

操作系统是通过inode号码来识别不同文件的。

在Unix/Linux系统中,用户层名是通过文件名来打开文件的,系统层面主要是通过了三个步骤来打开文件:

  • 根据文件名找到对应的inode号码。

  • 通过inode号码获取inode信息。

  • 根据inode信息,找到文件数据所存的块,并独处数据。

inode的特殊作用

Unix/Linux系统中inode号码和文件名分离,这导致了系统中一些特别的现象:

  • 删除inode节点,即是删除文件。有些文件可能无法正确删除,这时我们直接删掉对应的inode节点,就可以起到删除文件的作用。

  • 移动文件或者重命名文件,不改变inode号码,仅仅只是改变文件名。

  • 通常来说,系统是无法通过inode号码得到文件名的,当打开一个文件,系统往后就通过inode来识别该文件,不再考虑文件名。

因为inode号码的存在,系统可以在软件不关闭的情况下进行更新。系统通过inode号码,识别运行中的文件,更新过程中,文件以相同的文件名,新的inode存在,而不会影响到目前运行中的文件。而原先旧版的inode会在软件下一次打开时被回收,文件名会自动指向新的inode号码。

inode空间占用问题

既然同样是存储在硬盘里的数据,inode必然也是会占用硬盘空间的,当格式化硬盘的时候,操作系统会自动将硬盘分成两个区域:

  • 数据区

  • inode table

数据区主要存放文件数据,inode table区域则是存放inode信息。

特别的是,inode所占用的区域大小,在磁盘格式化时操作系统就已经给定。这样做导致的后果就是,数据区的空间明明还没有使用完,但是却无法继续存取数据了,这时因为inode table区域已经用满了,所以无法再往磁盘里存储新的文件。

目录文件

我们知道,在Unix/Linux中,任何资源都是以文件的形式存在的。目录也是。我们打开目录,实际上就是打开目录文件。目录文件的结构就是一个列表。

目录项 = 所包含文件文件名 + 对应inode号码。

硬链接和软链接

关于具体什么是硬链接什么是软链接,我就不在这篇博文里赘述了,仅从inode角度去考虑。

从inode号码的角度考虑,Unix/Linux系统中,是允许多个文件名指向同一个inode号码的。这个时候,如果删除掉其中一个文件名,不影响另一个文件名的访问,同时,如果通过一个文件名打开文件并作出修改,其他文件名打开时可以共享到该修改。那么就称这种为"硬链接"。在Linux中,我们可以通过ln命令来创建硬链接。

上面总结到,在inode中,有一个存储项叫做"链接数",记录只想该inode的文件名总数。如果通过硬链接方式创建一个文件名指向某文件,那该文件对应的inode数据域中链接数部分就会 + 1,反之 - 1 。当这个值为0时,系统就会默认没有文件名指向该inode,此时,就会回收该inode号码,并且回收对应的块区域。

而对应的软链接,假设有文件A和文件B,B是A的软链接。这个时候,A和B的inode号码是不同的,因为它们是不同的文件,但是!B的内容是A的路径,读取B的时候,系统会自动访问A,所以无论打开哪个文件,访问的都是文件A。这个时候,文件B就被称为文件A的"软链接"或者"符号链接"。

在Unix/Linux系统中,我们可以通过ln -s 命令来创建软链接。

总结和小补充

通过上面的叙述,我们知道inode就像C语言中的指针域,指针域记录着多种信息,并把我们导向正确的文件位置,读取需要的信息。(当然也不是完全像。)

Unix/Linux系统中创建目录时,会自动生成两个目录项:

  • .目录

  • ..目录

可以通过 ls -al 命令观察到这两个目录。".目录"的inode号码是当前目录的inode号码,等同于当前目录的硬链接,而".."目录的inode号码是当前目录父目录的inode号码,等同于父目录的硬链接。目录硬链接总数 = 2 + 子目录总数(包括隐藏文件)。

以上是"Linux中inode有什么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 号码 文件名 目录 系统 链接 存储 信息 数据 内容 时候 硬盘 区域 操作系统 数组 不同 大小 就是 指向 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 科技互联网公司装修 工业互联网科技新基建 平安科技 互联网 狮子座互联网科技有限公司 百单互联网科技有限公司 天津摩尔互联网科技 互联网金融监管科技 丰台科技园 互联网公司 哈尔滨新华互联网科技 深圳互联网科技怎么样 广州优美互联网科技 欧洲十大科技互联网公司 以后互联网后是啥科技 互联网科技教育视频 湖南一路畅行互联网科技 四川慕妮娅互联网科技有限公司 雨阳互联网卡科技有限公司 陕西云淼互联网科技公司 互联网科技机房 金融科技创新监管互联网金融 互联网科技排名 易通互联网络科技有限公司 滨湖区互联网智能科技产品供应 中化能源互联网科技招聘 中国航天科技大学国际工业互联网 互联网科技与大数据专业 山东星卡互联网科技有限公司官网 下一代互联网重大应用科技园 颐高云石互联网科技
0