Введение.
Сервер NFS1 является необходимым приложением при построении цифрового офиса на базе ОС Linux. С его помощью можно организовать совместное использование файловых ресурсов в организации. Кроме Linux, протокол NFS применяется в MS Windows2. Используя NFS пользователи объединяют рабочие станции Linux и Windows для совместного доступа к папкам и файлам организации. Ещё одно использование NFS — построение бездискового доступа, в качестве тонкого клиента3.
Подготовка.
- Стенд:
- ALT Linux, имя: lin-nfs, IP 10.0.2.36;
- ALT Simply Linux, имя: lin-sl, IP=10.0.2.33;
- пользователь — user
Прежде чем перейти к развёртыванию NFS, как приложения, нам понадобится базовый сервер Linux, минимальной конфигурации.
Для работы хранилища NFS выделим отдельное устройство, что повысит безопасность, надёжность и гибкость при авариях и сбоях.
Установка сервера NFS.
Необходимые пакеты для работы сервера NFS.
# apt-get update
# apt-get install nfs-server4
Запуск и управление сервером NFS.
Команды управления.
# systemctl |start|stop|restart|status|enable|is-enabled nfs
Запуск и автозагрузка.
# systemctl start nfs
# systemctl enable nfs
Проверка работы сервера NFS.
Смотрим порт отвечающий за NFS службу.
# rpcinfo -p | grep nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
Файл exports.
Файл конфигурации, /etc/exports5 указывает пути монтирования каталогов NFS и создаётся при установке. Синтаксист содержимого exports6 показано ниже.
# vim /etc/exports
....
/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 служит для широковещательной трансляции в сети работы прокола NFS и других похожих служб. Архив avahi включает в себя пакет zeroconf7.
Установка и управление Avahi-daemon.
# apt-get update
# apt-get install avahi-daemon
# systemctl start avahi-daemon
# systemctl enable avahi-daemon
Команды управления avahi-daemon.
# systemctl start|enable|stop|restart|status avahi-daemon
Конфигурация NFS.
Трансляция в сети NFS папки происходит через файл настроек, расположенном в каталоге /etc/avahi/services. Создадим файл nfs.sevices8 где объявим о ресурсе(папке), которая появится при сканировании сетевого ландшафта организации.
Путь к файлу nfs.service.
# vim /etc/avahi/services/nfs.service
Стендовый пример синтаксиста файла nfs-service.
<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>
В приведённом выше примере объявлена общая папка public и путь её монтирования при удалённом доступе.
Для каждой папки NFS создаётся отдельный файл name.service
Перегружаем службу.
# systemctl restart avahi-daemon
Проверяем «видимость» созданной папки и службы NFS.
$ avahi-browse -tkrp _nfs._tcp
В ответ появляется строка(и) поиска папок NFS вашей сети.
...
;wlp2s0;IPv4;public;_nfs._tcp;local;lin-nfs,.local;10.0.2.36;2049;"options=hard,intr,nolock,ro" "sec=sys" "path=/srv/public/"
...
Клиент NFS.
Клиентская часть служит для обнаружения и обслуживания NFS папок. Присоединить папку к локальному устройству можно используя консольную часть клиента NFS9 или с помощью графического менеджера рабочего стола Linux.
Консольный клиент.
Проверить работу консольного клиента можно находясь на сервере, где работает демон и клиент NFS. Для демонстрации создадим папку /home/nfs. Поместим в рабочий NFS каталог /srv/public файл trest.txt. С помощью утилиты mount10 смонтируем систему, как показано ниже.
# mkdir /home/nfs
# vim /srv/public/test.txt
# mount -t nfs lin-nfs:/srv/public /home/nfs
Смонтированные папки смотрим с помощью команды.
# mount | grep nfs
Утилита nfsiostat 11 позволяет получить статистику NFS.
# apt-get update
# apt-get install nfs-stats
# nfsiostat
# lin-nfs:/srv/public mounted on /home/nfs:
ops/s rpc bklog
0.051 0.000
...
Запустив оболочку MC12 убедимся в наличие тестового файла в каталоге /home/nfs.
Команда grep nfs и nfsiostat показывают статистику NFS папок смонтированных через утилиту mount.
![](https://kabtim.ru/wp-content/uploads/2024/06/nfs-1.webp)
Всё работает, но у нас ещё имеется закомментированная строка в файле exports. Прежде чем использовать её необходимо настроить на домене, обслуживающий NFS сервер, авторизацию Kerberos13. Пока обойдёмся, без Kerberos, ограничимся классической14 схемой безопасности в UNIX системах. Оставим всё, как есть. В дальнейшем создадим группы пользователей, разграничив их права на каждую папку NFS.
Графический клиент.
Графический режим позволяет быстро и наглядно монтировать папки NFS с помощью закладок менеджера15 рабочего стола Linux. Для этого на рабочей станции необходимо проверить или установить клиент NFS. По умолчанию, как правило, установлен проверяем с помощью Synaptic.
![Менеджера пакетов Synaptic и nfs-clients.](https://kabtim.ru/wp-content/uploads/2024/06/nfs1.webp)
Теперь переходим в окно графического менеджера Xfce и щёлкаем кнопку «Обзор сети» из списка выбираем папку Public как показано ниже.
![](https://kabtim.ru/wp-content/uploads/2024/07/nfs2-1024x296.webp)
![](https://kabtim.ru/wp-content/uploads/2024/07/nfs1_0-1024x303.webp)
![](https://kabtim.ru/wp-content/uploads/2024/07/nfs2_1-1024x308.webp)
Авто монтирование NFS папки.
После настройки сервера NFS пользователь может, смонтировав общий ресурс, приступить к работе с документами. Выполнять операцию монтирования приходится каждый раз при включении ПК. Это не удобно и утомительно. Автоматизировать подключение папки возможно несколькими ниже перечисленными способами:
Способы монтирования.
1. Создать скрипт, имя map17, поместить в папку /usr/local/bin, назначить cron18 задачу выполнения сценария при включении ПК.
Скрипт map.
#!/bin/bash
mount lin-nfs:/sev/public /home/user/nfs
Синтаксис сценария cron.
# 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
2. Создать в таблице разделов /etc/fstab19 запись о монтируемой системе.
Пример синтаксиса записи монтирования NFS папки в файле fstab.
....
10.0.2.36:/srv/public /home/user/nfs nfs auto 0 0
...
3. Создать закладку в менеджере файлов Xfce. Это один из самых красивых способов держать общею папку NFS под «рукой». Достигается простыми манипуляциями мышки, как показано ниже.
![Создать закладку для папки NFS.](https://kabtim.ru/wp-content/uploads/2024/07/nfs3-1024x354.webp)
![Создать закладку для папки NFS.](https://kabtim.ru/wp-content/uploads/2024/07/nfs4-1024x481.webp)
Теперь, когда создана закладка, в менеджере Xfce будет постоянно присутствовать ссылка на общий NFS ресурс.
Время подключения NFS папки.
Текст приводимый ниже носит информативный характер для администраторов.
Для контроля времени использования общей папки служит утилита autofs20. Задача autofs — контролировать службу automount21 и время подключения и отключения при простое. Этим экономится полоса пропускания сети, обеспечивается высокая производительность канала и CPU ПК.
Развёртывание и управление autofs22 приводится ниже.
# 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 -t23 60
Создаём в каталоге /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 сервера.
Основное применение autofs — эксплуатация службы тонкого клиента.
Инструментарий для NFS.
В качестве инструмента контроля работы протокола NFS применяются утилиты showmount, exportfs, nfsstat и др. входящие в пакет nfs.
- showmount — вывод информации о состоянии сервера NFS.
- — d показывает каталоги
- — e список экспорта сервера NFS
$ showmount -a
All mount points on lin-nfs:
10.0.2.33:/srv/public
- nfsstat — вывод статистики работы NFS и RPC24
- -v подробная информация
- -r RPC статистика
- -n NFS статистика
- -l печатает статистику в формате списка
# nfsstat
Server rpc stats:
calls badcalls badfmt badauth badclnt
0 0 0 0 0
- exportfs — выводит таблицу экспорта каталогов для клиентов
- -v подробная информация
- -r реэкспортировать все каталоги после редактирования
- -u отменить экспорт каталога пример /srv/public
- -a отправляет полученные записи экспорта в ядро
# exportfs
/srv/public
Заключение
В статье рассмотрен вариант установка NFS сервера из коробки для специалистов и начинающих администраторов. В качестве базового сервера использовался ALT Linux в минимальной конфигурации. Если все действия выполнены правильно, сервер NFS готов к эксплуатации в качестве хранилища общих папок и документов с правами доступа на чтение. Когда требуется доступ с правами записи к папке /srv/share, и возникли трудности с Kerberos, можно скорректировать файл exports, как показано ниже.
Используя rw, проверить права доступа пользователей и групп к общей папке NFS.
/srv/public -ro,insecure,no_subtree_check,fsid=1 *
/srv/share -rw,insecure,no_subtree_check,fsid=0 *
# /srv/share -rw,insecure,fsid=0,sec=krb5 *
Выполнить реэкспорт каталогов на сервере NFS.
# exportfs -r
Полезные ссылки.
Сноски.
- NFS — Network File System, протокол сетевого доступа к файлам системы ↩︎
- необходимо установить NFS клиент ↩︎
- компактный и бесшумный компьютер без жесткого диска ↩︎
- пакет содержит: nfs-clients, nfs-server, nfs-utils ↩︎
- путь к файлу /etc/exports ↩︎
- файл хранится в каталоге /etc ↩︎
- Zero Configuration Networking — обеспечивает выбор сетевого адреса устройства, нахождение ПК по имени, обнаружение сервисов, например принтеров. ↩︎
- название nfs носит стендовое имя ↩︎
- утилита mount ↩︎
- полностью команда mount для nfs выглядит: mount -t nfs. ↩︎
- отображает статистику операций ввода/вывода в файловых системах NFS ↩︎
- файловый менеджер Midnight Commander. ↩︎
- сетевой протокол аутентификации, позволяющий передавать данные через незащищённые сети для безопасной идентификации ↩︎
- имеется в виду модель разрешений прав доступа Linux ↩︎
- популярные менеджеры GNOME, KDE, LXDE, MATE, Xfce, Dolphin… ↩︎
- Synaptic — графический менеджер пакетов. ↩︎
- стендовое имя ↩︎
- планировщик задач для Linux ↩︎
- fstab является системным файлом, любая неточность может привести к краху ПК ↩︎
- вносить изменения в настройки autofs может только пользователь с правами админа ↩︎
- программа autmount выполняет настройку точек монтирования для autofs ↩︎
- настройки autofs не требуют дополнительных усилий после развёртывания ПК ↩︎
- t- время ожидания бездействия сек. ↩︎
- RPC (remote procedure call) — протокол определяет формат всех взаимодействий между клиентом и сервером. Каждый запрос NFS посылается как пакет RPC ↩︎