在 zvol 上进行 mkfs.ntfs 期间消耗大量资源,为什么(以及如何限制这一点)?

在 zvol 上进行 mkfs.ntfs 期间消耗大量资源,为什么(以及如何限制这一点)?

在我的机器上mkfs.ntfs速度很慢,导致大量使用资源,阻止我将机器用于其他任何事情。根据 top 的说法,它(或者更确切地说是直接相关的zvol进程)正在使用每个可用线程的 80-90%,甚至是已经被其他进程(例如虚拟机)使用的线程。

如此大量的资源使用mkfs.ntfs正常吗?如果是这样,有什么方法可以限制使用的线程数量吗mkfs.ntfs?我在想,如果我可以将其限制为几个线程/核心,那么其他进程将拥有资源,以便我可以继续工作。

编辑附加信息。

我使用 Ubuntu 20.04 作为我的主机操作系统,我正在格式化的卷是 ZFS zvol。该 zvol 与 ext4 分区共享镜像 VDEV,我在其中运行 Kubuntu。

为了制作我跑的zvol

sudo zfs create -V 400G -o compression=lz4 -o volblocksize=8k -s nvme-tank/ntfs-zvol

在评论中提出建议后,我尝试使用nice取消命令的优先级。它有一点帮助,但仍然导致我使用的虚拟机极度延迟。

nice -n19 sudo mkfs.ntfs /dev/zd16 -c 8192

这是top。这些zvol过程仅在命令期间发生mkfs,因此我假设它们是直接相关的: 顶部

答案1

NTFS 格式化可能比 ext4 慢(例如,它需要写入更多数据来初始化磁盘结构),但绝不应该让您的系统感觉反应迟钝/资源受限。

我不熟悉 ZFS:可能它本身尚未完成自己的内部任务(同步、镜像、数据结构分配等),或者它是使用次优配置创建的,这就是您遇到这些症状的原因?或者您的系统缺少 RAM(上次我听说 ZFS 需要更多 RAM 才能提高效率)?您的top输出中充满了zvol进程,这意味着 ZFS 文件系统本身正在减慢您的系统速度,而不是mkfs.ntfs.

简而言之,我们需要 ZFS 专家。我99%肯定mkfs.ntfs不是罪魁祸首。

Internet 上有很多讨论,表明您没有考虑到 ZFS 的一些复杂性:

答案2

除非你告诉它清零分区并检查坏扇区(至少在我的版本中这是默认设置),否则单个案例不应该花那么长时间。检查坏扇区是个好主意,但是你可以使用选项跳过它-f

sudo mkfs.ntfs -f /dev/zd16 -c 8192

相关内容