w2ewe 发表于 2014-10-20 08:32:15

Linux虚拟化之物理机到KVM的迁移(P2V)

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

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

本例服务器信息如下:
         server1:   IP:172.16.1.11    Windows2008【需要迁移的物理机】
         server2:   IP:172.16.1.10   linuxdhcp+tftp 【运行KVM的目标机器】

二、配置Clonezilla
有两种方式运行clonezilla,可以下载ISO刻录成CD通过光盘引导,还可以下载zip包进通过PXE进行安装,这里讲PXE引导方式,比较网络还是要更快,适应性更强
1.下载Clonezilla:
在www.clonezilla.org下载最新版的zip包

2.配置DHCP的 PXE引导
?

1
2
3
4
5
6
7
8
9
10
11
#vim /etc/dhcp/dhcpd.conf

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

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

#service dhcpd restart




3.安装TFTP服务
?

1
2
3
4
yum -y install xinetd tftp-server tftp
chkconfig xinetd on
chkconfig tftp on
service xinetd start4.配置PXE引导 【clonezilla官网有相关配置文档】




?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 configunion=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引导,制作映像
下面显示了主要的步骤,其他都要按照默认即可

[*]StartClone --->

[*]device-image-->

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服务器上查看生成的映像文件
?

1
2
3
4
5
6
7
cd2014-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硬盘模式
?

1
2
3
4
5
6
7
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的迁移相对简单一些,不过不用考虑驱动的问题,这样会更简单一些。


42ewe 发表于 2014-10-21 17:51:41

支持一下

许溢 发表于 2014-11-28 14:47:38

楼主,这个备份镜像还原后,还能保持原raid的数据么?另外你是raid几?{:6_388:}
页: [1]
查看完整版本: Linux虚拟化之物理机到KVM的迁移(P2V)