cnhnln 发表于 2006-2-2 16:12:36

以hdparm改善硬盘表现

以hdparm改善硬盘表现

译自:http://www.linuxgazette.com/issue79/punk.html





以hdparm改善硬盘表现
由 Piter Punk 撰写

由 William
N. Zanatta 从葡萄牙语翻译过来



--------------------------------------------------------------------------------

现时 IDE 装置已有很高的传输率 (透过 UltraDMA 科技),但仍有其它方法改善您的硬盘表现,我们会为您介绍以
hdparm 工具如何做到。

1. 简介
hdparm 是为硬盘提供强大调整控制的工具 (HD PARaMeters),而这就是我们会在本文讨论的东西,有时您的 HD 会设定为不能发挥其最大功能,这可能是您为硬盘表现困扰的原因。利用
hdparm,我们可以奇妙地将这个情况改变,令它可以使用所有功能,达到最高的表现。

2. 查看硬盘
首要的事情就是收集所有关于硬盘的数据和现有的设定,这些数据会用作我们设定硬盘的基础,在所有步骤中也要极为谨慎,因为任何错误的设定都可能使您的硬盘部分(数据)或全部(硬件)损坏。

现在就假设/dev/hda 是我们的硬盘,使用以下指令:

      darkstar:~$ hdparm -i /dev/hda
您应该会得到以下数据:

    /dev/hda:    Model=QUANTUM FIREBALLlct20 20, FwRev=APL.0900, SerialNo=552114732078    Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }   RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4   BuffType=DualPortCache, BuffSize=418kB, MaxMultSect=8, MultSect=off    CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=39876480    IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}   PIO modes: pio0 pio1 pio2 pio3 pio4   DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5   AdvancedPM=no   Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-1 ATA-2 ATA-3    ATA-4 ATA-5
但您可能会问:「这是甚么呀?」唏,别怕了这堆数据,它很快会令您轻松起来,以下是我们很多重要和有用的数据,...让我们看看其中一些:

MaxMultSect: 这个字段告诉我们硬盘在同一时间可以读取的最大扇区数目。
MultSect: 这个显示现时同一时间可以读取的最大扇区数目。
PIO and DMA modes: 这些是硬盘支持的模式,现有的设定以星号 (*) 标示。
AdvancedPM: 如果设定为 'yes',表示硬盘支持 APM (Advanced Power Management
进阶电源管理)。
可以另一个指令取得其它数据:

      darkstar:~$ hdparm /dev/hda
这会显示:

    /dev/hda:      multcount = 0 (on)      I/O support = 0 (16-bit)      unmaskirq = 0 (off)      using_dma = 0 (off)      keepsettings = 0 (off)      nowerr = 0 (off)      readonly = 0 (off)      readahead = 8 (on)      geometry = 2482/255/63, sectors = 39876480, start = 0
以下是简单的叙述...

multcount 是同一时间可以读取的扇区数目;
I/O support 表示硬盘的操作模式 (16/32/32sync);
using_dma 告诉我们硬盘是否使用 DMA 功能;
keepsettings 在 soft reset 后保留设定 (除非您知道这是甚么,否则不要改动它);
readonly 通常只有 CD-ROMs 设定为 1,这设定告诉系统装置是否只读;
readahead 显示在存取硬盘时会读取多少扇区;
如果您不明白某些设定,不要气馁,我们会继续讨论,某些参数会有关实际硬盘上的硬件,因此除非您改变硬件,否则便不能更改 (而且如果您改变了这设定,可能会后悔损坏了硬盘和所有数据
=] )。

3. 装置设定
现在 ...就进入正题﹗我们要设定HD,记着:设定过程中的错误可能会损坏您的硬盘及所有数据,现在由 'hdparm -i

' 提供的数据就是您的硬盘,跟着来做就不会有任何问题。

3.1. I/O 支援
除非您有一张 (E)ISA IDE 适配卡,其余的 (PCI/VLB)全都支持 32bits 模式,如果您的计算机较 486 为新,可能有
PCI IDE controller,如果不是的话,请检查一下...

hdparm -c0 // 将操作模式设定为 16-bits
hdparm -c1 // 将操作模式设定为 32-bits
hdparm -c3 // 将操作模式设定为 32-bits synchronized
模式'3' 只有某些芯片才需要,人们通常会使用模式'1' 以取得最佳表现。我们找不到任何有关模式 '2' 的资料 (应该是
16-bit sychronized)。

3.2. MultSect或 Multcount
这个很简单,查看硬盘有关 MaxMultSect 的数据便可,我们将 MultSect 设定为 8,由于硬盘支持,因此...

        # hdparm -m 8 /dev/hda
由 'hdparm -i' 所得的数据,记着将装置改变为 /dev/hda,硬盘支持的MaxMultSect 为 "8"。


3.3 启动 DMA
这是所有设定中最简单的,只需输入:

              # hdparm -d 1
将 DMA mode 设定为 ON,您的卡必须支持 DMA模式。

3.4 PIO 和 DMA 模式
您可以利用同一个 flag '-X' 设定两种模式,这个设定在进行时要非常谨慎,否则可能会损坏您的硬盘 (不要不信啊﹗)并令它成为首个自我毁灭的硬盘,记着只可设定硬盘支持的模式。

嗯...它的运作就是这样...正常的 DMA 模式 (multiword DMA或 mdma),使用 -X32 + (DMA 识别号码),至于
mdma2 则会是:

              # hdparm -X34 /dev/hda// 32 + 2 (from mdma2)
PIO 和 UltraDMA 模式的过程是几乎一样的,不同之处是 PIO模式的 base number 是 8,至于 UltraDMA 模式则是
64。 撰写本文时所使用的硬盘支持 ATA100,因此用以下指令放在 udma5 模式:

              # hdparm -X69 /dev/hda
记着只有某些芯片才可用最高的 DMA 模式。

ATA66 和 ATA100 模式需要一条 80-way IDE cable,没有这些 cable 放在 ATA100是不能运作的。

3.5 Readahead
readahead 选项与 multcount 不一样,multcount 代表硬件在同一时间读取多于一个扇区的可能性,而 readahead
选项是您的计算机应该读取的扇区数目。在读取大型档案时,readahead 功能十分好用,但却对小型档案有影响。将 readahead 的值保留与multcount
一样,是很好的做法,令读取更多扇区时,每次不会多于一次存取。

如果您要存取大型档案,可以将 readahead 设定为较大的数值,默认值是每次读取存取 8 个扇区 (好像是4kb)。

现在语法是:

              # hdparm -a N /dev/hda
N 是 readahead 扇区的数目。

4. 最后建议
hdparm 还有很多其它功能,大部分也有在 hdparm manpage 提及,我们所讲述的只是最普遍的功能。

当您重新启动计算机,设定会被重新设定 (保留的设定不会运作,因为它只包括 soft reboots)。将指令放在 rc.local (在大型的设定上,有一个类似
rc.hdparm 的东西可能不错)。

如对本文有任何疑问,可电邮:[email protected]


如对本翻译有任何疑问,可电邮:[email protected]

hesicong2006 发表于 2006-2-3 14:44:13

翻译比较生涩难懂~~~~
至于为什么提高?提高的原理没有说清楚~~~~
还有,我为什么相信提高了,有没有任何的评测证明确实提高了?提高了多少?

飞上墙头看啊 发表于 2006-2-3 19:56:07

翻译比较生涩难懂~~~~
至于为什么提高?提高的原理没有说清楚~~~~
还有,我为什么相信提高了,有没有任何的评测证明确实提高了?提高了多少?

查阅相关主题的早期文章。这个问题是一个“古老”的问题

cnhnln 发表于 2006-2-3 20:49:06

转贴的,不是我翻译的

fox_eagle2003 发表于 2006-7-14 15:54:36

:roll: 就知道3n不会花时间来翻译东西

Kyd 发表于 2006-7-14 18:03:22

恩,我们知道。

cnhnln 发表于 2006-7-14 23:10:31

翻译比较生涩难懂~~~~
至于为什么提高?提高的原理没有说清楚~~~~
还有,我为什么相信提高了,有没有任何的评测证明确实提高了?提高了多少?
为什么会提高我觉得已经写的很清楚了
如果你想测试可以用bonnie++或者iozone

duoduotu 发表于 2006-7-21 13:42:43

用855GM,看着有udma5却不能用,最高udma2,折腾了几天总算搞定了
在menu.lst里追加ide0=ata66
页: [1]
查看完整版本: 以hdparm改善硬盘表现