J'essaie de trouver un moyen adéquat de gérer des données stables sur le client NFS. Pensez à suivre le scénario: p>
(aussi, il peut être utile de savoir que les options de montage en cache sont assez élevées sur les deux serveurs pour des raisons de performance). P>
Qu'est-ce que j'essaie de comprendre est: p>
merci. p>
3 Réponses :
Vous pouvez essayer l'option de montage '' Noac '' ' P>
de l'homme NFS: p>
En plus de prévenir le client des attributs de fichiers de mise en cache, le NOAC L'application des forces d'option écrit à devenir synchrone de sorte que local Les modifications apportées à un fichier deviennent visibles sur le serveur immédiatement. De cette façon, D'autres clients peuvent rapidement détecter écrit récemment quand ils vérifient le Attributs du fichier. P>
Utilisation de l'option NOAC fournit une plus grande cohérence de cache chez NFS clients accédant aux mêmes fichiers, mais Il extrait une performance significative peine. En tant que telle, une utilisation judicieuse de Le verrouillage du fichier est encouragé à la place. P> blockQuote>
Vous pouvez avoir deux montages, une pour des données modifiées rapidement que vous avez besoin synchronisées et une autre monture pour d'autres données. P>
Aussi, regardez Verrouillage NFS et ses limitations . P>
Quant aux conseils généraux: P>
Un moyen de tronquer un fichier de lecture simultanément à partir de plusieurs hôtes consiste à écrire le contenu dans un fichier temporaire, puis
renommer code> ce fichier à l'emplacement final. p>sur le même système de fichiers Cette opération devrait être atomique. P>
Eh bien, cela soulève une bonne idée: postez la question à Serverfault. Les développeurs n'ont aucun moyen d'influencer les NFS de manière programmatique (solution de contournement au mieux), tandis que les administrateurs doivent traiter avec NFS et les applications qui en fonctionnent le plus souvent. Par conséquent, ces derniers ont plus d'expérience et peuvent donner plus de suggestions.
L'article de verrouillage NFS lié est maintenant parti, vous avez-vous un remplaçant?
- Y a-t-il une méthode fiable pour vérifier, ce fichier est présent? Dans le scénario indiqué ci-dessus, LSTAT sur le fichier renvoie le succès et la demande ne échoue qu'après avoir essayé de déplacer le fichier. LI> ul> blockQuote>
C'est ce comportement NFS normal. P>
- Comment puis-je synchroniser manuellement le contenu du répertoire sur le client avec serveur? LI> ul> blockQuote>
qui est impossible à faire manuellement, car NFS prétend être un système de fichiers compatible normal de POSIX. P>
J'ai essayé une fois de coder Fermer () / Ouvrir () dans une tentative d'atténuation des effets de la mise en cache du client NFS. Dans mon cas, je devais lire les informations écrites dans le fichier sur un autre serveur. Mais même l'astuce de la rupture était proche de zéro effet. Et je ne peux pas ajouter fdataSync () à l'écriture, car cela ralentit une application entière vers le bas. P>
Mon expérience avec NFS à ce jour est que vous ne pouvez rien faire. Dans les chemins de code critiques, j'ai simplement codé pour réessayer les opérations de fichiers qui renvoient Estale. P>
- Certains conseils généraux sur la manière d'écrire un code de gestion de fichiers fiable en cas de NFS? LI> ul> blockQuote>
MOD MOI DOWN TOUT QUE VOUS VOULEZ, mais si vos clients veulent une fiabilité, ils ne devraient pas utiliser NFS. P>
Ma société, par exemple, annonce l'utilisation d'un système de fichiers distribué approprié (j'étant intentionnellement omettre la marque) si le client veut la fiabilité. Notre logiciel de base n'est pas garanti d'exécuter NFS et nous ne prenons pas de telles configurations. Mais dans notre cas, nous avons vraiment besoin des garanties que dès que les données sont écrites sur FS, elles sont accessibles sur tous les autres nœuds. P>
La cohérence dans NFS peut être réalisée, mais au prix de la performance, ce qui rend NFS à peine utilisable. (Vérifiez ses options de montage.) NFS met en cache comme un fou de cacher le fait qu'il s'agit d'un système de fichiers de serveur. Pour effectuer toutes les opérations cohérentes, le client NFS devrait aller sur le serveur NFS de manière synchrone pour chaque petite opération, contourner le cache local. Et ce ne serait jamais rapide. P>
Mais puisque nous parlons Linux ici, on peut conseiller les clients du logiciel d'évaluer les systèmes de fichiers de cluster disponibles. Par exemple. Redhathate prend désormais officiellement gfs . J'ai entendu parler de personnes utilisant des codafs, mais je n'ai aucune information difficile à ce sujet. P>
Merci. Vous avez confirmé la plupart de mes propres résultats de recherche NFS. Je suppose que je vais coder un tas de chèques d'Estale, car nous n'avons pas prévu de migrer vers un autre stockage. Je n'accepterai pas cette réponse pour l'instant, j'espère que quelqu'un va venir avec plus d'informations sur le sujet.
10 ans plus tard, cette réponse est toujours valable et pertinente. +1 pour le "Si vos clients veulent une fiabilité, ils ne devraient pas utiliser NFS" Commentaire: D
J'ai eu du succès avec faire ls -l code> sur le répertoire contenant le fichier. p>
Cela fonctionne réellement pour moi comme un charme. Hack très pratique en effet!
Résolu pour moi. Technique triste. Mais assez gentil.