Azure VM(Linux)のバックアップからファイル回復をしようとした際に、ファイル回復スクリプトによる LVM パーティションのマウントができない事象を確認しました。
本記事では、原因と対処方法についてご紹介します。
はじめに
LVM パーティションがマウントできなかった原因
ファイル回復をしたいデータが含まれるバックアップ対象の Linux VM と、ファイル回復を実施する Linux VM で、LVM パーティションの ボリュームグループ(以下、VG)名や UUID が重複していため、ファイル回復スクリプトによる LVM パーティションのマウントができない事象を確認しました。
※以降は各 Linux VM を以下呼称とします。
VM 種別 | 以降の呼称 |
---|---|
バックアップ対象の Linux VM | バックアップ VM |
ファイル回復を実施する Linux VM | リストア VM |
本事象が発生するケース
以下のケースにおいて、バックアップ VM とリストア VM で LVM パーティションの VG 名や UUID が重複する可能性があります。
- 同一のマスターイメージから Azure VM(Linux)を作成した場合
- Azure VM 作成時に同じ Linux イメージを選択した場合
前提条件
- 本記事に記載している手順は、バックアップ VM とリストア VM の双方で Azure VM の利用を前提とします。
- 以下の公開情報に記載されているファイル回復の各種要件を満たしている必要があります。
検証環境
下記の通り、検証環境を用意しました。
- バックアップ VM とリストア VM は、Azure VM 作成時のイメージに「Red Hat Enterprise Linux 9.4(LVM) - x64 Gen2」を指定して作成しました。
- ファイル回復が実施できるように、バックアップ VM にて Azure Backup を構成し、バックアップを1回以上実行しておきます。
検証
ファイル回復スクリプトのダウンロード
Azure ポータルからバックアップ VM のバックアップ画面にアクセスし、[ファイルの回復]をクリックします。
任意の復元ポイントを選択し[OK]をクリックします。
[スクリプトのダウンロード]をクリックします。
スクリプトが生成されるまで待ちます。
[ダウンロード]をクリックしてファイル回復スクリプトファイルをダウンロードし、[実行するにはパスワードが必要]欄のパスワードを控えておきます。
※控えたパスワードはファイル回復スクリプトの実行時に入力します。
ファイル回復スクリプトの実行
リストア VM の任意の場所にファイル回復スクリプトを配置します。
ファイル回復スクリプトに実行権限を付与します。
ファイル回復スクリプトを実行します。
※検証環境では sudo コマンドでファイル回復スクリプトを実行した際に、復元ポイントの接続処理が進まない事象を確認したため、root ユーザーで実行しています。
※「Please enter the password as shown on the portal to securely connect to the recovery point.」は、ファイル回復スクリプトダウンロード時に控えたパスワードを入力します。
※「Do you want us to mount LVMs as well? ('Y'/'N')」は Y を入力します。一部パーティションのマウントが失敗したとのメッセージが表示されますので、q を押してスクリプトを終了します。
lsblk コマンドでマウント状況を確認します。
ファイル回復スクリプトを実行した事で、指定した復元ポイントのディスクがアタッチされていることが確認できました。
ただし、この時点では LVM パーティションとなる[sdc4]がマウントできていない状況になっています。
VG 名を変更
1. 以下コマンドを実行して VG 名を確認します。
sudo pvs -o +vguuid
※アタッチされたディスクのパーティションで警告メッセージが表示されていますので、デバイス名を控えておきます。
2. 以下コマンドを実行して VG 名を変更します。
sudo vgimportclone -n rootvg_new[デバイス名]
3. 以下コマンドを実行して再度 VG 名を確認します。
sudo pvs -o +vguuid
警告メッセージの表示が消え、VG 名が変更した名前で表示されました。
4. 以下コマンドを実行して名前を変更した VG をアクティブ化します。
sudo vgchange -ay[VG名]
5. 以下コマンドを実行して名前を変更した VG に含まれる論理ボリューム(以下、LV)を確認します。
sudo lvdisplay[VG名]
※以降の手順で [rootlv]をマウントしますので LV Path を控えておきます。
LVM パーティションのマウント
1. 以下コマンドを実行して LVM パーティション[rootlv]をファイルシステムのみを指定してマウントしてみます。
sudo mount -t xfs[マウントするLV Path][マウント先ディレクトリ]
mount コマンドがエラーとなりました。また、dmesg コマンドで UUID が重複しているとの内容でログ出力されていることも確認できました。
2. [nouuid]オプションを追加した以下コマンドを実行して再度マウントしてみます。
sudo mount -o nouuid -t xfs[マウントするLV Path][マウント先ディレクトリ]
エラーが出ることなく mount コマンドが実行できました。
3. lsblk コマンドでマウント状況を確認します。
LVM パーティション[rootlv]がマウントできました。
4. 必要なファイルを取り出した後、Azure ポータルよりディスクのマウントを解除します。
おわりに
本記事では、VG 名や UUID の重複が原因でファイル回復スクリプトでマウントできなかった LVM パーティションを、VG 名の変更と[nouuid]オプションを指定することでマウントできることを確認しました。
同じ事象に遭遇された方の参考になれば幸いです。