Forum Linux.général Question sur NFS et les montages en général

Posté par  .
Étiquettes : aucune
2
14
nov.
2010
Bonjour à tous,

Depuis quelques temps, j'utilise Vagrant et VirtualBox pour virtualiser mes environnements de développement (principalement des environnements LAMP). C'est une solution pratique, tant pour éviter certains casses-têtes que pour partager un environnement commun entre plusieurs développeurs travaillant potentiellement sous des OS différents, mais qui présentent quelques défauts.

Mon principale problème se situe au niveau du partage de fichiers entre l'hôte et la machine virtuelle. Vagrant propose à ce niveau deux solutions : vboxfs et NFS.

Vboxfs est relativement simple à mettre en place et son usage via Vagrant permet de définir l'utilisateur et le groupe propriétaires des répertoires partagés du point de vue de la VM (via un chown exécuté automatiquement après le montage). Ainsi je peux m'assurer de ne pas rencontrer de problèmes de droits lors de l'exécution des scripts ou de l'écriture de fichiers par Apache.

Le défaut de cette solution est quelle est très lente dés qu'il s'agit de partager un grand nombre de fichiers et qu'elle induit un niveau de cache supplémentaire pour les fichiers dont le comportement est pour le moins étrange (fichiers tronqués après modifications par exemple). Ce second point est contournable en désactivant certains options d'optimisation d'Apache, mais cela ne fait qu'accentuer encore le premier problème.

De l'autre côté, il y a NFS. Performant, mais qui ne propose à ma connaissance pas d'options, ni au niveau de la configuration client ni du montage, pour définir uid et gid des fichiers partagés et via lequel un chown ne fonctionne pas.

D'où ma question : Connaissez-vous un moyen qui me permettrait d'obtenir les avantages des deux solutions, rapidité et simplicité de gestion des droits ?

Merci d'avance :o)
  • # NIS ?

    Posté par  . Évalué à 1.

    C'est peut être une enclume pour écraser une mouche, mais pourquoi pas l'ajout du service NIS pour la gestions des UID / GID ?
    • [^] # Re: NIS ?

      Posté par  . Évalué à 1.

      Tu parles bien de NIS ?

      Je ne penses pas que ce soit applicable.
      Les VM doivent pouvoir être remontées par n'importe quel nouvel intervenant sur un projet sans forcement qu'il appartienne au même réseau local. Il est aussi exclu de modifier la configuration des machines déjà existantes, ne serait-ce que parce qu'au bureau le réseau est 100% Mac (à mon grand regret...) tandis que chez moi... on ne peux pas vraiment parler d'un réseau avec une seule machine sous Linux :]

      Je peux installer de nouveaux services du côté des VM, mais idéalement la solution ne devrait pas toucher à l'hôte ni au réseau.
  • # Recherches supplémentaires

    Posté par  . Évalué à 1.

    J'ai fait quelques recherches supplémentaires pour tenter de résoudre le problème et je suis tombé sur les options de partage NFS "map_static" et "map_daemon".

    map_static permet en théorie de définir une carte de correspondance entre les id du serveur et les id des clients. Mais c'est une fausse réponse car cette option ne semble exister que sur Linux (or je dois trouver une solution qui fonctionne aussi pour des postes sous Mac OS X à défaut d'être 100% universelle) et n'est apparemment plus supportée depuis quelques temps (Toutes mentions à cette option disparaissent dans les man d'Ubuntu entre la 8.04 et la 8.10 par exemple).

    map_daemon ne semble pas mieux lotie et dépend de plus d'un démon ugidd qui map automatiquement uid et gid vers le nom de l'utilisateur ou du groupe, ce qui ne m'arrange pas plus car les utilisateurs ne portent pas le même nom (l'utilisateur par défaut dans une VM Vagrant se nomme vagrant) ni n'appartiennent au même groupe (users, staff, etc. Verser deux doses de Linux et une de Mac OS X et secouer très fort).

    Il semblerait que NFS4 apporte quelque chose à ce niveau mais j'ai beau fouiller les manpages, je ne trouve rien de concret.

    Bref, du côté des options de NFS cela semble réellement compromis.

    Pensez-vous que l'on puisse jouer côté client avec des montages et des binds qui permettrait de mimer le comportement attendu ?
  • # Bindfs

    Posté par  . Évalué à 2.

    Nouvelle recherche ce midi. Malgré de longues heures à consulter les manpages de mount et des différents filesystems supportés, je n'avait jusqu'alors pas trouver de moyen de changer les uid/gid des fichiers via une option de montage.

    Or aujourd'hui je suis tombé sur bindfs ( http://code.google.com/p/bindfs ), qui semble faire tout ce que j'attend ! :)

    Je testerais cette solution dés que possible (ce soir sans doute) mais en attendant y'en a-t-il parmi vous qui l'aurait déjà utilisé ? Qu'en avez-vous pensé ?
    • [^] # Re: Bindfs

      Posté par  . Évalué à 2.

      Après test, bindfs s'avère être une bonne solution, simple à mettre en place, n'impactant que la machine virtuelle en elle-même et permettant exactement la configuration souhaitée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.