Linux 命令速查
文件管理 man mkfs.ext4

mkfs.ext4

创建 ext4 文件系统(大多数 Linux 发行版的默认选择)。

返回

补充说明

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 检查,尤其是非正常关机之后。

参考链接