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

Введение.

Сервер NFS является одним из необходимых приложений для построения офиса на базе ОС Linux. С его помощью можно организовать совместное использование общих файловых ресурсов в организации. Полное название NFS — 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.

Для работы сервера NFS выделим отдельное устройство — повысит безопасность, надёжность и возможность технологического манёвра при сбоях.

Пакеты для установки сервера NFS.

# apt-get update
# apt-get install nfs-server

В установочный пакет nfs-server входит: nfs-clients, nfs-server, nfs-utils и др.

Запуск и управление сервером NFS.

Основные команды для управления сервером NFS приводятся ниже.

# systemctl start nfs
# systemctl enable nfs
# systemctl is-enabled nfs
# systemctl status nfs
# systemctl reboot 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

Проверка работы клиента NFS.

Работу клиента можно демонстрировать как с консоли сервера так и с удалённой рабочей станции Linux.

Консольный клиент.

Проверять работу NFS будем на сервере, где работает демон NFS — т.к установлен клиент NFS. Создадим папку в каталоге /home/nfs и с помощью утилиты mount смонтируем её. Этими действиями мы «покажем» серверу NFS, куда надо экспортировать данные. Для наглядности примера поместим в каталог, с помощью команды touch, файл 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.

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

В качестве стенда используется Альт Рабочая станция, стендовое имя: KDE9; IP=10.0.2.33, пользователь — user.

На рабочей станции пользователя необходимо установить клиент 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-daemon.

Система avahi-daemon обеспечивает «прослушивание» локальной сети для обнаружения общих ресурсов, программ, устройств совместного доступа.

Автомонтирование NFS папки.

Подключить папку NFS, при запуске компьютера, можно несколькими способами и манипуляциями перечисленными ниже.

  • Создать скрипт, имя 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
  • Сделать запись в таблице разделов /etc/fstab о монтируемой NFS системе. Здесь может случится, следующее, fstab является системным и поэтому любая неточность может привести к краху системы. Пример для монтирования NFS папки через fstab показан ниже.
10.0.2.36:/srv/public /home/user/nfs   nfs    auto  0  0
  • Вывести на рабочий стол кнопку, для монтирования общего NFS ресурса. Может быть полезна если сервер NFS временно не доступен. Требуется наличие скрипт map, смотри.выше. Графическими средствами Альт Рабочая станция созидать ссылку на приложение. Для запуска команды mount требуются права администратора, которые можно получить используя gksu.
Вид: установить программу gksu.
Вид: установить программу gksu.

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

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

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

Возникает вопрос, как пользователь узнает о общем ресурсе NFS. Здесь вероятно надо воспользоваться способами автомонтирования которые приведены в статье. Служба autofs должна быть установлена на всех рабочих станциях — дополнительная нагрузка на администратора.

Установка, управление и контроль 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, привычный для пользователей Windows. Воспользоваться менеджером Dolphin для подключения к папке NFS, создав в дереве менеджера «Точку входа». Используя клавишу F6 записываем путь к общей папке NFS сервера.

Dolphin — файловый менеджер для работы в среде рабочих станций Linux KDE.

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

Инструментарий для 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
    • -h справочная информация

Заключение

В статье был рассмотрен вариант установка NFS сервера из коробки. В качестве базового сервера использовался ALT Linux в минимальной конфигурации. После установки, сервер NFS, готов к эксплуатации в качестве хранилища общих папок и документов с правами доступа на чтение. Если требуется доступ с правами записи к папке /srv/share и возникли трудности с Kerberos. Тогда можно скорректировать файл exports, как показано ниже. После чего необходимо выполнить реэкспорт каталогов сервера NFS

/srv/public -rw,insecure,no_subtree_check,fsid=1 *
#/srv/share -rw,insecure,fsid=0,sec=krb5 *
# exportfs -r

В заключение отметим, сервер NFS не предназеачен для передачи больших обьёмов информации. Основная задача — организация обшего доступа к папкам и файлам предприятия в режиме реального времени. Для обмена большими трафиками информации служит FTP сервер.

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