Accéder aux fichiers situés sur le système de fichiers sous-jacent d'un point de montage NFS


8

C'est peut-être une demande étrange, mais c'est le contraire de la question détaillée à:

Est-il possible d'afficher le contenu d'un montage NFS sous-jacent sans démonter le contenu NFS?

J'ai un arrangement où les serveurs Linux sur plusieurs sites distants montent un partage NFS à partir d'un serveur central (tous CentOS 5.x). Pensez: /opt/softwareou quelque chose de similaire.

Si tout va bien, les systèmes clients montent l'exportation NFS à partir du serveur principal et s'exécutent sans incident. Les données contenues dans le partage ne changent pas fréquemment (peut-être chaque semaine).

Je suis préoccupé par la situation où il y a une perte de connectivité avec le serveur NFS principal (panne du serveur NFS, fibre-cut, etc.). Étant donné que les données partagées ne changent pas souvent, j'aimerais que ces systèmes puissent fonctionner de manière autonome s'ils perdent le montage NFS.

Supposons que la monture disparaisse, je voudrais utiliser les fichiers locaux /opt/softwaresitués sous la monture NFS au même endroit. De plus, je garderais une synchronisation quotidienne de ces fichiers.

Le montage NFS est en lecture / écriture car les modifications du volume monté doivent être possibles à partir de n'importe quel site client.

Est-ce possible? Comment accéder (ou écraser) les fichiers dans le répertoire sous-jacent? Y aurait-il potentiellement des problèmes de dépassement de délai? Existe-t-il des options / conseils de montage qui pourraient vous aider?

Réponses:


16
mount -o bind / /mnt

Lorsque vous regardez / mnt / opt / software, vous trouverez les fichiers (le cas échéant) qui se trouvent sous le montage dans / opt / software.


Mais cela monterait tout le système de fichiers racine sous / mnt. Hmm ...
ewwhite

1
Donc? Quel mal cela va-t-il faire? Il vous permet simplement de synchroniser les fichiers que vous souhaitez. Vous pouvez même le mettre dans / private / root où / private est 700 root afin que personne d'autre ne puisse accéder à ces fichiers, pas que cela nuirait s'ils le pouvaient car ils ont exactement les mêmes autorisations. Cela semble fondamentalement comme une réponse exacte à votre question. Maintenant, si votre question est de savoir comment récupérer une fois le serveur NFS parti, c'est tout à fait différent et implique probablement un démontage forcé. Cela invalidera et cassera ainsi la moitié de vos processus, forçant de toute façon un redémarrage.
Seth Robertson

C'était proche, mais j'ai décidé de simplement monter le répertoire auquel j'avais besoin d'accéder avec le paramètre de liaison à un autre emplacement sur le système de fichiers.
ewwhite

En fait, cela est très utile dans un cas spécifique et j'aurais aimé connaître cette option il y a longtemps. Je suis juste tombé à nouveau sur cette situation. Fondamentalement, j'avais un répertoire / usr qui était lié au système de fichiers racine et je voulais le déplacer vers son propre système de fichiers pour récupérer de l'espace à la racine. Donc, après avoir créé usr et migré les données là-bas et redémarré pour monter le nouvel usr, comment supprimer facilement les anciennes données / usr? Une façon consiste à utiliser le mode mono-utilisateur et à espérer que rien n'y utilise de fichiers. Une autre façon consiste à utiliser cette astuce de liaison et à supprimer le répertoire de données d'un autre chemin.
deltaray

8

Ceci est possible en utilisant l' mount --bindoption.

Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is
   mount --bind olddir newdir
After this call the same contents is accessible in two places.

J'ai donc pu mount --bind /opt/software /foo

Ensuite, appliquez le montage NFS sur /opt/software, en conservant la possibilité de voir les fichiers sous-jacents à /foo.


3

Ce dont vous pourriez avoir besoin, car les fichiers sont relativement statiques, c'est rsync. Sauf si plusieurs clients distants ont la possibilité de modifier des fichiers. Si les données sont essentiellement en lecture seule, pourquoi ne pas simplement rsync quelques fois par jour via une tâche similaire à cron, sur chaque machine. Encore une fois, je manque peut-être le point, mais si les données sur NFS sont essentiellement en lecture seule, cela pourrait le faire.


Rsync aurait traditionnellement du sens, mais il est possible que les fichiers soient modifiés sur un site donné. Si je montais en lecture seule, rsync serait un meilleur choix. Sauf si vous connaissez une solution de synchronisation bidirectionnelle ...
ewwhite

Une chose que vous pouvez faire avec rsync est de configurer un travail cron qui vérifie les horodatages de vos fichiers sur chaque machine, et peut-être le faire toutes les 5 minutes. Dès qu'une mise à jour est remarquée, poussez les fichiers vers nfs, et créez en même temps peut-être un fichier déclencheur que toutes les autres machines vérifient à une période fixe. Dès qu'ils voient ce déclencheur, ils exécutent tous rsync pour obtenir les fichiers les plus mis à jour de NFS.
slashdot

Je peux essayer Unison comme une approche pour résoudre ce problème.
ewwhite
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.