Назад | Перейти на главную страницу

NFS: что такое удаленная блокировка и нужна ли она мне?

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

Пытаясь несколько уменьшить систему, я решил отключить RPC, так как не видел в нем пользы, и это привело к следующему предупреждению:

mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

На самом деле неудивительно, что RPC был задействован в NFS, поэтому следующим шагом будет удаление этого предупреждения. У меня есть выбор: повторно включить RPC или использовать -o nolock как было предложено.

Итак, вопрос в том, что именно делает удаленная блокировка? В этом конкретном случае монтирование NFS записывается только на рассматриваемой машине, и нет никаких потенциальных конфликтов, таких как запись нескольких процессов в один и тот же файл. (хотя есть несколько процессов, записывающих каждый свой файл журнала)

Запуск debian buster, ядро ​​4.19

РЕДАКТИРОВАТЬ: Я попытался -o nolock, и все вроде работает нормально, поэтому на первый взгляд никаких побочных эффектов нет.

Ответ находится на старой доброй странице руководства rpc.statd:

Блокировки файлов не являются частью постоянного состояния файловой системы. Таким образом, состояние блокировки теряется при перезагрузке хоста.

Сетевые файловые системы также должны обнаруживать потерю состояния блокировки из-за перезагрузки удаленного хоста. После перезагрузки клиента NFS сервер NFS должен снять все блокировки файлов, удерживаемые приложениями, работающими на этом клиенте. После перезагрузки сервера клиент должен напомнить серверу о блокировках файлов, удерживаемых приложениями, запущенными на этом клиенте.

Для NFS версии 2 [RFC1094] и NFS версии 3 [RFC1813] протокол Network Status Monitor (или сокращенно NSM) используется для уведомления одноранговых узлов NFS о перезагрузках. В Linux службу NSM составляют два отдельных компонента пользовательского пространства:

rpc.statd

Демон, который прослушивает уведомления о перезагрузке от других хостов и управляет списком хостов, которые будут уведомлены при перезагрузке локальной системы.

sm-уведомление

Вспомогательная программа, которая уведомляет одноранговые узлы NFS после перезагрузки локальной системы.

Таким образом, rpc.statd, запущенный на сервере NFS, предотвращает запуск процессов на другие клиенты NFS от доступа к файлам, которые вы заблокировали, с вашего клиентского компьютера. Пока есть только один клиент, локальные блокировки подходят. Но обычно в NFS обмен.