我的目标是将 Linux FHS 读/写目录 ( /home
、/srv
、/tmp
、/var
) 的物理存储放在与根文件系统的潜在只读其余部分不同的(逻辑或物理)磁盘上。
我知道我可以在第二个磁盘上创建四个分区,并使用每个分区作为上述目录之一mount
。但我不想预先确定四个目录所需的存储空间,即使我稍后可以更正(逻辑或物理)分区的大小。
这可以实现吗?如何实现?
答案1
类似的问题以前也被问过。最接近的似乎是如何在同一个分区挂载多个目录?在哪里目前接受的答案建议可以通过两种方式:
使用四个 _symbolic 链接:在根文件系统中,指向第二个磁盘上的四个单独的子树,该子树本身一次安装到独立于四个目录的安装点。
使用绑定安装(自Linux 2.4起可用)在第二个磁盘首先安装到独立于四个目录的安装点之后,将第二个磁盘上的四个单独的子树安装到四个目录。
同样的答案有一个有趣的评论指出这个问答讨论了优点和缺点符号链接与绑定安装。由此,人们可以得出这样的结论:符号链接应该是首选,因为它们更容易查看和维护,并且不会对任何现有软件造成麻烦。
但是,systemd
具有称为 的显式依赖项配置功能RequiresMountsFor
。例如,标准 Debian 8 (Jessie) 使用它来使某些服务等待 的潜在安装/var
,该安装需要可用于相关服务。
systemd
只能RequiresMountsFor
与绑定安装;不与符号链接。
至少systemd
有问题的 Debian 8 服务配置文件位于其中,/lib/systemd
因此它们不应该被修改。这表明绑定安装systemd
如果您使用引入此类依赖项的 Linux 发行版,则应该是首选。修改systemd
Linux发行版的配置可能会让系统维护变成一场噩梦。
systemd
另一方面,它本身的存在并不构成选择的赞成或反对理由。符号链接和绑定安装。
答案2
一种选择是使用带有合并的发行版/usr
;然后你就可以挂载/usr
RO和剩下的RW,并且拥有大部分RO相关的东西。但这并没有抓住/etc
你可能想要的。不完全是一个解决方案,更多的是一个解决方法。
另一种方法是为您想要的所有挂载创建一个带有子卷的 BTRFS 卷,然后使用-osubvol=<whatever>
.这些挂载可以有单独的挂载选项,但在默认配置(没有任何配额设置)下,它们都将在空间上计入整个 BTRFS 卷,这样您就可以将新数据放在您喜欢的任何地方,只要整个FS还有剩余空间。