AzureのRHEL8VMのディスク バックアップからのファイル回復方法について
RHEL8のVMでOSディスク バックアップからファイルを復元したい時、同じVMからデータにアクセスする方法について説明します。
Microsoft MarketplaceのRHEL8のイメージはLVMを使用して、構成は以下の通りです。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 63G 0 part
│ ├─rootvg-tmplv 253:0 0 2G 0 lvm /tmp
│ ├─rootvg-usrlv 253:1 0 10G 0 lvm /usr
│ ├─rootvg-homelv 253:2 0 1G 0 lvm /home
│ ├─rootvg-varlv 253:3 0 8G 0 lvm /var
│ └─rootvg-rootlv 253:4 0 2G 0 lvm /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 495M 0 part /boot/efi
最初にディスク バックアップをVMに接続します。
元のOSディスクとディスク バックアップの構成が同じため、VGも同じです。
そのため以下のWARNINGが表示されます。ディスク バックアップ(/dev/sdd2)のVGのUUIDが元のディスク(/dev/sdb2)と同じとのことです。
# vgs
WARNING: Not using device /dev/sdd2 for PV PdWL55-qIlK-A96n-2XJ9-D8bd-Svkk-FCMH8B.
WARNING: PV PdWL55-qIlK-A96n-2XJ9-D8bd-Svkk-FCMH8B prefers device /dev/sda2 because device is used by LV.
VG #PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- <63.02g <40.02g
バックアップのVGを使うにはバックアップのVGをインポートする必要があります。VGをインポートするとVGの名前とUUIDが変わります。名前は指定できますので、rootvg_newにします。
# vgimportclone -n rootvg_new /dev/sdd2
WARNING: Not using device /dev/sdd2 for PV PdWL55-qIlK-A96n-2XJ9-D8bd-Svkk-FCMH8B.
WARNING: PV PdWL55-qIlK-A96n-2XJ9-D8bd-Svkk-FCMH8B prefers device /dev/sdb2 because device is used by LV.
# vgchange -ay rootvg_new
5 logical volume(s) in volume group "rootvg_new" now active
# vgs
VG #PV #LV #SN Attr VSize VFree
rootvg 1 5 0 wz--n- <63.02g <40.02g
rootvg_new 1 5 0 wz--n- <63.02g <40.02g
バックアップVG(rootvg_new)をアクティブにしてボリュームは使用できます。
しかし、ファイルシステムをマウントするとまたエラーが発生します。
# mkdir /backup
# mount /dev/rootvg_new/rootlv /backup
mount: /backup: wrong fs type, bad option, bad superblock on /dev/mapper/rootvg_new-rootlv, missing codepage or helper program, or other error.
これはXFSファイルシステムもUUIDを使用しているからです。
元のVG(rootvg)とバックアップのVG(rootvg_new)のXFSファイルシステムのUUIDが同じということが問題です。
# blkid /dev/rootvg*/rootlv
/dev/rootvg_new/rootlv: UUID="9c542500-f63c-43ca-bdb9-90b000ecb9eb" BLOCK_SIZE="4096" TYPE="xfs"
/dev/rootvg/rootlv: UUID="9c542500-f63c-43ca-bdb9-90b000ecb9eb" BLOCK_SIZE="4096" TYPE="xfs"
その問題の解決方法は二つあります。
一つはマウントする時にnouuidオプションを使うことです。
# mount -o nouuid /dev/rootvg_new/rootlv /backup
# cat /backup/etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
もう一つはコピーのファイルシステムのUUIDを変更することです。
# xfs_repair -L /dev/rootvg_new/rootlv
Phase 1 - find and verify superblock...
..
done
# xfs_admin -U $(uuidgen) /dev/rootvg_new/rootlv
Clearing log and setting UUID
writing all SBs
new UUID = d000e632-25c5-4cb2-a02e-40acf021bfe2
# mount /dev/rootvg_new/rootlv /backup
# cat /backup/etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
どちらの方法を使ってもコピーのファイルシステムをマウントでき、ディスク バックアップのファイルをアクセスできます。
以上です。