更换云服务器操作系统,尤其是从 CentOS 换到 Ubuntu,核心原则只有一条:数据盘不动,系统盘重做。
很多新手容易陷入一个误区,觉得“重装系统”就是把整个硬盘格式化一遍。在阿里云、腾讯云、华为云等主流厂商的控制台里,“重置系统盘”或“更换操作系统”这个操作,默认是只针对系统盘(通常是 /dev/vda 或 /dev/sda)的。只要你的数据盘挂载正常且未被误选为“随系统盘一同重置”,原有数据盘里的文件是完好无损的。
但为了确保万无一失,以及后续迁移的顺畅,你需要按照以下逻辑进行操作和排查:
1. 确认磁盘挂载状态与分区类型
在动手之前,先登录现有服务器,搞清楚两块盘的情况:
- 系统盘:通常容量较小(如 40G-100G),包含
/boot,/(根目录),swap等。 - 数据盘:容量较大,存放网站代码、数据库、用户上传文件等。
执行 lsblk 命令查看磁盘结构。假设你的系统盘是 vda,数据盘是 vdb。
关键点检查:
- 确认数据盘是否已经格式化并挂载到了某个目录(如
/data)。 - 确认数据盘的 UUID 没有改变(虽然换系统通常不会改数据盘 UUID,但以防万一)。
2. 备份!备份!备份!
不要相信任何“绝对安全”的承诺。在执行任何高风险操作前,务必做好以下备份:
- 快照策略:在控制台为你的数据盘单独创建快照。这是最底层的保障。如果换系统后数据盘丢失或损坏,可以通过快照回滚。
- 重要数据本地备份:将关键配置文件、数据库 dump 文件打包下载到本地电脑。
3. 执行更换操作系统操作
登录云厂商控制台(以阿里云/腾讯云为例):
-
找到实例列表,选择目标 ECS/CVM 实例。
-
点击 “更多” -> “云盘和镜像” -> “更换操作系统”(不同厂商叫法略有差异,但逻辑一致)。
-
关键步骤:在选择新系统(Ubuntu)时,注意看是否有 “保留数据盘” 或 “不重置数据盘” 的选项。务必勾选此项!
- 有些厂商默认会提示你“这将清除所有数据”,如果你看到这种警告,请仔细核对是否只选择了系统盘。
- 大多数现代云平台,更换系统镜像的操作仅作用于系统盘卷。数据盘作为独立卷存在,不受影响。
-
提交工单或直接重启实例(视厂商支持情况而定)。
4. 登录新系统后的验证与适配
系统启动后,使用新的 SSH 密钥或密码登录 Ubuntu 服务器。
A. 检查数据盘是否自动挂载
CentOS 和 Ubuntu 对磁盘管理的默认配置不同。
- CentOS 通常依赖
/etc/fstab中的 UUID 或设备名进行挂载。 - Ubuntu 同样读取
/etc/fstab,但可能在初始化过程中重新识别磁盘。
执行以下命令检查:
# 查看所有块设备
lsblk
# 查看当前挂载点
mount | grep -E '/dev/vd|/dev/xvd'
# 检查 /etc/fstab 内容
cat /etc/fstab
常见情况:
-
数据盘已自动挂载:恭喜你,直接继续下一步。
-
数据盘未挂载:说明
/etc/fstab中可能缺少对应条目,或者 UUID 发生了变化(极少见)。你需要手动挂载:# 假设数据盘是 /dev/vdb,你想挂载到 /data mkdir -p /data mount /dev/vdb /data # 验证数据是否还在 ls -l /data
B. 持久化挂载配置(重要)
如果只是临时 mount,重启后数据盘会再次丢失。必须将其写入 /etc/fstab。
-
获取数据盘的 UUID:
blkid /dev/vdb -
编辑 fstab:
sudo nano /etc/fstab -
添加一行(使用 UUID 比使用
/dev/vdb更稳定,防止磁盘顺序变化):UUID=你的数据盘UUID /data ext4 defaults,nofail 0 2注:文件系统类型可能是 ext4 或 xfs,根据实际格式化的类型填写。
-
测试配置是否正确:
sudo mount -a如果没有报错,说明配置成功。
C. 环境迁移与权限修复
从 CentOS 切换到 Ubuntu,最大的痛点不是数据盘,而是运行环境。
- 软件包管理器变更:CentOS 用
yum/dnf,Ubuntu 用apt。你需要重新安装 Nginx, MySQL, PHP, Python 等运行时环境。 - 权限问题:
- CentOS 默认用户可能是
root或特定用户。 - Ubuntu 默认用户也是
root,但 Web 服务(如 Nginx/Apache)的运行用户可能不同(Ubuntu 默认 Nginx 用户是www-data,而 CentOS 7+ 是nginx)。 - 操作:确保你的网站目录、数据库文件所属用户和组正确。例如:
sudo chown -R www-data:www-data /var/www/html sudo chown -R mysql:mysql /var/lib/mysql
- CentOS 默认用户可能是
- 防火墙规则:CentOS 常用
firewalld或iptables,Ubuntu 新版默认用ufw。你需要重新配置端口开放规则。
5. 特殊情况处理:如果数据盘没有自动挂载?
极少数情况下,云厂商的镜像初始化脚本可能没有识别出旧的数据盘。此时可以手动创建挂载点并绑定。
另外,注意检查 LVM 使用情况。如果你的数据盘是在 CentOS 上使用了 LVM(逻辑卷管理),那么在 Ubuntu 上可能需要加载 lvm2 包才能识别:
sudo apt install lvm2
sudo vgscan
sudo lvscan
总结
- 数据盘本身不会被删除,只要你在控制台操作时确认只更换系统盘。
- 首要动作是打快照,这是最后的救命稻草。
- 重点在于适配:挂载方式、环境变量、Web 服务用户权限、防火墙规则。
- 不要在原服务器上直接“格式化”或“重装”,一定要通过云控制台的“更换操作系统”功能,它本质上是替换系统盘镜像,数据盘保持独立。
这样做,既能实现从 CentOS 到 Ubuntu 的平滑过渡,又能保证业务数据的安全。
云技术博客