硬盘格式化时候OS自动将硬盘分为
-
数据区, 存放文件数据
-
inode区(inode table), 存放inode所包含信息
扇区与块
扇区(Sector)
扇区是磁盘上的最小存储单位
每个扇区通常包含512字节(或在新式硬盘中可能是1024或2048字节)数据
磁盘驱动器在向磁盘读取和写入数据时, 以扇区为单位进行, 因为磁盘设备很难对单个字节进行定位, 而以扇区为单位进行读写可以提高性能
块(Block)
块是虚拟文件系统传送数据基本单位, 由多个扇区组成
linux中块大小通常是2幂数倍, 且不能超过一个页大小, 同时必须是扇区大小整数倍
常见块大小是4KB, 即连续8个扇区组成一个块
文件数据存储在块中, 当文件被创建或修改时, 文件系统会根据需要分配或释放块来存储文件数据
inode
定义
inode(索引节点)是文件系统中每个文件和目录的唯一标识符, 用于存储文件/目录元数据(metadata)信息, 包括文件大小、拥有者、权限、创建时间、修改时间和访问时间等, 以及文件链接数和指向文件数据块指针等
信息
- 文件类型
指示文件是普通文件、目录、符号链接、设备文件等
- 文件权限
包括读、写、执行权限, 决定哪些用户或用户组可以访问文件
- 链接计数
表示有多少个文件名指向该inode
当删除一个硬链接时, 计数减一, 变为0时, inode及其对应数据块才会被释放
- 所有者(UID)
文件所属用户标识符
- 所属组(GID)
文件所属组标识符
- 文件大小
文件数据所占用字节数
- 时间戳
(1) 访问时间(atime), 文件最后被访问时间
(2) 修改时间(mtime), 文件内容最后被修改时间
(3) 状态更改时间(ctime), inode元数据最后被修改时间
- 数据块指针
文件数据并不存储在inode中, 而是存储在磁盘其他位置
inode包含指向这些数据块指针
大小
每个$inode$节点大小一般是128字节或256字节, 硬盘格式化时就会给定$inode$节点总数, 一般是每1KB或2KB设置一个$inode$
如1GB硬盘中, 每个$inode$节点大小为128字节, 每1KB就设置一个$inode$, 那么$inode$ $table$大小为128MB, 占硬盘空间12.8\%
作用
文件索引
inode存储文件元数据, 使得文件系统能够快速定位和管理文件
文件分配
inode存储文件数据块物理位置信息, 包括数据块地址、大小和位置等
通过inode, 文件系统可以知道文件数据块如何分配和组织, 以便有效地存储和访问文件数据
硬链接支持
多个硬链接可以共享相同inode, 从而共享相同文件数据和元数据
即使在不同位置创建了多个硬链接, 它们实际上都指向同一个文件, 节省了存储空间
性能优化
通过inode, 文件系统可以快速定位和访问文件元数据和数据, 而无需遍历整个文件系统
使得文件系统操作更高效, 提高性能
命令
查看
显示文件系统inode
df -i 挂载点或文件系统
- 示例, 显示根文件系统inode使用
df -i /
查看文件inode信息
stat 文件
- 示例, 查看nohup.out inode信息
显示文件或目录inode
ls -il
- 示例, 查看home目录下inode信息
根据inode查找文件
find 搜索路径 -inum inode号码 -delete
- 示例, 根目录下查找inode号码为1442769文件
find / -inum 1442769