眼瞅着CentOS 7的维护寿命行将结束,以后可能碰到的问题会越来越多。所以摆在眼前的就两条路,要么直接在原系统上升级(具体见本站《如何从CentOS 7转换到AlmaLinux或RockyLinux》一文),要么就来个彻底重新安装和配置。前者不稳定因素比较多,尤其是在本地虚拟机中测试的结果并不是很理想的情况下,更加心里没底;而后者势必会导致网站的长时间停摆,尤其是大量的服务配置工作。貌似两个方案都有风险,所以不得不将目光放到阿里云的自定义镜像功能上来了。
根据官方的介绍,阿里云ESC可以使用自定义镜像,方便系统迁移或其他维护工作。而且从网上有限的资料来看,貌似可以在本地虚拟机上配置好再将其上传到服务器,然后通过导入功能实现系统升级。
为了了解阿里云的自定义镜像到底是个什么情况,所以决定先下载目前的服务器系统,也就是导出自定义镜像。
导出过程很简单,来到阿里云的控制台,选择实例与镜像 > 镜像,点击上方的创建镜像,在下拉菜单中选择选择自定义镜像。然后在弹出窗口中选择要创建镜像的实例以及镜像的名称。确认后,在快照列表中会多一个快照,就是刚刚为镜像创建的。
还有一种方法就是先建立快照,然后通过快照来生成自定义镜像,因为本质上这两个属于关联性质。因此在删除时需要先删除镜像再删除快照。
镜像生成后回到镜像列表,然后点击导出镜像,此时系统会检验是否具备导出的条件,主要是授权ECS服务访问OSS的权限。如果是首次导出镜像还没有授予ECS对OSS资源的访问权限,可以直接在导出镜像对话框进行操作。
- 在将镜像文件导出至OSS区域,单击AliyunECSImageImportDefaultRole。
- 在云资源访问授权页面,查看到AliyunECSImageImportDefaultRole和AliyunECSImageExportDefaultRole角色,单击同意授权。
返回至导出镜像对话框,重新单击下一步。
然后选择与自定义镜像所属地域相同的OSS Bucket以及镜像文件名前缀,点击确认。
来到OSS Bucket的文件列表,然后下载刚刚生成的.tar.gz文件(生成时间视镜像大小而定)。
在国内的ECS中,默认导出的是RAW格式的镜像,因此彻底解压缩下载的文件后就得到了扩展名为.raw
的文件。这个文件是没办法直接用于VMware或者是VirtualBox的,必须通过一款名为qemu-img的程序进行转化。该程序采用命令行方式运行,因此下载程序并安装后并不能在程序列表中显示出来。打开命令行,输入如下命令:
"C:\Program Files\qemu\qemu-img" convert -pO vmdk source.raw test.vmdk
如果需要在环境配置中添加qemu-img的路径,请参考网上的其他文章,这里就不详细展开了。
转换之后还是没有办法直接使用vmdk的文件。最简单的方法就是使用VMware新建一个虚拟机(例如名为mindseed),操作系统跟镜像的保持一致即可,然后选择稍后安装。将刚刚转换的文件改成虚拟机的名称mindseed,然后复制到新建虚拟机的目录下覆盖原有文件。启动虚拟机,就能看到系统启动了。
不过可惜的是,阿里云下载的镜像在我的笔记本上无法运行,启动之后就卡死了。
参考资料:
https://help.aliyun.com/zh/ecs/user-guide/export-a-custom-image?spm=a2c4g.11186623.0.i1