Руководство по управлению SDS на базе ПСХД MIND uStor
Аннотация
Гиперконвергентная среда zVirt представляет собой архитектуру вычислительных ресурсов и хранилищ, объединенных в единую платформу. Она предоставляет возможность объединять несколько серверов с локальными устройствами хранения (дисками) в единое хранилище данных, которое можно масштабировать по мере необходимости.
В этом документе объясняется, как выполнять задачи обслуживания, характерные для гиперконвергентной среды zVirt на базе ПСХД MIND uStor.
1. Настройка локального хранилища uStor
1.1. Создание OSD
Чтобы использовать локальное хранилище серверов, выполняющих роль узлов хранения в кластере ПСХД MIND UStor, на каждом из них необходимо создать или изменить конфигурационный файл с параметрами подключения, а затем выполнить процедуру подготовки локальных накопителей для запуска экземпляров службы OSD.
|
Перед использование диска, его wwid необходимо добавить в blacklist multipath:
UUID диска можно получить командой:
|
|
Описанные ниже действия необходимо выполнить на всех узлах кластера ПСХД. |
-
Подключитесь к узлу кластера по SSH.
-
Выполните подготовку выбранных локальных накопителей для запуска экземпляров службы OSD:
-
Получите список накопителей с указанием логического пути до каждого с помощью команды 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. Для изменения этого значения:-
Создайте/измените файл /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]"укажите нужные диски. -
Перезагрузите правила udev:
udevadm control --reload-rules udevadm trigger -
Убедитесь, что изменения применились:
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
-
-
Определите по полученному списку, какие из накопителей будут использоваться для организации общего дискового хранилища.
-
Подготовьте локальные накопители в автоматическом режиме 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 -
Дождитесь окончания работы команды.
-
Обновите параметры суперблоков OSD и привяжите необходимые порты:
ustor-disk update-sb <device> --bind_port <port>Например:
ustor-disk update-sb /dev/sdb1 --bind_port 57000 ustor-disk update-sb /dev/sdb2 --bind_port 57001Эту операцию необходимо выполнить на всех узлах кластера ПСХД для всех OSD.
-
Перезапустите таргет ustor на всех узлах.
systemctl restart ustor.target
-
-
Проверьте, что все накопители успешно подготовлены и доступны в кластере, с помощью команды:
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.
Примеры:
ustor-cli create-pool Pool_Replicated --scheme replicated --pg_size 3 --pg_count 64
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.
Примеры:
ustor-cli modify-pool TestPool1 --name TestPool2
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%
|
Обратите внимание, что для работы пул должен иметь статус |
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).
Примеры:
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).Если новый размер меньше старого, лишние данные будут удалены.
Перед уменьшением размера ресурса хранения следует изменить размер файловой системы, если она есть.
Примеры:
ustor-cli modify-image Image_Test1 --newname Image_Test2
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 -
5. Управление сопоставлением ресурсов с блочными устройствами
В MIND UStor реализована возможность подключения к ресурсам хранения СХД с помощью технологии NBD — «сетевого блочного устройства», исполняемого в пространстве пользователя. Эта технология даёт возможность монтировать блочные устройства через стандартное сетевое соединение.
Подключение и управление устройствами NBD осуществляется с помощью утилиты ustor-nbd.
5.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>.По умолчанию используется автоматический подбор номера.
Примеры:
ustor-nbd map --image Image_Test
5.2. Отключение локального устройства NBD
Команда ustor-nbd unmap даёт возможность отключить (отмонтировать) ранее подключённое устройство NBD.
Синтаксис команды:
ustor-nbd unmap <DEVICE>
Обязательные аргументы:
-
<DEVICE>- устройство NBD, которое необходимо отключить (отмонтировать). Необходимо указать полный путь до блочного устройства в формате /dev/nbdX.
Примеры:
ustor-nbd unmap /dev/nbd0
5.3. Просмотр списка подключенных устройств NBD
Команда ustor-nbd ls даёт возможность вывести информацию обо всех подключённых устройствах NBD и обслуживающих их процессах
Синтаксис команды:
ustor-nbd ls [параметры]
Основные параметры:
-
--json- использовать формат JSON в выводе результата выполненной команды.
Пример вывода:
ustor-nbd ls
/dev/nbd0
image: Image_Test
interface: nbd
pid: 486921
6. Управление подключением устройств nbd к виртуальным машинам
6.1. Подключение nbd к виртуальной машине
|
В текущей реализации присутствуют следующие ограничения:
|
-
Виртуальная машина работает на хосте с подключаемым устройством NBD.
-
Подключитесь с учетной записью root по SSH к хосту, на котором создано нужное устройство NBD.
-
Убедитесь, что NBD устройство присутствует в системе.
ustor-nbd ls /dev/nbd0 image: vm-disk1 interface: nbd pid: 486921 -
Создайте 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> EOF1 В качестве devукажите свободное имя блочного устройства на виртуальной машине.2 В параметре busтакже можно использовать значениеvirtio.Для проверки свободных имен устройств виртуальной машины используйте следующую команду:
virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf domblklist <vm-name><vm-name> - имя виртуальной машины
Нужные значения будут отображаться в столбце "Назначение".
-
Используйте virsh для подключения диска к нужной виртуальной машине.
virsh -c qemu:///system?authfile=/etc/ovirt-hosted-engine/virsh_auth.conf attach-device --live --config testVm ~/TestDisk1.xmlОжидаемый вывод выполнения команды:
Устройство успешно подключено -
В гостевой ОС убедитесь, что устройство подключено.
6.2. Отключение nbd от виртуальной машины
-
Подключитесь с учетной записью root по SSH к хосту, на котором работает нужная виртуальная машина с подключенным NBD.
-
Определите нужное имя целевого устройства виртуальной машины:
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Нужные значения отображаются в столбце "Назначение".
-
Отключите диск от ВМ:
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> - имя целевого устройства, которое необходимо отключить.