Debian 10 上通过 NFSv3 在 openzfs/Linux 上读取速度很慢

Debian 10 上通过 NFSv3 在 openzfs/Linux 上读取速度很慢

因为我的问题还没有得到解答:qemu 快照排除设备 我决定使用 NFSv3 为虚拟机处理用户数据。由于维护任务后 BTRFS 性能变慢,我现在在 Debian 主机上使用 zfs Raid1 版本:buster-backports 0.8.3-1。

当我在主机上复制数据时,没有性能问题。

但:NFS 的性能非常慢;一开始写入和读取的速度分别为 10 和 40 MB/s。经过一些调整(我认为是 NFS 异步)后,我的写入速度达到约 80 MB/s。这对我来说足够了。读取速度仍保持在每台设备 20 MB/s。

有什么想法要测试什么吗?我对 zfs 和 NFS 还不熟悉。

主持人:Debian 10
虚拟机: Debian 10

NFS: 主机:/exports/ordner 192.168.4.0/24(rw,no_subtree_check)
客户端: .....nfs local_lock=all,vers=3,rw,user,intr,retry=1,async,nodev,auto,nosuid,noexec,retrans=1,noatime,nodiratime

ZFS 数据集:

卷:
....create -o ashift=12 zfs-pool ....mirror
sync=default

zfs set compression=off zfs-pool
zfs set xattr=sa zfs-pool
zfs set dnodesize=auto zfs-pool/vol
zfs set recordsize=1M zfs-pool/vol
zfs set atime=off zfs-pool/vol

zfs-mod-tune:

options zfs zfs_prefetch_disable=1
options zfs_vdev_async_read_max_active=1
options zfs_vdev_sync_read_max_active=128 (also 1 tested)
options zfs_vdev_sync_read_min_active=1

你能给出建议吗?

答案1

如果禁用同步请求,您可以获得更好的性能:zfs set sync=disabled tank/nfs_share

  • 来自zfs手册页:disabled禁用同步请求。文件系统事务仅定期提交到稳定存储。此选项将提供最高性能。但是,这非常危险,因为 ZFS 会忽略数据库或 NFS 等应用程序的同步事务需求。管理员应仅在了解风险时使用此选项。

请记住,禁用sync可能会导致数据损坏。

另一个选择是:

  • 在非常快速且独立的设备(如 SSD 磁盘(NVMe 是理想的,SATA 是可以接受的))中使用 SLOG [1](辅助日志)。

在您的测试中,我发现异步操作的最大活动线程数设置为 1。该值太低,因此可能导致读取性能不佳。

我需要一些有关您的系统的详细信息(ZFS 池的磁盘信息、系统内存和 CPU)。

/etc/modprobe.d/zfs.conf以下是一个建议,您可以根据自己的系统使用和调整它。它对我的 12 核系统 (at )来说非常有效:

options zfs zfs_vdev_async_read_max_active=30
options zfs zfs_vdev_async_read_min_active=10
options zfs zfs_vdev_async_write_min_active=30
options zfs zfs_vdev_async_write_max_active=10
options zfs zfs_vdev_scrub_min_active=10
options zfs zfs_vdev_scrub_max_active=20

[1]https://jrs-s.net/2019/05/02/zfs-sync-async-zil-slog/

答案2

一些更新:

  • 我使用 ext4 或 xfs 数据集进行了一些测试 --> 结果相同
  • 我使用的不是卷,而是 zpool direct 作为 nfs 共享 --> 结果相同
  • 我将 Ganesha 作为 nfs 服务进行测试 --> 写入速度提升至 30 MB/s,但撤回后速度保持不变,因此我认为这不是速度提升的真正原因

  • 我将配置从通过路由器的网络流量改为主机和虚拟机之间的通信仅在 RAM 中进行的构造,并使用 iperf 进行测试
    --> 令我惊讶的是,虽然 CPU 最后增长了 40%,但读写带宽并没有超过 60 MB/s
    --> wtf - 多么可怕 - 只在 RAM 中不再有 - 我不明白为什么 - 这太慢了
    - 我不相信这是实际的 debian kvm/qemu 系统的典型性能

    也许有人知道答案。

  • 有趣的是:我无法通过比较来衡量 udp 的性能,因为我只得到 1 MBit/s - 带有 udp 的 nfs 可以运行,但处理大数据时会出现错误

状态:30MB/s 写入和 50MB/s 读取的速度对我来说足够了,但令人失望

相关内容