ESXI 8.0 主机到 NFS 速度慢,而客户机到 NFS 速度慢

ESXI 8.0 主机到 NFS 速度慢,而客户机到 NFS 速度慢

我一直在尝试使用 ESXI 主机上的 ghettoVCB 来查明为什么我的备份速度很慢。

我目前正在使用 ghettoVCB 将我的虚拟机从主机操作系统备份到 TrueNAS 上的 NFS 共享。

当我从 ESXI 机器上的客户机(Ubuntu 20.04)将文件复制到 NFS 共享时,我得到的速度大约为 257MB/s(这差不多是正确的,因为我在 NAS 和 ESXI 之间有一个专用的 2.5gb 通道)

su@test:/mnt/guest$ time sh -c "dd if=/dev/zero of=test bs=1MB count=1024 && sync"
1024+0 records in
1024+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 3.98153 s, 257 MB/s

real    0m4.470s
user    0m0.002s
sys     0m0.619s
 
Guest NFS Mount Options:
rw, relatime, vers=4.2,
rsize=1048576, wsize=1048576,
namlen=255, hard, proto=tcp, timeo=600,
retrans=2, sec=sys, local_lock=none,

当我尝试从 ESXI 主机复制到同一个 NFS 共享时,吞吐量要低得多,约为 45MB/s:

/vmfs/volumes/9043e582-0376fe3e] time sh -c "dd if=/dev/zero of=./test bs=1MB count=1024 && sync"
1024+0 records in
1024+0 records out
real    0m 22.70s
user    0m 0.00s
sys     0m 0.00s

ESXI NFS Mount Options
Cant seem to find a way to see the mount options ESXI uses?

我注意到的一件事是,关闭服务器上 ZFS 数据共享的同步可将 ESXI 写入速度加快到 146MB/s。但仍然比客户操作系统低很多。

我的假设是 ESXI 非常安全,并确保所有内容 100% 同步。有人知道是否如此吗?有人有任何关于提高备份性能的提示吗?

答案1

您看到的情况完全正常,无法按原样修复。VMware ESXi“按设计”没有磁盘缓存,这与虚拟机内部的客户操作系统不同,它确实有!因此,当您从虚拟机内部复制文件(这本身就是一个流氓测试,您应该使用更复杂的基准)时,您会饱和网络,因为流水线顺序读取比网络本身更快,但主机 ESXi 必须将数据(速度慢,没有预读)读取到 mmap() 的共享存储/网络内存缓冲区中,启动无状态 NFS 写入,再次读取磁盘并继续循环。如果您启动 WireShark,您会看到客户虚拟机 Tx 流量稳定,而主机操作系统在 Tx 上出现峰值。

作为一种解决方法,您可能需要获得一些具有强大板载内存的缓存 RAID 控制器或添加第二个节点,构建一个集群,配置 vSAN(VMUG 定价对于 vSphere+vSAN 来说相当实惠)。VMware vSAN 将在其级别缓存本地磁盘,低于 VMFS,因此您将再次饱和 2.5Gb。

答案2

作为一种解决方法,您可能需要获得一些具有强大板载内存的缓存 RAID 控制器或添加第二个节点,构建一个集群,配置 vSAN(VMUG 定价对于 vSphere+vSAN 来说相当实惠)。VMware vSAN 将在其级别缓存本地磁盘,低于 VMFS,因此您将再次饱和 2.5Gb。

这是一个值得的选择。或者,期待 Starwind VSAN,它在块级别上工作,应该能给你更好的性能。它支持 mdamd raid,也值得一试。

相关内容