Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище. Ceph RBD — сетевое отказоустойчивое хранилище. В статье описан алгоритм настройки RBD-хранилища в Ceph-кластере. Подробнее о сетевых хранилищах см. в статье Сетевые хранилища.
Для создания RBD-хранилища необходим настроенный Ceph-кластер. Подробнее см. в статье Создание Ceph-кластера.
Алгоритм установки
-
Установите Ceph:
rpm --import 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install snappy leveldb gdisk python-argparse gperftools-libs rpm -Uvh http://ceph.com/rpm-cuttlefish/el6/noarch/ceph-release-1-0.el6.noarch.rpm yum install ceph
-
Установите плагин YUM Priorites (нужен для установки QEMU из репозитория Ceph):
yum install yum-plugin-priorities
-
Включите плагин в конфигурационном файле /etc/yum/pluginconf.d/priorities.conf:
[main] enabled = 1
-
Создайте файл /etc/yum.repos.d/ceph-qemu.repo с содержимым:
[ceph-qemu] name=Ceph Packages for QEMU baseurl=http://ceph.com/packages/ceph-extras/rpm/rhel6/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-qemu-noarch] name=Ceph QEMU noarch baseurl=http://ceph.com/packages/ceph-extras/rpm/rhel6/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-qemu-source] name=Ceph QEMU Sources baseurl=http://ceph.com/packages/ceph-extras/rpm/rhel6/SRPMS enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
-
Установка QEMU из Ceph:
yum update yum install qemu-img qemu-kvm qemu-kvm-tools
Принципы работы VMmanager с RBD-хранилищем
При создании RBD-хранилища VMmanager пытается зайти на указанный в форме добавления хранилища монитор кластера Ceph по ключу, который обычно находится в /usr/local/mgr5/etc/ssh_id_rsa. После этого VMmanager выполняет операции:
-
Добавляет хранилище в кластере с тем же именем, что и хранилище VMmanager:
ceph osd pool create <Имя_хранилища> 128 128
-
Проверяет/добавляет пользователя-клиента ceph (имя клиента определяется параметром CephAuthUserName файла конфигурации vmmgr.conf, по-умолчанию vmmgr):
ceph auth get-or-create client.<имя_клиента> mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=<имя_хранилища>'
- Создаёт "секрет" в libvirt, добавляет в него полученный из предыдущего пункта ключ.
- Определяет список мониторов кластера и записывает его в базу данных в таблицу rbdmonitor.
При добавлении нового образа жёсткого диска на RBD-хранилище VMmanager заходит по ssh на первый монитор кластера и выполняет команду:
qemu-img create -f rbd rbd:<имя_хранилища>/<Имя_образа> 2G
При удалении диска выполняет команду:
rbd -p <имя_хранилища> rm <Имя_образа>