Чому на монтажі NFS відрізняються події інновації?


10

Деякий час тому я помітив, що події, про які повідомляє inotify, відрізняються, коли файл зберігається на кріпленні NFS проти локальної файлової системи.

Чи не повинен базовий VFS забезпечувати рівномірний вигляд файлових операцій?

Далі йде слід збереження VIM-файлу в Debian 7.1 (Linux 3.2)

На кріпленні NFS:

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 )

У локальній файловій системі

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 також виявляє різні способи поведінки

На кріпленні NFS:

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

У локальній файловій системі:

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)

Ці випробування проводились з inotify-touch.c

Відповіді:


4

запустити підтримку NFS?

Оглядаючи мережу, здається, що інотифікація може підтримувати NFS, але дуже обмежено.

експонат №1

Причина пояснюється в цьому питанні StackOverflow Q&A під назвою: інотифікувати NFS .

уривок із прийнятої відповіді

inotify вимагає підтримки ядра для роботи. Коли програма відстежує каталог, він просить ядро ​​повідомити його, коли ці зміни відбудуться. Коли відбувається зміна, крім запису цих змін на диск, ядро ​​також повідомляє про процес перегляду.

На віддаленій машині NFS ядро ​​не видно зміни; це відбувається цілком віддалено. Попередні NFS ініціюють, і в NFS немає жодної підтримки мережі або іншого еквівалента.

експонат №2

Вивчіть трохи більше, якщо ви подивитесь на ініціативні поширені запитання

З: Чи можу я переглядати sysfs (procfs, nfs ...)?

Простіше кажучи: так, але з деякими обмеженнями. Ці обмеження відрізняються між версіями ядра і, як правило, зменшуються. Будь ласка, прочитайте інформацію про конкретні файлові системи.

Так це підтримується?

Я думаю, що в кінцевому підсумку ви відчуваєте, що NFS не надає яблукам яблукам еквівалент усіх тих же функцій, що і локально встановлені файлові системи.

Наприклад, з потоку Linux Linux nfs :

  • CIFS має вбудовані можливості оповіщення (oplocks)
  • NFS надає "оренди" для повідомлення

Сенс у тому, що альтернативні файлові системи, такі як CIFS та NFS, пропонують дуже базову, якщо будь-яку підтримку безпосередньо ініціювати.

Стан NFS v4

витяг із статті IBM про стан NFS v4

Версія 4 NFS надає клієнту протокол для встановлення або відновлення стану та пов'язує право власності на наступні операції, що належать серверу, до встановлених раніше станів. Щоб вирішити відсутню клієнтську проблему, клієнт NFS версії 4 повинен регулярно оновлювати стан протягом визначеного сервером часу оренди. Після тайм-ауту оренди сервер може випустити ресурси для клієнта та зробити їх доступними для інших програм.

  • Клієнт отримує вказаний сервером атрибут очікування оренди, видаючи операцію getattr. getattr не є державною операцією, тому він не вимагає встановлення попереднього стану. Операція getattr може передувати операції setclientid або setclientid_confirm.
  • Для встановлення та налаштування періодів оренди зверніться до атрибуту сайту пропускного часу сервера NFS. *

3
ОП, схоже, бачить події в NFS, вони просто відрізняються від тих, що спостерігаються у локальній файловій системі. Пов'язані питання та відповідь, схоже, вказують на відсутність inotifyподій у NFS.
iruvar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.