Общие сведения о блокировке файлов и типах блокировки в Azure NetApp Files

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

Типы блокировки

Существует несколько типов блокировок NFS, которые включают:

Общие блокировки: общие блокировки могут использоваться несколькими процессами одновременно и могут выдаваться только в том случае, если в файле нет монопольных блокировок. Эти блокировки предназначены для работы только для чтения, но могут использоваться для записи (например, с базой данных).

Монопольные блокировки: монопольные блокировки работают так же, как и монопольные блокировки в CIFS/S МБ: только один процесс может использовать файл при наличии монопольной блокировки. Если какие-либо другие процессы заблокировали файл, монопольная блокировка не может быть выдана, если этот процесс не был вилирован.

Делегирования: делегирования используются только с NFSv4.x и назначаются при включении параметров сервера NFS, а клиент поддерживает делегирования NFSv4.x. Делегирования позволяют кэшировать операции на стороне клиента, создавая "обратимую" блокировку файла, используемого клиентом. Это повышает производительность определенных рабочих нагрузок, уменьшая количество вызовов между клиентом и сервером и похожими на S МБ оппортунистические блокировки. Azure NetApp Files в настоящее время не поддерживает делегирования NFSv4.x.

Блокировки диапазона байтов: вместо блокировки всего файла блокировка диапазона байтов блокирует только часть файла.

Поведение блокировки зависит от типа блокировки, версии клиентской операционной системы и используемой версии NFS. Не забудьте проверить блокировку в вашей среде, чтобы оценить ожидаемое поведение.

Блокировка NFSv3

NFSv3 использует вспомогательные протоколы, такие как диспетчер сетевых блокировок (NLM) и монитор состояния сети (NSM), для координации блокировки файлов между клиентом и сервером NFS. Эти вспомогательные протоколы определены в RFC-1813, к которому соответствует Azure NetApp Files.

NLM помогает установить и освободить блокировки, а NSM уведомляет одноранговые узлы перезагрузки сервера. При блокировке NFSv3 при перезагрузке клиента сервер должен освободить блокировки. Когда сервер перезагружается, клиент напоминает серверу о блокировках, которые он провел.

Примечание.

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

Блокировка NFSv4.x

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

Azure NetApp Files поддерживает механизм блокировки файлов NFSv4.x, поддерживая состояние всех блокировок файлов в модели на основе аренды. В соответствии с RFC 8881 Azure NetApp Files будет "определять единый период аренды для всех состояний, удерживаемых клиентом NFS. Если клиент не продлевать аренду в течение определенного периода, все состояние, связанное с арендой клиента, может быть освобождено сервером".

Это означает, что клиент может продлить аренду явным образом или неявно, выполнив операцию, например чтение файла. Кроме того, Azure NetApp Files определяет льготный период, который является периодом специальной обработки, при которой клиенты пытаются восстановить состояние блокировки во время восстановления сервера.

Термин Определение
Аренда Период времени, в течение которого Azure NetApp Files безвозвратно предоставляет клиенту блокировку.
Льготный период Период времени, в течение которого клиенты пытаются восстановить состояние блокировки во время восстановления сервера в случае сбоя сервера.

Как Azure NetApp Files обрабатывает блокировки NFSv4.x

Блокировки выдаются Azure NetApp Files по запросу клиента на основе аренды. Сервер Azure NetApp Files проверка аренду на каждом клиенте каждые 30 секунд для изменений. В случае перезагрузки клиента клиент может восстановить все допустимые блокировки с сервера после перезапуска. Если сервер Azure NetApp Files перезагружается, при перезапуске он не выдает новые блокировки клиентам в течение 45 секунд. По истечении этого времени блокировка может быть выдана запрашивающим клиентам. Если блокировка не может быть восстановлена в течение указанного льготного периода, срок действия блокировки истекает самостоятельно. Это поведение отличается от блокировки NFSv3, так как не будет устаревших блокировок, которые необходимо вручную разбить.

Установка блокировок вручную на клиенте

Чтобы проверить блокировки NFS, клиент должен сообщить серверу NFS установить блокировку. Однако не все приложения используют блокировки. Например, приложение "vi" не блокирует файл. Он создает скрытый файл буфера с помощью соглашения об именовании точек в той же папке, а затем фиксирует запись в этот файл при закрытии приложения. Затем старый файл удаляется и файл буфера переименовывается в имя файла.

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

Чтобы установить блокировку файла, сначала запустите exec, чтобы назначить числовый идентификатор.

# exec 4<>v4user_file

Используйте флок, чтобы создать общую или монопольную блокировку файла.

# flock

Usage:
 flock [options] <file|directory> <command> [command args]
 flock [options] <file|directory> -c <command>
 flock [options] <file descriptor number>

Options:
 -s  --shared             get a shared lock
 -x  --exclusive          get an exclusive lock (default)
 -u  --unlock             remove a lock
 -n  --nonblock           fail rather than wait
 -w  --timeout <secs>     wait for a limited amount of time
 -E  --conflict-exit-code <number>  exit code after conflict or timeout
 -o  --close              close file descriptor before running command
 -c  --command <command>  run a single command string through the shell

 -h, --help     display this help and exit
 -V, --version  output version information and exit

# flock -n 4

Чтобы разблокировать файл.

# flock -u -n 4

Блокировка файлов вручную позволяет тестировать открытые и редактируемые взаимодействия файлов и проверять функциональные возможности блокировки в Azure NetApp Files.

Следующие шаги