基于惰性水合的快速快照至液滴 | AI生成和翻译
问题: 为什么从一个130GB的GPU快照创建droplet如此之快,即使创建快照本身需要20多分钟?
答案:
为什么快照创建很慢
当你创建一个快照时,DigitalOcean需要:
- 静止/冻结磁盘状态
- 读取你droplet磁盘上的每一个已用块(130GB的实际数据)
- 压缩并去重
- 传输并存储到他们的对象存储(类似S3)
这是一个完整的磁盘读取+网络传输+压缩流程。130GB需要20多分钟是合理的。
为什么从快照创建droplet很快
这是关键——DigitalOcean使用写时复制(CoW)懒加载,而不是完全恢复:
快照(存储在对象存储中)
│
▼
新Droplet启动 ──► 仅立即复制元数据+启动块
其余块按需获取(在访问时)
Droplet立即启动,作为一个薄克隆。块会按需从快照存储中懒加载,当你的工作负载访问它们时。这与以下技术相同:
- AWS EBS快速快照恢复
- VMware链接克隆
- Docker层(overlay2)
- ZFS/btrfs写时复制克隆
这对你的实际意义
t=0s Droplet创建,获得IP,SSH可访问 ← 即时
t=30s 你SSH登录,运行nvidia-smi / rocm-smi ← 工作
t=60s 你开始加载一个70B模型 ← 首次访问,块被获取
t=?? 块在后台完全加载 ← 对你透明
当你第一次访问尚未加载的数据时(加载大模型、读取数据集),你可能会注意到磁盘读取稍慢——这就是懒加载发生的过程。之后,它会被缓存在droplet的本地SSD上。
类比
可以这样理解:
- 创建快照 = 复印整本书(慢,必须读取每一页)
- 从快照创建Droplet = 获得一张指向这本书的借书卡(即时),只有当你翻开时才将实际页面移到你的桌上
对你工作流程的实际影响
既然你正在使用MI300X并可能加载大模型:
# 创建droplet后,你可以选择预热磁盘
# 以避免实际工作中的懒加载延迟
dd if=/dev/vda of=/dev/null bs=4M status=progress
或者让它自然加载——DigitalOcean无论如何都会在后台进行。当你执行apt update、设置tmux并准备好环境时,大多数关键块已经是本地状态了。
这就是为什么快照→droplet是你每小时约2美元的GPU会话的正确工作流程:用完后销毁,几秒内恢复,仅按活跃计算付费。