ECS 实例更换镜像时,系统盘会被重新初始化。系统版本太旧想升级、系统故障起不来、或者要统一到标准化环境,都可能走到这一步。它会清掉系统盘上的全部内容,所以操作前备份做没做,事后能不能回头,基本就看这一步。

一、更换镜像到底会动什么
在阿里云控制台执行更换操作系统,实际是用新镜像重新初始化系统盘。系统盘里的操作系统、已装软件、配置文件和放在系统盘上的业务数据都会被清除。数据盘一般保留,但这取决于操作时的选项,提交前要在页面上看清楚,不要凭印象判断。
不少事故出在动手前没有核对备份。
二、操作前的准备
1. 备份系统盘和业务数据
快照和数据导出建议一起做。快照能在出问题时快速回滚,数据库和关键文件单独导出,相当于多留一层保险。
- 在 ECS 控制台找到对应的系统盘,创建云盘快照。
- MySQL 等数据库用 mysqldump 导出,网站文件打包后通过 OSS 中转保存到本地。
举个常见的迁移场景:一台 CentOS 7 服务器要换到 Alibaba Cloud Linux 3。更换前先做系统盘快照,再把数据库导出到 OSS。换完如果发现某个依赖包版本对不上,就可以用快照回滚,环境能很快恢复。快照本身不贵,但省下的排查时间很可观。
2. 记下当前配置
这些信息平时没人看,真出事时最有用。
- 实例 ID、地域和可用区
- 公网 IP、私网 IP 和安全组规则
- 已挂载的数据盘和分区信息
- Nginx、Apache 或应用服务的配置文件路径
- crontab 定时任务和环境变量
把这份清单存进团队文档,重新部署时能少翻很多日志。
3. 安排停机
更换前实例需要先停止。如果上面跑着生产业务,要提前约好维护时间,并通知用到这台机器的人。
三、具体操作步骤
以 ECS 控制台为例,流程大致如下。具体入口以控制台当前页面为准,不同实例类型或场景下位置可能略有差别。
- 进入目标实例详情页。
- 实例在运行中的话,先执行停止,选择“正常停止”。
- 在“更多”菜单里找到“磁盘和镜像”,选择“更换操作系统”。
- 选择镜像类型,公共镜像、自定义镜像或共享镜像都可以,再挑目标版本。
- 设置登录方式。优先用密钥对,密码登录的风险更高。
- 仔细读完风险提示再提交。系统开始重装,完成后实例状态变为已停止。
- 启动实例,用 VNC 或 SSH 连上去,确认系统能正常进入。
四、更换后的检查和恢复
1. 基础环境确认
- 执行 cat /etc/os-release,确认系统版本是不是预期的那个。
- 执行 df -h,看磁盘挂载情况,数据盘是否需要重新挂载。
- 测试网络连通性,确认安全组规则已经生效。
2. 恢复业务
按之前记下的清单逐项恢复:Web 服务、数据库客户端,以及 Java、Python 或 Node.js 运行时,然后从备份还原配置和数据。
有个常见情况:从老版本迁到 Ubuntu 22.04 后,原来的 Nginx 站点配置可能加载不了,原因往往是用了新版本已经废弃的指令。这时别急着重启,先对照新版文档改配置,重载前用 nginx -t 做语法检查。
五、常见问题
1. 更换后 SSH 连不上
多半是安全组没放行 22 端口,或者密钥对没配对,也可能是镜像默认关闭了密码登录。先通过控制台的 VNC 登录,检查 sshd 的服务状态和配置文件。
2. 数据盘找不到了
数据盘的挂载配置通常不会自动恢复,需要手动编辑 /etc/fstab,并确认磁盘 UUID。改之前先备份 fstab,写错一个字符就可能导致系统起不来。
3. 镜像列表里没有目标版本
有些老版本已经不再提供公共镜像,或者当前实例规格不支持。这种情况可以先考虑制作自定义镜像,或者换成同系列较新的版本。
六、几点建议
- 先在测试环境完整演练一遍,再动生产机器。
- 快照至少保留一周,确认业务稳定后再清理。
- 需要长期维护的服务器,可以用 Ansible 或 Terraform 管理配置,以后重装的成本会低很多。
- 每次更换都留书面记录,团队协作和事后追查都用得上。
更换镜像本身不算复杂,结果好坏主要看操作前的备份和操作后的核对。快照做好、配置记清楚、每一步都检查,大多数问题都能在短时间内处理。