文章目录
- 前言
- 1. VMware vSphere 简单介绍
- 2. 导出虚拟机镜像(VMDK)
- 3. 上传镜像到 OpenStack
- VMDK 上传
- QCOW2 上传
- 4. 启动实例
- 总结
前言
随着企业对云计算的需求不断增加,越来越多的公司选择将传统的虚拟化平台迁移到开源云平台,比如 OpenStack。特别是对于那些使用 VMware vSphere 作为虚拟化解决方案的公司,考虑到 VMware vSphere 的高昂费用,许多小型企业或个人开发者希望通过迁移到 OpenStack 来降低成本,享受更灵活、可扩展的基础设施。然而,迁移过程中的挑战也不容小觑,尤其是虚拟机的迁移。
在本文中,我们将讨论如何将 VMware vSphere 上的虚拟机迁移到 OpenStack,重点介绍如何通过虚拟磁盘 VMDK
和 QCOW2
创建镜像并完成实例创建,以及如何解决迁移过程中可能遇到的一些问题。
1. VMware vSphere 简单介绍
这里简单描述一下 VMware vSphere 的优缺点。
优点:
- 有技术支持:作为商业化产品,VMware 提供专业的技术支持,企业用户可以在出现问题时获得及时的帮助。
- 成熟稳定:VMware vSphere 是市场上最成熟的虚拟化平台之一,经过多年的验证,广泛应用于各类数据中心。
- 功能强大:具备先进的虚拟化管理功能,支持高可用性、灾难恢复等,尤其是在 HCI(超融合基础架构)中,集成了计算、存储和网络资源的管理。
- 存储集成与副本机制:vSphere 提供了强大的存储功能,通过 vSAN 将存储与计算资源集成,支持虚拟机的高可用性。副本存储机制保证了虚拟机在发生故障时能够自动恢复,支持故障转移和负载均衡。
缺点:
- 高昂的费用:vSphere 的许可证费用较高,尤其是在需要多个功能模块和大规模部署时,成本会显著增加。
- 社区支持不足:尽管 VMware 提供了官方支持,但在线社区的资源相对较少,遇到问题时可能需要依赖官方支持,而解决问题的速度也未必理想。
- 灵活性较差:与开源平台相比,vSphere 的灵活性较差,尤其在自定义和扩展方面不如 OpenStack 灵活。
OpenStack 与 VMware vSphere 的对比
OpenStack 是一个开源的云计算平台,提供了类似于 VMware vSphere 的虚拟化管理能力。它允许用户在标准硬件上部署私有云,并提供计算、存储和网络服务。与 VMware vSphere 相比,OpenStack 在界面上可能略显粗糙,但它的灵活性和成本效益是其最大的优势。
- 费用:OpenStack 是免费和开源的,适合预算有限的小型企业。
- 灵活性:OpenStack 支持多种虚拟化技术(如 KVM、Xen、vSphere 等),并且可以根据企业的需要定制功能。
- 社区支持:作为开源项目,OpenStack 拥有广泛的社区支持和大量文档,解决问题的渠道相对丰富。
简单来说,如果
预算充足
,`选择 VMware vSphere 是一个非常不错的方案。它提供专业的技术支持,可以帮助快速定位和解决问题,操作界面也十分友好,用户无需过多担心底层的配置和管理,甚至存储也被集成在内,极大简化了运维工作。
但如果
预算有限
,选择 OpenStack 或者使用破解版本的 VMware vSphere,则对 IT 人员的技术要求会更高,可能需要面对更多的配置和调试工作。
- 尽管 OpenStack 是开源的,社区支持较为活跃,但其文档质量却让人感到困难,很多时候即使是官方文档也难以让初学者轻松理解。例如,最新版本的部署文档建议使用 Ubuntu 22.04 或 24.04,但由于 Python 版本过高,24.04 版本会导致一系列安装问题。总的来说,OpenStack 的文档更适合有一定基础的技术人员,初学者可能会遇到不少困惑。
- 对于 OpenStack,问题的解决方案相对容易找到,网上的资源和社区支持相对丰富。而 VMware vSphere 的问题解决则相对较为困难,尤其是在没有正式技术支持的情况下,很多解决方案需要依赖专业人员或厂商提供的帮助。
2. 导出虚拟机镜像(VMDK)
首先,需要将 VMware vSphere 中的虚拟机磁盘文件(VMDK)导出。可以通过以下步骤导出:
- 在 vSphere Client 中,选择虚拟机。
- 右键点击虚拟机,选择 “Export OVF Template” 或 “Export as OVA” 选项。
- 导出的文件包括虚拟机的所有磁盘文件(VMDK)以及虚拟机的配置文件。
导出文件包含
.mf
.ovf
.vmdk
.nvram
后缀文件,若该虚拟机挂载了个磁盘则会有xxx-1.vmdk
、xxx-2.vmdk
、xxx-3.vmdk
…
3. 上传镜像到 OpenStack
OpenStack 支持多种镜像格式文件,包含 VMDK
和 QCOW2
,以下是两种上传方式。
更推荐使用
VMDK
转QCOW2
再上传的方式。
VMDK 上传
在 OpenStack Dashboard
上 镜像
处点击 创建镜像
上传,选择 VMDK
格式并选择文件。
对应命令如下:
openstack image create "vm-image" --file /path/to/vm.vmdk --disk-format vmdk --container-format bare --public
QCOW2 上传
将要 VMDK
转为 QCOW2
文件。
sudo apt-get install qemu-utils # Ubuntu
sudo yum install qemu-img # CentOS
qemu-img convert -f vmdk -O qcow2 /path/to/vm.vmdk /path/to/vm.qcow2
在 OpenStack Dashboard
上 镜像
处点击 创建镜像
上传,选择 QCOW2
格式并选择文件。
对应命令如下:
openstack image create "vm-image" --file /path/to/vm.qcow2 --disk-format qcow2 --container-format bare --public
明明可以直接讲
VMDK
导入为镜像,为什么还要单独转QCOW2
再导入镜像,下一章节会讲。
若原虚拟机有多个硬盘
,则将第2、3…n个vmdk文件,按上方操作并上传镜像。
4. 启动实例
在 OpenStack Dashboard
上 按上面导入的进行创建实例,得出结果如下:
部署方式 | 宿主机 | 虚拟化 | 镜像格式 | 实例运行 |
---|---|---|---|---|
二进制集群部署 | 虚拟机 | qemu | VMDK | 成功 |
二进制集群部署 | 虚拟机 | qemu | QCOW2 | 成功 |
devstack单机部署 | 物理机 | kvm | VMDK | 失败 |
devstack单机部署 | 物理机 | kvm | QCOW2 | 成功 |
毕竟devstack是练习环境,不排除里面有很多功能被严格阉割了,所以最好还是使用 QCOW2 镜像。
目前现有资源就那么多,不太好测,等后面有资源了openstack-helm
部署一下再测试一下。
启动实例时,
实例配置一定要 ≥ 原来的虚拟机配置
,最关键的是硬盘
,否则将启动失败。
总结
迁移时最好预留足够的时间。毕竟,从 VMware vSphere 导出虚拟机的过程是挺耗时的,具体时间还得看磁盘的大小。而且,VMDK 转 QCOW2 格式也需要不少时间,上传镜像到 OpenStack 也是个时间消耗大户。我建议,最好先把镜像上传到 OpenStack 宿主机,再通过命令行上传到 OpenStack,这样比直接在 Dashboard 上上传要快很多
。
虽然迁移后的虚拟机已经成功启动了,但网络部分还是出了点问题
。虚拟机获取不到地址,网络不通(但虚拟机内部网口数和外部给实例配的网络接口数又是一样的),DHCP 也无法获取 IP 地址。这个问题目前还在调试中,解决后将后续继续更新博文。