RAID 读/写速度逐渐变慢

Nal*_*ial 5 raid xfs debian samba software-raid

这实际上是家里的服务器,但我觉得它足够复杂,以至于 SuperUser 上没有它,并且可以轻松应用于专业情况。

我有一个运行 Debian (Lenny 5.0.4) 的文件服务器,它在 RAID 5 之上有一个 XFS LVM,操作系统驱动器与 RAID 分开。它还运行 apache、samba 和 postgresql。旁注:在 RAID5 批评者将我钉在十字架上之前,我使用 RAID5 是因为我在原始驱动器空间上获得了更多的收益,并且仍然有一些容错能力。

当盒子启动时(通过关机或重启)读/写它的 samba 共享会最大化千兆网络连接。随着时间的推移,这会慢慢降低,最终达到 < 10MB/s;但是,当重新启动时,速度会恢复到最大连接。

为什么会发生这种情况,有没有办法在不关闭服务器的情况下“清除”导致它的原因?

提前致谢!

编辑:要回答@LapTop006 的问题, cat /proc/mdstat 的输出在重新启动后和缓慢时是相同的:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[0] sda[5] sdb[4] sdf[3] sdg1[2] sde1[1]
  4883799680 blocks level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]

unused devices: <none>
Run Code Online (Sandbox Code Playgroud)

根据 xfs_db 的 frag 命令:

actual 58969, ideal 23904, fragmentation factor 59.46%
Run Code Online (Sandbox Code Playgroud)

编辑 2: 我使用的是标准的 Debian 内核。cat /etc/fstab 为我的操作系统驱动器和突袭输出这个:

# <file system>       <mount point>   <type>  <options>         <dump>  <pass>
/dev/sda1              /               ext3    errors=remount-ro   0       1
/dev/mapper/oomox-lvm  /raid           xfs     defaults            0       2
Run Code Online (Sandbox Code Playgroud)

老实说,我并不是最大的 Linux 大师,我也没有通过命令行(即 mkfs_xfs)进行 raid 或 lvm;当您第一次安装操作系统时,我使用了基于 UI 的 Debian RAID 安装设置,并且仅在需要向阵列添加驱动器时使用命令行。

当它再次开始减速时,我将发布 iostat 输出。

编辑 3:

无论是慢还是快,iostat 输出都会显示所有驱动器之间读取和写入的字节数相等。我也试过设置

socket options = TCP_NODELAY
Run Code Online (Sandbox Code Playgroud)

根据@Avery Payne 的建议,在 samba 配置中,但它仍然很慢。然而,至少问题已经缩小了,因为只有重新启动 samba 才能解决问题。不过这很奇怪,因为直到最近我才遇到这个问题。

最终编辑:我尝试了@David Spillett 的跑步建议

time dd if=/dev/sda of=/dev/null
Run Code Online (Sandbox Code Playgroud)

对于每个驱动器,当它很慢时,看看它是否与快速时有任何区别,而没有。因此,问题显然出在 Samba 上。

我将正确答案授予@Avery Payne。尽管@David Spillett 的回答包含了大量的故障排除技术,但从技术上讲,@Avery Payne 为我指出了解决此问题的最正确方向。如果我找到最终解决方案,我会发布。

谢谢大家!

Ave*_*yne 2

当盒子启动(通过关闭或重新启动)时,读取/写入其 samba 共享会最大化千兆位网络连接。随着时间的推移,速度会慢慢降低,最终变为 < 10MB/s;但是,重新启动后,速度会恢复到最大连接速度。

问题很可能不在于操作系统或硬件,而在于您的 Samba 配置。您在 Samba 中的 TCP 选项设置正确吗?有些选项会导致客户端访问性能下降,要么导致 TCP 流量减慢,要么导致额外的开销。

您的 RAID 和 fstab 看起来不错。


评论后续行动:

在 smb.conf 的全局部分中应该有以下行:

socket options = TCP_NODELAY
Run Code Online (Sandbox Code Playgroud)

更多信息可以在常见问题解答的 Samba 性能调优部分找到

http://samba.org/samba/docs/man/Samba-HOWTO-Collection/speed.html