迁移实例
当你需要更换主机、更换 GPU 型号,或者迁移到其他算力区域时,可以参考这篇文档。
说简单一点,迁移主要就是看两件事:
- 环境怎么带过去
- 数据怎么带过去
大多数场景里,最常用的就是这 5 种方式:克隆实例、复制到数据盘、自定义镜像、网络云盘,以及压缩后用 scp / rsync 传输。
先看怎么选
| 场景 | 推荐组合 | 说明 |
|---|---|---|
| 同一算力区域内更换主机或 GPU 型号 | 克隆实例 + 复制到数据盘 / 内网传输 | 最常用,也最省事 |
| 迁移到其他算力区域 | 自定义镜像 + scp / rsync / 网络云盘 | 环境和数据分开处理 |
| 只想搬数据 | 复制到数据盘 / 网络云盘 / scp | 不一定需要克隆或镜像 |
| 只想复用环境 | 克隆实例 / 自定义镜像 | 不需要重新配环境 |
这几个方法分别做什么
克隆实例
适合同区快速起一台同环境新实例。想换主机、换 GPU 型号,但又不想重新装环境时,优先考虑它。详见 克隆实例。
复制到数据盘
适合同区已有目标实例,只想把数据尽快搬过去的场景,不用重新从本地上传。详见 复制到数据盘。
自定义镜像
适合保留系统环境,尤其适合跨区迁移。常用来保存依赖、Python 环境、代码和配置,之后在目标区域直接恢复。详见 自定义镜像。
网络云盘
适合做中转站。两台实例不方便直连、需要分阶段迁移,或者想把数据在云上和本地之间来回流转时,可以用 网络云盘。
压缩 + SCP / rsync
这是最通用的方案,适合自己掌控迁移过程。常见做法是先把数据打包,再用 scp 或 rsync 传到目标实例。
bash
# 打包数据
cd /root/rivermind-data
tar czf backup.tar.gz ./*
# 传到目标实例
scp backup.tar.gz root@<目标地址>:/root/
# 在目标实例解压
tar xzf backup.tar.gz如果数据量更大,更推荐:
bash
rsync -av --progress /root/rivermind-data/ root@<目标地址>:/root/rivermind-data/常见迁移方案
1. 同区换机或换 GPU 型号
优先推荐:
如果你已经有目标实例,也可以直接自己迁数据:
- 同可用区:走内网
scp/rsync - 不方便直传:走 网络云盘
内网迁移前,可以先确认两台实例的内网 IP:
bash
hostname -I常见内网 IP 一般是 100.x.x.x、10.x.x.x、172.x.x.x。
例如:
- 实例 A:
100.81.123.97 - 实例 B:
100.67.215.205
先在实例 A 测试和实例 B 的内网连通性:
bash
ping 100.67.215.205
ssh root@100.67.215.205常见内网传输方式:
bash
# 传单个文件
scp test.txt root@100.67.215.205:/root/
# 传目录
scp -r /path/to/dir root@<目标实例内网IP>:/root/rivermind-data/
# 大目录更推荐 rsync
rsync -av --progress /root/rivermind-data/ root@<目标实例内网IP>:/root/rivermind-data/如果需要频繁传输,也可以配置免密登录:
bash
ssh-keygen
ssh-copy-id root@100.67.215.2052. 跨区迁移
跨区时,通常不要想着“一次搬完整台实例”,而是分开处理:
推荐流程:
- 备份数据并打包
- 保存 自定义镜像
- 在目标区域创建新实例
- 恢复镜像环境
- 再把数据传过去并解压
提醒
文件存储 按算力区域隔离,不能直接跨区共享;跨区时仍需要单独迁移数据。
3. 只迁数据,不迁环境
这种场景最简单,直接按数据量选方式:
迁移前准备
- 备份重要数据
- 导出依赖列表
- 记录当前环境配置
- 确认目标实例或目标区域有可用资源
bash
pip freeze > requirements.txt
conda env export > environment.yml迁移后检查
- SSH 地址和端口是否变化
- 系统环境是否完整
- 数据是否已经恢复
- Python / Conda 环境是否正常
- GPU 是否可用
- 开放端口和自定义服务是否需要重新检查
bash
nvidia-smi
python -c "import torch; print(torch.cuda.is_available())"常见问题
- 同区换机:优先 克隆实例 + 复制到数据盘
- 跨区迁移:优先 自定义镜像 +
scp/rsync/ 网络云盘 - SSH 信息变化:在控制台重新获取最新 SSH 信息
- 数据不完整:检查克隆、复制、传输或镜像恢复是否完成
