递归 zfs 快照的挂载在默认挂载目录 .zfs/snapshot 中的行为如何?

递归 zfs 快照的挂载在默认挂载目录 .zfs/snapshot 中的行为如何?

我有一个名为“data”的 zfs 池,我也将其放在其中/var/lib/docker。由于 docker (就我而言;对于这个问题,docker 是无关紧要的)zfs 列表看起来像这样:

data                                                                        1.33G   133G      660M  /data
data/1366b029121dbc907878e8a6fc5c481244b7aac11757fe63b94384fe64e48c6d       6.02M   133G      511M  legacy
data/272a5f859a53ec996868fb0e4953f2219aadbd96c0cd3b8b9be09ee550b7d0e5        236K   133G      511M  legacy
data/284641b6a43d2446be81ddf21fbeb70b781f6fb5f70025d88c44c19ed4728541        288K   133G  
...

现在,如果我执行快照,我会使用递归选项(zfs 快照 -r 数据@快照名称)以获得所有数据集的快照(我的 - /data - 和 docker 的)。

默认情况下快照安装在池/.zfs/快照/快照名称

我可以安全使用吗池/.zfs/快照/快照名称作为(一致的,因此是快照)备份的源目录,还是我丢失了一些数据,zfs 是否递归地挂载我的快照?我在文档中没有找到任何内容。

答案1

可以递归地制作快照。但挂载快照不会挂载旧快照。您可以使用递归挂载快照的脚本到特定目录,然后从那里备份。

但对于Docker来说,使用这种方法会排除一些数据。特别是具有legacy挂载点(且挂载点设置为)的数据集none。 ZFS 不会在启动时自动挂载它们,并且由于挂载点不包含文件系统路径(与您的示例中相反/data),因此在执行备份时挂载快照的位置并不明显。

我从中了解到的这个答案,是 Dockerlagacy数据集包含容器的映像。因此您可能根本不需要备份该数据。

从你的输出来看,zfs list你似乎没有为 Docker 制作专用数据集。这就是为什么这些 Docker 旧数据集存储在父数据集(您称为 的数据集data)下。我个人更喜欢制作一个专用的 Docker 数据集(也可以在下面data)来将这些遗留共享嵌套在 Docker 数据集下,如下所示:

zfs list -r data
NAME                                                                                    USED  AVAIL     REFER  MOUNTPOINT
data                                                                                   3.57G  2.63T      200K  /mnt/data
data/jip                                                                               2.27G  2.63T      208K  /mnt/data/jip
data/jip/docker                                                                         108M  2.63T     1000K  /mnt/data/jip/docker
data/jip/docker/4142fdca5ac3e7dbd12c0518e3377eb47a2c1a8599f564e07e08e5b25944146c        396K  2.63T      388K  legacy
data/jip/docker/43023791ce39ba890e8de50809cacda45a884b5990e4923fd6563eaed58e6b42        168K  2.63T      396K  legacy
data/jip/docker/98a9127ff2dd5fd2d0ea52f5e6343e85a8d2a80aa4cd2ffcf1c92e9b2d2b371f        101M  2.63T      102M  legacy
data/jip/docker/b68a666a8602cdbc3639b010558a0aa5f92f0b765a6efc15c4f7f30651ba2860       1.05M  2.63T      102M  legacy
data/jip/docker/b68a666a8602cdbc3639b010558a0aa5f92f0b765a6efc15c4f7f30651ba2860-init   216K  2.63T      102M  legacy
data/jip/home                                                                          2.16G  2.63T     36.9M  /mnt/data/jip/home

相关内容