我使用 mdadm 创建了一个 7 驱动器 RAID5 阵列,并将 LVM2 放在阵列上,以便将来扩展它。我将其格式化为 XFS。我基本上逐行遵循了本教程:
使用 XFS 轻松扩展 Linux 软件 RAID 5。最佳实践?
当我做
hdparm -tT /dev/md0
我看到读取速度达到 400MB/s+
但是通过网络(千兆交叉)我只能获得 55-60MB/s 的读写速度。这是一台相当新的机器(过去 2 年)
瓶颈可能是什么原因造成的?我该如何解决它们?
谢谢。
答案1
首先,您的千兆网络为 1000Mbps -> 125MBps,经过开销后仅为 ~100MBps。您只能获得大约一半的速度,这不算好;但您永远无法达到 400MBps 甚至接近 400MBps。
您在网络上使用什么协议?CIFS、AFS、NFS?如果是 NFS,UDP 还是 TCP?巨型帧、数据帧大小、异步/同步?测试方法?有很多因素可能会影响您的性能。
使用 NFSv3、UDP、8k 数据帧、9k MTU 和 async+aio,我可以从千兆网络中获得 102MBps。我认为这已经非常接近极限了(注意:我在两端都运行 FreeBSD,而不是 Linux;并且 ZFS 不是 XFS 或 EXT)。
答案2
在本地测量磁盘性能以确定您看到的 55-60MB/秒是磁盘还是网络。
您可以使用“time”和“dd”测试本地速度:
you@server$ time dd if=/dev/zero of=file.1 bs=4k count=10M
这应该会写入一个 40GB 的文件并告诉您花费了多长时间。重要的是要写出一个大于可用 RAM 的文件,通常尽可能是两倍大小。这是为了避免任何潜在的缓存效应。使用适合您的条带大小和 fs 块大小的任何块大小组合。
然后,重新读入文件以测试读取速度:
you@server$ time dd if=file.1 of=/dev/null bs=4k
如果本地性能比远程主机上 CIFS 上看到的 55-60MB/秒更快,则检查网络(包括两个都主机,您可以使用 iperf 来实现这一点)。如果本地性能上限为 55-60B/秒,您将需要提供有关硬件规格和配置的更多详细信息。