こちらは旧日記です。移転先→ 愚行録 the Next Generation
Software RAID1 on SuSE Linux 9.1
この間 smartd からお手紙が来てRAID1 の片肺が使用不能になったわけだが、ちょうど同型の HDD を持っていて使ってないという人がいたので譲ってもらった。この場を借りてありがとう。
で、せっかくだから RAID1 の構築から書くのであった。
on(でいいのか?) SuSE なんて書いてるけど SuSE と関係あるのは 05 だけだったりする。
前提:
既存の HDD(/dev/hda) にシステムが入っている
そこに同型の HDD(/dev/hdb) を新たに加えて RAID1 とする
raidtools はインストール済み
01.
fdisk で /dev/hda のパーティションがどう切ってあるか確認
# fdisk -l /dev/hda
Disk /dev/hda: 40.0 GB, 40020664320 bytes
16 heads, 63 sectors/track, 77545 cylinders
Units = シリンダ数 of 1008 * 512 = 516096 bytes
デバイス Boot Start End Blocks Id System
/dev/hda1 1 2049 1032664+ 82 Linux スワップ
/dev/hda2 * 2050 77545 38049984 83 Linux
んで、まったく同じように /dev/hdb を切る。
ただし領域 ID は fd(Linux raid 自動検出)に。
02.
/etc/raidtab を作成。
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
chunk-size 4
persistent-superblock 1
nr-spare-disks 0
device /dev/hdb1
raid-disk 0
device /dev/hda1
failed-disk 1
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
chunk-size 4
persistent-superblock 1
nr-spare-disks 0
device /dev/hdb2
raid-disk 0
device /dev/hda2
failed-disk 1
/dev/hda1, /dev/hda2 を failed-disk にするのはこの段階ではまだ hda は RAID に参加させないため。
03.
RAID1 デバイス作成
# mkraid /dev/md1
# mkraid /dev/md2
# mkswap /dev/md1
# mkreiserfs /dev/md2
04.
念のためシングルユーザモードになったあと、/dev/md2 を適当なところにマウントして /dev/hda2 の中身を丸ごとコピー。
cp -a とかで。
05.
YaST の sysconfig エディタを起動して System->Kernel の INITRD_MODULES に raid1 を追加。これをしないと kernel panic する(体験談)
06.
/etc/fstab 編集
/dev/md2 / reiserfs acl,user_xattr 1 1
/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 から起動するラベルは残しておく。
title Linux [RAID]
root (hd0,1)
kernel /boot/vmlinuz root=/dev/md2 vga=0x314 splash=silent desktop resume=/dev/md1 showopts
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 に各パーティションを追加。
# raidhotadd /dev/md1 /dev/hda1
# raidhotadd /dev/md2 /dev/hda2
11.
cat /proc/mdstat で確認。
/dev/hda の方のリビルドの最中だとそれっぽいものが出る。
リビルド完了してて問題がないと以下のような表示に。
Personalities : [raid1]
md1 : active raid1 hdb1[0] hda1[1]
1032576 blocks [2/2] [UU]
md2 : active raid1 hdb2[0] hda2[1]
38049920 blocks [2/2] [UU]
unused devices: <none>
どっちかの HDD に異常が発生するなどして RAID1 から外されると [UU] が [_U] とか [U_] とかいった表示になる。
12.
どちらの HDD からも起動できるようにする。
grub を起動して
device (hd0) /dev/hda
root (hd0,1)
install /boot/grub/stage1 (hd0,1) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
device (hd0) /dev/hdb
root (hd0,1)
install /boot/grub/stage1 (hd0,1) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst
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 から外す。
# raidsetfaulty /dev/md1 /dev/hdb1
# raidsetfaulty /dev/md2 /dev/hdb2
# raidhotremove /dev/md1 /dev/hdb1
# 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 に追加。
# raidhotadd /dev/md1 /dev/hdb1
# raidhotadd /dev/md2 /dev/hdb2
リビルドが自動的に行われる。リビルド後の /proc/mdstat の内容が正常なら完了。
トラックバック(0)
このブログ記事を参照しているブログ一覧: Software RAID1 on SuSE Linux 9.1
このブログ記事に対するトラックバックURL: https://emeth.jp/diary_old/mt-tb.cgi/33
コメントする