zl程序教程

您现在的位置是:首页 >  工具

当前栏目

VMWARE 虚拟机导入腾讯云-ubuntu 篇

2023-06-13 09:13:52 时间

范围

本次测试覆盖 ubuntu 14、16、18、20 版本

准备

  • 账号切换到 管理员权限,包括使用 root 账号。
  • 开通对象存储服务,创建存储桶。存储桶所在可用区与要镜像要导入的可用区一致,存储桶权限设置为 公有读私有写。(在创建存储桶的界面可以选择权限。如果但是没有设置,可以进入存储桶的详情页面中,在左侧找到 权限管理 -> 存储桶访问权限 的页面进行设置。)

1. 检查 Virtio 驱动

1.1. 检查是否支持 Virtio

grep -i virtio /boot/config-$(uname -r)
  • 如果在返回结果中CONFIG_VIRTIO_BLK参数和CONFIG_VIRTIO_NET参数取值为y,表示该操作系统包含了 Virtio 驱动,检查通过。
  • 如果返回结果中CONFIG_VIRTIO_BLK参数和CONFIG_VIRTIO_NET参数取值为m,请继续往下执行。
  • 如果在返回结果中没有CONFIG_VIRTIO_BLK参数和CONFIG_VIRTIO_NET参数的信息,需要下载和编译内核,相关指导见https://cloud.tencent.com/document/product/213/9929#DownloadCompileKernel。

本次验证的几个系统,参数值都显示 m ,继续往下执行。

1.2. 检查临时文件系统是否包含 Virtio 驱动

ubuntu 16、18、20 版本用如下命令:

lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio

ubuntu 14 版本用这个命令会报错,直接执行下一步吧。

ubuntu 16、18、2各个版本中都包含有 virtio 驱动,但是与腾讯云文档中显示的列表又不完全一致,保险起见,继续往下执行。

1.3. 重新配置临时文件系统

echo -e 'xen-blkfront\nvirtio_blk\nvirtio_pci\nvirtio_console' >> /etc/initramfs-tools/modules
mkinitramfs -o /boot/initrd.img-$(uname -r)

执行后再查看 1.2,与之前没有变化。后面导入并验证都通过了,所以应该原来带的 virtio 驱动已经 OK 的。

2. 安装 cloud-init

通过 apt 源安装的 cloud-init 版本过高导入会失败。经过多种方法尝试,使用绿色版本安装是最方便的方法。

# 下载 cloud-init 安装包
wget https://image-tools-1251783334.cos.ap-guangzhou.myqcloud.com/greeninit-x64-beta.tgz
# 解压缩
tar xvf greeninit-x64-beta.tgz
# 进入 cloud-init 目录
cd greeninit
# 安装 cloud-init
sh install.sh
# 到这里导入会有问题,还需要删除这个目录
rm -r /etc/cloud/cloud.cfg.d

安装成功后不要执行其他操作,关机。

如果安装后执行了 cloud-init 命令,需要执行以下命令清理缓存。

rm -rf /var/lib/cloud

3. 导入镜像

3.1. 上传镜像

将 ubuntu 系统对应的 vmdk 镜像文件上传到存储桶中。如果虚拟机的硬盘文件拆分成了多个 vmdk,需要先做合并。

3.2. 导入镜像

  • 在腾讯云控制台,云服务器模块中,找到 镜像 菜单,切换到自定义镜像页面。
  • 点击 导入镜像 按钮,导入镜像系统选择 linux ,勾选 我已做好准备 ,点击 下一步。
  • 按照页面内容填写,注意地域选择要使用的可用区。操作系统类型、版本与实际一致,导入方式并选择 正常导入 。
  • 点击下一步,点击开始导入,等待导入结果。

4. 验证

验证内容:

  • 使用自定义镜像创建虚拟机,重装系统都成功。
  • 新建的虚拟机时设置的密码有效。
  • 虚拟机能正确的获取到 IP 地址。

验证结果:

ubuntu 14、16、18、20 版本均验证正常。

5. Q&A

5.1. 如果没有安装cloud-init会怎么样

如果没有安装cloud-init,无法进行初始化。最直观的问题是无法修改密码、无法配置IP。

可以在迁移前,将网卡设置成dhcp方式获取IP。

不同系统可能配置文件的位置、名字不同,这次验证的这台ubuntu 22版本是在 /etc/netplan/ 文件夹中,网卡配置文件为 00-installer-config.yaml,设置内容如下:

network:
    ethernets:
        eth0:
            dhcp4: true
    version: 2