秒云容器云平台以构建云原生统一技术平台为核心目标,支持在一个平台上统一管理虚拟机与容器,构建虚拟化与容器化统一技术平台,并能充分利用云原生的功能及特性,帮助依赖基于虚拟机应用的团队逐步对应用进行容器化改造迁移。那么,如何将传统虚拟机迁移到秒云云原生统一技术平台呢?
本文将着重介绍如何将VMWare ESXi和KVM虚拟机迁移到秒云容器云平台。
以Windows 2019 Server虚拟机为例。
导出虚拟机文件
在VMWare ESXi平台上,磁盘文件默认格式为pre-allocated,后缀名为vmdk。pre-allocated格式镜像依赖2个文件“xxxx.vmdk”和“xxxx-flat.vmdk”(“xxxx.vmdk”是配置文件,“xxxx-flat.vmdk”是实际数据文件)。
对于KVM来说,虚拟机磁盘文件格式一般为qcow2,可略过下文的“转换镜像格式”步骤。
通过SSH登录到VMWare ESXi平台所在宿主机,找到虚拟机数据存放目录,虚拟机名称为win2k19-test1,目录则为:/vmfs/volumes/localstorage/win2k19-test1,将目录中的win2k19-test1.vmdk、win2k19-test1-flat.vmdk导出。
[root@node vmware]# ll
-rw------- 1 root root 214748364800 Apr 14 20:31 win2k19-test1-flat.vmdk
-rw------- 1 root root 580 Apr 14 20:31 win2k19-test1.vmdk
将vmdk文件转换为qcow2格式
一、安装qemu-img命令行
qemu-img支持在Windows和Linux上部署,也可以使用具有qemu-img的docker镜像部署在容器中。
1、本地为Windows操作系统:
- 下载qemu-img安装包至本地,下载地址:https://qemu.weilnetz.de/w64/。
- 双击setup文件安装qemu-img。
- 配置环境变量,以安装路径为“D:\Program Files\qemu”为例,在系统变量部分找到Path,并单击“编辑”。在“变量值”里,添加“D:\Program Files\qemu”,不同的变量值之间以“;”分隔。
- 验证安装成功,在“cmd”窗口输入qemu-img --help,如回显信息中出现qemu-img工具的版本信息,即表示安装成功。
2、本地为Linux操作系统
- Ubuntu、Debian系列操作系统,请执行如下命令:
- apt install qemu-img
- CentOS、Red Hat、Oracle系列操作系统,请执行如下命令:
- yum install qemu-img
- SUSE、openSUSE系列操作系统,请执行如下命令:
- zypper install qemu-img
- 执行如下命令,验证安装成功。
- qemu-img -v
如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。
3、使用docker容器化部署
- 在容器云平台上,使用具有qemu-img命令的镜像,一键部署应用。
- 验证qemu-img命令:通过容器终端进入到应用的容器中,执行如下命令,进行验证:qemu-img -v
如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。
二、转换镜像格式
将vmdk文件拷贝到具有qemu-img命令的机器上或者容器中,进入vmdk文件存放目录下,执行如下命令将系统盘vmdk文件转换为qcow2格式
qemu-img convert -p -f vmdk -O qcow2 win2k19-test1.vmdk win2k19-C.qcow2
[root@node vmware]# qemu-img convert -p -f vmdk -O qcow2 win2k19-test1.vmdk win2k19-C.qcow2
(100.00/100%)
上述命令中各参数对应的说明如下:
-p标识转换的进度条。
-f后面为源镜像格式。
-O(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标文件名称。
转换完成后,目标文件会出现在源镜像文件所在的目录下。
[root@node vmware]# ll
-rw-r--r-- 1 root root 11649024000 Apr 16 14:39 win2k19-C.qcow2
-rw------- 1 root root 214748364800 Apr 14 20:31 win2k19-test1-flat.vmdk
-rw------- 1 root root 580 Apr 14 20:31 win2k19-test1.vmdk
可以执行下面命令,查看qcow2文件详细信息
qemu-img info win2k19-C.qcow2
[root@node vmware]# qemu-img info win2k19-C.qcow2
image: win2k19-C.qcow2
file format: qcow2
virtual size: 200G (214748364800 bytes)
disk size: 11G
cluster_size: 65536
Format specific information:compat: 1.1 lazy refcounts: false
创建新的虚拟机
一、导入虚拟机镜像
将虚拟机磁盘qcow2文件win2k19-C.qcow2以虚拟机镜像的方式上传到云平台镜像仓库,上传方式有两种:前端页面上传和后端命令行上传。
1、前端页面上传
登录秒云容器云平台切换到项目视角,进入镜像管理菜单,上传镜像选择导入虚拟机镜像,选择本地qcow2文件上传。
![
图片
图片](/img/bVcY9gx)
2、后端my命令行上传
- SSH登录到秒云容器云管理节点上,将虚拟机qcow2磁盘文件拷贝到此服务器上。
后端登录平台,例如云平台访问地址为:https:// 10.221.161.10,则执行如下命令进行登录:
my login https:// 10.221.161.10 -u admin -p admin my命令行为,秒云容器云特有二进制命令行,离线安装包中带有此命令行文件 -u 用户名 -p 用户密码
上传虚拟机镜像,镜像文件为win2k19-C.qcow2,上传到云平台后的镜像仓库为win2k19,镜像标签为qcow2,则执行如下命令镜像上传:
my image load-vm win2k19-C.qcow2 win2k19: qcow2
二、创建虚拟机
1、镜像选择上传的磁盘镜像win2k19:qcow2
2、开启VNC和Spice
3、CPU、内存可自定义
qcow2已经安装了virtio驱动的虚拟机
1) 持久化系统盘,总线类型选择virtio,容量需大于等于之前虚拟机磁盘容量。
qcow2未安装了virtio驱动的虚拟机
1) 持久化系统盘,总线类型选择sata,容量需大于等于之前虚拟机磁盘容量; 2) 挂载内置virtio驱动,总线类型选择sata; 3) 增加一块临时数据盘, 总线类型选择virtio。
对于已经安装virtio驱动的qcow2镜像,虚拟正常运行后,可略过后面的步骤,直接进行迁移完整性验证即可。未安装virtio驱动的qcow2镜像可继续下面步骤,安装virtio驱动,使系统磁盘性能最佳。
虚拟机正常运行后,通过VNC登录到虚拟机中,更新虚拟机系统硬件驱动,包含磁盘驱动,驱动源选择virtio驱动。
驱动更新完成后,可在磁盘管理页面看到数据盘信息,说明virtio磁盘驱动已经成功安装。
进入虚拟机列表页面,编辑当前虚拟机,将虚拟机系统盘总线类型修改为virtio,并且删除删除临时数据盘和virtio驱动,保存并重启虚拟机。
虚拟机迁移完整性确认
虚拟机正常运行后,通过VNC登录虚拟机,查看确认虚拟机系统运行状态和应用运行情况。
至此,即可将VMWare ESX和KVM平台上的虚拟机成功迁移到秒云容器云平台上。
对于具有数据盘的虚拟机,可将数据盘导出后,使用qemu-img命令将磁盘文件转换为raw格式,并且重命名为disk.img,然后将此文件挂载到虚拟机数据盘的PVC中即可。