阿里云ECS镜像导出并在VMware中运行

问题:可以把阿里云ECS整个系统包括数据导入到本地的VMware中运行吗?

答案是可以!特别是系统中包含大量数据且迁移非常耗时的时候,采用这一方案可以大大缩短系统迁移时间,而且迁移后运行起来还跟线上一模一样!

我用的ECS操作系统版本是CentOS 7.9,主要参考的这一篇 https://blog.csdn.net/mdzz14/article/details/113755963

整体步骤

  1. ECS打镜像导出后本地后创建虚拟机;
  2. 先保证虚拟机在恢复模式下能正常运行;
  3. 禁用多余的服务和内核,开机时则无需选择启动菜单。

镜像导出及VMware虚拟机创建

  1. 对ECS服务器创建镜像;
  2. 导出镜像,选择导出到OSS,格式一般是raw;
  3. 从OSS下载镜像,文件格式为tar.gz,因为是压缩过的所以小于磁盘大小,需要解压出来,解压出来的文件大小跟磁盘大小一致;
  4. 使用qemu-img命令进行格式转换,转成VMware所用的vmdk格式,需要先安装qemu
qemu-img convert -f raw -O vmdk {源文件地址} {目标文件地址}
  1. VMware中创建自定义虚拟机,前几步直接下一步即可,选择磁盘的时候要特别注意下,选第二个,即使用现有的磁盘。
  2. 启动虚拟机,在启动菜单中使用上下键选择(一定要快),选择最后一个带rescue的。先按e进入编辑页面,删除linux16开头的那一行里的net.ifnames=0 console=tty0 console=ttys0.115200n8 noibrs,不然启动可能会比较慢。
  3. 启动过程中alt + 空格win + 空格进入verbose模式,可以通过日志查看启动过程中的问题,比如我就遇到有个cloud-init的服务一直在请求一直在超时,耗时将近25分钟才进入系统,还以为启动不起来了呢!所以就需要在进入系统后把它禁掉,通过systemctl disable cloud-init 不管用,得这么做:
    touch /etc/cloud/cloud-init.disabled

还有可能会遇到 SMBus Host Controller not enabled! 的问题,这个错误也会影响系统启动,需要在原系统中创建blacklist.conf并重新打包(打包完后记得把文件删了以免影响正常启动),或者在新系统启动完成后创建。步骤

  1. 查看i2c模块 lsmod | grep i2c,输出类似如下
i2c_piix4              22401  0

那 i2c_piix4就是要加的黑名单。

  1. 编辑 /etc/modprobe.d/blacklist.conf,这个文件可能原本就不存在,内容如下
blacklist i2c_piix4
  1. 保存退出。

如果是在ECS上执行的这步操作,那需要重新打包、导出镜像等一系列操作。

到这里虚拟机就能正常使用了,只是每次启动时还需要手动选择启动项,有点麻烦,也不合适自动化运维,所以还需要做一步配置,一劳永逸。

开机自动选择最后一项

进入系统后,先查看当前安装的内核版本

rpm -qa|grep kernel

再查看当前使用的内核版本

uname -a

把不用的都给删了,如

yum -y remove kernel-3.10.xxxx

修复

dracut -f

修复完成后重启就可以了,再开机时无需再手动选择最后一项。

Ubuntu系统可参考 https://www.jianshu.com/p/473cfbefb08d ,未实际测试,看上去应该可以。

Leave a Comment

豫ICP备19001387号-1