あなたの天然記念物
ホーム更新雑談Perl鉄ゲタランドナーコースガイド自転車Linuxリンク経歴連絡先
ハードディスクを単独運転からRAID1(2台並列運転)へ移行 (2006.01.23)

設備管理のパソコンがハードディスク障害を起こし(詳細は「ハードディスクのミラー リング」)自分でシステムを回復してみると
RAID1がこのテの障害に強力だとはっきりわかったので自宅のパソコンのうちメインをRAID1にしました。OS(=Amithlon)の都合で
PromiseのPDC20276というRAID用LSIを内蔵しているマザーボードにも関わらず玄人志向のX2HD-RAIDを用いてRAID1にしています。

【ご注意】私は設備管理をやってる「電気のおじさん」であって産業機器のサービスマンではありません。ただの素人です。

さてAmithlonでのPDC20276を観察するとベースとなっているLinux Kernelではきちんとアクセスできることを確認しましたから、
LinuxならOKのようです。そこで4台のディスクなしパソコン用のサーバを早速単独運転からRAID1(2台並列運転)への移行に挑戦し
ますと失敗の山々……。つい先日実現したのですけれどインターネット上ではRAID1化したハードディスクにインストールした成功
例はあっても単独→RAID1の移行ケースを見つけられませんので同様のケースで悩んでいる方々のために詳細を説明したいと思いま
す。例によって電源ONからLoginプロンプトまでの各ステップとそこに到達するための作業を交互に並べます。そうするとステップ
でトラブルがあった際にどの作業を見ると良いか見当をつけやすいです。


電源を入れる

まぁこれは問題ないですね。誰です?ケース裏のスイッチ入れ忘れて「電源入らない。」とか言ってる人は。


パソコンのBIOSが起動される

BIOSでのドライブ設定はプライマリのIDEコントローラをDisable、マスタとスレーブを両方ともNoneにしてサーチ動作を省きます。
マザーボードの接続状態は次の通りです。
推測ですがPDC20276の仕様かマザーボードGA-7VAXPの仕様かは不明ですけれどハードディスクは2台までのようです。


RAIDの画面が出る

画面にはMBFastTrak133 "Lite"と表示されます。
2台を接続してCtrl-Fで操作画面に入って1台目から2台目にまるごとコピーしてから再起動すると次のステップに進みます。
MBFastTrak133が「これはヤバい」と待ったをかけるのを防ぐためです。


ブートプログラムGRUBがロードされる

BIOSの設定で1st bootをSCSI(又はHDD-0)、起動優先順を「RAID→SCSI」、Promiseの設定をEnable、動作をRAIDにしておきます。
ちなみにハードディスクが単独運転(標準のプライマリ - マスタ)の内容のままでIDE3につけてもロードされますから試すことがで
きます。


GRUBがkernelとinitrdをロード

kernelとinitrdのファイル名は/boot/grub/grub.confに入っています。要るトコだけどうぞ。
-----/boot/grub/grub.conf(要るトコ)-----
default=0
timeout=3
splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.4.18-3) RAID
        root (hd0,0)
        kernel /vmlinuz-2.4.18-3 ro root=/dev/sda2
        initrd /initrd-raid.img
----------
kernelはvmlinuz-2.4.18-3のままで手を加えていません。initrdはオリジナルがinitrd-2.4.18-3.imgですけれどRAID用に改造し
たinitrd-raid.imgを指定しています。改造の内容は後のステップで説明します。kernelオプションのroot=/dev/sda2も後程。


kernelがinitrd内の/linuxrcを起動する

kernelの仕様の通りです。手を加えてないので次のステップへどうぞ。


linuxrcの前半でFastTrak用のモジュールがロードされる

RAID化された2台のハードディスクは/dev/sdaとして動作可能になります。
linuxrcはスクリプトなのでテキストエディタで修正できます。前半でモジュール3個をロードさせるために追加する行は次の通り。
でもinitrd-raid.imgの中に入っているので、修正作業はもうちょっと下を見てください。
-----initrd-raid.imgの中の/linuxrc(追加分)-----
echo "Load module scsi_mod"
insmod /lib/scsi_mod.o
echo "Load module sd_mod"
insmod /lib/sd_mod.o
echo "Load module FastTrak"
insmod /lib/FastTrak.o
----------
単独運転でPromiseのFastTrak TX/LP Series RedHat Driver(Linux RedHat 7.3/8.0 Uniprocessorをインストールすると
/lib/modules/2.4.18-3/kernel/drivers/scsiにscsi_mod.o、sd_mod.o、FastTrak.oが追加されますからrmmod、insmod、lsmodを試
すことができます。インストーラがinitrd-2.4.18-3.imgを改造してオリジナルをinitrd-2.4.18-3.img.origに残すのでオリジナル
に戻してください。インストーラが単独運転に合わせて改造するため役に立ちません。それからgrub.confも同様です。なおドライ
バのアーカイブからモジュールを取り出せますからインストール不要に思いますがモジュール使用のルールを知らないので設定が別
途必要なのかもわかりません。何せ私Linuxユーザじゃないですから。そんな事で失敗したくないので単独運転でRAIDのアクセスが
できる状態にしておいてモジュールをちゃっかりいただきます。initrd-raid.imgの作成は単独運転で行なうことに注意してくださ
い。

initrd-raid.imgの作成はこんな手順で。
# cd /boot
# cp initrd-2.4.18-3.img /root
# cd /root
# gzip -dc initrd-2.4.18-3.img >initrd-2.4.18-3.ext2
# mv initrd-2.4.18-3.ext2 initrd-raid.ext2
# mkdir /mnt/initrd
# mount -o loop initrd-raid.ext2 /mnt/initrd

それから/mnt/initrd以下を改造します。
# cd /lib/modules/2.4.18-3/kernel/drivers/scsi
# cp scsi_mod.o /mnt/initrd/lib
# cp sd_mod.o /mnt/initrd/lib
# cp FastTrak.o /mnt/initrd/lib
# cd /mnt/initrd
# vi linuxrc ←モジュール3個をロードするようlinuxrcを改造
# cd /root

ようやく完成です。
# umount /mnt/initrd
# gzip initrd-raid.ext2
# mv initrd-raid.ext2.gz initrd-raid.img
# cp initrd-raid.img /boot


linuxrcの後半は何が何やらさっぱり(笑)

本体のパーティションをkernelがマウントできるよう準備をしてるみたい。手を加えていないので次のステップへどうぞ。


本体のパーティションがマウントされる

linuxrc終了後にgrub.confで指定したroot=/dev/sda2をkernelが見てマウントします。単独運転では/dev/hda2となっているのをモ
ジュールFastTrak.oがRAIDをSCSIのように見せているため同じパーティションは/dev/sda2となります。


単独運転と同様に起動される

この辺は単独運転と違いはありません。


/swap用パーティションがマウントされる

/etc/fstabに/swap用パーティションの指定が/dev/hda3となっているので本体同様/dev/sda3に修正します。
これは並列運転(RAID1後)でも修正できます。起動中のエラーメッセージを見て気がついたのは内緒。
-----/etc/fstab(要るトコ)-----
/dev/sda3               swap                    swap    defaults        0 0
----------


Loginプロンプトが表示される

ばんざーい。←RAID1が成功したときの正直な気持ち


おまけ

-----/proc/cmdline-----
ro root=/dev/sda2
----------
-----/proc/modules(要るトコ)-----
FastTrak              109924   3
sd_mod                 12864   6
scsi_mod              108576   2 [FastTrak sd_mod]
----------
-----/proc/mounts-----
rootfs / rootfs rw 0 0
/dev/root / ext3 rw 0 0
/proc /proc proc rw 0 0
/dev/sda1 /boot ext3 rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
----------
-----/proc/partitions-----
major minor  #blocks  name     rio rmerge rsect ruse wio wmerge wsect wuse running use aveq

   8     0   39081088 sda 15543 8318 189406 133530 10962 12667 189228 1950430 0 144130 2091310
   8     1      48163 sda1 42 196 476 590 44 32 156 16680 0 5930 17270
   8     2   38772877 sda2 15496 8116 188890 132840 10918 12635 189072 1933750 0 143380 2073940
   8     3     257040 sda3 3 0 24 60 0 0 0 0 0 60 60
----------
-----/proc/pci(要るトコ)-----
  Bus  0, device  15, function  0:
    RAID bus controller: PCI device 105a:5275 (Promise Technology, Inc.) (rev 1).
      IRQ 11.
      Master Capable.  Latency=32.  Min Gnt=4.Max Lat=18.
      I/O at 0xc000 [0xc007].
      I/O at 0xc400 [0xc403].
      I/O at 0xc800 [0xc807].
      I/O at 0xcc00 [0xcc03].
      I/O at 0xd000 [0xd00f].
      Non-prefetchable 32 bit memory at 0xe5400000 [0xe5403fff].
----------
-----/proc/scsi/FastTrak/0-----
PROMISE FastTrak Series Linux Driver Version 1.02.0.25  
Adapter1 - MBFastTrak133 Lite, IRQ(11) 
Array    - Array[1] : 1X2 Mirror (OK)
Drive    - 
  1: ST340016A      Pri/Master Array[1]  40019MB BASE(0xc000) BM(0xd000) UDMA5
  3: WDC WD400BB-00 Sec/Master Array[1]  40020MB BASE(0xc800) BM(0xd008) UDMA5

----------
-----/proc/version-----
Linux version 2.4.18-3 (bhcompile@porky.devel.redhat.com) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 Thu Apr 18 07:32:41 EDT 2002
----------


Amigaユーザからのコメント

環境が変わってうまくいかなかったらインストールすりゃいいというのは安易だなぁ。Amiga使っていてOSの再インストールをした
ことないもんでそんな世界の端っこから眺めています。(くすくす)
2006.01.23 オンボードのRAID1からAmithlonを起動することに成功しました。詳細は下記ページで。 AmithlonでRAID1