首 页文章中心

Linux学习网

您的位置Linux学习网 > Linux服务器应用 > FreeBSd > 文章内容

FreeBSD下系统性能调优

作者:佚名  来源:本站整理  发布时间:2008-7-14 17:42:00
SYSTEM SETUP - DISKLABEL,NEWFS,TUNEFS,SWAP
        当用disklabel(8)在你的硬盘上布局文件系统时,重要的是要记住硬盘在传送
        数据时外磁道比内磁道快。为了利用这个特点,你应该把较小的文件系统和交
        换区靠近外磁道,随后是较大的文件系统,最后是最大的文件系统。还有重要
        的是把标准文件系统大小确定在当你要增加这台机器负荷时也不需要重定他
        们的大小。我经常建立的文件系统的次序是128M的root,1G的swap,128M的
        /var/tmp,3G的/usr,其余的空间留给/home。

        典型地,你应该把交换区大小定为2倍的内存大小。如果你没有很多内存,那样
        的话,你将需要更多的交换区空间。不建议将交换区定在小于256M,当你确定
        交换区大小的时候,你要考虑到将来可能要扩充内存。内核的VM(虚拟内存)换页
        算法性能是准对交换区至少是内存大小2倍的条件进行优化的。配置太小的交换
        区会导致VM页面扫描的低效率,当内存扩充后,随之也会导致问题。最后在一个
        有多个SCSI硬盘的大系统上(或者有多个IDE磁盘工作在多个IDE 控制器上),
        我们强烈建议在每个驱动器上配置交换分区,每个交换分区的大小应该是几乎
        一样的,内核能处理任意大小的交换区,但是内部数据结构放大到最大分区的4
        倍大小。保持交换分区同样的大小允许内核优化地将交换空间交叉分布在N个
        磁盘上。不要担心这样做有点过份,交换区是UNIX的救星,甚至于你虽然通常不用
        那么多交换区,在被迫重新启动之前,它也可以给你时间去从一个出轨的程序中
        把系统恢复过来。
        
        怎样为你的/var分区定大小主要依赖于你将怎样使用这台机器。这个分区主要
        存放邮箱,打印缓冲区和日志文件。有些人甚至于把/var/log作为一个独立的
        分区(但是除非有特别的情况,这样做不值得,只会浪费一个分区ID)。如果你这
        台机器主要用做邮件或打印服务器,或者运行一个大访问量的WEB服务器,你应
        该考虑把这个分区建的更大一点,可能1G或更多。很容易低估日志文件的存储需
        求。
        
        确定/var/tmp的大小依赖于你将需要怎样使用你的临时文件。128M是建议的最
        小的尺寸。注意sysinstall将建立一个/tmp目录,但是通常把/tmp作为/var/tmp
        的连接是个好注意。为临时文件建立一个分区有两个重要的原因: 首先,它减少
        了系统崩溃后文件系统损坏的可能性,再就是减少一个出轨程序填满[/var]/tmp
        时影响其他重要子系统(mail,logging等等)的机会。填满[/var]/tmp是经常发
        生的问题。
        
        在以前/tmp和/var/tmp是不同的东西,但是引入/var(和/var/tmp)是被程序员
        引起的大迷惑,今天的程序间或使用一个或另一个,它们两者变的没有区别。
        所以把它们变成一个临时目录是有道理的.然而,当你处理/tmp时,有一件事
        情是你不想做的,就是把/tmp驻留在根分区上,导致根分区被填满或崩溃后重
        启时文件系统损坏.
        
        /usr分区存放大量用于支持系统的文件,子目录/usr/local存放大量从ports(7)
        安装的文件.如果你不那么多使用ports,也不将系统源代码(/usr/src)存放在
        机器上,你可以为/usr节省1G的磁盘空间.相反,如果你安装大量的ports(特
        别是窗口管理和Linux仿真)建议你至少2G的/usr,如果你还要将系统源代码放
        在机器上,我们建议你3G的/usr,不要低估所需的空间,它会慢慢爬起来,让你
        大吃一惊.
        
        /home分区存放用户自己的数据,我通常把余下的空间留给这个分区.
        
        为什么要分区? 为什么不建一个大的/分区就行了? 那样我就不需要考虑分区大
        小问题。有几个原因显示这不是个好注意。首先,每个分区都有不同的操作特征,
        分开它们有利于文件系统准对这些特征调整它自己.例如,根和/usr分区主要是
        读操作,只有少量的写,而大量的读和写可以发生在/var在/var/tmp。把小的但
        是具有更繁忙的写操作的分区分开,就不会影响读操作居多的分区.再就是,把
        写操作居多的分区靠近磁盘外侧(例如,不是在一个大分区前,而是分区表后)有
        利于对你经常需要的分区增加性能。你可能也需要在大分区中的I/O性能,但是
        它们是那样的大以至于把它们移到磁盘外侧也不会显著增加性能,但是把/var移
        到磁盘外侧会有显著的不同.
        
        正确分区你的系统允许你调整newfs(8)和tunefs(8)的参数。调整newfs(8)需要更
        多的经验,但是会带来显著的性能提高。有三个参数可以相对安全的调整:
        blocksize(块尺寸),bytes/inode(每i节点字节数)和cylinders/group(每组柱面
        数).
               
        当块尺寸是8K或16K时,FreeBSD运行的最好.缺省的文件系统块尺寸是8K。对于
        一个大的分区使用16K块尺寸是个好注意.这同样需要你指定碎片(Fragment)大小。
        我们建议碎片总是块大小的1/8(其他的碎片尺寸测的不多)。newfs(8)选项是
        newfs -f 2048 -b 16384。。。。使用更大的块尺寸将导致缓冲区碎块,降低性能.
        
        如果大分区主要趋向于使用少量的大文件,例如数据库文件。你可以增加
        bytes/inode比例,它减少该分区的i节点的数量(最大可被建立的文件和目录数量
        )。减少文件系统i节点数量可以大大减少fsck(8)在系统崩溃后恢复的时间。不要
        使用这个选项,除非你确实在这个分区存放大文件.如果你过度这样做,你可能
        会被文件系统依然有大量的空间而不能创建文件的事情所困扰。使用32768,
        65536或262144 bytes/inode是建议的值。你可以调的更高,但是那只影响fsck的
        恢复时间.例如,newfs -i 32768...
        
        最后,增加cylinders/group比例可把i节点间距放的更近。这样可以增加目录性能
        和减少fsck的是时间.如果你使用这个选项,我建议最大化。使用newfs -c999,
        然后newfs报错会告诉你最大可能的值.
        
        tunefs(8)可以进一步调整文件系统。这个命令可以运行在单用户方式而不用重
        新格式化文件系统。然而,这个程序可能是系统中最容易被滥用的程序。许多人
        企图通过把最小自由空间百份比设置为0来增加可使用的文件系统空间,这可
        导致严重的文件系统碎片,我们不建议这样做。实际上唯一值得使用的tunefs
        选项是使用tunefs -n enable /filesystem 打开softupdates开关(注意:在5.x中,
        可以用newfs -U选项打开)。softupdates戏剧性地提高meta-data的性能,主要
        是文件创建和删除。我们建议对所有的文件系统都打开softupdates开关。
        softupdates有两个副作用你必须知道: 首先softupdats保证当系统崩溃时文件
        系统状态的一致性的,但是更新磁盘可能要延时几秒种。如果系统崩溃,可能
        丢失更多的数据。第二,softupdates延时文件系统自由块的释放,如果你的文
        件系统将要满了(例如,根文件系统),对系统做一次升级,例如,make insta-
        llworld,可能导致空间不够而失败.
        
        大量的运行时mount选项可以帮你调整系统。最明显最危险的是async。不要尝试
        使用它,这太危险了.一个危险性更少但是很有用的选项是noatime。UNIX文件
        系统通常更新文件或目录的最近存取时间,这个操作在FreeBSD内部被延时写处
        理,通常不会成为系统的负担.如果你的系统连续存取巨量的文件,缓冲区会被
        更新atime而弄脏变的紧张,成为系统负担.
        例如,你正在运行一个高负载的web服务器,或者一个有大量读者的news服务器,
        你可以考虑在大分区上关掉atime更新的mount选项.不要无理由的在任何地方关
        掉atime更新选项,例如,你最好在那些以读居多的分区上保持打开这个选项,
        例如/和/usr。(特别是/,因为很多系统工具使用atime字段报告系统状况)。
        
        

[1] [2]  下一页

收藏本页到: 365Key | del.icio.us | | 添加到雅虎收藏+
  • 网站帮助 - 广告合作 - 网站地图