Технический Обзор Архитектуры Хранения Данных Infinidat

ИнфиниБокс — современная система хранения, которая сразу попала в правую часть магического квадрата.

Что делает его уникальным? Краткая справка Что такое ИнфиБокс? Это система хранения от Infinidat. Что такое Инфинидат? Это компания, созданная Моше Янаи (создатель Symmetrix и XIV) для реализации идеального проекта системы хранения данных корпоративного уровня.

Компания создавалась как разработчик программного обеспечения, которое устанавливается на проверенное оборудование, то есть является SDS, но поставляется в виде единого монолитного комплекта.

Введение В этой статье мы рассмотрим систему хранения данных InfiniBox, ее архитектуру, то, как она работает и насколько высокие надежность (99,99999%), производительность и емкость достигаются при относительно невысокой цене.

Поскольку основой системы хранения является ее программное обеспечение, и для этой системы в частности, основной упор будет сделан на программное обеспечение; красивых фотографий железа не будет. Зачем нам нужна еще одна система хранения данных на рынке? Есть ряд задач, требующих очень больших мощностей, но надежность и производительность также важны.

Например, облачные системы, стандартные задачи крупных компаний, интернет вещей, генетические исследования, системы безопасности крупных структур.

Найти оптимальную систему хранения для таких задач довольно сложно, особенно если посмотреть на цену.

С прицелом на такие задачи была построена программная архитектура InfiniBox. Адресация Как хранить неограниченное количество данных? Предоставляя неограниченное адресное пространство.

Для этого InfiniBox использует VUA — адресное пространство виртуального пользователя.

Все объекты, созданные в InfiniBox и доступные пользователю (тома, снимки, файловые системы), включаются в этот VUA, а общий размер этих объектов равен текущему размеру VUA. Адресация тонкая и не связана с дисками: то есть размер VUA может быть намного больше доступной емкости диска и фактически ничем не ограничен.



Технический обзор архитектуры хранения данных Infinidat

Далее нам нужно разделить это пространство на части, которые мы будем обслуживать – так с ними будет проще работать.



Технический обзор архитектуры хранения данных Infinidat

Все адресное пространство разделено на 6 частей – ВУ (виртуальная единица – виртуальная часть).

Адресное пространство каждого объекта, например тома, равномерно распределено между этими частями.

Запись происходит блоками по 64кБ, и в процессе работы можно невероятно просто и быстро понять, какому VU принадлежит данный адрес тома (остальная часть деления LBA/64кБ, функция по модулю, выполняется очень быстро за минимальное количество тактов ЦП) .

Помимо облегчения работы с меньшим пространством, виртуальные устройства являются первым уровнем абстракции от физических дисков и основой отказоустойчивости системы на уровне контроллера.

Например, имеется 3 контроллера (физических сервера), каждый из которых отвечает за работу и является основным для двух ВУ, а также резервным для двух других ВУ.

Контроллер не обслуживает ВУ, для которого он является резервным, но в то же время получает метаданные и операции записи для этого ВУ от другого контроллера, так что в случае выхода из строя основного контроллера он сразу же возьмет на себя всю работу с этим ВУ.



Технический обзор архитектуры хранения данных Infinidat

При выходе из строя одного контроллера два других берут на себя его задачу – работу со своим ВУ.



Технический обзор архитектуры хранения данных Infinidat

Адресация, снимки, кэширование

Технический обзор архитектуры хранения данных Infinidat

VUA — это виртуальное адресное пространство, доступное пользователю и практически неограниченное.

VDA (адрес виртуального диска) — это виртуальное внутреннее пространство для хранения данных.

Его размер строго заранее определяется количеством и емкостью жестких дисков (за вычетом четности, метаданных и места для замены вышедших из строя дисков).

Связь между ВУА и ВДА организована через попробовать (префиксное дерево).

Каждая запись в дереве представляет собой указатель из пользовательского пространства (VUA) во внутреннее пространство (VDA).

Префиксная древовидная адресация позволяет адресовать блоки любого размера.

То есть при добавлении на диски элемента любого размера (файла, последовательного потока данных, объекта) к нему может обращаться одна запись в дереве и дерево остается компактным.

Однако наиболее важной особенностью дерева является его высокая производительность при поиске и расширении дерева.

Поиск осуществляется во время операции чтения, когда необходимо найти на диске блок с заданным адресом.

Расширение дерева происходит во время операции записи, когда мы добавляем на диск новые данные и должны добавить в дерево адрес, по которому их можно найти.

Производительность крайне важна при работе с большими структурами, и префиксное дерево позволяет добиться ее с огромным запасом на будущее, например, в случае увеличения емкости диска.

Что можно сказать о связи VUA и VDA:

Размер VUA может быть намного больше размера VDA. VUA никак не подключается к VDA, пока там ничего не написано (thin Provisioning) Несколько VUA могут ссылаться на один VDA (снимки/клоны).

Таким образом, организация VUA и VDA, соединений между ними и адресация этих соединений позволяют реализовать очень быстрые снапшоты и Thin Provisioning. Поскольку создание моментального снимка представляет собой просто обновление метаданных в памяти и является постоянной операцией во время работы, на самом деле это вообще не занимает времени.

Обычно при создании снимков классические системы хранения прекращают обновление метаданных и/или операций ввода-вывода, чтобы обеспечить целостность транзакций.

Это приводит к неравномерной задержке ввода-вывода.

Рассматриваемая система работает иначе: ничего не останавливается, а для определения того, включена ли операция в снимок, используется временная метка из метаданных блока (64+4 КБ).

Таким образом, система может делать сотни тысяч снимков без замедления, а производительность тома с сотнями снимков и тома без снимков ничем не отличается.

Поскольку все делается в памяти и это обычные процессы, по группам томов можно делать десятки снимков в секунду.

Это позволяет реализовать асинхронную репликацию на снапшотах с разницей между копиями в секунды или даже меньше и без ущерба для производительности, что тоже немаловажно.

Давайте посмотрим на систему в целом, на то, как передаются данные.

Операции происходят через порты всех трёх контроллеров (серверов).

Драйверы портов работают в пространстве пользователя, что позволяет их просто перезапустить, если какая-либо комбинация событий на портах приведет к сбою драйверов.

В классических реализациях это делается в ядре и проблема решается перезапуском всего контроллера.

Далее поток разбивается на разделы по 64Кб+4Кб.

Что это за дополнительные 4 КБ? Это защита от скрытых ошибок и запись контрольных сумм, времени и дополнительной информации об операции, которая используется для классификации операции и используется для оптимизации кэширования и упреждающего чтения.



Технический обзор архитектуры хранения данных Infinidat

Кэширование записи — довольно простая вещь, чего нельзя сказать о кэшировании чтения.

Кэширование чтения работает хорошо, если мы знаем, что читать.

Классические системы используют алгоритмы упреждающего чтения для последовательного доступа.

Но что делать с произвольным? Полностью произвольный доступ в реальных приложениях встречается крайне редко; даже правильно его эмулировать довольно сложно; написать настоящий генератор случайных чисел — довольно интересная задача.

Но если рассматривать каждую операцию ввода-вывода отдельно, как это делается в классических системах, то все они произвольны и непредсказуемы, кроме полностью последовательных.

Однако если вы некоторое время посмотрите на весь поток ввода-вывода, то сможете увидеть закономерности, объединяющие различные операции.

Системный кэш принципиально ничего не знает о томах, файлах или любой логической структуре, построенной на VUA. Кэш просматривает только разделы и их метаданные, основывая кэширование на их поведении и атрибутах, что позволяет находить зависимости между различными приложениями, которые действительно связаны между собой.

Векторы активности строятся для операций ввода-вывода.



Технический обзор архитектуры хранения данных Infinidat

Система накапливает статистику, строит эти векторы активности, затем пытается идентифицировать текущий ввод-вывод и привязать его к известным векторам или построить новый.

После идентификации происходит предварительное чтение по вектору, то есть прогнозируется поведение приложений, а предварительное чтение производится для, казалось бы, произвольной нагрузки.

Запись на диски 14 разделов собираются в страйп для сброса на диски.

Это делается с помощью специального процесса, который выбирает участки для такого страйпа.



Технический обзор архитектуры хранения данных Infinidat

Далее подсчитываются две секции четности — страйп готов к записи на диски.

Четность рассчитывается с помощью нескольких операций на основе XOR, что в два раза быстрее, чем при использовании кода Рида-Соломона.

Далее страйп (14+2 раздела) назначается RAID-группе (RG).

RAID-группа — это всего лишь объект для хранения нескольких страйпов, не более того.

Полосы собираются в группу, как показано ниже, одна поверх другой, а вертикальный столбец называется членом группы RAID. VDS (Virtual Disk Space) — дисковое пространство, доступное для пользовательских данных, а VDA — адреса на нем.



Технический обзор архитектуры хранения данных Infinidat

Колонка или член RAID-группы записывается на один диск (PD — Physical Drive) на одной полке (Disk Unit).

Место, куда записывается член RAID-группы, называется разделом диска (DP — Drive Partition).

Количество ДП на диске постоянно и равно 264, размер зависит от размера диска.

Такая конструкция позволяет равномерно загружать все диски.

В этом случае алгоритм распределяет столбцы из одной RAID-группы как можно дальше друг от друга, на разные диски и полки.

Это приводит к тому, что при одновременном выходе из строя двух дисков количество общих страйпов на них минимально, и система переходит из состояния защиты N в N+1 за считанные минуты, перестраивая те страйпы, где отсутствуют два столбца.

один раз (надежность ведь семь девяток).



Технический обзор архитектуры хранения данных Infinidat

В результате логическая конструкция системы в целом выглядит достаточно просто и представлена на схеме ниже.



Технический обзор архитектуры хранения данных Infinidat

Физическая реализация Система спроектирована таким образом, что все ее компоненты защищены по схеме N+2 или 2N, включая каналы питания и передачи данных внутри массива.

Вот схема реализации блока питания.

ATS (автоматический переключатель резерва) – ATS, переключатель фаз BBU (Battery Backup Unit) – ИБП, источник бесперебойного питания.

Узел – контроллер

Технический обзор архитектуры хранения данных Infinidat

Такая схема позволяет защитить контроллеры и целостность памяти при сложных событиях, например, при сбое электропитания и временном отключении одной цепи питания.

ИБП являются управляемыми, что позволяет получать точную информацию о заряде и гибко изменять размер кэша, чтобы контроллер всегда успевал его сбросить.

То есть система начнет активно использовать кеш гораздо раньше, в отличие от классической схемы, когда кеш включается только при полной зарядке аккумулятора.

Вот схема каналов передачи данных внутри системы.



Технический обзор архитектуры хранения данных Infinidat

Контроллеры соединяются друг с другом через Infiniband, а с дисками — через SAS. Каждый контроллер может получить доступ к каждому диску в системе.

Более того, если соединение между контроллером и диском не работает, то контроллер может запросить данные через другой контроллер, выступающий в роли прокси, через Infiniband. На полках стоят коммутаторы SAS для одновременного доступа к дискам.

На каждой полке находится 60 дисков, полок может быть две, четыре или восемь, всего до 480 дисков по 3, 4, 6, 8 или 12 ТБ.

Общая емкость, доступная пользователю, составляет более 4,1 ПБ без сжатия.

Если говорить о сжатии, то для реализации сжатия без потери производительности память не сжимается, в результате с включенным сжатием система иногда работает даже быстрее - при чтении читать нужно меньше, мощности процессора хватает с запасом.

, а при записи ответ приходит напрямую из памяти и сжатие происходит асинхронно при прямой записи на диски.

Контроллеры содержат две группы дисков: одну, системную, для сброса оперативной памяти и вторую, на SSD, для кэширования операций чтения (до 368ТБ на систему).

Столь большой кэш позволяет осуществлять прогнозное чтение большими кусками, а поскольку данные в страйпе выбираются примерно с одинаковой частотой доступа, такие большие куски не только снижают нагрузку на физические диски, но и имеют высокие шансы оказаться востребованными.

в ближайшем будущем.

Краткое содержание Итак, мы рассказали об одной очень интересной системе хранения данных, которая имеет современную архитектуру и обеспечивает высокую емкость, высокую надежность, отличную производительность и адекватную стоимость.



Технический обзор архитектуры хранения данных Infinidat

Источники 1 https://techfieldday.com/video/infinidat-solution-deep-dive/ 2 https://support.infinidat.com/hc/en-us
Теги: #центр обработки данных #инфраструктура #ИТ-инфраструктура #Системное администрирование #Хранение данных #архитектура #Системы хранения #инфраструктура центра обработки данных #infinidat #infinibox

Вместе с данным постом часто просматривают: