Настройка производительного и безопасного сетевого хранилища на базе NFS - стандартная задача для интеграции TrueNAS в Linux-инфраструктуру. Это руководство предоставляет проверенный алгоритм действий, от базовой конфигурации экспортов до тонкой настройки производительности и отказоустойчивости клиентов. Вы получите рабочую конфигурацию, готовую для использования в продакшн-среде, с акцентом на безопасность через Kerberos и стабильность через autofs.
Инструкция проверена на актуальных версиях TrueNAS CORE 13 и SCALE 24.10 (Angelfish) для серверной части и на дистрибутивах RHEL 9, Ubuntu 22.04 LTS и Rocky Linux 9 для клиентов. Мы пройдем весь путь: от создания оптимизированного Dataset в ZFS до диагностики проблем с помощью nfsstat и журналов.
Подготовка TrueNAS: создание надежного фундамента для NFS
Правильная начальная конфигурация исключает проблемы с производительностью и доступом на последующих этапах. Убедитесь, что сервер TrueNAS имеет статический IP-адрес и корректно разрешает имена в сети.
Выбор и настройка Dataset для оптимальной работы NFS
Параметры ZFS Dataset напрямую влияют на скорость работы NFS. Создайте новый Dataset через Storage → Datasets → Add Dataset.
- Recordsize: Установите 1M (1048576 байт) для workloads с большими файлами (видео, образы виртуальных машин, базы данных). Для общего файлового хранилища с множеством мелких файлов лучше подходит 128K. Этот параметр определяет максимальный размер блока в ZFS и должен быть согласован с клиентскими rsize/wsize.
- Compression: Включите алгоритм lz4. Он практически не нагружает CPU, но может значительно сократить объем передаваемых по сети данных, увеличив эффективную пропускную способность.
- Quota: Установите квоту для предотвращения исчерпания пространства в пуле. Для резервирования места под снапшоты используйте параметр Reservation.
Эти настройки - основа. Более глубокую оптимизацию ZFS для различных сценариев вы найдете в нашем отдельном руководстве по производительности TrueNAS.
Базовая конфигурация NFS-сервиса в веб-интерфейсе TrueNAS
Активируйте и настройте службу NFS: перейдите в Services → NFS, нажмите кнопку редактирования (шестеренка).
- Убедитесь, что галочка Enable активна.
- Для современных клиентов включите Enable NFSv4. Это обеспечивает улучшенную безопасность и производительность.
- Параметр NFSv3 ownership model for NFSv4 оставьте включенным, если в сети есть старые клиенты, требующие совместимости с UID/GID моделью NFSv3.
- Количество серверных процессов (Servers) установите равным количеству ядер CPU вашего сервера. Для 8-ядерного процессора введите 8.
- Нажмите Save и запустите службу.
Теперь создайте первый экспорт: Sharing → Unix Shares (NFS) → Add.
- Path: Выберите созданный ранее Dataset.
- Network: Оставьте поле пустым для первого теста или укажите подсеть ваших клиентов, например, 192.168.1.0/24.
- Остальные параметры пока не меняйте. Нажмите Submit.
Экспорт появится в списке. Для базовой проверки с клиента выполните: showmount -e <IP_TrueNAS>. Вы должны увидеть путь к вашему Dataset.
Тонкая настройка экспортов: баланс между безопасностью и доступностью
Параметры экспорта позволяют гибко управлять правами доступа для разных хостов и пользователей. Отредактируйте созданный экспорт.
Контроль прав доступа: Maproot vs Mapall
Эти параметры управляют маппингом привилегированных пользователей с клиента на сервер.
- Maproot User & Group: Пользователь root (UID 0) и группа root (GID 0) с клиента будут отображаться в указанные здесь UID и GID на сервере TrueNAS. Используйте для административного доступа. Пример: Maproot User:
0, Maproot Group:0- дает клиентскому root полный доступ к файлам на сервере. - Mapall User & Group: Все пользователи, подключившиеся с клиента, будут принудительно отображаться в указанные UID и GID. Это полезно для изоляции: например, все пользователи с любого клиента будут работать как пользователь
appuser(UID 1001) на сервере, что упрощает управление правами на уровне Dataset.
Важно: UID и GID на клиентских Linux-машинах должны существовать на сервере TrueNAS или корректно маппироваться через эти параметры. Создавайте пользователей через Accounts → Users в TrueNAS.
Настройка доступа для нескольких клиентов и подсетей
Поле Authorized Networks (или Network в старых версиях) принимает список сетей или IP-адресов через пробел.
192.168.1.0/24 10.0.10.5 172.16.20.0/255.255.255.0
Вы можете создать несколько экспортов одного пути для разных целей. Например:
- Экспорт
/mnt/pool/dataдля подсети бэкап-серверов (192.168.2.0/24) с правами Read/Write и Maproot для root. - Экспорт того же пути
/mnt/pool/dataдля пользовательской подсети (192.168.1.0/24) с правами Read Only и Mapall на непривилегированного пользователя.
Параметр Quiet подавляет некоторые предупреждения протокола и может немного увеличить производительность в обмен на детальность логирования.
Максимальная защита: интеграция аутентификации Kerberos (NFSv4 с Krb5)
Kerberos добавляет к NFS строгую аутентификацию, гарантию целостности данных (krb5i) и их шифрование (krb5p). Для работы требуется действующий контроллер домена KDC (Active Directory или FreeIPA).
Настройка TrueNAS для работы с контроллером домена (KDC)
На контроллере домена создайте принципал (учетную запись) для NFS-сервера. В Active Directory с помощью ktpass или в FreeIPA с помощью ipa:
# Пример для FreeIPA
ipa service-add nfs/nas.your-domain.com@YOUR.REALM
Экспортируйте keytab-файл и загрузите его на TrueNAS.
- В TrueNAS перейдите в System → Kerberos Keytabs → Add.
- Загрузите файл keytab, укажите имя.
- Затем перейдите в Directory Services → Kerberos Realms → Add.
- Заполните поля: Realm (ваш домен в верхнем регистре), KDC (адреса контроллеров), Admin Server, Password Server. Привяжите созданный keytab.
Теперь отредактируйте экспорт NFS. В разделе Advanced Options найдите параметр Security. Выберите нужный уровень:
- sys: Стандартная аутентификация (без Kerberos).
- krb5: Только аутентификация Kerberos.
- krb5i: Аутентификация + целостность данных (проверка на изменение).
- krb5p: Аутентификация, целостность и шифрование трафика.
Выберите krb5p для максимальной защиты. Перезапустите службу NFS.
Конфигурация Linux-клиента и проверка аутентификации
На клиенте установите пакеты Kerberos: krb5-workstation (RHEL) или krb5-user (Ubuntu). Отредактируйте /etc/krb5.conf, указав параметры вашего REALM.
Получите тикет для пользователя домена:
kinit username@YOUR.REALM
# Введите пароль. Проверьте тикет:
klist
Смонтируйте раздел с указанием безопасности Kerberos:
mount -t nfs4 -o sec=krb5p,rw,hard,intr,timeo=300,retrans=3 nas.your-domain.com:/mnt/pool/data /mnt/nas_secure
Для диагностики проблем смотрите логи демона rpc.gssd на клиенте (journalctl -u rpc-gssd) и /var/log/messages на TrueNAS. Убедитесь, что время на сервере и клиентах синхронизировано (NTP).
Настройка Linux-клиентов: отказоустойчивость и стабильность
Статическое монтирование в /etc/fstab уязвимо к сбоям при загрузке, если NFS-сервер недоступен. Решение - autofs и правильные параметры монтирования.
Autofs: автоматическое и отказоустойчивое монтирование
Autofs монтирует раздел только при обращении к нему и автоматически перемонтирует при разрыве связи.
Установите и включите autofs:
# RHEL/Rocky
sudo dnf install autofs
sudo systemctl enable --now autofs
# Ubuntu/Debian
sudo apt install autofs
sudo systemctl enable --now autofs
Настройте мастер-карту (/etc/auto.master). Добавьте строку:
/mnt/autofs /etc/auto.nas --timeout=300
Создайте файл карты /etc/auto.nas:
data -fstype=nfs4,rw,hard,intr,timeo=300,retrans=3,vers=4.2 nas-ip:/mnt/pool/data
backup -fstype=nfs4,ro,soft,timeo=150,vers=4.1 nas-ip:/mnt/pool/backup
Перезапустите autofs: systemctl restart autofs. Теперь при обращении к /mnt/autofs/data раздел смонтируется автоматически.
Критические параметры монтирования: hard, soft, timeo, retrans
Эти параметры определяют поведение системы при сетевых сбоях.
- hard: При потере связи с сервером клиент будет бесконечно повторять запросы. Это гарантирует консистентность данных, но может "зависнуть" процессы, ожидающие ввода-вывода. Используйте для критичных данных.
- soft: После серии неудачных повторных попыток клиент вернет ошибку в приложение. Это повышает отзывчивость, но грозит потерей данных при временном сбое. Не рекомендуется для записи.
- timeo: Время ожидания ответа от сервера в десятых долях секунды. Значение 300 означает 30 секунд.
- retrans: Количество повторных попыток до того, как софт-монт вернет ошибку, а хард-монт продолжит попытки. Общий таймаут перед действием =
timeo * retrans.
Для надежной LAN-сети рекомендуемая базовая конфигурация: hard,intr,timeo=300,retrans=3,tcp,vers=4.2.
Оптимизация производительности NFS
Скорость работы зависит от согласованности параметров клиента и сервера, а также сетевой инфраструктуры.
Ключевые параметры клиента: rsize, wsize и версия протокола
Параметры rsize (размер блока чтения) и wsize (размер блока записи) определяют, сколько данных передается за один сетевой пакет.
Проверьте текущие настройки смонтированной файловой системы:
nfsstat -m
В выводе найдите строки rsize и wsize. Для сети 10 Гбит/с и современного железа устанавливайте значения 1048576 (1 МБ):
mount -t nfs4 -o rsize=1048576,wsize=1048576,hard,...
Используйте NFSv4.2, если поддерживается обеими сторонами. Он добавляет такие функции, как server-side copy (ускоряет копирование файлов на сервере) и параллельный доступ к файлам.
Тюнинг серверной части в TrueNAS
В настройках службы NFS (Services → NFS → Edit) поле Auxiliary Parameters позволяет передать дополнительные аргументы демонам ядра.
Пример для увеличения количества потоков обработки и кэширования атрибутов:
# Увеличение потоков nfsd сверх значения Servers (для пиковых нагрузок)
nfsd:nfsd_servers=32
# Увеличение времени кэширования атрибутов файлов (в секундах)
nfsd:nfsd_attr_cache=60
Важно: изменения в auxiliary parameters требуют перезагрузки всей службы NFS. Некорректные значения могут привести к ее отказу. Начинайте с малого и тестируйте.
Для сетей с поддержкой jumbo frames увеличьте MTU до 9000 на интерфейсах TrueNAS и сетевых коммутаторах. Это можно сделать в Network → Interfaces, отредактировав физический интерфейс.
Мониторинг, диагностика и решение частых проблем
Постоянный мониторинг позволяет выявить узкие места до того, как они приведут к проблемам.
Чек-лист диагностики при отказе монтирования
Если клиент не может смонтировать раздел, действуйте по порядку:
- Сеть:
ping <IP_TrueNAS>. Нет ответа - проверьте физическое соединение, маршрутизацию, брандмауэры. - Служба NFS:
rpcinfo -p <IP_TrueNAS>. Должны быть зарегистрированы программы mountd, nfsd, portmapper (rpcbind). Если нет - служба NFS на TrueNAS не запущена или заблокирована firewall. - Доступность экспорта:
showmount -e <IP_TrueNAS>. Убедитесь, что нужный путь виден и IP клиента входит в разрешенные сети. - Права и Kerberos: Проверьте логи на клиенте (
journalctl -xe) и на TrueNAS (tail -f /var/log/messages). Ищите ошибки "access denied", "RPC: Authentication error". Для Kerberos проверьтеklistи время.
Анализ производительности: поиск узких мест
Используйте nfsstat для получения статистики.
# Статистика клиента
nfsstat -c
# Статистика сервера (выполняется на TrueNAS через Shell)
nfsstat -s
Ключевые метрики:
- Высокое значение retrans (больше 3-5% от общего числа передач) указывает на проблемы с сетью: потери пакетов, перегрузки.
- Нулевое значение retrans при низкой скорости чтения/записи говорит о том, что узкое место - диски или CPU сервера. Проверьте загрузку дисков на TrueNAS:
zpool iostat 1. - Используйте
nfsiostat(пакетnfs-utilsна клиенте) для получения детальной статистики ввода-вывода по каждому смонтированному NFS.
Для комплексного мониторинга производительности ZFS, который лежит в основе NFS, обратитесь к нашему руководству по оптимизации TrueNAS. В нем вы найдете команды для анализа кэша ARC, загрузки vdev и настройки параметров ZFS под высокие нагрузки.
Распространенные ошибки и их решения:
- "Stale file handle": Файловый дескриптор на клиенте устарел. Обычно возникает после перестройки экспорта или Dataset на сервере. Решение: размонтировать и смонтировать раздел заново на клиенте.
- "No route to host": Сетевая проблема. Проверьте firewall. На TrueNAS убедитесь, что встроенный firewall (Network → Firewall) разрешает трафик на порты 111 (rpcbind), 2049 (nfs), и порты mountd (обычно динамические).
- "RPC: Program not registered": Служба NFS на TrueNAS не запущена или "упала". Перезапустите ее через веб-интерфейс или командой
service nfsd restartв Shell TrueNAS.
Для автоматизации резервного копирования данных с вашего NFS-сервера на внешние носители с полной изоляцией (Air-Gap) изучите наше подробное руководство по Air-Gap резервному копированию в TrueNAS.
Интеграция мощных ИИ-моделей, таких как GPT или Claude, в ваши рабочие процессы может ускорить анализ логов или написание скриптов автоматизации. Для удобного и безопасного доступа к более чем 200 моделям через единый API на русском языке рассмотрите сервис AiTunnel.