NFS önbelleği: sunucuda değiştirildiğinde dosya içeriği istemcide güncellenmiyor


11

İşte kurulumum: Bir NFS Sunucu makinesi (v4), birkaç NFS istemci makinesi.

Bir istemci makine NFS yuvasına dosya yazdığında, diğer istemciler yeni içeriği anında görür: sorun değil.

Ancak, sunucu makine dosyanın içeriğini değiştirdiğinde, istemciden bir lsdizin yapana kadar bu yeni içerik istemcide gösterilmez .

Kesinlikle bu tutarsızlıktan sıkıldım ... herhangi bir yardım çok takdir edilecektir!

Bilgiler:

  • hem istemcide hem de sunucuda nfs 1.2.3-r1
  • acregmin, acregmax, acdirmin, acdirmax, arama önbelleği: varsayılan değerler

1
Daha fazla bilgi için küçük bir deneme yapabilir misiniz ?: ls -iDosyayı sunucuda düzenlemeden önce istemcide yapın, sonra tekrar. Sayıların değişip değişmediğine bakın. Bunu yaparsa, sunucu dosyayı değiştiriyor ve istemci dizini yeniden tarana kadar bunu fark etmez. Öyleyse bağlama seçeneğini ayarlamayı deneyin lookupcache=noneve davranışın değişip değişmediğine bakın.
Patrick

2
gecikme için üzgünüm. İnode etkin bir şekilde değişir. Lookupcache seçeneğini ekledim, işe yarıyor gibi görünüyor. Yarın tekrar kontrol edeceğim.
numberxiii

Yanıtlar:


11

Yorumunuza göre cevap olarak ekleme.
Çözüm lookupcache=nonenfs bağlama seçeneklerinize eklemektir .

Ne olur istemciniz dosyayı ilk okuduğunda NFS dosya kimliği almak için bir NFS araması yapar. Daha sonra NFS dosya kimliğini önbelleğe alır ve dosyayı açmak için geri döndüğünüzde önbelleği kullanır. Normalde bu dosya güncelleştirildiğinde dosya kimliği aynı kalır gibi bir sorun değildir. Ancak bazı nedenlerden dolayı eski dosya kaldırılır ve yeni bir dosya oluşturulur (veya yeniden adlandırılır veya aynı dosya olmayan bir yere).
Şimdi normalde bu bir sorun ya istemciniz orada olmayan bir fileid açmaya çalıştığında olduğu gibi, sunucudan bir hata alır ve yeni dosya kimliği almak için başka bir arama yapar. Ancak bir nedenden dolayı NFS sunucusu istemcinin bu eski dosya kimliğini açmasına izin veriyor. Belki başka bir istemci dosyayı açık ve bu yüzden henüz silinmemesi, bilmiyorum.

Her durumda bunu çözmenin yolu, istemciye nfs mount seçeneğini kullanarak bir dosyayı açmadan önce her zaman bir nfslookup yapmasını söylemektir lookupcache=none. Bunun dezavantajı, NFS sunucusuna daha fazla trafik eklediği için sık sık dosyaları açıyorsanız pahalı olabilmesidir.


Açıklamanız için teşekkürler. NFS sunucusunda dışa aktarılan dizinin yığını DRBD / LVM / ext4'tür. Belki de "hata" ya neden oluyor. Birkaç müşteride sorun var, ama bazılarında değil ... Tüm testlerimi tekrar yapacağım ve her şeyin bu seçenekle iyi gidip gitmediğini söyleyeceğim.
numberxiii

0

Bağlama seçeneğini olarak değiştirin hard,intr. Bence varsayılan sisteminizde yumuşak olabilir. Bu yardımcı olacak.


ne yazık ki, bu montaj seçeneklerini eklemek hiçbir şey değiştirmedi :(
numberxiii

İlk testim için bir röportaj yapıyorum. Sonra temiz bir montaj ile başka bir istemciden test yaptım. Sorun düzeltilmiş gibi görünüyor: yeni içeriği görmek için 30
saniye bekliyoruz

Kontrol etmek için yeni bir istemci (vm) oluşturdum: içerikle ilgili bir sorun yok!
numberxiii

1
@ johnshen64 sizce neden sorunu çözmenin zor olduğunu düşünüyorsunuz? Sert / yumuşak sadece bağlantı kesintisi söz konusu olduğunda önemlidir, önbellekleme ile ilgisi yoktur.
Patrick

0

Ayrıca NFS önbelleğini manuel olarak da yenileyebilirsiniz.

sudo mount /nfs-mount -o remount

... performansı düşüren herhangi bir montaj seçeneği eklemek istemiyorsanız.

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.