RAID と LVM の復旧ガイド

このガイドでは、システムの再インストール後、またはストレージ構成を再度有効化する必要がある同様の状況で、ソフトウェア RAID アレイと LVM ボリュームを復旧する手順を説明します。

1. 前提条件

必要なパッケージをインストールします。

sudo apt-get update
sudo apt-get install mdadm lvm2

復旧作業中の場合は、アレイ構成と LVM メタデータを確認するまで、ディスクへの書き込みを避けてください。

2. RAID アレイと LVM ボリュームの特定

RAID アレイを確認する

# 既存の RAID アレイを確認する
sudo mdadm --detail --scan
cat /proc/mdstat

候補となるメンバーデバイスを直接調べることもできます。

sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3

デバイス名は自分のマシンに合わせて調整してください。何かをアセンブルする前に、lsblkblkid、またはインストーラー/ライブ環境のディスクユーティリティを使って、正しいデバイスであることを確認します。

LVM 構成を特定する

# パーティション種別を調べ、RAID と LVM のメンバーを特定する
sudo blkid

# LVM 物理ボリュームを確認する
sudo pvs

# ボリュームグループを確認する
sudo vgs

# 論理ボリュームを確認する
sudo lvs

# 物理ボリュームの詳細情報を取得する
sudo pvdisplay --maps

RAID デバイスがまだアセンブルされていない場合、その上に存在する物理ボリュームは LVM から見えないことがあります。まず RAID アレイをアセンブルし、その後 LVM を再スキャンしてください。

3. RAID アレイの有効化

# 検出されたすべての RAID アレイをアセンブルする
sudo mdadm --assemble --scan

# アセンブルが成功したことを確認する
cat /proc/mdstat

# 特定の RAID アレイの詳細情報を取得する
# md0 が異なる場合は実際のデバイス名に置き換える
sudo mdadm --detail /dev/md0

通常のアセンブルに失敗する場合は、まずメタデータを調べます。

sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3

メンバーが正しく、アレイに整合性があると分かっている場合は、強制アセンブルを試すことができます。

# 通常のアセンブルに失敗し、これらが正しいメンバーだと確信できる場合にのみ使用する
sudo mdadm --assemble --force /dev/md0 /dev/nvme1n1p3 /dev/nvme3n1p3

特に RAID-0 では、メンバーの順序が重要です。アレイが正常にアセンブルされない場合は、破壊的なコマンドを試す前に作業を止め、元の構成を確認してください。

4. LVM ボリュームの有効化

# ボリュームグループをスキャンする
sudo vgscan

# すべてのボリュームグループを有効化する
sudo vgchange -ay

# すべての論理ボリュームが利用可能であることを確認する
sudo lvs -a

特定のボリュームを有効化する必要がある場合は、次のようにします。

sudo lvchange -ay vg_name/lv_name

# 例:
sudo lvchange -ay vg_home/lv_home

生成されたデバイスパスは次のコマンドで確認できます。

lsblk -f
sudo lvs -o +devices

5. ボリュームのマウント

マウントポイントを作成し、論理ボリュームをマウントします。

# 存在しない場合はマウントポイントを作成する
sudo mkdir -p /mnt/home /mnt/home_lfs /mnt/storage /mnt/trash

# 論理ボリュームをマウントする
sudo mount /dev/vg_home/lv_home /mnt/home
sudo mount /dev/vg_home_lfs/home_lfs /mnt/home_lfs
sudo mount /dev/vg_storage/lv_storage /mnt/storage
sudo mount /dev/vg_trash/lv_trash /mnt/trash

# マウントが成功したことを確認する
df -h

ファイルシステムの種類や正しいマウントオプションが分からない場合は、先に論理ボリュームを調べます。

sudo blkid /dev/vg_home/lv_home
sudo file -s /dev/vg_home/lv_home

6. マウントを永続化する(任意)

再起動後もこれらのマウントを維持するには、/etc/fstab に追加します。

まず、各論理ボリュームの UUID を取得します。

sudo blkid | grep /dev/mapper

次に /etc/fstab を編集します。

sudo vim /etc/fstab

通常、UUID を使ったエントリは、デバイス名を使ったエントリより安定しています。形式の例は次のとおりです。

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/home     ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/home_lfs ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/storage  ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/trash    ext4 defaults 0 2

システムに一致していれば、device-mapper のパスも使用できます。

/dev/mapper/vg_home-lv_home       /mnt/home     ext4 defaults 0 2
/dev/mapper/vg_home_lfs-home_lfs  /mnt/home_lfs ext4 defaults 0 2
/dev/mapper/vg_storage-lv_storage /mnt/storage  ext4 defaults 0 2
/dev/mapper/vg_trash-lv_trash     /mnt/trash    ext4 defaults 0 2

再起動する前に、ファイルをテストします。

sudo mount -a
findmnt /mnt/home /mnt/home_lfs /mnt/storage /mnt/trash

7. トラブルシューティング

RAID のアセンブルに失敗する場合

メンバーデバイス上の RAID メタデータを確認します。

sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3

RAID デバイスに対する現在のカーネルの認識を確認します。

cat /proc/mdstat
lsblk -f

アレイが以前 mdadm で作成されていた場合は、既存のメタデータからアセンブルすることを優先してください。元の RAID レベル、メンバー順序、チャンクサイズ、メタデータバージョン、デバイス数を完全に理解していない限り、復旧中に mdadm --create を使うのは避けてください。誤った --create コマンドは、データへのアクセスを破壊する可能性があります。

元の RAID-0 定義を正確に再作成していると確信できる場合、コマンドは次のようになります。

# 元の構成が正確に分かっていない限り、復旧中には危険
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme1n1p3 /dev/nvme3n1p3

LVM ボリュームが見つからない場合

# LVM メタデータを探して物理デバイスをスキャンする
sudo pvscan

# ボリュームグループのスキャンを強制し、不足しているデバイスノードを作成する
sudo vgscan --mknodes

# 特定のボリュームグループを確認する
sudo vgdisplay vg_name

物理ボリュームが RAID アレイ内にある場合は、LVM を再スキャンする前に、/dev/md0 または正しい /dev/md/* デバイスが存在することを確認してください。

ボリュームをマウントできない場合

# ファイルシステムの種類を確認する
sudo file -s /dev/mapper/vg_name-lv_name
sudo blkid /dev/mapper/vg_name-lv_name

# マウントエラーに関するカーネルメッセージを確認する
dmesg | tail -n 50

正しいデバイスとファイルシステム種別を確認した後でのみ、ファイルシステム修復を実行してください。

# ext 系ファイルシステムでは、対応する論理ボリュームのパスを使用する
sudo fsck -f /dev/mapper/vg_name-lv_name

XFS の場合は、fsck ではなく xfs_repair を使用します。

sudo xfs_repair /dev/mapper/vg_name-lv_name

8. クイック復旧コマンド

素早く復旧する場合、最小限のコマンドセットは次のとおりです。

sudo apt-get update && sudo apt-get install -y mdadm lvm2
sudo mdadm --assemble --scan
sudo vgscan
sudo vgchange -ay
sudo lvs -a
lsblk -f
# 必要に応じてマウントポイントを作成し、ボリュームをマウントする

nvme1n1p3nvme3n1p3 上の RAID-0、および LVM ボリュームグループ vg_homevg_home_lfsvg_storagevg_trash という特定の構成では、RAID メタデータと LVM メタデータがまだ無事であるという前提で、これらのコマンドによりシステム再インストール後のストレージ構成を復元できるはずです。

ディスクへ何かを書き込む前に、実際の環境に合わせてデバイス名、論理ボリューム名、ファイルシステム種別、マウントポイントを調整してください。

Leave a Reply