Рассказываем как быстро и просто поднять свой NFS сервер на Ubuntu Linux Server 14-04.1, а также разберёмся с принципами работы протокола NFS и рассмотрим теорию.
Теория
Аббревиатура NFS расшифровывается как Need for Speed - Network File System. Это протокол для доступа к распределённым сетевым файловым системам, с помощью которого можно подмонтировать удалённые директории к своему серверу. Это позволяет использовать дисковое пространство другого сервера для хранения файлов и регулярно производить запись данных на него с нескольких серверов.
Протокол имеет клиент-серверную модель, то есть один сервер (ещё его называют “шара” от слова share), с установленным пакетом NFS, будет обеспечивать доступ к своим каталогам и файлам, а клиентские компьютеры будут подключаться к нему по сети. Закрепим прочитанное схемкой:
Обращения к серверу NFS осуществляются в виде пакетов протокола RPC (Remote Call Procedure), который позволяет выполнить различные функции или процедуры в другом сетевом пространстве, то есть на удалённом сервере.
Авторизация пользователей, которые подключаются к серверу осуществляется по IP-адресу, а также по специальным идентификаторам пользователя UID и группы GID. Это не лучший способ относительно безопасности хранимых файлов, в сравнении с классической моделью «логин/пароль». Зато, благодаря такой архитектуре и тому, что NFS использовал протокол UDP без установления сессии, он практически невосприимчив к сбоям сети и самих клиентских компьютеров. Так, при каком-либо сбое, передача файла просто приостановится, а когда связь будет налажена, то передача возобновиться без необходимости какой-либо перенастройки.
Настройка
Думаю, с теорией понятно, так что давайте переходить к практике. Как было сказано, все настройки будет проводить на Ubuntu 14.04.1
Прежде всего, на компьютер, который будет выступать в роли сервера NFS, нужно установить необходимые компоненты.
Итак, скачиваем пакет nfs-kernel-server
, с помощью которого мы сможем раздать доступ (“расшарить”) директории. Для этого на будущем NFS сервере вводим команды:
sudo apt-get update sudo apt-get install nfs-kernel-server
Теперь создаём собственно директорию к которой хотим раздать доступ. Стоит отметить, что можно также “расшарить” уже имеющиеся на сервере директории, но мы создадим новую:
sudo mkdir /var/nfs
Далее мы должны сделать так, чтобы владельцем директории /var/nfs
и группе, к которой он принадлежит стали все пользователи в нашей системе. Для этого вводим на сервере команду:
sudo chown nobody:nogroup /var/nfs
Вводите эту команду только для тех директорий, которые создали сами, не надо вводить её для уже имеющихся директорий, например /home .
Следующим шагом необходимо изменить конфигурацию самого NFS, она лежит в файле /etc/exports
, открываем его для редактирования любимым редактором:
sudo nano /etc/exports
Перед вами откроется конфигурационный файл с закомментированными строками, которые содержат примеры настройки для разных версий NFS.
Закомментированные – это те, в начале которых стоит символ #, и это значит, что параметры, указанные в них, не имеют силы.
Нам необходимо внести в этот файл следующие не закомментированные строки:
/var/nfs 10.10.0.10/24(rw,sync,no_subtree_check)
Где:
- /var/nfs - Директория, которую мы хотим расшарить
- 10.10.0.10 - IP-адрес и маска клиентского компьютера, которому нужно раздать доступ к директории
- rw - Разрешает клиенту читать (r) и записывать (w) файлы в директории
- sync - Этот параметр заставляет NFS записывать изменения на диск перед ответом клиенту.
- no_subtree_check - Данная опция отключает проверку того, что пользователь обращается именно к файлу в определённом подкаталоге. Если это проверка включена, то могут возникнуть проблемы, когда, например, название файла или подкаталога было изменено и пользователь попробует к ним обратиться.
После этого, нужно создать таблицу соответствия расшаренных директорий и клиентов, а затем запустить NFS сервис. Для этого вводим следующие команды:
sudo exportfs –a sudo service nfs-kernel-server start
После выполненных действий расшаренные директории должны стать доступными для доступа с клиентов.