p2v

基于KVM,实现P2V的简单实践

楼主
发表于 19小时前 | 查看: 17 |回复: 3 | 只看楼主
<div overflow:hidden;"="" style="word-wrap: break-word; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; position: relative; ">
对于一些比较老的业务,可能对资源的需求度不是很高,但却独占了一个物理设备,这是需要将老的旧的服务迁移到虚拟机中,下面提供一个简单的方法,希望对大家有所帮助,如果有问题,请及时与我联系
需要迁移的旧服务器IP:     192.168.100.1
迁移后的KVM-HOST IP: 192.168.100.2
对于虚拟机来说最重要的东西莫过于虚拟机的磁盘文件,所以在做P2V的过程中,主要的任务就是如何将虚拟机的磁盘文件远程copy到KVM-HOST。
实施方法1(推荐):
比如我们要迁移到KVM―HOST服务器上的/migrate/target/的目录下作为虚拟机的目录
直接在原服务器上执行:
dd if=/dev/sda | ssh [email protected] dd of=/migrate/target/data.img
如果有第二块磁盘,可以使用同样的办法去完成远程复制,(注:由于命令不能保证虚拟机镜像的完整性,所以要保持网络的畅通,和关注下远程copy的状态)
有了虚拟机的磁盘文件,就可以直接写xml文件,部署虚拟机的配置信息,然后启动虚拟机即可。
启动虚拟机后,如果业务需要实时的话,可以在原服务器和现在的虚拟机之间做一次Rsync同步,然后做一个Keepalived,停到原服务器的服务,让服务迁移到当前虚拟机中
如果服务可以停机,则在进行一次同步后,即可让原服务器停机,将服务迁移到虚拟机中。
不过推荐的方式还是做一个动态的切换,保持两个机器同时工作一段时间,再将原服务器回收处理。
实施方法2:
我们可以使用带有LiveCD的光盘在KVM-HOST中创建一个虚拟机,进入livecd模式,对虚拟机进行分区,格式化,磁盘挂载,使用rsync服务将数据拷贝过来(注:一定不要复制proc,sys,dev等这些虚拟文件系统下的问文件),然后使用引导工具对磁盘写引导,重启虚拟机即可完成迁移,之后就是部署ip和服务等工作。。。
实施方法3:
当然KVM-P2V,官方会提供相应的工具,其实就是一个RHEL的p2v的livecd,重启进入到livecd模式,会让你指定ip的地址,保证与KVM-host的通讯能力,将本地的磁盘复制到远程KVM-host上作为一个虚拟磁盘文件(不过,我在之前测试的时候,老是遇到一些bug,ip地址无法分配,网络不通,网关不通等问题)
下面对LiveCD的使用做简单介绍:
1)欢迎界面

图片
配置IP地址,但是可能是iso镜像存在bug,ip地址的配置老是无法手动指定,所以需要搭建一个dhcp服务器,搭建过程在此不再介绍。

图片
3)添加需要承载新虚拟机的KVM-HOST,默认的端口是22,如果ssh的端口被修改,可以尝试做本地的ssh转发。
ssh -CNfg -p your_prot -L 22:xxx.xxx.xxx.xxx:your_port [email protected]
除此还需要配置v2v的服务器,对没错是v2v,因为livecd启动以后,原服务器上的系统被逻辑成一个虚拟机。
配置文件在/etc/virt-v2v.conf
<virt-v2v>
 <profile name="libvirt">
   <method>libvirt</method>
   <storage>p2v</storage>
   <network type="default">
     <network type="network" name="default"/>
   </network>
 </profile>
</virt-v2v>

p2v这个存储池是用来存放虚拟机的,可以自己定制下,比如要存放虚拟机的位置是/vm/vmA/下,则可以创建一个指定该目录的池
<pool type='dir'>
 <name>p2v</name>
 <target>
   <path>/vm/vmA</path>
   <permissions>
     <mode>0755</mode>
     <owner>-1</owner>
     <group>-1</group>
   </permissions>
 </target>
</pool>
创建好存储池和virt-v2v.conf 就可以准备迁移了。

图片
4)迁移
在描述里选择libvirt,可以有多个,在virt-v2v.conf设定。

图片
可以根据自己的数据,选择迁移的对象,包括光驱,硬盘,和是否保留网卡。

三种方法的总结与分析:
总的来说,三种方法的大体思路是一致的,只要了解思路,可以衍生出来更多更适合自己业务的方法去迁移就的服务,不过针对于windows的机器,我目前知道的也只有用借助第3种livecd的方式去迁移了。


你可能感兴趣的:(P2V)