İnotify olayları bir NFS montajında ​​neden farklıdır?


10

Bir süre önce, inotify tarafından bildirilen olayların, dosya yerel bir dosya sistemine karşı bir NFS yuvasına kaydedildiğinde farklı olduğunu fark ettim.

Temel VFS dosya işlemlerinin tek tip bir görünümünü sağlamamalı mı?

Debian 7.1'de (Linux 3.2) bir dosyayı kaydeden VIM'in izi

NFS yuvasında:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2048 (IN_MOVE_SELF)
wd=1 mask = 4 (IN_ATTRIB)
wd=1 mask = 1024 (IN_DELETE_SELF)
wd=1 mask = 32768 )

Yerel dosya sisteminde

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 8 (IN_CLOSE_WRITE)
wd=1 mask = 4 (IN_ATTRIB)

EMACS ile bir dosyayı kaydetmek farklı bir açığa çıkarır

NFS yuvasında:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2048 (IN_MOVE_SELF)

Yerel bir dosya sisteminde:

wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 16 (IN_CLOSE_NOWRITE)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 32 (IN_OPEN)
wd=1 mask = 2 (IN_MODIFY)
wd=1 mask = 8 (IN_CLOSE_WRITE)

Bu testler inotify -touch ile çalışır. C

Yanıtlar:


4

NFS desteğini inotify?

Ağa bakıldığında, inotify'ın NFS'yi destekleyebileceği, ancak çok sınırlı bir şekilde görüneceği anlaşılıyor.

sergi # 1

Nedeni şu StackOverflow Soru-Cevap bölümünde açıklanmıştır: NFS ile inotify .

kabul edilen cevaptan alıntı

inotify çalışmak için çekirdekten destek gerektirir. Bir uygulama bir dizini izlediğinde, çekirdekten bu değişiklikler meydana geldiğinde onu bilgilendirmesini ister. Değişiklik gerçekleştiğinde, bu değişiklikleri diske yazmanın yanı sıra, çekirdek de izleme işlemini bildirir.

Uzak bir NFS makinesinde, değişiklik çekirdek tarafından görülemez; tamamen uzaktan gerçekleşir. NFS inotify'dan önce gelir ve NFS'de veya eşdeğeri herhangi bir şeyde ağ düzeyinde destek yoktur.

sergi # 2

İnotify SSS bölümüne bakarsanız biraz daha araştırma yapmak

S: Sysfs (procfs, nfs ...) izleyebilir miyim?

Basitçe konuşulursa: evet, ancak bazı sınırlamalarla. Bu sınırlamalar çekirdek sürümleri arasında değişiklik gösterir ve küçülme eğilimi gösterir. Lütfen belirli dosya sistemleri hakkındaki bilgileri okuyun.

Yani destekleniyor mu?

Nihayetinde yaşadığınız şey, NFS'nin yerel olarak monte edilen dosya sistemleriyle aynı özelliklerin hepsine eşdeğer bir elma sağlamadığıdır.

Örneğin bir nfs linux iş parçacığından :

  • CIFS'de yerleşik bildirim özellikleri vardır (oplocks)
  • NFS bildirim için "kiralamalar" sağlar

Buradaki nokta, CIFS ve NFS gibi alternatif dosya sisteminin, doğrudan inotify için herhangi bir destek varsa, çok temel sunduğudur.

NFS v4 durumu

NFS v4 durumu hakkındaki IBM makalesinden alıntı

NFS sürüm 4, istemcinin durum oluşturması veya yeniden kurması için bir protokol sağlar ve sonraki sunucu durum bilgisi olan işlemlerin sahipliğini önceden kurulmuş durumlarla ilişkilendirir. İstemci sorununu çözmek için, NFS sürüm 4 istemcisinin durumu sunucu tarafından belirtilen kiralama süresi içinde rutin olarak yenilemesi gerekir. Kiralama zaman aşımına uğradığında, sunucu istemci için kaynakları serbest bırakabilir ve diğer uygulamalar için kullanılabilir hale getirebilir.

  • İstemci, bir getattr işlemi düzenleyerek sunucu tarafından belirtilen kiralama zaman aşımı özelliğini alır. getattr durum bilgisi olan bir işlem değildir, bu nedenle önceden durumun belirlenmesini gerektirmez. Bir getattr işlemi, setclientid veya setclientid_confirm işleminden önce gelebilir.
  • Kira sürelerini ayarlamak ve ayarlamak için NFS sunucusunun kira süresi site özelliğine bakın. *

3
OP, NFS'deki olayları görüyor gibi görünüyor, bunlar yerel dosya sisteminde görülenlerden farklı. Bağlantılı soru ve cevap inotify, NFS'de olay olmadığını gösterir .
iruvar
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.