GNU/Linux >> Tutoriels Linux >  >> Linux

Commande qui forcera Linux à vider le cache d'un fichier sur un partage NFS ?

En relation avec cette question sur StackOverflow, je me demande s'il existe un moyen pour moi de vider le cache NFS / forcer Linux à voir la copie la plus récente d'un fichier qui se trouve sur un partage NFS.

J'ai une situation où quatre serveurs Apache montent le même répertoire via NFS, et lorsqu'un serveur modifie un fichier, il faut environ 5 à 10 secondes pour que les autres serveurs voient ce changement. Si une deuxième modification est apportée à ce fichier dans cette fenêtre, elle peut écraser la première modification.

Le fstab l'entrée pour le système de fichiers est :

172.16.1.15:/home               /media/home     nfs     vers=3,defaults,noauto,sync,acregmin=1          0       0

Existe-t-il une commande qui forcera Linux à vider le cache d'un fichier sur un partage NFS ?

Réponse acceptée :

Vérifiez ces éléments et voyez s'ils fonctionnent pour vous :

  1. Sur le client , si vous n'utilisez pas déjà le cto option dans les options colonne du /etc/fstab ligne pour votre système de fichiers NFS, ajoutez-la. cto indique au client nfs d'ouvrir les fichiers via close-to-open, ce qui les oblige à actualiser le fichier chaque fois qu'ils l'ouvrent.

  2. Sur le serveur , assurez-vous que votre système de fichiers est exporté avec le sync option, et non async . Avec les écritures synchrones, le client videra sur le disque lorsque le fichier sera fermé. (ou avec nfs V3, chaque fois qu'un commit() est fait ). Il peut y avoir un impact sur les performances de cette façon, mais si vous faites des écritures sur un système de fichiers NFS, vous voulez certainement sync ensemble.

  3. Dans la foulée de cet article de stackoverflow, l'ouverture de fichier avec O_DIRECT ne fonctionne que si le noyau a été compilé avec CONFIG_NFS_DIRECTIO.

  4. Assurez-vous également que vous disposez des paramètres suivants dans votre fichier httpd.conf :

    • EnableMMAP off
    • EnableSendfile off

    À partir de la documentation de réglage des performances apache :

    • Si vous mappez en mémoire un fichier situé sur un système de fichiers monté sur NFS et qu'un processus sur une autre machine cliente NFS supprime ou tronque le fichier, votre processus peut obtenir une erreur de bus la prochaine fois qu'il essaiera d'accéder au contenu du fichier mappé.
    • Désactiver EnableSendfile n'aidera pas spécifiquement le comportement de synchronisation/asynchrone de NFS, mais il doit être désactivé si vous utilisez apache avec NFS.

Linux
  1. Explication des types de système de fichiers Linux, lequel devez-vous utiliser

  2. Commande wc Linux

  3. Commande grep Linux

  4. ln Exemples de commandes sous Linux

  5. file Exemples de commandes sous Linux

Linux Quelle commande

Moins de commande sous Linux

Commande Cp sous Linux (Copier des fichiers)

Commande Gzip sous Linux

Commande Gunzip sous Linux

Commande Stat sous Linux