Монтирование NFS на сервере Ubuntu 14.04
Ubuntu | Комментировать запись
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: NFS, Ubuntu 14.04