Home » Настройка монтирования NFS на Ubuntu 24
Настройка монтирования NFS на Ubuntu 24

Настройка монтирования NFS на Ubuntu 24

Сегодня разберем, как настроить монтирование NFS на Ubuntu 24 — штука, которая может серьезно упростить жизнь системному администратору. Если вы работаете с несколькими серверами и постоянно думаете, как бы синхронизировать данные между ними без костылей, NFS (Network File System) — это именно то, что доктор прописал. Эта старая добрая технология позволяет монтировать удаленные файловые системы так, будто они находятся локально на вашем сервере. Особенно актуально для тех, кто арендует VPS или выделенные серверы и хочет организовать централизованное хранение данных.

Как работает NFS: теория без воды

NFS — это сетевая файловая система, которая работает по принципу клиент-сервер. На сервере запускается демон nfsd, который экспортирует определенные директории, а клиенты могут монтировать их к себе. Протокол работает поверх RPC (Remote Procedure Call) и по умолчанию использует порт 2049.

Основные компоненты NFS:

  • rpc.nfsd — основной демон NFS-сервера
  • rpc.mountd — обрабатывает запросы на монтирование
  • rpc.statd — отвечает за блокировки файлов
  • rpc.lockd — управляет блокировками

В Ubuntu 24 по умолчанию используется NFSv4, который имеет улучшенную производительность и безопасность по сравнению с предыдущими версиями.

Пошаговая настройка NFS-сервера

Начнем с установки необходимых пакетов на сервере:


sudo apt update
sudo apt install nfs-kernel-server
sudo systemctl enable nfs-kernel-server
sudo systemctl start nfs-kernel-server

Создаем директорию для экспорта:


sudo mkdir -p /export/shared
sudo chown nobody:nogroup /export/shared
sudo chmod 755 /export/shared

Настраиваем файл экспорта /etc/exports:


sudo nano /etc/exports

Добавляем строку для экспорта:


/export/shared 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

Применяем изменения:


sudo exportfs -a
sudo systemctl restart nfs-kernel-server

Проверяем статус:


sudo exportfs -v
sudo systemctl status nfs-kernel-server

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

На клиентской машине устанавливаем клиентскую часть:


sudo apt update
sudo apt install nfs-common

Создаем точку монтирования:


sudo mkdir -p /mnt/nfs-share

Монтируем NFS-ресурс:


sudo mount -t nfs4 192.168.1.100:/export/shared /mnt/nfs-share

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


df -h | grep nfs
ls -la /mnt/nfs-share

Для автоматического монтирования при загрузке добавляем в /etc/fstab:


192.168.1.100:/export/shared /mnt/nfs-share nfs4 defaults,user,exec 0 0

Опции монтирования и их значение

Рассмотрим основные опции монтирования NFS:

Опция Описание Рекомендации
rw/ro Чтение-запись/только чтение Используйте ro для статического контента
sync/async Синхронная/асинхронная запись sync для важных данных, async для производительности
no_subtree_check Отключает проверку поддеревьев Рекомендуется для производительности
no_root_squash Не преобразует root в nobody Осторожно! Только для доверенных клиентов
soft/hard Мягкие/жесткие маунты hard для важных данных, soft для временных

Практические кейсы и решения проблем

Кейс 1: Медленная работа NFS

Проблема: NFS работает медленно, особенно при работе с мелкими файлами.

Решение: Используйте следующие опции монтирования:


sudo mount -t nfs4 -o rsize=1048576,wsize=1048576,hard,intr,timeo=600 192.168.1.100:/export/shared /mnt/nfs-share

Кейс 2: Проблемы с правами доступа

Проблема: Пользователи не могут записывать файлы в NFS-шару.

Решение: Синхронизируйте UID/GID между сервером и клиентом или используйте all_squash:


/export/shared 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

Кейс 3: Автоматическое монтирование с autofs

Установка autofs для автоматического монтирования:


sudo apt install autofs
sudo systemctl enable autofs

Настройка в /etc/auto.master:


/mnt/auto /etc/auto.nfs --timeout=60

Создание /etc/auto.nfs:


shared -fstype=nfs4,rw 192.168.1.100:/export/shared

Безопасность NFS: что нужно знать

NFS имеет репутацию небезопасного протокола, но в NFSv4 ситуация значительно улучшилась:

  • Kerberos аутентификация — можно настроить sec=krb5
  • Firewall правила — ограничьте доступ к портам 2049, 111
  • Stunnel — для шифрования трафика

Пример настройки базового firewall:


sudo ufw allow from 192.168.1.0/24 to any port 2049
sudo ufw allow from 192.168.1.0/24 to any port 111
sudo ufw enable

Мониторинг и диагностика

Полезные команды для диагностики NFS:


# Проверка экспортированных директорий
showmount -e localhost

# Статистика NFS
nfsstat -s # сервер
nfsstat -c # клиент

# Проверка RPC сервисов
rpcinfo -p

# Мониторинг активных подключений
ss -tuln | grep :2049

Альтернативы NFS

Сравнение с другими решениями:

Решение Производительность Сложность настройки Совместимость
NFS Высокая Средняя Unix/Linux
Samba/CIFS Средняя Средняя Windows/Linux
GlusterFS Высокая Высокая Универсальная
SSHFS Низкая Низкая Универсальная

Автоматизация и скрипты

Скрипт для автоматической настройки NFS-клиента:


#!/bin/bash
NFS_SERVER="192.168.1.100"
NFS_SHARE="/export/shared"
MOUNT_POINT="/mnt/nfs-share"

# Установка клиента
sudo apt update && sudo apt install -y nfs-common

# Создание точки монтирования
sudo mkdir -p $MOUNT_POINT

# Монтирование
sudo mount -t nfs4 $NFS_SERVER:$NFS_SHARE $MOUNT_POINT

# Проверка
if mountpoint -q $MOUNT_POINT; then
echo "NFS successfully mounted at $MOUNT_POINT"
else
echo "Failed to mount NFS"
exit 1
fi

# Добавление в fstab
echo "$NFS_SERVER:$NFS_SHARE $MOUNT_POINT nfs4 defaults,user,exec 0 0" | sudo tee -a /etc/fstab

Интеграция с Docker и контейнерами

NFS отлично работает с Docker для персистентного хранения:


# Создание Docker volume с NFS
docker volume create --driver local \
--opt type=nfs4 \
--opt o=addr=192.168.1.100,rw \
--opt device=:/export/shared \
nfs-volume

# Использование в контейнере
docker run -d --name app -v nfs-volume:/data nginx

Интересные факты о NFS

Несколько любопытных фактов о NFS:

  • NFS был разработан Sun Microsystems в 1984 году
  • NFSv4 поддерживает делегирование — клиент может получить эксклюзивный доступ к файлу
  • Google использует модифицированную версию NFS в своей инфраструктуре
  • NFS может работать через NAT, но требует дополнительной настройки

Заключение и рекомендации

NFS остается одним из лучших решений для организации сетевого хранения в Linux-окружении. Для производственных систем рекомендую:

  • Использовать NFSv4 с Kerberos аутентификацией
  • Настроить мониторинг производительности
  • Регулярно создавать резервные копии экспортированных данных
  • Использовать SSD для NFS-сервера при высоких нагрузках

NFS особенно хорош для:

  • Веб-кластеров с общим контентом
  • Систем резервного копирования
  • Shared storage для виртуализации
  • Централизованных логов

При правильной настройке NFS может значительно упростить администрирование серверной инфраструктуры и обеспечить надежный доступ к данным между множеством серверов.

Полезные ссылки для дальнейшего изучения:


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked