В этой статье разбираемся с NFS сервером на LInux. Установим NFS сервер на Debian 13, создадим общий каталог и примонтируем его на другом сервере по сети.
🕒 3 мин.
Что такое NFS
NFS (Network File System) — это сетевая файловая система с открытым исходным кодом для Linux, реализующая одноимённый протокол. Она позволяет Linux-серверу предоставлять общий доступ к файлам и директориям для клиентов по сети. Наиболее часто используется в среде Linux и Unix-подобных систем, тогда как для подключения из Windows требуется установка отдельного NFS-клиента. Продукт распространяется под лицензией GPL.
- На серверной стороне устанавливается пакет — nfs-kernel-server.
- Для монтирования, на клиентской стороне устанавливается — nfs-common.
NFS чаще всего используют для организации общего доступа к файлам в однородных Linux-средах, где важны высокая производительность, прозрачность прав доступа (UID/GID) и интеграция на уровне ядра. В отличие от Samba, NFS не предоставляет встроенных механизмов аутентификации пользователей и гибкого маппинга прав. NFS полагается на совпадение идентификаторов пользователей (UID/GID) на клиенте и сервере. Поэтому Samba остаётся предпочтительным выбором для гетерогенных сетей с клиентами Windows [Samba – отдельный файловый сервер], интеграции с Active Directory [Ввод Samba в домен] и сценариев, где требуется тонкая настройка доступа через конфигурацию шары.
Подготавливаем сервер
Устанавливаем необходимые пакеты:
sudo apt update && \ sudo apt install nfs-kernel-server
Создаём каталог для шары:
sudo mkdir /srv/nfs
Настраиваем шару:
sudo nano /etc/exports /srv/nfs 172.28.90.53(rw,sync,no_subtree_check,no_root_squash)
/srv/nfs— путь к локальной директории на сервере, которая предоставляется в общий доступ.172.28.90.53— IP-адрес клиента, которому разрешено подключение. Можно указывать также подсети (например,172.28.90.0/24).rw— разрешает клиенту не только чтение, но и запись файлов в общую папку.sync— требует синхронной записи данных на диск перед отправкой ответа клиенту. Это повышает надёжность и целостность данных, но может незначительно снизить производительность.no_subtree_check— отключает проверку дерева каталогов. Ускоряет работу и предотвращает ошибки доступа при переименовании или перемещении файлов, если открытая директория является частью более общей экспортируемой структуры.no_root_squash— позволяет пользователюrootс клиентской машины иметь полные праваrootна сервере. Используем, если мы даём доступ для root пользователя на клиенте.
По желанию, вы можете использовать дополнительные опции:
ro— разрешает только чтение файлов.root_squash— преобразует запросы от пользователяrootна клиенте в запросы от анонимного пользователя (nobody:nogroup). Это настройка по умолчанию, повышающая безопасность. Её противоположность:no_root_squash. Если вы используете эту опцию, не забудьте поменять права на каталог (sudo chown nobody:nogroup /srv/nfs/).all_squash— принудительно отображает всех пользователей (включая не-root) на анонимного пользователя. Полезно для общественных файловых хранилищ.async— разрешает асинхронную запись (сервер может подтвердить запись до того, как данные физически сохранятся на диск). Повышает производительность, но увеличивает риск потери данных при сбое питания.sec— задаёт механизм безопасности (например,sec=krb5для аутентификации через Kerberos), что актуально для защищённых корпоративных сетей.
Применяем настройки:
sudo exportfs -ra
Проверяем:
sudo exportfs -v
- Должны увидеть примерно следующее:
/srv/nfs 172.28.90.53(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
Перезапускаем службу сервера:
sudo systemctl restart nfs-server
Монтирование с Linux клиента
Устанавливаем необходимые пакеты:
sudo apt update && \ sudo apt install nfs-common
Смотрим какие ресурсы доступны на сервере:
sudo showmount -e 172.28.90.52
- Видим примерно следующее:
Export list for 172.28.90.52: /srv/nfs 172.28.90.53
Монтируем:
sudo mount 172.28.90.52:/srv/nfs /mnt/
Дополнительно, вы можете использовать различные опции монтирования:
rsize=32768,wsize=32768— Размер буферов чтения и записи (в байтах). По умолчанию обычно 4096 или 8192, увеличение может значительно ускорить передачу больших файлов.noatime— Не обновлять время последнего доступа к файлу при каждом чтении. Снижает количество операций записи на сервере, повышая общую производительность.hard— По умолчанию, если сервер недоступен, процессы, пытающиеся обратиться к файлам, «зависают» и ждут восстановления связи, гарантирует целостность данных.soft— Если сервер не отвечает, клиент получает ошибку после истечения таймаута. Позволяет программам не зависать, но может привести к потере данных или их повреждению.
Итог
Теперь вы знаете как расшарить каталог, используя NFS, на одном Linux сервере и примонтировать его на втором Linux сервере.
Я показал вам:
- опции расшаривания, используемые на сервере;
- опции монтирования, используемые на клиенте.
Если понравилась статья, подпишись на мой канал в VK или Telegram.