为什么默认的顶级子卷(id=5)没有显示在 btrfs 子卷列表 -a 中?

为什么默认的顶级子卷(id=5)没有显示在 btrfs 子卷列表 -a 中?

关于子卷的 btrfs wiki 页面它说默认情况下,在创建 btrfs (即make.btrfs <devicenode>)时顶层创建子卷 ID=5 的子卷。

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

我尝试使用 来显示这个子卷btrfs subvolume list -a /btrfs.mountpoint,但它没有显示,为什么?

更新 在尝试(自助)时,我试图找到有关此顶级子卷 ID=5 的更多信息,该子卷是(如上所述)在上面创建的。因此,我尝试挂载到真正的 btrfs 根(我应该是子卷 id=0)并查看其内容,如下所示:

# mount a specific subvolume of a btrfs 
$> mount -t btrfs -o subvolid=0 /dev/sda /mnt
# show the output of the "."-entry of the subvolume-root (show inodevalue)
$> ls /mnt -lai | head -n 2
total 112656
 256 drwxr-xr-x  1 root root      432 May 25 09:08 .

再次卸载后我做了同样的事情(这次使用子卷 ID=5)

# mount a specific subvolume of a btrfs 
$> mount -t btrfs -o subvolid=5 /dev/sda /mnt
# show the output of the "."-entry of the subvolume-root (show inodevalue)
$> ls /mnt -lai | head -n 2
total 112656
 256 drwxr-xr-x  1 root root      432 May 25 09:08 .

它产生与根子卷和 ID=5 相同的输出(就像子卷 ID=5 一样)。也许这说明了为什么它不通过命令显示btrfs subvolume list -a

无论如何,因为即使是根卷也被分配了一个子卷(至少与挂载一起使用),所以在 处没有显示任何内容似乎很奇怪btrfs subvolume list -a

(更新修正了粘贴错误的btrfs subvolume命令的错误)

更新2

btrfs和的手册页btrfs-progs以及引用的 wiki 页面(参见问题开头)在阐述如何创建文件系统卷根、子卷、子卷......btrfs 方面并不是非常精确。

根据邮件列表上的一些解释,这是:

[a]所有子卷都可以从使用时安装的卷访问-o subvolid=0.(请注意0不是根卷的真实ID, 只是安装它的快捷方式.) [强调](来源https://www.mail-archive.com/[电子邮件受保护]/msg17141.html

这让我相信,尽管第一次引用,子卷 id 5 是根(至少在我的情况下)。

无论如何,几年前 btrfs 邮件列表显示一个案例其中,btrfs subvolume list 甚至没有正确报告所有普通快照,这让我相信所有不显示子卷的问题也有可能是一个错误。

更重要的是,我希望有人能在回答这个问题时对此进行一些阐述。

相关内容