现在的位置: 首页 > 综合 > 正文

物理机向虚拟机迁移P2V ( by quqi99 )

2014年01月03日 ⁄ 综合 ⁄ 共 3099字 ⁄ 字号 评论关闭

                                      物理机向虚拟机迁移P2V ( by quqi99 )

作者:张华  发表于:2013-7-27
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

       物理机迁移到虚拟机称之为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)
   上张图:

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

抱歉!评论已关闭.