0

0

linux的i节点号是什么意思

青灯夜游

青灯夜游

发布时间:2023-03-30 11:49:20

|

3497人浏览过

|

来源于php中文网

原创

在linux中,i节点号是指inode号,用于识别不同的文件。Linux内部使用inode号来识别文件,而非文件名,对于系统来说,文件名是 inode号的别称,是便于用户识别文件的,文件名和inode号是一一对应的关系,每个inode号对应一个文件名。

linux的i节点号是什么意思

本教程操作环境:linux7.3系统、Dell G3电脑。

一、linux中的i节点

在linux中,i节点指的是inode节点。

linux中,文件查找不是通过文件名称来查找的。实际上是通过i节点来实现文件的查找定位的。我们可以形象的将i节点看做是一个指针fip。当文件存储到磁盘上去的时候,文件肯定会存放到一个磁盘位置上,可以这样想象,既然文件数据是存放在磁盘上的,如果我们知道这个文件数据的地址,当我们想要读写文件的时候,我们是不是直接使用这个地址去找到文件就可以了呢?

是的,linux下,i节点其实就是可以这么认为,把i节点看作是一个指向磁盘上该文件存储区的地址。只不过这个地址我们一般是没办法直接使用的,而是通过文件名来间接使用的。事实上,i节点不仅包含了文件数据存储区的地址,还包含了很多信息,比如数据大小,等等文件信息。但是i节点是不保存文件名的。文件名是保存在一个目录项中。每一个目录项中都包含了文件名和i节点。

我们可以通过一个图来看看目录项,i节点,文件数据四者之间的关系。

 

从上图可以看到,目录项中包含了文件名和i节点。

同时,你会发现上图中,目录项A和目录项B的i节点指向同一个存储区,其中这个存储区存放的是printf("ha")的数据。

也就是意味着helloA.c和helloB.c的内容是一样的。

i节点号

每个inode都有一个号码(即 inode号),操作系统用 inode号码来识别不同的文件。

————Linux内部使用 inode号来识别文件,而非文件名,对于系统来说,文件名是 inode号的别称,是便于用户识别文件的,文件名和 inode号是一一对应的关系,每个 inode号对应一个文件名。

inode号是系统识别的唯一编码,而文件名仅仅是为了使用者区分辨认,inode (index node )表中包含文件系统所有文件列表 一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据 )。

硬盘分区后的结构:

1.png

  • 当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据;如果没有就会返回。

访问文件的简单流程:

2.png

二、Linux 文件存储

2.1 inode的数量限制

  • inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域:一个是数据区,存放文件数据;另一个是 inode区,存放 inode 所包含的信息。每个inode 的大小,一般是128 字节或256字节。
  • 通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数,inode的总数在格式化时就已经定好了
    ——为什么需要重点关注inode总数,因为当inode用完时,即便磁盘还有空间也无法创建新文件了,因为在创建文件时需要一个inode号与之对应,而没有inode时自然无法创建新文件。
    执行“df-i”命令即可查看每个硬盘分区对应的的inode总数和已经使用的inode数量。

3.png

Tana
Tana

“节点式”AI智能笔记工具,支持超级标签。

下载

2.2 inode 的内容

inode包含文件的元信息,具体有以下的内容:

  • 文件的字节数
  • 文件的拥有者 user ID
  • 文件的group ID
  • 文件的读、写、执行权限
  • 链接数,即有多少文件指向这个inode
  • 文件的时间戳
  • 两种方式查看某个文件的 inode信息

方法一:stat [文件名]

示例:stat aa.txt

4.png

优点:可以查看文件inode 的详细信息

方法二:ls -i [文件名]

5.png

只能显示 inode号

2.3 Linux系统文件三个主要的时间属性

Linux系统文件三个主要的时间属性(即inode 里的时间戳)

  • ctime(change time)
    指的是最后一次改变文件或目录(属性)的时间
  • atime(access time)
    指的是最后一次访问文件或目录的时间
  • mtime(modify time)
    指的是最后一次修改文件或者目录(内容)的时间

三、inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象:

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
  • 文件数据被修改保存后,会生成一个新的 inode 号码(原先的 inode 号会被释放)

如何通过删除inode号删除文件:

方法一(删除前需确认信息):find ./ -inum [inode号] -exec rm -i {} \ ;

6.png

方法二(直接删除):find ./ -inum [inode号] -delete

7.png

相关推荐:《Linux视频教程

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

0

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

20

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

62

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

87

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

19

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

160

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号