Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103727967
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-26 14:44:56


 
目前很多朋友都用上了大容量的DMAUDMA-33标准的硬盘。在微软的Windows98下为了使得DMAUDMA-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文件,甚至比启动过程要早运行的程序中。
  最后要提醒大家的是,如果您的主板的芯片组或Linux内核kernel(比如内核kernel版本过于陈旧,2.2版以前)如果不支持UDMA模式,那就没有必要去修改硬盘设备的参数了。升级主板或者kernel是解决这个问题的较好选择。
硬盘优化
      
如果你是scsi硬盘或者是ide阵列,可以跳过这一节,这节介绍的参数调整只针对使用ide硬盘的服务器。
我们通过hdparm程序来设置IDE硬盘,
使用DMA32位传输可以大幅提升系统性能。使用命令如下:
# /sbin/hdparm -c 1 /dev/hda
此命令将第一个IDE硬盘的PCI总线指定为32位,使用 -c 0参数来禁用32位传输。
在硬盘上使用DMA,使用命令:
# /sbin/hdparm -d 1 /dev/hda
关闭DMA可以使用 -d 0的参数。

更改完成后,可以使用hdparm来检查修改后的结果,使用命令:
# /sbin/hdparm -t /dev/hda
为了确保设置的结果不变,使用命令:
# /sbin/hdparm -k 1 /dev/hda

Hdparm
命令的一些常用的其他参数功能
-g
显示硬盘的磁轨,磁头,磁区等参数。
-i
显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I
直接读取硬盘所提供的硬件规格信息。
-p
设定硬盘的PIO模式。
-Tt
评估硬盘的读取效率和硬盘快取的读取效率。
-u <0
1> 在硬盘存取时,允许其他中断要求同时执行。
-v
显示硬盘的相关设定
阅读(465) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~