上关于子卷的 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 甚至没有正确报告所有普通快照,这让我相信所有不显示子卷的问题也有可能是一个错误。
更重要的是,我希望有人能在回答这个问题时对此进行一些阐述。