Je vais couper le montage automatique de FreeBSD en petits morceaux et les faire bouillir dans de l'huile

40

J'essaie d'exposer une hiérarchie de répertoires de départ à un certain nombre de jails FreeBSD. Les répertoires de base sont configurés de sorte que chacun constitue un jeu de données ZFS unique. Les prisons sont utilisées pour des travaux de développement et sont donc créées et détruites régulièrement.

Ma première idée était simplement d’utiliser nullfs pour monter /homeà l’intérieur de la prison, mais nullfs ne fournit aucun moyen d’accéder aux systèmes de fichiers subordonnés.

Ma deuxième pensée a été d’exporter les répertoires via NFS, puis d’exécuter le démon automounter (amd) à l’intérieur de chaque prison. Cela aurait juste fonctionné ... s'il était possible d'effectuer des montages NFS dans une prison. Mais ce n'est pas.

Ma troisième idée était d'exécuter amd sur l'hôte et de mettre à disposition nullfs dans les jails ... mais le support amd pour nullfs n'existe pas.

Ma quatrième idée était de revenir à l'exportation des répertoires à l'aide de NFS, car bien entendu, amd fonctionne avec NFS, n'est-ce pas? Malheureusement, plutôt que de monter un répertoire sur le point de montage cible, amd aime monter des objets dans un emplacement temporaire ( /.amd_mnt/...), puis créer un lien symbolique ... ce qui, bien sûr, est inutile dans l'environnement jail.

Alors peut-être que vous pourriez utiliser nullfs pour exposer un sous-répertoire de /.amd_mntla prison? Non! Cela nous ramène à ma première tentative, dans laquelle nous constatons qu'il est impossible d'accéder aux systèmes de fichiers subordonnés à l'aide de nullfs .

Et puis ma tête a explosé.

Existe-t-il une bonne solution à ce que j'essaie de faire? Une mauvaise solution serait d’exécuter un script après le démarrage de la prison, ce qui créerait plusieurs points de montage nullfs pour chaque répertoire de base, mais c’est assez maladroit - il faudrait l’exécuter périodiquement pour prendre en compte les nouveaux répertoires ou les répertoires supprimés. Donc, fondamentalement, je devrais écrire un mauvais montage automatique.

Il doit y avoir un meilleur moyen. Aidez-moi, Serverfault, vous êtes mon seul espoir!

MISE À JOUR 1 : Je me suis dit que je pourrais peut-être résoudre une partie du problème pam_mount, même si cela serait au mieux incomplet. En outre, la documentation pam_mountn'indique pas clairement si le point de montage cible peut être créé automatiquement. Si le point de montage doit exister à priori, cette solution ne serait pas meilleure que le mauvais montage automatique que j'ai déjà proposé.

MISE À JOUR 2 : Comme indiqué dans les réponses ci-dessous, la définition VFCF_JAILdu système de fichiers NFS permet aux jails d’effectuer des montages NFS. Malheureusement, le système de montage automatique continue à se comporter de manière inutile et, lorsqu'il est exécuté dans une prison, il semble très efficace pour se coincer de telle sorte qu'un redémarrage du système est nécessaire pour supprimer l'entrée de processus.

alsacs
la source
1
Et si vous êtes prêt à transférer ces fonctionnalités sur FreeBSD, ce serait génial. Sérieusement, le comportement de l’automounteur Linux standard conviendrait également, car il monte les systèmes de fichiers sur le point de montage cible plutôt que d’utiliser des liens symboliques.
larsks
4
Je blâme un grave manque de temps. Et peut-être juste un peu d'un manque de motivation ...>.
Ignacio Vazquez-Abrams
15
+1 uniquement pour le titre génial. :)
Shauna
4
Cela me concerne à quel point votre méthode d'exécution est spécifique
Mark Henderson
2
Oh, @ Wilshire, tu n'es pas amusant.
larsks

Réponses:

26

Salut Lars! C'est une question fascinante que vous avez posée et, après quelques recherches, j'ai peut-être trouvé une réponse pour vous.

Selon cela et d'autres publications, il pourrait être possible de définir l' VFCF_JAIL attribut sur le fournisseur de système de fichiers NFS, ce qui permettrait en théorie aux jails d'effectuer des montages NFS. Cela peut, à son tour, permettre de courir dans la prison… ce qui résoudrait parfaitement ce problème.

Je vais essayer de reconstruire le noyau ce soir pour voir comment les choses se passent. Ce n'est pas nécessairement la meilleure solution (car cela signifie que vous devez vous assurer que ce changement persiste dans les futures mises à jour du noyau), mais ce serait intéressant si cela fonctionnait.

Et rappelez-vous...

           ___________    ____                                           
    ______/   \__//   \__/____\                             
  _/   \_/  :           //____\\                             
 /|      :  :  ..      /        \                         
| |     ::     ::      \        /                             
| |     :|     ||     \ \______/     Don't try to rebuild the
| |     ||     ||      |\  /  |        kernel remotely because
 \|     ||     ||      |   / | \         you know you're just
  |     ||     ||      |  / /_\ \        going to hose the server.
  | ___ || ___ ||      | /  /    \    
   \_-_/  \_-_/ | ____ |/__/      \   
                _\_--_/    \      /   
               /____             /  
              /     \           /    
              \______\_________/     
alsacs
la source
6
Merci, Lars; J'aurais aimé suivre votre conseil, car je ne peux plus accéder au serveur et je devrai attendre jusqu'à mon retour à la maison pour l'essayer.
larsks
10
+1 pour les LOL. Considérez également ce droit comme un droit de passage - Se rendre sur votre serveur au beau milieu de la nuit pour démarrer KERNEL.OLD (ou KERNEL.GENERIC - Vous conservez un GENERIC à jour sur vos systèmes, pas vrai? Sinon devrait commencer.) enseigne de nombreuses leçons ...
voretaq7
Je garde aussi une copie de mfsbsd démarrable sur le réseau , ce qui m’a évité un certain nombre de problèmes liés au chargeur de démarrage.
larsks
1
La mise VFCF_JAILen place des montages NFS a fonctionné, mais l’auto-monte continue de me calmer.
larsks
1
Eh bien, j'utilise automount pour les répertoires personnels depuis plus de 10 ans dans divers environnements et j'en suis satisfait. Rappelez-vous, ceci est le monteur automatique Linux (et Solaris), pas amd.
larsks