ISCSI-хранилище

Материал из ISPWiki
Перейти к: навигация, поиск

Иерархия: VMmanager KVM -> Настройка кластера
VMmanager Cloud -> Настройка кластера

Хранилище iSCSI - сетевое хранилище, использующее протокол сетевого доступа к файловым системам - iSCSI.

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

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

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

Установить open-iscsi и настроить tgtd на автозапуск можно следующим образом:

Для Centos:

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 правильно добавлял разрешения для узлов кластера.

После настройки сервера хранилища, можно перейти в VMmanager и в разделе "Настройка кластера" -> "Шаблоны хранилищ" создать хранилище с типом 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.