こちらは旧日記です。移転先→ 愚行録 the Next Generation

Software RAID1 on SuSE Linux 9.1

| | コメント(0) | トラックバック(0)

この間 smartd からお手紙が来てRAID1 の片肺が使用不能になったわけだが、ちょうど同型の HDD を持っていて使ってないという人がいたので譲ってもらった。この場を借りてありがとう。

で、せっかくだから RAID1 の構築から書くのであった。

on(でいいのか?) SuSE なんて書いてるけど SuSE と関係あるのは 05 だけだったりする。

前提:
既存の HDD(/dev/hda) にシステムが入っている
そこに同型の HDD(/dev/hdb) を新たに加えて RAID1 とする
raidtools はインストール済み

01.
fdisk で /dev/hda のパーティションがどう切ってあるか確認

  1. # fdisk -l /dev/hda
  2.  
  3. Disk /dev/hda: 40.0 GB, 40020664320 bytes
  4. 16 heads, 63 sectors/track, 77545 cylinders
  5. Units = シリンダ数 of 1008 * 512 = 516096 bytes
  6.  
  7. デバイス Boot Start End Blocks Id System
  8. /dev/hda1 1 2049 1032664+ 82 Linux スワップ
  9. /dev/hda2 * 2050 77545 38049984 83 Linux

んで、まったく同じように /dev/hdb を切る。
ただし領域 ID は fd(Linux raid 自動検出)に。

02.
/etc/raidtab を作成。

  1. raiddev /dev/md1
  2. raid-level 1
  3. nr-raid-disks 2
  4. chunk-size 4
  5. persistent-superblock 1
  6. nr-spare-disks 0
  7. device /dev/hdb1
  8. raid-disk 0
  9. device /dev/hda1
  10. failed-disk 1
  11.  
  12. raiddev /dev/md2
  13. raid-level 1
  14. nr-raid-disks 2
  15. chunk-size 4
  16. persistent-superblock 1
  17. nr-spare-disks 0
  18. device /dev/hdb2
  19. raid-disk 0
  20. device /dev/hda2
  21. failed-disk 1

/dev/hda1, /dev/hda2 を failed-disk にするのはこの段階ではまだ hda は RAID に参加させないため。

03.
RAID1 デバイス作成

  1. # mkraid /dev/md1
  2. # mkraid /dev/md2
  3. # mkswap /dev/md1
  4. # mkreiserfs /dev/md2

04.
念のためシングルユーザモードになったあと、/dev/md2 を適当なところにマウントして /dev/hda2 の中身を丸ごとコピー。
cp -a とかで。

05.
YaST の sysconfig エディタを起動して System->Kernel の INITRD_MODULES に raid1 を追加。これをしないと kernel panic する(体験談)

06.
/etc/fstab 編集

  1. /dev/md2 / reiserfs acl,user_xattr 1 1
  2. /dev/md1 swap swap pri=42 0 0

もとの fstab の /dev/hca2, /dev/hda1 を /dev/md2, /dev/md1 にしただけ。

07.
/boot/grub/menu.lst を編集して RAID1 用のラベルを作成する。問題発生の可能性も考えて /dev/hda から起動するラベルは残しておく。

  1. title Linux [RAID]
  2. root (hd0,1)
  3. kernel /boot/vmlinuz root=/dev/md2 vga=0x314 splash=silent desktop resume=/dev/md1 showopts
  4. initrd /boot/initrd

08.
再起動。
Linux [RAID] を選択してちゃんと起動すれば OK。
起動しなかったら /dev/hda から起動して何が悪かったか確認。

09.
fdisk で /dev/hda の各パーティションの ID を /dev/hdb と同じように fd にする。
パーティションサイズは同じになってるはずなのでいじる必要なし。

10.
/etc/raidtab で failed-disk にしていたところを raid-disk に変更してから RAID1 に各パーティションを追加。

  1. # raidhotadd /dev/md1 /dev/hda1
  2. # raidhotadd /dev/md2 /dev/hda2

11.
cat /proc/mdstat で確認。
/dev/hda の方のリビルドの最中だとそれっぽいものが出る。
リビルド完了してて問題がないと以下のような表示に。

  1. Personalities : [raid1]
  2. md1 : active raid1 hdb1[0] hda1[1]
  3. 1032576 blocks [2/2] [UU]
  4.  
  5. md2 : active raid1 hdb2[0] hda2[1]
  6. 38049920 blocks [2/2] [UU]
  7.  
  8. unused devices: <none>

どっちかの HDD に異常が発生するなどして RAID1 から外されると [UU] が [_U] とか [U_] とかいった表示になる。

12.
どちらの HDD からも起動できるようにする。
grub を起動して

  1. device (hd0) /dev/hda
  2. root (hd0,1)
  3. install /boot/grub/stage1 (hd0,1) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
  4. install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
  5.  
  6. device (hd0) /dev/hdb
  7. root (hd0,1)
  8. install /boot/grub/stage1 (hd0,1) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
  9. install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst

実際に何やってるかはまったくわかってなかったりする。こちらのページに書いてあったのをそのまま入力したらうまくいったのでこれでいいのだろう。

13.
BIOS で片方の HDD を無効にするなどしてから起動して、片方の HDD だけでも起動できることを確認する。
うまくいったら問題なし。

以下障害復旧方法。つまり今回やったこと。故障したのは /dev/hdb

14.
/dev/hdb1, /dev/hdb2 を RAID1 から外す。

  1. # raidsetfaulty /dev/md1 /dev/hdb1
  2. # raidsetfaulty /dev/md2 /dev/hdb2
  3. # raidhotremove /dev/md1 /dev/hdb1
  4. # raidhotremove /dev/md2 /dev/hdb2

15.
(多分この作業はいらない)
/etc/raidtab の故障した HDD のところを raid-disk から failed-disk に変更。

16.
電源落として HDD 換装。

17.
fdisk で /dev/hdb のパーティション分けを行う。fdisk -l /dev/hda の出力を参照しながらまったく同じように。ID を fd にするのを忘れずに。
15. をやったなら /etc/raidtab の該当部分を failed-disk から raid-disk に変更。
その後 RAID1 に追加。

  1. # raidhotadd /dev/md1 /dev/hdb1
  2. # raidhotadd /dev/md2 /dev/hdb2

リビルドが自動的に行われる。リビルド後の /proc/mdstat の内容が正常なら完了。

トラックバック(0)

このブログ記事を参照しているブログ一覧: Software RAID1 on SuSE Linux 9.1

このブログ記事に対するトラックバックURL: http://emeth.jp/diary_old/mt-tb.cgi/33

コメントする

このブログ記事について

このページは、Kitが2005年2月26日 03:22に書いたブログ記事です。

ひとつ前のブログ記事は「ついかっとなって(略」です。

次のブログ記事は「カテゴリ分け」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01