Frage Ich werde den FreeBSD-Automounter in kleine Stücke schneiden und in Öl kochen


Ich versuche, eine Reihe von Home-Verzeichnissen für eine Reihe von FreeBSD-Jails verfügbar zu machen. Die Home-Verzeichnisse sind so konfiguriert, dass jedes ein eindeutiges ZFS-Dataset ist. Die Gefängnisse werden für Entwicklungsarbeiten verwendet und werden daher regelmäßig erstellt und zerstört.

Mein erster Gedanke war einfach zu verwenden nullfs montieren /home im Gefängnis, aber nullfs bietet keine Möglichkeit, auf untergeordnete Dateisysteme zuzugreifen.

Mein zweiter Gedanke war, die Verzeichnisse über NFS zu exportieren und dann den Automounter-Daemon (amd) in jedem Gefängnis laufen zu lassen. Dies hätte einfach funktioniert ... wenn es möglich wäre, NFS-Mounts innerhalb einer Jail durchzuführen. Aber es ist nicht.

Mein dritter Gedanke war, auf den Gastgeber und die Versorgung zu warten nullfs steigt in die Gefängnisse ... aber Unterstützung für nullfs existiert nicht.

Mein vierter Gedanke war, die Verzeichnisse mit NFS zu exportieren, weil natürlich AMD mit NFS arbeitet, oder? Anstatt ein Verzeichnis auf dem Ziel-Mountpoint zu mounten, möchte AMD gerne Dinge an einem temporären Ort (/.amd_mnt/...) und dann einen Symlink erstellen ... was natürlich innerhalb der Jail-Umgebung nutzlos ist.

Also vielleicht könntest du es gebrauchen nullfs ein Unterverzeichnis von /.amd_mnt ins Gefängnis? Nein! Dies bringt uns zu meinem ersten Versuch zurück, in dem wir finden, dass es keinen Weg gibt, auf untergeordnete Dateisysteme zuzugreifen nullfs.

Und dann explodierte mein Kopf.

Gibt es eine gute Lösung für das, was ich versuche? EIN Schlecht Lösung wäre, ein Skript nach dem Start der Jail zu starten, die mehrere erstellen würde nullfs Mountpoints für jedes Home-Verzeichnis, aber das ist ziemlich klobig - es müsste regelmäßig ausgeführt werden, um neue Verzeichnisse oder entfernte Verzeichnisse zu berücksichtigen. Also müsste ich im Grunde einen schlechten Automounter schreiben.

Es muss einen besseren Weg geben. Hilf mir, Serverfault, du bist meine einzige Hoffnung!

AKTUALISIEREN 1: Es ist mir eingefallen, dass ich vielleicht einen Teil des Problems lösen könnte pam_mount, obwohl dies bestenfalls unvollständig wäre. Es ist auch nicht klar aus der Dokumentation, ob oder nicht pam_mount kann den Ziel-Mountpoint automatisch erstellen. Wenn es erforderlich ist, dass der Mountpoint a priori existiert, wäre diese Lösung nicht besser als der schlechte Automounter, den ich bereits vorgeschlagen habe.

UPDATE 2: Wie in den Antworten unten beschrieben, Einstellung VFCF_JAIL Auf dem NFS-Dateisystem können Jails NFS-Mounts ausführen. Unglücklicherweise verhält sich der Automounter weiterhin nicht hilfreich, und wenn er in einem Gefängnis ausgeführt wird, scheint er sehr gut darin zu verkeilen, dass ein Systemneustart erforderlich ist, um den Prozesseintrag zu entfernen.


38
2018-06-16 13:20


Ursprung


Und wenn Sie bereit sind, diese Funktionen auf FreeBSD zu portieren, wäre das großartig. Im Ernst, das Verhalten des Standard-Linux-Automounters wäre auch dafür perfekt, da es tatsächlich Dateisysteme auf dem Ziel-Mountpoint mounte, anstatt Symlinks zu verwenden. - larsks
Ich beschuldige einen schweren Zeitmangel. Und vielleicht ein bisschen Motivationsmangel ...>.> - Ignacio Vazquez-Abrams
+1 Nur für den tollen Titel. :) - Shauna
Es geht mir darum, wie spezifisch Ihre spezielle Ausführungsweise ist - Mark Henderson♦
Oh, @ Wilshire, du bist kein Spaß. - larsks


Antworten:


Hallo Lars! Das ist eine faszinierende Frage, die Sie gestellt haben, und Nach ein paar Recherchen habe ich vielleicht eine Antwort für dich gefunden.

Gemäß diese und andere Beiträge da draußen, kann es möglich sein, die VFCF_JAIL Attribut auf dem NFS-Dateisystem-Provider, was theoretisch erlauben würde Jails zum Ausführen von NFS-Mounts. Dies kann wiederum erlauben, dass man amd laufen kann im Gefängnis ... das würde dieses Problem sauber lösen.

Ich werde heute Abend versuchen, den Kernel neu aufzubauen, um zu sehen, wie die Dinge funktionieren aus. Es ist nicht unbedingt die beste Lösung (da es dich bedeutet müssen sicherstellen, dass diese Änderung auch bei zukünftigen Kernel-Updates erhalten bleibt), aber es wäre interessant, wenn es funktioniert.

Und merke dir...

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

25
2018-06-17 19:51



Danke, Lars. Ich wünschte, ich hätte deinen Ratschlag angenommen, weil ich jetzt nicht auf den Server zugreifen kann und ich warten muss, bis ich nach Hause komme, um das auszuprobieren. - larsks
+1 für die LOLs. Bedenken Sie auch, dass es sich um ein Durchfahrtsrecht handelt - Sie fahren mitten in der Nacht auf Ihren Server, um KERNEL.OLD (oder KERNEL.GENERIC) zu booten - Sie behalten ein aktuelles GENERIC auf Ihren Systemen, oder? sollte beginnen.) lehrt viele Lektionen ... - voretaq7
Ich behalte eine net-bootfähige Kopie von mfsbsd praktisch, was mich vor einigen Boot-Loader-Problemen bewahrt hat. - larsks
Rahmen VFCF_JAIL NFS-Mounts funktionieren, aber der Automounter macht mir weiter zu schaffen. - larsks
Eh, ich benutze seit mehr als einem Jahrzehnt in verschiedenen Umgebungen automount für Home-Verzeichnisse und ich war glücklich damit. Wohlgemerkt, das ist der Linux (und Solaris) Automounter, nicht AMD. - larsks