web-dev-qa-db-ja.com

FreeBSDオートマウンタを細かく切って油で沸騰させます

ホームディレクトリの階層をいくつかのFreeBSD刑務所に公開しようとしています。ホームディレクトリは、それぞれが一意のZFSデータセットになるように構成されています。刑務所は開発作業に使用されるため、定期的に作成および破棄されます。

私の最初の考えは、nullfsを使用して刑務所内に/homeをマウントすることでしたが、nullfsは何も提供しません従属ファイルシステムにアクセスする方法。

私の2番目の考えは、NFSを介してディレクトリをエクスポートし、各刑務所内でオートマウンターデーモン(AMD)を実行することでした。刑務所内でNFSマウントを実行することができれば、これはうまくいきました。しかし、そうではありません。

私の3番目の考えは、ホストでAMDを実行し、nullfsマウントを刑務所にプロビジョニングすることでした...しかし、nullfsのAMDサポートでは存在しません。

私の4番目の考えは、もちろんAMDがNFSで動作するため、NFSを使用したディレクトリのエクスポートに戻ることでしたね?残念ながら、AMDはターゲットマウントポイントにディレクトリをマウントするのではなく、一時的な場所(/.AMD_mnt/...)にマウントしてからシンボリックリンクを作成するのが好きです...もちろん、jail環境では役に立たないのです。

nullfsを使用して/.AMD_mntのサブディレクトリを刑務所に公開できますか?番号!これにより、最初の試みに戻ります。nullfsを使用して下位のファイルシステムにアクセスする方法がないことがわかりました。

そして頭が爆発した。

私がやろうとしていることに対する良い解決策はありますか? badソリューションは、jailを起動した後に、各ホームディレクトリに複数のnullfsマウントポイントを作成するスクリプトを実行することですが、これは新しいディレクトリや削除されたディレクトリを考慮に入れるには、定期的に実行する必要があります。だから基本的に私は悪いオートマウンタを書かなければならないでしょう。

もっと良い方法があるはずです。私を助けてください、Serverfault、あなたは私の唯一の希望です!

PDATE 1pam_mountで問題の一部を解決できる可能性があると思いましたが、これはせいぜい不完全です。また、pam_mountがターゲットマウントポイントを自動的に作成できるかどうかは、ドキュメントから明確ではありません。マウントポイントがアプリオリに存在する必要がある場合、このソリューションは、すでに提案した悪いオートマウンターよりも優れているとは言えません。

PDATE 2:以下の回答で説明されているように、NFSファイルシステムでVFCF_JAILを設定すると、jailはNFSマウントを実行できます。残念ながら、オートマウンタは役に立たない動作を続けており、刑務所で実行された場合、プロセスエントリを削除するためにシステムの再起動が必要になるような方法で非常にうまくいくようです。

40
larsks

なぜこんにちはラーズ!それはあなたが尋ねた興味深い質問です、そしていくつかの調査の後に私はあなたのための答えを見つけたかもしれません。

this や他の投稿によると、VFCF_JAIL NFSファイルシステムプロバイダーの属性。jailが理論的にNFSマウントを実行できるようにします。これにより、刑務所内でAMDを実行できるようになる可能性があります。これにより、この問題は適切に解決されます。

今夜カーネルを再構築して、どのように機能するかを確認します。これは必ずしも最高の解決策ではありません(将来のカーネル更新後もこの変更が持続することを確認する必要があることを意味するため)、それが機能すれば興味深いでしょう。

そして覚える...

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