FreeNAS поддерживает общий доступ к сетевой файловой системе (NFS). Клиенты используют команду mount для монтирования общего ресурса. После установки общий ресурс NFS отображается как еще один каталог в клиентской системе. Для некоторых дистрибутивов Linux требуется установка дополнительного программного обеспечения для подключения общего ресурса NFS. В системах Windows включите службы для NFS в выпусках Ultimate или Enterprise или установите клиентское приложение NFS.
Примечание
По соображениям производительности iSCSI предпочитает использование общих ресурсов NFS при установке FreeNAS на ESXi. Рассматривая создание общих ресурсов NFS на ESXi, прочитайте анализ производительности при запуске ZFS через NFS в качестве хранилища VMware. (http://blog.laspina.ca/ubiquitous/running-zfs-over-nfs-as-a-vmware-store)
Создание общего ресурса
Чтобы создать общий ресурс NFS с помощью Мастера (Wizard), дважды нажмите кнопку Next (Далее), чтобы отобразить экран, показанный на рисунке 10.2.1.
Введите имя ресурса (Share name). Пробелы не допускаются в этих именах. Нажмите кнопку Generic Unix (NFS), затем нажмите «Добавить», чтобы имя общего ресурса появилось в фрейме «Имя». По завершении нажмите кнопку «Далее» дважды, затем кнопку «Подтвердить», чтобы создать общий ресурс.
Создание общего ресурса NFS с помощью мастера автоматически создает новый набор данных для общего ресурса, запускает службы, необходимые для NFS, и добавляет запись в Sharing ‣ Unix (NFS) Shares. В зависимости от требований IP-адреса, которым разрешен доступ к общему ресурсу NFS, могут быть ограничены или настроены разрешения.
Режимы NFS отредактированы, щелкнув Sharing ‣ Unix (NFS), выделив запись для общего ресурса и нажав кнопку «Изменить». В примере, показанном на рисунке ниже, экран конфигурации открыт для общего ресурса nfs_share1.
Параметры конфигурации общих ресурсов NFS в FreeNAS
Некоторые настройки доступны только при нажатии кнопки «Расширенный режим».
Path
Тип browse button. Browse (Перейдите) к тому или набору данных, которые будут использоваться совместно. Нажмите Add extra path (Добавить дополнительный путь), чтобы выбрать несколько путей.
Comment
Тип string. Задайте имя общего ресурса. Если оставить пустым, имя общего ресурса — это список выбранных записей пути.
Authorized networks
Тип string. Список разрешенных сетей в разрешении сети / маски CIDR, например, 1.2.3.0/24. Оставьте пустым, чтобы разрешить все.
Authorized IP addresses or hosts
Тип string. Список разрешенных IP-адресов или имен хостов. Оставьте пустым, чтобы разрешить все.
All directories
Тип checkbox. Установите, чтобы позволить клиенту монтировать любой подкаталог в пределах Пути.
Read only
Тип checkbox. Установите запрет на запись в общий ресурс.
Quiet
Тип checkbox. Установите для запрета некоторых диагностических систем syslog, чтобы избежать некоторых сообщений об ошибках. См. Пример экспорта (5). (https://www.freebsd.org/cgi/man.cgi?query=exports)
Maproot User
Тип drop-down menu. Когда пользователь выбран, пользователь root ограничен разрешениями этого пользователя.
Maproot Group
Тип drop-down menu. Когда группа выбрана, пользователь root также ограничен разрешениями этой группы.
Mapall User
Тип drop-down menu. Все клиенты используют разрешения указанного пользователя.
Mapall Group
Тип drop-down menu. Все клиенты используют разрешения указанной группы.
Security
Отображается только в том случае, если включена опция Enable NFSv4 (Включить NFSv4) в Services ‣ NFS. Возможны варианты sys или эти параметры Kerberos:
- krb5 (только аутентификация),
- krb5i (аутентификация и целостность)
- krb5p (аутентификация и конфиденциальность)
Если к столбцу Selected (Выбранный) с помощью стрелок добавлены несколько механизмов безопасности, используйте кнопки «Вверх» или «Вниз» для отображения в порядке предпочтения.
Особые моменты при создании совместных ресурсов NFS
Клиенты будут указывать Путь при установке доли(шары).
Параметры Maproot и Mapall являются эксклюзивными, это означает, что только один может использоваться, поскольку GUI не позволяет обоим. Параметры Mapall заменяют параметры Maproot. Чтобы ограничить только права пользователя root, установите параметр Maproot. Чтобы ограничить разрешения для всех пользователей, задайте параметры Mapall.
Каждый том или набор данных считается собственной файловой системой, а NFS не может пересекать границы файловой системы.
Сеть должна быть уникальной для каждого ресурса и для файловой системы или каталога. Поскольку /etc/exports не действует как ACL, применяемое правило не определено среди перекрывающихся сетей или при использовании одного и того же ресурса с несколькими хостами.
Опция All directories (Все каталоги) может использоваться только один раз на один ресурс в каждой файловой системе.
Чтобы лучше понять эти ограничения
Рассмотрите сценарий, в котором есть:
- две сети, 10.0.0.0/8 и 20.0.0.0/8
- том ZFS с именем volume1 с 2 наборами данных с именем dataset1 и dataset2
- dataset1 содержит каталог с именем directory1
Из-за ограничения №3 при попытке создать один общий ресурс NFS отображается ошибка:
- Авторизованные сети (Authorized networks) установлены в 10.0.0.0/8 20.0.0.0/8
- Путь (Path) установлен в /mnt/volume1/dataset1 и /mnt/volume1/dataset1/directory1
Вместо этого установите путь /mnt/volume1/dataset1 и установите флажок All directories (Все каталоги).
Этот каталог также может быть ограничен одной из сетей, создавая вместо этого две шары:
Первый общий ресурс NFS
- Authorized networks set to 10.0.0.0/8
- Path set to /mnt/volume1/dataset1
Второй общий ресурс NFS
- Authorized networks set to 20.0.0.0/8
- Path set to /mnt/volume1/dataset1/directory1
Обратите внимание, что для этого требуется создание двух шар. Это невозможно сделать только с одной шарой.
Пример конфигурации
По умолчанию поля Mapall не установлены. Это означает, что когда пользователь подключается к общему ресурсу NFS, пользователь имеет разрешения, связанные с их учетной записью пользователя. Это угроза безопасности, если пользователь может подключиться с правами root, поскольку у них будет полный доступ к этому ресурсу.
Лучший вариант — сделать это:
- Укажите встроенную учетную запись nobody, которая будет использоваться для доступа NFS.
- На экране Change Permissions (Изменение разрешений) томов или набора данных не изменяйте владельца и группу никому и установите разрешения в соответствии с нужными требованиями.
- Выберите nobody в раскрывающихся меню Mapall User и Mapall Group для общей доли в Sharing ‣ Unix (NFS) Shares.
В этой конфигурации не имеет значения, какая учетная запись пользователя подключается к общему ресурсу NFS, так как она будет сопоставлена с учетной записью пользователя nobody и будет иметь только разрешения, указанные в томе или наборе данных. Например, даже если пользователь root может подключиться, он не получит доступ root к общего ресурса.
Подключение к совместным ресурсам NFS
Следующие примеры разделяют эту конфигурацию:
- Система FreeNAS имеет IP-адрес 192.168.2.2.
- Создан набор данных с именем /mnt/volume1/nfs_share1, а разрешения установлены на учетную запись пользователя nobody и группу nobody.
- С этими атрибутами создается общий ресурс NFS:
- Path: /mnt/volume1/nfs_share1
- Authorized Networks: 192.168.2.0/24
- All Directories option is enabled
- MapAll User is set to nobody
- MapAll Group is set to nobody
Из BSD или Linux
NFS-файлы монтируются на BSD или Linux-клиентах с помощью этой команды, выполняемой как суперпользователь (root) или sudo:
mount -t nfs 192.168.2.2:/mnt/volume1/nfs_share1 /mnt
- -t nfs указывает тип файловой системы для общего доступа
- 192.168.2.2 — это IP-адрес системы FreeNAS
- /mnt/volume/nfs_share1 — это имя каталога для совместного использования, набор данных в этом случае
- /mnt — точка монтирования в клиентской системе. Это должен быть существующий пустой каталог. Данные в общем ресурсе NFS отображаются в этом каталоге на клиентском компьютере.
Успешная установка общего ресурса возвращается в командную строку без каких-либо сообщений о состоянии или ошибках.
Если эта команда не работает в системе Linux, убедитесь, что установлен пакет nfs-utils. (https://sourceforge.net/projects/nfs/files/nfs-utils/)
Эта конфигурация позволяет пользователям в клиентской системе копировать файлы в /mnt (точка монтирования). Все файлы принадлежат nobody:nobody. Изменения в любых файлах или каталогах в /mnt записываются в набор данных системы FreeNAS /mnt/volume1/nfs_share1.
Настройки не могут быть изменены на общем ресурсе NFS, если они установлены на любых клиентских компьютерах. Команда umount используется для размонтирования общего ресурса для клиентов BSD и Linux. Запустите его как суперпользователя или sudo на каждом клиентском компьютере
umount /mnt
Из Microsoft
Поддержка клиентов Windows NFS зависит от версий и выпусков. Для достижения наилучших результатов используйте Windows (SMB) шары. (http://doc.freenas.org/11/sharing.html#windows-smb-shares)
Из macOS
Чтобы смонтировать том NFS с помощью клиента macOS, перейдите в меню Go ‣ Connect to Server. В поле Server Address введите nfs://, за которым следует IP-адрес системы FreeNAS, а также имя тома или набора данных, которое совместно используется NFS. Пример, показанный на рисунке, продолжается с нашего примера 192.168.2.2:/mnt/volume1/nfs_share1.
Finder открывается автоматически после подключения. IP-адрес системы FreeNAS отображается в разделе SHARED в левом фрейме, а содержимое общего ресурса отображается в правом. В примере, показанном на рисунке ниже /mnt/data имеет одну папку с именами images. Теперь пользователь может копировать файлы в общий ресурс и из него.
Устранение неполадок NFS
Некоторые клиенты NFS не поддерживают протокол NLM (Network Lock Manager), используемый NFS. Это тот случай, если клиент получает сообщение об ошибке, что вся или часть файла может быть заблокирована при попытке передачи файла. Чтобы устранить эту ошибку, добавьте параметр —o nolock при запуске команды mount на клиенте, чтобы разрешить доступ на запись к общему ресурсу NFS.
Если при попытке установить общий ресурс из системы Linux отображается ошибка time out giving up (отказ от времени), убедитесь, что на клиентском компьютере Linux запущена служба portmapper. Если portmapper запущен и тайм-ауты все еще отображаются, принудительно используйте TCP, включив -o tcp в команду mount.
Если отображается сообщение об ошибке «RPC: Program not registered», обновите до последней версии FreeNAS и перезапустите службу NFS после обновления, чтобы очистить кеш NFS.
Если клиенты видят ошибки reverse DNS (обратного DNS), добавьте IP-адрес FreeNAS в поле базы имен хостов (Host name database) Network ‣ Global Configuration.
Если клиенты получают ошибки при попытке монтировать общий ресурс, добавьте IP-адрес клиента и имя хоста в поле базы данных имени хоста (Host name data base) в Network ‣ Global Configuration.
Некоторые более старые версии NFS-клиентов по умолчанию используют UDP вместо TCP и не поддерживают автоматическое согласование для TCP. По умолчанию FreeNAS использует TCP. Чтобы поддерживать соединения UDP, перейдите в раздел Services ‣ NFS и включите параметр Serve UDP NFS clients (Служить клиентам UDP NFS).
Команды nfsstat -c или nfsstat -s могут быть полезны для обнаружения проблем из командной оболочки. Высокая доля попыток и тайм-аутов по сравнению с чтением обычно указывает на проблемы с сетью.