
這就是我的設定:使用libvirt 運行KVM 的ubuntu 14.04 有一個HW-Raid,它從(/dev/sda) 運行,另一個HW-RAID (/dev/sdb) 是名為「datavg」的LVM VG 的PV 「將虛擬機器安裝到未格式化的 LV 中。然後我像這樣備份虛擬機器:
- 儲存 libvirt/virsh 配置
- 保存lv大小
- 使用 dd 儲存前 512 個位元組(MBR 和 GPT)
- 建立LV的LVM快照
- 映射分區(使用 kpartx)並掛載虛擬機器的根分區
- 儲存該分割區的 fs 類型和 uuid
- 使用口是心非對所有內容進行增量備份(不包括/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,但我擔心我使用錯誤......任何人都可以幫助我嗎?