虚拟机异构环境迁移,虚拟机异构迁移


现在是老环境的虚拟机需要往新环境迁移: 面临的问题: 1、新老环境存储不同 2、部分代码不同 3、网络环境不同 4、win2003的虚拟机老环境没有装virtio驱动,新环境用的virtio
解决方案: 现在迁移的总体方案 1、在新环境各个用户的账号下创建相同规格(或者不同规格)虚拟机,这样可以保证数据库数据是没有问题的,也不会多出垃圾数据;创建相同的卷;需要记录虚拟机uuid和卷uuid,以下称为:{new_instance_uuid}和{new_volume_uuid} 如果规格完全相同,则迁移后界面显示的规格和实际规格就没有问题 如果规格不同,则迁移后存在底层实际是老环境的规格,而界面显示是新的规格 2、将老环境虚拟机的实际资源拷贝到新环境下: 具体操作: a、获取需要迁移的虚拟机的uuid,以下称为:{old_instance_uuid},通过cinder list | grep {instance_uuid}查询到存储卷的id,以下称为{old_volume_uuid}。 b、拷贝文件/var/lib/nova/instances/{old_instance_uuid}/disk 到/var/lib/nova/instances/{new_instance_uuid}/disk ,拷贝之前记得备份,如果虚机是2003的系统,记得先安装virtio驱动,安装方法在后面。 c、拷贝文件/var/lib/nova/instances/volume-{old_volume_uuid}到新环境的计算节点下(新建目录之下,待传到rbd上后可删除) d、拷贝文件/var/lib/nova/instances/_base/{base_uuid}到新环境对应的目录 获取{base_uuid}的方法: qemu-img info disk 查看backup file路径对应的文件 3、待资源都拷贝到新环境之后,作如下替换操作: a、由于存储不同(新环境使用ceph rbd,老环境是glusterfs),首先修改拷贝过来得文件名称为volume-{new_volume_uuid};然后删除rbd中已存在的volume-{new_volume_uuid},最后重新往rbd中上传改过名称的用户存储文件volume-{new_volume_uuid}。 具体操作如下: aa:修改名称:mv volume-{old_volume_uuid} volume-{new_volume_uuid} bb:删除rbd存储数据:rbd rm volumes/volume-{new_volume_uuid} (此处需在计算节点操作,因为计算节点安装了ceph客户端) cc:上传老环境的改过名的存储文件到rbd中: qemu-img convert -f raw -O raw volume-{new_volume_uuid}  rbd:volumes/volume-{new_volume_uuid} (同样计算节点操作) 4、目前新环境使用的virtio的网卡(支持千兆),老环境没有使用,因此win2003需要安装virtio驱动才能正常使用网络,经过测试必须在disk文件中安装才能生效,因此对于需要迁移的win2003,需要一个一个去安装驱动。 安装步骤: a、将老环境的虚拟机的disk拷贝到备份目录,并同时将virtio驱动拷贝,2003的virtio驱动virtio-win-1.5.2-2003.vfd 命令如下: /usr/libexec/qemu-kvm -m 1024 -drive file=disk,index=0,boot=on -fda virtio-win-1.5.2.vfd -boot d -net nic,model=virtio -net user -nographic -vnc :90 使用vnc登陆机器,安装virtio驱动(设备管理器里更新驱动,选择软盘) 装好后拷贝到新环境对应的目录下

相关内容

    暂无相关文章