ECS 用久了,迟早会碰到换系统的事。CentOS 7 已经结束维护,继续跑在上面有安全和兼容性风险,所以要迁到新系统。也有业务调整,需要从 Linux 切到 Windows。阿里云怎么换系统本身不复杂,控制台几步就能完成。但系统盘会被整体替换,选错一步,数据就可能回不来,动手前要先想清楚。

这篇文章按实际操作的顺序来讲:先说换系统会动到哪些东西,再列准备工作,然后是控制台步骤和命令行方式,最后用一个迁移的例子说明怎么验证。
换系统到底会动什么
更换操作系统,实际上就是用新镜像替换系统盘。系统盘上的内容会被清空,包括操作系统、已安装的软件、配置文件,以及存在系统盘里的业务数据。
挂载的数据盘一般不受影响,实例 ID 不变,专有网络、交换机、安全组这些网络配置也会保留。不过哪些资源保留、哪些需要重新配置,要以控制台的提示为准。别只凭印象判断,尤其是数据盘是否保留,最好在操作前确认清楚。
动手前的准备
下面几项建议都做。省掉任何一项,出问题时都会更难收拾。
- 给系统盘创建快照。快照是最直接的回滚办法。新系统跑不通时,用快照恢复就能回到原来的状态。
- 把业务数据导出一份。如果数据库、网站文件或日志放在系统盘上,额外导出到 OSS 或其他存储位置,不要只依赖快照。
- 记下当前配置。公网 IP、内网 IP、安全组规则、开放端口、定时任务、环境变量,换完系统大多需要手动恢复。提前记在文档里,比事后回想可靠。
- 提前选好目标镜像。在镜像市场或公共镜像里定下版本,并确认它和你的应用、运行时环境兼容。
- 挑业务低峰期操作。更换过程中实例会停止服务,用户访问会中断。
控制台怎么操作
进入云服务器 ECS 控制台,找到要换系统的实例,先将它停止。然后在实例的操作菜单中找到磁盘和镜像相关的入口,选择更换操作系统。菜单名称可能随控制台版本调整,按实际界面找即可。
进入页面后,先选镜像来源,公共镜像、自定义镜像、镜像市场都可以,再选定具体版本。登录凭证建议优先使用密钥对,密码方式的安全性相对弱一些。确认费用和提示信息,勾选条款后提交。
任务完成后启动实例,用远程连接工具登录一次,确认系统能正常进入。然后对照之前记下的清单逐项检查:端口是否在监听,服务是否设置了开机自启,数据盘是否挂载成功,定时任务要不要重新添加。这一步做得越细,后面踩的坑越少。
批量或自动化操作
实例数量多,或者想纳入自动化运维流程时,可以调用阿里云 OpenAPI 中的 ReplaceSystemDisk 接口,也可以通过阿里云 CLI 执行。调用前同样要确认实例已停止,并且账号具备对应权限。
脚本里不要把 AccessKey 明文写死,也不要提交到代码仓库,用环境变量或凭据管理服务传入更稳妥。生产环境在批量执行前,先找一台测试实例完整跑一遍,连同恢复步骤一起验证,再推广到其他实例。
一个迁移的例子
设想一家小型电商公司,业务跑在两台 ECS 上,系统是 CentOS 7,应用包括 Nginx、Java 服务和本地 MySQL。CentOS 7 已结束维护,团队决定迁移到 Alibaba Cloud Linux 3。
他们先给两台实例的系统盘创建快照,把 MySQL 数据目录导出到 OSS,应用配置整理进代码仓库。然后挑一台测试实例先换系统,发现 Java 服务依赖的 JDK 版本需要升级,于是在新系统上重新安装,并调整了启动脚本。测试通过后,才对生产实例做同样的操作。
这个例子里,每一步都是先备份、再验证、最后切换。没有直接在生产机上试错,出问题时手里还有快照和导出的数据。
常见坑
- 数据被清空。最常见的误会是以为数据盘和系统盘都会保留。动手前先查清楚,业务数据到底在哪块盘上。
- IP 可能变化。公网 IP 是否变化,和计费方式与网络配置有关。换完后确认一下,如果有 DNS 解析或白名单依赖它,记得同步更新。
- 应用兼容性。新系统的 glibc、OpenSSL、Python 等基础组件版本可能不同,老应用容易在这里出问题,最好先在测试机上跑一遍。
- Windows 与 Linux 互换。能否跨类型切换,取决于实例规格和镜像类型。控制台里能不能选到目标镜像,是最直接的判断依据。
- 快照要验证。快照创建完成后,确认状态为可用。没有验证过的快照,等到要用时才发现无法恢复,就很被动。
换系统的步骤并不多,费工夫的地方在前面的备份和后面的验证。备份做扎实,配置记清楚,测试机上走通,再动生产,大部分风险都能提前挡住。