Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище. Хранилище 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
При необходимости добавьте правила iptables:
iptables -I INPUT 1 -p tcp --dport 3260 -j ACCEPT
service iptables save
Если доступ к узлам кластера осуществляется по внутренним сетевым интерфейсам, то 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.----