GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Befehl, der Linux dazu zwingt, den Cache einer Datei auf einer NFS-Freigabe zu leeren?

Im Zusammenhang mit dieser Frage zu StackOverflow frage ich mich, ob es eine Möglichkeit gibt, den NFS-Cache zu leeren / Linux zu zwingen, die aktuellste Kopie einer Datei zu sehen, die sich auf einer NFS-Freigabe befindet.

Ich habe eine Situation, in der vier Apache-Server dasselbe Verzeichnis über NFS mounten, und wenn ein Server eine Änderung an einer Datei vornimmt, dauert es etwa 5 bis 10 Sekunden, bis die anderen Server diese Änderung sehen. Wenn innerhalb dieses Fensters eine zweite Änderung an dieser Datei vorgenommen wird, kann die erste Änderung überschrieben werden.

Die fstab Eintrag für das Dateisystem ist:

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

Gibt es einen Befehl, der Linux dazu zwingt, den Cache einer Datei auf einer NFS-Freigabe zu leeren?

Akzeptierte Antwort:

Überprüfen Sie diese Elemente und prüfen Sie, ob etwas für Sie funktioniert:

  1. Auf dem Client , wenn Sie nicht bereits cto verwenden Option in den Optionen Spalte der /etc/fstab Zeile für Ihr NFS-Dateisystem, fügen Sie sie hinzu. cto weist den nfs-Client an, Dateien über close-to-open zu öffnen, wodurch er die Datei jedes Mal aktualisiert, wenn er sie öffnet.

  2. Auf dem Server , vergewissern Sie sich, dass Ihr Dateisystem mit sync exportiert wird Option und nicht async . Bei synchronen Schreibvorgängen wird der Client beim Schließen der Datei auf die Festplatte geleert. (oder mit nfs V3, immer wenn ein commit() gemacht wird ). Auf diese Weise kann es zu Leistungseinbußen kommen, aber wenn Sie in ein NFS-Dateisystem schreiben, möchten Sie auf jeden Fall sync eingestellt.

  3. Nach diesem Stackoverflow-Beitrag funktioniert das Öffnen einer Datei mit O_DIRECT nur, wenn der Kernel mit CONFIG_NFS_DIRECTIO kompiliert wurde.

  4. Stellen Sie außerdem sicher, dass Sie die folgenden Einstellungen in Ihrer httpd.conf-Datei haben:

    • EnableMMAP off
    • EnableSendfile off

    Aus der Dokumentation zur Leistungsoptimierung von Apache:

    • Wenn Sie eine Datei auf einem NFS-gemounteten Dateisystem speicherzuordnen und ein Prozess auf einem anderen NFS-Client-Rechner die Datei löscht oder abschneidet, erhält Ihr Prozess möglicherweise einen Busfehler, wenn er das nächste Mal versucht, auf den Inhalt der zugeordneten Datei zuzugreifen.
    • Das Deaktivieren von EnableSendfile hilft nicht speziell beim Sync/Async-Verhalten von NFS, aber es muss deaktiviert werden, wenn Sie Apache mit NFS verwenden.

Linux
  1. Erklärte Linux-Dateisystemtypen, welche Sie verwenden sollten

  2. Linux-wc-Befehl

  3. Linux grep-Befehl

  4. ln-Befehlsbeispiele in Linux

  5. file Befehlsbeispiele in Linux

Welcher Linux-Befehl

Weniger Befehl unter Linux

Cp-Befehl in Linux (Dateien kopieren)

Gzip-Befehl unter Linux

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux