背景
客户要将业务从自建的虚拟化数据中心迁移至UCloud,希望能够将多年前的VMware体系换到公有云体系。其中:
- 客户希望上云过程不影响到现有业务;
- 去除机房托管的过保设备,减少不必要的支出;
- 减少资源的维护人力和运维压力;
另外,希望迁移过程不要太长,不要影响市场推广等工作及业务创新。
一、迁移评估
经过可行性分析,至少存在以下挑战:
- 客户的操作系统类型较多且版本老旧,其中大多是windows Server版本。
- 业务系统无法重建,原因是软件没有部署指导文档及源码,或找不到可以重新部署的人员。
- 数据迁移量较大,其中数据库及备份数据较大。
- 客户使用的商业软件版本过老、未购买授权等原因,导致客户无法或不想重建业务系统,例如购买的第三方商业版全套系统软件,如SAP、ERP等。
基于以上原因,无法使用现成的工具,因为迁移工具对主流操作系统(CentOS、Ubuntu)支持较好,但是比较老的系统,由于新的硬件驱动缺乏厂商支持原因,导致无法使用。
因此,只能通过镜像方式迁移。
二、迁移方案
基于上,整体迁移思路,基本是2个方向:
- 公网传输
前置条件是:
- 公网带宽足够大,且不影响现有生产业务;
- 数据敏感性不高,允许公网传输;
- 数据量不太大,最好不超过10T级;
2、线下磁盘拷贝
对于数据量太大、公网带宽不够大、因安全因素不方便公网传输等,是公网在线传输做不到的,可以体现线下磁盘拷贝的优势。
这里使用U闪盘(可以理解为aws的snowball、阿里的闪电立方)来做镜像的传输。主要有以下优势:
- 数据安全性高、空间大: 做了raid5的大容量空间,对于数据的安全性有保障。
- 传输速度快: 接口支持USB3.0,速度最大支持500MB/s,存储介质读写速度在150MB/s左右。
- 可挂载物理服务器: 托管区物理机与公有云区内网互通,且与公有云US3服务内网连通,如需将大量机房外的数据拷贝到机房内,可通过这种方式进行数据传输。
为了简化步骤,减少中间态等待时间,且为了缩短单个迁移过程时间,采用异步操作,减少同步操作带来的等待时间。
在此例中,由于数据太大,为加快迁移速度,因此选择了方案2,线下磁盘迁移方式。
三、迁移详情
迁移流程图如下:
首先需要:
- 关闭Guest系统的Windows组策略;
- 卸载Guest系统的VMWARE-Tool工具;
- 关闭防病毒软件;
- 关闭虚拟机。
上述流程中需提前创建物理云服务器,通过U闪盘进行系统盘和数据盘镜像的传输,将存储好数据的U闪盘挂载到物理云服务器,同时在物理云主机内完成系统盘镜像的格式转换和驱动的注入过程。
在物理云主机内通过内部API,创建临时中转机器,并创建具有系统盘属性的云盘,把挂载的U闪盘当作本地盘,通过qemu-nbd,将U闪盘的系统盘和数据盘分别远程挂载到创建的中转机的两块云盘上(系统盘与数据盘)。
将临时创建的中转机绑定的两块云盘卸载下来,通过系统盘创建云主机(该过程需要内部API来实现),将另一块磁盘当作数据盘挂载,完成对云主机系统盘数据盘的迁移。
3.1IDC中VMware环境准备
1.vSphere客户端连接vCenter服务器
安装vsphere客户端,远程连接到IDC中VMware的管理节点vCenter,其将对应克隆出的镜像传输到U闪盘中保存。
2.导出镜像
对于关机离线的系统,可以直接导出OVF或者VMDK格式的镜像;对于未能离线导出的系统,可进行镜像克隆,克隆后的格式为VMDK。
3.2中转服务器环境准备
①安装KVM虚拟化环境
安装CentOS 7操作系统,并确保支持开启硬件虚拟化功能;确保磁盘空间不少于迁移数据量。安装KVM虚拟化,执行命令如下:
代码语言:javascript复制# yum install qemu-kvm qemu-key-tools libvirt qemu-img
# yum install virt-*
# modprobe kvm
# modprobe kvm_intel
# systemctl start libvirtd
# systemctl enable libvirtd.service
②安装virt-v2v
考虑到兼容云服务商的兼容性问题(例如IO及网络的加速,系统的高内核版本),针对老旧的系统,如:Windows 2000,Windows Server 2003,Windows Server 2008等,需要用virt-v2v转换。
对于IO加速,通过virt-v2v自动注入VirtIO驱动来解决,可以把虚拟机从一个虚拟平台导入到另外一个虚拟平台,使用 virt-v2v 命令将其它虚拟机监控程序(hypervisor)上运行的虚拟机进行转换,从而可以在 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 上运行。当前,virt-v2v 可以转换在 Xen、KVM 和 VMware ESX / ESX(i) 上运行的 Red Hat Enterprise Linux 虚拟机和 Windows 虚拟机。在需要的情况下,virt-v2v 会在被转换的虚拟机上启用准虚拟化(VirtIO)驱动。
virt-v2v将外部的虚拟化平台上的虚拟机转化到可以运行的KVM平台上。它可以读取运行在VMware、Xen、Hyper-V和其他虚拟机管理程序上的Windows和Linux的虚拟机,并将其转换为KVM的libvirt,OpenStack,oVirt,红帽虚拟化(RHV)等几种方式。
代码语言:javascript复制# yum install virt-v2v
③宿主机上安装VirtIO驱动
Virtio驱动程序是KVM虚拟机的半虚拟化设备驱动程序,半虚拟化驱动程序可提高机器性能,减少I / O延迟并将吞吐量提高到接近裸机水平。安装Windows的VirtIO驱动如下:
代码语言:javascript复制# yum install libguestfs-winsupport libguestfs-tools
# wget https://fedorapeople.org/groups/virt/VirtIO-win/VirtIO-win.repo
-O /etc/yum.repos.d/VirtIO-win.repo
# yum install VirtIO-win
④安装ntfs-3g,用于挂载U闪盘
NTFS-3G支持在Linux, FreeBSD, Mac OS X, NetBSD, Haiku等操作系统下读写NTFS格式的分区。除了完全的文件属主和访问权限,它支持所有符合POSIX标准的磁盘操作。目的是为那些用户需要与NTFS可靠互通的硬件平台和操作系统提供可信任的、功能丰富的高性能方案。
代码语言:javascript复制# yum install epel-release
# yum install ntfs*
⑤编译安装NDB
安装NBD可被用来进行远程存储和备份,NBD的驱动程序在本地客户端模拟了一个块设备,比如一个磁盘或者是一块磁盘分区,但实际提供物理支持的却是通过网络连接的远程服务器。
3.3镜像格式转换与VirtIO驱动注入
转换磁盘文件并注入VirtIO驱动程序,执行命令如下:
代码语言:javascript复制# export LIBGUESTFS_BACKEND=direct
# virt-v2v -i vmx server2003.vmx -of qcow2 -o qemu -os ./
// 注:执行命令virt-v2v -i vmx “vmx文件名” –of qcow2 –o qemu –os “转换后磁盘文件存放路径”,默认是把系统盘与数据盘都进行转换,为了节省转换时间,可以修改vmx文件只进行系统盘的转换。
3.4通过API创建中转系统盘及数据盘
通过API创建新的云盘,作为用来开启云主机的系统盘,以及用来导入数据的数据盘( 其中系统属性的磁盘为内部API )。新创建的两块云盘均为临时中转盘,用来存储导入镜像的系统以及数据。
具体的API可参考:https:// github.com/ucloud
3.5远程挂载云盘与磁盘拷贝
为减少迁移耗时的流程,将U闪盘的系统盘和数据盘以网络的形式直接挂载到新创建的VM上,然后将U闪盘内的数据与临时中转机创建的云盘实现内网的磁盘数据拷贝。鉴于磁盘IO和网络带宽的限制,上述方案可省去公网传输和对象存储存储镜像的中转过程。
具体过程如下:使用qemu-nbd的远程磁盘挂载,将U闪盘的数据盘,直接挂载到云盘上。然后将云盘卸载,挂载到对应的客户机器上去。
①在物理云服务器上将U闪盘的磁盘镜像挂载到nbd的特定端口
代码语言:javascript复制# qemu-nbd -r -t -v -f qcow2 -p 5000 web-sdc.qcow2
// 注:5000为端口号,web-sdc为数据盘镜像。
②在中转机上安装qemu-img,将远程的数据盘镜像挂载到新创建的云硬盘。
代码语言:javascript复制# qemu-img convert nbd://10.23.xx.xx:5000 /dev/vdc
// 注:10.23.xx.xx为物理服务器内网IP地址,/dev/vdc为新创建的云盘。
3.6创建云主机并挂载数据盘
对于已经同步过数据的系统盘与数据盘,通过API对系统盘进行云主机的创建;对于云数据盘,需要先将中转机上的云盘进行卸载,然后挂载到需要开启的目标云主机上,从而达到云主机的创建与数据盘的挂载功能。UCloud有自动化的脚本及程序来实现以上过程。
四、经验
通过本次迁移,确认可以支持和限制因素如下,供参考。
4.1支持
对于VMware,此迁移支持以下环境:
- 支持vSphere、ESXI。
- 支持系统盘和数据盘迁移。
- 支持操作系统RHEL 3-7,Centos 3-7,Ubuntu 10.04,12.04,14.04,16.04以上,Windows XP-Windows 10/ Windows Server2016。
4.2限制
- VMWARE Workstation创建的主机迁移存在失败风险。
- Windows 7 和Windows Server 2008 R2需要开启支持SHA-2证书。
- 需要关闭操作系统迁移,不支持在线热迁。
- 需要卸载防病毒软件。
- 需要卸载虚拟化平台工具。