LVMシンボリュームをリストアできない

1. 概要

MSSはLVMシンボリュームのバックアップ・リストアに対応していません。LVMシンボリュームを含むディスクをバックアップするとエラーにならず完了しますが、そのバックアップイメージをリストアするとエラーが発生してリストアに失敗します。LVMシンボリュームをリストアするには、コマンドモードを使って手動でリストアを実行する必要があります。

2. 詳細

MSSでは、LVMのボリュームグループや論理ボリュームの構成をバックアップ・リストアするのにvgcfgbackupおよびvgcfgrestoreコマンドを使用しています。これらのコマンドはLVMシンボリュームのメタデータをバックアップ・リストアしないため、MSSでLVMシンボリュームが含まれるディスクをリストアすると以下のようなエラーが発生します。

LVMシンボリュームをリストアしたときのエラーメッセージ

「Consider using option --force to restore Volume Group VolGroup with thin volumes.」のようなメッセージが表示されている場合、LVMシンボリュームが含まれており、MSSではリストアできません。

3. コマンドでのリストア方法

LVMシンボリュームをリストアするには、コマンドモードを使って手動でリストアを実施する必要があります。下記の手順は、ボリュームグループVolGroupの中にシンプールpool00があり、pool00に2つのシンボリュームlv_rootおよびlv_swapが含まれている場合のリストア方法の例です。ボリュームグループ名や論理ボリューム名、各ボリュームのサイズについては環境に合わせて読み替えてください。

  1. MSSを起動しエラーになるところまで通常どおりリストアします。
  2. エラーになった直後、 [Alt] + [F2] を押下しコマンドモードに切り替えます。
  3. 以下のコマンドを実行してrootユーザーに変更します。
    sudo -i
  4. 以下のコマンドを実行してバックアップしたボリュームグループの設定を確認します。ファイル名のVolGroupの箇所は実際のボリュームグループ名で読み替えてください。
    less /home/partimag/<イメージ名>/lvm_VolGroup.conf
  5. VolGroupセクション配下のlogical_volumeセクションを確認し、各論理ボリュームのextent_countの値を控えておいてください。
    VolGroup {
            (省略)
    
            logical_volumes {
    
                    pool00 {
                            (省略)
    
                            segment1 {
                                    extent_count = 5926
    
                                    (省略)
                            }
                    }
    
                    lv_root {
                            (省略)
    
                            segment1 {
                                    extent_count = 5413
    
                                    (省略)
                            }
                    }
    
                    lv_swap {
                            (省略)
    
                            segment1 {
                                    extent_count = 512
    
                                    (省略)
                            }
                    }
    
                    (省略)
            }
    
    }
    この例では、pool00のextent_countは5926、lv_rootとlv_swapはそれぞれ5413と512になります。
  6. 以下のコマンドを実行してボリュームグループVolGroupにシンプールpool00を作成します。 -lオプションには先の手順で確認したextent_countの値を指定してください。
    lvcreate -T -l 5926 -n pool00 VolGroup
  7. 以下のコマンドを実行して論理ボリュームlv_rootとlv_swapを作成します。-Vオプションに渡す値は、先の手順で控えたextent_countの値に4を掛けた値を指定してください。
    lvcreate -T -V 21652 -n lv_root VolGroup/pool00
    lvcreate -T -V 2048 -n lv_swap VolGroup/pool00
  8. 以下のコマンドを実行してlv_rootにファイルシステムをリストアします。ext4やxfsなどのファイルシステムを使っている論理ボリュームが複数ある場合は同様のコマンドでリストアしてください。swapについては次の手順でリストアします。
    zcat /home/partimag/<イメージ名>/VolGroup-lv_root.ext4-ptcl-img.gz.* |
    partclone.extfs -r -s - -o /dev/VolGroup/lv_root
    表示の都合で2行になっていますが、実際は1行で入力してください。ファイルシステムがext4以外の場合は、イメージのファイル名のext4の部分やpartcloneコマンドのextfsの部分を該当するファイルシステム名で読み替えてください。
  9. 以下のコマンドを実行してlv_swapをリストアします。
    . /home/partimag/<イメージ名>/swappt-VolGroup-lv_swap.info
    mkswap --uuid $UUID /dev/vg-locale/lv-swap
  10. 以下のコマンドを実行してMBR領域をリストアします。ディスク名sdaの部分は実際のディスク名で読み替えてください。
    dd if=/home/partimag/<イメージ名>/sda-mbr of=/dev/sda bs=446 count=1
  11. 以下のコマンドを実行して作成した論理ボリュームのUUIDを確認します。
    blkid
  12. 以下のコマンドを実行してリストアしたOSのディスクを/mnt配下にマウントします。ここでは論理ボリュームlv_rootを/mntにマウントし/dev/sda1を/mnt/bootにマウントしています。マウントするパーティションなどは環境に応じて読み替えてください。
    mount /dev/VolGroup/lv_root /mnt
    mount /dev/sda1 /mnt/boot
    mount --rbind /dev /mnt/dev
    mount -t proc none /mnt/proc
    mount -t sysfs none /mnt/sys
  13. 以下のコマンドを実行してリストアしたOSの/etc/fstabにあるUUIDを更新します。
    vi /mnt/etc/fstab
    fstab内でマウントする論理ボリュームの設定をUUIDで表記している場合、先の手順で確認したUUIDに書き換えます。UUIDで指定していない場合、書き換えは不要となります。
  14. 以下のコマンドを実行してブートローダーの設定を更新します。ブートパラメーターのroot=の指定をUUIDで表記していない場合、この手順は不要となります。
    chroot /mnt grub2-mkconfig -o /boot/grub2/grub.cfg
    grub.cfgのファイルパスは環境に応じて読み替えてください。また、grub以外のブートローダーを使用している場合はそれぞれのブートローダーのマニュアルを確認してください。
  15. 以下のコマンドを実行してマウントしたディスクをアンマウントします。
    umount -l /mnt
  16. [Alt] + [F1] を押下してMSSの画面に戻り、シャットダウンします。
  17. システムを起動して、正常に稼働していることを確認してください。

更新情報

2020年 3月 12日 新規作成