Linux RAID5软件arrays的瓶颈来源

我使用mdadm创build了7个驱动器的RAID5arrays,并将LVM2放在arrays上,以便将来扩展它。 我格式化为XFS。 我基本上遵循这个教程线为线:

易于使用XFS扩展Linux软件RAID 5。 最佳实践?

当我做

hdparm -tT /dev/md0 

我看到读取速度为400MB / s +

但是通过networking(千兆交叉),我只能读取和写入55-60MB / s。 这是一个相当新的机器(最近2年)

有什么可能是瓶颈的一些来源,我怎样才能解决它们?

谢谢。

首先,你的千兆networking是1000Mbps – > 125MBps,开销后只有〜100MBps。 你有一半左右,这不是很好, 但是你永远不会达到400MBps甚至closures。

你在networking上使用什么协议? CIFS,AFS,NFS? 如果是NFS,UDP或TCP? 巨型帧,dataframe大小,asynchronous/同步? testing方法? 有很多因素可能会影响你的performance。

使用NFSv3,UDP,8kdataframe,9k MTU和async + aio,我可以从我的千兆networking中获得102MBps。 我认为这非常接近极限(注意:我在两端运行FreeBSD,而不是Linux;而ZFS不是XFS或EXT)。

在本地测量磁盘性能,以确定您所看到的55-60MB /秒是磁盘和/或networking。

您可以使用'time'和'dd'来testing本地速度:

 you@server$ time dd if=/dev/zero of=file.1 bs=4k count=10M 

这应该写一个40GB的文件,告诉你需要多长时间。 写出大于可用RAM的文件是非常重要的,如果可能的话,通常大小是其大小的两倍。 这是为了避免任何潜在的caching效应。 使用块大小的任意组合对于您的条带大小和fs块大小都有意义。

然后,读回文件来testing读取速度:

 you@server$ time dd if=file.1 of=/dev/null bs=4k 

如果本地性能比从远程主机通过CIFS看到的55-60MB /秒更快,则查看networking(包括两台主机,您可以使用iperf)。 如果本地性能是55-60B /秒的上限,则需要提供关于硬件规格和configuration的更多细节。