这实际上是家里的一台服务器,但是我觉得这是非常复杂的,不能在超级用户上使用,而且很容易适用于专业的情况。
我有一个运行Debian(Lenny 5.0.4)的文件服务器,并且在RAID 5的顶部有一个XFS LVM,操作系统驱动器与RAID分开。 它也运行Apache,Samba和PostgreSQL。 注意:在RAID5评论家把我钉在十字架之前,我使用的是RAID5,因为我在原始驱动器空间上得到了更多的回报,并且还有一些容错能力。
当这个盒子启动时(通过关机或者重新启动)读取/写入它的samba共享最大化千兆networking连接。 随着时间的推移,这个速度慢慢降低,最终变成<10MB / s。 但是,重新启动时速度会恢复到最大连接。
为什么会发生这种情况,并且有没有办法在不使服务器停机的情况下“清除”造成的任何事情?
提前致谢!
编辑:要回答@ LapTop006的问题,猫/ 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>
根据xfs_db的frag命令:
actual 58969, ideal 23904, fragmentation factor 59.46%
编辑2:我使用标准的Debian内核。 猫/ etc / fstab输出这个为我的操作系统驱动器和RAID:
# <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
说实话,我不是最大的Linux大师,我没有通过命令行(即mkfs_xfs)进行RAID或lvm。 我在第一次安装操作系统时使用了基于UI的Debian RAID安装设置,并且在需要将驱动器添加到arrays时仅使用命令行。
当它开始减速时,我会发布iostat输出。
编辑3:
当速度较慢或较快时,iostat输出显示字节在所有驱动器之间平均读写。 我也试过设置
socket options = TCP_NODELAY
根据@Avery Payne的build议,在sambaconfiguration中,但仍然很慢。 但至less这个问题已经被缩小了,因为只有重启samba才能解决问题。 这很奇怪,因为我从来没有这个问题,直到最近。
最终编辑:我试过@David Spillett的跑步build议
time dd if=/dev/sda of=/dev/null
对于每一个驱动器,当它很快看到是否有任何区别时,它是很快,并没有。 所以,Samba显然是这个问题。
我正在给@Avery Payne授予正确的答案。 虽然@David Spillett的回答有很多疑难解答技术,但是从技术上讲,@ Payvery Pay指出了解决这个问题的最正确的方向。 如果我find最终解决scheme,我会发布。
感谢大家!
当这个盒子启动时(通过关机或者重新启动)读取/写入它的samba共享最大化千兆networking连接。 随着时间的推移,这个速度慢慢降低,最终变成<10MB / s。 但是,重新启动时速度会恢复到最大连接。
这个问题很可能不是在操作系统或硬件上,而是在你的Sambaconfiguration中。 你有没有在Samba中正确设置TCP选项? 有一些选项会导致客户端访问降级,或者导致TCPstream量减慢,或者造成额外的开销。
你的RAID和fstab看起来很好。
后续评论(s):
在smb.conf中,你的全局部分应该有以下行:
socket options = TCP_NODELAY
有关更多信息,请参阅常见问题解答的Samba性能调整部分
http://samba.org/samba/docs/man/Samba-HOWTO-Collection/speed.html
有几个想法可以帮助你排除一些事情:
你可能有一个内存泄漏导致机器之间的交换像疯了一段时间? 当问题明显时,请检查free -m 。
另外,你可以有RAID软件的决定,需要执行重新同步的问题? 检查/proc/mdstat当你遇到缓慢检查(虽然我不希望这是通过重新启动解决 – 任何这样的resync应重新启动后重新启动)。
你排除了本地I / O问题吗? 当问题很明显时,arrays执行本地进程的速度有多快。 如果本地进程无法以正常速度访问arrays,那么Samba不是问题(相反,如果networking访问不可能,这支持相反)。 如果驱动器在本地看起来很慢,那么可以通过使用netcat和pv运行简单testing来validationnetworking是否不慢以及驱动器是否可以查找更多的证据(请参见http://www.interphero.com/?p=116或者search其他示例的“netcat speedtest”)。
这可能是一个或多个驱动器的固件问题? 检查制造商是否有这样的更新。 而且,这可能只是一个奇怪的玩法。 当速度问题出现时,尝试一下time dd if=/dev/sda of=/dev/null ,重复每个驱动器几次并取平均值。 如果一个驱动器出来比其他驱动器慢得多,那么可能它有一个问题,需要更换(或更新固件,如果它有一个已知的问题)。
你排除了网卡问题(硬件或驱动程序)? 你可以尝试换一张Gbit卡(使用不同的芯片组),看看是否有所作为。
如果问题似乎是Samba,而不是RAIDarrays,网卡或其他任何东西,则需要完全重新启动以解决问题,或者只是简单地重新启动Samba? (或者,如果服务器以某种方式参与某个域,则重新启动Samba和winbindd?)
关于你的RAID5的一个注意事项:
RAID5的主要问题是写入性能,尤其是对于大量的小写操作。 这可能会导致数据库工作繁重,但是对于大部分时间执行批量读取的基本文件服务器angular色(您的情况听起来像是这样),大多数情况下它几乎没有明显的影响。 如果您确实发现写入性能有问题,请在3驱动器模式下尝试新的RAID10驱动程序(类似于3驱动器RAID5 (或2驱动器RAID0)的读取性能,但写入性能更像是双驱动器RAID1同时保持与任何一个驱动器同时死亡相同的冗余)。 除了最新的内核之外,RAID10驱动程序仍然可以被分类为“实验”。
RAID5的另一个问题是,如果更换一个驱动器,重buildarrays需要多长时间。 我怀疑在这方面3驱动器RAID10是更好的。
作为参考:Linux的三个驱动器上的RAID10类似于某些IBM服务器中的RAID控制器调用RAID1E。