4.3.6. Использование NFS

Сетевая файловая система – это реализация протокола распределенной файловой системы NFS. Она обеспечивает (совместное) использование удаленных каталогов по сети. Такие каталоги принято называть shared-ресурсами.

С помощью NFS удаленные каталоги монтируются в локальную файловую систему, что позволяет работать с файлами (shared-ресурсами) так же, как если бы они были локальными файлами.

Внимание.

Для работы протокола NFS в операционной системе узла должны быть установлены пакеты, содержащие службу (nfs-server) и сопутствующие библиотеки/утилиты [1].

Определите физическую ноду для установки серверной части и способ хостинга ресурсов сетевой файловой системы (ОС Linux). Рекомендуется выбрать ту же ОС, которая устанавливается на узлы облачной инфраструктуры.

Подключите узел к инфраструктурной сети и обеспечьте сетевую связность с управляющими узлами. Выполните установку ПО NFS на узле:

sudo dnf install nfs-utils

Выполните настройку экспорта ресурса (Раздел 4.3.6.1). После завершения редактирования параметров экспорта NFS-ресурса запустите системную службу nfs-server:

systemctl start nfs-server

Проверьте работоспособность подсистем NFS (Раздел 4.3.6.2) и включите автозагрузку службы (при старте ОС):

systemctl enable nfs-server

Сконфигурируйте бэкэнд на управляющем узле (Раздел 4.3.6.3).

Внимание.

Убедитесь, что (на УУ) установлены пакеты nfs-kernel-server и nfs-common. Оба пакета используются как сервером так и клиентом NFS.

4.3.6.1. Настройка экспорта (NFS-сервера)

Настройки NFS-сервера хранятся в файле конфигурации экспорта ресурсов NFS. Откройте этот файл (/etc/exports) в текстовом редакторе и отредактируйте. Используйте одну из команд:

vi /etc/exports
или
nano /etc/exports

Например, при настройке NFS-ресурса для хранения резервных копий Cinder файл exports должен содержать строку:

/home/cinder-backup *(rw,sync,no_root_squash,no_all_squash)

Смысловое значение параметров подключения директории, хранящеся в «домашней» файловой системе узла, в точку монтирования (/home/cinder-backup):

rw – доступ на чтение и запись (может принимать значение ro – только чтение);

sync – синхронный режим доступа (может принимать обратное значение – async):

sync - указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами;

async - указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных.

no_root_squash – запрет подмены uid/gid для суперпользователя (root).

По умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией снимается это ограничение;

all_squash / no_all_squash – установка подмены идентификатора от всех пользователей.

Варианты использования:

  • all_squash: подмена запросов от ВСЕХ пользователей (не только root) на анонимного uid/gid,либо на пользователя, заданного в параметре anonuid/anongid. Используется обычно для публичного экспорта директорий;
  • no_all_squash: запрет подмены uid/gid для от всех пользователей.

4.3.6.2. Монтирование раздела NFS

Когда планируется использование бэкэнда NFS (Раздел 4.3.6.3) службой образов (Glance), необходимо выполнить следующие действия:

  1. Обеспечить поддержку файловых систем, основанных на использовании NFS-сервера.
dnf install nfs-utils
  1. Проверить, загружен ли модуль ядра, обеспечивающий поддержку (nfs):

    cat /proc/filesystems | grep nfs
    

Если модуль (nfs) не отобразился в выводе, то необходимо его загрузить:

modprobe nfs
  1. Примонтировать общий ресурс (NFS-share) в точку монтирования:

    mount <IP-адрес_NFS-сервера>:/<shared-ресурс> /var/lib/glance/images
    

где:

<shared-ресурс> – название точки доступу к shared-ресурсу (сетевой папке).

Необходимо, чтобы директория /var/lib/glance и вложенные папки (images) были наделены правами доступа пользователя glance. Выполните команду:

ls -la /var/lib/glance

Если права не соответствуют требованию доступа (glance:glance), то выполните команду chown -R glance:glance /var/lib/glance.

Для проверки работы подсистем NFS рекомендуется загрузить файл образа (Раздел 4.4) и дождаться завершения операции [2]:

glance image-list

Примечание.

В случае, если общий ресурс не удаётся примонтировать, подключитесь к узлу, разделяющему ресурс с помощью NFS-сервера, и уточните содержимое файла /etc/exports [3].

4.3.6.3. Конфигурирование бэкэнда NFS

Конфигурирование бэкэнда NFS выполняется на УУ.

Пропишите параметры настройки бэкэнда в секциях [DEFAULT] и [nfs], как показано ниже [4]:

[DEFAULT]

enable_backends = nfs

[nfs]

volume_backend_name = nfs
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_mount_point_base = /var/lib/cinder/mnt
nas_host = <IP-адрес_NFS-сервера>
nas_share_path = <экспорт_NFS-сервера>
nas_secure_file_operations = False
nas_secure_file_permissions = False
nas_option = False
nfs_snapshot_support = True
image_upload_use_cinder_backend = True
image_upload_use_internal_tenant = True

Укажите в параметре „nas_host=“ IP-адрес сервера NFS и в параметре „nas_share_path=“ путь к директории экспорта (Раздел 4.3.6.1).

При использовании бэкэнда Cinder для хранения образов необходимо скорректировать найстроку сервиса Glance. Для этого в файле reference/k8s/glance/glance-api.conf блок параметров в секции [glance_store] должен выглядеть следующим образом:

[glance_store]

stores = cinder
default_store = cinder
cinder_volume_type = nfs
cinder_catalog_info = volumev2:cinderv2:publicURL
cinder_store_auth_address = https://keystone.test.tionix.ru:5000/v3/
cinder_store_user_name = cinder
cinder_store_password = пароль
cinder_store_project_name = service
rootwrap_config = /etc/glance/rootwrap.conf

Разграничение volume type указывается, если настроено несколько хранилищ (бэкэндов). Для выбора использования бэкэнда по-умолчанию укажите параметр „default_volume_type“.

После изменений в конфигурации бэкэнда необходимо перезапустить связанные с ним системные службы. Выполните команду:

systemctl restart openstack-cinder-*

Сноски

[1]https://baks.dev/article/centos/how-to-install-and-configure-an-nfs-server-on-centos-8
[2]https://docs.openstack.org/glance/victoria/admin/manage-images.html
[3]https://linux.die.net/man/5/exports, https://losst.ru/nastrojka-nfs-v-ubuntu-16-04
[4]https://docs.openstack.org/ocata/config-reference/block-storage/config-options.html