Что такое NFS? Network File System. Протокол сетевого доступа к файловым системам

Администрируя серверы на базе ОС Linux в среде, где в качестве основной клиентской ОС используется Windows, время от времени приходится сталкиваться с необходимостью что-либо скопировать с клиентской Windows на Linux-систему или наоборот, с Linux-системы на Windows. Чаще всего для этого используются возможности протоколов SSH/SCP с помощью таких инструментов, как например, утилита pscp.exe . Но когда приходится сталкиваться с файловыми Linux-серверами, позволяющими использовать возможности протокола NFS , мы можем задаться вопросами типа "может ли клиентская ОС Windows выступать в качестве NFS-клиента?", "есть ли в клиентской ОС Windows какая-то встроенная реализация клиента NFS?". Именно такие вопросы у меня возникли в период времени, который совпал с периодом, когда мы перебирались с Windows 8.1 на первый релиз Windows 10. Информация, которую в тот момент удалось найти по этому вопросу, заключалась в том, что функциональность NFS-клиента имеют только "старшие" редакции клиентских ОС Windows, такие как Windows 7 Ultimate /Enterprise , Windows 8 /8.1 Enterprise и Windows 10 Enterprise . Однако в нашем случае использовалась ОС Windows 10 редакции Professional , поэтому пришлось отбросить эти мысли.

Недавно, читая обсуждения на форумах TechNet, я столкнулся с информацией о том, что с какого-то момента времени в ОС Windows 10 редакции Professional появилась возможность использовать функционал NFS-клиента. По информации из некоторых источников такая возможность появилась в Windows 10 версии 1607 (10.0.14393 / Anniversary Update).

Решив проверить эту информацию на имеющейся у меня под руками Windows 10 1803 (10.0.17134 / April 2018 Update) редакции Professional , я обнаружил, что теперь у нас действительно имеется возможность использования этого функционала.

Чтобы включить NFS-клиента, можем воспользоваться оснасткой управления программами и компонентами appwiz.cpl . Здесь в перечне "компонентов Windows" можно найти доступные к включению "Службы для NFS ".

После завершения установки компонент в Панели управления в разделе "Администрирование " появится оснастка "Службы для NFS " (nfsmgmt.msc ), в которой мы сможем управлять некоторым параметрами работы NFS-клиента.

Предполагаем, что на стороне NFS сервера уже настроены разрешения для доступа с клиентской системы, например, явно разрешён доступ по IP адресу клиента. Простейший пример установки и настройки NFS-сервера на стороне CentOS Linux можно найти в статье Вики "Установка и настройка сервера и клиента NFS в CentOS Linux 7.2" .

После настройки прав доступа на стороне NFS-сервера переходим на Windows 10 и выполняем подключение сетевого каталога с помощью утилиты "mount ". Простейший пример анонимного подключения к сетевому каталогу выглядит так:

mount -o anon \\KOM-FS01\mnt\vdo-vd1\ovirt-iso-domain I:
  • "-o anon" - подключаться с правами анонимного пользователя;
  • "KOM-FS01" - имя NFS-сервера;
  • "mnt\vdo-vd1\ovirt-iso-domain" - локальный путь к каталогу на NFS-сервере;
  • "I" - буква диска Windows

Другие доступные параметры и ключи утилиты, можно посмотреть командой "mount /? ". Например, при подключении мы явно можем указать имя пользователь и пароль на NFS-сервере.

При открытии свойств каталогов и файлов в подключённом NFS-каталоге мы увидим специальную вкладку "Атрибуты NFS " с соответствующими атрибутами, в том числе и информацию о текущих разрешениях на каталог/файл, которыми, в случае достаточных прав, мы можем управлять.

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

Здесь мы сможем увидеть то, с какими UID и GUID , выполнено подключение. Для анонимных подключений это по умолчанию -2 /-2 . Если по какой-то причине у нас возникнет необходимость изменить эти идентификаторы для всех анонимных клиентских подключений, то мы можем добавить пару отсутствующих по умолчанию параметров реестра типа DWORD (32-бита):

  • AnonymousUid
  • AnonymousGid

в ключ реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

В значениях созданных параметров можно записать нужные UID и GUID, которые будут использоваться при всех анонимных подключениях. На скриншоте ниже используется пример со значениями 1000 :1000 (десятичное).

Если мы хотим, чтобы все анонимные подключения использовали root -овые идентификаторы, то в соответствующих параметрах реестра нужно указать AnonymousUid = 0 и AnonymousGid = 0 . Указание root-овых идентификаторов может быть полезно в случае, если, например, нам требуется не только чтение, но запись в подключенном NFS-каталоге, а удалённый NFS-сервер разрешает запись только root-пользователю и/или членам группы root.

Для вступления изменений в силу потребуется выполнить остановку и повторный запуск службы клиента NFS из ранее упомянутой оснастки "Службы для NFS" (nfsmgmt.msc).

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

Мои попытки перезапускать системную службу "Клиент для NFS " (NfsClnt ) через стандартные механизмы, такие как оснастку управления службами services.msc или утилиту "net ", показали, что это по какой-то причине приводит к невозможности запуска службы после её остановки. Поэтому для перезапуска NFS-клиента лучше использовать именно "родную" оснастку. Хотя, опять же, замечено, что многократные остановки/запуски службы в оснастке "Службы для NFS" также могут привести к неадекватной работе NFS-клиента. В результате чего, например, утилита "mount " может перестать подключать NFS-каталоги, выдавая ошибку сети:

В таких случаях помогает только перезагрузка клиентского компьютера, после которой всё снова начинает работать.

После того, как нужные нам изменения внесены в реестр и служба клиента NFS успешно перезапущена, снова попытаемся подключить NFS-каталог и посмотрим командой "mount " сведения о подключениях.

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

Отключение подключенных по протоколу NFS сетевых ресурсов выполняется также просто, как и подключение, только с помощью другой утилиты – "umount "

В общем это хорошо, что теперь у пользователей ОС Windows 10 редакции Professional есть штатная возможность работать с сетевыми файловыми ресурсами по протоколу NFS. Будем использовать это в работе.

С протоколами передачи данных знаком не каждый. А вот соединить свои компьютеры в одну сеть или использовать сервер для хранения файлов хотели бы многие. Один из способов это осуществить: NFS. Как настроить NFS сервер в Ubuntu - читайте далее.

Правильно настроив NFS можно объединить в одну сеть компьютеры на разных ОС.

Network File System - протокол сетевого доступа к файлам. Как водится, состоит из двух частей. Одна - клиентская, которая расположена на компьютере, с которого просматривают удалённые данные. Другая - серверная - расположена на компьютере, где эти данные хранятся. Довольно удобно использовать дополнительное дисковое пространство, особенно в локальной сети . А если речь идёт о каких-то корпоративных ПК, то это просто необходимо.

Чем отличается?

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

  • Возможность соединения в одну сеть компьютеров на разных операционных системах. Часто ОС Windows удобно соединить по NFS с Unix-системой , например, Ubuntu. Для этих же целей существует и применяется Samba, но NFS легче, проще и быстрее этой программы, поскольку реализован на уровне ядра. Поэтому настроить доступ через него, как правило, будет проще.
  • NFS предоставляет прозрачный доступ к файлам. Это означает, что все удалённые файлы воспроизводятся точно так же, как и локальные. Программы не надо апгрейдить, чтобы воспроизвести любой файл, находящийся на сервере.
  • NFS отправляет только запрашиваемую часть файла, а не весь файл.

Устанавливать Network File System для полноценной работы необходимо, как минимум, на два компьютера: сервер и клиент. Естественно, новичку больше всего попотеть придётся над серверной частью, поскольку именно там необходимо «расшаривать» (открывать доступ) папки. Однако всё это выполняется довольно легко.

Как и большинство протоколов передачи данных, NFS совсем не молод. Разработан он был в 1984 году и предназначался для UNIX-систем. Это и сейчас главная роль NFS, однако многие обнаружили, что при помощи его очень удобно соединять Windows-компьютеры с линуксовыми. Кроме того, NFS отлично подходит для воспроизведения мультимедийного контента по локальной домашней сети. Samba в этой роли часто подвисает и подтормаживает.

Установка серверной части NFS

Серверную часть протокола мы будем ставить на Ubuntu 16.04. Естественно, если у вас стоит редакция Server, то процесс никоим образом не отличается. Просто в традиционной версии Убунту некоторые действия можно выполнить при помощи графического интерфейса.

Устанавливаем программу. Для этого можно воспользоваться центром загрузки приложений , а можно просто ввести команду:

sudo apt install nfs-kernel-server

После этого нелишним будет проверить корректность установки. Делать это не обязательно, но мы всё же проверим. Вводим команду:

Порт везде должен быть 2049.

Теперь проверяем, поддерживает ли ядро NFS. Для этого вводим:

cat /proc/filesystems | grep nfs

Полученное значение должно выглядеть так: nodev nfsd

Это означает, что всё функционирует правильно. Если нет, то вводим команду:

При помощи её мы ставим модуль ядра самостоятельно.

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

sudo systemctl enable nfs

Итак, серверную часть мы установили, осталось правильно её настроить и перейти к клиентской.

Настройка

Настройка NFS в Ubuntu заключает в себе расшаривание определённых папок.

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

  • rw - reading and writing этот параметр разрешает чтение и запись файлов в папке.
  • ro - reading only - разрешает только чтение папки.
  • sync (по умолчанию) - параметр обеспечивает надёжность передачи. Если включен он, то нельзя будет одновременно передавать несколько файлов или на разные компьютеры. Эта настройка не даст отвечать на другие запросы. Предотвращает утерю данных, но передача может идти медленнее.
  • async - обратный предыдущему параметр. Передача идёт быстрее, но возникает риск потери информации.
  • secure - опция разрешает использовать только порты, номер которых ниже 1024. Включена по умолчанию.
  • insecure - разрешает использование любых портов.
  • nohide - если вы монтируете несколько директорий, среди которых есть вложенные, то вложенные в отличие от родительской будут отображаться как пустые. Исправить это поможет параметр
  • anonuid - указывает uid для анонимов. Это специальный идентификатор пользователя.
  • anongid - указывает gid для анонимов. GID (Group ID) - ещё один идентификатор пользователя.
  • no_subtree_check - функция отключает контроль поддерева. Дело в том, что без неё NFS дополнительно проверяет, что пользователи обращаются только в нужные разделы каталога. Это замедляет работу. Параметр позволяет ускорить её, но понижает безопасность.

Их мы и будем использовать в зависимости от того, что нужно в конкретной ситуации.

Создадим новую папку. Можно использовать и новую. Наша папка будет /var/network.

Теперь необходимо добавить эту папку в файл /etc/exports. Там хранятся все файлы и папки с открытым сетевым доступом. Запись должна выглядеть так:

/var/network168.1.1(rw,async,no_subtree_check)

192.168.1.1 - это IP, по которому мы осуществляем передачу. Указывать его обязательно.

Обновляем таблицу экспорта:

Теперь попробуем получить доступ к папке со стороны клиента.

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

Ubuntu

На Убунту подключить настроенный сервер не составит труда. Делается это всего за пару команд.

Устанавливаем специальный клиентский пакет:

sudo apt install nfs-common

sudo mount 192.168.1.1:/var/network/ /mnt/

Сетевая папка подключена. С помощью df можно проверить все подключенные сетевые папки:

Также можно проверить свой уровень доступа специальной командой:

Отключаем файловую систему следующим образом:

Почти везде используется команда mount. Она отвечает за процесс монтирования, то есть, подготовки пространства на жёстком диске для использования его операционной системой. Звучит сложно, но если упростить, получится, что мы просто перекидываем сетевые файлы на наш компьютер в новоявленную папку. Здесь она называется /mnt/.

Windows

С Виндой, как правило, всё складывается куда сложнее. NFS клиент без проблем можно запустить на всех серверных Windows. Из стандартных он присутствует на:

  • Windows 7 Ultimate/Enterprise
  • Windows 8/8.1 Enterprise
  • Windows 10 Enterprise

Больше нигде не найти. Если у вас одна из этих версий, делаем следующее:

  1. Открываем меню «Программы и компоненты».
  2. Жмём «Добавление компонентов».
  3. Находим там NFS и ставим только «Клиент для NFS», другой компонент нам не нужен.

После подключения монтируется всё такой же командой:

mount 192.168.1.1:/var/network/ /mnt/

Размонтировать можно следующим образом:

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

А что делать, если клиента для NFS на компьютере нет? Можно попробовать загрузить софт через сайт Microsoft или со сторонних ресурсов. Возможно, что здесь понадобятся другие команды или действия.

Теперь у вас появились базовые представления о том, как можно использовать NFC и провести простейшую настройку. Этих знаний хватит, чтобы наладить доступ с одного компьютера к другому. Причём в роли клиента может выступить и ПК на Windows.

лТПНЕ РПДДЕТЦЛЙ НОПЗЙИ РТПЮЙИ ФЙРПЧ ЖБКМПЧЩИ УЙУФЕН, ЧП FreeBSD ЧУФТПЕОБ РПДДЕТЦЛБ УЕФЕЧПК ЖБКМПЧПК УЙУФЕНЩ (Network File System), ЙЪЧЕУФОПК ЛБЛ NFS . NFS РПЪЧПМСЕФ УЙУФЕНЕ ЙУРПМШЪПЧБФШ ЛБФБМПЗЙ Й ЖБКМЩ УПЧНЕУФОП У ДТХЗЙНЙ НБЫЙОБНЙ, РПУТЕДУФЧПН УЕФЙ. рПУТЕДУФЧПН NFS РПМШЪПЧБФЕМЙ Й РТПЗТБННЩ НПЗХФ РПМХЮБФШ ДПУФХР Л ЖБКМБН ОБ ХДБМЈООЩИ УЙУФЕНБИ ФПЮОП ФБЛ ЦЕ, ЛБЛ ЕУМЙ ВЩ ЬФП ВЩМЙ ЖБКМЩ ОБ УПВУФЧЕООЩИ ДЙУЛБИ.

чПФ ОЕЛПФПТЩЕ ЙЪ ОБЙВПМЕЕ ЪБНЕФОЩИ РТЕЙНХЭЕУФЧ, ЛПФПТЩЕ ДБЈФ ЙУРПМШЪПЧБОЙЕ NFS:

    пФДЕМШОП ЧЪСФЩЕ ТБВПЮЙЕ УФБОГЙЙ ЙУРПМШЪХАФ НЕОШЫЕ УПВУФЧЕООПЗП ДЙУЛПЧПЗП РТПУФТБОУФЧБ, ФБЛ ЛБЛ УПЧНЕУФОП ЙУРПМШЪХЕНЩЕ ДБООЩЕ НПЗХФ ИТБОЙФШУС ОБ ПДОПК ПФДЕМШОПК НБЫЙОЕ Й ВЩФШ ДПУФХРОЩНЙ ДМС ДТХЗЙИ НБЫЙО Ч УЕФЙ.

    рПМШЪПЧБФЕМСН ОЕ ОХЦОП ЙНЕФШ ДПНБЫОЙЕ ЛБФБМПЗЙ, ПФДЕМШОЩЕ ДМС ЛБЦДПК НБЫЙОЩ Ч ЧБЫЕК УЕФЙ. дПНБЫОЙЕ ЛБФБМПЗЙ НПЗХФ ТБУРПМБЗБФШУС ОБ УЕТЧЕТЕ NFS Й ЙИ НПЦОП УДЕМБФШ ДПУФХРОЩНЙ ПФПЧУАДХ Ч УЕФЙ.

    хУФТПКУФЧБ ИТБОЕОЙС ЙОЖПТНБГЙЙ, ФБЛЙЕ, ЛБЛ ДЙУЛЕФЩ, РТЙЧПДЩ CD-ROM Й ХУФТПКУФЧБ Zip (R), НПЗХФ ЙУРПМШЪПЧБФШУС ДТХЗЙНЙ НБЫЙОБНЙ Ч УЕФЙ. ьФП НПЦЕФ РТЙЧЕУФЙ Л ХНЕОШЫЕОЙА РЕТЕОПУЙНЩИ ХУФТПКУФЧ ИТБОЕОЙС ЙОЖПТНБГЙЙ Ч УЕФЙ.

чПФ ОЕУЛПМШЛП РТЙНЕТОЩИ УФТПЛ ЙЪ ЖБКМБ /etc/exports:

ч УМЕДХАЭЙИ РТЙНЕТБИ ДБЈФУС ПВЭБС ЙДЕС ФПЗП, ЛБЛ ЬЛУРПТФЙТПЧБФШ ЖБКМПЧЩЕ УЙУФЕНЩ, ИПФС ЛПОЛТЕФОЩЕ РБТБНЕФТЩ НПЗХФ ПФМЙЮБФШУС Ч ЪБЧЙУЙНПУФЙ ПФ ЧБЫЙИ ХУМПЧЙК Й ЛПОЖЙЗХТБГЙЙ УЕФЙ. л РТЙНЕТХ, ЮФПВЩ ЬЛУРПТФЙТПЧБФШ ЛБФБМПЗ /cdrom ДМС ФТЈИ НБЫЙО, ОБИПДСЭЙИУС Ч ФПН ЦЕ УБНПН ДПНЕОЕ, ЮФП Й УЕТЧЕТ (РПЬФПНХ ПФУХФУФЧХЕФ ДПНЕООПЕ ЙНС ДМС ЛБЦДПК НБЫЙОЩ) ЙМЙ ДМС ЛПФПТЩИ ЙНЕАФУС ЪБРЙУЙ Ч ЖБКМЕ /etc/hosts . жМБЗ -ro ХЛБЪЩЧБЕФ ОБ ЙУРПМШЪПЧБОЙЕ ЬЛУРПТФЙТХЕНПК ЖБКМПЧПК УЙУФЕНЩ Ч ТЕЦЙНЕ ФПМШЛП ЮФЕОЙС. у ЬФЙН ЖМБЗПН ХДБМЈООБС УЙУФЕНБ ОЕ УНПЦЕФ ОЙЛПЙН ПВТБЪПН ЙЪНЕОЙФШ ЬЛУРПТФЙТХЕНХА ЖБКМПЧХА УЙУФЕНХ.

/cdrom -ro host1 host2 host3

ч УМЕДХАЭЕК УФТПЛЕ ЬЛУРПТФЙТХЕФУС ЖБКМПЧБС УЙУФЕНБ /home , ЛПФПТБС УФБОПЧЙФУС ДПУФХРОПК ФТЕН ИПУФБН, ХЛБЪБООЩН РП ЙИ IP-БДТЕУБН. ьФП РПМЕЪОП, ЕУМЙ Х ЧБУ ЕУФШ УПВУФЧЕООБС УЕФШ ВЕЪ ОБУФТПЕООПЗП УЕТЧЕТБ DNS . лБЛ ЧБТЙБОФ, ЖБКМ /etc/hosts НПЦЕФ УПДЕТЦБФШ ЧОХФТЕООЙЕ ЙНЕОБ ИПУФПЧ; РПЦБМХКУФБ, ПВТБФЙФЕУШ Л УРТБЧПЮОХА УЙУФЕНХ РП ДМС РПМХЮЕОЙС ДПРПМОЙФЕМШОПК ЙОЖПТНБГЙЙ. жМБЗ -alldirs РПЪЧПМСЕФ ТБУУНБФТЙЧБФШ РПДЛБФБМПЗЙ Ч ЛБЮЕУФЧЕ ФПЮЕЛ НПОФЙТПЧБОЙС. дТХЗЙНЙ УМПЧБНЙ, ЬФП ОЕ НПОФЙТПЧБОЙЕ РПДЛБФБМПЗПЧ, ОП ТБЪТЕЫЕОЙЕ ЛМЙЕОФБН НПОФЙТПЧБФШ ФПМШЛП ЛБФБМПЗЙ, ЛПФПТЩЕ ЙН ФТЕВХАФУС ЙМЙ ОХЦОЩ.

/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4

ч УФТПЛЕ, РТЙЧЕДЈООПК ОЙЦЕ, ЖБКМПЧБС УЙУФЕНБ /a ЬЛУРПТФЙТХЕФУС ФБЛЙН ПВТБЪПН, ЮФП ПОБ ДПУФХРОБ ДЧХН ЛМЙЕОФБН ЙЪ ДТХЗЙИ ДПНЕОПЧ. рБТБНЕФТ -maproot=root РПЪЧПМСЕФ РПМШЪПЧБФЕМА root ХДБМЈООПК УЙУФЕНЩ ПУХЭЕУФЧМСФШ ЪБРЙУШ ОБ ЬЛУРПТФЙТХЕНХА ЖБКМПЧХА УЙУФЕНХ ЛБЛ РПМШЪПЧБФЕМШ root . еУМЙ РБТБНЕФТ -maproot=root ОЕ ЪБДБО, ФП ДБЦЕ ЕУМЙ РПМШЪПЧБФЕМШ ЙНЕЕФ РТБЧБ ДПУФХРБ root ОБ ХДБМЈООПК УЙУФЕНЕ, ПО ОЕ УНПЦЕФ НПДЙЖЙГЙТПЧБФШ ЖБКМЩ ОБ ЬЛУРПТФЙТПЧБООПК ЖБКМПЧПК УЙУФЕНЕ.

/a -maproot=root host.example.com box.example.org

дМС ФПЗП, ЮФПВЩ ЛМЙЕОФ УНПЗ ПВТБФЙФШУС Л ЬЛУРПТФЙТПЧБООПК ЖБКМПЧПК УЙУФЕНЕ, ПО ДПМЦЕО ЙНЕФШ РТБЧБ УДЕМБФШ ЬФП. рТПЧЕТШФЕ, ЮФП ЛМЙЕОФ ХЛБЪБО Ч ЧБЫЕН ЖБКМЕ /etc/exports .

ч ЖБКМЕ /etc/exports ЛБЦДБС УФТПЛБ УПДЕТЦЙФ ЙОЖПТНБГЙА ПВ ЬЛУРПТФЙТПЧБОЙЙ ДМС ПФДЕМШОПК ЖБКМПЧПК УЙУФЕНЩ ДМС ПФДЕМШОП ЧЪСФПЗП ИПУФБ. хДБМЈООЩК ИПУФ НПЦЕФ ВЩФШ ЪБДБО ФПМШЛП ПДЙО ТБЪ ДМС ЛБЦДПК ЖБКМПЧПК УЙУФЕНЩ, Й НПЦЕФ ЙНЕФШ ФПМШЛП ПДОХ ЪБРЙУШ, ЙУРПМШЪХЕНХА РП ХНПМЮБОЙА, ДМС ЛБЦДПК МПЛБМШОПК ЖБКМПЧПК УЙУФЕНЩ. л РТЙНЕТХ, РТЕДРПМПЦЙН, ЮФП /usr СЧМСЕФУС ПФДЕМШОПК ЖБКМПЧПК УЙУФЕНПК. уМЕДХАЭЙК /etc/exports ВХДЕФ ОЕЛПТТЕЛФЕО:

# Invalid when /usr is one file system /usr/src client /usr/ports client

пДОБ ЖБКМПЧБС УЙУФЕНБ, /usr , ЙНЕЕФ ДЧЕ УФТПЛЙ, ЪБДБАЭЙЕ ЬЛУРПТФЙТПЧБОЙЕ ДМС ПДОПЗП Й ФПЗП ЦЕ ИПУФБ, client . рТБЧЙМШОЩК ЖПТНБФ Ч ЬФПН УМХЮБЕ ФБЛПЧ:

/usr/src /usr/ports client

уЧПКУФЧБ ПФДЕМШОПК ЖБКМПЧПК УЙУФЕНЩ, ЬЛУРПТФЙТХЕНПК ОЕЛПФПТПНХ ИПУФХ, ДПМЦОЩ ЪБДБЧБФШУС Ч ПДОПК УФТПЛЕ. уФТПЛЙ ВЕЪ ХЛБЪБОЙС ЛМЙЕОФБ ЧПУРТЙОЙНБАФУС ЛБЛ ПФДЕМШОЩК ИПУФ. ьФП ПЗТБОЙЮЙЧБЕФ ФП, ЛБЛ ЧЩ НПЦЕФЕ ЬЛУРПТФЙТПЧБФШ ЖБКМПЧЩЕ УЙУФЕНЩ, ОП ДМС ВПМШЫЙОУФЧБ ЬФП ОЕ РТПВМЕНБ.

оЙЦЕ РТЙЧЕДЈО РТЙНЕТ РТБЧЙМШОПЗП УРЙУЛБ ЬЛУРПТФЙТПЧБОЙС, ЗДЕ /usr Й /exports СЧМСАФУС МПЛБМШОЩНЙ ЖБКМПЧЩНЙ УЙУФЕНБНЙ:

# ьЛУРПТФЙТХЕН src Й ports ДМС client01 Й client02, ОП # ФПМШЛП client01 ЙНЕЕФ РТБЧБ РПМШЪПЧБФЕМС root ОБ ОЙИ /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # лМЙЕОФУЛЙЕ НБЫЙОЩ ЙНЕАФ РПМШЪПЧБФЕМС root Й НПЗХФ НПОФЙТПЧБФШ ЧУЈ Ч # ЛБФБМПЗЕ /exports. лФП ХЗПДОП НПЦЕФ НПОФЙТПЧБФШ /exports/obj Ч ТЕЦЙНЕ ЮФЕОЙС /exports -alldirs -maproot=root client01 client02 /exports/obj -ro

дБЕНПО mountd ДПМЦЕО ВЩФШ РТПЙОЖПТНЙТПЧБО ПВ ЙЪНЕОЕОЙЙ ЖБКМБ /etc/exports , ЮФПВЩ ЙЪНЕОЕОЙС ЧУФХРЙМЙ Ч УЙМХ. ьФП НПЦЕФ ВЩФШ ДПУФЙЗОХФП РПУЩМЛПК УЙЗОБМБ HUP РТПГЕУУХ mountd:

# kill -HUP `cat /var/run/mountd.pid`

ЙМЙ ЧЩЪПЧПН УЛТЙРФБ mountd РПДУЙУФЕНЩ У УППФЧЕФУФЧХАЭЙН РБТБНЕФТПН:

# /etc/rc.d/mountd onereload

ъБ РПДТПВОПК ЙОЖПТНБГЙЕК П ТБВПФЕ УЛТЙРФПЧ rc.d ПВТБЭБКФЕУШ Л тБЪДЕМљ12.7, > .

лБЛ ЧБТЙБОФ, РТЙ РЕТЕЪБЗТХЪЛЕ FreeBSD ЧУЈ ОБУФТПЙФУС РТБЧЙМШОП. иПФС ЧЩРПМОСФШ РЕТЕЪБЗТХЪЛХ ЧПЧУЕ ОЕ ПВСЪБФЕМШОП. чЩРПМОЕОЙЕ УМЕДХАЭЙИ ЛПНБОД РПМШЪПЧБФЕМЕН root ЪБРХУФЙФ ЧУЈ, ЮФП ОХЦОП.

оБ УЕТЧЕТЕ NFS:

# rpcbind # nfsd -u -t -n 4 # mountd -r

оБ ЛМЙЕОФЕ NFS:

# nfsiod -n 4

фЕРЕТШ ЧУЈ ДПМЦОП ВЩФШ ЗПФПЧП Л ТЕБМШОПНХ НПОФЙТПЧБОЙА ХДБМЈООПК ЖБКМПЧПК УЙУФЕНЩ. ч РТЙЧПДЙНЩИ РТЙНЕТБИ УЕТЧЕТ ВХДЕФ ОПУЙФШ ЙНС server , Б ЛМЙЕОФ ВХДЕФ ОПУЙФШ ЙНС client . еУМЙ ЧЩ ФПМШЛП ИПФЙФЕ ЧТЕНЕООП УНПОФЙТПЧБФШ ХДБМЈООХА ЖБКМПЧХА УЙУФЕНХ, ЙМЙ ЧУЕЗП МЙЫШ РТПФЕУФЙТПЧБФШ ЧБЫЙ ОБУФТПКЛЙ, ФП РТПУФП ЪБРХУФЙФЕ ЛПНБОДЩ, РПДПВОЩЕ РТЙЧПДЙНЩН ЪДЕУШ, ТБВПФБС ЛБЛ РПМШЪПЧБФЕМШ root ОБ ЛМЙЕОФУЛПК НБЫЙОЕ:

# mount server:/home /mnt

рП ЬФПК ЛПНБОДЕ ЖБКМПЧБС УЙУФЕНБ /home ОБ УЕТЧЕТЕ ВХДЕФ УНПОФЙТПЧБОБ Ч ЛБФБМПЗ /mnt ОБ ЛМЙЕОФЕ. еУМЙ ЧУЈ ОБУФТПЕОП РТБЧЙМШОП, ЧЩ УНПЦЕФЕ ЧПКФЙ Ч ЛБФБМПЗ /mnt ОБ ЛМЙЕОФЕ Й ХЧЙДЕФШ ЖБКМЩ, ОБИПДСЭЙЕУС ОБ УЕТЧЕТЕ.

еУМЙ ЧЩ ИПФЙФЕ БЧФПНБФЙЮЕУЛЙ НПОФЙТПЧБФШ ХДБМЈООХА ЖБКМПЧХА УЙУФЕНХ РТЙ ЛБЦДПК ЪБЗТХЪЛЕ ЛПНРШАФЕТБ, ДПВБЧШФЕ ЖБКМПЧХА УЙУФЕНХ Ч /etc/fstab . чПФ РТЙНЕТ:

Server:/home /mnt nfs rw 0 0

оБ УФТБОЙГБИ УРТБЧПЮОПК УЙУФЕНЩ РП РЕТЕЮЙУМЕОЩ ЧУЕ ДПУФХРОЩЕ РБТБНЕФТЩ.

25.3.4. рТБЛФЙЮЕУЛПЕ ЙУРПМШЪПЧБОЙЕ

х NFS ЕУФШ НОПЗП ЧБТЙБОФПЧ РТБЛФЙЮЕУЛПЗП РТЙНЕОЕОЙС. оЙЦЕ РТЙЧПДЙФУС ОЕУЛПМШЛП ОБЙВПМЕЕ ЫЙТПЛП ТБУРТПУФТБОЈООЩИ УРПУПВПЧ ЕЈ ЙУРПМШЪПЧБОЙС:

    оБУФТПКЛБ ОЕУЛПМШЛП НБЫЙО ДМС УПЧНЕУФОПЗП ЙУРПМШЪПЧБОЙС CDROM ЙМЙ ДТХЗЙИ ОПУЙФЕМЕК. ьФП ВПМЕЕ ДЕЫЈЧЩК Й ЪБЮБУФХА ВПМЕЕ ХДПВОЩК УРПУПВ ХУФБОПЧЛЙ РТПЗТБННОПЗП ПВЕУРЕЮЕОЙС ОБ ОЕУЛПМШЛП НБЫЙО.

    ч ВПМШЫЙИ УЕФСИ НПЦЕФ ПЛБЪБФШУС ВПМЕЕ ХДПВОЩН ОБУФТПЙФШ ГЕОФТБМШОЩК УЕТЧЕТ NFS , ОБ ЛПФПТПН ТБЪНЕЭБАФУС ЧУЕ ДПНБЫОЙЕ ЛБФБМПЗЙ РПМШЪПЧБФЕМЕК. ьФЙ ДПНБЫОЙЕ ЛБФБМПЗЙ НПЗХФ ЪБФЕН ЬЛУРПТФЙТПЧБФШУС Ч УЕФШ ФБЛ, ЮФП РПМШЪПЧБФЕМЙ ЧУЕЗДБ ВХДХФ ЙНЕФШ ПДЙО Й ФПФ ЦЕ ДПНБЫОЙК ЛБФБМПЗ ЧОЕ ЪБЧЙУЙНПУФЙ ПФ ФПЗП, ОБ ЛБЛПК ТБВПЮЕК УФБОГЙЙ ПОЙ ТБВПФБАФ.

    оЕУЛПМШЛП НБЫЙО НПЗХФ ЙНЕФШ ПВЭЙК ЛБФБМПЗ /usr/ports/distfiles . фБЛЙН ПВТБЪПН, ЛПЗДБ ЧБН ОХЦОП ВХДЕФ ХУФБОПЧЙФШ РПТФ ОБ ОЕУЛПМШЛП НБЫЙО, ЧЩ УНПЦЕФЕ ВЩУФТП РПМХЮЙФШ ДПУФХР Л ЙУИПДОЩН ФЕЛУФБН ВЕЪ ЙИ ЪБЗТХЪЛЙ ОБ ЛБЦДПК НБЫЙОЕ.

25.3.5. бЧФПНБФЙЮЕУЛПЕ НПОФЙТПЧБОЙЕ У amd

фЕЛУФ РТЕДПУФБЧЙМ Wylie Stilwell .

фЕЛУФ РЕТЕРЙУБМ Chern Lee .

(ДБЕНПО БЧФПНБФЙЮЕУЛПЗП НПОФЙТПЧБОЙС) БЧФПНБФЙЮЕУЛЙ НПОФЙТХЕФ ХДБМЈООХА ЖБКМПЧХА УЙУФЕНХ, ЛБЛ ФПМШЛП РТПЙУИПДЙФ ПВТБЭЕОЙЕ Л ЖБКМХ ЙМЙ ЛБФБМПЗХ Ч ЬФПК ЖБКМПЧПК УЙУФЕНЕ. лТПНЕ ФПЗП, ЖБКМПЧЩЕ УЙУФЕНЩ, ЛПФПТЩЕ ВЩМЙ ОЕБЛФЙЧОЩ ОЕЛПФПТПЕ ЧТЕНС, ВХДХФ БЧФПНБФЙЮЕУЛЙ ТБЪНПОФЙТПЧБОЩ ДБЕНПОПН amd . йУРПМШЪПЧБОЙЕ amd СЧМСЕФУС РТПУФПК БМШФЕТОБФЙЧПК УФБФЙЮЕУЛПНХ НПОФЙТПЧБОЙА, ФБЛ ЛБЛ Ч РПУМЕДОЕН УМХЮБЕ ПВЩЮОП ЧУЈ ДПМЦОП ВЩФШ ПРЙУБОП Ч ЖБКМЕ /etc/fstab .

amd ТБВПФБЕФ, УБН ЧЩУФХРБС ЛБЛ УЕТЧЕТ NFS ДМС ЛБФБМПЗПЧ /host Й /net . лПЗДБ РТПЙУИПДЙФ ПВТБЭЕОЙЕ Л ЖБКМХ Ч ПДОПН ЙЪ ЬФЙИ ЛБФБМПЗПЧ, amd ЙЭЕФ УППФЧЕФУФЧХАЭЙК ХДБМЕООЩК ТЕУХТУ ДМС НПОФЙТПЧБОЙС Й БЧФПНБФЙЮЕУЛЙ ЕЗП НПОФЙТХЕФ. /net ЙУРПМШЪХЕФУС ДМС НПОФЙТПЧБОЙС ЬЛУРПТФЙТХЕНПК ЖБКМПЧПК УЙУФЕНЩ РП БДТЕУХ IP, ЛПЗДБ ЛБЛ ЛБФБМПЗ /host ЙУРПМШЪХЕФУС ДМС НПОФЙТПЧБОЙС ТЕУХТУБ РП ХДБМЕООПНХ ЙНЕОЙ ИПУФБ.

пВТБЭЕОЙЕ Л ЖБКМХ Ч ЛБФБМПЗЕ /host/foobar/usr ХЛБЦЕФ amd ОБ ЧЩРПМОЕОЙЕ РПРЩФЛЙ НПОФЙТПЧБОЙС ТЕУХТУБ /usr , ЛПФПТЩК ОБИПДЙФУС ОБ ИПУФЕ foobar .

рТЙНЕТ 25.2. нПОФЙТПЧБОЙЕ ТЕУХТУБ РТЙ РПНПЭЙ amd

чЩ НПЦЕФЕ РПУНПФТЕФШ ДПУФХРОЩЕ ДМС НПОФЙТПЧБОЙС ТЕУХТУЩ ПФДБМЈООПЗП ИПУФБ ЛПНБОДПК showmount . л РТЙНЕТХ, ЮФПВЩ РПУНПФТЕФШ ТЕУХТУЩ ИПУФБ У ЙНЕОЕН foobar , ЧЩ НПЦЕФЕ ЙУРПМШЪПЧБФШ:

% showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 % cd /host/foobar/usr

лБЛ ЧЙДОП ЙЪ РТЙНЕТБ, showmount РПЛБЪЩЧБЕФ /usr ЛБЛ ЬЛУРПТФЙТХЕНЩК ТЕУХТУ. рТЙ РЕТЕИПДЕ Ч ЛБФБМПЗ /host/foobar/usr ДБЕНПО amd РЩФБЕФУС ТБЪТЕЫЙФШ ЙНС ИПУФБ foobar Й БЧФПНБФЙЮЕУЛЙ УНПОФЙТПЧБФШ ФТЕВХЕНЩК ТЕУХТУ.

amd НПЦЕФ ВЩФШ ЪБРХЭЕО ЙЪ УЛТЙРФПЧ ОБЮБМШОПК ЪБЗТХЪЛЙ, ЕУМЙ РПНЕУФЙФШ ФБЛХА УФТПЛХ Ч ЖБКМ /etc/rc.conf:

Amd_enable="YES"

лТПНЕ ФПЗП, ДБЕНПОХ amd НПЗХФ ВЩФШ РЕТЕДБОЩ ОБУФТПЕЮОЩЕ ЖМБЗЙ ЮЕТЕЪ РБТБНЕФТ amd_flags . рП ХНПМЮБОЙА amd_flags ОБУФТПЕО УМЕДХАЭЙН ПВТБЪПН:

Amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"

жБКМ /etc/amd.map ЪБДБЕФ ПРГЙЙ, ЙУРПМШЪХЕНЩЕ РП ХНПМЮБОЙА РТЙ НПОФЙТПЧБОЙЙ ЬЛУРПТФЙТХЕНЩИ ТЕУХТУПЧ. ч ЖБКМЕ /etc/amd.conf ЪБДБОЩ ОБУФТПКЛЙ ОЕЛПФПТЩИ ВПМЕЕ УМПЦОЩИ ЧПЪНПЦОПУФЕК amd .

пВТБФЙФЕУШ Л УРТБЧПЮОЩН УФТБОЙГБН РП Й ДМС РПМХЮЕОЙС ВПМЕЕ РПМОПК ЙОЖПТНБГЙЙ.

25.3.6. рТПВМЕНЩ ЧЪБЙНПДЕКУФЧЙС У ДТХЗЙНЙ УЙУФЕНБНЙ

фЕЛУФ РТЕДПУФБЧЙМ John Lind .

оЕЛПФПТЩЕ УЕФЕЧЩЕ БДБРФЕТЩ ДМС УЙУФЕН PC У ЫЙОПК ISA ЙНЕАФ ПЗТБОЙЮЕОЙС, ЛПФПТЩЕ НПЗХФ РТЙЧЕУФЙ Л УЕТШЕЪОЩН РТПВМЕНБН Ч УЕФЙ, Ч ЮБУФОПУФЙ, У NFS. ьФЙ РТПВМЕНЩ ОЕ УРЕГЙЖЙЮОЩ ДМС FreeBSD, ПДОБЛП ЬФХ УЙУФЕНХ ПОЙ ЪБФТБЗЙЧБАФ.

рТПВМЕНБ, ЛПФПТБС ЧПЪОЙЛБЕФ РТБЛФЙЮЕУЛЙ ЧУЕЗДБ РТЙ ТБВПФЕ РП УЕФЙ УЙУФЕН PC (FreeBSD) У ЧЩУПЛПРТПЙЪЧПДЙФЕМШОЩНЙ ТБВПЮЙНЙ УФБОГЙСНЙ, ЧЩРХЭЕООЩНЙ ФБЛЙНЙ РТПЙЪЧПДЙФЕМСНЙ, ЛБЛ Silicon Graphics, Inc. Й Sun Microsystems, Inc. нПОФЙТПЧБОЙЕ РП РТПФПЛПМХ NFS ВХДЕФ ТБВПФБФШ ОПТНБМШОП, Й ОЕЛПФПТЩЕ ПРЕТБГЙЙ ФБЛЦЕ ВХДХФ ЧЩРПМОСФШУС ХУРЕЫОП, ОП ОЕПЦЙДБООП УЕТЧЕТ ПЛБЦЕФУС ОЕДПУФХРОЩН ДМС ЛМЙЕОФ, ИПФС ЪБРТПУЩ Л Й ПФ ДТХЗЙИ УЙУФЕН ВХДХФ РТПДПМЦБФШУС ПВТБВБФЩЧБФШУС. фБЛПЕ ЧУФТЕЮБЕФУС У ЛМЙЕОФУЛЙНЙ УЙУФЕНБНЙ, ОЕ ЪБЧЙУЙНП ПФ ФПЗП, СЧМСЕФУС МЙ ЛМЙЕОФ НБЫЙОПК У FreeBSD ЙМЙ ТБВПЮЕК УФБОГЙЕК. чП НОПЗЙИ УЙУФЕНБИ РТЙ ЧПЪОЙЛОПЧЕОЙЙ ЬФПК РТПВМЕНЩ ОЕФ УРПУПВБ ЛПТТЕЛФОП ЪБЧЕТЫЙФШ ТБВПФХ ЛМЙЕОФБ. еДЙОУФЧЕООЩН ЧЩИПДПН ЪБЮБУФХА СЧМСЕФУС ИПМПДОБС РЕТЕЪБЗТХЪЛБ ЛМЙЕОФБ, РПФПНХ ЮФП УЙФХБГЙС У NFS ОЕ НПЦЕФ ВЩФШ ТБЪТЕЫЕОБ.

иПФС РТБЧЙМШОЩН >> ТЕЫЕОЙЕН СЧМСЕФУС ХУФБОПЧЛБ ВПМЕЕ РТПЙЪЧПДЙФЕМШОПЗП Й УЛПТПУФОПЗП УЕФЕЧПЗП БДБРФЕТБ ОБ УЙУФЕНХ FreeBSD, ЙНЕЕФУС РТПУФПЕ ТЕЫЕОЙЕ, РТЙЧПДСЭЕЕ Л ХДПЧМЕФЧПТЙФЕМШОЩН ТЕЪХМШФБФБН. еУМЙ УЙУФЕНБ FreeBSD СЧМСЕФУС УЕТЧЕТПН , ХЛБЦЙФЕ РБТБНЕФТ -w=1024 ОБ ЛМЙЕОФЕ РТЙ НПОФЙТПЧБОЙЙ. еУМЙ УЙУФЕНБ FreeBSD СЧМСЕФУС ЛМЙЕОФПН , ФП УНПОФЙТХКФЕ ЖБКМПЧХА УЙУФЕНХ NFS У РБТБНЕФТПН -r=1024 . ьФЙ РБТБНЕФТЩ НПЗХФ ВЩФШ ЪБДБОЩ Ч ЮЕФЧЕТФПН РПМЕ ЪБРЙУЙ Ч ЖБКМЕ fstab ЛМЙЕОФБ РТЙ БЧФПНБФЙЮЕУЛПН НПОФЙТПЧБОЙЙ, ЙМЙ РТЙ РПНПЭЙ РБТБНЕФТБ -o Ч ЛПНБОДЕ РТЙ НПОФЙТПЧБОЙЙ ЧТХЮОХА.

оХЦОП ПФНЕФЙФШ, ЮФП ЙНЕЕФУС ФБЛЦЕ ДТХЗБС РТПВМЕНБ, ПЫЙВПЮОП РТЙОЙНБЕНБС ЪБ РТЙЧЕДЕООХА ЧЩЫЕ, ЛПЗДБ УЕТЧЕТЩ Й ЛМЙЕОФЩ NFS ОБИПДСФУС Ч ТБЪОЩИ УЕФСИ. еУМЙ ЬФП ФПФ УБНЩК УМХЮБК, РТПЧЕТШФЕ , ЮФП ЧБЫЙ НБТЫТХФЙЪБФПТЩ РТПРХУЛБАФ ОХЦОХА ЙОЖПТНБГЙА UDP , Ч РТПФЙЧОПН УМХЮБЕ ЧЩ ОЙЮЕЗП ОЕ РПМХЮЙФЕ, ЮФП ВЩ ЧЩ ОЙ РТЕДРТЙОЙНБМЙ.

ч УМЕДХАЭЙИ РТЙНЕТБИ fastws СЧМСЕФУС ЙНЕОЕН ИПУФБ (ЙОФЕТЖЕКУБ) ЧЩУПЛПРТПЙЪЧПДЙФЕМШОПК ТБВПЮЕК УФБОГЙЙ, Б freebox СЧМСЕФУС ЙНЕОЕН ИПУФБ (ЙОФЕТЖЕКУБ) УЙУФЕНЩ FreeBSD УП УМБВЩН УЕФЕЧЩН БДБРФЕТПН. лТПНЕ ФПЗП, /sharedfs ВХДЕФ СЧМСФШУС ЬЛУРПТФЙТХЕНПК ЮЕТЕЪ NFS ЖБКМПЧПК УЙУФЕНПК (ПВТБФЙФЕУШ Л УФТБОЙГБН УРТБЧПЮОПК УЙУФЕНЩ РП ЛПНБОДЕ ), Б /project ВХДЕФ ФПЮЛПК НПОФЙТПЧБОЙС ЬЛУРПТФЙТХЕНПК ЖБКМПЧПК УЙУФЕНЩ ОБ ЛМЙЕОФЕ. ч МАВПН УМХЮБЕ, ПФНЕФШФЕ, ЮФП ДМС ЧБЫЕЗП РТЙМПЦЕОЙС НПЗХФ РПОБДПВЙФШУС ДПРПМОЙФЕМШОЩЕ РБТБНЕФТЩ, ФБЛЙЕ, ЛБЛ hard , soft ЙМЙ bg .

рТЙНЕТ УЙУФЕНЩ FreeBSD (freebox) ЛБЛ ЛМЙЕОФБ Ч ЖБКМЕ /etc/fstab ОБ НБЫЙОЕ freebox:

Fastws:/sharedfs /project nfs rw,-r=1024 0 0

лПНБОДБ, ЧЩДБЧБЕНБС ЧТХЮОХА ОБ НБЫЙОЕ freebox:

# mount -t nfs -o -r=1024 fastws:/sharedfs /project

рТЙНЕТ УЙУФЕНЩ FreeBSD Ч ЛБЮЕУФЧЕ УЕТЧЕТБ Ч ЖБКМЕ /etc/fstab ОБ НБЫЙОЕ fastws:

Freebox:/sharedfs /project nfs rw,-w=1024 0 0

лПНБОДБ, ЧЩДБЧБЕНБС ЧТХЮОХА ОБ НБЫЙОЕ fastws:

# mount -t nfs -o -w=1024 freebox:/sharedfs /project

рТБЛФЙЮЕУЛЙ ЧУЕ 16-ТБЪТСДОЩЕ УЕФЕЧЩЕ БДБРФЕТЩ РПЪЧПМСФ ТБВПФБФШ ВЕЪ ХЛБЪБООЩИ ЧЩЫЕ ПЗТБОЙЮЕОЙК ОБ ТБЪНЕТ ВМПЛПЧ РТЙ ЮФЕОЙЙ Й ЪБРЙУЙ.

дМС ФЕИ, ЛФП ЙОФЕТЕУХЕФУС, ОЙЦЕ ПРЙУЩЧБЕФУС, ЮФП ЦЕ РТПЙУИПДЙФ Ч РТЙ РПСЧМЕОЙЙ ЬФПК ПЫЙВЛЙ, Й ПВЯСУОСЕФУС, РПЮЕНХ ЕЕ ОЕЧПЪНПЦОП ХУФТБОЙФШ. лБЛ РТБЧЙМП, NFS ТБВПФБЕФ У ВМПЛБНЙ >> ТБЪНЕТПН 8љЛЙМПВБКФ (ИПФС ПФДЕМШОЩЕ ЖТБЗНЕОФЩ НПЗХФ ЙНЕФШ НЕОШЫЙЕ ТБЪНЕТЩ). фБЛ, РБЛЕФ Ethernet ЙНЕЕФ НБЛУЙНБМШОЩК ТБЪНЕТ ПЛПМП 1500љВБКФ, ФП ВМПЛ >> NFS ТБЪВЙЧБЕФУС ОБ ОЕУЛПМШЛП РБЛЕФПЧ Ethernet, ИПФС ОБ ВПМЕЕ ЧЩУПЛПН ХТПЧОЕ ЬФП ЧУЕ ФПФ ЦЕ ЕДЙОЩК ВМПЛ, ЛПФПТЩК ДПМЦЕО ВЩФШ РТЙОСФ, УПВТБО Й РПДФЧЕТЦДЕО ЛБЛ ПДЙО ВМПЛ. чЩУПЛПРТПЙЪЧПДЙФЕМШОЩЕ ТБВПЮЙЕ УФБОГЙЙ НПЗХФ РПУЩМБФШ РБЛЕФЩ, ЛПФПТЩЕ УППФЧЕФУФЧХАФ ПДОПНХ ВМПЛХ NFS, УТБЪХ ДТХЗ ЪБ ДТХЗПН, ОБУЛПМШЛП ЬФП РПЪЧПМСЕФ ДЕМБФШ УФБОДБТФ. оБ УМБВЩИ, ОЙЪЛПРТПЙЪЧПДЙФЕМШОЩИ БДБРФЕТБИ РБЛЕФЩ, РТЙЫЕДЫЙЕ РПЪЦЕ, ОБЛМБДЩЧБАФУС РПЧЕТИ ТБОЕЕ РТЙЫЕДЫЙИ РБЛЕФПЧ ФПЗП ЦЕ УБНПЗП ВМПЛБ ДП ФПЗП, ЛБЛ ПОЙ НПЗХФ ВЩФШ РЕТЕДБОЩ ИПУФХ Й ВМПЛ ЛБЛ ЕДЙОПЕ ГЕМПЕ ОЕ НПЦЕФ ВЩФШ УПВТБО ЙМЙ РПДФЧЕТЦДЕО. ч ТЕЪХМШФБФЕ ТБВПЮБС УФБОГЙС ЧИПДЙФ Ч УЙФХБГЙА ФБКН-БХФБ Й РЩФБЕФУС РПЧФПТЙФШ РЕТЕДБЮХ, ОП ХЦЕ У РПМОЩН ВМПЛПН Ч 8љлв, Й РТПГЕУУ ВХДЕФ РПЧФПТСФШУС УОПЧБ, ДП ВЕУЛПОЕЮОПУФЙ.

ъБДБЧ ТБЪНЕТ ВМПЛБ НЕОШЫЕ ТБЪНЕТБ РБЛЕФБ Ethernet, НЩ ДПУФЙЗБЕН ФПЗП, ЮФП МАВПК РПМОПУФША РПМХЮЕООЩК РБЛЕФ Ethernet НПЦЕФ ВЩФШ РПДФЧЕТЦДЕО ЙОДЙЧЙДХБМШОП, Й ЙЪВЕЦЙН ФХРЙЛПЧХА УЙФХБГЙА.

оБМПЦЕОЙЕ РБЛЕФПЧ НПЦЕФ ЧУЕ ЕЭЕ РТПСЧМСФШУС, ЛПЗДБ ЧЩУПЛПРТПЙЪЧПДЙФЕМШОЩЕ ТБВПЮЙЕ УФБОГЙЙ УВТБУЩЧБАФ ДБООЩЕ ОБ PC-УЙУФЕНХ, ПДОБЛП РПЧФПТЕОЙЕ ЬФПК УЙФХБГЙЙ ОЕ ПВСЪБФЕМШОП У ВПМЕЕ УЛПТПУФОЩНЙ БДБРФЕТБНЙ У ВМПЛБНЙ >> NFS. лПЗДБ РТПЙУИПДЙФ ОБМПЦЕОЙЕ, ЪБФТПОХФЩЕ ВМПЛЙ ВХДХФ РЕТЕДБОЩ УОПЧБ, Й УЛПТЕЕ ЧУЕЗП, ПОЙ ВХДХФ РПМХЮЕОЩ, УПВТБОЩ Й РПДФЧЕТЦДЕОЩ.

NFS(Network File System) –это сетевая файловая система, позволяющая пользователям обращаться к файлам и каталогам, расположенным на удалённых компьютерах, как если бы эти файлы и каталоги были локальными. Главным преимуществом такой системы является то, что отдельно взятые рабочие станции могут использовать меньше собственного дискового пространства, так как совместно используемые данные хранятся на отдельной машине и доступны для других машин в сети. NFS – это клиент-серверное приложение. Т.е. в системе пользователя должен быть установлен NFS-клиент, а на компьютерах, которые предоставляют свое дисковое пространство – NFS-сервер.

Установка

Для установки и сервера, и клиента необходимы одни и те же пакеты nfs-kernel-server и nfs-common

sudo apt-get install nfs-kernel-server nfs-common

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

Все настройки сервера хранятся в файле /etc/exports . Открываем его на редактирование

sudo nano / etc/ exports

и добавляем в конец файла строки вида (строк может быть произвольное количество):

/data 192.168.1.1/255.255.255.0(rw,insecure,nohide,all_squash,anonuid=1000,anongid=1000,no_subtree_check)

Под «местным» пользователем понимается пользователь, который будет осуществлять запись в файлы (запускать приложения, скачивающие файлы и т.д.), поэтому значение 1000 может отличаться от вашего. Для определения uid пользователя воспользуйтесь командой id <имя_пользвателя>

Перезапускаем сервер:

sudo / etc/ init.d/ nfs-kernel-server restart

В последствии после внесения изменений в файл /etc/exports не обязательно перезапускать сервер, достаточно выполнить:

sudo exportfs -a

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

Для монтирования сетевой папки необходимо создать папку на локальном компьютере:

mkdir ~/ Общедоступная

Монтирование вручную

Для монтирования папки вручную необходимо выполнить в терминале команду:

sudo mount -t nfs -O uid =1000 ,iocharset =utf-8 192.168.1.2:/ data ~/ Общедоступные

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

Монтирование с записью в fstab

Для большего удобства можно добавить запись с сетевой папкой в fstab. Целесообразно создать точку монтирования сетевой папки в /media, потому что каталоги, созданные там, будут отображаться в Nautilus в левой колонке, монтировать их можно будет одним кликом.

sudo mkdir / media/ Общедоступные

В файл /etc/fstab добавляем подобную запись:

192.168.1.1:/data /media/Общедоступные nfs user,rw,noauto 0 0

опция «noauto» запрещает автоматическое монтирование сетевого диска при старте системы.

Проблемы

Использование на ноутбуке

При монтировании удаленных папок NFS посредством fstab, в ситуации, когда сеть с сервером будет не доступна, ноутбук невозможно выключить или отправить в спящий режим. Для использования удаленных папок NFS на ноутбуке лучше воспользоваться монтированием при помощи autofs

Монтирование с помощью autofs

Данный способ монтирования позволяет автоматически монтировать папку после обращения к ней в наутилусе (к примеру, через закладки) или в терминале:

cd / nfs/ server/

и автоматически отмонтировать при отсутствии активности.

Установка

Для реализации данного способа необходимо доустановить пакет autofs:

sudo apt-get install autofs

Настройка

Для настройки autofs в файле /etc/auto.master необходимо добавить строку

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

Здесь –timeout=60 указывает отмонтировать раздел при отсутствии активности на нём более чем 60 секунд. Создаем в корне файловой системы папку /nfs :

sudo touch / etc/ auto.nfs && sudo mkdir / nfs

В файле /etc/auto.nfs добавляем строку

Server -rw,soft,intr,rsize=8192,wsize=8192 192.168.1.2:/path_to_share

    Rw,soft,intr,rsize=8192,wsize=8192 – параметры монтирования;

    server – папка, которая будет создаваться в каталоге /nfs при монтировании удаленных папок;

    192.168.1.2:/path_to_share– IP-адрес и общая папка сервера.

Перезапускаем службу autofs:

sudo service autofs restart

Проблемы

Недоступность удаленного сервера

Если сеть с сервером NFS недоступна, возможна большая задержка (по умолчанию 3 минуты) при открытии nautilus, в закладках которого находится примонтированная удаленная папка NFS.
Для решения этой проблемы необходимо уменьшить время ожидания монтирования autofs, для этого в файле /etc/default/autofs необходимо раскомментировать или добавить следующие строки:

MOUNT_WAIT=10

#время ожидания ответа от mount

NEGATIVE_TIMEOUT=10

#время ожидания при неудачной попытке монтирования

После этого autofs будет пытаться примонтировать удаленную папку только 10 секунд.

Использование

Проблемы

Проблемы с гибернацией или выключением

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

Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0)

Для диагностирования смотрим лог dmesg , возможный вывод:

Dmesg | grep -A 2 refuse Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0): nfs D 0000000000000000 0 2065 1 0x00800004

Dmesg | grep -A 2 refuse Freezing of tasks failed after 20.00 seconds (1 tasks refusing to freeze): updatedb.mloc D ffff88008e907578 0 9268 9261 0x00800004

Пакет, являющийся причиной зависания указан в начале строки, следующей после сообщения об ошибке.

Причина №1: пакет NFS

Причиной данной проблемы является скрипт прерывания работы NetworkManager, необходимо запретить его выполнение переименовав его:

Sudo mv /usr/lib/pm-utils/sleep.d/55NetworkManager /usr/libg/pm-utils/sleep.d/old.55NetworkManager

Причина №2: пакет updatedb.mloc

updatedb является частью пакета mlocate - удобного пакета для быстрого поиска файлов по системе. К сожалению, версия 0.23.1-1ubuntu2 , находящаяся в репозиториях Ubuntu содержит баг , при котором возникает ситуация, когда компьютер не может выключиться или отправиться в гибернацию, когда сервер NFS выключен . Для решения данной проблемы необходимо установить пакет версии 0.23.1-1 из репозитория debian-sid:

wget http:// ftp.ru.debian.org/ debian/ pool/ main/ m/ mlocate/ mlocate_0.23.1-1 _i386.deb sudo dpkg -i mlocate*

Когда на NFS -сервере один основной пользователь и на компьютере, который выступает в роле NFS -клиента, тоже один пользователь, да ещё и входящий в список sudousers — : NFS-раздел подключается, используя sudo, UID и GID на NFS-сервере и NFS-клиенте совпадают, с правами на чтение и запись нет никаких проблем.

У меня же возникла ситуация, когда на NFS-клиенте был обычный пользователь (regular user) без доступа к sudo и он должен был уметь производить чтение и запись в подлючённом NFS-разделе. Назовём этого пользователя reguser. Также на этом компьютере (NFS-клиенте) был ещё один пользователь, который имел доступ к sudo. Назовём его: admuser.

Итак, передо мной стояло две задачи:

  1. Сделать так, чтобы reguser мог производить запись в файлы и директории на NFS-сервере.
  2. Сделать так, чтобы reguser мог сам подключать и отключать NFS-раздел.

Как разрешить запись на NFS-сервере пользователям с NFS-клиента, у который отличается UID от UID пользователя, которому принадлежат файлы на NFS-сервере

Действия выполняются на NFS-сервере от пользователя root.
Редактируем /etc/exports:
nano /etc/exports
Вставляем или изменяем строку, которая говорит о том, какая директория будет доступна (экспортирована) по NFS:

/home/nfs 192.168.1.1/24(rw,async,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

где:

  • /home/nfs — директория, которая будет доступна (экспортирована) NFS-клиенту;
  • 192.168.1.1/24 — IP-адрес или, как в данном случае, диапазон адресов, с которых разрешено подключаться к NFS;
  • rw — разрешение на чтение и запись;
  • async — асинхронный режим работы, в котором ответы на запросы будут происходят сразу, не дожидаясь записи на диск. В этом случае надежность ниже, однако, производительность больше;
  • no_subtree_check — при разрешение доступа к подкаталогу файловой системы, а не всей файловой системе, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге или нет. no_subtree_check отключает эту проверку, что уменьшает безопасность, однако, увеличивает скорость передачи данных;
  • all_squash — эта опция отвечает за то, что любые пользователи NFS-клиента будут считаться анонимными на NFS-сервере или же тем пользователеми NFS-сервера, чьи идентификаторы указаны в anonuid и anongid;
  • anonuid — идентификатор пользователя ОС на NFS-сервере. Берётся из /etc/passwd . Например, если нужен первый несистемный пользователь (тот, логин которого указывался при установке ОС, в моём случае nfs) и в файле /etc/passwd есть строка «nfs:x:1000:1000:NFS:/home/nfs:/bin/bash » значение для anonuid будет первое число 1000;
  • anongid — идентификатор группы ОС на NFS-сервере. Берётся из /etc/group . Например, если нужна группа www-data и в файле /etc/group есть строка «www-data:x:33: » значение для anongid будет 33;

Если нужно более точно указать какие пользователи на NFS-клиенте соответствуют пользователям на NFS-сервере, то можно включить маппинг пользователей, добавив опцию map_static=/etc/file_maps_users . Файл /etc/file_maps_users должен выглядеть следующим образом:

# Маппинг пользователей # remote local comment uid 0-33 1002 # сопоставление пользователей с удаленным UID 0-50 к локальному UID 1002 gid 0-33 1002 # сопоставление пользователей с удаленным GID 0-50 к локальному GID 1002

Перезапускаем демона nfs и на этом настройка сервера завершена:
/etc/init.d/nfs-kernel-server restart

Как разрешить обычному пользователю (regular user) подключать и отключать NFS-раздел

Создаём директорию, в которую будем производить монтирование:
sudo mkdir /media/nfs

Добавляем в /etc/fstab правило монтирования. Открываем файл:
sudo nano /etc/fstab
Добавляем правило:
192.168.1.50:/home/nfs /media/nfs nfs rw,noauto,user 0 0
где:

  • 192.168.1.50 — IP-адрес NFS-сервера;
  • /home/nfs — каталог на NFS-сервере, который монтируем. Он должен быть в списке /etc/exports на NFS-сервере;
  • /media/nfs — каталог на NFS-клиенте, в который монтируем NFS-раздел;
  • nfs — тип файловой системы;
  • rw — с правом на запись;
  • noauto — опция, указывающая, что раздел не нужно монтировать автоматически при загрузке;
  • user — опция, разрешающая монтировать и размонтировать этот раздел любому пользователю.

Для отключения NFS:
nano ~/nfs.umount
С кодом:
#!/bin/bash
umount /media/nfs

Разрешаем скриптам исполняться:
chmod ug+x ~/nfs.mount ~/nfs.umount

И, наконец, подключение NFS-ресурса:
~/nfs.mount

Отключение NFS-ресурса:
~/nfs.umount

Всё, все задачи выполнены.