将虚拟机还原到 LV,未找到 GRUB 磁盘

将虚拟机还原到 LV,未找到 GRUB 磁盘

我的设置如下:ubuntu 14.04 运行带有 libvirt 的 KVM,有一个运行的 HW-Raid (/dev/sda) 和另一个 HW-RAID (/dev/sdb),它是名为“datavg”的 LVM VG 的 PV,虚拟机安装在未格式化的 LV 中。然后我像这样备份了 VM:

  • 保存 libvirt/virsh 配置
  • 保存 lv 大小
  • 使用 dd 保存前 512 字节(MBR 和 GPT)
  • 创建 LV 的 LVM 快照
  • 映射分区(使用 kpartx)并挂载虚拟机的根分区
  • 保存该分区的 fs 类型和 uuid
  • 使用 duplicity 对所有内容进行增量备份(排除 /proc)
  • 卸载和取消映射
  • 移除快照

这是我在“返回途中”运行的操作,将其恢复到 LV“vm-test-lv”中名为“test-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

  • 使用相同的 UUID 在相同的 FS 中格式化它(均来自备份)

    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,但我担心我使用错了...有人能帮帮我吗?

相关内容