052 mkfs.ext4命令
命令说明
mkfs.ext4 在分区或整块磁盘上创建 ext4 文件系统(格式化),是新盘上线、LVM 逻辑卷初始化、扩容前必用的命令;操作会清空目标设备全部数据。
语法
mkfs.ext4 [选项]... 设备 [大小] 等价:mkfs -t ext4 设备
常用参数
| 参数 | 说明 |
|---|---|
| -L 卷标 | 设置 LABEL,如 -L DATA,fstab 可用 LABEL= 引用 |
| -U UUID | 指定固定 UUID(批量克隆盘场景) |
| -m 百分比 | 预留给 root 的空间占比,默认 5%,数据盘可设 1 |
| -b 大小 | 块大小:1024/2048/4096,数据库大文件可 4096 |
| -O 特性 | 启/禁特性,如 -O ^has_journal 去日志(只读盘提速) |
| -P 数量 | 保留给 root 的块数 |
| -N 数量 | 指定 inode 总数,海量小文件场景需调大 |
| -E stride/stripe | RAID 对齐优化参数,如 -E stride=16,stripe-width=128 |
| -F | 强制在整盘或已挂载设备上执行(危险) |
| -q | 静默模式,脚本中使用 |
使用示例
$ mkfs.ext4 /dev/sdb1
标准格式化分区为 ext4
$ mkfs.ext4 -L DATA /dev/sdb1
格式化并打卷标 DATA
$ mkfs.ext4 -m 1 /dev/sdc1
数据盘只留 1% 给 root,多可用 4%
$ mkfs.ext4 -N 4194304 /dev/sdd1
海量小文件场景增大 inode 数
$ mkfs.ext4 /dev/vg_data/lv_app
格式化 LVM 逻辑卷
$ tune2fs -l /dev/sdb1 | head
格式化后查看超级块参数确认
$ blkid /dev/sdb1
获取新 UUID 用于写 fstab
$ mkfs -t ext4 /dev/sdb1
通用写法,等价于 mkfs.ext4
实用技巧
- mkfs 不可逆!格式化前务必 lsblk/df 二次确认设备名,把 /dev/sda1 根分区格掉是最惨烈的事故;带 -F 更是最后防线被拆除。
- ext4 默认 inode 数按 16KB 一块估算,若存几十万小文件可能 inode 先耗尽(df -i 查看),此时需 mkfs 时 -N 调大或 -i 调比例。
- 新盘标准流程:fdisk/parted 分区 → mkfs.ext4 格式化 → blkid 取 UUID → 写 /etc/fstab → mount -a 验证。
- mkfs.ext4 对已有 ext 文件系统是重建超级块,旧数据可通过 extundelete/testdisk 部分恢复;但 mkfs.xfs 不允许重复格式化,需 -f 强制。
- SSD/RAID 大阵列可用 -E 对齐参数与 -P 预留优化;日志对性能敏感只读场景可 -O ^has_journal,但断电安全性下降。
- ext4 与 xfs 选择:RHEL7+ 默认 xfs(大文件/扩容友好,只能扩不能缩),ext4 灵活可缩容,小分区与需缩容场景用 ext4。