我要把 FreeBSD 自动挂载程序切成小块,然后放进油里煮

我要把 FreeBSD 自动挂载程序切成小块,然后放进油里煮

我正在尝试将主目录层次结构公开给多个 FreeBSD jail。主目录的配置使得每个主目录都是一个唯一的 ZFS 数据集。jail 用于开发工作,因此会定期创建和销毁。

我的第一个想法就是简单地使用空值/home在监狱里安装,但是空值不提供任何访问下属文件系统的方法。

我的第二个想法是通过 NFS 导出目录,然后在每个 jail 内运行自动挂载守护程序 (amd)。如果可以在 jail 内执行 NFS 挂载,那么这个方法就奏效了。但事实并非如此。

我的第三个想法是在主机上运行 amd 并提供空值安装到监狱里...但 amd 支持空值不存在。

我的第四个想法是回到使用 NFS 导出目录,因为 amd 当然可以使用 NFS,对吧?不幸的是,amd 不喜欢将目录挂载到目标挂载点,而是喜欢将内容挂载到临时位置(/.amd_mnt/...),然后创建符号链接……当然,这在监狱环境中是无用的。

所以也许你可以使用空值将 的子目录暴露/.amd_mnt给 jail?不行!这又回到了我的第一次尝试,我们发现无法使用空值

然后我的头就爆炸了。

对于我想做的事情,有没有什么好的解决方案?坏的解决方案是在启动监狱后运行一个脚本,该脚本将创建多个空值每个主目录都有挂载点,但这很笨重——它需要定期运行以考虑新目录或已删除的目录。所以基本上我必须编写一个糟糕的自动挂载程序。

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

更新 1:我突然想到,我可能能够使用 解决部分问题pam_mount,尽管这充其量只是不完整的。此外,从文档中不清楚是否pam_mount可以自动创建目标挂载点。如果它要求挂载点先验存在,那么这个解决方案不会比我已经提出的糟糕的自动挂载程序更好。

更新2:正如以下答案中讨论的那样,VFCF_JAILNFS 文件系统上的设置确实允许 jail 执行 NFS 挂载。不幸的是,自动挂载程序继续表现得毫无帮助,并且在 jail 中运行时似乎非常容易陷入困境,以至于需要重新启动系统才能删除进程条目。

答案1

你好,Lars!你问的问题很有趣,经过一番研究,我可能已经为你找到了答案。

根据 和其他帖子一样,可能可以设置VFCF_JAIL NFS 文件系统提供程序的属性,理论上这将允许 jail 执行 NFS 挂载。反过来,这又可能允许人们在 jail 内运行 amd……这将巧妙地解决这个问题。

我今晚会尝试重建内核,看看效果如何。这不一定是最好的解决方案(因为这意味着你需要确保此更改在将来的内核更新中保持不变),但如果它有效,那就很有趣了。

记住...

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

相关内容