Введение.
Сервер NFS является необходимым приложением при построении офиса на базе ОС Linux. С его помощью можно организовать совместное использование файловых ресурсов в организации. Полное название — Network File System — протокол сетевого доступа к файлам системы. Кроме Linux, протокол NFS применяется в MS Windows, гдеустановлен NFS клиентом. Используя NFS можно объединять рабочие станции Linux и Windows для совместного доступа к папкам и файлам компании. Ещё одно применение NFS — построение бездискового доступа к хранилищу, для доставки установленного приложения клиенту — тонкий клиент.
Протокол NFS не имеет шифрования, используйте Kerberos или VPN для защиты важной информации внутри NFS.
Подготовка.
Прежде чем перейти к развёртыванию NFS сервера, как приложения, нам понадобится базовый сервер Linux, минимальной конфигурации.
- Стенд:
- ALT Linux, имя: lin-nfs, IP 10.0.2.36;
- Альт Рабочая станция, имя: lin-kde, IP=10.0.2.33;
- пользователь — user
Для работы сервера NFS выберем отдельное устройство — повысит безопасность, надёжность и возможность технологического манёвра при сбоях.
Установка сервера NFS.
# apt-get update
# apt-get install nfs-server
Пакет nfs-server содержит: nfs-clients, nfs-server, nfs-utils
Запуск и управление сервером NFS.
Команды для управления сервером NFS приведены ниже.
# systemctl start|stop|restart|status|enable|is-enabled nfs
Проверка работы сервера NFS.
# rpcinfo -p | grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
Файл exports.
Файл конфигурации, exports, содержит синтаксис команд, для экспортированных общих папок сервера NFS. Содержимое exports, показано ниже, хранится в каталоге /etc.
/srv/public -ro,insecure,no_subtree_check,fsid=1 *
#/srv/share -rw,insecure,fsid=0,sec=krb5 *
Здесь находятся две строки, не будим их менять, выполним все наши действия при тех значениях которые установлены по умолчанию, как из коробки.
Опции файла exports.
- Параметры файла exports из коробки:
- ro чтение
- rw чтение и запись в этой папке
- insecure использовать любые порты
- no_subtree_check откл. проверку экспортированной папки
- fsid=1 идентификатор файловой системы 1
- fsid=0 идентификатор файловой системы 0
- sec=krb5 механизм проверки авторизации с kerberos
Avahi-daemon
Обнаружение общих ресурсов и устройств обеспечивает служба avahi-daemon, включающая в себя zeroconf.
Протокол zeroconf, «прослушивает» сетевые устройства в локальной сети.
Установка и управление.
# apt-get update
# apt-get instal avahi
# systemctl start|enable|stop|restart|status avahi-daemon
Конфигурация.
Создать трансляцию протокола NFS в сети, можно с помощью файла nfs-service. Необходимо в созданный файл внести информацию, которая появится при поиске NFS папки.

<service-group>
<name replace-wildcards="no">public</name>
<service>
<type>_nfs._tcp</type>
<port>2049</port>
<txt-record>path=/srv/public</txt-record>
<txt-record>sec=sys</txt-record>
<txt-record>options=hard,intr,nolock,ro</txt-record>
</service>
</service-group>
# systemctl restart avahi-daemon
Проверяем «видимость» NFS сервера командой.
$ avahi-browse -tkrp _nfs._tcp
Клиент NFS.
Работу клиента можно демонстрировать как с консоли сервера так и с удалённой рабочей станции Linux.
Консольный клиент.
Проверять работу NFS будем на сервере, где работает демон NFS — т.к установлен NFS клиент. Создадим папку на сервере /home/nfs, и с помощью утилиты mount монтируем её. Этими действиями мы «покажем» серверу NFS, куда надо экспортировать данные. Для наглядности поместим в экспортируемый каталог файл test.
Полностью команда mount для nfs выглядит: mount -t nfs.
# mkdir /home/nfs
# touch /srv/public/test
# mount test:/srv/public /home/nfs
# df -h
# lin-nfs:/srv/public ... /home/nfs

Всё работает, но у нас ещё имеется закомментированная строка в файле exports. Прежде чем использовать её необходимо настроить на домене, обслуживающий NFS сервер, Kerberos авторизацию. Пока, без Kerberos, ограничимся классической схемой безопасности в UNIX системах, для разделения прав доступа к NFS ресурсам. Поэтому оставим всё, как есть, но в дальнейшем создадим группы для пользователей, разграничив их права на каждую папку NFS.
Графический клиент.
На рабочей станции необходимо установить клиент NFS, по умолчанию установлен, проверяем с помощью Synaptic.

Synaptic — графический менеджер пакетов.
Монтируем NFS папку командой mount, в локальную папку пользователя /home/user/nfs.
# mount lin-nfs:/srv/public /home/user/nfs
# df -h
...
lin-ftp:/srv/public .../home/mms/nfs
Дерево папок менеджера Dolphin.

На рабочей станции должен быть запущен avahi.

Автомонтирование NFS папки.
Подключить папку NFS, при запуске компьютера, можно несколькими перечисленными ниже способами:
1. Создать скрипт, имя map, поместить его в папку /usr/local/bin, назначить cron задачу выполняемую при включении устройства.
#!/bin/bash
mount lin-nfs:/sev/public /home/user/nfs
# crontab -l
#minute (0-59),
#| hour (0-23),
#| | day of the month (1-31),
#| | | month of the year (1-12),
#| | | | day... (0-6 with 0=Sunday).
#| | | | | commands
@reboot map
2. Сделать запись в таблице разделов /etc/fstab о монтируемой NFS системе. Здесь может случится, следующее, fstab является системным и поэтому любая неточность может привести к краху. Пример для монтирования NFS папки через fstab показан ниже.
10.0.2.36:/srv/public /home/user/nfs nfs auto 0 0
3.Вывести на рабочий стол кнопку монтирования общего NFS ресурса. Может быть полезна если сервер NFS временно не доступен. Требуется скрипт map, смотри №1. Графическими средствами Альт Рабочая станция созидать ссылку на приложение. Для команды mount необходимы права администратора, воспользуемся gksu.

gksu — утилита для запуска программ с правами su и sudo в графической среде Linux



4. Использовать, привычный для Windows, оконный менеджер для подключения к NFS, создав в дереве менеджера «Точку входа». Нажимаем F6, пишем путь к общей папке NFS nfs://lin-nfs/srv
Dolphin — файловый менеджер для работы в Linux.

5.Или, по мотивам рассказа про avahi. С помощью Dolphin создать поиск общих ресурсов в сети, как показано ниже.

6.autofs — программа контроля времени использования общего каталога. Задача autofs контролировать время простоя общего ресурса, размонтируя его, ожидая новых обращений. Экономит полосу пропускания обеспечивая высокую производительность по сравнению с fstab. Протокол autofs контролирует работу службы automount при старте системы.
Установки, управление и контроль autofs приводится ниже.
# apt-get update
# apt-get install autofs
# systemctl start autofs
# systemctl enable autofs
# systemctl status autofs
После установки autofs в каталоге /etc создаются файлы:
- auto.avahi — обозреватель сетевых служб
- auto.master — файл конфигурации для монтирования
- autofs.smb — монтирование smb каталогов
- auto.tab — таблица добавляемых устройств
- auto.conf — служебный файл, не трогаем
Когда autofs стартует, он «читает» запись в auto.master, находит точки монтирования и запускает демон automount с параметрами.
Откроем файл auto.master и добавим строку.
# vim /etc/auto.master
...
/mnt/nfs /etc/auto.nfs -t 60
t- время ожидания бездействия в сек.
Создаём в каталоге /etc файл auto.nfs
# touch /etc/auto.nfs
Записываем в файл auto.nfs информацию и перегружаем autofs.
# vim /etc/auto.nfs
/mnt/nfs -fstype=nfs 10.0.2.36:/srv/public
# systemctl restart autofs
При старте в /mnt инициируются каталоги указанные в auto.master.
# ls -l /mnt
...
drwxr-xr-x 2 ... auto
drwxr-xr-x 2 ... net
drwxr-xr-x 2 ... nfs
Таким образом служба autofs берёт под «контроль» время работы общего ресурса NFS сервера.
Инструментарий для NFS.
В качестве инструментария для работы с протоколом NFS используются следующие распространённые утилиты:
- showmount — вывод информации о состоянии сервера NFS.
# showmount -a All mount points on lin-nfs: 10.0.2.33:/srv/public 127.0.0.1:/srv/public 127.0.0.1:/srv/share # showmount -d Directories on lin-nfs: /srv/public /srv/share # showmount -e Export list for lin-nfs: /srv/public *
- nfsstat — вывод статистики работы NFS и RPC
- основные ключи:
- -v подробная информация
- -r RPC статистика
- -n NFS статистика
- -l печатает статистику в формате списка
- exportfs — выводит таблицу экспорта каталогов для клиентов
- -v подробная информация
- -r реэкспортировать все каталоги после редактирования
- -u отменить экспорт каталога пример /srv/public
- -a отправляет полученные записи экспорта в ядро
- automount — утилита управления точками монтирования autofs
- Основные ключи:
- -v подробная информация о монтировании
- —d режим отладки
- -f вывод журнала работы на экран вместо syslog
- -F принудительное размонтирование
- -h справочная информация
- Основные ключи:
Заключение
В статье был рассмотрен вариант установка NFS сервера из коробки. В качестве базового сервера использовался ALT Linux в минимальной конфигурации. После установки, сервер NFS, готов к эксплуатации в качестве хранилища общих папок и документов с правами доступа на чтение. Если требуется доступ с правами записи к папке /srv/share, и возникли трудности с Kerberos. Тогда можно скорректировать файл exports, как показано ниже. После чего необходимо выполнить реэкспорт каталогов сервера NFS.
Используя rw, проверить права доступа пользователей и групп к общей папке NFS.
/srv/public -rw,insecure,no_subtree_check,fsid=1 *
#/srv/share -rw,insecure,fsid=0,sec=krb5 *
# exportfs -r
В заключение отметим, сервер NFS не предназеачен для передачи больших обьёмов информации. Основная задача — организация обшего доступа к папкам и файлам предприятия в режиме реального времени. Для обмена большими трафиками информации служит FTP сервер.