Рекомендации по параметрам подключения NFS для Linux для Azure NetApp Files
Эта статья поможет изучить параметры подключения и рекомендации по их использованию с Azure NetApp Files.
Nconnect
С помощью параметра подключения nconnect
можно указать число подключений (сетевых потоков), которые должны быть установлены между клиентом NFS и конечной точкой NFS. Можно настроить до 16 подключений. Обычно клиент NFS использует одно подключение между самим собой и конечной точкой. Увеличение числа сетевых потоков значительно увеличивает верхние пределы операций ввода-вывода и пропускной способности. Тестирование показало, что значение nconnect=8
обеспечивает наибольшую производительность.
При подготовке среды сетки SAS с несколькими узлами в рабочей среде вы можете заметить повторяющееся сокращение времени выполнения на 30 % (5,5 часов вместо 8 часов).
Параметры подключения | Время выполнения заданий |
---|---|
Без nconnect |
8 часов |
nconnect=8 |
5,5 часа |
Оба набора тестов использовали одну и ту же виртуальную машину E32-8_v4 с RHEL 8.3, на которой настроен буфер упреждающего чтения в 15 МиБ.
При использовании nconnect
необходимо учитывать следующие правила.
nconnect
поддерживается Azure NetApp Files во всех основных дистрибутивах Linux, но только в более новых выпусках.Выпуск Linux NFS версии 3 (минимальный выпуск) NFS версии 4.1 (минимальный выпуск) Red Hat Enterprise Linux RHEL 8.3 RHEL 8.3 SUSE SLES 12 SP4 или SLES 15 SP1 SLES 15 SP2 Ubuntu Ubuntu 18.04 Примечание.
SLES 15 SP2 — это минимальный выпуск SUSE, в котором поддерживается
nconnect
для Azure NetApp Files для NFS версии 4.1. Все остальные выпуски, которые были указаны, являются первыми выпусками, в которых появилась функцияnconnect
.Все подключения из одной конечной точки наследуют
nconnect
параметр первого подключенного экспорта, как показано в следующих сценариях:Сценарий 1. Параметр
nconnect
используется при первом подключении. Следовательно, все подключения к одной и той же конечной точке используютnconnect=8
.mount 10.10.10.10:/volume1 /mnt/volume1 -o nconnect=8
mount 10.10.10.10:/volume2 /mnt/volume2
mount 10.10.10.10:/volume3 /mnt/volume3
Сценарий 2.
nconnect
Не используется первым подключением. Следовательно, подключения к одной и той же конечной точке не используютnconnect
, даже если потом будет указан параметрnconnect
.mount 10.10.10.10:/volume1 /mnt/volume1
mount 10.10.10.10:/volume2 /mnt/volume2 -o nconnect=8
mount 10.10.10.10:/volume3 /mnt/volume3 -o nconnect=8
Сценарий 3.
nconnect
Параметры не распространяются между отдельными конечными точками хранилища. Параметрnconnect
используется подключением с10.10.10.10
, но не используется подключением с10.12.12.12
.mount 10.10.10.10:/volume1 /mnt/volume1 -o nconnect=8
mount 10.12.12.12:/volume2 /mnt/volume2
Параметр
nconnect
может использоваться для увеличения параллелизма службы хранилища из любого заданного клиента.
Дополнительные сведения см. в разделе Рекомендации по параллелизму Linux для Azure NetApp Files.
Рекомендации для Nconnect
Не рекомендуется использовать и sec=krb5*
подключать nconnect
параметры вместе. Снижение производительности наблюдалось при использовании двух вариантов в сочетании.
Универсальный интерфейс программирования приложений уровня безопасности (GSS-API) позволяет приложениям защищать данные, отправленные одноранговым приложениям. Эти данные могут быть отправлены от клиента на одном компьютере на сервер на другом компьютере.
При nconnect
использовании в Linux контекст безопасности GSS используется между всеми nconnect
подключениями к конкретному серверу. TCP — это надежный транспорт, который поддерживает доставку пакетов вне порядка для работы с пакетами вне порядка в потоке GSS, используя скользящее окно порядковых номеров. При получении пакетов, не входящих в окно последовательности, контекст безопасности удаляется, а новый контекст безопасности согласовывается. Все сообщения, отправленные в контексте, отброшенном в настоящее время, больше не допустимы, поэтому требуется повторно отправлять сообщения. Большее количество пакетов в nconnect
установке приводит к частому выходу из окна пакетов, вызывая описанное поведение. С этим поведением не можно указать конкретные проценты снижения.
Rsize
и Wsize
.
Примеры в этом разделе содержат сведения о том, как подходить к настройке производительности. Возможно, потребуется внести корректировки в соответствии с конкретными потребностями приложения.
Флаги rsize
и wsize
задают максимальный размер перемещаемых данных для операции NFS. Если rsize
или wsize
не указано на подключении, клиент и сервер согласовывают наибольший размер, поддерживаемый двумя. В настоящее время Azure NetApp Files и современные дистрибутивы Linux поддерживают размер данных для чтения и записи до 1048 576 байтов (1 МиБ). Однако для обеспечения наилучшей общей пропускной способности и задержки Azure NetApp Files рекомендует устанавливать с помощью rsize
и wsize
не более 262 144 байтов (256 КиБ). Вы можете заметить увеличение задержки и снижение пропускной способности при использовании rsize
и wsize
со значением больше 256 КиБ.
Например, развертывание горизонтально масштабируемой системы SAP HANA с резервным узлом на виртуальных машинах Azure с помощью Azure NetApp Files в SUSE Linux Enterprise Server использует rsize
и wsize
с максимальным значением в 256 КиБ.
sudo vi /etc/fstab
# Add the following entries
10.23.1.5:/HN1-data-mnt00001 /hana/data/HN1/mnt00001 nfs rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,noatime,_netdev,sec=sys 0 0
10.23.1.6:/HN1-data-mnt00002 /hana/data/HN1/mnt00002 nfs rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,noatime,_netdev,sec=sys 0 0
10.23.1.4:/HN1-log-mnt00001 /hana/log/HN1/mnt00001 nfs rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,noatime,_netdev,sec=sys 0 0
10.23.1.6:/HN1-log-mnt00002 /hana/log/HN1/mnt00002 nfs rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,noatime,_netdev,sec=sys 0 0
10.23.1.4:/HN1-shared/shared /hana/shared nfs rw,vers=4,minorversion=1,hard,timeo=600,rsize=262144,wsize=262144,noatime,_netdev,sec=sys 0 0
Например, SAS Viya рекомендует 256-КиБ считывать и записывать размеры, а SAS GRID ограничивает r/wsize
до 64 КИБ при увеличении производительности чтения с увеличением производительности чтения с повышенным числом операций чтения для подключений NFS. См. рекомендации по упреждающему чтению NFS для Azure NetApp Files.
Ниже приведены аспекты использования rsize
и wsize
.
- Размер данных в случайных операциях ввода-вывода часто меньше, чем значение параметров подключения
rsize
иwsize
. Таким образом, они не являются ограничениями. - При использовании кэша файловой системы последовательный ввод-вывод выполняется с использованием размера, указанного в параметрах подключения
rsize
иwsize
, если только размер файла не значенияrsize
иwsize
. - Операции обхода кэша файловой системы, хотя и по-прежнему ограничены
rsize
параметрами подключения,wsize
не так велик, как максимальный, указанныйrsize
илиwsize
. Это важно знать при использовании генераторов рабочей нагрузки с параметромdirectio
.
Для повышения общей пропускной способности и снижения задержки Azure NetApp Files рекомендуется задавать для параметров rsize
и wsize
значения, не превышающие 262 144 байтов.
Согласованность "близко к открытому" и таймеры атрибутов кэша
NFS использует нестрогую модель согласованности. Согласованность слаба, так как приложению не нужно переходить к общему хранилищу и каждый раз, когда он используется, сценарий, который будет иметь огромное влияние на производительность приложения. Существуют два механизма управления этим процессом: таймеры атрибутов кэша и согласованность "близко к открытому".
Если клиент имеет полное владение данными, то есть он не предоставляет общий доступ между несколькими узлами или системами, гарантируется согласованность. В этом случае можно уменьшить количество операций доступа getattr
к хранилищу и ускорить работу приложения, отключив согласованность "близко к открытому" (cto
) (с параметром подключения nocto
) и установив время ожидания для управления кэшем атрибута (параметр подключения actimeo=600
изменяет значение таймера на 10 мин по сравнению со значениями по умолчанию acregmin=3,acregmax=30,acdirmin=30,acdirmax=60
). В некоторых тестах nocto
демонстрирует сокращение числа вызовов для получения доступа getattr
на 65–70 %, а настройка actimeo
сокращает количество вызовов еще на 20–25 %.
Как работают таймеры кэша атрибутов
Атрибуты acregmin
, acregmax
, acdirmin
и acdirmax
управляют согласованностью кэша. Первые два атрибута определяют, как долго атрибуты файлов являются доверенными. Следующие два атрибута определяют, как долго атрибуты каталога файлов являются доверенными (размер каталога, владельцы каталога, разрешения каталога). Атрибуты min
и max
определяют минимальный и максимальный сроки, в течении которых атрибуты каталога, атрибуты файла и содержимое кэша для файла считаются доверенными. На интервале от min
до max
используется алгоритм для определения интервала времени, в течение которого кэшированная запись является доверенной.
Например, рассмотрим значения по умолчанию acregmin
и acregmax
— 3 и 30 секунд соответственно. Например, атрибуты многократно оцениваются для файлов в каталоге. Через 3 секунды служба NFS запрашивает актуальность. Если атрибуты считаются допустимыми, клиент удваивает время доверия до 6, 12 и 24 секунд, а затем — до максимального значения в 30 секунд. С этого момента, пока кэшированные атрибуты не перестанут быть актуальными (в момент начала цикла), срок доверия определяется как значение, заданное параметром acregmax
, то есть 30 секунд.
Существуют и другие случаи, которые могут воспользоваться аналогичным набором параметров подключения, даже если нет полного владения клиентами, например, если клиенты используют данные только для чтения, а обновление данных управляется другим путем. Для приложений, использующих сетки таких клиентов, как EDA, службы размещения веб-узлов и службы рендеринга видеороликов, и использующих относительно статические наборы данных (инструменты или библиотеки EDA, веб-содержимое, данные текстур), набор данных в основном кэшируется на клиентах. Существует несколько операций чтения и без операций записи. Существует множество getattr
вызовов /access, возвращающегося в хранилище. Обычно эти наборы данных обновляются с помощью другого клиента, который подключает файловые системы и периодически отправляет обновления содержимого.
В таких случаях существует известная задержка при выборе нового содержимого, и приложение по-прежнему работает с потенциально устаревшими данными. В этих случаях параметры nocto
и actimeo
можно использовать для управления периодом для обработки неактуальных данных. Например, в инструментах и библиотеках EDA параметр actimeo=600
работает эффективно, так как эти данные обычно обновляются редко. Для небольшого веб-размещения, где клиенты должны своевременно просматривать обновления данных, так как они редактируют свои сайты, actimeo=10
могут быть приемлемыми. Для крупномасштабных веб-сайтов, где содержимое, отправленное в несколько файловых систем, actimeo=60
может быть приемлемым.
Использование этих параметров подключения значительно сокращает рабочую нагрузку на хранилище в таких случаях. (Например, недавний интерфейс EDA сокращает количество операций ввода-вывода в секунду до >150 K до ~6 K.) Приложения могут работать значительно быстрее, так как они могут доверять данным в памяти. (Время доступа к памяти исчисляется наносекундами, а не сотнями микросекунд для операций доступа getattr
в быстрой сети).
Согласованность "близко к открытому"
Согласованность "близко к открытому" (параметр подключения cto
) гарантирует, что, вне зависимости от состояния кэша, при открытии файла приложению будут представлены самые последние данные для него.
- При обходе каталога (например,
ls -l
определенный набор RPCs (ls
удаленные вызовы процедур) выдаются. Сервер NFS предоставляет представление файловой системы. Еслиcto
все клиенты NFS получают доступ к заданному экспорту NFS, все клиенты видят один и тот же список файлов и каталогов. Актуальность атрибутов файлов в каталоге контролируется с помощью таймеров кэша атрибутов. Другими словами, если используетсяcto
, файлы отображаются на удаленных клиентах сразу после создания файла и его передачи в хранилище. - При открытии файла его содержимое гарантированно актуально с точки зрения сервера NFS.
Если есть состояние гонки, в котором содержимое не закончило очистку с компьютера 1 при открытии файла на компьютере 2, компьютер 2 получает только данные, присутствующих на сервере во время открытия. В этом случае компьютер 2 не извлекает больше данных из файла до тех пор, пока
acreg
таймер не будет достигнут, а компьютер 2 снова проверяет его совместность кэша с сервера. Этот сценарий можно наблюдать с помощью заключительного параметра-f
с компьютера 2, когда файл еще записывается с компьютера 1.
Согласованность, отличная от режима "близко к открытому"
При отсутствии открытой согласованности (nocto
) клиент доверяет свежести текущего представления файла и каталога до тех пор, пока таймеры атрибутов кэша не были нарушены.
При обходе каталога (например,
ls -l
определенный набор RPCs (ls
удаленные вызовы процедур) выдаются. Клиент выдает вызов серверу только для текущего списка файлов, когдаacdir
значение таймера кэша было нарушено. В этом случае недавно созданные файлы и каталоги не отображаются. Отображаются недавно удаленные файлы и каталоги.Если при открытии файла он все еще находится в кэше, его кэшированное содержимое (если таковое имеется) возвращается без проверки согласованности с сервером NFS.
Следующие шаги
- Рекомендации по прямому вводу-выводу Linux для Azure NetApp Files
- Рекомендации по кэшированию в файловых системах Linux для Azure NetApp Files
- Рекомендации по параллелизму Linux для Azure NetApp Files
- Рекомендации по работе с Linux NFS для чтения
- Рекомендации по SKU виртуальных машин Azure
- Тесты производительности для Linux