我将把FreeBSD的自动加载器切成小块,然后用油烧开

我正在尝试将主目录的层次结构展示给一些FreeBSD jail。 主目录configuration为每个都是唯一的ZFS数据集。 监狱是用于开发工作,因此定期创build和销毁。

我的第一个想法是简单地使用nullfs在jail中挂载/home ,但是nullfs不提供任何方式来访问下级文件系统。

我的第二个想法是通过NFS导出目录,然后在每个监狱内运行automounter守护进程(amd)。 这将有Just Worked …如果有可能在监狱内执行NFS挂载。 但事实并非如此。

我的第三个想法是在主机上运行amd,并将nullfs挂载到jail中,但是对nullfs的支持不存在。

我的第四个想法是回到导出目录使用NFS,因为当然amd与NFS的工作,对不对? 不幸的是,amd并不是在目标挂载点上挂载一个目录,而是喜欢在临时位置( /.amd_mnt/... )挂载东西,然后创build一个符号链接,当然这在监狱环境中是没用的。

那么也许你可以使用nullfs/.amd_mnt的子目录暴露给jail? 没有! 这使我们回到了第一次尝试,我们发现使用nullfs无法访问下级文件系统。

然后我的头爆炸了。

有什么我想要做的很好的解决scheme? 一个不好的解决办法是在引导jail后运行一个脚本,为每个home目录创build多个nullfs挂载点,但这非常笨重 – 需要定期运行以考虑新目录或删除的目录。 所以基本上我不得不写一个坏的自动加载器。

一定有更好的办法。 帮助我,Serverfault,你是我唯一的希望!

更新1 :在我看来,我可能能够用pam_mount解决部分问题,尽pipe这至多是不完整的。 另外,从文档中不清楚pam_mount是否可以自动创build目标挂载点。 如果它要求挂载点事先存在,这个解决scheme就不会比我已经提出的坏自动挂载程序更好。

更新2 :正如在下面的答案中所讨论的,在NFS文件系统上设置VFCF_JAIL确实允许jail执行NFS挂载。 不幸的是,自动加载程序仍然performance得毫无帮助,而且在监狱中运行似乎非常适合以这种方式重新启动系统以删除进程条目。

    为什么,你好,拉尔斯! 这是你问的一个有趣的问题,经过一番调查,我可能find了答案。

    根据这个和其他的post,可以在NFS文件系统提供者上设置VFCF_JAIL属性,理论上这允许jail执行NFS安装。 反过来,这又可以让一个人在监狱内奔跑……这样可以很好地解决这个问题。

    我今天晚上尝试重build内核,看看事情是如何实现的。 这不一定是最好的解决scheme(因为这意味着你需要确保这个改变在未来的内核更新中保持不变),但是如果它有效的话,这将是有趣的。

    记住…

      ___________ ____ ______/ \__// \__/____\ _/ \_/ : //____\\ /| : : .. / \ | | :: :: \ / | | :| || \ \______/ Don't try to rebuild the | | || || |\ / | kernel remotely because \| || || | / | \ you know you're just | || || | / /_\ \ going to hose the server. | ___ || ___ || | / / \ \_-_/ \_-_/ | ____ |/__/ \ _\_--_/ \ / /____ / / \ / \______\_________/