直接给结论:能找回,但前提是操作前必须对系统盘(通常是云盘)做过快照备份。
如果没有做快照就直接格式化或重装了操作系统,数据大概率是找不回来的。
下面我把具体的逻辑、风险点和操作步骤拆解清楚,避免你踩坑。
1. 核心原理:阿里云的“重装系统”到底在干什么?
在阿里云 ECS 控制台里点击“更换操作系统”或者“重装系统”,本质上并不是把整块硬盘物理擦除,而是:
- 挂载一个新的镜像到当前的云盘上。
- 覆盖原有文件系统。
对于普通用户来说,感觉就是“数据没了”。但从底层存储来看,旧的数据块可能还在磁盘的物理扇区里,只是被新的系统文件覆盖了,或者文件系统索引被重建了,导致操作系统无法访问这些数据。
关键点在于:云盘(ESSD/SSD/高效云盘)默认是不自动保留历史数据的。 一旦你执行了“更换操作系统”并重启,旧的分区表会被新系统的安装程序重写。
2. 什么情况下数据还能找回?
情况 A:你有快照(最稳妥)
如果你在执行操作前,手动创建了系统盘的快照(Snapshot),那么你可以:
- 创建自定义镜像(基于该快照)。
- 用这个自定义镜像创建一台新的 ECS 实例。
- 从新实例中拷贝出你需要的重要数据。
- 再回原实例进行 Ubuntu 的安装。
这是唯一官方推荐且 100% 可靠的方法。
情况 B:没有快照,且刚刚操作完(高风险尝试)
如果你已经点了“更换系统”,并且还没重启,或者刚重启发现数据丢了:
- 立即停止一切写入操作! 不要新建文件,不要安装软件,不要下载东西。
- 理论上,可以使用专业的数据恢复工具(如
testdisk,photorec或商业工具如 R-Studio, DiskGenius)扫描磁盘残留数据。 - 但是,由于 Linux 文件系统(ext4/xfs)的特性,加上阿里云云盘可能涉及多副本机制和后台清理策略,成功率极低,且不保证成功。这属于“死马当活马医”,不建议作为常规手段依赖。
3. 正确操作流程:如何安全地从 CentOS 切换到 Ubuntu?
为了保住你的代码、配置文件、数据库等数据,请严格按以下步骤操作:
第一步:全量备份(最重要!)
不要只备份 /home 目录,要备份所有重要数据。
- 方法一(推荐):创建系统盘快照。
- 登录阿里云控制台 -> ECS -> 实例 -> 更多 -> 云盘 -> 创建快照。
- 等待快照完成(通常几分钟)。
- 方法二:远程拷贝数据。
- 使用
scp、rsync或 FTP/SFTP 将重要文件下载到本地电脑或其他临时服务器。 - 注意:如果是 MySQL/PostgreSQL 数据库,请先执行
mysqldump导出 SQL 文件,而不是直接拷贝 data 目录,因为不同版本数据库引擎可能不兼容。
- 使用
第二步:选择正确的切换方式
在阿里云控制台有两种方式:
- 更换操作系统(推荐用于全新环境):
- 路径:实例详情 -> 更多 -> 密码/密钥 -> 更换操作系统。
- 选择 Ubuntu 镜像。
- 注意: 此操作会清空系统盘上的所有数据(即
/,/boot,/etc等)。如果你的数据都在/home且/home是独立的数据盘(非系统盘),那/home不受影响。但如果/home在系统盘上,它也会被清掉。
- 自定义镜像迁移(适合复杂环境):
- 先创建包含当前 CentOS 环境的自定义镜像。
- 用该镜像启动一台新 ECS。
- 在新机器上手动搭建 Ubuntu 环境,并将数据迁移过来。
- 这种方式更灵活,但技术门槛稍高。
第三步:验证与恢复
- 等待 Ubuntu 系统启动完成。
- 通过 SSH 登录新系统。
- 如果之前做了快照,从快照创建的自定义镜像实例中,挂载云盘或使用内网传输,将数据拷贝回新的 Ubuntu 实例。
- 重新配置 Nginx/Apache、PHP/Python 环境、数据库连接等。
4. 常见误区提醒
- 误区1:“我只改一下内核就能换系统”
- 错。CentOS 和 Ubuntu 的基础库(glibc, systemd, apt vs yum/dnf)完全不同,强行混装会导致系统崩溃。必须重装整个根文件系统。
- 误区2:“阿里云会自动帮我备份数据”
- 错。阿里云的云盘备份功能需要用户主动开启或手动创建快照。默认情况下,没有任何自动备份策略会保留你个人应用层的数据。
- 误区3:“数据盘和系统盘一样”
- 很多用户混淆了“系统盘”和“数据盘”。
- 系统盘:存放 OS、软件、网站代码(如果部署在
/var/www等)、数据库文件。重装系统时,这部分会被覆盖。 - 数据盘:额外挂载的云盘(如
/dev/vdb),通常用于存数据库、大文件。重装系统不会影响数据盘的内容,只要你不主动格式化它。 - 检查方法:在 CentOS 下运行
df -h和lsblk,确认你的重要数据到底是在/dev/vda1(系统盘)还是其他盘符上。
5. 总结建议
- 操作前必做快照:这是底线。花 5 分钟创建快照,比事后花几天时间哭诉数据丢失强一万倍。
- 区分系统盘和数据盘:如果可能,将业务数据和系统分离。系统盘只放 OS 和软件,数据单独挂载一块云盘。这样以后换系统、升级 OS 就无脑操作,毫无心理负担。
- 测试环境先行:先在另一台低配 ECS 上用相同镜像测试 Ubuntu 的环境配置流程,确保脚本、依赖包都准备好,再在生产环境操作。
一句话总结:没快照,别动;有快照,随便换。生产环境务必养成“变更前快照”的习惯。
云技术博客