这是最近的 linux 内核的假设设置:
/dev/sda1 is formatted as btrfs
Run Code Online (Sandbox Code Playgroud)
然后我运行以下命令在 /dev/sda1 的根目录上创建两个子卷:
$ mount /dev/sda1 /mnt
$ btrfs subvolume create /mnt/a
$ btrfs subvolume create /mnt/b
$ umount /mnt
Run Code Online (Sandbox Code Playgroud)
现在我希望在两个不同的挂载点上同时挂载这两个子卷:
$ mount -o subvol=a /dev/sda1 /a
$ mount -o subvol=b /dev/sda1 /b
Run Code Online (Sandbox Code Playgroud)
这就是问题所在。我用一个文件作为块设备(使用循环)尝试了这个,它工作正常(至少对于每个文件中的两个文件)。但是,在安装了一个完整的系统后,将根目录放在一个子卷中,将主目录放在另一个子卷中,在启动时都挂载,我收到一个错误,告诉我底层设备是“写保护的”,并且第一次尝试读取主目录目录内容导致内核崩溃。
我想知道我想要做什么(使用不同的挂载选项多次挂载一个块设备)实际上是否被 btrfs 或 os.
小智 5
您可以定义子卷 a 作为默认的根。
在这种情况下,它将自动挂载而不是 btrfs 根目录。
假设你的 btrfs 树看起来像这样
/
|
|----a(包含/目录的子卷)
|
|----b(包含主目录的子卷)
为了将 a 设置为默认值:
mount /dev/sda1 /mnt
btrfs subvolume create /mnt/a
btrfs subvolume set-default /mnt/a
Run Code Online (Sandbox Code Playgroud)
现在你可以挂载你的 btrfs 文件系统,然后是子卷 b
mount -o defaults /dev/sda1 /a
mount -o defaults,subvol=b /dev/sda1 /b
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3927 次 |
| 最近记录: |