31.8. Samba 优化

设置以下wide linksSamba 参数设置为no在 Samba 配置文件中/etc/smb.conf。如果将此选项设置为no,则会告诉 Samba 不要跟踪共享点导出区域之外的符号链接。为了确定链接是否指向共享区域之外,Samba 必须跟踪该链接,然后进行目录路径查找,以确定链接最终指向文件系统中的哪个位置。这最终会为每个文件名查找增加总共六个额外的系统调用,而 Samba 会查找大量文件名。一项已发布的测试表明,设置此参数将导致 Samba 性能下降 25% 到 30%。

31.8.1. 调整缓冲区缓存

修改文件系统缓存调整参数可以显著提高 Linux 的文件服务性能,最多可提高两倍。Linux 将尝试使用未用于任何其他目的的内存进行文件系统缓存。一个名为bdflush的特殊守护进程会定期刷新dirty缓冲区,包含已修改文件系统数据或元数据的缓冲区 到磁盘。

良好性能的秘诀是尽可能长时间地将尽可能多的数据保留在内存中。写入磁盘是任何文件系统中最慢的部分。如果您知道文件系统将被大量使用,那么您可以为 Linux Samba 调整此过程。与许多内核可调选项一样,这可以通过写入/proc文件系统中的特殊文件来动态完成。诀窍是,您必须告诉 Linux 您希望它这样做。您可以通过为 Linux 2.2 内核执行以下命令来做到这一点。

Red Hat Linux 下的默认设置是bdflush参数的默认设置是
          "40 500 64 256 500 3000 500 1884 2"
        
要更改 bdflush 的值,请在您的终端上键入以下命令

Version 6.1
          [root@deep ] /# echo "80 500 64 64 15 6000 6000 1884 2" >/proc/sys/vm/bdflush
        
您可以将上述命令添加到/etc/rc.d/rc.local脚本文件中,这样下次重启系统时就不必再次键入它们。

Version 6.2 下 编辑/etc/sysctl.conf文件并添加以下行
          # Improve file system performance
          vm.bdflush = 80 500 64 64 15 6000 6000 1884 2
        

您必须重启网络才能使更改生效。重启网络的命令如下
          [root@deep ] /# /etc/rc.d/init.d/network restart
        

          Setting network parameters		[  OK  ]
          Bringing up interface lo		[  OK  ]
          Bringing up interface eth0	        [  OK  ]
          Bringing up interface eth1	        [  OK  ]
        
这一行告诉bdflush不必担心将脏块写入磁盘,直到文件系统缓冲区缓存达到 80% 满(80%)。其他值调整诸如一次磁盘操作中要写入的缓冲区数量 (500)、允许脏缓冲区在内核中老化多长时间 (60*HZ) 等。您可以在 2.2 内核文档的以下文件中找到完整详细信息linux/Documentation/sysctl/vm.txt,并且,您还可以查看 通用系统优化 以获取更多信息。