一、实施说明

在虚拟化的过程中由现有物理系统到虚拟机的迁移环节必不可少,其中有很多工具和方式各有不同特色,我目前用过方式的只有clonezilla、Vconvert、virt-p2v,从物理机向KVM迁移。本文主要讲通过clonezilla实现p2v的迁移,国内网上也有不少讲clonezilla的,不过都只讲了clone的使用,至于具体迁移则很少设计,其中主要且容易出问题的关键点也没提,通过百度搜过资料的人都懂的,基本出处都是一个。。。。。。。

 

clonezilla是台湾人开发的一个开源软件,功能很强,可以进行硬盘和硬盘,硬盘和映像,及分区和映像的相互转换。速度很快,最主要的就是只备份硬盘实际使用的块,空余空间不会备份,这样整个映像文件就不会太大,而且成功率极高。

 

本例服务器信息如下:

         server1:   IP:172.16.1.11    Windows2008  【需要迁移的物理机】

         server2:   IP:172.16.1.10     linux  dhcp+tftp 【运行KVM的目标机器】

 

二、配置Clonezilla

有两种方式运行clonezilla,可以下载ISO刻录成CD通过光盘引导,还可以下载zip包进通过PXE进行安装,这里讲PXE引导方式,比较网络还是要更快,适应性更强

1.下载Clonezilla:

在www.clonezilla.org下载最新版的zip包

 

2.配置DHCP的 PXE引导

#vim /etc/dhcp/dhcpd.conf

\\在子网下配置选项,【这里只写pxe引导部分,其他配置请搜索dhcp配置方法】

subnet {
	...
	 next-server 172.16.1.10;		\\指定用于引导的Tftp服务器,
	 filename "pxelinux.0";		\\指定pxe引导文件
	}

#service dhcpd restart
 

3.安装TFTP服务

yum -y install xinetd tftp-server tftp
chkconfig xinetd on
chkconfig tftp on
service xinetd start4.配置PXE引导 【clonezilla官网有相关配置文档】
 
unzip clonezilla-live-20140915-trusty-amd64.zip

cp -a clonezilla-live-20140915-trusty-amd64/live /var/lib/tftpboot/

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg

cp clonezilla-live-20140915-trusty-amd64/syslinux/isolinux.cfg	/var/lib/tftpboot/pxelinux.cfg/default


vi /var/lib/tftpboot/pxelinux.cfg/default

\\将label Clonezilla live段的append参数修改如下:

append initrd=/live/initrd.img boot=live username=user hostname=trusty config  union=overlayfs \
noswap edd=on nomodeset ocs_live_keymap=NONE ocs_lang=zh_CN.UTF-8 nolocales \
ocs_live_run="ocs-live-general"  \
noprompt ocs_live_batch=no vga=788 \
fetch=tftp://172.16.1.10/live/filesystem.squashfs

三、配置物理服务器,生成映像

1.下载virtio-win光盘,载入windows,具体下载地方可以通过google找

 

2.安装virtio驱动,(Windows 2008 x64)

重要:服务器一般都是RAID硬盘驱动,kvm本身不支持,不提前安装会导致虚拟机启动找不到硬盘

设备管理器—>添加过时硬件—>手动选择硬件列表—>存储控制器—>从磁盘安装—>”选择光盘下WLH/AMD64/viostor”

 

3.重启计算机,通过PXE引导,制作映像

下面显示了主要的步骤,其他都要按照默认即可

  1. StartClone --->

    Linux虚拟化之物理机到KVM的迁移(P2V)_第1张图片

  2. device-p_w_picpath-->

    Linux虚拟化之物理机到KVM的迁移(P2V)_第2张图片

3.SSH server--->


    Linux虚拟化之物理机到KVM的迁移(P2V)_第3张图片

4.填写远端kvm的IP--->


    Linux虚拟化之物理机到KVM的迁移(P2V)_第4张图片

5.填写要挂在的远端kvm目录

    Linux虚拟化之物理机到KVM的迁移(P2V)_第5张图片

6.填写远端kvm密码

    Linux虚拟化之物理机到KVM的迁移(P2V)_第6张图片

7.查看分区是否挂载

    Linux虚拟化之物理机到KVM的迁移(P2V)_第7张图片

8.继续选择“专家模式”

    Linux虚拟化之物理机到KVM的迁移(P2V)_第8张图片

7.选择savedisk,制作本地硬盘映像

    Linux虚拟化之物理机到KVM的迁移(P2V)_第9张图片

8.键入生成映像的文件夹,默认即可

    Linux虚拟化之物理机到KVM的迁移(P2V)_第10张图片

9.选择生成映像的优先顺序,即当一个程序失效的时候会自动用另外方式,默认即可

    Linux虚拟化之物理机到KVM的迁移(P2V)_第11张图片

10.选择生成映像参数,如果是windows系统一定选上“-rm-win-swap-hib”,以节省空间

    Linux虚拟化之物理机到KVM的迁移(P2V)_第12张图片

11.选择压缩模式,可以根据自己的带宽,存储情况选择,我选择不压缩

    Linux虚拟化之物理机到KVM的迁移(P2V)_第13张图片

12.如果选择了压缩系统会自动将压缩文件分解多个包,这里选择每个包的大小,如果只想生成一个包的话,就选择一个特别大的数值

   Linux虚拟化之物理机到KVM的迁移(P2V)_第14张图片

13.选择映像制作完成后的客户端系统状态,根据自己需要选择,个人认为无关紧要

   Linux虚拟化之物理机到KVM的迁移(P2V)_第15张图片


14.其他的接下来基本上就是一路默认回车就可以了,等待镜像传输完成,可以在目标kvm上的/root下查看是否有之前定义的映像目录产生


四、配置映像,并生成虚拟机

1.映像生成完毕后在KVM服务器上查看生成的映像文件

cd  2014-10-16-15-img/	      \\里面会包含很多文件

cp sda-mbr /vm/win/sda.img	\\将分区表信息拷贝到要建立的虚拟机映像文件中

fdisk /vm/win/sda.img p		\\查看新文件映像分区表信息是否和物理机一致

dd if=/dev/zero of=/vm/win/sda.img bs=1 count=0 seek=300G	\\将映像文件设置为300G,不能小于物理机硬盘大小,\\seek使磁盘动态扩展,实际不会占用很大空间

2.通过virt-manager或vrit-install生成新虚拟机,并添加cdrom 通过Clonezilla的iso引导

重要:必须选中virtio,否则镜像还原后重启windows会蓝屏,因为不指定默认是IDE硬盘,但是系统本身是RAID磁盘,不是IDE硬盘模式

virt-install -n "CentOS6.5" --vcpus 2 -r 512 \									
	--virt-type kvm \																
		--disk path=/VM/win/sda.img,bus=virtio cache=writeback \		 
		--network bridge=br0,model=virtio \
		--boot network,cdrom,hd,menu=on	\										
		--graphics vnc	\
		--import

步骤与之前制作映像一样,只不过不是保存映像而是“还原映像文件到本地硬盘“

 

3.重启虚拟机验证恢复情况。查看镜像文件会发现,其文件不大。如果提示无法正常安装网卡,可以再次加载virtio-win光盘,安装网卡驱动

 

五、总结

这基本上就是所有的步骤,每个人的环境多少会有差异,根据自己的实际情况可以做修改,不过一般的环境都是通用的。 linux的迁移相对简单一些,不过不用考虑驱动的问题,这样会更简单一些。