Как я знаю, параллельно с NFS, после получения макета с сервера метаданных, клиент напрямую связывается с сервером данных. Я не понимаю, что произойдет, если несколько клиентов одновременно будут читать или писать в одну и ту же область сервера данных. Есть ли какой-нибудь механизм блокировки в pNFS.
Согласно RFC 5661 (nfs 4.1, включая pnfs)
https://tools.ietf.org/html/rfc5661#section-12.5.1
Требование NFSv4.1 о том, что все права доступа пользователей ДОЛЖНЫ быть
полученные с помощью соответствующих операций OPEN, LOCK и ACCESS, не изменяются при существовании макетов. Макеты предоставляются
Клиентов NFSv4.1, а доступ пользователей по-прежнему соответствует правилам
протокол, как будто их не существует. Это требование, чтобы
клиент для доступа к запоминающему устройству, макет должен храниться
клиент.
И далее в том же разделе:
Обратите внимание, что от клиентов по-прежнему требуется выполнять соответствующие операции OPEN, LOCK и ACCESS, как описано выше. Степень, в которой клиент может обойти эти операции, и последствия этого должны быть четко определены в индивидуальных спецификациях типа макета. Кроме того, в этих спецификациях должны быть четко указаны требования и не требования к проверке, выполняемой сервером.
При наличии функциональности pNFS обязательные блокировки байтового диапазона
ДОЛЖНЫ вести себя так же, как и без pNFS. Следовательно, если одновременно предусмотрены обязательные блокировки файлов и макеты, запоминающее устройство
ДОЛЖЕН иметь возможность принудительно применять обязательные блокировки диапазона байтов. Например, если один клиент получает обязательную блокировку диапазона байтов, а второй клиент обращается к запоминающему устройству, запоминающее устройство ДОЛЖНО соответственно
ограничить ввод-вывод для диапазона обязательной блокировки байтового диапазона. Если
запоминающее устройство не может предоставить эту проверку при наличии
обязательных блокировок диапазона байтов, то сервер метаданных НЕ ДОЛЖЕН
предоставлять макеты и обязательные блокировки диапазона байтов одновременно.