在阿里云 ECS 控制台更换系统,先要弄清楚哪些数据会被清空,哪些会留下。不少人只盯着选镜像,忘了备份,结果系统盘上的网站和配置一起没了。这篇文章讲清楚更换系统的影响范围、操作前要做的准备,以及一个实际场景的完整过程。

更换系统会动到哪些东西
更换系统的本质,是用新镜像重写系统盘。具体影响以控制台提示为准,常见情况大致如下:
- 系统盘会被清空。系统文件、已装的软件、网站程序、系统盘上的日志都会消失。
- 数据盘一般保留。但操作前仍建议做一次快照,万一选错镜像或挂载出了问题,还有退路。
- 实例 ID、私网 IP、安全组规则通常不变,公网 IP 一般也保留。
- 登录密码或密钥对要重新设置。旧凭据大概率失效,别等到登录不上才想起来。
操作前的准备
出问题时能不能快速恢复,基本取决于这一步做得够不够细。建议按下面的顺序来:
- 给系统盘和数据盘分别创建快照,记下快照名称和时间,方便之后对应。
- 如果跑着数据库,先做一次完整导出。比如用 mysqldump 导到数据盘之外的位置,然后确认导出文件能正常打开,别只看到文件生成就算完事。
- 把当前的 Nginx 配置、应用配置、定时任务和环境变量复制到本地保存。系统盘一清空,这些东西很难凭记忆还原。
- 记下数据盘的挂载点,以及 /etc/fstab 里对应的那一行。新系统上要照着恢复。
- 挑业务低峰期操作,并提前通知相关的人。操作期间服务会中断。
具体操作步骤
下面以控制台常见的菜单结构为例。按钮名称可能随版本调整,遇到对不上的时候,以页面实际显示为准。
- 登录 ECS 控制台,进入目标实例的详情页,先停止实例。
- 在“更多”菜单里找到更换操作系统的入口,再选择公共镜像、自定义镜像或共享镜像。
- 如果选的是 Windows 这类需要授权的镜像,费用和许可条款要先看清楚。
- 设置新的登录密码或绑定密钥对,并且妥善保存。
- 仔细看一遍确认提示,提交任务后等控制台显示完成。
- 启动实例,用新凭据登录,检查系统版本和网络是否通。
- 按之前的记录恢复应用环境,挂载数据盘,然后逐个检查服务是否正常。
案例:一个小型博客从 Ubuntu 16.04 升到 22.04
下面是一个示例场景。某个人技术博客跑在一台 2 核 4G 的 ECS 上,系统是 Ubuntu 16.04,官方已经停止安全更新,站长决定换成 Ubuntu 22.04。文章放在数据盘 /data 里,数据库和系统配置则在系统盘上。
操作前
站长先给两块盘各做了快照,然后用 mysqldump 把数据库导出到 /data/backup,再把 Nginx 配置和 crontab 复制到本地。他还把 /etc/fstab 里关于 /data 的那一行抄了下来。
遇到的问题
系统换完启动后,/data 没有自动挂上。原因是新系统里磁盘的设备名和 UUID 跟旧系统记录的不一样,而 fstab 还用着旧的设备路径。站长用 blkid 查到新的 UUID,改好 fstab,执行 mount -a,/data 就恢复了。另外,PHP 版本变了,原来装的几个扩展需要重新安装。
结果
整个过程大约 40 分钟,其中停机约 25 分钟。文章和数据库都完整保留,HTTPS 证书在恢复 Nginx 配置后也正常工作。站长的体会是,快照和配置记录是这次最有用的两样东西。
常见误区
- 以为数据盘一定安全。数据盘通常会保留,但挂载配置可能对不上,换完系统一定要检查 fstab。
- 跳过快照直接操作。选错镜像或中途失败时,系统盘上的数据往往找不回来。
- 忽略软件兼容性。不同系统的软件版本差别可能很大,最好先在测试环境跑一遍。
小结
在 ECS 上更换系统,先做快照和数据库导出,再记下挂载和服务配置,操作后检查数据盘挂载和服务状态。顺序对了,停机时间和恢复风险都能控制住。