Forum Linux.débutant NFS symétrique

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
6
mai
2020

Bonjour,

Je voudrais faire un montage symétrique NFS entre deux machines. A savoir, chaque machine est client et serveur, et héberge un fichier /home/agora identique sur chaque machine, qui serait donc actualisé sur les deux machines, lorsque l'une ou l'autre opère une modification.

J'ai pensé faire la configuration serveur-client deux fois, sur chaque machine, mais j'ai peur que ce soit une bêtise. Si la machine 1 modifie /home/agora, qui modifie celui de la machine 2, qui a son tour "pense" qu'elle doit modifier la machine 1, etc … que va-t-il se passer ?

Merci m'expliquer simplement: je commence juste à savoir configurer le couple client-serveur.

(je suis sous Linux Ubuntu).

  • # Simplification du problème

    Posté par  . Évalué à 3.

    Salut,

    Je ne sais pas si c'est possible de faire ça.

    Donc je simplifierai le problème : avoir une machine 3 qui contient les fichiers et machine 1 et 2 montent le NFS.

    Matricule 23415

  • # et nfs "pas symétrique" ?

    Posté par  . Évalué à 4.

    Un montage nfs "normal" fais exactement ce que tu sembles vouloir faire.
    Le seul hic est qu'il faut que la machine qui fasse office de serveur nfs soit allumée à chaque fois que tu en as besoin.

    Une autre solution, si les machines peuvent être séparées et déconnectées régulièrement serait d'utiliser des outils de synchronisation spécifiques :
    1) rsync à la main ou quelque chose se basant sur rsync (j'avais vu syncthing il y a quelques temps, je ne sais pas où ce projet en est)
    2) si c'est un fichier texte qui peut être modifié des deux cotés en même temps, u outil de gestion de source comme git

  • # Quel est le besoin ?

    Posté par  . Évalué à 3.

    Parce que NFS n'est peut-être pas la solution adaptée à ton besoin. Il faudrait peut-être plus un système de mirroring de disque via réseau ? (DRBD par exemple ?)

    • [^] # Re: Quel est le besoin ?

      Posté par  . Évalué à 1.

      En fait, il s'agit de faire tourner un programme appelé Wien2k, qui lance des parties de calcul sur plusieurs machines. Leur manuel dit:
      "NFS: All files for the calculation must be accessible under the same name and path. Therefore
      you should set up your NFS mounts in a cluster in such a way, that on all machines the path
      names are the same."

      "NFS: Tous les fichiers pour le calcul doivent être accessibles sous le même nom et le même chemin. Donc vous devez configurer vos montages NFS dans un cluster de telle manière que, sur toutes les machines, le noms de chemin soient les mêmes."

      Comme il n'y a pas plus d'indication, j'imagine que chaque machine doit disposer des fichiers pour ses calculs, et produire les résultats dans le répertoire commun. Donc, être à la fois serveur et client. Mais NFS semble être la solution à adopter.

      Est-ce que quelqu'un a une idée de ce qui peut se passer si je définis les serveurs et clients de manière symétrique, comme je l'ai dit (à part qu'un montage ne se ferait pas si une machine est arrêtée) ?

      • [^] # Re: Quel est le besoin ?

        Posté par  . Évalué à 4.

        tel que je le comprend, leur description correspond au cas où le serveur de fichier ne ferait pas partie du cluster de noeud de calcul.
        La contrainte, c'est que les fichiers communs doivent être accessibles à partir des même chemins. Je pense que tu peux avoir ton serveur NFS qui travaille sur ses données locales, et qui exportent vers un client qui montera le système de fichier au bon point de montage pour reproduire le chemin sur le serveur et ça roule.
        La doc parle de NFS, mais je serais surpris si c'était NFS à l'exclusion de tout autre protocole. Tu pourrais tenter avec sshfs (que perso, j'aime beaucoup, parce qu'à partir du moment ou tu as un serveur ssh, il n'y a rien de plus à configurer).
        Après, ça dépend du contexte. Si tu fais ça chez toi dans ton coin pour le fun ou si tu fais ça dans une structure plus grosse.

        • [^] # Re: Quel est le besoin ?

          Posté par  . Évalué à 2.

          tel que je le comprend, leur description correspond au cas où le serveur de fichier ne ferait pas partie du cluster de noeud de calcul.

          Bah, qu'est-ce qui empêche de monter le serveur sur un des noeuds du cluster ? Tu crées un FS en local sur un noeud (/var/mon_rep_partage), puis sur tous les clients tu montes ce répertoire dans /un_autre_chemin (automount peut aider), et tu fais la même chose sur le noeud serveur NFS (ou alors sur le noeud serveur, tu fais un lien).

          • [^] # Re: Quel est le besoin ?

            Posté par  . Évalué à 2.

            Bah, qu'est-ce qui empêche de monter le serveur sur un des noeuds du cluster ?

            Rien. Juste que si tu as un serveur de fichier qui n'est pas un noeud de calcul (comme je pense que c'est le cas dans la vision de l'auteur de la doc), tu dois monter un FS remote sur tous les noeuds de calcul. Si ton serveur de fichier fait partie du cluster, ce n'est pas nécessaire.

      • [^] # Re: Quel est le besoin ?

        Posté par  . Évalué à 2.

        j'imagine que chaque machine doit disposer des fichiers pour ses calculs

        Oui ça se tient …

        et produire les résultats dans le répertoire commun.

        Oui

        Donc, être à la fois serveur et client

        Tout dépend.

        Toutes les machines sont client d'un serveur NFS. Toutes les machines déposeront les résultats sur le serveur NFS. Le serveur peut être un des noeuds mais ce n'est pas obligatoire. Ca peut être un NAS, ou un des noeuds que tu auras configuré comme tel.

      • [^] # Re: Quel est le besoin ?

        Posté par  . Évalué à 4. Dernière modification le 07/05/20 à 08:47.

        Je pense que ça se résoud très simplement :

        • La machine 1 héberge physiquement les fichier et les partage dans /srv/fichiers
        • La machine 1 mounte les fichiers (et oui, c'est tout à fait possible) dans /mnt/fichiers
        • La machine 2 mounte les fichiers dans /mnt/fichiers

        Donc l'appli sur machine1 et machine2 accède aux fichiers dans /mnt/fichiers

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

  • # glusterfs

    Posté par  . Évalué à 1.

    Bjr.
    Glusterfs devrait te permettre de faire cela.

    ++
    Gi)

    • [^] # Re: glusterfs

      Posté par  . Évalué à 1.

      Addendum.

      Glusterfs pourrait le faire pour des serveurs, mais…
      Pour des machines perso, j'opterais probablement pour une synchro via un Drive quelconque.

      ++
      Gi)

  • # Huu

    Posté par  (site Web personnel) . Évalué à 2.

    TL;DR: Non ce n'est pas possible / souhaitable

    Réponse longue:
    Un serveur NFS publie un dossier physique local (et uniquement ça), exemple srv1 va publier /home/agora, srv2 va aussi publier /home/agora
    Si tu monte srv1:/home/agoro sur srv2 dans le dossier /home/agora c'est le dossier NFS qui sera le dernier monté sur le repertoire et ton système ne vera plus les fichiers du /home/agoro "local", et inversement sur srv2
    Tu va te retrouver avec des dossiers différents sur chaque machine, avec le coût (latence, performance) du fs NFS et le comble c'est que les data de srv2 seront sur srv1 et inversement, (sauf si le demon qui accède à /home/agora est démarré avant les montages NFS auquels cas le truc sera encore plus rigolo car tu vera les fichiers de srv2 sur srv1 pendant que le programme qui tourne sur srv1 modifiera potentiellement d'autre fichiers).

    Dans ton cas les options que je vois sont:
    1 Définir une et une seule machine comme repository de stockage, et utiliser NFS pour exporter ce repository ailleurs (simple mais implique d'avoir toujours le serveur NFS d'actif / l'allumer en premier)
    2 Utiliser un FS clusterisé type Ceph/GFS/GlusterFS (potentiel de prise de tête ++)
    3 mettre en place une synchronisation two-way a base de rsync par exemple + cron pour replication régulière (nécessite d'avoir une certains marge de manoeuvre sur la disponibilité des fichiers)

  • # Quel est le besoin ?

    Posté par  (site Web personnel) . Évalué à 2.

    Il faut surtout préciser le besoin réel, par exemple :
    - faire de la redondance avec deux serveurs fonctionnant en permanence => il faut un système de fichiers distribués (glusterfs, moosefs, …)
    - faire de la synchro entre deux machines parfois éteintes => seafile, nextcloud, sparkleshare, …

    (mais il y a sûrement d'autres besoins possibles)

Suivre le flux des commentaires

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