Linux'u NFS paylaşımındaki bir dosyanın önbelleğini temizlemeye zorlayacak bir komut var mı?


14

StackOverflow ile ilgili bu soru ile ilgili olarak , NFS önbelleğini temizlemeye / Linux'u NFS paylaşımında bulunan bir dosyanın en güncel kopyasını görmeye zorlamamın bir yolu olup olmadığını merak ediyorum.

Dört Apache sunucusunun aynı dizini NFS aracılığıyla bağladığı bir durumum var ve bir sunucu dosyada değişiklik yaptığında, diğer sunucuların bu değişikliği görmesi yaklaşık 5-10 saniye sürüyor. Bu pencerede bu dosyada ikinci bir değişiklik yapılırsa, ilk değişikliğin üzerine yazılabilir.

fstabDosya sistemi için giriştir:

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

Linux'u NFS paylaşımındaki bir dosyanın önbelleğini temizlemeye zorlayacak bir komut var mı?


Hangi apache önbellekleme mekanizmasını kullanıyorsunuz?
usermane

@usermane: Apache önbellek mekanizması kullanmıyorum. Söz konusu dosyalar PHP dosyalarıdır ve bir ana bilgisayarda değiştirildiklerinde, diğer ana bilgisayarlar bu değişikliği birkaç saniye görmez.
Josh

Yanıtlar:


12

Bu öğeleri kontrol edin ve işinize yarayıp yaramadığına bakın:

  1. İstemcide , NFS dosya sisteminizin satırının seçenekler sütunundaki ctoseçeneği zaten kullanmıyorsanız , ekleyin. nfs istemcisine dosyaları açılmaya yakın şekilde açmasını söyler, bu da dosyayı her açtıklarında yenilemelerini sağlar./etc/fstabcto

  2. Sunucuda , dosya sisteminizin syncseçenekle dışa aktarıldığından emin olun async. Eşzamanlı yazma işlemlerinde, dosya kapatıldığında istemci diske temizlenir. ( veya bir taahhüt () yapıldığında nfs V3 ile ). Bu şekilde bir performans isabeti olabilir, ancak bir NFS dosya sistemine yazma işlemi yapıyorsanız, kesinlikle syncayarlamak istersiniz .

  3. Bu stackoverflow yayınının topuklarını takiben, O_DIRECT ile açılış dosyası yalnızca çekirdek CONFIG_NFS_DIRECTIO ile derlenmişse çalışır.

  4. Ayrıca, httpd.conf dosyanızda aşağıdaki ayarların bulunduğundan emin olun:

    • EnableMMAP off
    • EnableSendfile off

    Apache performans ayarlama belgelerinden:

    • NFS'ye bağlı bir dosya sisteminde bulunan bir dosyayı bellekle eşlerseniz ve başka bir NFS istemci makinesindeki bir işlem dosyayı siler veya kısaltırsa, eşlenen dosya içeriğine bir sonraki erişmeye çalıştığında işleminiz bir veri yolu hatası alabilir.
    • EnableSendfile özelliğini kapatmak NFS'nin eşitleme / zaman uyumsuz davranışına özellikle yardımcı olmaz, ancak NFS ile apache kullanıyorsanız kapatılması gerekir.

Teşekkürler! Bunlar harika öneriler. ctoİstemcide kullanmıyorum ve bunu deneyeceğim. Ne sunucuda syncne asyncde sunucum var; Az önce ekledim sync. O_DIRECTbana yardımcı olmadı çünkü aslında bu dosyaları okuyan PHP ve O_DIRECTbulabildiğim herhangi bir şekilde açamıyor.
Josh

@Josh, sorununuzu çözdü mü? Aynı konuda engellendik! Lütfen bu yayını güncelleyebilir misiniz?
rafa.ferreira

3

Belirli bir işlemde, bir dosyanın üst dizininde opendir ve closedir çağırmak NFS önbelleğini geçersiz kılar. Bunu bir iş zamanlayıcıyı programlarken kullandım. Çok, çok yardımsever. Dene!


-1

Belirtilen dosyayı önbelleğe alınmamış bir programda (vim veya emacs gibi) açar ve kapatırsanız, o dosyanın önbelleğini güncelleştirir / temizler


2
"Önbelleğe alınmayan program" tanımınız nedir ve bu ifade için bir referansınız var mı?
RalfFriedl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.