优化Linux系统硬盘.docx
《优化Linux系统硬盘.docx》由会员分享,可在线阅读,更多相关《优化Linux系统硬盘.docx(15页珍藏版)》请在冰豆网上搜索。
优化Linux系统硬盘
优化Linux系统硬盘
作者:
戈月
在Windows系统中,磁盘碎片是一个常见的问题,如果不注意,系统性能可能被侵蚀。
Linux使用第二扩展文件系统(ext2),它以一种完全不同的方式处理文件存储。
Linux没有Windows系统中发现的那种问题,这使得许多人认为磁盘碎片化根本不是一个问题。
但是,这是不正确的。
所有的文件系统随着时间的推移都趋向于碎片化。
Linux文件系统减少了碎片化,但是并没有消除。
由于它不经常出现,所以对于一个单用户的工作站来说,可能根本不是问题。
然而在繁忙的服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能只有从硬盘读出或写入数据时才能注意到。
下面是优化Linux系统硬盘性能的一些具体措施。
清理磁盘
这种方法看上去很简单:
清理磁盘驱动器,删除不需要的文件,清除所有需要被保存但将不被使用的文件。
如果可能的话,清除多余的目录,并减少子目录的数目。
这些建议似乎显而易见,但是你会惊讶地发现,每个磁盘上确实积累了非常多的垃圾。
释放磁盘空间可以帮助系统更好地工作。
整理磁盘碎片
Linux系统上的磁盘碎片整理程序与Windows98或Windows
NT系统中的磁盘碎片整理程序不同。
Windows98引入FAT32文件系统,虽然运行Windows98不必转换为FAT
32文件系统。
Windows可以被设置为使用FAT或一个叫NTFS的增强文件系统。
所有这些文件系统以本质上相同的方式处理文件存储。
Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。
当文件被存储时,它们将被写到连续的块中,它们不会碎片化。
这是一个大工作,可能对于像/usr之类不经常改变的程序分区是不必要的,但是它可以在一个多用户系统的/home分区产生奇迹。
它所花费的时间与Windows
NT服务器磁盘碎片整理花费的时间大致上相同。
如果硬盘性能仍不令人满意,还有许多其它的步骤可以考虑,但是任何包含升级或购买新设备的硬件解决方案可能会是昂贵的。
从IDE升级到SCSI
如果你的硬盘是一个IDE驱动器,可以通过升级到SCSI驱动器获得更好的整体性能。
因为IDE控制器必须访问CPU,CPU和磁盘密集型操作可能变得非常缓慢。
SCSI控制器不用通过CPU处理读写。
当IDE驱动器在读或写时,用户可能会因为CPU周期被IDE驱动器占用而抱怨系统的缓慢。
获取更快的控制器和磁盘驱动器
标准的SCSI控制器不能比标准的IDE控制器更快地读写数据,但是一些非常快的“UltraWide”SCSI控制器能够使读写速度有一个真正的飞跃。
EIDE和UDMA控制器是非常快的IDE控制器。
新的UDMA控制器能够接近SCSI控制器的速度。
UDMA控制器的顶级速度是猝发速度,但持续传输的速度明显慢得多。
IDE控制器包括UDMA,是嵌入在驱动器本身中的。
不需要购买一个控制器,只要购买一个驱动器,它就包含了控制器,可以获得UDMA性能。
磁盘驱动器经常忽视的一个方面是磁盘本身的速度。
磁盘的速度以rpm为单位给出,它代表每分钟旋转多少次。
rpm越大,磁盘速度也越快。
如果你有这方面的预算,大多数服务器系统厂商可提供7500rpm甚至10000rpm
SCSI磁盘。
标准SCSI和IDE磁盘提供5400rpm速度。
使用多个控制器
IDE和SCSI磁盘可以被链接。
IDE链最多包括两个设备,标准SCSI链最多包括七个设备。
如果在系统中有两个或更多SCSI磁盘,很可能被链接到同一个控制器。
这样对大多数操作是足够的,尤其是把计算机当作单用户的工作站时。
但是如果有一个服务器,那么就能够通过对每个SCSI驱动器提供一个控制器改善性能。
当然,好的控制器是昂贵的。
调整硬盘参数
使用hdparm工具可以调整IDE硬盘性能,它设计时专门考虑了使用UDMA驱动器。
在缺省情况下,Linux使用是最安全的,但是设置访问IDE驱动器是最慢的。
缺省模式没有利用UDMA可能的最快的性能。
使用hdparm工具,通过激活下面的特性可以显著地改善性能:
◆32位支持缺省设置是16位;
◆多部分访问缺省设置是每次中断单部分传送。
注意:
在使用hdparm之前,确保对系统已经做了完全的备份。
使用hdparm改变IDE参数,如果出错可能会引起驱动器上全部数据的丢失。
hdparm可以提供关于硬盘的大量信息。
打开一个终端窗口,输入下面命令获取系统中第一个IDE驱动器的信息(改变设备名获取其它IDE驱动器的信息):
hdparm-v/dev/had
上面命令显示出当系统启动时从驱动器获得的信息,包括驱动器操作在16位或32位模式(I/O
Support)下,是否为多部分访问(Multcount)。
关于磁盘驱动器的更详细信息的显示可使用-i参数。
Hdparm也可以测试驱动器传输速率。
输入命令测试系统中第一个IDE驱动器:
hdparm-Tt/dev/hda
此测试可测量驱动器直接读和高速缓冲存储器读的速度。
结果是一个优化的“最好的事例”数字。
改变驱动器设置,激活32位传输,输入下面的命令:
hdparm-c3/dev/hda
-c3参数激活32位支持,使用-c0可以取消它。
-c1参数也可激活32位支持并使用更少的内存开销,但是在很多驱动器下它不工作。
大多数新IDE驱动器支持多部分传输,但是Linux缺省设置为单部分传输。
注意:
这个设置在一些驱动器上,激活多部分传输能引起文件系统的完全崩溃。
这个问题大多数发生在较老的驱动器上。
输入下面的命令激活多部分传输:
hdparm-m16/dev/hda
-m16参数激活16部分传输。
除了西部数据的驱动器外,大多数驱动器设置为16或32部分是最合适的。
西部数据的驱动器缓冲区小,当设置大于8部分时性能将显著下降。
对西部数据驱动器来说,设置为4部分是最合适的。
激活多部分访问能够减少CPU负载30%~50%,同时可以增加数据传输速率到50%。
使用-m0参数可以取消多部分传输。
hdparm还有许多选项可设置硬盘驱动器,在此不详述。
使用软件RAID
RAID廉价驱动器的冗余阵列,也可以改善磁盘驱动器性能和容量。
Linux支持软件RAID和硬件RAID。
软件RAID嵌入在Linux内核中,比硬件RAID花费要少得多。
软件RAID的惟一花费就是购买系统中的磁盘,但是软件RAID不能使硬件RAID的性能增强。
硬件RAID使用特殊设计的硬件,控制系统的多个磁盘。
硬件RAID可能是昂贵的,但是得到的性能改善与之相匹配。
RAID的基本思想是组合多个小的、廉价的磁盘驱动器成为一个磁盘驱动器阵列,提供与大型计算机中单个大驱动器相同的性能级别。
RAID驱动器阵列对于计算机来说像单独一个驱动器,它也可以使用并行处理。
磁盘读写在RAID磁盘阵列的并行数据通路上同时进行。
IBM公司在加利福尼亚大学发起一项研究,得到RAID级别的一个最初定义。
现在有六个已定义的RAID级别,如下所示。
RAID
0:
级别0只是数据带。
在级别0中,数据被拆分到多于一个的驱动器,结果是更高的数据吞吐量。
这是RAID的最快和最有效形式。
但是,在这个级别没有数据镜像,所以在阵列中任何磁盘的失败将引起所有数据的丢失。
RAID
1:
级别1是完全磁盘镜像。
在独立的磁盘上创建和支持数据两份拷贝。
级别1阵列与一个驱动器相比读速度快、写速度慢,但是如果任一个驱动器错误,不会有数据丢失。
这是最昂贵的RAID级别,因为每个磁盘需要第二个磁盘做它的镜像。
这个级别提供最好的数据安全。
RAID
2:
级别2设想用于没有内嵌错误检测的驱动器。
因为所有的SCSI驱动器支持内嵌错误检测,这个级别已过时,基本上没用了。
Linux不使用这个级别。
RAID
3:
级别3是一个有奇偶校验磁盘的磁盘带。
存储奇偶校验信息到一个独立的驱动器上,允许恢复任何单个驱动器上的错误。
Linux不支持这个级别。
RAID
4:
级别4是拥有一个奇偶校验磁盘的大块带。
奇偶校验信息意味着任何一个磁盘失败数据可以被恢复。
级别4阵列的读性能非常好,写速度比较慢,因为奇偶校验数据必须每次更新。
RAID
5:
级别5与级别4相似,但是它将奇偶校验信息分布到多个驱动器中。
这样提高了磁盘写速度。
它每兆字节的花费与级别4相同,提高了高水平数据保护下的高速随机性能,是使用最广泛的RAID系统。
软件RAID是级别0,它使多个硬盘看起来像一个磁盘,但是速度比任何单个磁盘快得多,因为驱动器被并行访问。
软件RAID可以用IDE或SCSI控制器,也可以使用任何磁盘组合。
配置内核参数
通过调整系统内核参数改善性能有时是很明显的。
如果你决定要这样做一定要小心,因为系统内核的改变可能优化系统,也可能引起系统崩溃。
注意:
不要在一个正在使用的系统上改变内核参数,因为有系统崩溃的危险。
因此,必须在一个没有人使用的系统上进行测试。
设置一个测试机器,对系统进行测试,确保所有工作正常。
Tweak内存性能
在Linux中,可以Tweak系统内存。
如果遇到内存不足错误或者系统是用于网络的,可以调整内存分配设置。
内存一般以每页4千字节分配。
调整“空白页”设置,可以在性能上有显著的改善。
打开终端窗口,输入下面的命令查看系统的当前设置:
cat/proc/sys/vm/freepages
这样将获得三个数字,就像下面这样:
128256384
这些是最小空白页、空白页低和空白页高设置。
这些值在启动时决定。
最小设置是系统中内存数量的两倍;低设置是内存数量的4倍;高设置是系统内存的6倍;自由内存不能小于最小空白页数。
如果空白页数目低于空白页高设置,则交换(使用磁盘空间分配到交换文件)开始。
当达到空白页低设置时,密集型交换开始。
增加空白页高设置有时可以改善整体性能,比如试试增加高设置到1MB,用echo命令可以调整这个设置。
使用样本设置,输入这个命令增加空白页高设置到1MB:
echo"1282561024">/proc/sys/vm/freepages
注意:
当系统还没有被使用时测试这个设置,以确保在做任何调整时监视系统性能。
这样可以确定哪个设置对系统是最好的。
相关链接
赛迪网
相关文章
Linux:
LILO,LinuxCrashRescueHOW-TO中译版
(一)
LILO,LinuxCrashRescueHOW-TO中译版
(二)
LILO,LinuxCrashRescueHOW-TO中译版(三)
Linux下硬盘分区的最佳方案
瘟猫和Linux配置实作指南
(二)
瘟猫和Linux配置实作指南
(一)
linux日志管理
(二)
linux日志管理
(一)
Linux指令篇:
DOS相容指令--mdel
Linux指令篇:
DOS相容指令--mcopy
Linux指令篇:
DOS相容指令--mdeltree
Linux指令篇:
DOS相容指令--mlabel
Linux指令篇:
DOS相容指令--mcd
Linux指令篇:
DOS相容指令--mattrib
Linux指令篇:
起始管理--shutdown
Linux指令篇:
起始管理--reboot
Linux指令篇:
起始管理--init
Linux指令篇:
起始管理--halt
Linux指令篇:
使用者管理--sudo
Linux指令篇:
使用者管理--su
Linux指令篇:
使用者管理--adduser
Linux指令篇:
文件系统--sync
Linux指令篇:
文件系统--swapon
Linux指令篇:
文件系统--mount
Linux指令篇:
文件系统--fstab
Linux指令篇:
文件系统--mkfs
Linux指令篇:
文件系统--fsck
Linux指令篇:
文件系统--fdisk
Linux指令篇:
文件系统--exportfs
Linux指令篇:
文件系统--e2fsck
Linux指令篇:
文件系统--df
Linux指令篇:
文件系统--dd
Linux指令篇:
设备管理--setleds
Linux指令篇:
设备管理--rdev
Linux指令篇:
设备管理--loadkeys
Linux指令篇:
设备管理--dumpkeys
Linux指令篇:
设备管理--MAKEDEV
Linux指令篇:
磁片工具--mkdosfs
Linux指令篇:
磁片工具--mformat
Linux指令篇:
磁片工具--fdformat
Linux指令篇:
文件打印--lprm
Linux指令篇:
文件打印--lpr
Linux指令篇:
文件打印--lpq
Linux指令篇:
文件打印--lpd
Linux指令篇:
编码压缩打包--uuencode
Linux指令篇:
编码压缩打包--uudecode
Linux指令篇:
编码压缩打包--compress
Linux指令篇:
终端机管理--reset
Linux指令篇:
终端机管理--clear
Linux指令篇:
字串处理--tr
Linux指令篇:
字串处理--expr
Linux指令篇:
工作行程资讯与管理--top
Linux指令篇:
工作行程资讯与管理--skill
Linux指令篇:
工作行程资讯与管理--renice
Linux指令篇:
工作行程资讯与管理--pstree
Linux指令篇:
工作行程资讯与管理--ps
Linux指令篇:
工作行程资讯与管理--nice
Linux指令篇:
工作行程资讯与管理--kill
Linux指令篇:
讯息传送与信件管理--write
Linux指令篇:
讯息传送与信件管理--wall
Linux指令篇:
讯息传送与信件管理--talk
Linux指令篇:
讯息传送与信件管理--newaliases
Linux指令篇:
讯息传送与信件管理--mesg
Linux指令篇:
讯息传送与信件管理--mailq
Linux指令篇:
讯息传送与信件管理--mail
Linux指令篇:
讯息传送与信件管理--aliases
Linux指令篇:
使用者资讯与管理--who
Linux指令篇:
使用者资讯与管理--passwd
Linux指令篇:
使用者资讯与管理--last
Linux指令篇:
使用者资讯与管理--finger
Linux指令篇:
使用者资讯与管理--chsh
Linux指令篇:
使用者资讯与管理--chfn
Linux指令篇:
日期时间排程--uptime
Linux指令篇:
日期时间排程--time
Linux指令篇:
日期时间排程--sleep
Linux指令篇:
日期时间排程--date
Linux指令篇:
日期时间排程--crontab
Linux指令篇:
日期时间排程--cal
Linux指令篇:
日期时间排程--at
Linux指令篇:
档案目录管理--touch
Linux指令篇:
档案目录管理--split
Linux指令篇:
档案目录管理--rmdir
Linux指令篇:
档案目录管理--rm
Linux指令篇:
档案目录管理--mv
Linux指令篇:
档案目录管理--more
Linux指令篇:
档案目录管理--mkdir
Linux指令篇:
档案目录管理--ls
Linux指令篇:
档案目录管理--locate
Linux指令篇:
档案目录管理--ln
Linux指令篇:
档案目录管理--find
Linux指令篇:
档案目录管理--cut
Linux指令篇:
档案目录管理--cp
Linux指令篇:
档案目录管理--chown
Linux指令篇:
档案目录管理--chmod
Linux指令篇:
档案目录管理--cd
Linux指令篇:
档案目录管理--cat
Linux各种发行版简易说明
Linux技巧:
bz2文件如何解压缩
Linux技巧:
列目录时显示中文文件名
Linux技巧:
当终端出现混乱时,如何让它恢复正常
Linux技巧:
强行退出X
Linux技巧:
软驱的使用
Linux技巧:
定制VI
Linux下的硬盘提速方案
如何在大硬盘上安装Linux
什么是Linux?
Linux下网卡设置常见问题
(2)
Linux下网卡设置常见问题(3)
Linux下网卡设置常见问题(5)
Linux下网卡设置常见问题(4)
Linux下网卡设置常见问题
(1)
如何实现Linux的软件磁盘阵列(RAID)
(1)
如何实现Linux的软件磁盘阵列(RAID)
(2)
设置和修改X-Window的显示模式
(1)
设置和修改X-Window的显示模式
(2)
LinuxX-Window显卡配置通用解决方法
LinuxX-Window配置指南
(1)
LinuxX-Window配置指南
(2)
linux下如何刻盘
关于Linux下网卡的一些技术信息
(1)
关于Linux下网卡的一些技术信息
(2)
关于Linux下网卡的一些技术信息(3)
linux显卡的配置
(1)
linux显卡的配置
(2)
如何才能让Linux运行两块以太网卡?
X-window下如何设定Linux的控制台休眠
NFS和NIS
(1)
NFS和NIS
(2)
NFS和NIS(3)
如何在RedHat中限制、允许telnet&ftp功能
RedHat7.0安装NAT作法简介
如何修改登录画面?
如何用鼠标拷贝与粘贴?
renice命令:
修改一个正在运行进程的优先权
主引导扇区释疑
做一个最小的Linuxkernel
ZipDriveMini-HOWTO
(1)
ZipDriveMini-HOWTO
(2)
ZipDriveMini-HOWTO(3)
ZipDriveMini-HOWTO(4)
LinuxShadow-Password-HOWTO-1.简介
LinuxShadow-Password-HOWTO-2.为何shadow你的passwd档?
LinuxShadow-Password-HOWTO-3.取得ShadowSuite
LinuxShadow-Password-HOWTO-4.编译程式
LinuxShadow-Password-HOWTO-5.安装
LinuxShadow-Password-HOWTO-6.upgrade或patch程式
LinuxShadow-Password-HOWTO-7.将ShadowSuite
放进来使用
(1)
LinuxShadow-Password-HOWTO-7.将ShadowSuite
放进来使用
(2)
LinuxShadow-Password-HOWTO-8.加入shadow支援C语言
(1)
LinuxShadow-Password-HOWTO-8.加入shadow支援C语言
(2)
LinuxShadow-Password-HOWTO-9.常问问题及答案
RedHatRPM简介与应用
Linux内核源代码的阅读和工具介绍
Linux内核编程实战经验谈
Linux下的RAD
Linux集群大全
(一)
Linux集群大全
(二)
Linux集群大全(三)
为你的Linux快速编译所需要的模块
Linux的7件武器
如何在Linux下架设WebMail
Linux环境下的备份
优化Linux系统硬盘
硬盘:
优化Linux系统硬盘