Я создаю несколько минималистичную систему, которая собирает данные последовательного порта и помещает их в файл журнала на монтировании 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 обмен.