mkfs 是什么
mkfs 是「创建文件系统」的统一入口,本体只是个前端:按 -t 指定的类型去调用 mkfs.ext4、mkfs.xfs、mkfs.btrfs 等真正干活的程序。它按目标格式写入超级块与元数据,效果等于把这块设备格成空盘,原有数据不再可读。所以操作对象必须是「确认过的新分区或新卷」,而不是随手抄来的 /dev/sdX。
基本信息
| 适用平台 | Linux(e2fsprogs、xfsprogs、btrfs-progs 分别提供对应后端) |
|---|---|
| 命令语法 | mkfs[.类型] [选项] 设备 ;mkfs -t 类型 [选项] 设备 |
| 常用选项 | -t 类型(ext4/xfs/btrfs/vfat)/ -L 卷标 / -m 保留块百分比(ext 系)/ -f 强制覆盖(xfs 必需)/ -n 干跑不写入(ext 系) |
| 危险等级 | 高:格式化覆盖超级块与元数据,不可逆 |
常见类型对比
| 类型 | 特点 | 常见用途 |
|---|---|---|
| ext4 | 成熟稳定,支持在线扩容与离线缩小 | 通用首选,根分区常用 |
| xfs | 擅长海量小文件与大文件,只能扩大不能缩小 | 数据盘、数据库存储 |
| btrfs | 支持快照、数据校验、多设备 | 需要快照或校验的场景 |
| vfat | 无权限位与日志,兼容性最好 | U 盘、EFI 分区 |
典型使用场景
- 新盘投入使用:分区完成后建 ext4 或 xfs 文件系统
- 更换文件系统类型:确认已备份后重新格式化并迁移数据
- 卷标管理:-L 打卷标,方便用 LABEL= 挂载或在 lsblk 中辨识
- 调整 ext 保留块:mkfs.ext4 -m 1 把 root 保留空间从 5% 降到 1%,给纯数据盘省容量
- 重建测试盘:确认无数据后重新格式化,恢复干净的测试环境
常用示例
常用示例
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT # 先确认目标盘与容量
mkfs.ext4 -L data /dev/sdb1 # 建 ext4 并打卷标
mkfs.xfs -f -L data /dev/sdb1 # xfs 覆盖已有文件系统需 -f
mkfs -t ext4 -m 1 /dev/sdb1 # 保留块降到 1%(纯数据盘)
mkfs.ext4 -n /dev/sdb1 # 干跑:只显示将要做什么,不写入
mkfs.vfat -F 32 /dev/sdb1 # 建 FAT32(U 盘或 EFI)格式化后立即校验
格式化后立即校验
blkid /dev/sdb1 # 确认类型与 UUID
udevadm settle # 等内核处理完设备事件
mount /dev/sdb1 /mnt && df -hT /mnt # 挂载验证容量与类型
umount /mnt格式化是破坏性操作,写错设备名等于瞬间清空一块盘。执行前用 lsblk -f 与 lsblk -o NAME,SIZE 双确认设备与容量,再用 mount | grep 设备名 看它有没有正被挂载。
更细的参数(inode 大小、条带对齐、日志大小)交给各后端工具自己的选项:ext 系看 mke2fs,xfs 看 mkfs.xfs,不要硬记一套参数往所有文件系统上套。
ext4 常用参数
| 参数 | 含义 |
|---|---|
| -m 百分比 | root 保留块比例,默认 5% |
| -L 卷标 | 设置文件系统卷标,便于按 LABEL 挂载 |
| -N 数量 | 手工指定 inode 总数,小文件极多时有用 |
| -O 特性 | 启用或关闭文件系统特性,如去掉日志 |
| -b 大小 | 块大小,默认 4096 字节 |
操作前的确认清单
- lsblk 看清容量与型号,和采购单或云控制台对得上再往下走
- blkid 确认目标设备上有没有重要的文件系统与卷标
- mount 与 findmnt 确认这块设备没被挂载,也没有服务正在使用
- df -h 对一遍,避免把系统盘当成新加的数据盘
- 有条件时先在虚拟机或测试盘上把同样的命令走一遍
云盘上常带有 BIOS boot 或 EFI 系统分区标记,别对整盘直接 mkfs。先用 parted print 看分区表的类型,确认哪些分区能格、哪些必须保留。
把 mkfs 与 mount 串进同一个初始化脚本很方便,但一定要在格式化之前插入一次人工确认或环境变量开关,避免脚本被误触发时空格掉一块盘。
mkfs 只负责创建文件系统,不写 /etc/fstab。要让挂载在重启后仍然存在,还得补一条 fstab 记录并用 mount -a 验证一次。
格式化完顺手核对几个指标:blkid 看类型与 UUID,ext 系用 tune2fs -l、xfs 用 xfs_info 看块大小与 inode 数量是否合理,早发现问题比上线后再迁移便宜得多。