物理机向虚拟机迁移P2V

现在P2V、V2V的工具已经是标准工具了,真的很不错。想当年搞xen的全系统迁移费的那个劲儿,真怀念那时的日子。转一下这篇文章,迁移问题现在已经很成熟了,如果以后用到的话,可以拿来就用。

物理机迁移到虚拟机称之为P2V(Physical to Virtual Migration),虚拟化迁移技术分为P2V,V2V,V2P三种,按迁移方式又有静态迁移和动态迁移两种。今天说的是静态迁移。

P2V的主要工作是将物理机的磁盘设备制作成KVM的镜像,如使用dd命令(结合systemrescurecd引导物理机)或者磁盘/分区工具。但dd命令是磁盘的完整复制浪费空间,Linux的克隆工具clonezilla只克隆数据区。

1, 安装virt-p2v, sudo yum install virt-v2v  (virt-v2v包也包括了p2v的包)
2, [可选]创建kvm的存储池,sudo virsh pool-create-as kvm-storage-pool dir --target=/bak/images/storagepool
3, 文件/etc/virt-v2v.conf中的内容都被注释掉了,先去掉所有注释,然后将元素"<profile name="libvirt">"下的“<storage>default</storage>”改成“< storage> kvm-storage-pool </storage>"
4, 运行p2v server
   $ sudo virt-p2v-server
VIRT_P2V_SERVER 0.9.0 { MSG: METADATA OPTIONS PATH CONVERT LIST_PROFILES SET_PROFILE CONTAINER DATA } { CONT: RAW }
5, [可选]制作p2v客户端镜像启动盘(p2v client能从usb或者其它媒介如光盘中, 因为客户端是虚机,实际上什么也不用做,呆会设置虚机直接从iso启动即可。)
   rhel-6.x-p2v.iso是rhel安装盘的一部分,安装rhel之后位于/usr/share/virt-p2v/目录,因为我用的是fedora所以没有。
   我是从这个链接下载的:http://mirror.centos.org/centos/6/os/x86_64/Packages/virt-p2v-0.8.6-5.20120502.1.el6.centos.noarch.rpm
   如果需要制作USB启动盘的话,比如说U盘插进去了现在是/dev/sdb。
   sudo mount -o loop /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /mnt
   cd /mnt/LiveOS
   /livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb
6, 创建kvm虚机,并设置从上面的virt-p2v.iso启动,因为我的kvm图形化工具virt-manager是用普通用户启动的,所以将/usr/share/virt-p2v目录也设置具有普通用户的权限。
   sudo chown -R hua:root /usr/share/virt-p2v
   选存储时选择在上面设置的kvm-storeage-pool中建立虚硬盘,并一定设置为raw格式。
7, 启动虚机,并设置虚机的网络信息,然后应该可以连接到上面的virt-p2v-server然后开始迁移的,但不知道为什么虚机在连接p2v server时总是报“conect failed, connection refused".
   原因是还要设置可以用root来登录ssh, 所以将/etc/ssh/sshd_config文件中的“PermitRootLogin yes”前的注释去掉,并重启ssh (sudo service sshd restart)
   上张图:

物理机向虚拟机迁移P2V_第1张图片

8,迁移成功之后,可以将raw格式的虚拟文件转换成qcow2格式,并上传到openstack的glance中。
  sudo qemu-img convert -f raw -O qcow2 test-p2v.raw test-p2v.qcow2
  glance add disk_format=qcow2 container_format=ovf name=fedora is_public=True < test-p2v.qcow2

下面看看Clonezilla

Clonezilla是一个类似于Ghost的磁盘克隆工具(Ghost只能克隆整个磁盘,它还结合了Partion Image的优点,也能克隆单个分区,哇,这个特性,现在做实验可以省不少空间了),它只克隆硬盘中被使用的块,从而节省了空间。它底层使用 Partition Image, ntfscline, partcline和dd工具来克隆分区或磁盘,对于不能识别的文件系统(支持的文件系统包括:ext2, ext3, reiserfs, xfs, jfs, fat, ntfs),默认使用dd命令。也支持使用PXEBoot来进行Multicast克隆。
1, 下载Clonezilla, http://clonezilla.org/downloads/download.php?branch=stable
   并且UltraISO制作成启动U盘待用,我用的是usb-hdd+格式。
2, 如果是windows,在备份之前,也可下载https://www.virtualbox.org/raw-attachment/wiki /Migrate_Windows/MergeIDE.zip后双击MergeIDE.bat文件再重启,这样是为了让windows支持IDE设备。 KVM的虚拟要设置为IDE来能顺利完成迁移,IDE设备是windows和linux沟通的最好桥梁.
  还可以为windows系统安装下列virtio驱动:
  硬盘驱动,http://download.longgeek.com/vmware/virtio-win-0.1-30.iso
  网卡驱动,http://download.longgeek.com/vmware/virtio-win-1.1.16.vfd
3, 用上面的Clonezilla启动U盘启动要迁移的物理机。
    它有device-image和device-device两种方式,后者是直接硬盘对硬盘对拷,前者是硬盘先转换成虚机的镜像格式,我们使用前者。
    但当用clonezilla的usb启动盘启动时报错:not a com32r image

    这很明显是usb启动盘没做成功,既然用ultraiso不行,我换成redhat光盘中自带的livecd-iso-to-disk命令创建usb启动盘一样报错。不清楚是什么原因,基本上过程就是这样子的,不弄了,以后有机会再搞。

    sudo ./livecd-iso-to-disk /bak/tools/clonezilla-live-2.1.2-20-amd64.iso /dev/sdb4

Reference: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/V2V_Guide/index.html

你可能感兴趣的:(物理机向虚拟机迁移P2V)