btrfs 文件系统的根/子卷是什么?

btrfs 文件系统的根/子卷是什么?

Btrfs 文件系统使用术语subvolumeroot-volumesnapshottop-leveldefault subvolume这让我有些困惑。

一个例子是关于子卷的 btrfs wiki 页面其中指出

新创建的文件系统也是一个子卷,称为顶级,内部有一个 id 5。该子卷不能被删除或被另一个子卷替换。

但是,随着使用诸如btrfs-progs命令之类的工具

  • btrfs 子卷列表
  • btrfs 子卷显示

如图所示,术语子卷并不真正适用于根卷(请参见这另一个问题)。此外,该术语top-level(如上述命令的输出中所示)并不真正限于子卷 ID 为 5 的子卷/根卷。最后,您似乎无法使用btrfs send根卷,而只能使用子卷(再次与上面的定义形成对比) 。

有什么帮助吗?

答案1

解释这一点的最简单方法就是与 ZFS 进行类比。 BTRFS 中的子卷在功能上等同于 ZFS 中的 zvol,只不过它们本质上植根于文件系统本身的某个位置。

更一般地说,子卷由一组文件系统内部数据结构组成,这些数据结构大多独立于树的其余部分。根据这个定义以及代码本身的内部结构,顶级或根子卷(subvolid 5)在技术上是一个子卷,但它被显示有关子卷信息的命令特殊对待,因为您无法使用您可以对常规子卷进行快照(例如,您无法对根子卷进行快照,也无法删除它)。从用户的角度来看,唯一需要注意的是根子卷是子卷是在安装时-o subvolid=5绕过默认子卷设置。

相关内容