努力
加油

云服务器更换操作系统(如CentOS换Ubuntu)时,原有数据盘如何安全迁移?

更换云服务器操作系统,尤其是从 CentOS 换到 Ubuntu,核心原则只有一条:数据盘不动,系统盘重做。

很多新手容易陷入一个误区,觉得“重装系统”就是把整个硬盘格式化一遍。在阿里云、腾讯云、华为云等主流厂商的控制台里,“重置系统盘”或“更换操作系统”这个操作,默认是只针对系统盘(通常是 /dev/vda 或 /dev/sda)的。只要你的数据盘挂载正常且未被误选为“随系统盘一同重置”,原有数据盘里的文件是完好无损的。

但为了确保万无一失,以及后续迁移的顺畅,你需要按照以下逻辑进行操作和排查:

1. 确认磁盘挂载状态与分区类型

在动手之前,先登录现有服务器,搞清楚两块盘的情况:

  • 系统盘:通常容量较小(如 40G-100G),包含 /boot, / (根目录), swap 等。
  • 数据盘:容量较大,存放网站代码、数据库、用户上传文件等。

执行 lsblk 命令查看磁盘结构。假设你的系统盘是 vda,数据盘是 vdb。

关键点检查:

  • 确认数据盘是否已经格式化并挂载到了某个目录(如 /data)。
  • 确认数据盘的 UUID 没有改变(虽然换系统通常不会改数据盘 UUID,但以防万一)。

2. 备份!备份!备份!

不要相信任何“绝对安全”的承诺。在执行任何高风险操作前,务必做好以下备份:

  • 快照策略:在控制台为你的数据盘单独创建快照。这是最底层的保障。如果换系统后数据盘丢失或损坏,可以通过快照回滚。
  • 重要数据本地备份:将关键配置文件、数据库 dump 文件打包下载到本地电脑。

3. 执行更换操作系统操作

登录云厂商控制台(以阿里云/腾讯云为例):

  1. 找到实例列表,选择目标 ECS/CVM 实例。

  2. 点击 “更多” -> “云盘和镜像” -> “更换操作系统”(不同厂商叫法略有差异,但逻辑一致)。

  3. 关键步骤:在选择新系统(Ubuntu)时,注意看是否有 “保留数据盘” 或 “不重置数据盘” 的选项。务必勾选此项!

    • 有些厂商默认会提示你“这将清除所有数据”,如果你看到这种警告,请仔细核对是否只选择了系统盘。
    • 大多数现代云平台,更换系统镜像的操作仅作用于系统盘卷。数据盘作为独立卷存在,不受影响。
  4. 提交工单或直接重启实例(视厂商支持情况而定)。

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

常见情况:

  1. 数据盘已自动挂载:恭喜你,直接继续下一步。

  2. 数据盘未挂载:说明 /etc/fstab 中可能缺少对应条目,或者 UUID 发生了变化(极少见)。你需要手动挂载:

    # 假设数据盘是 /dev/vdb,你想挂载到 /data
    mkdir -p /data
    mount /dev/vdb /data
    
    # 验证数据是否还在
    ls -l /data

B. 持久化挂载配置(重要)

如果只是临时 mount,重启后数据盘会再次丢失。必须将其写入 /etc/fstab。

  1. 获取数据盘的 UUID:

    blkid /dev/vdb
  2. 编辑 fstab:

    sudo nano /etc/fstab
  3. 添加一行(使用 UUID 比使用 /dev/vdb 更稳定,防止磁盘顺序变化):

    UUID=你的数据盘UUID  /data  ext4  defaults,nofail  0  2

    注:文件系统类型可能是 ext4 或 xfs,根据实际格式化的类型填写。

  4. 测试配置是否正确:

    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 常用 firewalld 或 iptables,Ubuntu 新版默认用 ufw。你需要重新配置端口开放规则。

5. 特殊情况处理:如果数据盘没有自动挂载?

极少数情况下,云厂商的镜像初始化脚本可能没有识别出旧的数据盘。此时可以手动创建挂载点并绑定。

另外,注意检查 LVM 使用情况。如果你的数据盘是在 CentOS 上使用了 LVM(逻辑卷管理),那么在 Ubuntu 上可能需要加载 lvm2 包才能识别:

sudo apt install lvm2
sudo vgscan
sudo lvscan

总结

  1. 数据盘本身不会被删除,只要你在控制台操作时确认只更换系统盘。
  2. 首要动作是打快照,这是最后的救命稻草。
  3. 重点在于适配:挂载方式、环境变量、Web 服务用户权限、防火墙规则。
  4. 不要在原服务器上直接“格式化”或“重装”,一定要通过云控制台的“更换操作系统”功能,它本质上是替换系统盘镜像,数据盘保持独立。

这样做,既能实现从 CentOS 到 Ubuntu 的平滑过渡,又能保证业务数据的安全。