直接给结论:会清空,而且不仅是数据清空,连操作系统都变了。
在阿里云(以及绝大多数云厂商)上,“切换操作系统”这个操作,本质上不是像 Windows 那样打个补丁或者做个双系统切换,而是重装系统。
具体来说,这里有几个关键点你需要清楚:
1. 底层逻辑是“重建实例”
当你点击“更换操作系统”时,阿里云后台的实际操作流程通常是这样的:
- 卸载当前的 CentOS 系统盘。
- 格式化该磁盘分区(这一步就是导致你数据丢失的直接原因)。
- 挂载一个新的 Ubuntu 系统镜像到同一块磁盘上。
- 重启服务器。
所以,原 CentOS 系统下的所有文件、代码、数据库、配置都会消失。这不是“覆盖安装”,这是“格式化后重新安装”。
2. 哪些东西会保留?哪些会丢?
- 会丢的:
/home目录下的用户数据。/var/www等网站代码。- MySQL/PostgreSQL 等数据库里的数据(除非你之前做了外部备份或使用了云数据库 RDS)。
- 自定义的系统配置、环境变量、crontab 定时任务等。
- 本地安装的软件包。
- 不会丢的:
- 公网 IP 地址:通常不变(除非你使用的是弹性公网 IP EIP 且解绑了,但一般固定 IP 不变)。
- 私网 IP 地址:通常不变。
- 安全组规则:大部分情况下会保留,但建议切换前检查一遍。
- 云盘本身:你的那块云盘还在,只是里面的内容被清空并写入了新系统。
3. 正确且安全的操作步骤(必看!)
如果你必须从 CentOS 切换到 Ubuntu,绝对不要直接点“更换系统”,否则你会哭着找客服恢复数据(虽然阿里云有快照功能,但那是事后补救,不是事前保护)。
标准流程应该是:
第一步:创建快照(救命稻草)
- 登录阿里云控制台。
- 找到你的 ECS 实例 -> 磁盘 -> 找到系统盘。
- 点击 “创建快照”。
- 等待快照完成(这可能需要几分钟到十几分钟,取决于数据量)。
为什么这么做?因为即使你换了系统,万一发现 Ubuntu 环境配不起来,或者数据误删,你可以随时通过“从快照创建云盘”来回滚到 CentOS 状态。
第二步:备份重要数据
- 使用
scp、rsync或 FTP/SFTP 工具,把/home、/etc、/var/www等重要目录下载到本地电脑。 - 导出数据库(mysqldump/pg_dump)。
- 记录好你的 SSH 密钥、SSL 证书路径、Nginx/Apache 配置文件内容。
第三步:执行更换系统
- 在 ECS 控制台选择实例 -> “更多” -> “云盘和系统” -> “更换操作系统”。
- 选择 Ubuntu 版本(如 20.04 LTS 或 22.04 LTS)。
- 设置新的 root 密码。
- 确认执行。
第四步:恢复环境
- 系统重启后,用新密码登录 Ubuntu。
- 将之前备份的数据传回服务器。
- 重新安装运行环境(比如 Ubuntu 默认用 apt,CentOS 用 yum/dnf,命令不一样,需要重新装 Nginx、PHP、MySQL 等)。
- 导入数据库,测试网站是否正常运行。
4. 替代方案建议
如果你的业务允许停机一小段时间,但又不想折腾迁移,可以考虑:
- 新建一台 Ubuntu 实例:买一台新的 Ubuntu 机器,把数据搬过去,改 DNS 解析到新 IP。这样旧 CentOS 机器可以留着当备份,直到新机器完全稳定。这种方式风险最低,隔离性最好。
总结
切换系统 = 格式化重装 = 数据清空。
请务必先打快照 + 手动备份数据,再动手。别信任何“无损切换”的说法,至少在阿里云目前的产品逻辑里,没有这种操作。
云技术博客