Btrfs 文件系统使用术语subvolume
、root-volume
、snapshot
、top-level
,default 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
绕过默认子卷设置。