使用 VDDK 直接提取功能,将数据迁移至 IBM Cloud 虚拟服务器 vCenter
使用 VDDK 直接提取功能配合 virt-v2v,将 VMware 上的虚拟机从 vCenter 迁移至 IBM Cloud VPC 上的虚拟服务器,并自动完成磁盘转换。
架构组件
下表描述了 VDDK 直接提取迁移的架构组件。
| 架构组件 | 描述 |
|---|---|
| VMware 虚拟磁盘开发工具包(VDDK) | VMware 的 API 库,用于访问虚拟磁盘。 您可以从 VMware 开发人员门户网站下载。 |
| 支持 VDDK 的 libguestfs | 使用 nbdkit VDDK 插件构建的 virt-v2v 工具。 这需要 Red Hat Enterprise Linux (RHEL)( Ubuntu 的构建版本不包含VDDK支持)。 |
| 工人虚拟服务器实例 | 基于 RHEL 的实例,已安装 libguestfs-tools 和 VDDK。 |
| vCenter 访问 | 从工人虚拟服务器实例到 vCenter 和 vSphere 主机的网络连接,以及允许虚拟机磁盘访问的凭证。 |
VDDK 直接提取迁移过程概述
以下步骤介绍了使用 VDDK 直接提取进行迁移的过程。
-
部署 RHEL( Red Hat Enterprise Linux )工作节点虚拟服务器实例
- RHEL 8 或 9 实例
- 安装 libguestfs-tools:
dnf install libguestfs-tools - 网络连接到 vCenter
-
安装 VMware VDDK
- 从 VMware 开发人员门户网站下载(需要 VMware 账户)
- 解压到工作节点虚拟服务器实例上的某个目录(例如,
/opt/vmware-vix-disklib-distrib)
-
收集 vCenter 信息
- vCenter 主机名/IP
- vCenter 凭据(domain\user 格式)
- 目标虚拟机名称
- 虚拟机正在运行的 ESXi 主机(通过 vCenter 发现 )
- vCenter 证书缩略图:
openssl s_client -connect vcenter.example.com:443 </dev/null 2>/dev/null | \ openssl x509 -fingerprint -noout -in /dev/stdin | \ cut -d= -f2 -
创建目标卷
- 使用短暂虚拟服务器实例方法(方法 2 步骤 2-4)
- 连接到工作节点虚拟服务器实例
-
配置 /etc/hosts (经常需要)
- 如果 DNS 无法正确解析,请添加 vCenter 和 ESXi 主机
- VDDK 在主机名解析方面可能比较棘手
-
使用 VDDK 执行 virt-v2v
- 创建密码文件
echo 'YourPasswordHere' > /tmp/vcenter-passwd chmod 600 /tmp/vcenter-passwd- 运行 virt-v2v
virt-v2v \ -ic 'vpx://vsphere.local\%5cAdministrator\@vcenter.example.com/Datacenter/Cluster/esxi-host.example.com?no_verify=1' \ 'VM-Name' \ -ip /tmp/vcenter-passwd \ -o disk \ -os /tmp \ -it vddk \ -io vddk-libdir=/opt/vmware-vix-disklib-distrib \ -io vddk-thumbprint=A2:41:6A:FA:81:CA:4B:06:AE:EB:C4:1B:0F:FE:23:22:D0:E8:89:02 \ --block-driver virtio-scsi参数: -
-ic:输入连接字符串 (vpx:// 用于 vCenter ) -\%5c是 URL domain\user 中的反斜杠编码 -?no_verify=1跳过 SSL 证书验证 -'VM-Name':中虚拟机的确切名称 vCenter --ip:密码文件路径 --o disk -os /tmp:输出到目录 /tmp --it vddk:输入传输 VDDK --io vddk-libdir:VDDK 安装路径 --io vddk-thumbprint:vCenter 证书缩略图 ---block-driver virtio-scsi:用于 Windows 虚拟机(第一个磁盘需要 SCSI 驱动程序) -
使用 Symlink 技巧直接连接设备
通常,virt-v2v 会写入目录中的文件。 直接写入块设备:
# virt-v2v will create file named VM-Name-sda ln -fs /dev/vdb /tmp/VM-Name-sda # Run virt-v2v, it writes to symlink which points to device virt-v2v ... (same command as above) -
从卷创建虚拟服务器实例
- 与方法 2/3 相同:从 Worker 中分离,从现有卷创建虚拟服务器实例
设计优势
下表列出了 VDDK 直接提取迁移的设计优势。
| 设计优势 | 描述 |
|---|---|
| 单条命令迁移 | 只需调用一次 virt-v2v,就能完成所有工作--从 vCenter, 提取、转换格式、注入驱动程序、写入目的地。 |
| 无导出步骤 | 与实时网络传输迁移类似,消除了导出开销。 |
| 易于自动化 | 一旦投入使用,可轻松编写脚本进行大规模迁移。 |
| 综合转型 | 驱动程序注入和操作系统准备都是自动进行的。 |
设计约束与限制
下表列出了 VDDK 直接提取迁移的约束和限制。
| 限制或约束 | 描述 |
|---|---|
| vCenter 仅 | 无法使用 VCFaaS (无法访问 vCenter API)。 |
| RHEL/ Ubuntu 工具的不足之处 |
关键挑战
您必须选择其中之一:
或
|
| 复杂的先决条件 | 需要安装 VDDK、vCenter API 访问权限、证书缩略图和精确的连接字符串。 比其他方法设置更多。 |
| 网络要求 | 工人虚拟服务器实例必须直接到达 vCenter 和 ESXi 主机。 可能需要添加额外的防火墙规则。 |
VDDK Direct Extraction 迁移功能强大,适用于大规模 vCenter 迁移,在许多虚拟机上,对设置和工具构建的前期投资都会得到回报。 不建议用于小型迁移或 VCFaaS 环境。 如果您选择这种方法,请为工具设置和测试做好时间预算。