Хранилище ВЦОД — модель и устройство
Что это
Хранилище ВЦОД (Unified Storage) — блочное хранилище, которое принадлежит одному виртуальному центру обработки данных (ВЦОД) и отдаётся внешним хостам по iSCSI. Хранилище опирается на пул кластера: vStack Center создаёт на пуле корневой ZFS-датасет и привязывает его к ВЦОД. Тома создаются внутри этого датасета, занимают квоту пространства своего ВЦОД и раздаются как LUN.
Модель узкая и предсказуемая: одно хранилище на один ВЦОД, один пул под это хранилище, один iSCSI-таргет. Такая жёсткость упрощает главный вопрос эксплуатации — «чей это том и кто его видит». Ответ всегда однозначен, потому что у тома ровно один владелец-ВЦОД и ровно одна группа инициаторов, которой он экспортирован.
Из чего состоит хранилище
Сущности выстроены в цепочку от железа к потребителю. Пул даёт место, корневой датасет отделяет пространство ВЦОД, том — единица выдачи, таргет и LUN — способ доступа, группы инициаторов и порталов — правила, кому и через какие адреса разрешено подключаться.
| Сущность | Что это | Область принадлежности |
|---|---|---|
| Пул | ZFS-пул кластера, на котором размещается корневой датасет хранилища | Кластер |
| Корневой датасет | Датасет вида <пул>/<имя>; имя — 1–63 символа из строчных латинских букв, цифр, точки и дефиса | Один ВЦОД |
| Том | zvol с полным именем <пул>/.vol/<имя>; размер задаётся в ГБ, размер блока по умолчанию 32768 | Один ВЦОД |
| iSCSI-таргет | Точка доступа с IQN вида iqn.2024-01.io.vstack:<имя хранилища> | Один ВЦОД |
| LUN | Номер 0..255, под которым том виден на таргете | Один таргет |
| Портал-группа | Набор пар «адрес + TCP-порт», через которые слушает таргет | Один пул |
| Портал | Пара IP:port внутри группы. Отдельным объектом не управляется — порталы задаются составом группы | Портал-группа |
| Группа инициаторов | Список IQN инициаторов и разрешённых сетей в формате CIDR | Один ВЦОД |
| CHAP auth-группа | Набор учётных данных парольной защиты iSCSI | Один ВЦОД |
Имя хранилища не декоративное: из него выводится IQN таргета. Сегмент имени
корневого датасета после / подставляется в префикс iqn.2024-01.io.vstack:.
Поэтому имена хранилищ в кластере не должны совпадать — иначе второй таргет
не создастся.
Как проходят операции
vStack Center не трогает пул напрямую. Команды хранилища уходят SAN-контроллеру того пула, на котором лежит корневой датасет. Отсюда разное поведение интерфейса, и различать его важно — от этого зависит, когда вы увидите результат.
| Класс операции | Как ведёт себя интерфейс | Примеры |
|---|---|---|
| Чтение из учёта | отвечает сразу, из учёта vStack Center | сводка хранилища, список томов, кластерный обзор доступа |
| Чтение с живыми показателями | запрашивает SAN-контроллер; если он недоступен, показывает пустые живые поля, но открывает страницу | карточка тома, текущая ёмкость хранилища |
| Изменение | ждёт подтверждения контроллера пула, держит индикатор | включение хранилища, создание портал-группы |
| Цепочка изменений | ждёт завершения всей цепочки шагов на контроллере | раздача и отзыв тома |
Учёт пишется по подтверждению. Если контроллер отказал, в vStack Center не появляется ни группы, ни таргета, ни тома — причина отказа приходит от контроллера как есть. Обратное тоже верно: объект в списке означает, что контроллер операцию подтвердил. Промежуточного состояния «создаётся» у этих объектов нет.
У удаления промежуточное состояние есть. С 3.1.0 прерванный демонтаж хранилища виден отдельным состоянием: по нему понятно, что удаление ВЦОД нужно запустить повторно, — раньше такое хранилище выглядело исправно включённым. Успешный демонтаж состояние снимает.
Инварианты модели
Часть ограничений заложена в модель и проверяется до обращения к контроллеру. Знание этих правил экономит разбор отказов.
| Инвариант | Что происходит при нарушении |
|---|---|
| Одно хранилище на ВЦОД | Повторное включение отклоняется кодом -45007 |
| Один пул на хранилище | Пул берётся из хранилища ВЦОД, выбором не задаётся |
| Один таргет на ВЦОД | Повторная настройка iSCSI отклоняется кодом -45014 |
| Имя тома уникально в хранилище ВЦОД | Занятое имя отклоняется кодом -45018 |
| Один том экспортируется ровно одной группе инициаторов | Уже роздан — код -45027 |
| Номер LUN свободен на таргете | Занятый номер — код -45029 |
| Портал-группа неизменяема | Правки состава нет: вместо неё создаётся новая группа |
| Одна CHAP auth-группа на таргет | Назначение новой группы заменяет прежнюю |
Ёмкость и квота
Ёмкость хранилища ВЦОД равна его квоте пространства — отдельного лимита у хранилища нет. В сводке хранилища квота видна в карточке Properties, поле Capacity. Занятое место по всем ВЦОД показывает экран Virtual Data Centers, колонка Storage; сам лимит правится в настройках ВЦОД полем Storage (GB).
Квота считается по всему занятому пространству ВЦОД, а не только по томам
хранилища: диски виртуальных машин и ранее созданные тома суммируются. Проверка
идёт до обращения к контроллеру и под блокировкой по ВЦОД — два параллельных
запроса не проскочат мимо лимита вдвоём. Если запрошенный размер не влезает,
операция отклоняется кодом -45017, а сообщение показывает запрошенный и
доступный объём.
Признак включения возможности
Весь домен закрыт признаком feature.unified_storage в опциях кластера. По
умолчанию признак выключен. Пока он выключен, любая операция хранилища после
проверки привилегии отклоняется с кодом -45001 и сообщением «Unified Storage
feature is disabled». Роль Cluster master признак не обходит.
Кто что видит
Домен разделён на кластерный и ВЦОД-уровень. Включение хранилища, создание и удаление портал-групп остаются за ролью Cluster master. Администратор ВЦОД читает своё хранилище и работает со своими томами и группами инициаторов. Портал-группы он читает по всему кластеру, границей его ВЦОД это чтение не ограничено.
| Привилегия | Номер | Кому выдана |
|---|---|---|
Enable vDC Storage | 13000 | Cluster master (нужен глобальный scope) |
iSCSI Create Portal Group | 13004 | Cluster master |
iSCSI Delete Portal Group | 13005 | Cluster master |
iSCSI View Portal Group | 13006 | Cluster master, администратор ВЦОД (весь кластер) |
iSCSI List Portal Groups | 13007 | Cluster master, администратор ВЦОД (весь кластер) |
Configure vDC Storage iSCSI | 13009 | Cluster master |
View vDC Storage | 13010 | Cluster master, администратор ВЦОД (свои ВЦОД) |
List vDC Storages | 13011 | Cluster master, администратор ВЦОД (свои ВЦОД) |
View vDC Storage iSCSI Detail | 13026 | Cluster master, администратор ВЦОД (свои ВЦОД) |
Create vDC Volume | — | Cluster master, администратор ВЦОД (свой ВЦОД) |
Delete vDC Volume | — | Cluster master, администратор ВЦОД (свой ВЦОД) |
Map vDC Volume | — | Cluster master, администратор ВЦОД (свой ВЦОД) |
Unmap vDC Volume | — | Cluster master, администратор ВЦОД (свой ВЦОД) |
List All Volumes | — | Cluster master (scope global) |
View Storage Overview | — | Cluster master (scope global) |
Привилегии 13006 и 13007 области видимости не учитывают, поэтому администратор ВЦОД видит портал-группы всех пулов кластера. Заводить и удалять их он по-прежнему не может.
Привилегии 13010 и 13011 учитывают область видимости: администратор ВЦОД
получает данные только тех ВЦОД, на которые у него есть право. Запрос чужого
ВЦОД отдаёт -403 и не раскрывает, существует такой ВЦОД или нет. Тот же приём
защищает кросс-ВЦОД чтение: кластерный обзор и сводная таблица томов показывают
топологию всех ВЦОД, поэтому администратору отдельного ВЦОД они закрыты.
Кластерный обзор доступа
Кластерная картина живёт в разделе Unified Storage под узлом кластера. Таб Overview показывает блок Protocol Access Overview — воронку доступа из пяти чисел: Initiators → Portal Groups → VDC with Unified Storage → Targets → LUNs. Все числа снимаются из одного согласованного среза, поэтому уровни воронки согласованы между собой арифметически.
Разбивка идёт по протоколам: в текущей версии на экране одна колонка — iSCSI. Кластер без хранилищ показывает отдельное сообщение вместо сетки нулей, а ноль внутри непустого кластера отображается как «0» — это разные состояния. Ошибка загрузки тоже отличима от «нет данных».
Раздел виден только роли Cluster master: без привилегий на кластерный обзор узла Unified Storage в дереве нет вообще.
Портал-группы кластера лежат в том же разделе, на табе Protocols → переключатель iSCSI.
Где что описано
| Задача | Где описано |
|---|---|
| Включить хранилище ВЦОД | Как создать ВЦОД с Unified Storage |
| Создать, прочитать, удалить том | Тома ВЦОД |
| Настроить точку доступа и CHAP | Настройка iSCSI и CHAP |
| Задать, кому и через какие адреса разрешено | Группы инициаторов и порталов |
| Отдать том хосту и отозвать раздачу | Подключение томов по iSCSI |
| Посмотреть картину по кластеру целиком | Эта страница, раздел «Кластерный обзор доступа» |
Порядок развёртывания
Шаги идут строго по цепочке, и каждый следующий опирается на предыдущий. Портал-группу на пуле администратор кластера готовит заранее: без неё форма настройки iSCSI не даёт продолжить. Дальше включите хранилище на пуле, настройте iSCSI, заведите группу инициаторов и только затем раздавайте тома.
Создавать тома можно сразу после включения хранилища — iSCSI для этого не нужен, он нужен для раздачи.
См. также
- Как создать ВЦОД с Unified Storage — первый проход от ВЦОД до первого тома.
- Пулы хранения — где живёт корневой датасет и как считается ёмкость пула.
- Квоты и ресурсы ВЦОД — как устроена квота пространства, из которой берётся ёмкость хранилища.
Методы API
Операции этой страницы в API: vdc-storage-get, vdc-storage-list,
cluster-storage-overview, cluster-list-volumes — см.
Справочник API.