昔 Promise technology とはLinux界隈では物騒な話があった。そのためか IDE controller が本来の性能が出せなかった時期が長かった。また、Promise社はATA RAIDの雄で良くオンボードRAIDチップとして乗っていた。HardwareRAIDとして売られているが、OSドライバとカード上のBIOSが、RAID機能の100パーセントを提供するHardwareRAIDもどきなので、ベンダーからLinux用の専用ドライバを組み込まないといけない。これが面倒であった。
ただし、オープンソースでのRAIDドライバは開発は進んでおり
- Linux 2.4 系では ataraid
- Linux 2.6 系では dmraid
dmraid を試す
Debian etch に dmraid 1.0.0 rc9 が含まれるので手軽に試してみよう。
- ASUS M2NPV-VM
- Athlon64X2 3800+
- CD1G-D2U667/ELP (但し、DDR2-533で運用)
- FastTrack100 TX2 (PDC20270)
- Seagate ST340015A, 40GB, PATA UDMA100, 2MBキャッシュ, 5400 rpm
RAID0のテスト
- カードのBIOS設定(FastBuild Utility)にて 4台HDDの Stripe Array を定義する。
- 別HDDにインストール済み Debian/Linux etch システムを起動する。
下記のようにRAIDカードとHDDが認識されているのを確認する
# dmesg ... PDC20270: IDE controller at PCI slot 0000:04:09.0 ACPI: PCI Interrupt Link [APC2] enabled at IRQ 17 ACPI: PCI Interrupt 0000:04:09.0[A] -> Link [APC2] -> GSI 17 (level, low) -> IRQ 209 PDC20270: chipset revision 2 PDC20270: ROM enabled at 0xfda00000 PDC20270: 100% native mode on irq 209 ide2: BM-DMA at 0x8c00-0x8c07, BIOS settings: hde:pio, hdf:pio ide3: BM-DMA at 0x8c08-0x8c0f, BIOS settings: hdg:pio, hdh:pio ... Probing IDE interface ide2... hde: ST340015A, ATA DISK drive hdf: ST340015A, ATA DISK drive ide2 at 0x9c00-0x9c07,0x9802 on irq 209 Probing IDE interface ide3... hdg: ST340015A, ATA DISK drive hdh: ST340015A, ATA DISK drive ide3 at 0x9400-0x9407,0x9002 on irq 209 ... hde: max request size: 128KiB hde: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hde: cache flushes supported hde: unknown partition table hdf: max request size: 128KiB hdf: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hdf: cache flushes supported hdf: unknown partition table hdg: max request size: 128KiB hdg: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hdg: cache flushes supported hdg: unknown partition table hdh: max request size: 128KiB hdh: 78165360 sectors (40020 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100) hdh: cache flushes supported hdh: unknown partition table ...
- dmraidをインストール
# apt-get install dmraid
- RAIDセットとデバイスを確認する。
# dmraid -s *** Set name : pdc_gddhfeaj size : 312660992 stride : 128 type : stripe status : ok subsets: 0 devs : 4 spares : 0 # dmraid -r /dev/hde: pdc, "pdc_gddhfeaj", stripe, ok, 78165248 sectors, data@ 0 /dev/hdf: pdc, "pdc_gddhfeaj", stripe, ok, 78165248 sectors, data@ 0 /dev/hdg: pdc, "pdc_gddhfeaj", stripe, ok, 78165248 sectors, data@ 0 /dev/hdh: pdc, "pdc_gddhfeaj", stripe, ok, 78165248 sectors, data@ 0
- RAIDセットの有効化
これでRAIDセット /dev/mapper/pdc_gddhfeaj として1つのブロックデバイスに見えるようになる。# dmraid -a yes -v INFO: Activating stripe RAID set "pdc_gddhfeaj"
- fdisk でパーティションを切る。パーティションを再認識させるためには、該当RAIDセットの無効化&有効化を行う。
# fdisk /dev/mapper/pdc_gddhfeaj ... # /etc/init.d/dmraid restart Shutting down DMRAID devices... RAID set "pdc_gddhfeaj1" is not active INFO: Deactivating partition RAID set "pdc_gddhfeaj1" INFO: Deactivating stripe RAID set "pdc_gddhfeaj" . Setting up DMRAID devices...INFO: Activating stripe RAID set "pdc_gddhfeaj" INFO: Activating partition RAID set "pdc_gddhfeaj1" .
- ファイルシステムを作る。
ext3 では、RAIDセットのchunk sizeをファイルシステムのブロック単位で指定すると、少し適した配置をしてくれる。# mkfs.ext3 -E stride=16 /dev/mapper/pdc_gddhfeaj1
- 再起動を行い問題なく立ち上がるか確認する。
再起動後に、下記のようなメッセージが出る場合は運用は諦めよう!似たようなバグ報告があるのでそのうち直るかも。
hde: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
hde: task_in_intr: error=0x10 { SectorIdNotFound }, LBAsect=156393776, sector=156328497
ide: failed opcode was: unknown
PDC202XX: Primary channel reset.
ide2: reset: success
hde: task_in_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
hde: task_in_intr: error=0x10 { SectorIdNotFound }, LBAsect=156393776, sector=156328497
ide: failed opcode was: unknown
end_request: I/O error, dev hde, sector 156328497
上記は実際、2台のRAID0を構築したときに発生した。単体HDDより大きなサイズのパーティションを作成した場合のみ起き、上記のエラーログが延々出力され、起動が完了しない(shellも使えない)。運良く KNOPPIX 5 だとエラーを吐きながらも起動が完了するので、fdisk等でパーティションを書き換えることができた。4台では起きないのでかなりレアな条件が重なるとエラーになるっぽいなぁ。
RAID1のテスト
- カードのBIOS設定(FastBuild Utility)にて 2台HDDの Mirror Array を定義する。
- あとはRAID0と変わらない
# dmraid -s *** Active Set name : pdc_gdijjjaf size : 78165248 stride : 128 type : mirror status : ok subsets: 0 devs : 2 spares : 0 # dmraid -a yes -v INFO: Activating mirror RAID set "pdc_gdijjjaf" # fdisk /dev/mapper/pdc_gdijjjaf ... # /etc/init.d/dmraid restart ... # mkfs.ext3 /dev/mapper/pdc_gdijjaf1
結論
安全を考えるとまだdmraidの安定運用はRAID1以外では期待できないのだろうなぁ。運が良ければ、RAID0/RAID10/RAID5が運用できそうだなぁ。
0 件のコメント:
コメントを投稿