Обзор NFS
Существует несколько ключевых концепций NFS, которые стоит обсудить в контексте выбора решения для хранения HPC. Основная сложность при использовании NFS заключается в определении того, требует ли целевая среда хранения HPC элементов конфигурации, сетевых подключений или функций безопасности, относящихся к конкретной версии NFS. Если вы собираете некоторые из этих понятий в критерии выбора, это поможет оценить различные доступные решения. Как минимум, учет этих элементов экономит время, устраняя все, что не соответствует вашим требованиям NFS.
Рекомендации по NFS
Существует две основные версии протокола NFS: NFSv3 и NFSv4.x (версия 4.1 и версия 4.2). Полное описание различий между этими двумя версиями выходит за рамки этого модуля. Но есть несколько проблем, связанных с проверкой подлинности и авторизацией, которые мы определяем здесь. Нам не нужно обсуждать историю двух протоколов или почему есть два. Достаточно знать, что многие пользователи по-прежнему работают под управлением NFSv3 в своих средах.
Начнем с рекомендаций, относящихся к использованию NFSv3.
NFSv3 и группы
NFSv3 — это простой протокол файловой системы, передающий запросы API клиентам и серверам NFS. Ранее упоминалось, что UID представляет пользователя и что у пользователей есть связь с первичной группой GID. Мы также говорили, что пользователь может входить в несколько групп. В контексте NFS эти группы называются дополнительными. Данные UID и GID передаются с запросами, которые сервер NFS использует для определения соответствующего уровня доступа.
NFSv3 имеет ограничение на общее число передаваемых идентификаторов групп. NFSv3 поддерживает передачу только 16 вспомогательных групп для любого заданного идентификатора пользователя. Если вы используете более 16 назначений групп значимыми способами (например, точное управление доступом), это ограничение может повлиять на вас. Поставщики NAS, такие как NetApp, добавили расширение протокола NFS, которое поддерживает передачу данных обо всех сопоставлениях групп. Это так называемая расширенная поддержка групп. Если вы оцениваете хранилище HPC и используете большое число идентификаторов групп, убедитесь, что предлагаемое решение поддерживает такую возможность.
NFSv3 и сетевая безопасность
NFSv3 также имеет ограничения в плане безопасности. В NFSv3 функций для обеспечения безопасности совсем немного. Например, NFSv3 не поддерживает шифрование данных или проверку подлинности Kerberos. Основные механизмы, доступные в среде NFSv3, предполагают использование правил и политик экспорта для ограничения доступа к NFS-серверу на уровне сети. Экспорт — это механизм, используемый NFS-сервером для предоставления клиентам доступа к определенному каталогу. Правила экспорта настроены на разрешение или запрет клиентов на основе их IP-адреса. Вы можете определить записи узлов в правиле экспорта (например, 1.1.1.1) или в сетях (например, 1.1.1.0/24) и разрешить или запретить доступ для экспорта. Правила экспорта объединены в политику экспорта, связанную с конкретным экспортом на сервере NFS.
NFSv3 и сетевые порты
Одна из проблем с NFSv3 заключается в том, что NFSv3 не использует стандартный TCP-порт для всех подключений. Такая гибкость затрудняет предоставление доступа с помощью NFSv3 через глобальную сеть, потому что хотя стандартные порты (111 для RPC и 2049 для NFS) используются, другие порты для подключения экспорта назначаются случайным образом.
Сетевое подключение NFSv3 в Azure представляет трудности только в том случае, если вам требуется доступ за пределами виртуальной сети, а также конфигурация безопасности, которая блокирует порты TCP. Но выбор решения, предоставляющего конфигурацию политики экспорта, позволяет заблокировать решение NFS напрямую независимо от того, что настроено в пограничной сети.
Подмена (squash)
Подмена — это способность NFS-сервера принудительно использовать конкретный идентификатор пользователя при доступе к файлам и папкам. Например, администратор может контролировать, какой идентификатор пользователя используется для определенной экспортируемой папки. Среды сервера Linux NFS поддерживают возможность squash root access to a nonroot UID. Продукты NAS поддерживают подмену на основе адреса или сети и идентификатора пользователя для входящего клиента. Одним из основных способов использования скваширования является обеспечение доступа к удаленному подключению, не относящегося к сети.
Если вы собираетесь реплицировать файловую систему в Azure и ожидаете такого же поведения, помните, что не все решения поддерживают подмену точно таким же образом.
NFSv3 и шифрование
NFSv3 не поддерживает шифрование данных. Изначально он был разработан для использования в доверенной корпоративной среде. Решение для шифрования сети должно зашифровать трафик, который покидает надежную сеть.
NFSv3 и блокировка файлов
Блокировка означает возможность клиента предотвращать обновление определенного файла или раздела файла другими клиентами. В NFSv3 отсутствует собственный механизм блокировки. Сетевые службы, называемые диспетчером сетевой блокировки (NLM) и монитором состояния сети (NSM), выполняют блокировку, которая существует. Эти службы выполняются на клиентах и серверах и управляют всем взаимодействием с блокировкой. Эти службы выполняются за пределами службы NFS и создают собственный трафик по сетевым протоколам. Их блокировки не являются обязательными. Они называются рекомендуемыми блокировками. Они отслеживаются, но не применяются. Приложения должны сами справляться с проблемами состязания и блокировки.
NFSv4.x
В NFSv4.x представлено несколько важных изменений NFS. Давайте сосредоточимся на основных улучшениях.
NFSv4 и Kerberos
В NFSv4 предоставлена полная поддержка использования Kerberos для проверки подлинности пользователей и шифрования всего трафика NFS. Была предпринята попытка интегрировать Kerberos с NFSv3, но из-за использования NLM/NSM и других внешних протоколов шифруются только полезные данные.
Если политики экспорта явно заблокированы, все доступы в NFSv3 не являются доверенными. Благодаря протоколу Kerberos теперь можно выполнять проверку подлинности на основе доверенных компьютеров.
Поддерживается шифрование всего трафика NFS. Вы можете зашифровать весь трафик от NFS-клиента к NFS-серверу (а не только по конкретным сегментам сети).
Для использования проверки подлинности и шифрования с помощью протокола Kerberos требуется развертывание среды Kerberos.
Ключевым фактором является то, что не все службы, совместимые с NFSv4, поддерживают Kerberos. Без протокола Kerberos вы по-прежнему сможете использовать другие функции NFSv4, но не сможете выполнять проверку подлинности или шифрование данных. При выборе решения обязательно проверьте, нужна ли вам эта возможность и поддерживается ли Kerberos.
NFSv4 и сетевые порты
Одним из преимуществ NFSv4 над NFSv3 является то, что NFSv4 использует один TCP-порт (порт 2049) для всего трафика. Если у вас есть среда NFSv4 в виртуальной сети Azure или расположенная в центре обработки данных, проще предоставить доступ между брандмауэрами при поддержке NFSv4.
NFSv4 и списки управления доступом
Предположим, у вас есть файл или папка и вы хотите предоставить доступ для чтения и записи группе 1, доступ только для чтения группе 2 и доступ на добавление данных определенной учетной записи компьютера. Разрешения NFSv3 (биты режима) не соответствуют этим требованиям, так как в версии 3 разрешения не имеют достаточной степени детализации.
В NFSv4 появились списки управления доступом (ACL). К каждому файлу или папке можно применить список ACL. Каждый список ACL состоит из одной или нескольких записей управления доступом (ACE). Этот подход знаком администраторам NTFS в Windows, так как в NTFS используется та же модель.
Если в вашей среде используются списки управления доступом NFSv4, необходимо определить, какое решение хранилища лучше всего соответствует этому требованию.
Итоги
Мы обсудили протокол NFS в общих чертах. Описанные элементы представляют ключевые факторы, которые следует учитывать при выборе решения для хранения.
Необходимо оценить текущую среду и требования к управлению группами, сети и безопасности, чтобы определить соответствующее решение для хранения данных.
В этой таблице приведено сравнение на основе предшествующего обсуждения:
Возможность | NFSv3 | NFSv4 |
---|---|---|
Разрешения для файлов и папок | Биты режима | Биты режима и/или ACL |
Шифрование | нет | Kerberos |
Сетевые порты | Требуется TCP или UDP, portmapper | TCP-порт 2049 |
Блокировка файлов | Рекомендательный NLM | Поддержка активных блокировок |