在我们的 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 nodiscard
ext4 上使用该选项
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 及其工作。