LXD 的两大备份策略
LXD 提供了两种强大而灵活的备份恢复机制,适用于不同的场景:
- 快照 (Snapshots): 用于快速、即时的就地备份和恢复,非常适合在进行危险操作前创建“后悔药”。
- 导出/导入 (Export/Import): 用于创建完整的、可移植的备份文件,适合离线存储、归档或在不同主机之间迁移实例。
方法一:使用快照 (Snapshots) 进行快速回滚
快照是实例在特定时间点的完整状态记录(包括文件系统和配置)。它创建速度极快,并且(在使用 ZFS 或 Btrfs 时)几乎不占用额外空间。
1. 创建快照
为名为 `my-web-server` 的实例创建一个名为 `before-update` 的快照:
lxc snapshot my-web-server before-update
2. 查看快照
你可以使用 `lxc info` 命令查看一个实例拥有的所有快照:
lxc info my-web-server
3. 从快照恢复
如果更新操作失败,你可以瞬间将实例恢复到快照的状态:
lxc restore my-web-server before-update
注意: 恢复操作会覆盖实例当前的所有更改。
4. 删除快照
确认不再需要快照后,可以将其删除以释放资源:
lxc delete my-web-server/before-update
方法二:导出/导入进行完整备份和迁移
此方法会将你的实例(或其快照)打包成一个单一的 `.tar.gz` 压缩文件,你可以将其下载、存储在任何地方,或在另一台 LXD 主机上导入。
1. 创建一个快照(推荐)
为了保证备份数据的一致性,最佳实践是先为正在运行的实例创建一个快照,然后导出这个快照。
lxc snapshot my-web-server backup-snap
2. 导出实例
将刚刚创建的快照导出为一个名为 `web-server-backup.tar.gz` 的文件:
lxc export my-web-server/backup-snap web-server-backup.tar.gz
提示: 你也可以直接导出正在运行的实例(`lxc export my-web-server ...`),但这可能会导致数据不一致。导出快照是更安全的选择。
3. 导入实例
你可以将备份文件导入为一台全新的实例。这可以在同一台主机上(用于克隆),也可以在另一台主机上(用于迁移)。
# 在目标主机上运行
lxc import web-server-backup.tar.gz my-restored-server
命令执行完毕后,一个名为 `my-restored-server` 的新实例就会被创建,其状态与备份时完全相同。
总结:如何选择?
特性 | 快照 (Snapshot) | 导出/导入 (Export/Import) |
---|---|---|
核心用途 | 快速、临时的状态保存和回滚 | 完整的、可移植的备份和迁移 |
速度 | 极快,几乎是瞬间完成 | 较慢,需要压缩和读写文件 |
存储位置 | 与原实例存储在同一存储池中 | 独立的压缩文件,可存放在任何位置 |
最佳场景 | 在升级软件、修改重要配置前 | 日常/每周备份、服务器迁移、实例归档 |