NFS — 处理小文件时性能非常慢(CIFS 也是如此)

NFS — 处理小文件时性能非常慢(CIFS 也是如此)

我在两台 Debian Striking 机器之间使用 NFS 时性能非常差,我找不到解决方案。我在导出文件中在服务器端使用 rsync,在客户端使用 tcp、hard、intr、rsize=32768、wsize=32768 作为安装时的选项。两台服务器都是在 Hyper V 下运行的虚拟机,共享同一个内部网络交换机。

使用大文件时性能尚可,但使用 rsync 时性能非常低。复制一个 tar 文件(大小为 2 GB)需要几秒钟,提取同一目标文件夹中的同一 tar 文件则需要几分钟。tar 无需任何特殊选项,只需 tar xvf 即可。

编辑

我使用的是 4 TB Western Digital WD40EFRX SATA 硬盘。这 4 个硬盘作为物理磁盘直接分配给 Hyper-V VM。这 4 个磁盘在 Debian Stretch NFS Server 中制成 RAID 5 ext4 文件系统。我使用的测试文件是 40,000 个大小不同的文件,总共 2 GB。(主要是小文件、图像和文本以及一些 jar 文件)。

两台服务器共享同一个 Hyper-V 外部虚拟交换机,连接到 Intel I211 千兆网络适配器

从 NFS 客户端到 NFS 服务器的 ping 示例:

PING xyzserver (192.168.1.49) 56(84) 字节数据。来自 xyzserver (192.168.1.49) 的 64 字节:icmp_seq=1 ttl=64 时间=41.2 毫秒
来自 xyzserver (192.168.1.49) 的 64 字节:icmp_seq=2 ttl=64 时间=5.48 毫秒
来自 xyzserver (192.168.1.49) 的 64 字节:icmp_seq=3 ttl=64 时间=29.7 毫秒
来自 xyzserver (192.168.1.49) 的 64 字节:icmp_seq=4 ttl=64 时间=64.2 毫秒
来自 xyzserver (192.168.1.49) 的 64 字节:icmp_seq=5 ttl=64 时间=43.0 毫秒
来自 xyzserver (192.168.1.49) 的 64 字节: icmp_seq=6 ttl=64 time=11.5 ms
64 字节来自 xyzserver (192.168.1.49):icmp_seq=7 ttl=64 time=29.4 ms

编辑2

我相信这与 Debian 9 无关。甚至与 Debian 无关。也不仅仅与 NFS 有关。我们还使用 Windows 机器和 CIFS 进行了测试,性能非常相似。

使用大文件时性能良好(特别是使用 NFS),但使用小文件(源代码等)时性能会变得非常慢(甚至低于 1 MB/s)。

你知道我可能做错了什么吗?(​​老问题)

我们正在考虑不使用 NFS 或 CIFS。

知道我们可以做些什么才能获得良好的表现吗?(新问题)

在快速服务器上拥有快速的 RAID5 磁盘子系统并在同一台服务器上拥有两个虚拟机似乎很荒谬,我们无法找到以适当的速度在共享文件系统中 rsync 文件或解压文件的方法。

有什么建议我可以使用吗?(硬件,软件)

答案1

我们发现 Hyper-V 下 CIFS 和 NFS 的性能问题没有得到解决。

我们最终决定转向 PROXMOX,一切都变得更好了。不知道为什么,可能是因为 Proxmox 虚拟化 Debian 也是基于 Debian,所以比 Hyper-V 效率高得多,而 Hyper-V 对 Windows 虚拟化的效率很可能更高?

相关内容