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

Руководство по управлению SDS на базе ПСХД MIND uStor

Аннотация

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

В этом документе объясняется, как выполнять задачи обслуживания, характерные для гиперконвергентной среды zVirt на базе ПСХД MIND uStor.

1. Настройка локального хранилища uStor

1.1. Создание OSD

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

Перед использование диска, его wwid необходимо добавить в blacklist multipath:

tee -a /etc/multipath/conf.d/ustor_blacklist.conf <<EOF
blacklist {
    wwid "<UUID>" (1)
}
EOF
1 Необходимо указать корректный UUID нужного диска.

UUID диска можно получить командой:

ls -l /dev/disk/by-id | grep "sdb$" | awk '{print $9}' | sed 's/scsi-//'

Описанные ниже действия необходимо выполнить на всех узлах кластера ПСХД.

Порядок действий:
  1. Подключитесь к узлу кластера по SSH.

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

    1. Получите список накопителей с указанием логического пути до каждого с помощью команды lsblk:

      lsblk -d -o NAME,SIZE,TYPE,MODEL,ROTA

      Пример вывода:

      NAME  SIZE TYPE MODEL            ROTA
      sda   150G disk QEMU HARDDISK       1
      sdb   200G disk QEMU HARDDISK       1
      sdc   200G disk QEMU HARDDISK       1
      sdd   100G disk iSCSI Disk          0
      sr0  1024M rom  QEMU DVD-ROM        1

      Твердотельные накопители должны иметь свойство rota=0. При использовании виртуальных дисков ядро по умолчанию ставит для них значение rota=1. Для изменения этого значения:

      1. Создайте/измените файл /etc/udev/rules.d/50-custom-scheduler.rules, добавив в него следующую строку:

        ACTION=="add|change", KERNEL=="sd[a-f]", ATTR{queue/rotational}="0", ATTR{queue/scheduler}="none" (1)
        1 В KERNEL=="sd[a-f]" укажите нужные диски.
      2. Перезагрузите правила udev:

        udevadm control --reload-rules
        udevadm trigger
      3. Убедитесь, что изменения применились:

        lsblk -d -o NAME,SIZE,TYPE,MODEL,ROTA
        
        NAME  SIZE TYPE MODEL            ROTA
        sda   150G disk QEMU HARDDISK       0
        sdb   200G disk QEMU HARDDISK       0
        sdd   100G disk iSCSI Disk          0
        sr0  1024M rom  QEMU DVD-ROM        1
    2. Определите по полученному списку, какие из накопителей будут использоваться для организации общего дискового хранилища.

    3. Подготовьте локальные накопители в автоматическом режиме c помощью команды ustor-disk prepare:

      ustor-disk prepare <DEVICE|DEVICE_LIST> (1)
      1 <DEVICE|DEVICE_LIST> — список, полученный на предыдущем шаге с помощью команды lsblk.

      Например:

      ustor-disk prepare --osd_per_disk 2 /dev/sdb
    4. Дождитесь окончания работы команды.

    5. Обновите параметры суперблоков OSD и привяжите необходимые порты:

      ustor-disk update-sb <device> --bind_port <port>
      • в среде zVirt для служб OSD зарезервирован диапазон портов 23005–23499;

      • каждый порт в пределах диапазона 23005–23499 должен быть уникальным для конкретной службы OSD;

      • привязка порта осуществляется параметром --bind_port;

      • после назначения портов перезапуск всех OSD-компонентов обязателен для применения изменений.

      Например:

      ustor-disk update-sb /dev/sdb1 --bind_port 23005
      ustor-disk update-sb /dev/sdb2 --bind_port 23006

      Эту операцию необходимо выполнить на всех узлах кластера ПСХД для всех OSD.

    6. Перезапустите таргет ustor на всех узлах.

      systemctl restart ustor.target
  3. Проверьте, что все накопители успешно подготовлены и доступны в кластере, с помощью команды:

    ustor-cli ls-osd -l

    Пример вывода:

    ID  STATE  HOST           TIME  SIZE    USED%  BLOCK_SIZE  REWEIGHT  TAGS       DATA       META  JOURNAL
    1   up     g1.vlab.local  6     99.9 G  0%     128 K       1         ssd, 200G  /dev/sdb1
    2   up     g1.vlab.local  6     99.9 G  0%     128 K       1         ssd, 200G  /dev/sdb2
    3   up     g2.vlab.local  3     99.9 G  0%     128 K       1         ssd, 200G  /dev/sdb1
    4   up     g2.vlab.local  3     99.9 G  0%     128 K       1         ssd, 200G  /dev/sdb2
    5   up     g3.vlab.local  5     99.9 G  0%     128 K       1         ssd, 200G  /dev/sda1
    6   up     g3.vlab.local  5     99.9 G  0%     128 K       1         ssd, 200G  /dev/sda2

1.2. Удаление OSD

Для удаления OSD используется команда ustor-disk purge. Команду необходимо выполнять на том узле кластера ПСХД, на котором размещен удаляемый OSD.

Синтаксис команды:

ustor-disk purge <device|device_list>

Обязательные аргументы:

  • <device|device_list> - устройство OSD, которое необходимо отключить (отмонтировать). Необходимо указать полный путь до блочного устройства в формате /dev/XX. Можно указать список устройств через пробел.

Пример:

ustor-disk purge /dev/sdb

2. Проверка статуса кластера

После успешного завершения всех процедур по настройке кластера, для проверки его состояния выполните команду ustor-cli status на любом узле кластера ПСХД.

В выводе данной команды будет отображено:

  • Суммарное количество установленных экземпляров системных служб: etcd, Monitor, OSD;

  • Суммарное количество запущенных на текущий момент экземпляров системных служб;

  • Текущий размер конфигурационной базы данных;

  • Объём неразмеченного пространства хранения кластера.

Пример вывода команды ustor-cli status:

cluster:
   etcd: 3 / 3 up, leader g3.vlab.local, 6.3 M database size
   mon:  3 up, master g1.vlab.local
   osd:  6 / 6 up

data:
   raw:   0 B used, 599.6 G / 599.6 G available
   state: 0 B clean
   pools: 0 / 0 active
   pgs:

io:
   client: 0 B/s rd, 0 op/s rd, 0 B/s wr, 0 op/s wr

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

3. Управление пулами хранения

Для управления пулами хранения используется соответствующая команда утилиты ustor-cli. Утилиту можно запустить на любом узле кластера ПСХД.

3.1. Создание пула хранения

Для создания пула хранения необходимо воспользоваться командой ustor-cli create-pool.

Синтаксис команды:

ustor-cli create-pool [общие параметры] <name>

Обязательные аргументы:

  • <name> - имя создаваемого пула хранения

  • --scheme <scheme> - схема защиты данных создаваемого пула хранения.

    Может принимать значение replicated или ec.

Основные параметры:

  • --ec <N>+<K> - параметр для создания пула со схемой защиты данных Erasure Coding (ec).

    Аргумент N+K даёт возможность передать значения параметров pg_size и parity_chunks. Сумма значений аргумента равна pg_size, а значение K из аргумента равно parity_chunks.

  • --pg_size <size> - общее количество дисков для PG этого пула, т. е. количество копий для реплицированных пулов и количество дисков с данными и чётностью для пулов "ec/xor".

  • --pg_count <count> - количество PG для создаваемого пула хранения. Для максимальной эффективности распределения пространства хранения на одном OSD должно быть 64-128 PG.

    Формула для расчёта оптимального количества PG: общее число OSD пула * 100 / pg_size. Полученное значение можно округлить до ближайшей степени 2.

Примеры:

Создание пула хранения c именем "Pool_Replicated" и схемой защиты "replicated" в кластере из трех узлов:
ustor-cli create-pool Pool_Replicated --scheme replicated --pg_size 3 --pg_count 64
Создание пула хранения с именем "Pool_EC" и схемой защиты "Erasure Coding" в кластере из трех узлов:
ustor-cli create-pool Pool_EC --ec 2+1 --pg_count 64

Проверить состояние пула хранения можно с помощью команды ustor-cli status.

Отобразить информацию о созданных пулах хранения можно с помощью команды ustor-cli ls-pool.

3.2. Изменение пула хранения

Для изменения параметров пула хранения используется команда ustor-cli modify-pool.

Синтаксис команды:

ustor-cli modify-pool <id|name> [--name <new_name>] [параметры]

Обязательные аргументы:

  • <id|name> - идентификатор или имя пула.

Основные параметры:

  • --pg_size <size> - общее количество дисков для PG этого пула, т. е. количество копий для реплицированных пулов и количество дисков с данными и чётностью для пулов "ec/xor".

  • --pg_count <count> - количество PG для создаваемого пула хранения. Для максимальной эффективности распределения пространства хранения на одном OSD должно быть 64-128 PG.

    Формула для расчёта оптимального количества PG: общее число OSD пула * 100 / pg_size. Полученное значение можно округлить до ближайшей степени 2.

  • --parity_chunks <number> - количество блоков чётности (K) для пулов со схемой защиты данных "ec/xor".

    Параметр игнорируется для пулов со схемой защиты данных "replicated".

  • --f|--force - принудительное создание пула, без проверки параметров пула/OSD.

Примеры:

Переименование пула хранения TestPool1
ustor-cli modify-pool TestPool1 --name TestPool2
Изменение pg_size и pg_count пула хранения TestPool1
ustor-cli modify-pool TestPool1 --pg_size 4 --pg_count 128

3.3. Получение информации о пуле хранения

Для получения информации о пуле хранения используется команда ustor-cli get-pool.

Синтаксис команды:

ustor-cli ls-pool <pool_name> [параметры]

Обязательные аргументы:

  • <pool_name> - имя пула.

Основные параметры:

  • --detail - получить подробную информацию о пуле хранения.

  • --json - использовать формат JSON в выводе результата выполненной команды.

Пример вывода:

ustor-cli ls-pool

NAME          SCHEME  STATUS  PGS  TOTAL    USED  AVAILABLE  USED%  EFFICIENCY
Pool_Replica  EC 2+1  active  16   399.8 G  0 B   399.8 G    0%     100%

Обратите внимание, что для работы пул должен иметь статус active.

3.4. Удаление пула хранения

Для удаления пула хранения используется команда ustor-cli delete-pool.

Синтаксис команды:

ustor-cli rm-pool <pool_name>

Обязательные аргументы:

  • <pool_name> - имя удаляемого пула.

4. Управление ресурсами хранения

Для управления ресурсами хранения используется соответствующая команда утилиты ustor-cli. Утилиту можно запустить на любом узле кластера ПСХД.

4.1. Создание ресурса хранения

Для создания ресурса хранения необходимо воспользоваться командой ustor-cli create-image.

Синтаксис команды:

ustor-cli create-image <name> --pool <pool> --size <size>

Обязательные аргументы:

  • <name> - имя ресурса хранения.

  • --pool <pool> - имя пула хранения.

  • --size <size> - размер создаваемого ресурса хранения. По умолчанию используются байты, но возможно указание размерности (M, G, T).

Примеры:

Создание ресурса хранения с именем Image_Test и размером 20 ГБ, в пуле хранения Pool_Replicated:
ustor-cli create-image --size 20G Image_Test --pool Pool_Replicated

Отобразить информацию о созданных ресурсах хранения можно с помощью команды ustor-cli ls-image.

4.2. Изменение ресурса хранения

Команда ustor-cli modify-image даёт возможность изменить ряд параметров существующего ресурса хранения. Например, можно изменить размер ресурса (увеличить или уменьшить), переименовать ресурс, изменить режим использования ресурса хранения (включить или выключить режим только для чтения).

Синтаксис команды:

ustor-cli modify-image <name> --new-name <image_name> --size <size> [параметры]

Обязательные аргументы:

  • <name> - имя ресурса хранения.

  • --new-name <image_name> - новое имя в случае переименования ресурса.

  • --size <size> - новый размер в случае увеличения/уменьшения размера ресурса. По умолчанию используются байты, но возможно указание размерности (M, G, T).

    Если новый размер меньше старого, лишние данные будут удалены.

    Перед уменьшением размера ресурса хранения следует изменить размер файловой системы, если она есть.

Примеры:

Переименование ресурса хранения Image_Test1
ustor-cli modify-image Image_Test1 --newname Image_Test2
Увеличение размера ресурса хранения Image_Test1
ustor-cli modify-image Image_Test1 --size 20G

4.3. Получение информации о ресурсе хранения

Для получения информации о ресурсе хранения используется команда ustor-cli get-image.

Синтаксис команды:

ustor-cli ls-image <image_name> [параметры]

Обязательные аргументы:

  • <image_name> - имя пула.

Основные параметры:

  • --json - использовать формат JSON в выводе результата выполненной команды.

Пример вывода:

ustor-cli ls-image

NAME        POOL          SIZE  FLAGS  PARENT
Image_Test  Pool_Replica  20 G      -

4.4. Удаление ресурса хранения

Для удаления ресурса хранения используется команда ustor-cli delete-image.

Синтаксис команды:

ustor-cli rm-image <image_name>

Обязательные аргументы:

  • <image_name> - имя удаляемого ресурса.

5. Настройка iSCSI-шлюзов

Для интеграции с платформой виртуализации обычно создается iSCSI Target на кластере хранения, к которому гипервизоры подключаются как к внешней СХД. MIND uStor позволяет развернуть iSCSI-таргеты непосредственно на тех же узлах гиперконвергентной инфраструктуры. Ниже приведены шаги оптимальной настройки iSCSI в гиперконвергентной среде (когда инициаторы и таргеты находятся на одних и тех же физических узлах).

5.1. Оптимизация параметров системы для iSCSI (опционально)

Для достижения оптимальной производительности и надежности iSCSI-сервиса рекомендуется внести следующие системные настройки:

  1. Тюнинг ядра (sysctl)

    • Создайте (или откройте) файл /etc/sysctl.d/99-ustor.conf и добавьте следующие параметры:

      fs.file-max = 8388608
      fs.nr_open = 8388608
      fs.aio-max-nr = 1048576
      fs.epoll.max_user_watches = 2097152
      vm.nr_hugepages = 3072
      vm.hugetlb_shm_group = 0
      vm.swappiness = 1
      vm.dirty_ratio = 10
      vm.dirty_background_ratio = 5
      net.ipv4.tcp_rmem = 4096 87380 67108864
      net.ipv4.tcp_wmem = 4096 65536 67108864
      net.core.rmem_max = 134217728
      net.core.wmem_max = 134217728
      net.core.netdev_max_backlog = 250000
      net.core.somaxconn = 65535
      net.ipv4.tcp_max_syn_backlog = 65535
      net.ipv4.ip_local_port_range = 1024 65535
      net.ipv4.tcp_tw_reuse = 1
    • После сохранения файла примените настройки с помощью команды sysctl --system или перезагрузите узел (гипервизор).

  2. Настройка iSCSI-инициатора

    • Откройте файл /etc/iscsi/iscsid.conf и убедитесь, что там установлены следующие значения:

      node.session.queue_depth = 1024
      node.session.cmds_max = 1024
      node.session.iscsi.FirstBurstLength = 262144
      node.session.iscsi.MaxBurstLength = 16776192
      node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
      node.conn[0].iscsi.MaxXmitDataSegmentLength = 262144
      ...
      node.session.iscsi.ImmediateData = Yes
      node.session.iscsi.InitialR2T = No
      node.session.nr_sessions = 1
      node.session.xmit_thread_priority = -20
      node.session.timeo.replacement_timeout = 120
    • После сохранения файла перезапустите сервис open-iscsi:

      systemctl restart iscsid.service iscsi.service
    • Откройте файл /etc/multipath/conf.d/ustor.conf и добавьте секцию, оптимизированную для MIND uStor:

      devices {
      device {
      vendor "MIND"
      product "uStor vhost"
      path_grouping_policy multibus
      path_checker tur
      path_selector "queue-length 0"
      features "0"
      hardware_handler "0"
      rr_weight uniform
      failback immediate
      fast_io_fail_tmo 1
      dev_loss_tmo 600
      no_path_retry 600
      retain_attached_hw_handler yes
      detect_prio no
      flush_on_last_del yes
      }
      }
    • После сохранения файла перезапустите сервис multipathd:

      systemctl restart multipathd.service

5.2. Активация iSCSI-шлюзов и экспорт томов

Выполните действия по предварительной подготовке перед началом экпорта томов.

Предварительная подготовка

По умолчанию механизм формирования имени iSCSI-таргета (IQN) в uStor основывается на значении hostname шлюза iSCSI. Вследствие этого каждый отдельный таргет внутри одной установки uStor получает уникальное имя IQN, что нарушает требования среды виртуализации zVirt, предполагающей наличие единого фиксированного IQN для каждого отдельного хранилища. Для соответствия данным требованиям необходимо изменить методику генерации IQN таким образом, чтобы имена включали серийный номер массива.

Изменение режима генерации производится с использованием утилиты командной строки ustor-iscsi:

ustor-iscsi login    # Войти в интерактивную консоль управления iSCSI
ustor-iscsi set-option ustor_sn

Данная команда устанавливает опцию использования serial в IQN.

Порядок действий
  1. Активация шлюзов

    • Авторизуйтесь под учетной администратора в веб-интерфейсе MIND uStor.

    • Перейдите в раздел Шлюзы iSCSI (iSCSI Gateway), далее в раздел Шлюзы (Gateways) и активируйте службу на всех узлах.

    • Нажмите иконку редактирования (карандаш) напротив Состояние и переключите состояние шлюза в Включено.

    • Сохраните изменения (галочка). Статус каждого шлюза должен измениться на Активен.

      ustor2 gat

  2. Создание порталов

    • Перейдите в раздел Шлюзы iSCSI (iSCSI Gateway), далее в раздел Порталы (Portals).

    • Выделите из списка шлюз и нажмите + Создать портал.

    • В открывшемся окне Создание портала укажите Имя, выберите из списка шлюз ISCSI, IP, определите порт и тип CHAP.

      Для гиперконвергентной схемы zVirt в качестве IP укажите 127.0.0.1 для каждого узла.

      ustor2 portal

      ustor2 portal1

  3. Настройка групп инициаторов

    • Перейдите в раздел Шлюзы iSCSI (iSCSI Gateway), далее в раздел Группы инициаторов на вкладку Группы узлов.

    • Нажмите + Создать.

    • В открывшемся окне Добавить группу узлов:

      • Укажите Имя для группы узлов.

      • В полях IQN и Сеть с маской укажите ANY или добавьте ограничение по IQN и IP для инициаторов.

      • Выберите Тип авторизации.

        ustor2 ini

      • Нажмите Создать для подтверждения.

  4. Экспорт томов

    • Перейдите в раздел Шлюзы iSCSI (iSCSI Gateway), далее в раздел Экспорты на вкладку Целевой узел.

    • Нажмите + Создать.

      Для работы в гиперконвергентной среде требуется, чтобы LUN был доступен на всех узлах zVirt.
    • В открывшемся окне Создание экспорта целевого узла выберите из списка шлюз iSCSI, имя портала, группу инициаторов и нажмите Далее.

      ustor2 ex lun1

    • Настройте параметры Сопоставления образов с LUN ID.

      ustor2 ex lun2

    • Нажмите Создать для подтверждения.

  5. Настройка хранилища в zVirt

    • Нажмите Хранилище (Storage)  Домены (Domains).

    • Нажмите Новый домен (New Domain).

    • Задайте Имя (Name) для нового домена хранения.

    • Выберите Центр данных (Data Center) в раскрывающемся списке.

    • Выберите Данные (Data) в качестве Функция домена (Domain Function) и iSCSI в качестве Типа хранилища (Storage Type).

    • Выберите активный хост в качестве Используемый хост (Host).

    • Менеджер управления может сопоставлять iSCSI-таргеты с LUN или LUN с iSCSI-таргетами. Если выбран тип хранилища iSCSI, то в окне Новый домен хранения (New Domain) будут автоматически отображаться известные таргеты с неиспользуемыми LUN. Если таргет, который вы используете для добавления хранилища, не отображается, то для его поиска можно использовать операцию обнаружения таргетов; в противном случае перейдите к следующему шагу.

      • Нажмите Обнаружение целей (Discover Targets), чтобы задать параметры обнаружения таргетов. После того как таргеты обнаружены и вход в них выполнен, в окне Новый домен хранения (New Domain) будут автоматически отображаться таргеты с LUN, которые не используются средой.

      • В поле Адрес (Address) укажите FQDN или IP-адрес iSCSI-хоста.

      • В поле Порт (Port) укажите порт для соединения с хостом в процессе поиска таргетов. Значение по умолчанию = 3260.

      • Выберите один или несколько таргетов из результатов поиска и нажмите arrow right solid для одного таргета или Войти везде (Login All) для нескольких таргетов.

    • Нажмите plus рядом с нужным таргетом. Развернется соответствующая запись с отображением всех неиспользуемых LUN, подключенных к таргету.

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

    • Нажмите OK.

6. Управление сопоставлением ресурсов с блочными устройствами

В MIND uStor реализована возможность подключения к ресурсам хранения СХД с помощью технологии NBD — «сетевого блочного устройства», исполняемого в пространстве пользователя. Эта технология даёт возможность монтировать блочные устройства через стандартное сетевое соединение.

Подключение и управление устройствами NBD осуществляется с помощью утилиты ustor-nbd.

6.1. Создание локального устройства NBD

Команда ustor-nbd map даёт возможность создать локальное устройства NBD из ресурса хранения.

Синтаксис команды:

ustor-nbd map --image <IMAGE_NAME> [параметры]

Обязательные аргументы:

  • --image <IMAGE_NAME> - имя ресурса хранения, который будет использоваться для подключения в качестве устройства NBD.

Основные параметры:

  • --nbd_timeout <number> - максимальное время выполнения любой операции чтения/записи в секундах, при превышении которого ядро остановит NBD-устройство.

    Допустимо установить опцию в 0, чтобы выключить ограничение времени, но в этом случае станет невозможным выключение NBD-устройства при нештатном завершении процесса ustor-nbd.

  • --logfile <PATH> - путь к файлу, в который будет осуществляться запись сообщений в процессе работы службы.

  • --dev_num <NUMBER> - номер NBD-устройства после запуска службы /dev/nbd<NUMBER>.

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

Примеры:

Создание NBD с параметрами по умолчанию из ресурса Image_Test
ustor-nbd map --image Image_Test

6.2. Отключение локального устройства NBD

Команда ustor-nbd unmap даёт возможность отключить (отмонтировать) ранее подключённое устройство NBD.

Синтаксис команды:

ustor-nbd unmap <DEVICE>

Обязательные аргументы:

  • <DEVICE> - устройство NBD, которое необходимо отключить (отмонтировать). Необходимо указать полный путь до блочного устройства в формате /dev/nbdX.

Примеры:

Удаление устройства nbd0
ustor-nbd unmap /dev/nbd0

6.3. Просмотр списка подключенных устройств NBD

Команда ustor-nbd ls даёт возможность вывести информацию обо всех подключённых устройствах NBD и обслуживающих их процессах

Синтаксис команды:

ustor-nbd ls [параметры]

Основные параметры:

  • --json - использовать формат JSON в выводе результата выполненной команды.

Пример вывода:

ustor-nbd ls

/dev/nbd0
image: Image_Test
interface: nbd
pid: 486921

7. Управление подключением устройств nbd к виртуальным машинам

7.1. Подключение nbd к виртуальной машине

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

  • NBD-устройства могут быть подключены только к работающим виртуальным машинам.

  • NBD-устройства, подключенные к виртуальным машинам, не управляются и не отслеживаются Менеджером управления. Управление осуществляется исключительно средствами libvirt.

  • Для виртуальных машин с подключенными NBD-устройствами недоступно резервное копирование в домен экспорта.

Предварительные требования:
Порядок действий:
  1. Подключитесь с учетной записью root по SSH к хосту, на котором создано нужное устройство NBD.

  2. Убедитесь, что NBD устройство присутствует в системе.

    ustor-nbd ls
    
    /dev/nbd0
    image: vm-disk1
    interface: nbd
    pid: 486921
  3. Создайте xml-представление добавляемого диска:

    tee -a /root/TestDisk1.xml <<EOF
    <disk type='network' device='disk'>
            <source protocol='ustor' name='vm-disk1'/>
            <target dev='sdb' bus='scsi'/> (1) (2)
    </disk>
    EOF
    1 В качестве dev укажите свободное имя блочного устройства на виртуальной машине.
    2 В параметре bus также можно использовать значение virtio.

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

    virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf domblklist <vm-name>

    <vm-name> - имя виртуальной машины

    Нужные значения будут отображаться в столбце "Назначение".

  4. Используйте virsh для подключения диска к нужной виртуальной машине.

    virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf attach-device --live --config testVm ~/TestDisk1.xml

    Ожидаемый вывод выполнения команды:

    Устройство успешно подключено
  5. В гостевой ОС убедитесь, что устройство подключено.

7.2. Отключение nbd от виртуальной машины

Порядок действий:
  1. Подключитесь с учетной записью root по SSH к хосту, на котором работает нужная виртуальная машина с подключенным NBD.

  2. Определите нужное имя целевого устройства виртуальной машины:

    virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf domblklist <vm-name> (1)
    1 <vm-name> - имя виртуальной машины.

    Пример вывода:

     Назначение   Источник
    -------------------------------------------------------------------------
     sdb          /run/vdsm/payload/560047d1-20cd-43cd-994e-b04e54b8d765.img
     sdc          -
     vda          /rhev/data-center/mnt/blockSD/.../images/...
     sde          vm-disk2
     sdd          vm-disk1

    Нужные значения отображаются в столбце "Назначение".

  3. Отключите диск от ВМ:

    virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf detach-disk <vm-name> <target-name> (1) (2)
    1 <vm-name> - имя виртуальной машины.
    2 <target-name> - имя целевого устройства, которое необходимо отключить.