Terkait dengan pertanyaan ini pada StackOverflow , saya bertanya-tanya apakah ada cara bagi saya untuk mem-flush cache NFS / memaksa Linux untuk melihat salinan terbaru dari file yang ada di share NFS.
Saya memiliki situasi di mana empat server Apache me-mount direktori yang sama melalui NFS, dan ketika satu server membuat perubahan ke file, dibutuhkan sekitar 5 - 10 detik untuk server lain untuk melihat perubahan itu. Jika perubahan kedua dibuat untuk file itu di dalam jendela ini, itu mungkin menimpa perubahan pertama.
The fstab
entri untuk filesystem adalah:
172.16.1.15:/home /media/home nfs vers=3,defaults,noauto,sync,acregmin=1 0 0
Apakah ada perintah yang akan memaksa Linux untuk membersihkan cache dari satu file pada share NFS?
Jawaban:
Periksa barang-barang ini, dan lihat apakah ada yang cocok untuk Anda:
Pada klien , jika Anda belum menggunakan
cto
opsi di kolom opsi/etc/fstab
baris untuk sistem file NFS Anda, tambahkan itu.cto
memberitahu klien nfs untuk membuka file melalui close-to-open, yang membuat mereka menyegarkan file setiap kali mereka membukanya.Di server , pastikan filesystem Anda diekspor dengan
sync
opsi, dan tidakasync
. Dengan penulisan sinkron, klien akan membilas ke disk saat file ditutup. ( atau dengan nfs V3, setiap kali komit () dibuat ). Mungkin ada hit kinerja seperti itu, tetapi jika Anda melakukan menulis ke sistem file NFS, Anda pasti inginsync
mengatur.Mengikuti postingan stackoverflow itu, membuka file dengan O_DIRECT hanya berfungsi jika kernel dikompilasi dengan CONFIG_NFS_DIRECTIO.
Juga, pastikan Anda memiliki pengaturan berikut di file httpd.conf Anda:
EnableMMAP off
EnableSendfile off
Dari dokumentasi penyesuaian kinerja apache:
sumber
cto
pada klien dan saya akan mencobanya. Saya tidak punyasync
atauasync
di server; Saya baru saja menambahkansync
.O_DIRECT
tidak membantu saya karena sebenarnya PHP yang membaca file-file ini dan tidak dapat membukanya denganO_DIRECT
cara apa pun yang dapat saya temukan.Dalam proses yang diberikan, memanggil opendir dan closedir pada direktori induk dari sebuah file akan membuat cache NFS tidak valid. Saya menggunakan ini saat memprogram penjadwal pekerjaan. Sangat, sangat membantu. Cobalah!
sumber
Jika Anda membuka file yang diberikan dalam program yang tidak di-cache (seperti vim atau emacs) dan kemudian tutup, itu akan memperbarui / menghapus cache untuk file itu
sumber