补充说明
mkfs.ext4 是 mke2fs 的符号链接,属于 e2fsprogs。ext4 是 ext3 的后继者,增加了 extents、延迟分配、多块分配、64 位块地址、元数据校验和(metadata_csum)、日志校验等特性,兼顾兼容性与性能。
默认特性集来自 /etc/mke2fs.conf,常见的 default 配置已包含 extents、flex_bg、metadata_csum、64bit 等。对 SSD 可以使用 -E discard 或依赖挂载时的 discard/fstrim.timer。
ext4 支持在线扩容:先扩容分区,再执行 resize2fs;缩容需要卸载并谨慎操作,且只能缩小到数据实际占用之下。格式化前必须卸载目标分区并确认设备名,写错设备会直接毁掉数据。
语法
mkfs.ext4 [选项] 设备 [块数]
选项
-b 块大小:块大小,常用 4096-L 标签:卷标,最长 16 字符-m 百分比:root 保留块比例,默认 5%-N 数量:inode 总数-I 大小:inode 大小,常用 256-O 特性:启用/关闭特性,如-O ^has_journal-E 选项:扩展选项,如lazy_itable_init=1、discard-T 用途:套用small、default、news等参数集-d 目录:用目录内容预填充文件系统-F:强制创建,忽略已有文件系统警告-q:安静模式-n:只打印参数,不写入-U UUID:指定 UUID-e 行为:出错时的处理策略,如remount-ro
实例
# 普通数据盘,卷标 data,保留块降到 1%
sudo mkfs.ext4 -L data -m 1 /dev/sdb1
# 为 SSD 启用 discard 并延迟初始化 inode 表
sudo mkfs.ext4 -E lazy_itable_init=1,discard /dev/sdb1
# 由目录内容生成可挂载的镜像
mkfs.ext4 -F -d rootfs/ rootfs.img 2G
# 只演练,确认块大小与特性
mkfs.ext4 -n /dev/sdb1
# 查看结果并在线扩容
sudo tune2fs -l /dev/sdb1
sudo resize2fs /dev/sdb1
注意事项
- 不要在有数据的设备上重复执行;
mkfs不会询问确认。 - 小分区可考虑
-T small,减少 inode 浪费。 - 需要与旧内核或其他系统互操作时,谨慎关闭
64bit等特性。 - 定期用
e2fsck -f检查,尤其是非正常关机之后。