![直接挂载 btrfs 子卷或绑定挂载(如果已经可见)](https://linux22.com/image/72968/%E7%9B%B4%E6%8E%A5%E6%8C%82%E8%BD%BD%20btrfs%20%E5%AD%90%E5%8D%B7%E6%88%96%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%EF%BC%88%E5%A6%82%E6%9E%9C%E5%B7%B2%E7%BB%8F%E5%8F%AF%E8%A7%81%EF%BC%89.png)
如果
/dev/sda1
是带有 subvolroot
和 的btrfs 文件系统persistent
我已将默认子卷设置为
root
另外,我已经安装
/dev/sda1
(同样root
是默认的)/
我已将
/dev/sda1
subvolid=0 安装到/btrfs
,因此我可以访问所有其他子卷(是的,/
现在作为重复项存在/btrfs/root
,我认为这是理想的,因此这里的所有内容都被视为位于同一文件系统上)
之间有什么区别:
mount /dev/sda1 -o subvol=persistent /persistent
mount --bind /btrfs/persistent /persistent
我正在思考一些不能立即看到的差异,例如在是否进入( )persistent
中的不同文件系统的交叉方面受到不同的对待。这两个选项都应该被视为进入不同的文件系统,因此这里没有区别 - 我只是将其视为可能存在的一种差异,但这种差异并不明显。cp -x
cp --one-file-system
答案1
您的设置方式没有任何功能差异。这就像您从未创建过一样,root subvolume
因为您将其设为默认值。这不是大多数试图充分利用子卷抽象的人会采用的方式,但这是完全可以接受的。我个人更喜欢广泛的分离,因为备份非常简单且功能强大btrfs
,并且无需更改默认子卷。
尽管如此,所有子卷都是出于大多数意图和目的的文件夹。不同之处在于,如果您不愿意,您可以像文件系统一样安装它们,mount
而无需安装。bind
据我了解,每个“普通”实用程序(例如cp
您提到的)都会将其视为常规文件夹,无论您如何安装它,btrfs 特定的工具显然除外。可能有一些例外,但在我相当彻底的测试中我不记得有任何例外。我邀请任何人纠正我的错误。
答案2
如果启用了挂载传播(请参阅 参考资料man mount_namespaces
),则将来的子挂载将在使用绑定挂载创建的挂载之间复制。