千家信息网

Linux中inode有什么用

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要为大家展示了"Linux中inode有什么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Linux中inode有什么用"这篇文章吧。inod
千家信息网最后更新 2025年01月25日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安全错误 数据库的锁怎样保障安全 linux服务器运维手册 股票银行软件开发公司 华为手机云服务器无法访问 杭州软件开发定制有哪些流程 sql数据库独占访问权 专科想学网络技术哪个学校好 2000服务器系统下载 大连豪森软件开发 软件开发实训日记 济南达森互联网科技公司怎么样 虚拟主机数据库在哪里 燃烧的远征阵营平衡服务器是哪个 吴中区推广网络技术联系人 日照联想服务器代理测评 服务器bios怎么禁用网口 激斗超梦境目前有几个服务器 最常见的数据库种类主要有 常规设备能力数据库 四川安卓软件开发定制 广东服务器机箱定制云空间 统计年鉴是原始数据库 linux服务器运维手册 英灵神殿专用服务器配置要求 深圳市华半网络技术有限公司 怎样才算违反国家网络安全法 山西网络技术咨询定做价格 企业信息技术数据库 上海服务器回收上门 在网络安全 讲话 拉萨网络安全资讯白盒测试
0