稼働中の LVM 上で RAID1 を準備する — GRUB と /dev/sda
このガイドは、稼働中の LVM システム上でソフトウェア RAID1 を有効にし、GRUB ブートローダを各ディスクにインストールして /dev/sda を RAID に追加する手順を示します。手順どおり実行すれば、再起動後に RAID1 から正常にブートできるようになります。
重要: この手順は実稼働システムでの作業を想定しています。バックアップを必ず取得し、作業時間を確保してください。
前提
- root 権限で作業すること。
- /dev/sdb に既に RAID 用パーティションがあり、mdadm で /dev/md0, /dev/md1 が構成済みであること。
- LVM(VolGroup00 等)を既に使用しているシステムであること。
用語 1行定義
- RAID1: 同じデータを複数ディスクに複製するミラーリング。
- GRUB: ブートローダ。システム起動時にカーネルを読み込むソフトウェア。
- mdadm: Linux のソフトウェア RAID 管理ツール。
- LVM: 論理ボリュームマネージャ。ディスク領域を柔軟に扱う仕組み。
GRUB の準備
まず、第二ハードドライブ /dev/sdb に GRUB ブートローダをインストールします。GRUB シェルを起動し、以下のコマンドを入力します。
grub
GRUB シェル上で次を実行します。
root (hd0,0)
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub>
続けてインストールを実行します。
setup (hd0)
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
次に、RAID 上のもう一方のディスク(ここでは hd1)にも同様にインストールします。
root (hd1,0)
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub>
setup (hd1)
grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub>
完了したら GRUB シェルを終了します。
quit
通常シェルに戻ったら、再起動して RAID から正しくブートするか確認します。
reboot
/dev/sda の準備
システムが問題なく起動したら、/dev/sda のパーティションタイプを Linux raid autodetect (fd) に変更します。
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): <- w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@server1 ~]#
警告の通り、カーネルは次回再起動まで新しいパーティションテーブルを使用しませんが、パーティションタイプは変更されました。
次に /dev/sda1 を /dev/md0 に追加します。
mdadm --add /dev/md0 /dev/sda1
追加後、/proc/mdstat を確認します。
cat /proc/mdstat
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[0] sdb1[1]
200704 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
5036288 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
その後、/etc/mdadm.conf を現在の構成で更新します。
mdadm --examine --scan > /etc/mdadm.conf
/etc/mdadm.conf は次のようになります。
cat /etc/mdadm.conf
| ARRAY /dev/md0 level=raid1 num-devices=2 UUID=7d2bf9c3:7cd9df21:f782dab8:9212d7cb ARRAY /dev/md1 level=raid1 num-devices=2 UUID=d93a2387:6355b5c5:25ed3e50:2a0e4f96
|
最後に再起動します。
reboot
正常に起動すれば完了です。これで稼働中の LVM システム上にソフトウェア RAID1 を構築し、両ディスクからブートできるようにしました。
確認項目と受け入れ基準
- df -h で /dev/md0 が /boot にマウントされていること。
- cat /proc/mdstat で md0 と md1 が [UU] になっていること(両デバイスが正常)。
- pvdisplay / vgdisplay / lvdisplay が期待どおりのサイズと状態を示すこと。
- 再起動後にシステムが RAID 上から問題なく起動すること。
役割別チェックリスト
- 管理者: 完全なバックアップを取得する。
- オペレータ: メンテナンスウィンドウを確保し、コンソールアクセスを用意する。
- テスター: 再起動後に各サービスの起動を確認する。
トラブルシューティング(よくある問題と対処)
- 再起動で落ちる/GRUB が見つからない: 各ディスクに GRUB を正しくインストールしたか再確認。BIOS/UEFI の起動順序が正しいか確認する。
- /proc/mdstat が同期中から進まない: dmesg を確認し、障害ディスクがないかチェックする。同期を再開するには mdadm –add を再実行する。
- fdisk の再読み込みエラー(error 16): これは通常、デバイスが使用中であることを示す。再起動して新しいパーティションテーブルを反映させる。
代替アプローチと注意点
- GRUB2 を使用する場合: ディストリによって手順が異なる。grub-install と update-grub を使う流れが一般的。
- ライブ環境での修復: システムが起動しない場合、救済用のライブCD/USB で chroot して GRUB を再インストールする。
- ハードウェア RAID が使えるなら、OS インストール時にハードウェア側でミラーリングする方がパフォーマンスと管理面で有利なことがある。
いつこの手順が失敗しやすいか(カウンター例)
- 既に混在したパーティションテーブルや未知の LVM 設定がある場合。
- ブートパーティションが別の非RAID デバイスに依存している場合。
- UEFI セットアップ(GPT+EFI)では別手順が必要。
1行用語集
- mdadm: Linux ソフトウェア RAID 管理ツール。
- GRUB: GNU GRand Unified Bootloader。
まとめ
この手順に従えば、稼働中の LVM システムでも安全にソフトウェア RAID1 を導入し、両ドライブからブートできるように GRUB を配置できます。作業前のバックアップとメンテナンスウィンドウの確保を忘れないでください。