原 Linux使用mkfs.xfs格式化盘很慢
现象
使用命令mkfs.xfs /dev/sde直接格式化盘,该盘有20TB,特别慢,30分钟没有执行完。
但是,使用 mkfs.ext4 很快完事。
解决
最后改为如下的命令后,3秒完事:
mkfs.xfs -f -K -l size=128m,lazy-count=1 /dev/sde或使用 mkfs.ext4 尝试。
解释
| 可能原因 | 解决方案 |
|---|---|
mkfs.xfs 进行全盘扫描 | -l lazy-count=1 |
discard(TRIM)影响 SSD | -K 选项跳过 |
| I/O 负载高 | iostat -xm 1 检查 |
| XFS 版本老旧 | 更新 xfsprogs |
| 日志初始化慢 | -l size=128m |
| 文件系统特性影响 | -n ftype=0 |
如果 mkfs.ext4 很快,而 mkfs.xfs 特别慢,说明问题可能与 XFS 文件系统初始化方式 或 磁盘 I/O 特性 相关。可以从以下几个方面分析和优化:
1. mkfs.xfs 默认行为:全盘扫描 + 日志区初始化
mkfs.xfs 会执行以下操作,导致格式化比 mkfs.ext4 慢:
- 全盘扫描并初始化数据结构
- 为日志区域 (log) 预留空间并进行初始化
- 可能执行
discard(TRIM)操作(如果是 SSD)
优化方案
尝试使用 -f -l lazy-count=1 加快格式化:
mkfs.xfs -f -l lazy-count=1 /dev/sde-f:强制格式化,避免因已有分区导致的提示。-l lazy-count=1:优化 XFS 的日志计数方式,加快格式化。
2. 跳过 discard 操作(特别适用于 SSD)
如果 mkfs.xfs 在 SSD 上特别慢,可能是 TRIM 操作导致:
mkfs.xfs -f -K /dev/sde-K选项会跳过discard,提高格式化速度(适用于 SSD)。
可以手动检查 SSD 是否支持 discard:


