无法挂载 btrfs 子卷

无法挂载 btrfs 子卷

我有一个很大的旧 BTRFS RAID 阵列,其中有几个子卷:

# btrfs subvolume list -u /bulk
ID 256 gen 56429 top level 5 uuid 11b16b2e-8f75-ec46-8cgd-4a001c70a4ba path @
ID 257 gen 56428 top level 256 uuid 0c81c066-dge1-464d-bd50-6f56e9d83e0a path @mine
ID 258 gen 56430 top level 256 uuid 6139b708-3226-324b-8bae-9eb810cfd226 path @shared

根子卷 ,通过 fstab@安装在bulk,我希望将@mine子卷安装在我的主目录中的某个位置,但由于某种原因它一直失败:

# mount -t btrfs -o subvol=/@mine,defaults,nossd,user /dev/sdd2   /home/me/bulk
mount: /home/me/bulk: mount(2) system call failed: No such file or directory.
       dmesg(1) may have more information after failed mount system call.

有趣的是,主子卷没有这样的问题:

# mount -t btrfs -o subvol=/@,defaults,nossd,user /dev/sdd2   /home/me/bulk

以上直接起作用,没有抱怨。当我尝试通过 挂载时,会发生同样的问题/etc/fstab。我也尝试过通过 UUID 挂载,但根本找不到子卷 UUID,并且@share显示完全相同的行为。

如果我安装@而不是子卷,我可以作为用户正常访问所有内容,包括子卷,没有任何读/写问题 - 但我真的更喜欢只将特定的子卷安装在我的主目录中,并且我我很确定这一定是可能的。 (是的,我在安装后立即卸载了“/@”,因此安装点是空的)

与根卷相比,挂载子卷是否需要任何特定选项?

如果这是相关的:我使用的是 Manjaro Plasma,内核版本 5.15.109-1-MANJARO

答案1

子卷列表有点误导,至少对我来说是这样。解决子卷的正确方法是/@/@mine等等。提示位于子卷列表中,其中显示:

ID 256 gen 56429 top level 5 uuid 11b16b2e-8f75-ec46-8cgd-4a001c70a4ba path @
ID 257 gen 56428 top level 256 uuid 0c81c066-dge1-464d-bd50-6f56e9d83e0a path @mine

请注意top level 256第二行中的 ,它表示@mine嵌套在其中@(其 ID 为 256)。

因此,正确的安装命令是

mount -t btrfs -o subvol=/@/@mine,defaults,nossd,user /dev/sdd2   /home/me/bulk

……就这样,完成了。

为了完整起见,这是我放入的相应行/etc/fstab,它也有效:

UUID=xxxUIDxxx-ofthe-btrfs-rootxxx /home/me/bulk btrfs subvol=/@/@mine,defaults,nossd,user 0 0

我通过 UUID 进行安装,因为/dev/sdd2如果添加或删除其他驱动器,通过设备(例如)安装可能会失败。我还了解到,显示的子卷 UUIDbtrfs subvolume list只能由某些人访问btrfs命令访问但不能以其他方式使用,因此 mount 命令需要寻址根目录,然后提供子卷路径。

答案2

我猜从那时起这个问题就已经解决了。

对于内核 6.6.26-1-MANJARO:

sudo btrfs subvolume create /home/user/test
sudo btrfs subvolume list /
ID 257 gen 90511 top level 5 path @home
ID 627 gen 90465 top level 257 path @home/user/test

它可以用这个 fstab 完美地安装它:

UUID=74684edf-64af-4e9a-a7ae-33842a4ff298   /home              btrfs   subvol=/@home,lazytime,compress-force=zstd:1             0 0 
UUID=74684edf-64af-4e9a-a7ae-33842a4ff298   /home/user/test    btrfs   subvol=/@home/user/test,lazytime,compress-force=zstd:1   0 0

关键部分是

subvol=/@home/user/test

请注意,不需要在同一位置手动安装子卷,它会自动完成。不过,它可以手动安装到 /test 。

相关内容