Экспорт файловых систем через NFS в TrueNAS Scale - это стандартная задача для интеграции хранилища в Linux-инфраструктуру. Однако разница между рабочей и оптимизированной конфигурацией измеряется в десятках процентов производительности и уровне безопасности. Это руководство проведет вас через весь процесс: от создания ZFS dataset с правильными параметрами до тонкой настройки сервиса NFS для production-среды. Все шаги проверены на TrueNAS Scale версии 2026 и готовы к применению.
Мы сосредоточимся на практических аспектах, которые напрямую влияют на результат: как выбор размера блока (recordsize) определяет скорость работы с виртуальными машинами, почему отключение atime критично для нагрузки, и как правильно разграничить права доступа с помощью механизмов NFS и ZFS ACL. Инструкция поможет избежать типичных ошибок и создать стабильный, безопасный и производительный файловый ресурс.
Подготовка ZFS Dataset: основа для производительного NFS-экспорта
Перед созданием NFS-шары необходимо правильно подготовить ZFS dataset. Его параметры закладывают фундамент производительности, и изменить некоторые из них позже без перезаписи данных сложно или невозможно. В веб-интерфейсе TrueNAS Scale перейдите в Storage -> Datasets и нажмите Add Dataset.
Укажите имя (например, nfs_share_vm). Важны не только базовые настройки типа данных (Filesystem), но и расширенные свойства ZFS, которые откроются после нажатия на Advanced Options. Именно здесь кроется ключ к оптимизации.
Recordsize: самый важный параметр для оптимизации под вашу задачу
Параметр recordsize определяет максимальный размер блока, который ZFS будет использовать для операций ввода-вывода внутри этого dataset. Его выбор напрямую зависит от типа рабочих нагрузок, которые будут обращаться к NFS-шаре. Неправильный выбор ведет к фрагментации и избыточным операциям чтения-записи.
Используйте эти конкретные рекомендации:
- 1M (1048576 байт): Оптимально для хранения больших последовательных файлов - видеоархивов, образов ISO, резервных копий. Уменьшает метаданные и увеличивает скорость последовательного чтения/записи.
- 128K (131072 байта): Стандартный и рекомендуемый выбор для хранилища виртуальных машин (KVM, VMware). Соответствует типичному размеру блока гостевых систем и обеспечивает сбалансированную производительность.
- 16K или 8K (16384 или 8192 байта): Используйте для workload с огромным количеством мелких файлов - базы данных (MySQL, PostgreSQL), почтовые хранилища, каталоги с исходным кодом. Уменьшает overhead на операции с маленькими файлами.
Изменить recordsize после создания dataset можно, но это повлияет только на новые данные. Существующие блоки останутся прежнего размера, что может привести к фрагментации при изменении на меньший размер. Поэтому правильный выбор на этапе создания критически важен.
Atime и Compression: баланс между нагрузкой на диск и эффективностью
Два других ключевых параметра - atime и compression.
Atime (Access Time): При каждом чтении файла ZFS по умолчанию обновляет метку времени последнего доступа. Для NFS-шары с высокой частотой чтения это создает постоянный поток дополнительных операций записи (write amplification), снижая производительность. Для большинства NFS-сценариев atime следует отключить. В интерфейсе выберите опцию Off для свойства "Update Access Time".
Compression: Включение сжатия на уровне ZFS экономит место на диске и, что важно для NFS, снижает объем передаваемого по сети трафика (данные сжимаются на сервере и прозрачно разжимаются на клиенте). Рекомендуемые алгоритмы:
- lz4: Алгоритм по умолчанию. Очень быстрый, с минимальной нагрузкой на CPU. Подходит для любых workload, включая виртуальные машины. Рекомендуем начинать с него.
- zstd: Обеспечивает лучшее соотношение степени сжатия к скорости. Нагрузка на CPU выше, чем у lz4. Может быть полезен для архивных данных или если место на диске в большом дефиците.
После задания всех параметров нажмите Save. Dataset готов к настройке в качестве NFS-экспорта. Для глубокого понимания работы ZFS рекомендуем наше руководство по оптимизации производительности TrueNAS и ZFS, где разобраны параметры пулов, кеша ARC и мониторинг.
Создание и базовая настройка NFS-шары в веб-интерфейсе
Перейдите в Services -> NFS. Убедитесь, что сервис включен (Status: RUNNING). Нажмите кнопку Add в разделе "NFS Shares".
Заполните форму:
- Path: Нажмите на иконку папки и выберите созданный ранее ZFS dataset.
- Comment: Описание для удобства администрирования (например, "NFS для ВМ кластера").
- Enabled: Оставьте галочку.
- All dirs: Включите, если требуется предоставить доступ ко всем подкаталогам внутри dataset (рекурсивно). Для большинства случаев нужно.
Самый важный блок - настройки доступа.
Настройки доступа (Hosts, Maproot, Mapall): контроль на уровне шар
Здесь вы определяете, кто и с какими правами сможет подключиться к шарe. Это базовая мера безопасности NFS.
- Hosts: Список IP-адресов или сетей, которым разрешен доступ. Можно указать несколько значений через пробел.
- Пример для одного хоста:
192.168.1.100 - Пример для подсети:
192.168.1.0/24 - Пример для нескольких хостов:
192.168.1.100 192.168.1.101
- Пример для одного хоста:
- Maproot: Принудительно отображает пользователя root на клиенте в указанного пользователя на сервере. Это лишает клиентского root привилегий на шарe.
maproot=root- отключает маппинг, root на клиенте остается root на сервере (небезопасно).maproot=user:john- клиентский root будет отображен в пользователя john на сервере.
- Mapall: Принудительно отображает всех пользователей с клиента в указанного пользователя или группу на сервере. Полезно для выделенных сервисов (например, backup).
mapall=user:backup group:backup- все клиентские пользователи будут «притворяться» пользователем backup из группы backup на сервере.
Типичный сценарий: вам нужно, чтобы клиент с IP 192.168.1.50, где работает пользователь с UID 1001, мог записывать данные в каталог, принадлежащий пользователю с UID 1000 на TrueNAS. Без maproot/mapall это вызовет ошибки прав. Решение: в поле Mapall укажите mapall=user:1000 group:1000. Теперь клиентский пользователь 1001 получит права пользователя 1000 на сервере.
После настройки нажмите Save, а затем Start Service, если сервис был остановлен. Базовая NFS-шарa создана. Более широкий контекст по настройке сетевых служб вы найдете в статье Настройка сетевого доступа к файлам в TrueNAS Core и SCALE.
Безопасность: NFSv4, Kerberos и тонкая настройка прав
Базовая настройка с использованием NFSv3 и правил доступа по IP уже работоспособна, но для production-среды этого недостаточно. NFSv3 передает данные в открытом виде, использует несколько портов и уязвим к спуфингу. Переход на NFSv4 решает многие из этих проблем.
Переход на NFSv4: включение и настройка совместимости
В веб-интерфейсе перейдите в Services -> NFS и нажмите кнопку Configure (значок шестеренки). Откроются глобальные настройки сервиса.
- Установите галочку Enable NFSv4. Это основной шаг.
- Опция Allow NFSv3 позволяет клиентам использовать как v4, так и v3. Оставьте включенной на время миграции. После перевода всех клиентов на v4 ее можно отключить для повышения безопасности.
- NFSv4 domain - критически важный параметр. Он должен быть одинаковым на сервере TrueNAS и всех NFSv4-клиентах. Обычно это DNS-имя домена (например,
localdomain). Этот домен используется для построения уникальных идентификаторов пользователей (string owner/group) в NFSv4, что обеспечивает корректное отображение прав между разными системами.
Преимущества NFSv4: использование единого порта 2049 (упрощает настройку брандмауэра), stateful-протокол (лучшая обработка сбоев), встроенные механизмы безопасности (поддержка Kerberos для аутентификации и шифрования).
Детальный контроль с помощью ACL ZFS
Механизмы maproot и mapall работают на уровне всей шарa. Для сложных многопользовательских сценариев, когда разным людям и группам нужны разные права внутри одной файловой системы, необходимы списки контроля доступа (ACL).
TrueNAS Scale предоставляет удобный интерфейс для управления POSIX ACL (NFSv4 ACL) ZFS. Перейдите в Storage -> Datasets, найдите ваш dataset и нажмите на кнопку Edit (значок карандаша). Откройте вкладку Permissions.
Нажмите Edit ACL. Здесь вы можете добавлять, изменять и удалять записи ACL. Например:
- Разрешить группе
developersчтение и запись (rwx). - Дать группе
guestsтолько право на чтение (r-x). - Наследовать эти права для всех новых файлов и подкаталогов (флаги
file_inherit,dir_inherit).
После применения ACL права будут корректно интерпретироваться как по NFSv4, так и по SMB. Использование NFSv4 в сочетании с ZFS ACL - это профессиональный подход к управлению доступом в общих хранилищах. Подробнее о настройке высокопроизводительного NFS-сервера читайте в отдельном практическом руководстве.
Тонкая настройка производительности NFS и ZFS
Когда базовая функциональность и безопасность обеспечены, можно перейти к тонкой оптимизации под высокие нагрузки.
Параметры сервиса NFS: количество потоков и размеры буферов
В глобальных настройках NFS (Services -> NFS -> Configure) обратите внимание на дополнительные параметры:
- Servers: Количество потоков (демонов) NFS сервера. Каждый поток обрабатывает входящие запросы. Рекомендуемое значение - количество физических ядер CPU вашего сервера. Например, для 8-ядерного процессора укажите
8или16(с учетом hyper-threading). Это улучшит параллельную обработку запросов от множества клиентов. - mountd(8) bind port, rpc.statd(8) bind port: Для NFSv3. В NFSv4 можно оставить по умолчанию.
- Параметры read и write (размер буфера): Определяют максимальный размер пакета данных для операций чтения и записи. Для сетей 1 Гбит/с значения по умолчанию обычно оптимальны. Для сетей 10 Гбит/с и выше с низкой латентностью можно увеличить до
32768или65536для снижения сетевых накладных расходов. Тестируйте изменения в тестовой среде.
Мониторинг нагрузки и диагностика проблем
После запуска шарa важно контролировать ее состояние. TrueNAS Scale предоставляет для этого инструменты.
В веб-интерфейсе перейдите в Reporting. На вкладке Network выберите график NFS. Здесь отображается статистика операций (читайте, пишите) в реальном времени.
Для глубокой диагностики используйте Shell (кнопка в верхнем правом углу интерфейса):
nfsstat -s- выводит детальную статистику сервера NFS: количество вызовов процедур, кеширование, сетевые ошибки.zpool iostat -vl 1- показывает нагрузку на пул ZFS с детализацией по каждому vdev с интервалом в 1 секунду. Помогает выявить «узкое место» в RAID-массиве.arc_summary- отображает статистику кеша ARC (Adaptive Replacement Cache) ZFS. Обращайте внимание на показатель Hit Rate. Низкий hit rate (менее 90%) для workload с частым повторным чтением указывает на нехватку оперативной памяти для кеша.
Высокая латентность операций записи может указывать на то, что workload требует синхронной записи (sync=always на dataset), что замедляет работу. Для некритичных данных (кеши, временные файлы) можно рассмотреть sync=disabled, но это риск потери данных при сбое питания. Всегда используйте UPS. Базовые принципы мониторинга и настройки системы описаны в нашем полном руководстве по настройке TrueNAS Scale.
Проверка работоспособности и подключение клиентов
Перед подключением клиентов убедитесь, что экспорт виден. В Shell TrueNAS выполните команду:
showmount -e localhost
Вы должны увидеть список экспортированных путей и разрешенных для них хостов.
Примеры команд монтирования для клиентов:
- Linux (временное монтирование):
Опцииsudo mount -t nfs -o vers=4,rw,hard,intr,timeo=600,retrans=2 192.168.1.10:/mnt/tank/nfs_share_vm /mnt/nfs_clienthardиintrобеспечивают стабильность при сетевых сбоях. - Linux (постоянное монтирование в /etc/fstab):
Параметр192.168.1.10:/mnt/tank/nfs_share_vm /mnt/nfs_client nfs vers=4,rw,hard,intr,timeo=600,retrans=2,_netdev 0 0_netdevгарантирует, что монтирование произойдет после загрузки сети. - VMware ESXi: Требует поддержки NFSv3. В настройках хранилищ укажите путь в формате
/mnt/tank/nfs_share_vm, IP-адрес сервера и выберите созданную ранее NFS-шару. Убедитесь, что в настройках сервиса NFS на TrueNAS включен NFSv3. - Kubernetes: Используйте provisioner NFS или создайте StorageClass и PersistentVolume, указав
server: 192.168.1.10иpath: /mnt/tank/nfs_share_vm.
После монтирования проверьте права доступа, выполнив запись тестового файла с клиента. Правильно настроенный NFS-экспорт на TrueNAS Scale становится надежным, производительным и безопасным сетевым хранилищем для разнообразных корпоративных задач.
Для автоматизации работы с API различных AI-моделей, что может быть полезно при документировании или анализе логов, вы можете использовать сервис AiTunnel. Он предоставляет единый интерфейс для доступа к более чем 200 моделям, включая GPT и Claude, с оплатой в рублях и без необходимости VPN.