![如何创建名称包含“@”的 BTRFS 子卷?](https://linux22.com/image/96447/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%90%8D%E7%A7%B0%E5%8C%85%E5%90%AB%E2%80%9C%40%E2%80%9D%E7%9A%84%20BTRFS%20%E5%AD%90%E5%8D%B7%EF%BC%9F.png)
我正在尝试自动创建和安装 btrfs 子卷。对我来说,创建它们并创建 fstab 条目很容易,但解析子卷 ID 却很难。
我注意到其他子卷具有以“@”为前缀的可预测名称,并且它们在 /etc/fstab 中以这种方式安装
UUID=280d6f04-6ad0-4647-96b9-580aec12bbdc /var/log btrfs noatime,subvol=@/var/log 0 0
事实上,通过这样的标签安装是有效的
$ mount -o subvol=@/var/log photoshop-32
使用“常规”名称安装子卷失败
$ mount -o subvol=var/users/robert/wines/photoshop-32 /var/users/robert/wines/photoshop-32/
mount: mount(2) failed: /var/users/robert/wines/photoshop-32: No such file or directory
因此,我尝试创建一个具有这样名称的子卷,但失败了
# btrfs subvolume create /var/users/robert/wines/blah/@/var/users/robert/wines/blah
ERROR: cannot access '/var/users/robert/wines/blah/@/var/users/robert/wines': No such file or directory
# btrfs subvolume create /@/var/users/robert/wines/blah
ERROR: cannot access '/@/var/users/robert/wines': No such file or directory
# btrfs subvolume create //@/var/users/robert/wines/blah
# ERROR: cannot access '//@/var/users/robert/wines': No such file or directory
如何创建名称中带有“@”的子卷?或者,如何在不需要查找子卷 ID 的情况下挂载子卷?
答案1
感谢 IRC 上的 #btrfs 频道(完整参考),我发现了以下内容:
- 这些子卷subvolumes是在
subvolid=0
子卷下创建的,默认是不挂载的 - 要创建此类子卷,请首先挂载该顶级子卷,然后在其下创建子卷
例如,在我的场景中:
# mount UUID=280d6f04-6ad0-4647-96b9-580aec12bbdc -o subvolid=0 btrfs-sys/
# tree -L 2 /mnt/btrfs-sys/
/mnt/btrfs-sys/
└── @
├── boot
├── etc
├── opt
├── srv
├── tmp
├── usr
└── var