Fedora 8: 実稼働システムに対する /dev/sda の RAID1 追加手順
目的と前提条件
- 目的: ソフトウェア RAID1(mdadm)で稼働中のシステムにもう一方のディスク(/dev/sda)を追加し、ブート冗長性を確保する。
- 前提: 既に /dev/sdb 側で RAID が構成済み(/dev/md0, /dev/md1, /dev/md2)であること。root 権限で操作すること。重要なデータは事前にバックアップしておくこと。
重要: 実稼働システムでのディスク操作はリスクを伴います。コマンドを入力する前にデバイス名とパーティションを再確認してください。
ステップ 7: /dev/sda の準備
まず df -h で /dev/md0 と /dev/md2 が見えていることを確認します。例:
df -h
[root@server1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 4.4G 2.4G 1.8G 58% /
/dev/md0 99M 15M 80M 16% /boot
tmpfs 185M 0 185M 0% /dev/shm
[root@server1 ~]#
/proc/mdstat の出力が期待通りか確認します:
cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1]
104320 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
513984 blocks [2/1] [_U]
md2 : active raid1 sdb3[1]
4618560 blocks [2/1] [_U]
unused devices:
[root@server1 ~]#
次に /dev/sda の対応する 3 つのパーティションを Linux raid autodetect (hex code fd) に変更します。fdisk を使います。
fdisk /dev/sda
対話例:
[root@server1 ~]# fdisk /dev/sda
Command (m for help): <-- t
Partition number (1-4): <-- 1
Hex code (type L to list codes): <-- fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): <-- t
Partition number (1-4): <-- 2
Hex code (type L to list codes): <-- fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): <-- t
Partition number (1-4): <-- 3
Hex code (type L to list codes): <-- fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): <-- w
The partition table has been altered!
システムがパーティションテーブルを再読み込みします。
Calling ioctl() to re-read partition table.
Syncing disks.
[root@server1 ~]#
パーティションタイプを変更したら、各パーティションを対応する RAID アレイに追加します:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
追加後、/proc/mdstat を確認すると同期が始まっているはずです。例:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
104320 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
513984 blocks [2/2] [UU]
md2 : active raid1 sda3[2] sdb3[1]
4618560 blocks [2/1] [_U]
[=====>...............] recovery = 29.9% (1384256/4618560) finish=2.3min speed=22626K/sec
unused devices:
[root@server1 ~]#
同期の進行を連続表示したい場合は watch を使います(終了は CTRL+C):
watch cat /proc/mdstat
同期が完了すると以下のように全デバイスが UU と表示されます:
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
104320 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
513984 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
4618560 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
同期完了後、mdadm の設定ファイルを更新します(現在のアレイ定義を /etc/mdadm.conf に書き出す):
mdadm --examine --scan > /etc/mdadm.conf
例(/etc/mdadm.conf の一例):
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2848a3f5:cd1c26b6:e762ed83:696752f9
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=8a004bac:92261691:227767de:4adf6592
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=939f1c71:be9c10fd:d9e5f8c6:a46bcd49
ステップ 8: GRUB の準備
システムが /dev/sdb からブートする設定(hd1,0)になっている場合、万が一 /dev/sdb が故障してもブートできるように /boot/grub/menu.lst を編集して hd1 のカーネル・スタンザをコピーし、hd0 に変更します。その他のスタンザはコメントアウトしておきます。
vi /boot/grub/menu.lst
編集後の例:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=0
fallback=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-42.fc8)
root (hd1,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
title Fedora (2.6.23.1-42.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.23.1-42.fc8.img
#title Fedora (2.6.23.1-42.fc8)
# root (hd0,0)
# kernel /vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
# initrd /initrd-2.6.23.1-42.fc8.img
次に initrd(ramdisk)を更新します。現在の initrd をリネームして新規に作成します:
mv /boot/initrd-`uname -r`.img /boot/initrd-`uname -r`.img_orig2
mkinitrd /boot/initrd-`uname -r`.img `uname -r`
再起動して、/dev/sda 側からも正常に起動することを確認します:
reboot
起動に問題がなければ完了です。これで稼働中の Fedora 8 システムにソフトウェア RAID1 が正しく追加され、ブート冗長性が確保されました。
受け入れ基準
- /proc/mdstat ですべての md デバイスが [UU] で表示されること。
- /etc/mdadm.conf に新しい ARRAY 行が書き出されていること。
- 両方のディスクからシステムが問題なく起動できること(GRUB 設定と initrd の更新後)。
管理者向けチェックリスト
- 重要データのバックアップを取得したか
- /dev/sdX の命名が正しいか二重チェックしたか
- fdisk でパーティションタイプを fd に変更したか
- mdadm –add を実行して同期が完了したか(/proc/mdstat)
- /etc/mdadm.conf を更新したか
- GRUB の menu.lst を編集して両ディスクで起動可能にしたか
- initrd を再生成して再起動を確認したか
トラブルシューティング(頻出ケースと対処)
- 同期が始まらない / md デバイスが _U のまま: 追加したパーティションが正しいデバイスか確認。mdadm –examine /dev/sda1 などで RAID ヘッダを確認。
- /etc/mdadm.conf に新しい UUID が書かれない: mdadm –examine –scan の結果を手動で確認・追記する。
- ブートできない: GRUB の root 指定が正しいか(hd0/hd1 の割り当て)と /boot 内のカーネル・initrd の存在を確認。救出メディアで起動して修正する。
代替アプローチと注意点
- パーティションテーブル変更が不安な場合は、まずライブ環境でテストする。実稼働に直接反映する前に検証環境で同じ手順を試行するのが安全。
- UEFI 環境や newer ディストリビューションでは grub2 や /boot/efi の扱いが異なるため、本手順は古い BIOS + Fedora 8 の構成向けである点に注意。
コマンド チートシート(重要コマンド)
- パーティションタイプ変更: fdisk /dev/sda
- RAID に追加: mdadm –add /dev/mdX /dev/sdaY
- 同期確認: cat /proc/mdstat
- mdadm 設定書き出し: mdadm –examine –scan > /etc/mdadm.conf
- initrd 更新: mkinitrd /boot/initrd-
uname -r
.imguname -r
- 再起動: reboot
1行用語集
- mdadm: Linux のソフトウェア RAID 管理ツール。アレイ作成や追加、検査が可能。
- initrd: カーネル起動時に使用する初期 RAM ディスク。デバイスドライバなどを含む。
- GRUB: ブートローダ。ブートデバイスとカーネル起動設定を管理。
要点のまとめ
- /dev/sda のパーティションタイプを fd に変更し、mdadm で既存アレイに追加して同期する。
- 同期完了後、/etc/mdadm.conf を更新し、GRUB と initrd を両ディスク対応にして再起動確認する。
- 事前のバックアップとデバイス名の慎重な確認が重要。