Гид по технологиям

Установка и настройка NFS на AlmaLinux 9

6 min read Linux Обновлено 29 Sep 2025
NFS на AlmaLinux 9 — сервер и клиент
NFS на AlmaLinux 9 — сервер и клиент

Схема NFS сервера и клиентов

Что такое NFS

NFS (Network File System) — сетевой протокол для совместного использования файлов и директорий так, будто они находятся локально. Изначально разработан компанией Sun Microsystems, ныне широко используется в UNIX-подобных системах для централизованного хранения данных. NFS удобен в инфраструктурах, где несколько клиентов должны иметь единый доступ к общим ресурсам.

Определение в одно предложение: NFS предоставляет доступ к файловой системе по сети по протоколу RPC, обычно на портах 2049 и через rpcbind на 111.

Важно: NFS — протокол уровня файловой системы, а не блочного уровня. Для блочного доступа используются другие технологии (iSCSI, Fibre Channel).

Основные варианты использования

  • Централизованное домашнее хранение пользователей (/home)
  • Общие каталоги приложений и данных
  • Бэкапы и обмен файлами между серверами

Преимущества и ограничения

  • Плюсы: простая конфигурация, прозрачный доступ, интеграция с UNIX-пермиссиями.
  • Минусы: безопасность по умолчанию слабее, задержки при работе по сети, возможны сложности с правами и UID/GID при отсутствии единой системы учёта.

Предварительные требования

  • Сервер с AlmaLinux 9: в примерах используется hostname almalinux9-server и IP 192.168.10.15.
  • Учетная запись с sudo-привилегиями на сервере и клиентах.
  • Клиенты: любая RHEL-подобная система (AlmaLinux, Rocky, CentOS Stream).

Установка NFS на сервере и клиенте

На сервере и на каждом клиенте установите пакет nfs-utils из репозитория AppStream.

sudo dnf install nfs-utils

Установка nfs-utils на AlmaLinux

Важно: пакет одинаков на сервере и клиентах, но роль определяется конфигурацией сервисов и экспортами.

Настройка idmapd

Для корректной трансляции UID/GID по NFSv4 нужно настроить /etc/idmapd.conf. Откройте файл и укажите Domain равным вашему FQDN или hostname сервера.

sudo nano /etc/idmapd.conf

Пример строки:

Domain = almalinux9-server

Сохраните изменения.

Запуск и включение сервиса NFS

sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo systemctl status nfs-server

Старт и проверка nfs-server

Если служба активна — можно переходить к настройке экспортов.

Создание и настройка экспортируемых директорий

Создадим примеры каталогов, которые будем экспортировать:

sudo mkdir -p /mnt/shared /mnt/backup
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup

Затем откройте файл /etc/exports для задания правил доступа.

sudo nano /etc/exports

Вставьте следующие строки (пример):

/mnt/backup  192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)

Пояснения параметров:

  • rw — разрешить чтение и запись.
  • sync — данные записываются на диск перед подтверждением клиенту (более безопасно, но медленнее).
  • no_subtree_check — отключает проверку поддеревьев для повышения производительности.
  • no_root_squash — отключает понижение привилегий root-клиента для указанного экспорта.

Сохраните и закройте файл.

Перезапустите NFS для применения конфигурации:

sudo systemctl restart nfs-server

Проверьте текущие экспорты:

sudo exportfs -v

Безопасность сети: настройка firewalld

Если на сервере используется firewalld, откройте сервисы, необходимые для работы NFS и сопутствующих демонов:

sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Проверка статуса firewalld с сервисами NFS

Важно: в некоторых сценариях (статические экспорты, firewalls между сегментами) потребуется открыть дополнительные порты (см. «Факт-бокс»).

Настройка клиента NFS

На клиенте установите nfs-utils и проверьте доступные экспорты сервера:

sudo dnf install nfs-utils
sudo showmount -e 192.168.10.15

Вы увидите список экспортируемых директорий, например /mnt/backup, /mnt/shared и /home.

Список экспорта на клиенте

Создайте целевые точки монтирования и смонтируйте экспортированные каталоги:

sudo mkdir -p /data /backup /shared
sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data

Проверьте с помощью df -h, что каталоги смонтированы:

sudo df -h

Проверка смонтированных NFS

Проверка записи с клиента

Создайте тестовые файлы на клиенте, чтобы убедиться в корректной записи на сервер:

echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt

Тестовая запись на клиенте

На сервере проверьте, что файлы доступны:

cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt

Проверка файлов на сервере

Если содержимое совпадает — запись работает.

Автомонтирование через /etc/fstab

Для автоподключения при загрузке укажите экспорты в /etc/fstab. Сначала отмонтируйте временные точки:

sudo umount /data /backup /shared
sudo df -h

Отмонтирование каталогов на клиенте

Откройте /etc/fstab:

sudo nano /etc/fstab

Добавьте записи (подгоните IP/пути под свою среду):

192.168.10.15:/mnt/backup    /backup   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared    /shared   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home    /data   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Сохраните и выполните:

sudo mount -a
sudo df -h

Автоматическое монтирование через /etc/fstab

Проверка, что записи в fstab корректны и монтирование работает при reboot.

Факт-бокс: ключевые номера и сервисы

  • NFSv4: порт TCP/UDP 2049
  • rpcbind (portmap): порт 111
  • mountd: может использовать динамические порты, управляются firewalld
  • Основные сервисы systemd: nfs-server, nfs-lock, nfs-idmap

Отладка и распространённые проблемы

Ниже — методичный набор шагов для диагностики проблем с NFS.

  1. Проверить, работают ли службы на сервере:
systemctl status nfs-server rpcbind nfs-idmapd
  1. Проверить экспорты:
sudo exportfs -v
showmount -e 
  1. Проверить firewall и SELinux:
sudo firewall-cmd --list-all
sudo getenforce

Если SELinux в Enforcing и есть проблемы с доступом, рассмотрите временно permissive для теста: sudo setenforce 0 (не оставляйте в продакшн).

  1. Проверить монтирование на клиенте:
dmesg | tail -n 50
journalctl -u nfs-client.target
  1. Проблемы с правами пользователей: проверьте соответствие UID/GID между сервером и клиентом или настройте idmap/LDAP/SSSD для централизованной учётной записи.

Критерии приёмки:

  • Сервер экспортирует указанные каталоги (exportfs -v показывает их).
  • Клиент монтирует каталоги и может читать/писать (создание тестового файла и проверка на сервере).
  • После перезагрузки клиента монтирование происходит автоматически через /etc/fstab.

Ролевые чеклисты

Администратор сервера:

  • Установить nfs-utils, настроить /etc/exports
  • Настроить idmapd.conf
  • Открыть порты в firewalld
  • Обеспечить бэкап конфигураций

Администратор клиента:

  • Установить nfs-utils
  • Проверить showmount и смонтировать каталоги
  • Добавить записи в /etc/fstab и проверить mount -a

Инженер по безопасности:

  • Убедиться в ограничении доступа по IP/сети
  • Настроить межсетевой экран и, при необходимости, TLS/их аналоги (stunnel/посредники)
  • Проанализировать необходимость no_root_squash

План действий при инциденте (runbook)

  1. Симптом: клиент не видит экспортов (showmount пуст)
    • Проверить состояние nfs-server и rpcbind
    • Проверить firewall на сервере
    • Проверить /etc/exports и exportfs -v
  2. Симптом: клиент видит экспорты, но не может смонтировать
    • Проверить сетевую доступность (ping/telnet 2049)
    • Посмотреть сообщения в dmesg и journalctl
    • Временно отключить SELinux для теста
  3. Симптом: проблемы с правами
    • Сверить UID/GID
    • Рассмотреть использование no_all_squash / root_squash корректно

Альтернативы NFS и когда их использовать

  • SMB/CIFS — если нужна совместимость с Windows-клиентами.
  • SSHFS — для быстрого защищённого монтирования через SSH (удобно для отдельных пользователей, не для продакшн-серверов).
  • iSCSI — если нужен блочный доступ, а не файловый.

Когда NFS не подходит:

  • Требуется сквозное шифрование без дополнительной инфраструктуры.
  • Нужен блочный доступ к диску для виртуальных машин.

Улучшение безопасности NFS

  • Ограничьте доступ по подсетям и IP-адресам в /etc/exports.
  • Избегайте no_root_squash, если нет необходимости; используйте root_squash.
  • Используйте межсетевые экраны между клиентами и сервером.
  • Рассмотрите транспортное шифрование (например, IPsec) для чувствительных данных.
  • Переведите учёт пользователей в централизованную систему (LDAP/SSSD) для консистентных UID/GID.

Советы по производительности

  • Используйте параметр actimeo в fstab для контроля времени кэширования атрибутов.
  • Включайте sync только там, где это критично; async может увеличить производительность, но снизит надёжность при сбоях.
  • Планируйте сеть с низкой задержкой между сервером и клиентами для уменьшения IO-latency.

Мини-методология развёртывания NFS в компании

  1. Подготовить изолированный тестовый кластер (сервер + 2 клиента).
  2. Настроить экспорты и проверить сценарии работы (чтение/запись, права).
  3. Провести нагрузочное тестирование под реальной нагрузкой.
  4. Перенести конфигурацию в staging, затем в production, обеспечив мониторинг.

Часто задаваемые вопросы

Q: Нужен ли NFSv4? A: Да: NFSv4 упрощает конфигурацию (включая firewall и stateful соединения) и рекомендуется для новых развёртываний.

Q: Как обеспечить шифрование трафика NFS? A: NFS не шифрует трафик по умолчанию; для шифрования используйте IPsec или туннели (stunnel, WireGuard).

Заключение

Вы развернули NFS-сервер и подключили клиентов на AlmaLinux 9. Основные шаги: установка nfs-utils, настройка /etc/idmapd.conf, задания экспортов в /etc/exports, открытие соответствующих сервисов в firewalld, подключение клиентов и автоподключение через /etc/fstab. Дополнительно рассмотрены отладка, безопасность и альтернативы.

Важно: всегда тестируйте изменения в тестовой среде и планируйте бэкапы перед внесением изменений в продакшн.

Краткое резюме:

  • Проверьте, что сервисы nfs-server и rpcbind работают.
  • Ограничьте доступ в /etc/exports по сети.
  • Настройте /etc/fstab для автоподключения и протестируйте mount -a.

Примечание: для продуктивного развертывания рекомендуем дополнительно настроить мониторинг, резервное копирование и централизованное управление пользователями.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Резервная копия реестра Windows — как создать
Windows

Резервная копия реестра Windows — как создать

Как посмотреть понравившиеся публикации в Instagram
Социальные сети

Как посмотреть понравившиеся публикации в Instagram

Голосовой ввод в WhatsApp: Gboard и SwiftKey
Мессенджеры

Голосовой ввод в WhatsApp: Gboard и SwiftKey

Поиск общих фильмов и сотрудников на IMDb
Кино

Поиск общих фильмов и сотрудников на IMDb

Цитата на рабочем столе с Rainmeter
How-to

Цитата на рабочем столе с Rainmeter

NFS на AlmaLinux 9 — сервер и клиент
Linux

NFS на AlmaLinux 9 — сервер и клиент