hdparmでIDE-HDDチューニング


異様にマシンが重くなった気がする我がDebian、HDDの速度を最適化すればそれなりに改善するはず
まずは調べる
hdparm -tT /dev/hda
/dev/hda:
 Timing cached reads:    74 MB in  2.02 seconds =  36.64 MB/sec
 Timing buffered disk reads:   50 MB in  3.01 seconds =  16.63 MB/sec
このマシンのHDDはATA100対応なので明らかに遅い。コレハイケナイ
次にパラメータを調べる
hdparm /dev/hda
/dev/hda:
 multcount     =  0 (off)
 IO_support    =  1 (32-bit)
 unmaskirq     =  1 (on)
 using_dma     =  1 (on)
 keepsettings  =  0 (off)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 65535/16/63, sectors = 120033900, start = 0
そしてHDD周りの情報を調べる
/dev/hda:

 Model=ST360020A, FwRev=3.39, SerialNo=3EXM19DE
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=off
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=120033900
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 *udma4 udma5
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6

 * signifies the current active mode
なんだかいやな項目を見たような気もするけど気にしない。ATA66で動いているんだから遅いのは当然
いろいろとパラメータを変えてやってみる。まずはATA100に
hdparm -X udma5 /dev/hda
/dev/hda:
 setting xfermode to 69 (UltraDMA mode5)
確認
hdparm -tT /dev/hda
/dev/hda:
 Timing cached reads:   110 MB in  2.01 seconds =  54.81 MB/sec
 Timing buffered disk reads:   86 MB in  3.02 seconds =  28.51 MB/sec
おおー!明らかに速くなりました。WEBを観たり、ファイルマネージャーを使うときのもたつきがなくなりました。
さらに色々とやってみます。
hdparm -c3 -m16 /dev/hda
/dev/hda:
 setting 32-bit IO_support flag to 3
 setting multcount to 16
 multcount     = 16 (on)
 IO_support    =  3 (32-bit w/sync)
hdparm -tT /dev/hda
/dev/hda:
 Timing cached reads:   106 MB in  2.01 seconds =  52.75 MB/sec
 Timing buffered disk reads:   86 MB in  3.06 seconds =  28.08 MB/sec

設定を永続的に有効にするためここに値を入れる
各パラメータ(http://www.linux.or.jp/JM/html/hdparm/man8/hdparm.8.htmlより)
-A1:IDE ドライブの先読み機能を有効にする
-c3:IDE の 32 ビット I/O サポートを設定する。
-m16:ドライブの複数セクタ I/O のセクタ数を設定する。
-a1024:ファイルシステムの先読みセクタ数を設定(1024)
-X udma5:UDMA5に設定
/etc/default/hdparm
# To set the same options for a block of harddisks, do so with something
# like the following example options:
# harddisks="/dev/hda /dev/hdb"
# hdparm_opts="-d1 -X66"
# This is run before the configuration in hdparm.conf.  Do not use
# this arrangement if you need modules loaded for your hard disks,
# or need udev to create the nodes, or have some other local quirk
# These are better addressed with the options in /etc/hdparm.conf
#
# harddisks=""
# hdparm_opts=""

harddisks="/dev/hda"
hdparm_opts="-X udma5 -c3 -m16 -A1 -a1024"

# By default, hdparm will refuse to set harddisk options on any drive
# if the system has software RAID running, and one or more disk arrays
# are in the process of resynchronisation.
# With this variable set to 'yes', /etc/init.d/hdparm will suspend the
# RAID resynchronisation process before setting harddisk options, and
# will resume it after setting is done.
RAID_WORKAROUND=no