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

Что такое 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
Важно: пакет одинаков на сервере и клиентах, но роль определяется конфигурацией сервисов и экспортами.
Настройка 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
Если служба активна — можно переходить к настройке экспортов.
Создание и настройка экспортируемых директорий
Создадим примеры каталогов, которые будем экспортировать:
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
Важно: в некоторых сценариях (статические экспорты, 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
Проверка записи с клиента
Создайте тестовые файлы на клиенте, чтобы убедиться в корректной записи на сервер:
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
Проверка, что записи в fstab корректны и монтирование работает при reboot.
Факт-бокс: ключевые номера и сервисы
- NFSv4: порт TCP/UDP 2049
- rpcbind (portmap): порт 111
- mountd: может использовать динамические порты, управляются firewalld
- Основные сервисы systemd: nfs-server, nfs-lock, nfs-idmap
Отладка и распространённые проблемы
Ниже — методичный набор шагов для диагностики проблем с NFS.
- Проверить, работают ли службы на сервере:
systemctl status nfs-server rpcbind nfs-idmapd
- Проверить экспорты:
sudo exportfs -v
showmount -e
- Проверить firewall и SELinux:
sudo firewall-cmd --list-all
sudo getenforce
Если SELinux в Enforcing и есть проблемы с доступом, рассмотрите временно permissive для теста: sudo setenforce 0 (не оставляйте в продакшн).
- Проверить монтирование на клиенте:
dmesg | tail -n 50
journalctl -u nfs-client.target
- Проблемы с правами пользователей: проверьте соответствие 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)
- Симптом: клиент не видит экспортов (showmount пуст)
- Проверить состояние nfs-server и rpcbind
- Проверить firewall на сервере
- Проверить /etc/exports и exportfs -v
- Симптом: клиент видит экспорты, но не может смонтировать
- Проверить сетевую доступность (ping/telnet 2049)
- Посмотреть сообщения в dmesg и journalctl
- Временно отключить SELinux для теста
- Симптом: проблемы с правами
- Сверить 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 в компании
- Подготовить изолированный тестовый кластер (сервер + 2 клиента).
- Настроить экспорты и проверить сценарии работы (чтение/запись, права).
- Провести нагрузочное тестирование под реальной нагрузкой.
- Перенести конфигурацию в 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.
Примечание: для продуктивного развертывания рекомендуем дополнительно настроить мониторинг, резервное копирование и централизованное управление пользователями.
Похожие материалы

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

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

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

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

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