mkfs 非常慢

mkfs 非常慢

在我们的 Virtualbox 管理程序中,在 ubuntu 16.04 上格式化 xfs 卷非常慢,但在 Nutanix 内运行的虚拟机则不然。

Virtualbox
100 GB => 秒
2TB => 秒

Nutanix(超融合)
100 GB => 4 分钟
2TB => 30 分钟以上

parted -l -s | grep "Error: * unrecognised disk label"
Error: /dev/sdg: unrecognised disk label

parted /dev/sdg mklabel gpt
Information: You may need to update /etc/fstab.

parted -- /dev/sdg mkpart primary xfs 1 -1
Information: You may need to update /etc/fstab.

time mkfs.xfs /dev/sdg1
meta-data=/dev/sdg1              isize=512    agcount=4, agsize=6553472 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0
data     =                       bsize=4096   blocks=26213888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

real     4m7.653s
user    0m0.004s
sys       0m0.028s

为什么在一个管理程序中使用 格式化驱动器需要很长时间mkfs,而在另一个管理程序中则几乎是即时的?

答案1

这是因为超融合管理程序使用 SSD。 mkfs 命令默认使用 NODISCARD(也称为 TRIM)格式化。

要运行不带 trim 的 mkfs,请-K在 XFS 和-E nodiscardext4 上使用该选项

XFS

mkfs.xfs -K /dev/sdx 

外部4

mkfs.ext4 -E nodiscard 

警告:仅在没有现有数据的新卷上使用 -K 或 -E。

在具有现有数据的驱动器上使用 -K 或 -E 选项将导致空间浪费,直到数据被覆盖。

答案2

来自Red Hat官方课程(Red Hat系统管理II - RH134),使用mkfs.xfs格式化VDO卷时如下:

# mkfs.xfs -K /dev/mapper/vdo1

明确规定:

“前面的 mkfs.xfs 命令中的 -K 选项可防止文件系统中未使用的块立即被丢弃,从而使命令返回得更快。”

答案3

mkfs -t xfs /dev/md6 这个命令在 Ubuntu 上需要很长时间,并且在 RHEL 上非常快。

mkfs.xfs -K /dev/sdx 似乎非常快...但看起来它只输出信息..最好使用 time 命令来查看是否确实完成了某些工作。

time mkfs.xfs -K /dev/md6 mkfs.xfs: /dev/md6 似乎包含现有文件系统 (xfs)。 mkfs.xfs:使用 -f 选项强制覆盖。

真实 0m0.005s 用户 0m0.000s 系统 0m0.000s

时间 mkfs.xfs -K /dev/md6 -f 元数据=/dev/md6 isize=512 agcount=32,agsize=24416912 blks = sectsz=512 attr=2,projid32bit=1 = crc=1 finobt=1,稀疏 = 0 数据 = bsize = 4096 块 = 781340832,imaxpct = 5 = sunit = 16 swidth = 32 blks 命名 = 版本 2 bsize = 4096 ascii-ci = 0 ftype = 1 日志 = 内部日志 bsize = 4096 块 = 381520,版本=2 = sectsz=512 sunit=16 blks,惰性计数=1 实时=无 extsz=4096 块=0,rtextents=0

真实 0m0.572s 用户 0m0.000s 系统 0m0.188s

答案4

我在 RHEL 7.9 上遇到了同样的问题,如果您使用带有 Mpath 的外部存储 SAN,对于 SAN,如果您使用 BOND 或 NIC 分组 mkfs.xfx 非常慢 我已经使用不同版本的 RHEL 7.5 重新安装了操作系统两次,同样,我有多个 RHEL生产中的服务器具有相同的设置,但没有 NIC 分组(循环),我已在新的(问题)服务器中删除了我尝试过的完美工作。我认为当我执行 mkfs 命令时,它会丢弃 LUN 的块,执行会循环发生,连接会不断更改到外部存储,因此速度非常慢。我花了一周的时间在 google 上搜索,检查了 RHEL 支持门户,但没有运气,最后我删除了 nic teaming 及其工作。

相关内容