直接给结论:默认情况下,更换镜像会导致系统盘数据丢失,但数据盘(如果有)的数据通常保留。
但这其中有很多“坑”和细节,如果你操作不当,连数据盘都可能没了。下面我把阿里云 ECS 实例更换镜像的真实逻辑、风险点以及正确做法拆解清楚。
1. 核心机制:什么是“更换镜像”?
在阿里云控制台里,“更换操作系统”或“更换镜像”这个动作,本质上是对系统盘(System Disk)进行格式化并重新写入一个新的镜像文件。
- 系统盘:存放操作系统内核、驱动、系统配置、安装的应用软件等。
- 结果:换完镜像后,原来的系统盘会被清空,变成新镜像的状态。你原来装在这个盘里的所有东西(包括
/home下如果没挂载到数据盘的话)全部没了。
- 结果:换完镜像后,原来的系统盘会被清空,变成新镜像的状态。你原来装在这个盘里的所有东西(包括
- 数据盘:独立于系统盘之外的云盘(如 Cloud盘、ESSD等),通常挂载在
/dev/xvdb或/dev/vdb等路径。- 结果:只要你在创建实例时明确区分了系统盘和数据盘,更换镜像不会触碰数据盘。数据盘里的文件完好无损。
2. 最容易踩的坑:单盘实例 vs 多盘实例
很多新手用户分不清自己的磁盘结构,导致误删数据。
情况 A:单盘实例(只有系统盘,没有额外挂载数据盘)
这是最危险的情况。如果你的 ECS 实例只有一个磁盘(通常是 Cloud_SSD 或 ESSD),且该磁盘既装了系统又存了你的业务数据(比如网站代码、数据库文件全在这个盘里)。
- 后果:一旦执行更换镜像,整个磁盘被格式化,所有数据彻底丢失。
- 补救:几乎无法恢复。除非你之前做过快照备份。
情况 B:标准多盘实例(系统盘 + 数据盘)
这是推荐的生产环境架构。
- 系统盘:Linux/Windows 系统本身。
- 数据盘:挂载在
/data或E:Data等业务目录。 - 后果:更换镜像后,系统盘变新,数据盘依然挂载在原位,数据保留。
注意:即使有数据盘,更换镜像后,你需要重新检查
/etc/fstab或 Windows 的磁盘管理,确保数据盘能自动挂载。有时候因为 UUID 变化或分区表问题,可能需要手动重新挂载。
3. 如何安全地更换镜像?(保姆级操作建议)
别裸奔操作!按以下步骤来:
第一步:确认磁盘结构
登录 ECS 控制台,查看实例详情:
- 系统盘大小是多少?
- 是否有其他云盘挂载?
- 你的重要数据到底存在哪个盘上?
自查命令(Linux):
df -h lsblk看输出结果,确认哪些是
/(根目录,即系统盘),哪些是其他挂载点(如/data)。
第二步:做快照备份(必须!)
无论你是不是单盘实例,先对系统盘打快照!
- 进入【存储与镜像】->【快照】。
- 对系统盘创建一个自定义快照。
- 如果有多块数据盘,也建议分别打快照。
为什么? 万一你换错了镜像版本,或者操作失误导致数据盘也被误删(极端情况),你可以回滚快照救回来。
第三步:停止实例
更换镜像需要实例处于“已停止”状态。
- 在控制台点击“停止实例”。
- 等待状态变为“已停止”。
第四步:执行更换镜像
- 选择你要切换的新镜像(可以是公共镜像、自定义镜像、共享镜像)。
- 勾选“是否保留数据盘”选项(阿里云通常会提示,务必确认勾选“保留数据盘”,虽然默认可能已勾,但要再看一眼)。
- 确认提交。
第五步:启动并验证
- 启动实例。
- 远程连接进去,第一时间检查:
- 新系统是否正常启动?
- 数据盘是否还在?
- 数据盘里的文件是否在?
- 应用服务是否需要重新配置(因为 IP、主机名、网络策略可能微调)?
4. 常见误区澄清
| 误区 | 真相 |
|---|---|
| “我换了镜像,之前的软件还能用吗?” | 不能。新镜像是干净的系统,你需要重新安装 Nginx、MySQL、Java 等环境。 |
| “我可以把旧系统盘的数据拷贝到新系统盘吗?” | 不行。更换镜像是覆盖写,不是合并。你必须通过外部方式(如从另一台机器 scp 过去,或通过 OSS 中转)迁移数据。 |
| “自定义镜像包含数据盘吗?” | 不包含。自定义镜像只记录系统盘的内容。如果你想在新系统中保留旧数据,必须先备份数据,再制作自定义镜像,然后在部署时手动恢复数据。 |
5. 高级玩家建议:用“自定义镜像”代替“更换镜像”
如果你希望换系统的同时保留部分环境配置,更好的做法是:
- 先备份数据:将重要数据打包上传到 OSS 或复制到另一台服务器。
- 制作自定义镜像:基于当前实例制作一个自定义镜像(可选,用于快速克隆相同环境)。
- 更换为官方纯净镜像:如 Ubuntu 22.04 LTS 或 CentOS Stream 8。
- 重建环境:在新系统中重新安装软件,并从 OSS 恢复数据。
这种方式更可控,避免了“换镜像”带来的不确定性,也符合云原生“不可变基础设施”的理念。
总结一句话:
只动系统盘,不动数据盘。但如果你没分盘,全都没了。所以,动手前,先打快照!
云技术博客