Debian nfs server настройка

Обновлено: 07.07.2024

На самом деле задача тривиальная, займет не более 5-10 минут. Принцип настройки одинаков для всех дистрибутивов. Разница скорее всего будет только в установке NFS. Следующим постом опишу процедуру настройки Apple TimeMachine для резервного копирования в нашу новую NFS-шару.

1. Устанавливаем NFS server

устанавливаем NFS client

Для того, чтобы убедится что у вас все установилось и запустилось выполните:

В выводе должен присутствовать nfs и mountd.

2. Настраиваем NFS

Для начала необходимо определится с расположением шар на диске. У меня это внешний ЖД с точкой монтирования /var/nfs.

mkdir /var/nfs
chown nobody:nogroup /var/nfs

Необходимо отредактировать /etc/exports (свой привожу ниже, там у меня всего одна строчка, для моего макбука):

/var/nfs macfrac (rw,no_root_squash,sync,no_subtree_check,insecure)

Разберем эту строку:

/var/nfs — путь до шары

macfrac — имя хоста, который будет иметь доступ к шаре. Если на шаге 3 будут проблемы с определением адреса хоста, то добавьте необходимую запись в /etc/hosts. Правила для этого хоста:

3. Добавляем шару в список доступных для NFS

Для проверки експорта смотрим список доступных в данный момент ФС)

В принципе, шару можно считать настроенной. Как подключить шару с хоста macfrac?! Вот рабочий (у меня) пример команды mount:

Performance Tuning

NFS does not need a fast processor or a lot of memory. I/O is the bottleneck, so fast disks and a fast network help. If you use IDE disks, use hdparam to tune them for optimal transfer rates. If you support multiple, simultaneous users, consider paying for SCSI disks; SCSI can schedule multiple, interleaved requests much more intelligently than IDE can.

On the software side, by far the most effective step you can take is to optimize the NFS block size. NFS transfers data in chunks. If the chunks are too small, your computers spend more time processing chunk headers than moving bits. If the chunks are too large, your computers move more bits than they need to for a given set of data. To optimize the NFS block size, measure the transfer time for various block size values. Here is a measurement of the transfer time for a 256 MB file full of zeros.

real 0m32.207s
user 0m0.000s
sys 0m0.990s

This corresponds to a throughput of 63 Mb/s.
Try writing with block sizes of 1024, 2048, 4096, and 8192 bytes (if you use NFS v3, you can try 16384 and 32768, too) and measuring the time required for each. In order to get an idea of the uncertainly in your measurements, repeat each measurement several times. In order to defeat caching, be sure to unmount and remount between measurements.

real 0m26.772s
user 0m0.010s
sys 0m0.530s

Your optimal block sizes for both reading and writing will almost certainly exceed 1024 bytes. It may occur that, like mine, your data do not indicate a clear optimum, but instead seem to approach an asymptote as block size is increased. In this case, you should pick the lowest block size which gets you close to the asymptote, rather than the highest available block size; anecdotal evidence indicates that too large block sizes can cause problems.

NFS была разработана в те времена, когда мы не могли открывать доступ к своим диска так как мы можем делать это сегодня - в windows окружении. NFS предоставляет возможность открывать доступ к дисковому пространству большого сервера маленьким клиентским системам. В то время как сегодня это выглядит стандартной возможностью, были времена, когда клиенты и серверы не могли разделять между собой дисковое пространство.

"Тонкие" клиенты не имеют жестких дисков и им требуется виртуальный жесткий диск. NFS монтирует их жесткие диски с сервера и в то время как пользователь думает, что сохраняет файлы на локальный жесткий диск, он сохраняет файлы на сервер. В "тонком" пользовательском окружении, разделы root, usr и home предлагаются клиенту с сервера посредством NFS.

Основные плюсы использования NFS.

  • локальные рабочие станции используют меньше дискового пространства потому что часто используемые данные могут храниться на сервере и другие пользователи имеют к ним доступ по сети,
  • пользователям нет необходимости иметь раздельные домашние директории на каждой сетевой машине. Домашние директории могут быть созданы на NFS-сервере и открыты для доступа по сети,
  • устройства хранения, такие как флоппи-диски, устройства Zip и CDROM могут использоваться другими машинами в сети. Это уменьшает количество устройств чтения внешних носителей информации в сети.

Установка NFS-сервера.

Небольшое замечание. Если вы используете ядро 2.2.13 и выше, вы можете использовать nfs-kernel-server. Кроме него можно использовать nfs-user-server. Этот пакет более медленный, но имеет больше функций и его легче дебажить, чем nfs-kernel-server.

Установка осуществляется следующей командой:

После установки нужно указать, доступ к каким директориям мы предоставляем. Для этого правим файл /etc/exports. Для NFSv3 и ранее содержимое файла будет выглядеть примерно так:

В NFSv4 предоставляется доступ к главной директории и ее поддиректориям. Таким образом в первой строке описывается главная директория, а в последующих - поддиректории, с отдельной строки:

В этом примере директория /mnt/movie будет доступна всем в сети 192.168.0.0/24, а /mnt/user - только с компьютера с адресом 192.168.0.41 при этом можно указать несколько конкретных адресов в одной строке разделив блоки описания пробелом.

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

/mnt/movie - путь к директории, доступ к которой необходимо предоставить.
192.168.1.0/24 - описание сети, из которой можно получить доступ к директории. Также можно указать конкретный адрес, к примеру, 192.168.0.41. Кроме того, NFS понимает шаблоны с применением символов * и ?.
rw - говорит о том, что предоставляются права как на чтение, так и на запись. Если нужно разрешить только читать из директории, то следует указать параметр ro.
async - включает возможность обслуживания клиентов еще до окончания действия предыдущей команды на запись. Это может значительно увеличить быстродействие при большом количестве пользователей, но снижает надежность. По умолчанию, включена опция sync.
no_subtree_check - отключает проверку вложенных директорий.

secure - при включении данной опции для соединения будут использоваться порты с номером ниже 1024. Эта опция включена по умолчанию, чтобы её отключить, используйте параметр insecure.
no_wdelay - эта опция не действует при включенной опции async. В нормальном состоянии NFS-сервер немного задерживает запись на диск, если уже ведется запись или ожидается поступление запроса на запись. Это позволяет запустить несколько процессов записи на диск с помощью одной команды, что увеличивает производительность. Однако, если NFS-сервер получает в основном мелкие, не связанные между собой, запросы, то стандартное поведение может снизить производительность, поэтому доступна опция no_wdelay чтобы отключить задержку перед записью.
nohide - в случае когда экспортируются две директории, одна из которых вложенная, при монтировании только родительской директории вложенная будет видна как пустая. Чтобы предотвратить такой эффект, можно использовать данный параметр. Стоит учесть, что данный параметр работает только для экспортирования по конкретному ip-адресу. Обратным параметром является параметр hide.
crossmnt - данный параметр похож на параметр nohide, но дделает возможным для клиентов переходить из файловой системы помеченой параметром crossmnt в экспортированную файловую систему смонтированную в ней. То есть когда вложенная файловая система "B" смонтирована внутри файловой системы "A", установка параметра crossmnt для "A" имеет тот же эффект, как установка параметра nohide для "B".
fsid=num|root|uuid - NFS необходимо идентифицировать каждую файловую систему, которую она экспортирует. Обычно используется UUID. Однако ядра Linux ниже 2.6.20 не понимают UUID, поэтому необходимо устанавливать данный параметр, к примеру fsid=root или fsid=0.

Опции подмены идентификатора пользователя:

nfsd основывает свой доступ к файлами на сервере на gid и uid, предоставляемых в каждом NFS RPC запросе. По привычке пользователь будет ожить что он может получить доступ к своим файлам на сервере, как к обычной файловой системе. Это требует того, чтобы одни и те же gid и uid использовались на клиентской и серверной машинах. Это не всегда верно или не всегда желательно.

Очень часто не желательно, чтобы пользователь root на клиентской машине также воспринимался как root при доступе к файлам на NFS-сервере. Чтобы это предотвратить uid 0 обычно подменяется другим id: так называемым "анонимом" или nobody. Этот тип поведения (называемый "root squashing") применяется по умолчанию и может быть отключен параметром no_root_squash.

По умолчанию, exportfs использует uid/gid с номером 65534 для доступа с подменой. Эти значения могут быть изменеы параметрами anonuid и anongid. Наконец, вы можете подменить все пользовательские запросы на анонимные с помощью параметра all_squash.

Вот полный список параметров для подмены идентификаторов:

root_squash - подменяет запросы от uid/gid 0 (root) на анонимыне uid/gid.
no_root_squash - выключает подмену uid/gid для root. Эта опция используется в основном для бездисковых клиентских машин.
all_squash - используется обычно для публичного экспорта директорий. Обратный параметр - no_all_squash.
anonuid и anongid - применяется для указания uid/gid для анонима. Это может быть полезно, если какая либо директория экспортируется для конкретного пользователя, заведенного в системе.

После описания всех директорий, к которым предоставляем доступ, сохраняем файл и перезапускаем NFS-сервер, так как после установки он запускается автоматически:

Полезные утилиты.

Чтобы не передергивать сервис, можно мягко применить измененные настройки командой:

Где параметр -a говорит о том, что нужно экспортировать все директории из файла /etc/exports, а параметр -r заставляет реэкспортировать список всех директорий очистив текущий список. Вообще говоря, если нужно пополнить список экспортированных директорий, то нужно использовать параметр -a, а если нучно убрать все текущие и добавить только те, что есть в /etc/exports, то следует использовать параметр -r. Также может быть полезен параметр -u, который позволяет отменить экспорт определенных директорий и параметр -f, который очищает текущую таблицу экспорта ядра и все активные пользователи при последующем запросе получат новый список экспортируемых директорий.

Узнать различную информацию об экспорте можно с помощью утилиты showmount:

showmount без параметров отображает список подключенных клиентов,
-a или --all - показывает все используемые точки монтирования с ip-адресами и директориями. Так можно узнать, какие машины пользуются NFS-сервером и какие директории на них смонтированы.
-d - отображает только список директорий смонитированных клиентами.
-e - выводит список экспорта NFS-сервера.

Утилита nfsstat отображает диагностическую информацию об активности как NFS-сервера, так и клиента.

Параметры команды nfsstat:

-s - вывести только серверную статистику. По умолчанию выводится как серверная, так и клиентская информация.
-c - вывести только клиентскую статистику.
-n - вывести только статистику NFS. По умолчанию, выводится как NFS, так и RPC статистика.
-2 - вывести данные только по NFS v2. По умолчанию, выводится информация обо всех версиях имеющих не нулевую статистику.
-3 - вывести данные только по NFS v3.
-4 - вывести данные только по NFS v4.
-m - отобразить информацию о всех смонтированных NFS файловых системах. Если указан данный параметр, то все остальные игнорируются.
-r - вывести только статистику NFS.
-l - отобразить информацию в виде списка.

Монтирование на клиентской машине.

При необходимости устанавливаем пару пакетов:

Теперь создаем директории для монтирования, к примеру:

Затем просто монтируем в них директории, экспортируемые с NFS-сервера:

Монтирование при использовании NFSv4:

То есть при монтировании экспортируемых директорий по NFSv4 необходимо указывать путь на сервере относительно основной директории.

Размонтирование делается как обычно, к примеру:

Настройка автоматического монтирования.

Для того, чтобы на клиентской машине экспортируемые директории монтировались автоматически вносим следующие строки в файл /etc/fstab:

Порядок элементов строки: что, куда, тип файловой системы, параметры.

Бывают следующие параметры:

soft/hard - определяет поведение после превышения количества запросов на подключение. Если ничего не указано или указан параметр hard, то запросы будут отправляться бесконечно. Если задан параметр soft, то после таймаута быдет выдана ошибка. Параметр soft может привести к порче данных, поэтому его следует использовать в случаях когда больше требуется отзывчивость, чем надежность. Увеличение значения параметра retrans может снизить риск порчи данных.
timeo=n - время (в десятках секунд) которое NFS-клиент ждет ответа перед повтором запроса.
retrans=n - сколько раз NFS-клиент повторяет запрос перед тем как перейти к дальнейшим действиям. По умолчанию, запрос повторяется три раза.
rsize=n - максимальное количество байт в каждом сетевом запросе на чтение, которое NFS-клиент может получить когда читает из файла на NFS-сервере. Должно быть кратно 1024. Если параметр не указан, то используется максимальное значение поддерживаемое клиентом и сервером.
wsize=n - максимальное количество байт в каждом сетевом запросе на запись. Условия работы те же, что и для rsize.
ac/noac - определяет будет или нет использоваться кеширование атрибутов файлов. Если ни одна опция не будет установлена (или будет установлена опция ac), то клиент будет кешировать атрибуты файлов.
bg/fg - определяет то, каким образом поведет себя утилита mount если попытка смонтировать nfs-экспорт не удастся. fg (по умолчанию) заставляет mount выйти с ошибкой, а bg заставляет mount в случае таймаута создавать потомка и продолжать попытки смонтировать в то время как родительский процесс будет закрыт.
sharecache/nosharecache - определяет использовать ли один кеш данных в случае если монтируется одна и та же экспортируемая директория в несколько точек монтирования. По умолчанию кеш включен.
intr/nointr - выбирает можно ли применять сигналы на прерывание файловых операций на этой точке монтирования. По умолчанию используется nointr. Использовании опции intr предпочтительно при указании опции soft, так как это сильно снижает вероятность порчи данных. В версиях ядра 2.6.25 и выше данные опции не применяются и при их указании будут проигнорированы.


NFS (сетевая файловая система) в основном разработана для совместного использования файлов и папок между системами Linux/Unix компанией Sun Microsystems в 1980 году. Она позволяет вам монтировать локальные файловые системы через сеть и удаленные хосты для взаимодействия с ними, так как они монтируются локально в той же системе. С помощью NFS мы можем настроить обмен файлами между Unix для системы Linux и Linux для системы Unix. В этом материале мы покажем вам основные команды NFS.

Преимущества NFS
  • NFS позволяет локальный доступ к удаленным файлам.
  • Он использует стандартную архитектуру клиент/сервер для обмена файлами между всеми компьютерами на *nix.
  • При использовании NFS не обязательно, чтобы обе машины работали в одной и той же ОС.
  • С помощью NFS мы можем настроить решения для централизованного хранения.
  • Пользователи получают свои данные независимо от физического местоположения.
  • Не требуется обновление вручную для новых файлов.
  • Более новая версия NFS также поддерживает acl, pseudo root mounts.
  • Может быть защищен с помощью брандмауэров и Kerberos.
Службы NFS

Это сервис, запущенный System V. Серверный пакет NFS включает три средства, включенные в пакеты portmap и nfs-utils.

portmap: сопоставляет вызовы, сделанные с других компьютеров, с правильным сервисом RPC (не требуется для NFSv4).
NFS: он переводит запросы удаленного обмена файлами в запросы в локальной файловой системе.
rpc.mountd: этот сервис отвечает за монтирование и размонтирование файловых систем.

Важные файлы для конфигурации NFS

/etc/exports: это основной файл конфигурации NFS, все экспортируемые файлы и каталоги определены в этом файле на стороне сервера NFS.
/etc/fstab: чтобы смонтировать каталог NFS в вашей системе во время загрузки, нам нужно сделать запись в /etc/fstab.
/etc/sysconfig/nfs: файл конфигурации NFS для управления другими службами.

Установка и настройка монтирования NFS на сервере и клиенте Linux

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

Нам нужно установить пакеты NFS на нашем сервере NFS, а также на компьютере клиента NFS. Мы можем установить его через установщики пакетов «yum» (Red Hat Linux) и «apt-get» (Debian и Ubuntu).


Теперь запустите службы на обеих машинах.

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

Настройка сервера NFS

Сначала мы будем настраивать сервер NFS.

Настроить каталог экспорта

Для совместного использования каталога с NFS нам нужно сделать запись в файле конфигурации «/etc/exports». Здесь я создам новый каталог с именем «nfsshare» в разделе «/» для совместного использования с клиентским сервером, вы также можете поделиться уже существующим каталогом с NFS.


Теперь нам нужно сделать запись в «/etc/exports» и перезапустить службы, чтобы сделать наш каталог доступным в сети.

В приведенном выше примере есть каталог с именем «/nfsshare», совместно используемый с IP-адресом клиента «192.168.0.101» с привилегией read и write (rw), вы также можете использовать имя хоста клиента вместо IP в приведенный выше пример.

Параметры NFS

Некоторые другие параметры, которые мы можем использовать в файле «/etc/exports» для обмена файлами, следующие.

ro: с помощью этой опции мы можем предоставить доступ только для чтения к общим файлам, т.е. клиент сможет только читать.
rw: эта опция позволяет клиентскому серверу иметь права на чтение и запись в общем каталоге.
sync: синхронизация подтверждает запросы к общему каталогу только после того, как изменения были зафиксированы.
no_subtree_check: эта опция предотвращает проверку поддерева. Когда общий каталог является подкаталогом более крупной файловой системы, nfs выполняет сканирование каждого каталога над ним, чтобы проверить его разрешения и детали. Отключение проверки поддерева может повысить надежность NFS, но снизить безопасность.
no_root_squash: эта фраза позволяет пользователю root подключаться к указанному каталогу.
Для получения дополнительной информации о «/etc/exports» рекомендуется прочитать справочные страницы для экспорта.

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

После настройки сервера NFS нам нужно смонтировать этот общий каталог или раздел на клиентском сервере.

Монтирование общих каталогов на клиенте NFS

Теперь на стороне клиента NFS нам нужно смонтировать этот каталог на нашем сервере, чтобы получить к нему локальный доступ. Для этого сначала нужно выяснить, какие общие ресурсы доступны на удаленном сервере или NFS-сервере.

Приведенная выше команда показывает, что каталог с именем «/nfsshare» доступен по адресу «192.168.0.100», чтобы поделиться с вашим клиентом.

Подключить общий каталог NFS

Чтобы смонтировать этот общий каталог NFS, мы можем использовать следующую команду монтирования.

Приведенная выше команда смонтирует этот общий каталог в «/mnt/nfsshare» на клиентском сервере. Вы можете проверить это следующей командой.

Приведенная выше команда mount временно смонтировала общий каталог nfs на клиенте nfs, чтобы постоянно монтировать каталог NFS в вашей системе при перезагрузках, нам нужно сделать запись в «/etc/fstab».

Добавьте следующую новую строку, как показано ниже.

Проверьте работу установки NFS

Мы можем протестировать настройку нашего сервера NFS, создав тестовый файл на стороне сервера и проверив его доступность на стороне клиента nfs или наоборот.

На стороне NFS сервера

Я создал новый текстовый файл с именем «nfstest.txt» в этом общем каталоге.

Удаление NFS монтирования

Если вы хотите размонтировать этот общий каталог со своего сервера после того, как вы закончили с общим доступом к файлам, вы можете просто размонтировать этот конкретный каталог с помощью команды «umount». Смотрите этот пример ниже.

Вы можете видеть, что размонтирование было выполнено, а затем снова посмотреть на файловую систему.

Вы увидите, что эти общие каталоги больше не доступны.

Важные команды для NFS

Еще несколько важных команд для NFS.

  • showmount -e: показывает доступные общие ресурсы на вашем локальном компьютере.
  • showmount -e <server-ip или hostname>: список доступных общих ресурсов на удаленном сервере.
  • showmount -d: список всех подкаталогов
  • exportfs -v: отображает список общих файлов и параметров на сервере.
  • exportfs -a: экспортирует все ресурсы, перечисленные в /etc/exports или по имени
  • exportfs -u: отменяет экспорт всех ресурсов, перечисленных в /etc/exports, или имени
  • exportfs -r: обновить список серверов после изменения /etc/exports

На данный момент это все с монтированием NFS, это было только начало, я расскажу о дополнительных возможностях и возможностях NFS в наших будущих статьях.

Спасибо за уделенное время на прочтение статьи о том, как использовать команды NFS!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!


Эта статья поможет вам установить сервер NFS в Debian 10 и смонтировать его на клиентской машине.

Лабораторная среда

  • Сервер NFS: 192.168.122.126 (Debian 10)
  • Клиент NFS: 192.168.122.173 (любая система Linux)

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

Прежде чем приступить к установке сервера NFS, сначала убедитесь, что ваша система обновлена. Выполните команду ниже

Установите пакет nfs, используя следующую команду,

Создайте каталог для обмена файлами и папками через сервер NFS.

Поскольку общий ресурс NFS будет использоваться любым пользователем в клиенте, разрешение установлено для пользователя « nobody » и группы « nogroup ».

Сделайте так, чтобы общая папка пользователя имела достаточно прав для чтения и записи файлов внутри нее. Однако вы можете установить его в соответствии с вашими требованиями.

Добавьте информацию об экспорте в файл /etc/exports

Добавьте следующую запись в конец файла.

Ваш файл /etc/export должен выглядеть так:

Как установить сервер NFS на Debian 10 (Buster)

  • rw : операции чтения и записи
  • sync : записать любое изменение на диск перед его применением
  • no_subtree_check : отключает проверку поддерева

Теперь экспортируйте общий каталог.

Это не должно показывать никаких ошибок. Это означает, что ваша конфигурация верна.

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

Подключение клиента NFS

Теперь давайте смонтируем наш общий ресурс NFS на клиентском компьютере. Установите общий пакет NFS,

Для Ubuntu Debian / Ubuntu

Создайте каталог для доступа к общей папке с сервера.

Для постоянного монтирования добавьте следующую запись в файл /etc/fstab. Откройте файл в любом из ваших любимых редакторов.

Добавьте следующую строку в конец файла,

Ваш файл должен выглядеть так,

Как установить сервер NFS на Debian 10 (Buster)

  • 192.168.122.110:/mnt/nfsshare = общая папка, поступающая с сервера nfs
  • /mnt/shared_nfs = каталог монтирования на клиентской машине
  • nfs4 = означает nfs версии 4
  • defaults,user,exec = Разрешить любому пользователю монтировать файловую систему, а также разрешить им запускать двоичные файлы

Смонтируйте файловую систему NFS, используя команду mount, как показано ниже.

Вы можете проверить соединение, создав файл в / mnt/shared_nfs на клиентской машине.

Как установить сервер NFS на Debian 10 (Buster)

Попробуем создать файл с помощью команды touch на общей папке NFS,

Если это не показывает никаких ошибок, ваша конфигурация в порядке, и вы готовы использовать систему общего доступа NFS.

Это все. Это руководство поможет вам установить общий ресурс NFS на сервере и подключить его к клиенту. Спасибо, что прочитали статью.

Читайте также: