【发布时间】:2014-07-08 07:09:17
【问题描述】:
假设一个名为“child-subvol”的 btrfs 子卷在另一个子卷中,比如“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该被拍摄快照。
由于 btrfs 文件系统中还没有递归快照支持,如何实现呢?
【问题讨论】:
标签: c linux ubuntu filesystems btrfs
假设一个名为“child-subvol”的 btrfs 子卷在另一个子卷中,比如“root-subvol”,如果我们拍摄“root-subvol”的快照,那么“child-subvol”也应该被拍摄快照。
由于 btrfs 文件系统中还没有递归快照支持,如何实现呢?
【问题讨论】:
标签: c linux ubuntu filesystems btrfs
第 1 步: 获取所有驻留的 btrfs 子卷。最好按照以下命令实现的排序顺序。
$ btrfs 子卷列表 --sort=-path
第 2 步: 按照获得的优先顺序,执行删除/快照操作。
$ btrfs 子卷删除
【讨论】:
我也一直想知道这一点,但无法在网上找到任何推荐的最佳做法。应该可以编写脚本来创建处理递归的快照。
【讨论】:
正如 Peter R 所建议的,您可以编写脚本。但是,如果要发送子卷,则必须将其标记为只读,并且不能递归地快照到只读卷中。
为了解决这个问题,您可以在处理递归的脚本中使用btrfs-property(通过this answear找到),使其(在拍摄所有快照后)将快照标记为只读,以便您可以发送它们。
或者,你可以这样做
cp -a --reflink=always /path/to/root_subvol/ /path/to/child_subvol/
(--reflink=auto 以前从未为我工作过,还可以帮助您发现错误)
它应该很快,并且具有与快照相同的优势,尽管您不保留旧的子卷结构。
【讨论】: