在Linux文件系统中,inode 和 block 是两个重要的概念,用于管理文件和文件系统的存储。

大概对应关系图
Inode(索引节点):
Inode是文件系统中的一种数据结构,用于描述文件或目录的元数据(metadata)。inode节点是指定字节长的表,表中包含了文件的相关信息,如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。在inode节点表中最重要的内容是:磁盘地址表。
文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。即Linux文件系统通过把inode和文件名进行关联来查找文件。当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的inode节点号,通过该inode节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
文件类型 | Inode大小 |
Ext* | 128字节 |
XFS | 256字节 |
Btrfs | 256字节 |
ZFS | 128字节 |
Ext4的 inode 大小为 128 字节的倍数,最小为 128 字节。它有默认值大小,它的默认值由 /etc/mke2fs.conf 文件中指定。
Ext4的特殊inode
Inode号 用途
0 不存在0号inode,可用于标识目录data block中已删除的文件
1 虚拟文件系统,如/proc和/sys
2 根目录 # 注意此行
3 ACL索引
4 ACL数据
5 Boot loader
6 未删除的目录
7 预留的块组描述符inode
8 日志inode
11 第一个非预留的inode,通常是lost+found目录
Block(块)
Block是文件系统中的存储单元,用于存储文件和目录的实际数据。文件系统将数据分成多个块,每个块通常有一个固定的大小(通常以字节为单位)。
文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。
即512字节组成一个扇区(sector),多个扇区组成一个块(block),常见的块单位位4KB,即连续八个扇区组成一个block。
一个文件必须占用一个inode,但至少占用一个block。

IO路径图