2.5.12 Настройка NFS
Настройка сервера
Установка пакетов и запуск служб
Конфигурационный файл
Публикация сетевого ресурса
Настройка клиента
Установка пакетов и запуск служб
Подключение к NFS-ресурсу
Подключение вручную
Подключение с помощью fstab
Подключение с помощью autofs
Окружение
- Версия ОС: 7.3
- Конфигурация ОС: Рабочая станция, Сервер графический, Сервер минимальный
- Редакция ОС: Стандартная
- Версия ПО: nfs-utils-1:2.7.1-2.rc1, nfs4-acl-tools-0.3.5-2, autofs-1:5.1.6-7
NFS — это сетевой протокол, позволяющий компьютерам удаленно обмениваться файлами и каталогами по сети.
Основные преимущества NFS:
-
централизованное хранение данных — все файлы хранятся на одном сервере, а доступ к ним имеет большое количество клиентов;
-
упрощение администрирования — нет необходимости копировать файлы на каждый компьютер — достаточно один раз разместить их на NFS-сервере;
-
экономия места — файлы хранятся в одном месте, а не дублируются на каждом устройстве;
-
удобство работы — пользователи и программы могут работать с файлами так, как если бы они располагались локально.
NFS-сервер — это компьютер (или специализированное устройство), на котором запущена служба NFS. Он предоставляет доступ к своим файлам и каталогам другим компьютерам (NFS-клиентам) по сети.
Принцип работы NFS-сервера:
-
экспорт файловой системы — администратор указывает, какие каталоги (экспорты) будут доступны по сети;
-
настройка прав доступа — определяет, какие клиенты и с какими правами (чтение, запись) могут подключаться;
-
подключение клиентов — клиенты монтируют экспортированные каталоги к своей файловой системе и работают с ними.
Настройка сервера
В рамках текущей инструкции все команды будут выполняться с правами администратора системы, если не указано иное.
Установка пакетов и запуск служб
Обновите систему:
sudo dnf makecache && sudo dnf update
Установите необходимые пакеты:
sudo dnf install nfs-utils nfs4-acl-tools
Запустите службу сервера:
sudo systemctl enable --now nfs-server.service
Конфигурационный файл
Основным конфигурационным файлом NFS-сервера является файл /etc/exports. Он определяет, какие каталоги на сервере будут доступны по сети, а также какие клиенты и с какими правами смогут к ним подключаться.
Изначально файл /etc/exports пуст. Администратор вручную должен указать экспортируемые каталоги и права доступа к ним.
Требования к оформлению файла конфигурации:
-
каждый экспортируемый NFS-ресурс должен быть указан на отдельной строке;
-
после каждого указанного клиента в скобках должен быть приведен список параметров доступа к NFS-ресурсу, пробелы между именем/адресом клиента и открывающей скобкой списка параметров не допускаются;
-
параметры доступа должны быть описаны через запятую, без пробелов;
-
клиенты, которым разрешен доступ к NFS-ресурсу, должны быть отделены друг от друга пробелами;
-
для продолжения записи с новой строки допускается использовать символ обратного слеша (
\); -
комментарии указываются после символа решетки (
#); -
пустые строки игнорируются.
Формат записи экспортируемого каталога имеет вид:
/<путь_к_каталогу> <клиент_1>(<опции>) <клиент_2>(<опции>) ... <клиент_N>(<опции>)
где:
-
/<путь_к_каталогу>— путь к экспортируемому каталогу (NFS-ресурсу) на сервере; -
<клиент_1>,<клиент_2>…<клиент_N>— адрес клиента (-ов), которому (-ым) разрешается доступ к экспортируемому каталогу. В качестве адреса клиента может быть задан как конкретный адрес сети, так и набор адресов. Адрес клиента может принимать следующие значения:-
имя хоста — имя можно указать как в сокращенном виде, которое разрешается (преобразуется) DNS, так и в виде полного доменного имени (FQDN);
-
IP-адрес — имя можно указать в виде IPv4- или IPv6-адреса. IPv6-адреса не должны заключаться в квадратные скобки во избежание их некорректной обработки как подстановочных знаков;
-
подсеть — экспорт каталогов также можно настроить для всех хостов в подсети, указав пару
<адрес_подсети>/<маска_подсети>, где<маска_подсети>может быть указана в десятичном формате с точками (/255.255.255.0) или в формате длины маски (/24). -
набор хостов — имена хостов могут содержать знаки подстановки (
*и?) или списки классов символов в квадратных скобках ([ ]). Например, запись вида *.redos.domain соответствует всем хостам в домене redos.domain. Знаки подстановки не должны использоваться в IP-адресах. -
сетевые группы — указываются в виде
@<имя_группы>, где<имя_группы>— имя сетевой группы NIS. При проверке учитывается только часть, содержащая имя хоста. Пустые части — не учитываются (игнорируются); -
анонимный доступ — указывается в виде
*и соответствует всем клиентам (не путать со знаком подстановки).
-
-
<опции>— задают параметры доступа указанного клиента к экспортируемому каталогу. Несколько значений указываются через запятую, без пробелов. Опции могут принимать следующие значения:-
права на изменение файлов:
-
ro— только чтение (read-only); -
rw— чтение и запись (read-write);
-
-
запись на диск:
-
sync(по умолчанию) — синхронная запись — NFS-сервер сразу сохраняет записанные пользователем данные на диск и только после этого отправляет клиенту подтверждение об успешной записи. Производительность ниже, т. к. сервер ожидает завершения операций диска; -
async— асинхронная запись — данные буферизуются в памяти, запись на диск производится позднее. Производительность сервера повышается, однако в случае непредвиденных сбоев данные могут быть потеряны;
-
-
задержка записи на диск:
-
wdelay(по умолчанию) — включает задержку записи данных на диск, повышает производительность, объединяя несколько мелких операций записи в одну большую. Для максимальной производительности рекомендуется использовать с опцией async; -
no_wdelay— отключает задержку записи, данные записываются на диск сразу, без ожидания новых изменений. Параметр не имеет эффекта при включенной опции async.
-
-
проверка доступа к подкаталогам NFS-ресурса:
-
subtree_check— проверяет права доступа не только к экспортируемому каталогу, но и ко всем его подкаталогам. Клиент не сможет получить доступ к подкаталогам, на которые у него нет прав; -
no_subtree_check(по умолчанию) — отключает проверку прав доступа к подкаталогам, позволяет повысить производительность, так как сервер не проверяет права на каждом уровне вложенности.
-
-
видимость экспортированных подкаталогов:
-
hide— если каталог экспортирован с опциейhide, он не будет виден при монтировании родительского каталога. Например:
/data 192.168.1.0/24(rw,sync) /data/subdir 192.168.1.0/24(rw,sync,hide)
При монтировании родительского каталога /data клиент не увидит подкаталог /data/subdir. Однако при монтировании непосредственно подкаталога /data/subdir данные будут доступны. Может быть полезно для избежания дублирования доступа к одному каталогу через разные пути.
-
-
nohide— если каталог экспортирован с опциейnohide, он будет виден при монтировании родительского каталога. Например:
/data 192.168.1.0/24(rw,sync) /data/subdir 192.168.1.0/24(rw,sync,nohide)
При монтировании родительского каталога /data клиенту будет доступен и подкаталог /data/subdir.
-
права подключаемых пользователей:
-
no_root_squash(не рекомендуется) — при подключении клиента к NFS-ресурсу с правами суперпользователя root он получает права суперпользователя и на сервере. Это может стать угрозой безопасности экспортированных файлов; -
root_squash(по умолчанию) — при подключении клиента к экспортируемому каталогу с правами суперпользователя root на сервере он получает права анонимного пользователя (nobody). При попытке клиента изменить файл, принадлежащий суперпользователю сервера, в доступе будет отказано; -
all_squash— любой подключаемый к NFS-ресурсу клиент получает права анонимного пользователя (nobody). Может быть полезно для публичных каталогов, в которых важно максимально ограничить доступ; -
anonuid/anongid— для любого подключаемого к NFS-ресурсу клиента позволяют задать права конкретного пользователя и группы (вместо nobody). Например:
/data 192.168.1.100(rw,all_squash,anonuid=1000,anongid=1000)
В данном случае все подключаемые клиенты будут привязаны к UID=1000 и GID=1000 на сервере.
Подробную информацию о других доступных опциях файла /etc/exports см. в справке:
man exports
Публикация сетевого ресурса
В качестве примера на сервере в общий доступ будет открыт каталог ~/data.
Создайте каталог (с правами обычного (непривилегированного) пользователя):
mkdir -p ~/data
Откройте файл /etc/exports:
sudo nano /etc/exports
и укажите параметры подключения (путь к экспортируемому каталогу должен быть указан полный):
/home/user/data 192.168.114.172(rw,all_squash,anonuid=1000,anongid=1000)
Для применения внесенных в файл /etc/exports изменений выполните команду:
sudo exportfs -rav
или перезапустите службу сервера:
sudo systemctl restart nfs-server.service
Настройка клиента
Установка пакетов и запуск служб
Обновите систему:
sudo dnf makecache && sudo dnf update
Установите необходимые пакеты:
sudo dnf install nfs-utils
Запустите службу клиента:
sudo systemctl enable --now nfs-client.target
Проверьте доступность сетевых ресурсов с помощью команды:
showmount -e 192.168.114.63 Export list for 192.168.114.63: /home/user/data 192.168.114.172
Подключение к NFS-ресурсу
Подключение к NFS-ресурсу возможно несколькими способами:
-
вручную;
-
автоматически с помощью fstab;
-
автоматически с помощью autofs.
Подключение вручную
Для подключения к NFS-ресурсу вручную:
-
создайте точку монтирования, например, /media/nfs_share:
sudo mkdir -p /media/nfs_share
Точку монтирования рекомендуется создавать в каталоге /media. Точки монтирования, созданные в каталоге /media, будут отображаться на Рабочем столе и в Навигационной панели (слева) в файловых менеджерах.
подключите каталог:
sudo mount -t nfs 192.168.114.63:/home/user/data /media/nfs_share
где:
-
192.168.114.63 — IP-адрес NFS-сервера;
-
/home/user/data — открытый в общий доступ NFS-ресурс;
-
/media/nfs_share — точка монтирования на клиенте.
проверьте, что NFS-ресурс подключен:
mount | grep nfs ... 192.168.114.63:/home/user/data on /media/nfs_share type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=0.0.0.0,local_lock=none,addr=192.168.114.63)
При монтировании должен быть указан полный путь к NFS-ресурсу.
После перезагрузки клиента NFS-ресурс будет отключен.
Подключение с помощью fstab
Подключение NFS-ресурса с помощью fstab подразумевает автоматическое подключение ресурса при запуске ОС.
Для подключения NFS-ресурса с помощью fstab:
-
создайте точку монтирования, например, /media/nfs_share_fstab:
sudo mkdir -p /media/nfs_share_fstab
в файл /etc/fstab добавьте строку:
192.168.114.63:/home/user/data /media/nfs_share_fstab nfs defaults 0 0
где:
-
192.168.114.63 — IP-адрес NFS-сервера;
-
/home/user/data — открытый в общий доступ NFS-ресурс;
-
/media/nfs_share — точка монтирования на клиенте;
-
nfs — тип файловой системы;
-
default — опции монтирования;
-
0 0 — параметры не используются для NFS.
примените изменения командой:
sudo mount -a
или перезапустите систему:
reboot
NFS-ресурс будет подключаться автоматически после перезагрузки клиента.
Если NFS-ресурс не используется постоянно, можно подключать его вручную при необходимости. Для этого в файле /etc/fstab укажите опцию noauto:
192.168.114.63:/home/user/data /media/nfs_share_fstab nfs noauto,defaults 0 0
Примените изменения командой:
sudo mount -a
Для подключения ресурса выполните команду:
sudo mount /media/nfs_share_fstab или sudo mount 192.168.114.63:/home/user/data /media/nfs_share_fstab
Для отключения NFS-ресурса выполните команду:
sudo umount /media/nfs_share_fstab
Подключение с помощью autofs
Подключение NFS-ресурса с помощью autofs подразумевает автоматическое подключение ресурса при обращении к нему через файловый менеджер или через терминал, а также автоматическое отключение ресурса, если он не используется в течение определенного периода времени.
Для подключения NFS-ресурса с помощью autofs:
-
установите пакет autofs:
sudo dnf install autofs
создайте точку монтирования, например, /media/nfs_share_autofs:
sudo mkdir -p /media/nfs_share_autofs
в файл /etc/auto.master добавьте строку:
/media/nfs_share_autofs /etc/auto.nfs timeout=120 -browse
где:
-
/media/nfs_share_autofs — точка монтирования на клиенте;
-
/etc/auto.nfs — файл конфигурации, в котором будут указаны параметры монтирования NFS-ресурса;
-
--timeout=120 — время (в секундах), по истечении которого происходит отключение NFS-ресурса;
-
-browse — включить отображение каталогов, которые ещё не смонтированы.
создайте файл /etc/auto.nfs:
sudo nano /etc/auto.nfs
и добавьте параметры монтирования NFS-ресурса:
server -rw,soft,intr,rsize=8192,wsize=8192 192.168.114.63:/home/user/data
где:
-
параметры монтирования:
-
-rw — чтение и запись;
-
soft — «мягкое» монтирование (позволяет прерывать операции при зависании);
-
intr — позволяет прерывать операции с клавиатуры;
-
rsize=8192,wsize=8192 — размер блока для чтения/записи.
-
-
server — каталог, который будет создаваться в каталоге /media/nfs_share_autofs при монтировании удаленных ресурсов;
-
192.168.144.63:/home/user/data — IP-адрес сервера и путь к сетевому ресурсу.
запустите и добавьте в автозагрузку службу autofs:
sudo systemctl enable --now autofs
Сетевой ресурс будет автоматически примонтирован при обращении к каталогу /media/nfs_share_autofs/server и автоматически отмонтирован, если не будет использоваться в течение установленного таймаута.
Дата последнего изменения: 10.03.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.