テクノロジーガイド

稼働中のLVMシステムでソフトウェアRAID1とGRUB2を正しくセットアップする

2 min read インフラ 更新されました 12 Oct 2025
稼働中LVMでのソフトウェアRAID1とGRUB2の設定
稼働中LVMでのソフトウェアRAID1とGRUB2の設定

重要: この手順は本番システムでの作業を想定しています。実行前に完全なバックアップを取得してください。リスクを理解した上で慎重に操作してください。

目的と関連クエリ

このドキュメントは、稼働中のLVMを維持しつつソフトウェアRAID1を導入し、GRUB2ブートローダを冗長化して確実な起動を実現するための具体的手順です。 関連クエリ例: 稼働中にRAIDを作る方法, LVM上でのRAID1移行, GRUB2をRAID上にインストール, mdadm md0 md1 の確認方法

前提条件

  • ルート権限で操作できること
  • 2台以上のディスク(例: /dev/sda, /dev/sdb)が利用可能で、既に一部パーティションが RAID 用に使われていること
  • mdadm, lvm2, grub2 がインストール済みであること
  • 作業中に再起動が必要になるため、メンテナンス時間を確保していること

6 GRUB2 の準備

まず、GRUB2 ブートローダが両方の物理ディスクにインストールされていることを確認します。例:

grub-install /dev/sda
grub-install /dev/sdb

準備が整ったらシステムを再起動して、RAID 配列から正常に起動するか確認します。

reboot

再起動後、以下の節で示すように /dev/md0 が存在し、/boot が RAID 上にマウントされていることを確認します。

7 /dev/sda の準備

すべてが正常であれば、次のコマンドの出力に /dev/md0 が現れます。

df -h

出力例:

root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G  722M  3.6G  17% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  128K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
/dev/md0              236M   18M  206M   8% /boot
root@server1:~#

また、ソフトウェアRAIDの状態は以下で確認します。

cat /proc/mdstat

期待される出力例:

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sdb1[1]
248820 blocks super 1.2 [2/1] [_U]

unused devices: 
root@server1:~#

LVM の物理ボリューム、ボリュームグループ、論理ボリュームの情報はそれぞれ次で確認します。

pvdisplay
vgdisplay
lvdisplay

出力の例(省略せず確認してください):

root@server1:~# pvdisplay
--- Physical volume ---
PV Name               /dev/md1
VG Name               server1
PV Size               4.76 GiB / not usable 1012.00 KiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              1218
Free PE               0
Allocated PE          1218
PV UUID               W4I07I-RT3P-DK1k-1HBz-oJvp-6in0-uQ53KS

root@server1:~#
root@server1:~# vgdisplay
--- Volume group ---
VG Name               server1
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  9
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               4.76 GiB
PE Size               4.00 MiB
Total PE              1218
Alloc PE / Size       1218 / 4.76 GiB
Free  PE / Size       0 / 0
VG UUID               m99fJX-gMl9-g2XZ-CazH-32s8-sy1Q-8JjCUW

root@server1:~#
root@server1:~# lvdisplay
--- Logical volume ---
LV Name                /dev/server1/root
VG Name                server1
LV UUID                8SNLPE-gHqA-a2LX-BO9o-0QQO-DV2z-3WvTYe
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.51 GiB
Current LE             1155
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0

--- Logical volume ---
LV Name                /dev/server1/swap_1
VG Name                server1
LV UUID                kYaKtb-vkkV-TDDE-me1R-nnER-dzN8-BcVTwz
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                252.00 MiB
Current LE             63
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:1

root@server1:~#

/dev/sda1 のパーティションタイプ変更

ここで /dev/sda1 のパーティションタイプを Linux raid autodetect (hex fd) に変更します。

fdisk /dev/sda

fdisk の対話例:

root@server1:~# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): <-- t
Partition number (1-5): <-- 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 or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@server1:~#

警告: 既にマウント中のパーティションや使用中のデバイスでは再読み込みが失敗することがあります。上記メッセージが出た場合は partprobe や kpartx を使うか、システムの再起動で新しいパーティションテーブルを反映させます。

/dev/sda1 を /dev/md0 に追加

パーティションタイプを変更したら、mdadm で /dev/sda1 を md0 に追加します。

mdadm --add /dev/md0 /dev/sda1

追加後、/proc/mdstat を確認して RAID が正しく同期されていることを確かめます。

cat /proc/mdstat

期待される出力例:

root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2] sdb5[1]
4989940 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[2] sdb1[1]
248820 blocks super 1.2 [2/2] [UU]

unused devices: 
root@server1:~#

mdadm.conf の更新

現在の mdadm 設定ファイルをバックアップし、新しい配列情報を追記します。

cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

結果として /etc/mdadm/mdadm.conf は次のようになります(例):

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST 

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Tue, 24 May 2011 21:11:37 +0200
# by mkconf 3.1.4-1+8efb9d1
ARRAY /dev/md/0 metadata=1.2 UUID=6cde4bf4:7ee67d24:b31e2713:18865f31 name=server1.example.com:0
ARRAY /dev/md/1 metadata=1.2 UUID=3ce9f2f2:ac89f75a:530c5ee9:0d4c67da name=server1.example.com:1

GRUB の再設定と不要スクリプトの削除

古い RAID 用の GRUB スクリプトを削除して、GRUB2 の設定と initramfs を更新します。

rm -f /etc/grub.d/09_swraid1_setup

update-grub
update-initramfs -u

/boot/grub/grub.cfg の中の ### BEGIN /etc/grub.d/10_linux ### セクションを見ると、以前の 09_swraid1_setup と同等の menuentry が md0 を指すように生成されているはずです。そのため 09_swraid1_setup は不要になります。

その後、もう一度両ディスクに GRUB をインストールしておきます。

grub-install /dev/sda
grub-install /dev/sdb

最後に再起動して、正常に起動することを確認してください。

reboot

正常に起動すれば作業完了です。これで稼働中のLVMシステム上にソフトウェアRAID1を構築し、GRUB2を両ディスクにインストールして冗長化できました。

受入基準

  • /dev/md0 が /boot にマウントされていること
  • cat /proc/mdstat で各アレイが [UU] など正常状態を示すこと
  • /etc/mdadm/mdadm.conf に ARRAY 行が存在すること
  • GRUB2 が /dev/sda と /dev/sdb の両方にインストールされていること
  • 再起動後にシステムが正常に起動すること

トラブルシューティングと対処例

  • パーティションテーブルの再読み込みで “Device or resource busy” が出る
    • partprobe / kpartx を試す。解決しない場合はメンテナンスウィンドウで再起動して反映させる。
  • grub-install が失敗する
    • エラー内容を確認。UEFI 環境では grub-install のオプションや EFI パーティションのマウントを確認する。BIOS/MBR と UEFI/GPT の違いに注意。
  • 起動しない(GRUB が見つからない、kernel panic 等)
    • Live メディアで起動して chroot 環境に入り、update-grub と grub-install を再度実行する。/boot が RAID にマウントされていることを確認する。

ロール別チェックリスト(運用担当)

  • 変更前: 完全なバックアップを実施
  • 変更前: 作業時間(再起動含む)を確保
  • 実施中: mdadm, lvm, grub のバージョンを記録
  • 実施中: /proc/mdstat と lvdisplay の出力をログとして保存
  • 実施後: 再起動してサービス稼働を確認
  • 実施後: 監視アラート設定を検討(mdadm の監視、SMART)

簡易SOP(実行順)

  1. バックアップ取得
  2. grub-install を両ディスクに実行(必要であれば実行前に chroot)
  3. fdisk で /dev/sda のパーティションタイプを fd に変更
  4. mdadm –add で /dev/sda1 を md0 に追加
  5. mdadm の同期を確認(/proc/mdstat)
  6. mdadm.conf を更新(mdadm –examine –scan を追記)
  7. /etc/grub.d/09_swraid1_setup を削除
  8. update-grub と update-initramfs -u を実行
  9. 両ディスクへ grub-install を実行
  10. 再起動して動作確認

代替アプローチと注意点

  • 完全なディスク複製を作成してから切り替える方法は downtime を伴うがより安全
  • UEFI の場合は grub2 のインストール手順が異なる。EFI システムパーティション(ESP)を RAID に含めない構成も検討する
  • mdadm metadata バージョン(1.0 / 1.2 など)によりデバイスの配置やパーティション開始位置の要件が異なる

マインドセットとヒューリスティック

  • 小さな変更ごとに状態を確認し、同期中に次の重大な変更を加えない
  • ブートローダ周りは冗長化しておく(最低でも2台のディスクに grub を入れる)
  • まず読み出しで正しくマウント・起動できることを確認してから書き込み系のテストを行う

受入テスト(簡易)

  • 再起動後に /boot の中身が正しく読み出され、カーネルがロードされること
  • 片方のディスクを取り外して再起動しても起動できること
  • mdadm –detail /dev/md0 で正常にメンバーが認識されること

互換性と移行時のヒント

  • BIOS + MBR と UEFI + GPT で手順が異なる可能性が高い。UEFI 環境では EFI 用のESPと grubx64.efi の場所を明示する
  • LVM と mdadm の順序(md 上に LVM を置く構成)は本手順で想定している。LVM の上に md を置くような異なるアーキテクチャの場合は設計を再検討する

要点まとめ

  • /dev/sda と /dev/sdb の両方に grub-install を行う
  • mdadm 設定と initramfs を更新して、再起動後に RAID 上から確実に起動できることを確認する
  • 問題発生時は Live 環境で chroot して再設定する

短い告知文: 稼働中のLVM環境を停止せずにソフトウェアRAID1へ移行し、GRUB2を両ディスクへインストールしてブートを冗長化する手順をまとめました。作業前はバックアップを必ず取得してください。

重要なノート: 本稿は操作手順と注意点をまとめたものであり、システム環境によって追加の手順や調整が必要になることがあります。状況に応じて保守窓口と調整してください。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

クラウドを使わないファイル同期の方法
同期

クラウドを使わないファイル同期の方法

Hogwarts LegacyがPCでクラッシュする問題を解決
ゲームサポート

Hogwarts LegacyがPCでクラッシュする問題を解決

PC自作ガイド:組み立てとトラブルシュート
自作PC

PC自作ガイド:組み立てとトラブルシュート

PaxfulでP2Pによりビットコインを購入する方法
暗号資産

PaxfulでP2Pによりビットコインを購入する方法

稼働中LVMでのソフトウェアRAID1とGRUB2の設定
インフラ

稼働中LVMでのソフトウェアRAID1とGRUB2の設定

Androidで内部ストレージをMicroSDに差し替える手順
Android

Androidで内部ストレージをMicroSDに差し替える手順