はじめに
以前レスキューモードの起動方法について紹介いたしましたが、今回はレスキューモードを使ってファイルシステムを復旧する方法について紹介させて頂きます。
grub メニューが出て、起動が始まっているのに途中で止まるって起動できない、シングルユーザーモードにも出来ないような場合に活用できます。
取り合えずレスキューモードを起動させます
起動方法は以前紹介していますのでそちらを参照してください。
通常であれば 1) Continue で問題ありませんが、OSが起動しないような状態ですとエラーになります(エラーが出ても同様の操作はできますが)ので、3) Skip to shell で shell を起動します。
通常のパーティションであればそのまま復旧に進みますが、LVMを使っている場合にはLVMをアクティブ化する必要があります。
LVMをアクティブ化する
LVMをアクティブにするにはアクティブにするVGの名前を知る必要があります。
bash-5.1# vgdisplay
--- Volume group ---
VG Name main
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
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 <29.51 GiB
PE Size 4.00 MiB
Total PE 7554
Alloc PE / Size 7554 / <29.51 GiB
Free PE / Size 0 / 0
VG UUID fn6uCv-mF3n-1fEo-gDnb-eDPI-2iDg-3mRa9f
VG name が分かればその VG をアクティブにします。
Bash-5.1# vgchange -ay main
2 logical volume(s) in volume group "main" now active
ファイルシステムの復旧
復旧したい論理ボリュームを確認するには lvdisplay で確認する事ができます。
Bash-5.1# lvdisplay
--- Logical volume ---
LV Path /dev/main/root
LV Name root
VG Name main
LV UUID QrwaaI-FBBZ-Zbex-mlSH-bD9Q-IyNP-fdlrBI
LV Write Access read/write
LV Creation host, time tmphost, 2022-11-01 15:26:38 +0900
LV Status available
# open 1
LV Size <25.51 GiB
Current LE 6530
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
--- Logical volume ---
LV Path /dev/main/swap
LV Name swap
VG Name main
LV UUID 4kfrRD-PK5w-1NpV-eti5-xSwR-HESS-izTCMZ
LV Write Access read/write
LV Creation host, time tmphost, 2022-11-01 15:26:39 +0900
LV Status available
# open 2
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
このLVMには root と swap という2つが存在していることが分かります。
今回は root ファイルシステムについて復旧してみたいと思いますが、RedHat EL7 からはディフォルトのファイルシステムは xfs になっていますので、xfs_repair を使います。因みに、ext4 のファイルシステムであれば fsck.ext4 です。
Bash-5.1# xfs_repair /dev/main/root
Phase 1 - find and verify superblock...
Phase 2 - using internal log
:
:
問題なければ Phase 7 まで進んで done しますが、途中でエラーが出て止まってしまうような場合は、-L オプションを付けて強制的に実行するしかありません。但し、幾つかのファイルが失われる場合があります。
最後に
何事もなく復旧が済めば御の字ですが復旧が停止、強制実行した場合は、ファイルやデータが失われる場合があります。が、起動しないよりは良いと諦めるしかありません・・・。データベース等のファイルが失われた場合はバックアップから戻す事になるでしょうから日頃の外部システムへのバックアップも重要になります。