Openstack Vmware虚拟机迁移到openstack
实验环境是使用vmware搭建的centos 7虚拟机,生产环境需要换到openstack上跑虚拟机。首先, 在vmware里面导出虚拟机,导出格式为ovf这其实是一个压缩文件,把这个.ovf 用解压软件tar -xvf提取出其中的 CentOS7-disk1.vmdk 文件,并把这个文件上传到openstack服务器。使用qemu-img 工具把vmdk转换为qcow2格式...
实验环境是使用vmware搭建的centos 7虚拟机,生产环境需要换到openstack上跑虚拟机。
1
首先, 在vmware里面导出虚拟机,导出格式为ovf
这其实是一个压缩文件,把这个.ovf 用解压软件tar -xvf提取出其中的 CentOS7-disk1.vmdk 文件,并把这个文件上传到openstack服务器。
- 使用qemu-img 工具把vmdk转换为qcow2格式
qemu-img convert -f vmdk CentOS7-disk1.vmdk -O qcow2 CentOS7JMH.qcow2
- 把qcow2镜像导入到openstack
openstack image create "CentOS7-fvmware" \
--file CentOS7JMH qcow2c \
--disk-format qcow2 --container-format bare \
--public
2
在dashboard里面,从刚刚上传的CentOS7JMH镜像创建实例。但是,肯定会创建失败的,不要慌。可以删除失败的实例,然后在Dashboard的 卷 中选择刚刚创建的CentOS7的卷,从这个卷 Launch as instance。
磁盘找不到的错误
如果是CentOS很容易出现:/dev/disk/by-uuid/d8366f41-f65d-4034-9aa4-ab137c5c1f7f does not exist 的错误,这种错误表现实例在dashboard的状态是running的,但是查看console有类似于下图的结果:
从错误信息来看,应该是原来从vmware的拷贝过来的启动扇区把文件系统里面的磁盘设备依然保留为原来的磁盘,而没有主动更新。那个找不到的设备其实是原来vmware虚拟机的硬盘,现在已经从openstack的volume启动了,那么应该是寻找openstack的volume而不是原来的硬盘,于是我只要想办法把整个引导区中的设备修改好就可以了。
解决方法:
- 点击 控制的右上角的那个 SendAltCtrl ,多点击几次目的是重启Centos。
- 在Centos启动到Grub的时候,选择从第二项 CentOS rescue 启动,此时发现可以正常启动centos,也可以ping通。
- 安全模式启动后,使用ssh登录到虚拟机,此时是可以登录的.
- 检查一下,openstack的那个vda1硬盘有没有mount到/boot目录,mount /dev/vda1 /boot
- 创建引导区:
sudo dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
然后重启就可以了。
参考:https://ask.openstack.org/en/question/101733/error-when-booting-instance-created-from-vmdk-file/
4
实测发现,Ubuntu的迁移没有Centos的磁盘找不到之类的狗屁错误。
5
如果启动失败,可以查两个地方的日志:
实例启动日志:
sudo journalctl -a -u devstack@n-cpu.service | grep ERROR
volume创建日志:
sudo journalctl -a -u devstack@c-vol.service | grep ERROR
更多推荐
所有评论(0)