更换系统镜像时如何保留原有数据盘内容?

在更换系统镜像(如重装操作系统或更换云服务器的系统盘)时,保留原有数据盘内容的关键是:将数据存储在独立于系统盘的数据盘(挂载的磁盘)上,并确保在更换系统镜像时不格式化或替换该数据盘

以下是具体操作建议和步骤:


✅ 一、前提条件:使用独立的数据盘

  1. 系统盘 vs 数据盘

    • 系统盘:安装操作系统,更换镜像时通常会被替换或格式化。
    • 数据盘:用于存储用户数据,可以独立于系统盘存在。
  2. 确保数据已存放在数据盘中

    • 将重要数据(如网站文件、数据库、配置文件等)保存在挂载的数据盘上,而不是系统盘的 /home/opt/var 等目录。

✅ 二、云服务器场景(如阿里云、腾讯云、华为云等)

操作步骤:

  1. 创建或已有数据盘并挂载

    • 在创建云服务器时,添加一块独立的数据盘(云硬盘)。
    • 登录系统后,格式化并挂载该数据盘(例如挂载到 /data/mnt/data)。
      mkfs.ext4 /dev/vdb        # 格式化(首次)
      mount /dev/vdb /data      # 挂载
      echo '/dev/vdb /data ext4 defaults 0 0' >> /etc/fstab  # 开机自动挂载
  2. 将应用数据迁移到数据盘

    • 例如迁移 MySQL 数据目录、网站根目录等至 /data
  3. 更换系统镜像时注意

    • 在控制台“更换系统盘”或“重装系统”时:
      • 仅更换系统盘,不勾选“同时释放数据盘”或“格式化数据盘”选项
      • 确保只替换系统盘,保留原数据盘不变。
  4. 更换完成后重新挂载数据盘

    • 新系统启动后,手动或通过 fstab 自动挂载原数据盘。
    • 检查数据是否完整:
      ls /data
  5. (可选)重新配置服务指向原数据路径。


✅ 三、物理机或虚拟机本地环境

  1. 使用多分区或多个硬盘

    • 系统安装在 /dev/sda1,数据存放在 /dev/sda2/dev/sdb
    • 重装系统时:
      • 选择“自定义安装”。
      • 仅格式化系统分区(如 /),不要格式化数据分区(如 /data
      • 正确挂载原有数据分区。
  2. 编辑 /etc/fstab 确保数据盘开机自动挂载。


✅ 四、注意事项

  • ❗ 更换系统镜像前务必 备份关键数据
  • 记录数据盘的设备名(如 /dev/vdb)和挂载点。
  • 避免在系统盘存放业务数据。
  • 使用 UUID 挂载更稳定(可通过 blkid 查看):
    blkid /dev/vdb
    # 输出示例:/dev/vdb: UUID="xxxx-xxxx" TYPE="ext4"

    然后在 /etc/fstab 中使用 UUID 挂载:

    UUID=xxxx-xxxx /data ext4 defaults 0 0

✅ 总结

关键点 建议
数据位置 存放在独立数据盘
更换镜像 仅更换系统盘,不动数据盘
挂载 确保新系统能正确识别并挂载原数据盘
备份 更换前做快照或备份

只要遵循“系统与数据分离”的原则,更换系统镜像时就能安全保留原有数据。