# 系统迁移与克隆

URL: https://caijiao.org/rockylinux/system-migration
Source: docs/rockylinux/system-migration.md
Description: 本文介绍 Rocky Linux 系统迁移与克隆的实用方法，包括从 CentOS/RHEL 迁移、使用工具迁移配置、磁盘克隆与虚拟机迁移。

企业或个人在升级、硬件更换或迁移环境时，需要保证系统和数据完整无损。  
本文提供 Rocky Linux 系统迁移与克隆的最佳实践方法。

## 一、迁移场景

1. **从 CentOS 迁移到 Rocky Linux**
   - CentOS 8 结束支持，推荐迁移到 Rocky Linux 8 或 9
2. **从 RHEL 迁移到 Rocky Linux**
   - 用于节省商业订阅成本，同时保持二进制兼容
3. **物理机到虚拟机迁移（P2V）**
4. **虚拟机迁移或克隆（V2V）**

## 二、CentOS/RHEL 到 Rocky Linux 迁移

### 1. 使用官方迁移工具

Rocky Linux 提供 `migrate2rocky` 工具实现无缝迁移：

```bash
sudo dnf install -y https://dl.rockylinux.org/pub/rocky/rocky-release-latest.noarch.rpm
sudo dnf install -y epel-release
sudo dnf install -y migrate2rocky
sudo migrate2rocky -r
```

> 功能：
>
> - 替换 CentOS/RHEL 核心包
> - 保留现有用户、服务与配置
> - 更新 yum/dnf 源到 Rocky Linux 官方源

### 2. 迁移前检查

```bash
rpm -qa | grep centos
cat /etc/os-release
```

确保识别到当前版本信息，避免迁移失败。

## 三、系统配置迁移

1. **网络配置**

   - 复制 `/etc/sysconfig/network-scripts/` 或 `nmcli` 配置

2. **用户与权限**

   - `/etc/passwd`、`/etc/group`、`/etc/shadow`

3. **服务与自定义应用**

   - `/etc/systemd/system/`
   - `/usr/local/bin/` 自定义脚本

4. **数据库**

   - 使用 `mysqldump` 或 `pg_dump` 备份数据库
   - 迁移后导入

## 四、磁盘克隆方法

### 1. 使用 `dd` 完整克隆

```bash
sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync
```

> 注意：确保目标磁盘容量 >= 源磁盘
> `dd` 是低级别字节拷贝，可复制整个系统和分区表

### 2. 使用 Clonezilla

Clonezilla 提供图形化磁盘克隆与备份功能：

- 启动 Clonezilla Live
- 选择 `device-device` 或 `device-image` 模式
- 克隆系统分区或整个磁盘到另一台机器或硬盘

### 3. 使用 `rsync` 增量迁移

适合不同硬盘或远程迁移：

```bash
rsync -aAXv --exclude={"/proc/*","/sys/*","/dev/*","/tmp/*","/run/*"} / /mnt/target/
```

然后安装 bootloader 并更新 `/etc/fstab`。

## 五、虚拟机迁移（V2V）

1. **导出虚拟机**

   - VMware：导出 OVF/OVA
   - KVM/QEMU：`virsh dumpxml` + `qemu-img convert`

2. **导入目标环境**

   - 导入 OVF/OVA 或使用 `virt-install` 创建虚拟机
   - 挂载原磁盘镜像，调整网络与 UUID

3. **系统启动验证**

   - 检查网卡配置、SELinux 和防火墙
   - 测试关键服务启动

## 六、迁移注意事项

| 项目       | 注意点                                               |
| ---------- | ---------------------------------------------------- |
| 内核版本   | 源系统与目标系统内核版本最好一致，避免驱动兼容性问题 |
| Bootloader | 使用 grub2 安装或更新引导配置                        |
| SELinux    | 确认策略是否需要重新生成或恢复上下文                 |
| 服务依赖   | 检查 systemd 单元依赖，防止服务无法启动              |
| 数据备份   | 迁移前务必完整备份系统与数据库                       |

## 七、总结

- Rocky Linux 提供官方迁移工具 `migrate2rocky`，可无缝替换 CentOS/RHEL
- 磁盘克隆可使用 `dd`、Clonezilla 或 `rsync` 实现
- 虚拟机迁移需调整网络、UUID 和引导加载
- 迁移前必须做好备份与迁移验证，保证业务连续性

> 💡 提示：企业迁移生产环境前，建议先在测试环境模拟整个迁移流程，确保脚本与工具的兼容性。
