无法挂载 btrfs 子卷 - “没有这样的文件或目录”

无法挂载 btrfs 子卷 - “没有这样的文件或目录”

我在使用 btrfs (4.4) 机器(服务器 16.04)时遇到了这个问题

设想

/ubuntu server 16.04 安装在 btrfs 上,带有标准子卷home

我想要实现的目标

放入/var它自己的子卷(目前在同一个硬盘上)

我做了什么

  1. sudo mkdir /subvol
  2. sudo btrfs subvolume create /subvol/var
  3. sudo rsync -azv /var/* /subvol/var/
  4. 在 /etc/fstab 中为子卷创建一行(我从 @home 子卷的现有行中复制了该行。它看起来像这样
    UUID=79a74d84-2f0e-4098-9c58-f721eab913ee /mnt/var btrfs \ defaults,compress=lzo,subvol=@var 0 2

  5. sudo mount -a

预期行为

新的子卷var(位于 /subvol/var)被挂载到/var

实际行为

:~$ sudo mount -a mount: mount(2) failed: No such file or directory

不确定这种方法总体上是否好。这是我能想到的办法。有什么提示可以告诉我我的问题是什么吗?

答案1

根据ubuntu wiki 上的 btrfs 部分(假设该布局仍然适用),默认设置是包含@@home子卷的 btrfs 根。

/subvol/var这里大概是在挂载内部创建的@,因此它相对于 btrfs 根目录(subvolid=5)的路径将是<FS_TREE>@/subvol/var,下面的说明都是基于这个假设。

因此,您可能希望将子卷移动到<FS_TREE>/@var,例如

mnt -o subvolid=5 /mnt
mv /mnt/@/subvol/var /mnt/@var
umount /mnt

并保持 fstab 条目原样。

或者,编辑 fstab 条目以匹配当前位置

UUID=79a74d84-2f0e-4098-9c58-f721eab913ee  /mnt/var btrfs \
defaults,compress=lzo,subvol=@/subvol/var   0   2

相关内容