CVM 实例导出到 VMWARE

2022-12-05 20:17:15 浏览数 (4)

一、准备工作

准备工作 1:禁用 Cloud-init 相关服务

通过 Service 管理服务,禁用方法如下

1. 查看 Cloud-init 相关服务

代码语言:javascript复制
chkconfig | grep "cloud"

显示如下

如 centos6.7 这样的老系统,是使用 service 管理服务的。而较新版本的系统,很多采用 systemctl 管理服务。

如果执行时有如下提示,可以使用往下看 systemctl 对应的方法。

代码语言:javascript复制
chkconfig: command not found

2. 禁用服务,需管理员权限

代码语言:javascript复制
chkconfig cloud-config off
chkconfig cloud-final off
chkconfig cloud-init off
chkconfig cloud-init-local off

3. 在做完快照或镜像后,再把服务启用。如果服务没有启用,修改密码、网络变配等能力无法生效。

代码语言:javascript复制
chkconfig cloud-config on
chkconfig cloud-final on
chkconfig cloud-init on 
chkconfig cloud-init-local on

通过 systemctl 管理服务,禁用方法如下

1. 查看 cloud 服务

代码语言:javascript复制
systemctl list-unit-files | grep "cloud"

如 centos6.7 这样的老系统是使用 service 管理服务。

如果执行时有如下提示,可以翻到前面查看使用 service 禁用服务的方法

代码语言:javascript复制
-bash: systemctl: command not found

2. 禁用服务,需管理员权限

代码语言:javascript复制
systemctl disable cloud-config cloud-final cloud-init cloud-init-local 

3. 在做完快照或镜像后,再把服务启用。如果服务没有启用,修改密码、网络变配等能力无法生效。

代码语言:javascript复制
systemctl enable cloud-config cloud-final cloud-init cloud-init-local 

准备工作 2:修改系统配置

修改 fstab 配置

查看 fstab 配置

代码语言:javascript复制
cat /etc/fstab

如果用 UUID 的配置,则不用修改,可以往下看网络配置的部分。

否则就需要修改为如下样式,UUID可以用 lsblk -f 查看。

修改网络配置

centos:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,删除或者注释掉HWADDR一行

准备工作 3:配置磁盘驱动

检查驱动

用如下命令检查驱动,如果检查结果是 y 则不用再处理,可以到准备工作 4。

代码语言:javascript复制
grep -e CONFIG_BLK_DEV_SD -e CONFIG_FUSION_SPI /boot/config-`uname -r`

如果结果是 m 则可能需要手工配置。

再用下面命令进一步检查

代码语言:javascript复制
# Centos 或 RadHat 用如下命令
lsinitrd | grep -e sd_mod -e mptspi 

# ubuntu 用如下命令
 lsinitramfs /boot/initrd.img-$(uname -r) | grep -e sd_mod -e mptspi

如果两个驱动都包含就没问题

如果没有或者只有一个,则需要进一步配置驱动

代码语言:javascript复制
# Centos 或 RadHat 用如下命令
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
mkinitrd -f --allow-missing --with=sd_mod --with=crc_t10dif --with=mptspi --with=mptscsih --with=mptbase --with=scsi_transport_spi /boot/initramfs-$(uname -r).img $(uname -r)

# ubuntu 用如下命令
mv /boot/initrd.img-$(uname -r) /boot/initrd.img-$(uname -r).bak
echo -e 'sd_modnmptspi' >> /etc/initramfs-tools/modules
mkinitramfs -o /boot/initrd.img-$(uname -r)

准备工作 4:准备对象存储空间

创建对象存储空间

  1. 开通对象存储服务。
  2. 创建存储桶,与要导出镜像是同一账号,并且与导出镜像的环境在同一个可用区。

二、导出镜像

导出步骤 1:CVM 实例生成镜像

CDC 环境生成自定义镜像

  1. 腾讯云控制台,云服务器模块中,找到云硬盘菜单。
  2. 找到要导出的虚拟机对应的云硬盘,创建快照。
  3. 快照=》快照列表 这个页面下查看快照进度。
  4. 快照创建好,在列表右侧更多菜单中选择创建自定义镜像。(创建好快照后,记得把 Cloud-init 服务重新启用)
  5. 镜像 菜单中查看镜像进度。

公有云环境生成自定义镜像

  1. 腾讯云控制台,服务器云模块中,找到实例菜单。
  2. 在虚拟机列表中找到要导出的虚拟机,在右侧的更多中,找到【制作镜像】这个功能。
  3. 把虚拟机做成自定义镜像。制作完成后,在镜像菜单,自定义镜像中可以看到。(创建好镜像后,记得把 Cloud-init 服务重新启用)

导出步骤 2:导出自定义镜像

导出镜像

  1. 腾讯云控制台,服务器云模块中,找到镜像菜单,自定义镜像页。
  2. 在导出的镜像右侧选择【导出镜像】这个功能。
  3. 设置存储桶(页面中显示为 COS Bucket)和导出文件的前缀名字。(如果没有合适的存储桶,请检查同一账号、同一可用区是否已经创建了存储桶,参考 准备工作 2。)
  4. 导出成功后,在对象存储中可以看到这个文件。

下载镜像

在存储桶中查看导出的镜像文件。如果之前已经设置过公有读私有写,可以使用文件地址直接下载。如果是私有读写,那就只能通过文件列表右侧的下载按钮进行下载。

自定义镜像导出文件比较大,建议通过下载工具下载。


三、导入镜像

导入步骤 1:转换镜像格式

RAW to VMDK

  1. 安装 qemu-img,地址(https://www.qemu.org/download/#source)。根据操作系统不同,这里有 windows、linux、mac 对应的版本。
  2. 转换镜像

windows执行:

代码语言:javascript复制
"C:Program Filesqemuqemu-img" convert -f raw -O vmdk centos7.9-export.raw centos7.9-export-tcloud.vmdk

mac 执行

代码语言:javascript复制
qemu-img convert -f raw -O vmdk centos7.9-export.raw centos7.9-export-tcloud.vmdk

注:

  • "C:Program Filesqemuqemu-img"为windows 下 qemu 程序的安装地址
  • -f raw,表示原文件是 raw 格式
  • -O vmdk,表示要转换成 vmdk 格式,其中-O 是大写字母 O不是数字 0。

普通 VMDK to ESXi 的 VMDK

通过 qemu-imq 转换的 VMDK,在 vmware workstation 中已经可以使用。但是在 vmware ESXi 中无法使用,需要再转换一次。

1. 打开 esxi 的 ssh 和 shell 服务。

2. vmdk 文件导入到 esxi 的存储中。

3. 远程到 exsi 上,找到导入的 vmdk 文件,使用 vmkfstools 转换 vmdk 格式。

代码语言:javascript复制
vmkfstools -i 不兼容原文件.vmdk 转换后的新文件名.vmdk

导入步骤 2:创建虚拟机

vmware Playstation 新建虚拟机

  1. 新建虚拟机,选择“自定义(高级)”。
  2. 操作系统那一步选择“稍后安装操作系统”。
  3. 【关键】选择磁盘那一步,选择“使用现有虚拟磁盘”。
  4. 选择刚才用 raw 转换的 vmdk 文件,生成虚拟机即可。

vmware esxi 新建虚拟机

  1. 新建虚拟机,默认的硬盘删掉,再选择“添加硬盘”,选项中选择“现有硬盘”,选择刚才通过 vmkfstools 转换的 vmdk 文件。
  2. SCSI 控制器选择 LSI Logic Parallel 。其他两个控制器的话,硬盘无法识别。
  3. 其他选项正常选择即可。

四、其他说明

哪些地方可以加速

下载镜像加速

导出的镜像是RAW格式,文件大小受虚拟机的硬盘大小决定,实际数据可能很小。例如云硬盘是50GB,而实际只占用了不到10GB,那么剩下的40GB就是无效的下载数据。这不仅会让下载时间长,而且会产生无效的下载流量费用。

可以在腾讯云内申请一个普通配置的windows虚拟机,装上qemu。把导出的镜像下载到这台虚拟机上转换为vmdk再下载。一方面腾讯云的虚拟机与对象存储之间属于内网连接,下载速度快、无下载流量费用。另一方面转换后的文件小很多,再下载到vmware所在环境时,时间会短很多。

1 人点赞