最常踩的坑是误将整块磁盘(如/dev/sdb)当成分区(如/dev/sdb1)格式化,会破坏分区表;必须用lsblk或fdisk -l确认NAME带数字后缀、FSTYPE和MOUNTPOINT为空,且已卸载。

确认目标分区且确保未挂载
格式化前最常踩的坑是把整块磁盘(如 /dev/sdb)当成分区(如 /dev/sdb1)来操作,这会直接破坏分区表,甚至误伤系统盘。必须用 lsblk 或 sudo fdisk -l 确认目标设备路径——重点看 NAME 列是否带数字后缀、FSTYPE 是否为空、MOUNTPOINT 是否为空。
如果已挂载,mkfs.xfs 会报错 Device is busy 或拒绝执行。务必先卸载:sudo umount /dev/sdb1
不确定是否有残留文件系统签名时,可提前清理:sudo wipefs -a /dev/sdb1
安装 xfsprogs 并验证命令可用性
很多发行版(尤其是 Ubuntu 22.04+、RHEL 8+、AlmaLinux)默认不带 mkfs.xfs,直接运行会提示 command not found。这不是权限问题,是工具缺失。
Debian/Ubuntu:sudo apt install xfsprogs
RHEL/CentOS/AlmaLinux:sudo dnf install xfsprogs 或 sudo yum install xfsprogs
装完验证:mkfs.xfs -V 应输出版本号;which mkfs.xfs 应返回路径(如 /usr/sbin/mkfs.xfs)
执行 mkfs.xfs 格式化并设置关键参数
mkfs.xfs 不支持 -m(预留空间)这类 ext4 参数,但有几个关键选项直接影响性能和运维便利性:
- 基础格式化(无标签、默认参数):
sudo mkfs.xfs /dev/sdb1 - 加卷标便于后续通过
LABEL=xxx挂载(推荐):sudo mkfs.xfs -L "backup" /dev/sdb1 - 强制覆盖已有文件系统(常见于重做或测试环境):
sudo mkfs.xfs -f /dev/sdb1 - 大文件场景(如视频、数据库归档)建议显式指定 inode 大小和块大小:
sudo mkfs.xfs -i size=512 -b size=65536 -L media /dev/sdb1
注意:-f 是高危操作,仅在确认数据已备份或设备为空时使用;-i size=512 可提升海量小文件性能,-b size=65536(64K)适合单个文件 >1GB 的场景。
验证格式化结果与快速挂载测试
格式化完成后不能直接写入,必须验证文件系统类型和挂载可用性:
查看类型与标签:sudo blkid /dev/sdb1 —— 输出中应含 TYPE="xfs" 和 LABEL="backup"(若设置了)
临时挂载测试(避免写错 fstab):sudo mkdir -p /mnt/test && sudo mount /dev/sdb1 /mnt/test
写入并读取验证:echo "xfs-ok" | sudo tee /mnt/test/test.txt && cat /mnt/test/test.txt
成功后卸载:sudo umount /mnt/test
真正生产挂载前,别跳过这一步——有些 RAID 卡或 NVMe 设备在首次挂载时会触发元数据初始化,静默失败只会在后续写入时报 I/O 错误。











