Linux下的硬盘提速方案

目前很多朋友都用上了大容量的DMA或UDMA-33标准的硬盘 。在微软的Windows98下为了使得DMA或UDMA-33标准的硬盘提高数据传输速率 , 可以在计算机的CMOS或操作系统中打开IDE硬盘的DMA(直接存储器存取)这项功能 。但是在Linux平台中 , Linux是不会自动的打开DMA模式 , 所以在Linux中使用这些IDE接口的UDMA-33标准的硬盘感觉数据传输远远没有在Windows中快 。事实上 , Linux平台中也可以通过软件来打开DMA模式 , 以下就是Linux下的硬盘提速的具体做法 。;


首先 , 在Linux下打开DMA模式之前 , 最重要的事情就是备份硬盘上的数据 。因为在开启DMA模式之后谁也无法预料到硬盘是否还能正常工作 , 数据是否还完整 。把Linux下所有的重要数据备份到其他硬盘或是CD-R等存储媒介上是最好的选择 , 请不要把数据备份在同一块硬盘上 , 更不能把数据备份到同一个硬盘分区 。
第二步需要修改hdparm目录下的一些设备节点参数 。但是修改这些参数必须以超级用户(ROOT)的身份登陆Linux系统才行 。普通Linux用户没有这个权限修改hdparm目录下的东西 。下面就是一个修改硬盘设备节点参数的例子 , 注意 , 不同型号 , 不同容量的硬盘可能列出的参数不太一样 , 但是修改的过程和方法大体上是一样的 。;

#;/sbin/hdparm;/dev/hda
/dev/hda:
multcount;=;0;(off)
I/O;support;=;0;(default;16-bit)
unmaskirq;=;0;(off)
using_dma;=;0;(off)
keepsettings;=;0;(off)
nowerr;=;0;(off)
readonly;=;0;(off)
readahead;=;8;(on)
geometry;=;629/240/63,;sectors;=;9514260,;start;=;0
#;

要注意的是 , OFF代表此参数不起作用 , ON表示打开此功能或模式 。上面的参数列表写的非常清楚 , Multcount(多扇区读);没有打开;此硬盘格式为16位格式;DMA数据传输模式没有打开 。很显然 , 这样的参数并没有使硬盘达到最佳的优化 , 没有能完全发挥当今高速IDE硬盘的性能 。
为了优化硬盘 , 提高硬盘的数据传输速率 , 首先还是要了解以下这些参数的含义:;

c3;:就是把硬盘的16位格式转换为32位模式 。
m16;:改变硬盘的多路扇区的读功能 , -m16可以使得硬盘一次读入16个扇区的数据 。但是不是所有的硬盘都支持这个功能 。使用hdparm;-i;/dev/hda;可以察看您的硬盘最大能读写的扇区数目 。
d1X34;在支持DMA-capable的硬盘中 , 这个参数可以支持双DMA通道的数据传输模式 。
d1X66;在支持UDMA-capable的硬盘中 , 这个参数可以支持双DMA通道的数据传输模式 。
了解以上参数的作用和含义之后 , 现在请您仔细检查硬盘上面上的标签 , 看看您的硬盘是否支持DMA;或者;UDMA模式 , 然后才对照这些参数来优化您的硬盘 , 以防出现不可预见的错误 。
优化硬盘的参数 , 也可以参考下面的例子 , 注意 , 不是所有的硬盘都适用一下的优化参数 , 请按照实际情况来设置参数:;


#;hdparm;-d1X66;-m16;-c3;/dev/hda
#;hdparm;/dev/hda
/dev/hda:
multcount;=;16;(on)
I/O;support;=;3;(32-bit;w/sync)
unmaskirq;=;0;(off)
using_dma;=;1;(on)
keepsettings;=;0;(off)
nowerr;=;0;(off)
readonly;=;0;(off)
readahead;=;8;(on)
geometry;=;629/240/63,;sectors;=;9514260,;start;=;0;

修改完这些参数之后 , 有时候并不能一次性把硬盘优化成功 。如果在硬盘还在正常工作的时候修改这些数据 , 硬盘会进入“休眠”状态 。这就需要等硬盘灯会熄灭 , 硬盘不处于繁忙状态下优化硬盘参数比较容易成功 。;

hdparm的改变是一个临时的状态 , 下次再次启动Linux系统的时候hdparm将会消失 。所以要想永久的保存修改后的信息 , 就必须把修改后的参数和数据写入/etc/rc.d/rc.local或者/etc/rc.local文件 , 甚至比启动过程要早运行的程序中 。;

推荐阅读