一、实施说明
在虚拟化的过程中由现有物理系统到虚拟机的迁移环节必不可少,其中有很多工具和方式各有不同特色,我目前用过方式的只有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 restart3.安装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引导,制作映像
下面显示了主要的步骤,其他都要按照默认即可
3.SSH server--->
4.填写远端kvm的IP--->
5.填写要挂在的远端kvm目录
6.填写远端kvm密码
7.查看分区是否挂载
8.继续选择“专家模式”
7.选择savedisk,制作本地硬盘映像
8.键入生成映像的文件夹,默认即可
9.选择生成映像的优先顺序,即当一个程序失效的时候会自动用另外方式,默认即可
10.选择生成映像参数,如果是windows系统一定选上“-rm-win-swap-hib”,以节省空间
11.选择压缩模式,可以根据自己的带宽,存储情况选择,我选择不压缩
12.如果选择了压缩系统会自动将压缩文件分解多个包,这里选择每个包的大小,如果只想生成一个包的话,就选择一个特别大的数值
13.选择映像制作完成后的客户端系统状态,根据自己需要选择,个人认为无关紧要
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的迁移相对简单一些,不过不用考虑驱动的问题,这样会更简单一些。