我将把FreeBSD自动安装器切成小块,然后用油煮沸


40

我试图将主目录的层次结构暴露给许多FreeBSD监狱。配置主目录,以便每个目录都是唯一的ZFS数据集。这些监狱用于开发工作,因此会定期创建和销毁。

我首先想到的只是使用nullfs挂载/home在监狱中,但是nullfs并没有提供任何访问下级文件系统的方法。

我的第二个想法是通过NFS导出目录,然后在每个监狱中运行自动安装程序守护程序(amd)。如果可以在监狱中执行NFS挂载,那本来可以工作的。但事实并非如此。

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

我的第四个想法是回到使用NFS导出目录的原因,因为amd当然可以与NFS一起使用,对吗?不幸的是,amd不想在目标挂载点上挂载目录,而是希望将其挂载到一个临时位置(/.amd_mnt/...),然后创建一个符号链接...当然,这在监狱环境中毫无用处。

因此,也许您可​​以使用nullfs/.amd_mnt监狱公开的子目录?没有!这使我们回到了我的第一次尝试,在该尝试中,我们发现无法使用nullfs访问下级文件系统。

然后我的头爆炸了。

我要做什么有很好的解决方案?一个不好的解决方案是在启动监狱后运行一个脚本,该脚本将为每个主目录创建多个nullfs挂载点,但这非常笨拙-需要定期运行以考虑新目录或已删除目录。因此,基本上我将不得不编写一个错误的自动挂载程序。

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

更新1:我想到我可以用来解决部分问题pam_mount,尽管这充其量是不完整的。另外,从文档中还不清楚是否pam_mount可以自动创建目标安装点。如果它要求挂载点先验存在,那么该解决方案将不会比我已经提出的错误的自动挂载器更好。

更新2:如以下答案中所述,VFCF_JAIL在NFS文件系统上进行设置确实允许监狱执行NFS挂载。不幸的是,自动挂载程序继续表现为无益的,并且在监狱中运行时似乎很擅长以某种方式陷入困境,以至于必须重新引导系统才能删除进程条目。


1
而且,如果您愿意将这些功能移植到FreeBSD上,那就太好了。认真地讲,标准Linux自动挂载程序的行为也将是完美的,因为它实际上是在目标挂载点上挂载文件系统,而不是使用符号链接。
larsks 2011年

4
我认为时间严重不足。也许只是缺乏动力...>。>
Ignacio Vazquez-Abrams

15
仅+1获得超棒的标题。:)
Shauna

4
它关系到我,您的特定处决方法有多具体
马克·亨德森

2
哦,@威尔希尔,你真没意思。
larsks 2011年

Answers:


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.
  | ___ || ___ ||      | /  /    \    
   \_-_/  \_-_/ | ____ |/__/      \   
                _\_--_/    \      /   
               /____             /  
              /     \           /    
              \______\_________/     

6
谢谢,拉斯;我希望我听取了您的建议,因为现在我无法访问服务器,必须等到回家后才能尝试。
larsks 2011年

10
笑声+1。还要考虑这是通过的权利-在半夜驱出服务器来启动KERNEL.OLD(或KERNEL.GENERIC)-您确实在系统上保留了最新的GENERIC,对吗?应该开始。)教了很多课...
voretaq7 2011年

方便地保存了mfsbsd的可网络启动的副本,这使我摆脱了许多与启动程序相关的问题。
larsks 2011年

1
设置VFCF_JAIL使NFS挂载工作,但自动挂载程序继续使我迷惑。
larsks 2011年

1
嗯,我在各种环境中使用自动挂载的主目录已有十多年了,对此我感到很满意。请注意,这是Linux(和Solaris)自动挂载程序,而不是amd。
larsks 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.