Есть ли причина использовать NFS 3 вместо версии 4.2?

Вопрос или проблема

Рассмотрим рабочую среду с коммутаторами типа Infiniband со скоростью 100 Гбит/с, работающими на серверах корпоративного класса с объемом ОЗУ 512 ГБ и более, с операционной системой RHEL 8.7 или близкой к ней.

При настройке NFS между серверами, является ли последняя версия NFS vers=4.2 наилучшим выбором? Есть ли какие-либо причины, по которым использование NFSv3 с proto=UDP когда-либо лучше, чем NFS vers=4.2 с proto=tcp/udp/rdma?

Меня особенно интересует это в отношении многих узлов кластера, монтирующих папку /data с головного узла для чтения/записи; какой логический выбор NFS если целью является производительность?

Я нашел это, датированное 2008 годом, что, предположительно, относится к версии 4.0, а не 4.2, где говорится, что нет явного преимущества в производительности при переходе с NFSv3 на NFSv4.

https://www.linux.com/news/benchmarking-nfsv3-vs-nfsv4-file-operation-performance/

также

https://www.techtarget.com/searchenterprisedesktop/definition/Network-File-System

Некоторые обзоры NFSv4 и NFSv4.1 предполагают, что эти версии имеют ограниченную пропускную способность и масштабируемость, и что NFS замедляется в условиях интенсивного сетевого трафика. Проблема с пропускной способностью и масштабируемостью, как сообщается, была улучшена в NFSv4.2. Это было обновлено в апреле 2022 года

Для такого быстрого оборудования, вероятно, стоит использовать многопутевой NFS поверх RDMA или NFS через TCP с несколькими соединениями (nconnect=).

Согласно nfs(5), это плохая идея использовать NFSv3 на высокоскоростных каналах.

Следующий текст был добавлен в руководство в мае 2012 года.

Методы транспорта

Использование NFS поверх UDP на высокоскоростных каналах

Использование NFS поверх UDP на высокоскоростных каналах, таких как гигабитный Ethernet, может привести к тихой порче данных.

Проблема может возникнуть при высоких нагрузках и вызвана проблемами при сборке IP-фрагментов. Чтение и запись NFS обычно передают UDP-пакеты размером 4 килобайт и более, которые должны быть разбиты на несколько фрагментов для передачи через Ethernet-соединение, которое по умолчанию ограничивает пакеты до 1500 байт. Этот процесс происходит на сетевом уровне IP и называется фрагментацией.

Для идентификации фрагментов, принадлежащих вместе, IP присваивает каждому пакету 16-битное значение IP ID; фрагменты, созданные из одного UDP-пакета, будут иметь одинаковый IP ID. Принимающая система будет собирать эти фрагменты и объединять их, чтобы сформировать исходный UDP-пакет. Этот процесс называется сборкой. Время ожидания для сборки пакета по умолчанию составляет 30 секунд; если сетевая стек не получает все фрагменты данного пакета в течение этого интервала, она считает, что недостающий фрагмент(ы) был утерян и отбрасывает те, которые были уже получены.

Проблема, которая создается на высокоскоростных каналах, заключается в том, что возможно отправить более 65536 пакетов в течение 30 секунд. На самом деле, при интенсивной трафике NFS можно наблюдать, что IP ID повторяются примерно через 5 секунд.

Это серьезно влияет на сборку: если один фрагмент потеряется, другой фрагмент из другого пакета, но с тем же IP ID, прибудет в течение 30 секунд, и сетевая стек объединит эти фрагменты для формирования нового пакета. В большинстве случаев уровни сети выше IP обнаружат эту несоответствующую сборку – в случае UDP, контрольная сумма UDP, которая является 16-битной контрольной суммой всего полезного пакета, обычно не совпадет, и UDP отбросит плохой пакет.

Однако, контрольная сумма UDP составляет всего 16 бит, поэтому существует вероятность 1 к 65536, что она совпадет, даже если полезная нагрузка пакета будет полностью случайной (что очень часто бывает не так). Если это произойдет, произойдет тихая порча данных.

Эта возможность должна быть принята всерьез, по крайней мере, на гигабитном Ethernet. Скорости 100 Мбит/с следует считать менее проблематичными, потому что при большинстве шаблонов трафика IP ID обходится гораздо дольше 30 секунд.

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

Если вам нужно работать с правами пользователя/группы на файлы, знайте, что nfs4.x использует систему Acl, похожую на Windows, вместо традиционных разрядов Unix.

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

Возможно, NFS4 может опционально поддерживать режимные разряды; проверьте это, если это для вас важно.

Nfs3 является бездрайверным, что ограничивает его функциональность во многих отношениях. Однако у него есть огромное преимущество, когда у вас есть сервер NFS с высокой доступностью. Например, на dell power scale (isilon), если один узел выходит из строя, другой узел возьмет на себя адрес IP и подключения и беспрепятственно продолжит обслуживание клиентов.

Ответ или решение

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

Теория

NFS (Network File System) — это протокол, который позволяет системам обмениваться файлами в сети как на локальном диске. Версия NFS 3, вышедшая в 1995 году, обеспечивает базовый набор функций: поддержка большого количества клиентов, высокая скорость передачи данных, простота использования. Она является безусловно статeless, что дает определенные преимущества в плане отказоустойчивости: в случае сбоя сервера клиент просто переподключается к новому узлу без необходимости синхронизации состояния.

NFS версии 4 и ее поздние релизы, такие как 4.1 и 4.2, представляют собой существенное обновление. Они включают улучшенные механизмы безопасности, интеграцию с Active Directory и поддержку более совершенных файловых атрибутов и разрешений. Версия 4.2 получила значительные улучшения для увеличения пропускной способности и масштабируемости, а также улучшенную работу с пользователями и группами за счет более продвинутой системы ACL (Access Control List).

Примеры

Старые отзывы на ранние версии NFS 4.x указывали на проблемы с пропускной способностью и масштабируемостью. Однако эти проблемы были в значительной мере решены в версии 4.2. По состоянию на 2022 год, улучшения в NFS 4.2 делают ее значительно более подходящей для тяжелых сетевых нагрузок по сравнению с предыдущими версиями.

Еще один аспект, который необходимо учитывать — это транспортная прослойка. Хотя NFS 3 поддерживает UDP и TCP, использование UDP на высокоскоростных соединениях может привести к тихой порче данных из-за проблем с перерасчетом IP-фрагментов. Поэтому TCP или RDMA являются более предпочтительными выборами, гарантируя надежную передачу данных и минимизацию потерь пакетов.

Применение

В вашей среде с серверами на RHEL 8.7 и 100 Гбит/с Infiniband-коммутаторами оптимальным выбором является использование NFS версии 4.2. Несколько ключевых моментов:

  1. Пропускная способность и надежность: Использование NFS 4.2 с TCP или RDMA обеспечит лучшую пропускную способность и надежность, минимизируя риск потери данных и необходимость в повторной передаче пакетов.

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

  3. Масштабируемость: Современные улучшения версии 4.2 обеспечивают более высокую масштабируемость, что крайне важно в кластерах с множеством узлов, обрабатывающих высокие нагрузки.

  4. Совместимость и интеграция: NFS 4.2 поддерживает лучшие методы интеграции с другими системами, такими как Active Directory, что может быть критично в крупных корпоративных сетях.

Заключение

С учетом предоставленной информации и анализируя технические характеристики, NFS версия 4.2 представляет собой лучший выбор для вашей среды с точки зрения производительности, безопасности и масштабируемости. NFS 3 может быть предпочтительным в специфических сценариях, где необходима быстрое восстановление после отказа при использовании статeless-сервера, однако для современных высокопроизводительных систем с большими объемами данных и высокой скоростью соединения NFS 4.2 является более целесообразным решением.

Оцените материал
Добавить комментарий

Капча загружается...