vmware迁移到openstack的一些坑

前言

主要有三个坑:

  • 一是如果原先虚拟机没有安装virtio驱动,要设置设备驱动为ide,
  • 二是cinder要配置glance_api_version的值为v2,上传的镜像需要是raw格式
  • 三是迁移前后最好保持ip和主机名不变,这样对业务的影响最小

基础信息

给我们以下文件:
anquanpingtai-win2008r2-10.100.100.110.ova

解压后得到:
anquanpingtai-win2008r2_10.100.100.110-disk1.vmdk
anquanpingtai-win2008r2_10.100.100.110-disk2.vmdk
anquanpingtai-win2008r2 10.100.100.110.mf
anquanpingtai-win2008r2 10.100.100.110.ovf

我们使用 anquanpingtai-win2008r2作为主机名,10.100.100.110

迁移步骤

1. 查看镜像大小

查看vmdk镜像的信息,镜像1和镜像2的虚拟大小分饱是是100Gb,400Gb

[root@ha01-mon02-osd01 ~]# qemu-img info anquanpingtai-win2008r2_10.100.100.110-disk1.vmdk 
image: anquanpingtai-win2008r2_110.100.100.110-disk1.vmdk
file format: vmdk
virtual size: 100G (107374182400 bytes)
disk size: 14G
cluster_size: 65536
Format specific information:
    cid: 4099282801
    parent cid: 4294967295
    create type: streamOptimized
    extents:
        [0]:
            compressed: true
            virtual size: 107374182400
            filename: anquanpingtai-win2008r2_10.100.100.110-disk1.vmdk
            cluster size: 65536
            format: 

2. 将镜像上传到openstack

虽然openstack支持vmdk格式的镜像,但是ceph只支持raw格式的虚拟磁盘,所以我们要提前convert将镜像转换成raw格式再上传,节约时间。

qemu-img convert -f  vmdk  -O raw ./anquanpingtai-win2008r2_10.100.100.110-disk1.vmdk  ./anquanpingtai_disk1

qemu-img convert  -f  vmdk  -O raw ./anquanpingtai-win2008r2_10.100.100.110-disk2.vmdk  ./anquanpingtai_disk2

 glance image-create --name anquanpingtai_disk1 --disk-format "raw"  --container-format 'bare' --progress --file ./anquanpingtai_disk1 --min-disk 100
 glance image-create --name anquanpingtai_disk2 --disk-format "raw"  --container-format 'bare' --progress --file ./anquanpingtai_disk2 --min-disk 400

因为vmware过来的镜像没有安装virtio驱动,所以我们要设置镜像的磁盘驱动为ide,网卡驱动为e1000,这样子虚拟机的性能差一些,所以如果有条件的话,最好在迁移之前把虚拟机virtio的网卡和磁盘驱动安装好

openstack image set  --property hw_disk_bus=ide  --property hw_vif_model=e1000 anquanpingtai_disk1
openstack image set  --property hw_disk_bus=ide  --property hw_vif_model=e1000 anquanpingtai_disk2

3. 以镜像为源,创建云硬盘

如果镜像的磁盘格式是raw,且cinder访问glance使用的api版本是v2,以镜像为源创建云硬盘的时候,cinder支持直接rbd clone镜像文件来复制镜像文件,创建云硬盘。否则,cinder需要把镜像下载到本地文件系统,转换成raw格式,再上传到ceph中,当镜像文件很大的时候,这个过程常常因为超时而失败。

所以我们需要修改cinder.conf服务的glance_api_version为v2,然后重启cinder-volume服务。

使用这两上一步个镜像创建云硬盘, 大小为100G和400G, id分别记作VOLUME1_ID, VOLUME2_ID

4. 创建迁移用网络

迁移前后最好保持虚拟机的ip不变,这样可以避免很多未知问题
按照科技网给出的信息,服务器的ip是10.100.100.110,所以我们需要创建一个网络10.100.100.0/24,由于我们不计划通过这个网络来访问外网,所以这个网络可以是任何类型,vlan,vxlan,flat都可以,只要里面包含这两个ip就可以,所以可以直接在界面创建,这里不再给出命令,将创建的网络id记作$MIG_NET_ID

5. 创建虚拟机

假设我们已经完成上述步骤,用以下命令创建虚拟机,并指定ip

nova boot --flavor 4 --block-device source=volume,dest=volume,id=$VOLUME1_ID ,bus=ide,bootindex=0,shutdown=preserve --nic net-id=$MIG_NET_ID,v4-fixed-ip=10.100.100.110 anquanpingtai-win2008r2

![enter description here][1]

6. 绑定云硬盘

由于ide驱动不支持热插拔,所以我们要将虚拟机关机,然后将之前创建的400G大小的硬盘2,再重新开机, 在界面上操作就可以,这里不给出命令

至此,服务器状态的恢复就完成了

7. 绑定浮动ip并连接网络

给这个虚拟机绑定一个浮动ip,然后联系网络部同事,将这个浮动ip的80端口映射到公网ip上,即可。

6. 绑定云硬盘

由于ide驱动不支持热插拔,所以我们要将虚拟机关机,然后将之前创建的400G大小的硬盘2,再重新开机, 在界面上操作就可以,这里不给出命令

至此,服务器状态的恢复就完成了

posted on 2018-04-27 16:11  张宇飞  阅读(6843)  评论(0编辑  收藏  举报