Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище. Хранилище iSCSI — сетевое хранилище, использующее протокол сетевого доступа к файловым системам — iSCSI. В статье описан алгоритм настройки iSCSI-хранилища. Подробнее о сетевых хранилищах см. в статье Сетевые хранилища.

Подготовка сервера iSCSI


Работа с iSCSI в качестве хранилища имеет следующие особенности:

  • VMmanager управляет сервером-хранилищем по SSH;
  • VMmanager работает с open-iscsi: должны быть установлены все необходимые пакеты и запущен сервис tgtd. Сервис tgtd также должен быть настроен на автоматический запуск после перезагрузки сервера.

Установите open-iscsi и настройте tgtd на автозапуск:

yum install epel-release
yum install scsi-target-utils
service tgtd start
chkconfig tgtd on
BASH

При необходимости добавьте правила iptables:

iptables -I INPUT 1 -p tcp --dport 3260 -j ACCEPT
service iptables save 
BASH

Если доступ к узлам кластера осуществляется по внутренним сетевым интерфейсам, то iSCSI-сервер также должен быть доступен по внутренним интерфейсам. Это нужно для того, чтобы open-iscsi правильно добавлял разрешения для узлов кластера.

После настройки сервера хранилища можно создавать хранилище с типом iSCSI. Подробнее о создании хранилищ см. в статье Подключение хранилища.

Принципы работы


Создание хранилища

При создании iSCSI-хранилища в VMmanager:

  • на сервере с iSCSI создаётся таргет с именем iqn.YYYY-MM.<hostname-reverse>.<хранилище>_ID, где ID — уникальный номер;
  • в libvirt создаётся пул с именем <хранилище>_ID. Libvirt импортирует таргет и все LUN этого таргета.

Таким образом, хранилище представляет собой набор пулов с разными ID.

Например, создаём iSCSI-хранилище с именем NetStorage:

    • будет создан пул libvirt в c именем NetStorage_001;
    • на сервере iSCSI будет создан таргет c именем iqn.2013-04.org.our-dc.stor1.NetStorage_001;
    • таргет будет добавлен в файл /etc/tgt/vmmgr/<имя таргета>.conf для того, чтобы таргеты сохранялись при перезагрузке хранилища. Для каждого таргета создаётся отдельный файл конфигурации в директории /etc/tgt/vmmgr/.

Такая схема создана для того, чтобы VMmanager мог создавать больше 150 виртуальных дисков на одном хранилище. Когда в таргете id последнего луна равен 150, будет создан новый таргет NetStorage_002 и т.д.

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

В iSCSI-хранилище диски создаются в виде файлов в директории, заданной параметром iSCSITargetDir в файле конфигурации VMmanager (по умолчанию — /iscsivolumes).

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

  • на iSCSI-сервере создаётся файл в директории /iscsivolumes. Имя файла соответствует имени виртуального диска;
  • VMmanager выясняет ID таргета, в котором будет создан LUN. Если в таргете больше 150 LUN, будет создан новый таргет iqn.YYYY-MM.<hostname-reverse>.<хранилище>_ID, в котором ID больше на единицу;
  • на узлах кластера будет добавлен новый libvirt pool с именем <хранилище>_ID;
  • в этом таргете будет создан LUN, добавлен в файл /etc/tgt/vmmgrtargets.conf, его номер будет сохранен в базе данных;
  • на всех узлах кластера будет запущен процесс обновления информации о пулах libvirt (команда virsh pool-refresh <хранилище>_ID).

После этого виртуальный диск становится доступным на всех узлах кластера. В libvirt его можно найти в pool с именем <хранилище>_ID под именем unit:0:0:LUN_ID.----