VM を LV に復元すると、GRUB ディスクが見つかりません

VM を LV に復元すると、GRUB ディスクが見つかりません

私のセットアップは次のようになります: libvirt で KVM を実行している ubuntu 14.04 には、実行元の HW-RAID (/dev/sda) と、フォーマットされていない LV に仮想マシンがインストールされた "datavg" と呼ばれる LVM VG への PV である別の HW-RAID (/dev/sdb) があります。次に、次のように VM をバックアップしました:

  • libvirt/virsh 設定を保存する
  • lvサイズを保存する
  • ddを使用して最初の512バイト(MBRとGPT)を保存します。
  • LVのLVMスナップショットを作成する
  • パーティションをマップし(kpartxを使用)、VMのルートパーティションをマウントします。
  • そのパーティションのファイルシステムタイプとUUIDを保存する
  • duplicity を使用して、すべての増分バックアップを実行します (/proc は除く)
  • アンマウントとアンマップ
  • スナップショットを削除

これは、LV「vm-test-lv」内の「test-vm」という VM に復元するために「戻る」ときに実行したものです。

  • 同じサイズのLVを作成する(バックアップから)

    lvcreate --name vm-test-lv --size 400.00G datavg

  • MBRとGPTをLVの先頭の512bに戻します。

    dd if=/data/backup/test/MBR-20141126T104236Z.raw of=/dev/datavg/vm-test-lv

  • LVパーティションをマップする

    kpartx -av /dev/datavg/vm-test-lv

  • 同じFSで同じUUIDでフォーマットする(両方ともバックアップから)

    mkfs.ext4 -U a5943cc4-6421-47a4-9613-30efd4dc44d4 /dev/mapper/datavg-vm--test--lv1

  • 新しくフォーマットしたパーティションをマウントする

    mount /dev/mapper/datavg-vm--test--lv1 /data/mnt/

  • 重複バックアップを復元する

    duplicity restore --progress --restore-time 20141126T104236Z file:///data/backup/test /data/mnt

  • アンマウントする

    umount /data/mnt

  • マッピングを削除する

    kpartx -d /dev/mapper/datavg-vm--test--lv

  • 仮想マシンを作成します (この場合、元の仮想マシンはまだ存在しますが、電源がオフになっているため、名前と UUID が異なります)

    virsh create /data/backup/test/virsh-20141126T104236Z.xml

  • 起動してみる

それは機能せず、ハングしています。SSH トンネル経由で VNC で確認すると、「ハードディスクから起動しています...」と表示されます (スクリーンショットインライン画像を投稿することは許可されていないため)

その後、再度マップして chroot して実行しようとしましたgrub-installが、これも機能しませんでした。

root@kvm-host:~# mkdir /data/mnt/proc
root@kvm-host:~# mount --bind /proc /data/mnt/proc
root@kvm-host:~# mount --bind /dev /data/mnt/dev 
root@kvm-host:~# mount --bind /sys /data/mnt/sys 
root@kvm-host:~# chroot /data/mnt
root@kvm-host:/# grub-install /dev/mapper/datavg-vm--test--lv
Installing for i386-pc platform.
grub-install: error: disk `lvmid/eLefkO-MKtH-kOcq-pt0b-4zzO-31xg-XIqDpY/AcNuFk-JY2r-V8x5-gNoV-UCoi-uQug-8R0ZWZ' not found.

VG と LV の正しい UUID が表示されていますが、使い方が間違っているのではないかと心配です... 誰か助けてくれませんか?

関連情報