ExtFS (Extended File System)
本文以 ext4 文件系统为例。ext、ext2、ext3 可以此作为参考。
TOC
上层概念
- 文件系统 (File System)
tune2fs -l
可以查询文件系统的详细配置
-
分区 (Partition)
- 文件 (File)
- 文件的数据储存在 block 中。
- 文件的元信息(包括文件的创建者、创建日期、文件大小等)存储在 inode。
file
命令可以查询文件的类型
- 块 (Block)
- block 是文件系统读写硬盘的基本单位。block 的大小通常是 4KB,即由连续八个 sector 组成。
- 索引节点 (inode)
stat
命令可以查询文件的 inode 信息。- inode 的内容
- 文件大小(字节单位)
- 设备 ID,标识容纳该文件的设备
- 文件所有者的 User ID
- 文件的 Group ID
- 文件的模式 (mode),确定了文件的类型,以及它的所有者、它的 group、其它用户访问此文件的权限。
- 额外的系统和用户标志 (flag):限制文件的使用和修改来保护文件
- 文件 inode 修改时间 ctime
- 文件内容修改时间 mtime
- 文件上一次访问的时间 atime
- 链接数,标识有多少硬连接指向当前 inode
- 文件块指针,标识文件数据 block 的位置
- 注意 inode 不包含文件名。文件名存储在上级目录的 block 中。
下层概念
- 扇区 (Sector)
- Sector 是硬盘磁头读写数据的基本单位。每个 Sector 储存 512 字节 (0.5KB)。
调整 inode
调整 inode 需要格式化磁盘,注意备份数据。
inode 数量 = 文件系统大小/ inode 字节数
- inode 字节数,英文叫 inode size 或 bytes per inode 或 bytes/inode ratio
-
文件系统大小即分区大小
-
cat /etc/mke2fs.conf
可以看到 mkfs 默认的 inode 配置。 mkfs.ext4 -i
可以指定 inode 字节数
每个 inode 节点的大小,一般是 128 字节或 256 字节。 inode 节点的总数,在格式化时就给定,一般是每 1KB 或每 2KB 就设置一个 inode。 假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。