![对于使用 BTRFS 存储后端的 LXD,合适的备份策略是什么](https://linux22.com/image/769349/%E5%AF%B9%E4%BA%8E%E4%BD%BF%E7%94%A8%20BTRFS%20%E5%AD%98%E5%82%A8%E5%90%8E%E7%AB%AF%E7%9A%84%20LXD%EF%BC%8C%E5%90%88%E9%80%82%E7%9A%84%E5%A4%87%E4%BB%BD%E7%AD%96%E7%95%A5%E6%98%AF%E4%BB%80%E4%B9%88.png)
我即将从头开始重新配置我的家庭服务器,并想知道备份我的 LXD 容器的最佳策略是什么。同时,我正在运行 Ubuntu 20.04 LTS,并将一些服务配置为作为 LXD/LXC 容器运行。例如:
- 运行 seafile 的容器“cloudserv”
- 运行 nginx 和 MariaDB 的容器“webservice”
这两个容器位于我的 SSD 上,使用 btrfs 文件系统。对于数据存储,我使用磁盘阵列(也使用 BTRFS),其中我创建了另一个 LXC 存储池,其中包含一个存储卷,该存储卷连接到 seafile 容器以保存所有数据。布局如下:
固态硬盘
- BTRFS 文件系统
- 存储池“默认”
- 容器“cloudserv”
- 容器“webservice”
- 图片
- 存储池“默认”
硬盘
- BTRFS 文件系统
- 存储池“DataPool1”
- 自定义存储卷“seafile-data”-->附加到容器“cloudserv”
- 存储池“DataPool1”
通过使用 BTRFS,我希望能够利用 BTRFS 快照和发送和接收工具,轻松地将容器和存储卷作为子卷传输到例如带有 BTRFS 卷的 RasPi。但读取例如LXD 手册或者如何备份和恢复 LXD 容器我觉得我总是必须创建一个 tarball 来备份一个实例,然后才能将其传输。这意味着我实际上失去了一些 BTRFS 吸引人的功能,比如能够发送/接收子卷/快照以及对我的 LXC 实例和数据进行增量备份。
我遗漏了什么吗?有人能提供一些有关使用 BTRFS 的 LXD/LXC 的适当备份工作流程的提示吗?
答案1
如果你在远程服务器上安装了 LXD,并且两个服务器都使用 Btrfs,则可以使用优化实例传输像这样:
lxc remote add mybtrfsremotebackupserver XXX
lxc snapshot mycontainer snap1
lxc copy mycontainer mybtrfsremotebackupserver: --verbose
它将用于btrf-send
容器及其所有快照的初始传输。
然后,你就有了一种非常方便的方式来维护容器及其快照,只需使用选项发送增量更改--refresh
(LXD 3.7)
lxc copy --refresh mycontainer mybtrfsremotebackupserver: --verbose
但不幸的是rsync
,至少在 LXD 4.0 中它使用了,因此您将失去优化btrfs-send
。
检查此问题以获取更多信息:功能请求:--snapshots-only 复制标志
此外,“刷新对自定义卷副本的支持”但我不确定它是否使用优化路径,或者它是否对您的目标有用。您还可以在 lxc 导出中检查 --optimized-storage
问候