lar*_*sks 41 freebsd zfs central-processing-unit jail automount
我试图将主目录的层次结构暴露给许多 FreeBSD 监狱。主目录的配置使得每个目录都是唯一的 ZFS 数据集。监狱用于开发工作,因此会定期创建和销毁。
我的第一个想法是简单地使用nullfs挂载/home到 jail,但nullfs不提供任何访问从属文件系统的方法。
我的第二个想法是通过 NFS 导出目录,然后在每个 jail 中运行自动挂载程序守护程序 (amd)。如果可以在监狱内执行 NFS 挂载,这将是有效的。但事实并非如此。
我的第三个想法是在主机上运行 amd 并将nullfs挂载到监狱中……但是 amd 对nullfs 的支持不存在。
我的第四个想法是回到使用 NFS 导出目录,因为 amd 当然可以与 NFS 一起使用,对吗?不幸的是,amd 不是在目标挂载点上挂载目录,而是喜欢在临时位置 ( /.amd_mnt/...)挂载东西,然后创建符号链接……当然,这在 jail 环境中是无用的。
那么也许您可以使用nullfs将 的子目录暴露/.amd_mnt给监狱?不!这让我们回到了我的第一次尝试,我们发现无法使用nullfs访问从属文件系统。
然后我的头爆炸了。
我正在尝试做的事情有没有好的解决方案?一个糟糕的解决方案是在启动 jail 之后运行一个脚本,该脚本将为每个主目录创建多个nullfs挂载点,但这非常笨拙——它需要定期运行以考虑新目录或删除的目录。所以基本上我将不得不编写一个糟糕的自动挂载程序。
一定会有更好的办法。帮助我,Serverfault,你是我唯一的希望!
更新 1:我突然想到我可以用 解决部分问题pam_mount,尽管这充其量是不完整的。此外,文档中不清楚是否pam_mount可以自动创建目标挂载点。如果它需要先验存在挂载点,那么这个解决方案不会比我已经提出的坏自动挂载器更好。
更新 2:如下面的答案中所讨论的,VFCF_JAILNFS 文件系统上的设置确实允许 jails 执行 NFS 挂载。不幸的是,自动挂载程序继续无用的行为,并且当在监狱中运行时,它似乎非常擅长以这样的方式陷入困境,以至于需要重新启动系统才能删除进程条目。
lar*_*sks 26
为什么,你好,拉斯!这是你问的一个有趣的问题,经过一些研究,我可能已经为你找到了答案。
根据
这篇
文章和其他帖子,可以VFCF_JAIL
在 NFS 文件系统提供程序上设置该属性,理论上这将允许监狱执行 NFS 挂载。反过来,这可能允许一个人在监狱内运行 amd ......这将巧妙地解决这个问题。
今晚我将尝试重建内核,看看情况如何。它不一定是最好的解决方案(因为这意味着您需要确保此更改在未来的内核更新中持续存在),但如果它有效的话会很有趣。
并记住...
___________ ____
______/ \__// \__/____\
_/ \_/ : //____\\
/| : : .. / \
| | :: :: \ /
| | :| || \ \______/ Don't try to rebuild the
| | || || |\ / | kernel remotely because
\| || || | / | \ you know you're just
| || || | / /_\ \ going to hose the server.
| ___ || ___ || | / / \
\_-_/ \_-_/ | ____ |/__/ \
_\_--_/ \ /
/____ /
/ \ /
\______\_________/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |