很多人在阿里云买好ECS之后才发现系统镜像选错了,或者原来的CentOS 7快到停服时间,需要换成更新的发行版。控制台里的“更换操作系统”就是为这种情况准备的。实例ID和公网IP都不变,不用重新搭建网络。但它实际上是重装系统盘,操作前没理清楚,很容易把业务数据一起清掉。

改系统会清掉什么
更换操作系统就是重装系统盘。系统盘上的内容都会被清空,包括系统配置、已装的软件、数据库文件和网站代码,只要放在系统盘里,都会消失。数据盘默认保留,只要弹窗里没有勾选释放,它会继续挂在实例上。
- 系统盘ID会变,实例ID不变。如果你的脚本或备份策略里写死了旧的系统盘ID,改完要记得更新。
- 登录密码或密钥对会在过程中重新设置,先把新凭据存好,别等启动后才发现连不上。
- 实例规格、地域和可用区不变,计费方式基本沿用,具体以控制台展示为准。
- 镜像架构必须和实例匹配,x86实例不能选ARM镜像,提交前看一眼镜像说明。
限制条件和按钮位置会随控制台版本调整,操作前以阿里云官方文档和当前页面提示为准。
动手前要保护的三类数据
改系统前需要保护的数据大致分三类:系统盘快照、业务数据的实际位置,以及环境配置记录。
一、系统盘快照
先为系统盘创建快照。快照过程不影响实例运行,成本也不高。改完系统如果发现某个依赖没迁移好,可以用快照回滚,或者用快照制作自定义镜像,在新实例上恢复。
二、业务数据的实际位置
登录服务器后用df -h查看各挂载点,确认哪些目录在数据盘,哪些还在系统盘。最常见的坑是MySQL数据目录或上传文件目录放在了系统盘上,改系统时会一并清空。发现这种情况,最好在改系统前迁到数据盘,或者至少完整拷贝到外部存储。
三、环境配置记录
记下安全组规则、Nginx或Apache配置、定时任务、环境变量和防火墙设置。这些内容不一定随系统盘消失,但重装后要逐项核对。漏掉一条定时任务,业务可能悄悄出问题,而且不容易第一时间发现。
标准操作步骤
- 进入实例详情页,确认状态为已停止。如果还在运行,先停止实例,并确认业务已经下线,避免还有进程往里写数据。
- 在“系统与镜像”相关菜单中选择“更换操作系统”,按需求选择公共镜像、自定义镜像或镜像市场中的镜像。
- 设置新的登录方式,密码或密钥对二选一,凭据存进密码管理器,不要只留在聊天记录里。
- 核对数据盘保留选项。数据在数据盘的话保持默认保留,弹窗内容逐条看完再确认。
- 提交后等任务完成再启动,通过VNC或SSH登录验证,检查服务、挂载和端口是否正常。
两个真实场景
第一个案例来自一家做小型电商的团队。他们的订单系统跑在CentOS 7服务器上,官方已结束维护,安全团队要求尽快迁移。运维同学没有直接在线升级,而是先做系统盘快照,并在测试环境里用同样的镜像反复演练。Nginx、PHP和定时任务的配置完整复现后,才在低峰期执行更换,系统切换为兼容性更好的Alibaba Cloud Linux。整个切换窗口在40分钟左右。意外出在一个写死在系统盘里的日志目录,没有及时发现。好在数据库文件放在数据盘,没有受影响。
第二个案例是一位开发者的Windows测试机。他误改了远程桌面相关的注册表项,导致无法登录。他没有花大量时间排查,而是直接用前一天的快照回滚系统盘,十几分钟就恢复了环境。快照的价值,很多时候就在于出问题时能快速回到原来的状态。
常见问题
改系统会不会影响公网IP?通常公网IP和实例ID保持不变,但操作前仍建议记录弹性公网IP的绑定关系,改完逐一核对。
能不能在线改系统、不停机?更换操作系统需要实例停止,所以会有一段停机时间。如果业务不能中断,更稳妥的做法是新建一台实例,把应用迁过去,再切换流量。
小结
改系统的流程并不复杂,难点在于备份、盘点数据位置、记录环境配置这三件事有没有做扎实。快照和数据盘保留做到位,多数情况下能平稳完成迁移。条件允许的话,先在测试实例上完整演练一次。