提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
公司想在本地搭建搭建一套用于学习、测试的环境,为了节省搭建的工作量,直接从华为云虚拟机上迁移到本地。尝试了直接将vmdk镜像文件导出直接在vmware station上使用,无法正常进入系统,网上看了一圈大佬们的经验帖,相关内容少之又少,经过一顿折腾后终于成功了,在此记录一下。
无法进入系统就会一直卡在这个画面,如下图:
一、迁移前准备
1.1 前提条件
已开通并购买了同区域的对象存储obs ,用于存储导出的镜像文件;
本地有安装qemu-img-hw ,镜像转换格式 ;
华为云虚拟机有绑定公网地址 ,用于传输数据盘数据;
1.2 迁移流程
1、导出虚拟机系统盘镜像到本地。
2、转换镜像格式,由zvhd2格式转为vmdk格式。
3、VMware station 创建虚拟机选择该vmdk文件。
4、通过互联网将华为云虚拟机数据盘文件传输到VMware station的虚拟机。
二、华为云部分
2.1.创建系统盘镜像
整机镜像、数据盘镜像不支持导出,选择系统盘镜像导出。
2.2.导出镜像
选择“快速导出”
名称任意
存储路径选择对象存储桶的路径
选择“下载”,下载到本地
2.3.镜像格式转换
使用华为云官方的转换软件qemu-img-hw,对 zvhd2格式的镜像文件转换为 vmdk格式。
我这里是使用将格式文件放到Linux的qemu-img-hw进行格式转换
./qemu-img-hw convert -p -O vmdk xxxx.zvhd2 xxxx.vmdk
vmdk为vmware station兼容格式。转换后将vmdk文件放到本地目录。
Qemu-img-hw的下载安装使用可参考华为云产品文档:
https://support.huaweicloud.com/bestpractice-ims/ims_bp_0052.html
3.VMware部分
3.1.创建自定义虚拟机
兼容性 Workstation 17.x
稍后安装操作系统
操作系统选择linux 、 cenos8 64位
命名虚拟机名称、存储位置
选择CPU数量、内存,尽量选择与华为云一致配置
网络类型选择,我这里选择NAT,可根据实际情况选择
SCSI控制器类型选默认
虚拟磁盘类型选择IDE ,这里必须选择IDE其他格式经过测试,会导致无法进入系统等问题
磁盘选择“使用现有虚拟磁盘”
选择导出的vmdk格式的镜像文件
选择“保持现有格式”
选择“完成”
开机;
能看到进入操作系统,系统盘镜像部分迁移完成。
4.数据迁移
4.1.创建数据盘
磁盘类型默认
创建新虚拟磁盘
磁盘大小看实际情况需求
4.2.挂载硬盘
以下为简略步骤,详细自行查找帖子即可
初始化硬盘
fdisk /dev/xxxx
输入n 新建分区;
然后输入p,新建主分区;
之后一直按enter键;
最后输入w 保存。
格式化逻辑盘
mkfs.xfs /dev/xxxx
挂载硬盘到/data目录
mount /dev/xxxx /data
4.3.确保源目的安装rsync
源目虚拟机都安装一下
yum install rsync -y
4.4.配置ssh免登陆
vmware虚拟机执行
ssh-keygen
将密钥发送给源虚拟机
ssh-copy-id -i ~/.ssh/id_rsa.pub root@华为云虚拟机公网IP
这里华为云虚拟机已经绑定了公网地址且ssh默认使用22端口,安全组、防火墙都放通到本地网络。
4.5.rysnc传输数据
在VMware虚拟机上使用rsync传输数据盘的数据,后台执行命令如下:
nohup rsync -a -v -h --info=progress2 --partial --append-verify --no-inc-recursive --bwlimit=5300 root@华为云虚拟机公网IP:/data/ /data > nohup.log 2>&1 &
查看传输进度
tail -f nohup.log
rsync 参数
– delete 进行无差异同步
-v, --verbose — 显示传输数据过程信息
-z, --compress — 将传输数据进行压缩
-a, --archive — 归档参数 -rtopgDl (不包括参数 -L)
-r, --recursive — 递归传输数据
-t, --times — 保持文件修改时间不变
-o, --owner — 保持文件属主信息不变(在配置文件中uid设置为root用户)
-g, --group — 保持文件属组信息不变(在配置文件中gid设置为root用户)
-p, --perms — 保持文件权限不变
-D — 保持设置文件信息不变
-l, --links — 只传输链接文件,不会传输源文件中的内容 (bug)
-L, — 只传输链接文件,会传输源文件中的内容
-P, --progress — 显示数据传输的进度信息(查看传输进度)
– exclude —排除某个东西不传输
– --bwlimit ----限制速度传输
等待文件传输完毕,数据盘部分完成迁移。
总结
首先得是zvhd2格式文件导出后再进行转换vmdk格式,其次就是虚拟磁盘类型必须选择IDE 。另外一点,华为公有云虚拟机镜像导出,只能导出系统盘镜像的文件,且非windows系统。剩下的数据盘可以通过互联网sftp或者rsync来传输(受到云上带宽及本地带宽限制),所以数据量大的话,迁移还是需要花费点时间的。