Особенности файловой технологии хранения

Файловая технология хранения позволяет хранить образы дисков в виде файла. В качестве системы хранения данных (СХД) может выступать локальное хранилище сервера (например, специально выделенное блочное устройство) или внешнее хранилище. В ПК СВ поддерживаются внешние хранилища, построенные на таких технологиях, как NAS и SAN:

  • NAS (Network Attached Storage – сетевое хранилище данных) обеспечивает доступ к данным на уровне файлов; 
  • SAN (Storage Area Network – сеть хранения данных) обеспечивает доступ к данным на уровне блочных устройств.

Файловая технология хранения подразумевает, что подключенные системы хранения данных размечены с использованием одной из файловых систем.

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

  • распределения операций ввода-вывода между серверами хранения данных;
  • обеспечения непрерывности обслуживания.

Образы сохраняются в соответствующий каталог хранилища (по умолчанию /var/lib/one/datastores/<идентификатор_хранилища>). Для каждой ВМ создается каталог с названием по идентификационному номеру ВМ в соответствующем системном хранилище. В данных каталогах содержатся диски ВМ и дополнительные файлы, например, файлы контрольных точек или файлы снимков.

Создание и настройка системы хранения данных

При настройке внешнего хранилища необходимо руководствоваться инструкциями производителя оборудования.

Пример подключения внешнего хранилища SAN по протоколу iSCSI

В данном примере описан процесс настройки сервера, предоставляющего блочные данные по протоколу iSCSI (программная СХД). Сетевые блочные устройства (iSCSI-target), предоставляемые этим сервером, будут подключены в качестве локальных блочных устройств на другом сервере (iSCSI-initiator).

В данном примере представлены минимально необходимые настройки.

Особенности использования SAN в ПК СВ

SAN обеспечивает предоставление блочных устройств посредством сетевых протоколов, таких как Fibre Channel или iSCSI. Для доступа к определенному сетевому блочному устройству используется специализированный адрес этого устройства – LUN (Logical Unit Number – номер логического устройства).

Для организации хранения в ПК СВ требуется выделение как минимум 2 LUN (один – для хранилища образов, второй – для системного хранилища). Эти LUN должны быть презентованы каждому серверу - фронтальным машинам и узлам виртуализации.

Настройки сервера, предоставляющего блочные устройства (iSCSI-target)

  1. Вывести перечень блочных устройств:

    lsblk
    Пример вывода после выполнения команды:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1  3,9G  0 rom 
    sda    252:0    0   12G  0 disk
    ├─sda1 252:1    0   11G  0 part /
    ├─sda2 252:2    0    1K  0 part
    └─sda5 252:5    0  975M  0 part [SWAP]
    sdb    252:16   0   24G  0 disk
    sdc    252:32   0   24G  0 disk
    CODE

    где:

    • sda – диск для размещения файлов ОС;
    • sdb и sdc – диски для эмуляции сетевых блочных устройств.
  2. Установить консоль управления Linux-IO Target (пакет targetcli-fb):

    sudo apt install targetcli-fb

  3. Войти в консоль управления Linux-IO Target командой:

    sudo targetcli

  4. В консоли управления вывести текущую конфигурацию командой:

    ls
    Пример вывода после выполнения команды:

    /> ls
    o- / ..................................................................................................... [...]
       o- backstores ......................................................................................... [...]
        | o- block ............................................................................ [Storage Objects: 0]
        | o- fileio ........................................................................... [Storage Objects: 0]
        | o- pscsi ............................................................................ [Storage Objects: 0]
        | o- ramdisk .......................................................................... [Storage Objects: 0]
        o- iscsi ...................................................................................... [Targets: 0]
        o- lo.......................................................................................... [Targets: 0]
        o- vhost ...................................................................................... [Targets: 0]
    CODE
  5. Создать (зарегистрировать) блочное устройство в разделе /backstores/block командой:

    /backstores/block create <наименование_устройства> /dev/<блочное_устройство>

    В наименовании устройства могут использоваться любые печатные символы, за исключением символов кириллицы .

    Пример

    Регистрация блочного устройства /dev/sdb, при этом ему будет присвоено условное именование storage01:

    /backstores/block create storage01 /dev/sdb

    Пример вывода после выполнения команды:

    Created block storage object storage01 using /dev/sdb.
    CODE

  6. Аналогичным образом добавить необходимое количество блочных устройств.
  7. Проверить результат командой ls. Пример вывода после выполнения команды:

    /> ls
    o- / ................................................................................................. [...]
    o- backstores ........................................................................................ [...]
    | o- block ............................................................................ [Storage Objects: 1]
    | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated]
    | o- fileio ........................................................................... [Storage Objects: 0]
    | o- pscsi ............................................................................ [Storage Objects: 0]
    | o- ramdisk .......................................................................... [Storage Objects: 0]
    o- iscsi ...................................................................................... [Targets: 0]
    o- loopback ................................................................................... [Targets: 0]
    o- vhost ...................................................................................... [Targets: 0]
    CODE
  8. Создать цель (iSCSI-target) в разделе /iscsi командой:

    /iscsi create
    Пример вывода после выполнения команды:

    Created target iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709.
    Created TPG 1. Global pref auto_add_default_portal=true
    Created default portal listening on all IPs (0.0.0.0), port 3260.
    CODE

    Для каждого блочного устройства можно назначить несколько целей (iSCSI-target) – чтобы разграничить доступ для разных групп серверов-инициаторов (iSCSI-initiator).

  9. Проверить результат командой ls. Пример вывода после выполнения команды:

    /> ls
    o- / ..................................................................................................... [...]
       o- backstores ......................................................................................... [...]
        | o- block ............................................................................ [Storage Objects: 1]
        | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated]
        | o- fileio ........................................................................... [Storage Objects: 0]
        | o- pscsi ............................................................................ [Storage Objects: 0]
        | o- ramdisk .......................................................................... [Storage Objects: 0]
        o- iscsi ...................................................................................... [Targets: 1]
        | o- iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709 ................................... [TPGs: 1]
          | o- tpg1 ......................................................................... [no-gen-acls, no-auth]
            | o- acls .................................................................................... [ACLs: 0]
            | o- luns .................................................................................... [LUNs: 0]
            | o- portals .............................................................................. [Portals: 1]
              | o- 0.0.0.0:3260 ............................................................................... [OK]
        o- loopback ................................................................................... [Targets: 0]
        o- vhost ...................................................................................... [Targets: 0]
    CODE
  10. Создать LUN на основе блочного устройства, зарегистрированного в разделе /backstores/block (см. шаг 5) командой:

    /iscsi/<идентификатор_цели>/tpg1/luns/ create /backstores/block/<наименование_устройства>

    Пример

    /iscsi/iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709/tpg1/luns/ create /backstores/block/storage01

    Пример вывода после выполнения команды:

    Created LUN 0.
    CODE
  11. Проверить результат командой ls. Пример вывода после выполнения команды:

    /> ls
    o- / ..................................................................................................... [...]
       o- backstores ......................................................................................... [...]
        | o- block ............................................................................ [Storage Objects: 1]
        | | o- storage01 ............................................... [/dev/sdb (24.0GiB) write-thru deactivated]
        | o- fileio ........................................................................... [Storage Objects: 0]
        | o- pscsi ............................................................................ [Storage Objects: 0]
        | o- ramdisk .......................................................................... [Storage Objects: 0]
        o- iscsi ...................................................................................... [Targets: 1]
        | o- iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709 ................................... [TPGs: 1]
        |   o- tpg1 ......................................................................... [no-gen-acls, no-auth]
        |     o- acls .................................................................................... [ACLs: 0]
        |     o- luns .................................................................................... [LUNs: 0] 
        |     | o- lun0 ............................................ [block/storage01 (/dev/sdb) (default_tg_pt_gp)]
        |     o- portals .............................................................................. [Portals: 1]
        |       o- 0.0.0.0:3260 ............................................................................... [OK]
        o- loopback ................................................................................... [Targets: 0]
        o- vhost ...................................................................................... [Targets: 0]
    CODE
  12. Выполнить настройку контроля доступа к цели (iSCSI-target):

    • если контроль доступа не требуется, то его можно отключить командами:

      cd /iscsi/<идентификатор_цели>/tpg1

      set attribute generate_node_acls=1

      set attribute demo_mode_write_protect=0

    • для предоставления доступа определенному серверу-инициатору (iSCSI-initiator) к цели (iSCSI-target) необходимо в список доступа (ACL) добавить идентификатор инициатора, который хранится в файле /etc/iscsi/initiatorname.iscsi на сервере-инициаторе (см. шаг 3 настройки iSCSI-initiator). Для этого следует выполнить команды:

      cd /iscsi/<идентификатор_цели>/tpgt1/acls

      create <идентификатор_инициатора>

      Пример

      cd /iscsi/iqn.2003-01.org.linux-iscsi.storage.x8664:sn.4668ea6d5709/tpgt1/acls
      create iqn.1993-08.org.debian:01:c1a92326f6b8

      Пример вывода после успешного выполнения команды create:

      Created Node ACL for iqn.1993-08.org.debian:01:c1a92326f6b8
      Created mapped LUN 0.
      CODE
  13. Повторить шаги 8 – 12 для добавления необходимого количества LUN.
  14. Выполнить сохранение настроек:

    / saveconfig
    Пример вывода после выполнения команды:

    Last 10 configs saved in /etc/rtslib-fb-target/backup.
    Configuration saved to /etc/rtslib-fb-target/saveconfig.json
    CODE
  15. Выйти из консоли управления:

    exit

В консоли управления Linux-IO Target версии 2.1.48-2 введена система бэкапов конфигурации. В связи с этим, после перезагрузки сервера сохраненная конфигурация не загружается автоматически. На текущий момент после перезагрузки сервера конфигурацию необходимо восстанавливать командой:

sudo targetcli restoreconfig

Пример вывода после выполнения команды:

Configuration restored from /etc/rtslib-fb-target/saveconfig.json
CODE

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

  1. Создать службу target, сформировав unit-файл, например с помощью тестового редактора nano, для этого выполнить команду:

    sudo nano /lib/systemd/system/target.service
    В открывшемся текстовом редакторе добавить следующие строки:

    [Unit]
    Description=Restore LIO kernel target configuration
    Requires=sys-kernel-config.mount
    After=sys-kernel-config.mount network.target local-fs.target
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/targetctl restore
    ExecStop=/usr/bin/targetctl clear
    SyslogIdentifier=target
    [Install]
    WantedBy=multi-user.target
    CODE

    После этого сохранить unit-файл и закрыть текстовый редактор.

  2. Перезагрузить список служб командой:

    sudo systemctl daemon-reload

  3. Добавить службу target в автозагрузку командой:

    sudo systemctl enable target
    Пример вывода после выполнения команды:

    Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /lib/systemd/system/target.service.
    CODE
  4. Для проверки следует перезагрузить сервер и вывести информацию о состоянии службы target:

    sudo systemctl status target

    Пример вывода после выполнения команды:

    ● target.service - Restore LIO kernel target configuration
       Loaded: loaded (/lib/systemd/system/target.service; enabled; vendor preset: enabled)
       Active: active (exited) since Mon 2023-03-20 16:28:26 MSK; 9min ago
      Process: 577 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS)
     Main PID: 577 (code=exited, status=0/SUCCESS)
    CODE

Настройки сервера (iSCSI-initiator), которому презентованы сетевые блочные устройства

Действия описанные в этом пункте, должны быть выполнены на всех серверах - фронтальных машинах и узлах виртуализации.
  1. Установить пакет open-iscsi командой:

    sudo apt install open-iscsi

  2. Настроить автоматическое подключение LUN при перезагрузке сервера. Для этого в конфигурационном файле /etc/iscsi/iscsid.conf для параметра node.startup установить значение automatic:

    node.startup = automatic
    CODE
  3. Запустить службу клиента (iSCSI-initiator) командой:

    sudo systemctl start iscsi

    После первого запуска сервиса будет сгенерирован уникальный идентификатор инициатора, который можно просмотреть в файле /etc/iscsi/initiatorname.iscsi.

    Пример

    InitiatorName=iqn.1993-08.org.debian:01:c1a92326f6b8
    CODE

    Если для цели (iSCSI-target) настроен контроль доступа, то уникальный идентификатор инициатора необходимо добавить в список доступа (ACL) цели (iSCSI-target) – см. шаг 12 настройки iSCSI-target.

  4. Выполнить сканирование для поиска целей (iSCSI-target):

    sudo iscsiadm -m discovery -t st -p <IP-адрес_цели>
    где <IP-адрес_цели> – IP-адрес узла, предоставляющего доступ к блочному устройству.
    Пример вывода после успешного выполнения команды:

    192.168.55.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 
    192.168.55.41:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098
    CODE
  5. Подключить найденную цель (iSCSI-target):

    sudo iscsiadm -m node -T <идентификатор_цели> -p <IP-адрес_цели> -l

    Пример

    sudo iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1 -p 192.168.55.41 -l

    Кроме того, можно автоматически подключить все найденные цели (iSCSI-target):

    sudo iscsiadm -m node -l
    Пример вывода после успешного выполнения команды:

    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 192.168.55.41,3260] (multiple)
    Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 192.168.55.41,3260] (multiple)
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.76c72e49ddc1, portal: 192.168.55.41,3260] successful.
    Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-target.x8664:sn.85eebbd1f098, portal: 192.168.55.41,3260] successful.
    CODE

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

    • sudo iscsiadm -m session --rescan

    • sudo iscsiadm -m session -P3

    Если после выполнения команды, указанной выше, ошибка не была устранена, необходимо перезапустить службу iscsi командой:

    sudo systemctl restart iscsi
    или перезагрузить сервер командой:
    sudo reboot

  6. Для проверки выполнить команду:

    lsblk
    Пример вывода после выполнения команды:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   24G  0 disk
    sdb      8:16   0   24G  0 disk
    sr0     11:0    1 1024M  0 rom 
    vda    252:0    0   64G  0 disk
    ├─vda1 252:1    0   63G  0 part /
    ├─vda2 252:2    0    1K  0 part
    └─vda5 252:5    0  975M  0 part [SWAP]
    CODE

    где в качестве локальных блочных устройств sda и sdb выступают сетевые блочные устройства.

Настройки ПК СВ для использования хранилища

Перед использованием подключенные блочные устройства (локальные или внешние) необходимо разметить (отформатировать) с использованием одной из файловых систем. Ниже представлены примеры форматирования блочных устройств sda и sdb, подключенных ранее, с использованием файловых систем OCFS2 и NFS.


Ограничения, связанные с функционированием файловой системы NFS

Сетевая файловая система NFS не поддерживает использование меток безопасности. Если планируется использование файловой системы NFS при построении облачного хранилища, функционирующего в мандатном контексте, то для ВМ следует установить уровень целостности, назначаемый по умолчанию, равным 0.

Если в ПК СВ, функционирующем в дискреционном режиме, планируется использовать файловую систему NFS, то на каждом узле виртуализации следует установить уровень целостности, назначаемый по умолчанию для ВМ, равным 0. Для этого необходимо выполнить действия, описанные ниже.

  1. Остановить службу libvirtd командой:

    sudo systemctl stop libvirtd.service

  2. В конфигурационном файле /etc/libvirt/libvirtd.conf, установить значение параметра ilev_vm равное 0.

    ilev_vm = 0
    
    CODE
  3. Запустить службу libvirtd командой:

    sudo systemctl start libvirtd.service

Пример использования кластерной файловой системы OCFS2

Особенности использования OCFS2 в ПК СВ

В ПК СВ кластерная файловая система OCFS2 используется для того, чтобы обеспечить доступ фронтальной машины и узла виртуализации к одним и тем же сетевым блочным устройствам. При этом все сервера (фронтальные машины и узлы виртуализации) объединяются в один кластер OCFS2 и выступают в роли узлов этого кластера.

Кластерная файловая система OCFS2, реализованная в ПК СВ, обеспечивает поддержку меток безопасности, но имеет ряд зафиксированных критических проблем функционирования.

В связи с этим использование OCFS2 на объектах эксплуатации не рекомендуется.

Создание кластера OCFS2

  1. На каждом узле кластера установить средства управления кластерной файловой системой OCFS2 командой:

    sudo apt install ocfs2-tools

  2. На одном из узлов кластера выполнить настройку кластера OCFS2:
    • создать кластер командой:

      sudo o2cb add-cluster <имя_кластера>

      Пример

      sudo o2cb add-cluster ocfs2cluster

      В результате выполнения команды будет создан файл конфигурации /etc/ocfs2/cluster.conf, если он отсутствует. 

    • последовательно добавить описание каждого узла кластера командой:

      sudo o2cb add-node <имя_кластера> <сетевое_имя_узла> --ip <IP-адрес_узла>

      Пример для кластера из трех узлов

      sudo o2cb add-node ocfs2cluster node1 --ip 192.168.55.11

      sudo o2cb add-node ocfs2cluster node2 --ip 192.168.55.12

      sudo o2cb add-node ocfs2cluster node3 --ip 192.168.55.13

      Сетевые имена узлов кластера должны быть точно такими, какими они указаны в файле /etc/hostname этих серверов.

  3. Просмотреть итоговый файл конфигурации, например, с помощью команды:

    cat /etc/ocfs2/cluster.conf
    Пример вывода после выполнения команды:

    cluster:
            name = ocfs2cluster
            heartbeat_mode = local
            node_count = 3
    node:
            name = node1
            cluster = ocfs2cluster
            number = 0
            ip_address = 192.168.55.11
            ip_port = 7777
    
    node:
            name = node2
            cluster = ocfs2cluster
            number = 1
            ip_address = 192.168.55.12
            ip_port = 7777
    
    node:
            name = node3
            cluster = ocfs2cluster
            number = 2
            ip_address = 192.168.55.13
            ip_port = 7777
    CODE
  4. На других узлах кластера выполнить следующие действия:
    • скопировать файл конфигурации /etc/ocfs2/cluster.conf с узла кластера, на котором была выполнена настройка конфигурации (шаги 2 – 4), в локальный каталог /etc/ocfs2/:

      sudo scp <локальный_администратор>@<IP-адрес_узла>:/etc/ocfs2/cluster.conf /etc/ocfs2/
      где:

      • <IP-адрес_узла> – IP-адрес узла кластера, на котором была выполнена настройка конфигурации;
      • <локальный_администратор> – имя локального администратора узла кластера, на котором была выполнена настройка конфигурации.
      В ходе выполнения команды необходимо:
      • при появлении запроса пароля для команды sudo – ввести пароль локального администратора узла кластера, на котором выполняется команда;
      • при появлении вопроса об установке соединения – ответить "yes" ("Да");
      • ввести пароль локального администратора узла кластера, с которого копируется файл конфигурации.
    • просмотреть полученный файл конфигурации, например, с помощью команды:

      cat /etc/ocfs2/cluster.conf
      Содержание файла конфигурации должно отражать выполненные ранее настройки. 

  5. После того, как файл конфигурации будет скопирован на другие узлы, на каждом узле кластера выполнить следующие действия:
    • запустить мастер настройки кластера OCFS2 командой:

      sudo dpkg-reconfigure ocfs2-tools
      В запустившемся мастере:

      • разрешить запускать кластер OCFS2 (O2CB) во время загрузки (нажать на кнопку [Да]);
      • задать имя кластера (для кластера в приведенных выше примерах: "ocfs2cluster") и нажать на кнопку [Ok];
      • для остальных параметров выбрать значения, установленные по умолчанию;
    • перезапустить службу o2cb командой:

      sudo systemctl restart o2cb

    • удостовериться в успешном запуске службы o2cb. Для этого просмотреть в журнале регистрации события, относящиеся к службе:

      sudo journalctl -u o2cb
      Пример вывода после выполнения команды:

      мар 23 09:40:58 oneserver.brest.local systemd[1]: Starting Load o2cb Modules...
      мар 23 09:40:58 oneserver.brest.local o2cb[20018]: checking debugfs...
      мар 23 09:40:58 oneserver.brest.local o2cb[20018]: Loading stack plugin "o2cb": OK
      мар 23 09:40:58 oneserver.brest.local o2cb[20018]: Loading filesystem "ocfs2_dlmfs": OK
      мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Creating directory '/dlm': OK
      мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Mounting ocfs2_dlmfs filesystem at /dlm: OK
      мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Setting cluster stack "o2cb": OK
      мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Registering O2CB cluster "ocfs2cluster": OK
      мар 23 09:40:59 oneserver.brest.local o2cb[20018]: Setting O2CB cluster timeouts : OK
      мар 23 09:40:59 oneserver.brest.local o2hbmonitor[20070]: Starting
      мар 23 09:40:59 oneserver.brest.local systemd[1]: Started Load o2cb Modules.
      CODE

Настройка режима global heartbeat

Для контроля исправности узла кластера используется специальный heartbeat-файл, в который узел кластера периодически записывает контрольную информацию. По умолчанию после инициализации кластера OCFS2 установлен режим local heartbeat. В этом режиме heartbeat-файл создается на каждом примонтированом сетевом блочном устройстве. При этом для каждого heartbeat-файла на узле кластера запускается процесс мониторинга, который обеспечивает выполнение операций чтения heartbeat-файла и записи в этот файл. При большом количестве примонтированных сетевых блочных устройств создается значительная нагрузка на вычислительные мощности узла кластера.

Режим global heartbeat подразумевает, что heartbeat-файл создается на специально выделенном сетевом блочном устройстве. Такой режим рекомендуется применять в случае, если количество сетевых блочных устройств, к которым организован совместный доступ, больше 50. 

Выделенное сетевое блочное устройство (далее по тексту – heartbeat-диск), на котором будет создан общий ("глобальный") heartbeat-файл, должно быть предварительно размечено (отформатировано) с использованием кластерной файловой системы OCFS2. Для этого на одном из узлов кластера необходимо выполнить команду:

sudo mkfs.ocfs2 -F --cluster-stack=o2cb --cluster-name=<имя_кластера> --global-heartbeat -L <метка> <блочное_устройство>

где:

  • аргумент --global-heartbeat означает, что в кластере настроен режим global heartbeat. Данная информация записывается в блок метаданных о кластере и должна присутствовать на всех отформатированных блочных устройствах, которые планируется монтировать на узлах кластера;
  • аргумент -F выключает проверку блочного устройства перед форматированием. Указанное блочное устройство не должно быть примонтировано ни на одном из узлов кластера. Однако, так как в аргументе команды указано, что в кластере настроен режим global heartbeat, такая проверка не может быть выполнена (на момент выполнения команды режим global heartbeat в кластере еще не настроен). 

Пример

sudo mkfs.ocfs2 --cluster-stack=o2cb --cluster-name=ocfs2cluster --global-heartbeat -F -L heartbeat-disk /dev/sda
Для проверки выполнить команду:
sudo mounted.ocfs2 -d

Пример вывода после выполнения команды:

Device    Stack  Cluster 	   F  UUID                              Label
/dev/sda  o2cb   ocfs2cluster  G  AA36F57B447E483D810DEC89BDEAB1C9  heartbeat-disk
CODE

где символ "G" в поле F (Flag) указывает на то, что блочное устройство настроено на работу в режиме global heartbeat.

Для настройки режима global heartbeat на всех узлах кластера необходимо выполнить действия, описанные ниже.

Допускается выполнить настройку на одном из узлов кластера. А затем, скопировать файл конфигурации /etc/ocfs2/cluster.conf на остальные узлы.

На всех узлах кластера файлы конфигурации /etc/ocfs2/cluster.conf должны быть идентичны.

  1. Задать режим в конфигурации кластера командой:

    sudo o2cb heartbeat-mode <имя_кластера> global

    Пример

    sudo o2cb heartbeat-mode ocfs2cluster global

  2. Записать информацию о heartbeat-диске в файл конфигурации:

    sudo o2cb add-heartbeat <имя_кластера> <блочное_устройство>
    где в качестве параметра <блочное_устройство> можно указать UUID подключенного блочного устройства.

    Пример

    Подключение в качестве heartbeat-устройства отдельного дискового устройства /dev/sda (UUID="AA36F57B447E483D810DEC89BDEAB1C9"):

    sudo o2cb add-heartbeat ocfs2cluster AA36F57B447E483D810DEC89BDEAB1C9

    Пример

    Ниже приведено содержание файла конфигурации после настройки режима global heartbeat.

    node:
            name = node1
            cluster = ocfs2cluster
            number = 0
            ip_address = 192.168.55.11
            ip_port = 7777
    
    node:
            name = node2
            cluster = ocfs2cluster
            number = 1
            ip_address = 192.168.55.12
            ip_port = 7777
    
    node:
            name = node3
            cluster = ocfs2cluster
            number = 2
            ip_address = 192.168.55.13
            ip_port = 7777
    
    cluster:
            name = ocfs2cluster
            heartbeat_mode = global
            node_count = 3
    
    heartbeat:
            cluster = ocfs2cluster
            region = AA36F57B447E483D810DEC89BDEAB1C9
    CODE
  3. Перезапустить службу o2cb командой:

    sudo systemctl restart o2cb

Если на узлах кластера были примонтированы сетевые блочные устройства, то после включения режима global heartbeat и перезапуска службы o2cb, они будут автоматически отмонтированы.

Для их последующего монтирования необходимо обновить метаинформацию о кластере, которая была записана на этих блочных устройствах при форматировании.

Для того, чтобы обновить метаинформацию о кластере, которая записана на блочном устройстве, необходимо на одном из узлов кластера выполнить команду:

sudo o2cluster -u <блочное_устройство>
При появлении приглашения для ввода следующего вида:

Changing the clusterstack from default to <метаинформация_о_кластере>. Continue?
CODE

необходимо ввести "y" ("Да") и нажать клавишу [Enter]

Пример вывода после успешного выполнения команды:

Updated successfully.
CODE

Разметка блочных устройств

Для того чтобы разметить (отформатировать) подключенное сетевое блочное устройство с использованием кластерной файловой системы OCFS2, на любом из узлов кластера необходимо выполнить команду:

sudo mkfs.ocfs2 -T vmstore <блочное_устройство>
где аргумент "-T" запускает автоматическую тонкую настройку параметров файловой системы. Параметр "vmstore" указывает, что тонкую настройку необходимо производить для обеспечения максимальной производительности при размещении на блочном устройстве файлов образов виртуальных машин.

Метаинформация о кластере (аргументы команды --cluster-stack=o2cb --cluster-name=<имя_кластера> и, при необходимости, --global-heartbeat) будет записана автоматически, при условии, что на узле кластера запущена служба o2cb.

Пример

sudo mkfs.ocfs2 -T vmstore /dev/sdb
Для того чтобы просмотреть перечень сетевых блочных устройств с кластерной файловой системой OCFS2, зарегистрированных в кластере, на любом из узлов кластера необходимо выполнить команду:
sudo mounted.ocfs2 -d

Пример вывода после выполнения команды:

Device    Stack  Cluster 	   F  UUID                              Label
/dev/sda  o2cb   ocfs2cluster  G  AA36F57B447E483D810DEC89BDEAB1C9  heartbeat-disk
/dev/sdb  o2cb   ocfs2cluster  G  EF8246A7E12842168B496FC123B469B2  
CODE

Если сетевое блочное устройство необходимо повторно форматировать, то его предварительно необходимо отмонтировать на всех узлах кластера. 

Для того чтобы просмотреть перечень сетевых блочных устройств с кластерной файловой системой OCFS2, примонтированных на узлах кластера, на любом из узлов кластера необходимо выполнить команду:

sudo mounted.ocfs2 -f

Пример вывода после выполнения команды:

Device    Stack  Cluster       F  Nodes
/dev/sda  o2cb   ocfs2cluster  G  Not mounted
/dev/sdb  o2cb   ocfs2cluster  G  node2, node3
CODE

где:

  • диск sda не примонтирован ни на одном из узлов кластера;
  • диск sdb примонтирован на узлах кластера: node2 и node3.

Пример использования файловой системы NFS

В представленном примере описан процесс настройки сервера NAS, предоставляющего общий доступ к каталогам, в которые смонтированы блочные устройства. Чтобы обеспечить общий доступ к каталогам, на сервере NAS будет настроена служба сервера NFS, а на фронтальной машине и узлах виртуализации – служба клиента NFS.

Дополнительная информация

Сетевая файловая система NFS

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

  1. Вывести перечень блочных устройств:

    lsblk
    Пример вывода после выполнения команды:

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0     11:0    1  3,9G  0 rom 
    sda    252:0    0   12G  0 disk
    ├─sda1 252:1    0   11G  0 part /
    ├─sda2 252:2    0    1K  0 part
    └─sda5 252:5    0  975M  0 part [SWAP]
    sdb    252:16   0   24G  0 disk
    sdc    252:32   0   24G  0 disk
    CODE

    где:

    • sda – диск для размещения файлов ОС;
    • sdb и sdc – диски для монтирования в каталоги с общим доступом.
  2. Создать файловую систему ext4 на блочном устройстве sdb:

    sudo mkfs.ext4 /dev/sdb
    Пример вывода после успешного выполнения команды:

    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    CODE
  3. Аналогичным образом создать файловую систему ext4 на блочном устройстве sdc.
  4. Создать каталоги, в которые будут смонтированы блочные устройства, например, /mnt/nfs-system и /mnt/nfs-images. Для этого последовательно выполнить команды:

    sudo mkdir /mnt/nfs-system

    sudo mkdir /mnt/nfs-images

  5. На каталоги назначить владельцем пользователя с UID равным 9869 (oneadmin). А в качестве группы-владельца – группу с GID равным 9869 (oneadmin). Для этого последовательно выполнить команды:

    sudo chown 9869:9869 /mnt/nfs-system

    sudo chown 9869:9869 /mnt/nfs-images

  6. Определить идентификаторы (UUID) блочных устройств командой:

    sudo blkid
    Пример вывода после выполнения команды:

    /dev/sda1: UUID="b5fd411a-4c96-491b-bfc0-b4e9e2670e9c" TYPE="ext4" PARTUUID="50741579-01"
    /dev/sda5: UUID="31daa40d-8e07-44cc-b851-d985f2121bb7" TYPE="swap" PARTUUID="50741579-05" 
    /dev/sdb: UUID="0bb98072-95ad-4042-bd33-7adf62102445" TYPE="ext4"
    /dev/sdc: UUID="093051cb-e9c2-4932-99a1-16cab2da8e1c" TYPE="ext4"
    CODE
  7. Настроить автоматическое монтирование блочных устройств в созданные ранее каталоги. Для этого в файл /etc/fstab добавить следующие строки:

    UUID=0bb98072-95ad-4042-bd33-7adf62102445 /mnt/nfs-system ext4 _netdev,errors=remount-ro 0 1
    UUID=093051cb-e9c2-4932-99a1-16cab2da8e1c /mnt/nfs-images ext4 _netdev,errors=remount-ro 0 1
    CODE
  8. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.

Для того чтобы установить и настроить службу сервера NFS, на сервере NAS необходимо выполнить действия, описанные ниже.

  1. Установить службу сервера NFS:

    sudo apt install nfs-kernel-server

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

    <полный_путь_каталога> <IP-адрес_клиента>(rw,async,no_subtree_check,no_root_squash)
    CODE

    где <IP-адрес_клиента> – IP-адрес фронтальной машины или узла виртуализации. Кроме того, может быть использовано сетевое имя сервера, или, для указания группы серверов, можно использовать адрес сети или подстановочные знаки (подробнее см. справку man exports).

    Пример

    Настройка доступа для фронтальной машины с сетевым именем front и узлов виртуализации, сетевое имя которых начинается с последовательности символов "node" (далее следует один любой символ):

    /mnt/nfs-system front(rw,async,no_subtree_check,no_root_squash)
    /mnt/nfs-system node?(rw,async,no_subtree_check,no_root_squash)
    /mnt/nfs-images front(rw,async,no_subtree_check,no_root_squash)
    /mnt/nfs-images node?(rw,async,no_subtree_check,no_root_squash)
    CODE
  3. Обновить правила доступа к каталогам командой:

    sudo exportfs -ra

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

  1. Установить службу клиента NFS:

    sudo apt install nfs-common

  2. Просмотреть перечень доступных сетевых ресурсов:

    sudo showmount -e <IP-адрес_сервера_NAS>
    Пример вывода после успешного выполнения команды:

    Export list for 192.168.1.10: 
    /mnt/nfs-images node?,front
    /mnt/nfs-system node?,front
    CODE
  3. На всех узлах виртуализации создать точки монтирования.

    На объекте эксплуатации в качестве точек монтирования выступают каталоги хранилищ ПК СВ (см. Пример монтирования сетевых ресурсов с NFS).

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

    <IP-адрес_сервера_NFS>:<сетевой_ресурс> <точка_монтирования> nfs _netdev,timeo=14,intr 0 0
    CODE

    Пример

    192.168.1.10:/mnt/nfs-images /var/lib/one/datastores/101 nfs _netdev,timeo=14,intr 0 0
    192.168.1.10:/mnt/nfs-system /var/lib/one/datastores/100 nfs _netdev,timeo=14,intr 0 0
    CODE
  5. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.

Особенности использования методов передачи данных

Драйверы Shared и Qcow2

При использовании драйвера shared (метода совместной передачи – shared transfer driver) образы экспортируются в соответствующий каталог системного хранилища на узле виртуализации. При этом на всех узлах виртуализации должна быть установлена и настроена общая распределенная (или кластерная) файловая система. 

Драйвер qcow2 является разновидностью метода совместной передачи и ориентирован на работу с образами дисков формата qcow2. Образы создаются и передаются с помощью инструмента командной строки qemu-img с использованием исходного образа в качестве опорного файла. Стандартные параметры инструмента командной строки qemu-img можно скорректировать, указав необходимые значения в конфигурационном файле /etc/one/tmrc (переменная QCOW2_OPTIONS).

Рекомендуется использовать драйвер qcow2, т.к. при использовании этого драйвера обеспечивается возможность создать снимок состояния диска ВМ (в том числе выключенной).

Схема функционирования представлена на рисунке:

Рис. 1

При развертывании ВМ в каталоге системного хранилища (на рисунке выше – каталог "100") создается рабочий каталог ВМ с наименованием, соответствующем идентификатору этой ВМ (на рисунке выше – каталог "7"). Из каталога хранилища образов (на рисунке выше – каталог "101") в рабочий каталог ВМ копируется файл непостоянного образа, указанный в шаблоне ВМ (на рисунке выше – файл "disk.1") и/или формируется символическая ссылка на файл постоянного образа (на рисунке выше – файл "disk.0"). Цифра после префикса "disk." соответствует номеру диска, указанному в шаблоне.

При создании снимка состояния работающей ВМ в рабочем каталоге записывается файл состояния этой ВМ с наименованием вида "snap-<номер>.xml" (где <номер> – порядковый номер снимка, начиная с цифры "0").

При использовании драйвера qcow2 во время создания снимка состояния работающей ВМ также формируется снимок состояния диска этой ВМ. В файл снимка состояния диска записываются изменения в данных, содержащихся на диске (дельта). В качестве наименования файлов снимков состояния диска выступает порядковый номер снимка, начиная с цифры "0". При этом файлы снимков состояния диска размещаются в следующих каталогах:

  • для непостоянных образов – /var/lib/one/datastores/<идентификатор_системного_хранилища>/<идентификатор_ВМ>/disk.<идентификатор_диска>.snap/;

    Для примера, представленного на рисунке выше – /var/lib/one/datastores/100/7/disk.1.snap/

    Файл disk.1 будет являться символической ссылкой на файл актуального снимка состояния диска.

  • для постоянных образов – /var/lib/one/datastores/<идентификатор_хранилища_образов>/<идентификатор_образа>.snap/;

    Для примера, представленного на рисунке выше – /var/lib/one/datastores/101/6f7f699d.snap/

    Файл disk.0 будет являться символической ссылкой на файл актуального снимка состояния диска.

    Кроме того, в рабочем каталоге ВМ будет создана символическая ссылка с наименованием disk.0.snap, которая указывает на каталог со снимками состояний диска (/var/lib/one/datastores/100/6f7f699d.snap/).

При использовании драйвера qcow2 можно отдельно создать снимок состояния диска как работающей, так и выключенной ВМ.  Файлы снимков состояния диска будут размещены в каталогах, описанных выше.

При использовании драйвера shared создание снимка состояния диска работающей ВМ не поддерживается. В качестве снимка состояния диска выключенной ВМ создается полная копия файла диска ВМ. Файлы снимков состояния диска размещаются в каталогах, описанных выше.

Драйвер SSH

Метод передачи ssh использует локальную файловую систему узлов виртуализации для размещения образов виртуальных машин. Таким образом все файловые операции выполняются локально, но образы всегда необходимо копировать на узлы виртуализации. Данный драйвер не допускает использование динамических перемещений между узлами виртуализации.

Схема функционирования представлена на рисунке:

При развертывании ВМ в каталоге системного хранилища на узле виртуализации (на рисунке выше – каталог "100") создается рабочий каталог ВМ с наименованием, соответствующем идентификатору этой ВМ (на рисунке выше – каталог "7"). Из каталога хранилища образов (на рисунке выше – каталог "101") в рабочий каталог ВМ копируется файл исходного образа, указанного в шаблоне ВМ. Копии исходных образов имеют наименование вида "disk.<номер>". (где <номер> – цифра, соответствующая номеру диска в шаблоне).

Необходимо убедиться в том, что все серверы, включая фронтальную машину, могут осуществлять ssh-передачу на любой другой сервер, включая самих себя. В противном случае перемещения не будут выполняться.

При создании снимка состояния работающей ВМ в рабочем каталоге этой ВМ создается файл состояния этой ВМ с наименованием вида "snap-<номер>.xml" (где <номер> – порядковый номер снимка, начиная с цифры "0").

Для выключенной ВМ можно зафиксировать состояние диска этой ВМ (сделать снимок). При этом файлы снимков состояния диска являются полной копией файла диска ВМ и размещаются в каталоге /var/lib/one/datastores/<идентификатор_системного_хранилища>/<идентификатор_ВМ>/disk.<номер>.snap/.

Для файла образа диска disk.1 (см. рис. выше) – /var/lib/one/datastores/100/7/disk.1.snap/

В качестве наименования файлов снимков состояния диска выступает порядковый номер снимка, начиная с цифры "0".

Если в качестве исходного выступал постоянный образ, то при уничтожении ВМ все файлы снимков состояний диска будут перемещены в хранилище образов в каталог /var/lib/one/datastores/<идентификатор_хранилища_образов>/<идентификатор_образа>.snap/.

Для файла образа диска disk.1 (см. рис. выше) все файлы из /var/lib/one/datastores/100/7/disk.1.snap/ будут перемещены в каталог /var/lib/one/datastores/101/4b2cda93.snap/

Регистрация хранилищ

Параметры хранилищ

В общем случае для регистрации облачного хранилища необходимо указать значения следующих параметров:

  • для системного хранилища:

    ПараметрЗначение
    NAME<Имя хранилища>
    TYPESYSTEM_DS
    TM_MAD

    <драйвер> (метод передачи данных между хранилищем образов и системным хранилищем).

    Может принимать одно из следующих значений: shared, qcow2 или ssh

  • для хранилища образов:

    ПараметрЗначение
    NAME<Имя хранилища>
    TYPE

    IMAGE_DS

    DS_MAD

    <базовая технология хранения>

    TM_MAD<драйвер> (метод передачи данных между хранилищем образов и системным хранилищем).

    Может принимать одно из следующих значений: shared, qcow2 или ssh

    SAFE_DIRS

    Перечень каталогов, разделенных символом пробела, в которых разрешается размещать образы.

    По умолчанию имеет значение "/var/tmp"

Необходимо использовать одинаковый метод передачи данных (параметр TM_MAD) для системного хранилища и для хранилища образов.

Регистрация хранилищ в интерфейсе командной строки

Пример

Регистрация системного хранилища, в котором используется драйвер qcow2:

  1. Создать файл systemds.txt следующего содержания:

    NAME    = fs_system
    TYPE    = SYSTEM_DS
    TM_MAD  = qcow2
    CODE
  2. Выполнить команду:

    onedatastore create systemds.txt
    После выполнения команды будет выведен идентификатор созданного хранилища, например:

    ID: 100
    CODE

Пример

Регистрация хранилища образов, в котором используется драйвер qcow2:

  1. Создать файл imageds.txt следующего содержания:

    NAME	= fs_images
    TYPE	= IMAGE_DS
    DS_MAD	= fs
    TM_MAD	= qcow2
    CODE
  2. Выполнить команду:

    onedatastore create imageds.txt
    После выполнения команды будет выведен идентификатор созданного хранилища, например:

    ID: 101
    CODE

Регистрация хранилищ в веб-интерфейсе

Пример

Регистрация системного хранилища, в котором используется драйвер qcow2.

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
  2. На открывшейся странице Создать хранилище зарегистрировать хранилище одним из способов:
    • во вкладке Мастер настройки:
      • в поле Название задать наименование хранилища;
      • в выпадающем списке Тип хранилища выбрать значение Filesystem - qcow2 mode;
      • установить флаг Система;
      • нажать на кнопку [Создать];
    • во вкладке Расширенный указать непосредственно значения параметров хранилища.
  3. Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON

    В представленном примере системному хранилищу file-ds_system присвоен идентификатор 100.

Пример

Регистрация хранилища образов, в котором используется драйвер qcow2.

  1. В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
  2. На открывшейся странице Создать хранилище зарегистрировать хранилище одним из способов:
    • во вкладке Мастер настройки:
      • в поле Название задать наименование хранилища;
      • в выпадающем списке Тип хранилища выбрать значение Filesystem - qcow2 mode;
      • установить флаг Образы;
      • нажать на кнопку [Создать];
    • во вкладке Расширенный указать непосредственно значения параметров хранилища.
  3. Дождаться когда на странице Хранилища для созданного хранилища в поле Статус будет установлено значение ON

    В представленном примере хранилищу образов file-ds_images присвоен идентификатор 101.

Монтирование блочных устройств в каталоги хранилищ

Особенности монтирования блочных устройств в ПК СВ

На узле виртуализации необходимо создать каталоги для созданных ранее хранилищ на базе файловой технология хранения (по умолчанию /var/lib/one/datastores/<идентификатор_хранилища>). Для этого последовательно выполнить команды:

sudo mkdir /var/lib/one/datastores/<идентификатор_системного_хранилища>

sudo mkdir /var/lib/one/datastores/<идентификатор_хранилища_образов>

Пример

sudo mkdir /var/lib/one/datastores/100

sudo mkdir /var/lib/one/datastores/101

На узле виртуализации необходимо смонтировать подготовленную систему хранения данных в каталог хранилища. Если все хранилища одного типа, можно смонтировать весь каталог /var/lib/one/datastores.

На фронтальной машине необходимо смонтировать только хранилище образов.

Кроме того, необходимо убедиться в том, что на смонтированном дисковом ресурсе достаточно места для хранения образов и дисков виртуальных машин, которые находятся в состоянии «остановлена» и «не размещена». 

Пример монтирования сетевых блочных устройств с OCFS2

  1. Определить идентификаторы (UUID) сетевых блочных устройств командой:

    sudo blkid
    Пример вывода после выполнения команды:

    /dev/vda1: UUID="b5fd411a-4c96-491b-bfc0-b4e9e2670e9c" TYPE="ext4" PARTUUID="50741579-01"
    /dev/vda5: UUID="31daa40d-8e07-44cc-b851-d985f2121bb7" TYPE="swap" PARTUUID="50741579-05"
    /dev/sdb: UUID="3bd71b84-6463-42ec-8aff-106cafdae2e2" TYPE="ocfs2"
    /dev/sda: UUID="41ff6399-368e-4b81-bae4-bdfa4aedd45a" TYPE="ocfs2"
    CODE

    где в качестве блочных устройств sda и sdb выступают сетевые блочные устройства.

  2. В файл /etc/fstab добавить следующие строки:

    UUID=41ff6399-368e-4b81-bae4-bdfa4aedd45a /var/lib/one/datastores/100 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    UUID=3bd71b84-6463-42ec-8aff-106cafdae2e2 /var/lib/one/datastores/101 ocfs2 _netdev,x-systemd.requires=o2cb.service 0 0
    CODE

    таким образом на блочном устройстве sda будет размещено системное хранилище, а на блочном устройстве sdb – хранилище образов.

  3. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.

  4. Выполнить перезагрузку.
  5. После добавления записи об автоматическом монтировании в файле /etc/fstab и перезагрузки ОС, необходимо назначить на каталог этого хранилища владельца oneadmin. В противном случае при перезагрузке ОС владелец меняется на root и использование хранилища будет не доступно.

    Для того чтобы назначить на каталог хранилища владельца oneadmin необходимо выполнить команду:

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/<идентификатор_хранилища>

    Пример

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/100

    sudo chown oneadmin:oneadmin /var/lib/one/datastores/101

Пример монтирования сетевых ресурсов с NFS

Для каждого сетевого каталога, предоставляемого сетевым хранилищем, предварительно необходимо назначить владельцем пользователя с UID равным 9869 (oneadmin). А в качестве группы-владельца – группу с GID равным 9869 (oneadmin). 

Подробнее – см. Пример использования файловой системы NFS.

На фронтальной машине и каждом узле виртуализации необходимо выполнить последовательность действий, описанную ниже.

  1. Установить службу клиента NFS:

    sudo apt install nfs-common

  2. Просмотреть перечень доступных сетевых ресурсов:

    sudo showmount -e <IP-адрес_сервера_NAS>
    Пример вывода после успешного выполнения команды:

    Export list for 192.168.1.10: 
    /mnt/nfs-images node?,front
    /mnt/nfs-system node?,front
    CODE
  3. Настроить автоматическое монтирование сетевых ресурсов в точки монтирования. Для этого в файл /etc/fstab добавить строки вида:

    <IP-адрес_сервера_NFS>:<сетевой_ресурс> <точка_монтирования> nfs _netdev,timeo=14,intr 0 0
    CODE

    В качестве точек монтирования необходимо указать каталоги созданных хранилищ.

    Пример

    192.168.1.10:/mnt/nfs-images /var/lib/one/datastores/101 nfs _netdev,timeo=14,intr 0 0
    192.168.1.10:/mnt/nfs-system /var/lib/one/datastores/100 nfs _netdev,timeo=14,intr 0 0
    CODE
  4. Выполнить монтирование командой:

    sudo mount -a
    Результатом выполнения команды должен быть пустой вывод без ошибок.