Возможность работы с NAS доступна только в версии VMmanager Infrastructure.

NAS (Network Attached Storage) — это сетевое хранилище, обеспечивающее доступ к данным на уровне файлов. NAS может быть использовано для хранения образов ВМ и связанных клонов. 

Ограничения NASLink to Ограничения NAS


Миграция ВМ c дисками в NAS доступна только в другое NAS или файловое хранилище.

GlusterFSLink to GlusterFS

Использование узлов кластера VMmanager в качестве узлов GlusterFS не поддерживается. Это может привести к:

  • снижению производительности ВМ и системы хранения данных из-за конфликтов доступа к ресурсам;
  • риску потери данных и снижению доступности хранилища из-за высокой нагрузки на сервер.

Логика работыLink to Логика работы


Чтобы подключить NAS к узлу кластера, на устройстве с NAS должна быть настроена NFS или кластерная файловая система. Кластерная файловая система — это система, которая может одновременно использоваться несколькими серверами. К таким системам относятся OCFS2, GlusterFS, CephFS, GFS2 и др. 

Для корректной работы используйте NFS версии не ниже 4.2.

Узлы кластера VMmanager получают доступ к NAS через примонтированную директорию, которая указывается при подключении хранилища.

Настройка файловой системыLink to Настройка файловой системы


В качестве примера рассматривается настройка NFS на серверах с ОС Astra Linux и AlmaLinux. Вы также можете использовать файловую систему на базе OCFS2, GlusterFS, CephFS или GFS2.

Astra LinuxLink to Astra Linux

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

Для установки и настройки NFS используйте инструкции из официальной документации Astra Linux. Настройку сервера выполните на сервере с хранилищем, настройку клиента — на узлах кластера.

При настройке конфигурационного файла /etc/exports укажите для разделяемого ресурса параметр no_root_squash:

Пример конфигурации

/srv/vmshare 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
CODE

Если на узлах кластера включена отказоустойчивость, для монтирования хранилища выполните команды: 

mount.nfs4 -o user,soft,timeo=5,retry=1 <NAS_IP>:/<NAS_DIR> /<NODE_DIR>
BASH
chmod -R 777 <NODE_DIR>
BASH

<NAS_IP> — IP-адрес хранилища

<NAS_DIR> — монтируемая директория на сервере хранилища

<NODE_DIR> — директория на узле кластера

Настройка клиента с помощью AnsibleLink to Настройка клиента с помощью Ansible

Вы можете автоматизировать настройку клиента NFS. Для этого запустите на каждом узле кластера Ansible-скрипт следующего содержания: 

Замените в скрипте IP-адрес 192.0.2.1 на IP-адрес хранилища.

---
- name: Настройка подключения NFS
  hosts: all
  become: true
  tasks:
    - name: Установить пакет nfs-common
      apt:
        name: nfs-common
        state: present
        update_cache: yes

    - name: Проверить, смонтирован ли NFS в /mnt/nfsshare
      command: mountpoint -q /mnt/nfsshare
      register: mountpoint_check
      ignore_errors: true

    - name: Создать каталог /mnt/nfsshare
      file:
        path: /mnt/nfsshare
        state: directory
        mode: '0755'
      when: mountpoint_check.rc != 0

    - name: Подключить NFS-ресурс
      mount:
        src: 192.0.2.1:/srv/vmshare
        path: /mnt/nfsshare
        fstype: nfs
        opts: defaults
        state: mounted
      when: mountpoint_check.rc != 0

    - name: Создать резервную копию файла /etc/fstab
      copy:
        src: /etc/fstab
        dest: /etc/fstab.bak
        remote_src: yes

    - name: Добавить запись в /etc/fstab
      lineinfile:
        path: /etc/fstab
        line: "192.0.2.1:/srv/vmshare /mnt/nfsshare nfs defaults 0 0"
        state: present
YAML

Подробнее о создании и запуске скриптов см. в статье Создание скрипта для узла.

AlmaLinuxLink to AlmaLinux

  1. На сервере хранилища:
    1. Создайте директорию для монтирования. Например, /mnt/nfsshare/

      mkdir -p /mnt/nfsshare
      BASH
    2. Установите права на доступ к директории: 

      chown nobody:nobody /mnt/nfsshare
      BASH
      chmod 777 /mnt/nfsshare
      BASH
    3. Установите серверное ПО NFS: 

      dnf update -y
      BASH
      dnf -y install nfs-utils
      BASH
    4. Запустите сервис и добавьте его в автозагрузку: 

      systemctl start nfs-server.service
      BASH
      systemctl enable nfs-server.service
      BASH
    5. Добавьте IP-адреса узлов кластера в конфигурационный файл /etc/exports. Для этого для каждого узла кластера выполните команду: 

      echo '/mnt/nfsshare <NODE_IP>(rw,sync,no_subtree_check,no_root_squash)' >> /etc/exports && exportfs -vra
      BASH

      <NODE_IP> — IP-адрес узла кластера

    6. Разрешите подключения NFS в настройках файрвола: 

      firewall-cmd --permanent --add-port=2049/tcp
      BASH
      firewall-cmd --reload
      BASH
  2. На узлах кластера: 

    1. Установите клиентское ПО NFS: 

      dnf -y install nfs-utils nfs4-acl-tools
      BASH
    2. Запустите сервис и добавьте его в автозагрузку: 

      systemctl start nfs-client.target
      BASH
      systemctl enable nfs-client.target
      BASH
    3. Создайте директорию, к которой будет примонтировано хранилище. Например, /mnt/nas/

      mkdir -p /mnt/nas
      BASH
    4. Примонтируйте хранилище: 

      Если в кластере отключена отказоустойчивость

      mount.nfs4 <NAS_IP>:/mnt/nfsshare /mnt/nas
      BASH

      Если в кластере включена отказоустойчивость

      mount.nfs4 -o user,soft,timeo=5,retry=1 <NAS_IP>:/mnt/nfsshare /mnt/nas && chmod -R 777 /mnt/nas
      BASH

      <NAS_IP> — IP-адрес хранилища

    5. Добавьте примонтированный раздел в автозагрузку. Для этого добавьте в файл /etc/fstab строку: 

      <NAS_IP>:/mnt/nfsshare        /mnt/nas       nfs rw,suid,dev,auto,nouser,sync    0 0
      CODE

      <NAS_IP> — IP-адрес хранилища

Может быть полезно

Связанные статьи: