btrfs 子卷有什么意义?

Mel*_*lab 12 linux filesystems mount btrfs bind-mount

Btrfs wiki 的系统管理员指南(此处)说道:

Btrfs 子卷可以被视为 POSIX 文件命名空间。

我记得一开始它说子卷一个“POSIX 文件命名空间”,而不是被认为“POSIX 文件命名空间”。Google 搜索"POSIX file namespace"仅显示有关 Btrfs 的内容,因此该短语没有帮助。

Btrfs 中的子卷到底是什么?如果子卷可以作为文件系统根目录中的目录进行访问,那么挂载子卷与将任何其他文件系统上的目录绑定挂载到另一个位置(无需中间挂载所述文件系统的根)有何不同?这就是我的意思:

# standard bind mount
mkdir /mnt/data
mkdir /mnt/docs
mount /dev/sda2 /mnt/data
mount --bind /mnt/data/docs /mnt/docs
umount /mnt/data
rmdir /mnt/data

# hypothetical method of directly mounting
# a file/directory on a filesystem
# to some path that achieves the same
# as the above
mkdir /mnt/docs
mount -o path_on_fs=/docs /dev/sda2 /mnt/docs

# if /docs on sda2 was a subvolume
mkdir /mnt/docs
mount -o subvol=/mnt /dev/sda2 /mnt/docs
Run Code Online (Sandbox Code Playgroud)

子卷功能的目的是什么?示例:/var/lib/machines.rawBtrfs 文件系统映像,由虚拟机和/或容器使用systemd-machinedmachinectl存储。据推测,Btrfs 用于子卷。子卷为此做什么?

如果子卷对容器有用,那么它是否具有针对在不同子卷中运行的进程的内置隔离?

Tim*_*ick 15

我\xe2\x80\x99m不是专家\xe2\x80\x94甚至还没有接近!\xe2\x80\x94但是因为我\xe2\x80\x99最近读了很多关于Btrfs的文章,而且你的问题六个月来都没有得到解答,我想我\xe2\x80\x99d 试一试。

\n

以下是两个可能的用例。我不\xe2\x80\x99不知道这些是否常见或什至推荐原因(就像我说的,不是专家),但我\xe2\x80\x99ll包括我\xe2\x80\x99见过的链接他们的讨论是为了帮助你自己判断。

\n

独立快照

\n

Btrfs 快照是整个子卷的副本。这在基于快照的恢复或备份策略中可能很有用。例如,//home意味着您可以回滚系统更新而不影响用户数据;相反,您可以备份用户数据而不保留系统文件。

\n

您还可以使用子卷来排除您不想备份的目录。例如,如果/home/home/bob/Downloads是不同的子卷,则快照/home排除 bob\xe2\x80\x99s 下载。

\n

讨论:

\n\n

不同的安装选项

\n

由于每个子卷都是单独安装的,因此可以使用彼此不同的安装选项来安装它们。

\n

或者至少,\xe2\x80\x99 是理论。实际上,目前似乎每个子卷仅支持某些安装选项

\n

我不\xe2\x80\x99确切地知道这会启用什么场景(再次强调:不是专家),但我刚刚编写的一个是设置压缩,以便一个子卷针对速度进行优化,而另一个子卷针对空间进行优化。compress当然,一旦支持每个子卷。

\n

讨论:

\n\n

  • 另一个原因是每个子卷的配额。 (3认同)