Как установить сервер NFS Linux.

Введение.

Сервер 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 папки.

Вид: настроить avahi nfs
Вид:настроить трансляцию avahi 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
Проверка работы NFS клиента
Вид: проверка работы клиента NFS.

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

Графический клиент.

На рабочей станции необходимо установить клиент NFS, по умолчанию установлен, проверяем с помощью Synaptic.

Вид: менеджера пакетов Synaptic и nfs-clients.

Synaptic — графический менеджер пакетов.

Монтируем NFS папку командой mount, в локальную папку пользователя /home/user/nfs.

# mount lin-nfs:/srv/public /home/user/nfs
# df -h
...
lin-ftp:/srv/public .../home/mms/nfs

Дерево папок менеджера Dolphin.

Вид: nfs папка в дереве менеджера Dolphin.

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

Вид: Synaptic установить avahi.
Вид: Synaptic, установить 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.
Вид: установить программу gksu.

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

Вид: добавить кнопку на рабочий стол.
Вид: создание кнопки.
Вид: настроить имя и графику кнопки.
Вид: имя и оформление кнопки.
Конфигурация кнопки для подключения NFS папки.
Вид: конфигурация NFS кнопки.

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

Dolphin — файловый менеджер для работы в Linux.

Вид: подключить папку NFS с помощью Dolphin.
Вид: подключение обшей папки NFS используя Dolphin.

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

Вид:монтирование папки NFS с zenconf.
Вид:монтирование папки NFS используя avahi.

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 сервер.

Полезные ссылки.