我需要将一台 CentOS5 (32 位) 物理服务器迁移到虚拟机中。我的想法是拍摄 LV 的快照,然后导入 kvm 以创建新的 vm。这是个好主意吗?更确切地说,我有一个磁盘:
[root@cs5 ~]# fdisk -l
Disco /dev/sda: 292.3 GB, 292326211584 byte
255 heads, 63 sectors/track, 35539 cylinders
Unità = cilindri di 16065 * 512 = 8225280 byte
Dispositivo Boot Start End Blocks Id System
/dev/sda1 1 9 72261 de Dell Utility
/dev/sda2 * 10 271 2104515 b W95 FAT32
/dev/sda3 272 284 104422+ 83 Linux
/dev/sda4 285 35539 283185787+ 5 Esteso
/dev/sda5 285 35539 283185756 8e Linux LVM
和
[root@cs5 ~]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda3 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
因此 pv、vg 和 lv 是:
[root@cs5 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 VolGroup00 lvm2 a- 270,06G 0
[root@cs5 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 270,06G 0
[root@cs5 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
LogVol00 VolGroup00 -wi-ao 264,91G
LogVol01 VolGroup00 -wi-ao 5,16G
如图所示,我在 /boot 中安装了 /dev/sda3 和 2 个 LV,一个用于 /,另一个用作交换分区。我认为我需要的唯一快照是 LogVol00,对吗?
此时,我需要向 PV 添加另一个磁盘,然后将其添加到 VG,最后使用以下命令创建快照
lvcreate -L XXG -s -n data_snap /dev/VolGroup00/LogVol00
现在,我该如何在虚拟机中导入该快照?我可以创建快照的 tar.gz 文件,也可以使用 dd,但我没有虚拟机的启动分区。我是否应该先安装新的虚拟机,然后(以单一模式启动)覆盖 / 中的所有文件(/boot 除外)?还有其他方法吗?谢谢
答案1
你基本上有三个选择:
- 使用实时 CD/USB 启动,复制全部的/dev/sda,并在 KVM 主机上恢复它。
- 复制两个 LVM 卷(通过快照,或者更好的方法是通过 CD/USB 启动并在 LVM 卷处于非活动状态时复制它)和/boot 分区。然后,实时启动虚拟机,恢复分区,chroot 到新恢复的根目录并在 MBR 上重新安装 GRUB
- 如果适用,您可以使用Red Hat 的 p2v 工具
如果所有方法都失败了,最好的选择是安装新的 RHEL 5 客户机并从旧机器迁移数据(例如:通过 rsync)