硬盘格式化时候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