Монтирование NFS на сервере Ubuntu 14.04

NFS, или Network File System – это распределённый протокол файловой системы, позволяющий монтировать удалённые каталоги и использовать их как локальные. Таким образом можно использовать отдельное пространство для хранения файлов и обращаться к нему с нескольких удалённых серверов. NFS хорошо подходит для каталогов, которые должны быть доступны на регулярной основе.

Данное руководство поможет выполнить монтирование NFS на сервере Ubuntu 14.04.

Требования

В этом руководстве показано, как расшарить каталог между двумя серверами Ubuntu 14.04. На каждом сервере нужно создать аккаунт с правами sudo; подробнее об этом можно прочесть здесь.

Сервер, каталоги которого будут расшарены, в данной статье называется host; сервер, монтирующий эти каталоги, называется client. Им присвоены следующие IP-адреса:

  • Host: 1.2.3.4
  • Client: 111.111.111.111

Эти условные данные нужно заменять при выполнении инструкций своими данными.

Загрузка и установка компонентов

Для начала нужно установить на оба сервера все необходимые пакеты.

На сервер host нужно установить пакет nfs-kernel-server, который позволяет настраивать совместное использование каталогов. Не забудьте предварительно обновить список пакетов системы:

sudo apt-get update
sudo apt-get install nfs-kernel-server

После завершения установки перейдите на клиентский сервер.

На сервер client нужно установить пакет nfs-common, предоставляющий функции NFS без необходимости устанавливать серверные компоненты.

sudo apt-get update
sudo apt-get install nfs-common

Создание расшаренного каталога на сервере host

Теперь попробуйте расшарить два отдельных каталога между двумя серверами. Первым распределённым каталогом будет /home, в котором хранятся данные пользователей; второй – каталог общего назначения, который будет создан специально для NFS и называется /var/nfs.

Каталог /home уже существует, потому нужно создать только каталог /var/nfs.

sudo mkdir /var/nfs

Итак, теперь каталоги, предназначенные для совместного использования, почти готовы. Нужно только отладить права доступа к ним. Передайте права на эти каталоги системному пользователю по имени nobody и группе nogroup.

sudo chown nobody:nogroup /var/nfs

Обратите внимание: нужно изменить владельцев только каталога, специально предназначенного для совместного использования, /var/nfs. Изменение прав и владельцев каталога /home может повлечь за собой серьёзные проблемы на сервере host.

Экспортирование NFS

Каталоги полностью готовы, теперь нужно открыть конфигурационный каталог NFS и расшарить их.

Откройте файл в текстовом редакторе:

sudo nano /etc/exports

Файл содержит ряд комментариев, объясняющих функции и общую структуру каждой строки. Базовый синтаксис файла имеет такой вид:

directory_to_share       client(share_option1,...,share_optionN)

Создайте отдельную запись для каждого каталога, который нужно расшарить. Учитывая, что IP-адрес клиента – 111.111.111.111, запись будет иметь такой вид:

/home       111.111.111.111(rw,sync,no_root_squash,no_subtree_check)
/var/nfs    111.111.111.111(rw,sync,no_subtree_check)

Обратите внимание на опции в скобках:

  • rw: выдаёт клиенту права на чтение и запись в томе.
  • sync: прежде чем ответить, NFS будет записывать изменения на диск. Это делает среду более стабильной и последовательной, так как ответ отражает фактическое состояние удаленного тома.
  • no_subtree_check: предотвращает проверку поддерева (процесс проверки host-сервером доступности файла в экспортируемом дереве для каждого запроса). Это может вызвать много проблем в совместном использовании, например, если открытый на клиенте файл был переименован на сервере. Проверку поддерева рекомендуется отключить в большинстве случаев.
  • no_root_squash: по умолчанию NFS транслирует запросы от root-пользователя клиента не-root пользователю сервера, благодаря чему root-пользователь клиента не можетиспользовать файловую систему хозяина с теми же привилегиями. Данная директива блокирует эту функцию безопасности для некоторых совместно используемых ресурсов.

Внеся все изменения, сохраните и закройте файл.

Затем нужно создать таблицу NFS для хранения экспортированных данных совместно используемых каталогов.

sudo service nfs-kernel-server start

Эта команда откроет доступ к расшаренным каталогам всем настроенным клиентам.

Точки монтирования и монтирование удаленных каталогов

Итак, сервер host настроен и подготовлен к совместному использованию каталогов с клиентом. Теперь нужно настроить клиент.

Чтобы смонтировать удалённые каталоги, нужно создать несколько точек монтирования. Традиционно для этого используется /mnt; создайте в этом каталоге новый каталог nfs.

Фактически каталоги должны соответствовать их расположению на сервере host. Чтобы создать каждый такой каталог и все необходимые родительские каталоги, наберите следующее:

sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs

Теперь на клиенте есть место для хранения совместно используемых данных. Смонтируйте эти каталоги:

sudo mount 1.2.3.4:/home /mnt/nfs/home
sudo mount 1.2.3.4:/var/nfs /mnt/nfs/var/nfs

Эти команды выполнят монтирование каталогов сервера host и сервера client. Чтобы убедиться, что монтирование прошло успешно, проверьте дисковое пространство на клиенте.

df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda               59G  1.3G   55G   3% /
none                  4.0K     0  4.0K   0% /sys/fs/cgroup
udev                  2.0G   12K  2.0G   1% /dev
tmpfs                 396M  324K  396M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  2.0G     0  2.0G   0% /run/shm
none                  100M     0  100M   0% /run/user
1.2.3.4:/home          59G  1.3G   55G   3% /mnt/nfs/home

Обратите внимание: в конце вывода указан только один расшаренный каталог. Это происходит потому, что оба расшаренных каталога находятся в одной файловой системе на удалённом сервере, а значит – используют один пул хранения. Чтобы не засорять столбцы Avail и Use%, в вычислениях учитывается только один совместно используемый ресурс.

Чтобы просмотреть все смонтированные в NFS ресурсы, введите:

mount -t nfs
1.2.3.4:/home on /mnt/nfs/home type nfs (rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)
1.2.3.4:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)

Это выведет на экран все смонтированные в NFS каталоги, доступные на текущей машине.

Тестирование доступа NFS

Чтобы убедиться, что всё работает должным образом, создайте тестовый файл в одном из расшаренных каталогов:

sudo touch /mnt/nfs/home/test_home

Создайте ещё один тестовый файл в другом расшаренном каталоге:

sudo touch /mnt/nfs/var/nfs/test_var_nfs

Просмотрите права на файл в смонтированном каталоге home:

ls -l /mnt/nfs/home/test_home
-rw-r--r-- 1 root   root      0 Apr 30 14:43 test_home

Как видите, файл принадлежит пользователю root. Это потому, что опция root_squash была ранее отключена (в противном случае файл принадлежал бы анонимному не-root пользователю).

Как помните, второй тестовый файл был смонтирован при включённой опции root_squash. Запросите права на файл:

ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 30 14:44 test_var_nfs

В данном случае файл принадлежит пользователю nobody и группе nogroup.

Автоматическое монтирование NFS

Чтобы настроить автоматическое монтирование каталогов, добавьте их в файл fstab на клиенте.

Откройте этот файл:

sudo nano /etc/fstab

В конец файла внесите записи для каждого смонтированного каталога:

1.2.3.4:/home    /mnt/nfs/home   nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
1.2.3.4:/var/nfs    /mnt/nfs/var/nfs   nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0

Примечание: Все использованные здесь опции можно найти на страницах мануала NFS, посвящённых файлу fstab:

man nfs

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

Демонтирование удалённых каталогов

Если файловая система больше не нуждается в удалённых каталогах, их можно демонтировать. Для этого нужно открыть смонтированный каталог и выполнить команду:

cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs

Это удалит смонтированные каталоги из файловой системы.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  320K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

Как видите, теперь доступных удалённых каталогов в файловой системе больше нет.

Заключение

NFS предоставляет быстрый и простой способ настройки сетевого доступа к удалённым каталогам. Однако имейте в виду: сам протокол не шифруется. При использовании NFS в производственной среде стоит рассмотреть варианты маршрутизации NFS через соединения SSH или VPN, чтобы обеспечить защиту данных.

Tags: ,

Добавить комментарий