索引节点
inode("index node" 的缩写)是 Linux 用来存储有关 文件 信息的数据结构。每个 inode 都有一个唯一 ID,用于标识 Linux 文件系统中的单个文件或其他对象。
Inode 包含以下信息:
- 文件类型 - 文件、文件夹、可执行程序等
- 文件大小
- 时间戳 - 创建、访问和修改时间
- 文件权限 - 读取、写入和执行
- 访问控制列表 - 特定用户或组的权限
- 文件保护标志
- 文件位置 - 存储文件的目录路径
- 链接计数 - 指向该 inode 的硬链接数量
- 其他文件元数据
- 文件指针 - 存储文件内容的存储块地址
值得注意的是,inode 不包含文件名或实际数据。Linux 文件系统创建文件时,会为其分配一个 inode 编号和一个文件名。这一关联对允许在不影响系统中文件 ID 的情况下更改文件名。重命名目录时也是如此,因为在 Linux 中目录被视为文件。
文件数据存储在存储设备上的一个或多个块中。inode 包含指向这些数据的指针,但不包含实际数据。因此,无论所标识文件的大小如何,所有 inode 的大小都相对较小。
现代文件系统提供了分层的目录结构(文件夹),以便更轻松地组织文件。但是,在 Linux 中,文件实际上并不存储在目录中。相反,目录只包含文件名及其对应的 inode ID。该 ID 引用 Linux inode 表中的一个 inode,而该 inode 指向存储文件数据的存储块。
NOTE: 每个 Linux 存储设备都有一个 inode 数量上限,该上限在磁盘被格式化时确定。在少数情况下,如果创建了许多小文件,可能会在完整的存储容量用完之前达到 inode 数量上限。
测试你的知识