Skip to content

Общие сведения о системе хранения данных DAOS

Современный дата-центр может состоять из тысяч вычислительных узлов, на которых могут быть запущены десятки тысяч виртуальных вычислительных машин, compute instances, обмен данными между которыми осуществляется посредством коммуникационной сети с высокой пропускной способностью. В гиперконвергентной вычислительной системе все или часть вычислительных узлов может также выступать в качестве узлов хранения данных, storage nodes.

Программный комплекс Distributed Asynchronous Object Storage, DAOS (далее - DAOS-система или система DAOS), представляет собой распределенное асинхронное объектное хранилище данных, предназначенное в первую очередь для работы на узлах хранения данных, оборудованных устройствами памяти PMEM и NVMe-дисками.

Серверное ПО системы DAOS устанавливается на множество узлов хранения данных (далее, DAOS-серверы), соединенных одной коммуникационной сетью. Две разные DAOS-системы состоят из двух непересекающихся множеств DAOS-серверов и управляются оператором дата-центра как две независимые подсистемы.

На каждом узле хранения данных системы DAOS запускается один главный серверный процесс, DAOS server instance, который в свою очередь запускает по одному управляющему подпроцессу DAOS Engine process на один физический сокет узла хранения данных. Каждому запущенном процессу DAOS Engine присваивается уникальный номер, rank, который сохраняется в специальном списке, поддерживаемом системой DAOS.

Daos Storage General View

Варианты установки системы DAOS: традиционный (pooled) и гиперконвергентный (hyper-converged).
Количество серверных процессов DAOS server instance, запущенных на одном узле хранения данных,
зависит от количества физических сокетов на узле.

Серверный процесс DAOS server instance может быть запущен как на физическом Linux-сервере, так и внутри виртуального Linux-сервера или контейнера. Его подпроцессы DAOS Engine осуществляют доступ к локальным PMEM-устройствам и NVMe-дискам, расположенным на данном узле хранения данных. Серверный процесс DAOS server instance отслеживает появление команд управления, поступающих по специальному порту, заданному посредством IP-адреса и номера TCP-порта, а также состояние интерконнекта, адрес подключения DAOS-сервера к которому задается с помощью URI локальной сети). Конфигурирование серверного процесса DAOS server instance и его подпроцессов осуществляется посредством задания параметров в конфигурационном файле /etc/daos (в формате YAML).

Для повышения пропускной способности передачи данных I/O-операций и снижения числа коллизий доступа к одному и тому же ресурсу всё доступное одному процессу DAOS Engine пространство памяти (как на PMEM-устройствах, так и на NVMe-дисках) делится на этапе создания DAOS-системы на несколько равных частей, таргетов. Таким образом каждый таргет имеет своё приватное адресное пространство памяти, свой собственный пул сервисных трэдов внутри процесса DAOS Engine, а также выделенный канал доступа к интерконнекту, передача данных по которому может быть выполнена независимо от других таргетов, расположенных на том же самом узле хранения данных. Таким образом таргет является программной моделью, представляющей в абстрактной форме часть аппаратных ресурсов узла хранения данных.

Число таргетов, обслуживаемых одним процессом DAOS Engine, задаётся в файле конфигурации и зависит от возможностей оборудования, в частности, от количества PMEM-модулей и NVMe-дисков в узле хранения данных. Разработчики системы DAOS рекомендуют использовать следующее количество таргетов: k*N, где N - количество NVMe-дисков, обслуживаемых одним процессом DAOS Engine.

В системе DAOS модель управление данными состоит из нескольких логических уровней:

  1. Верхний уровень состоит из т.н. пулов (далее - DAOS-пулов), которые могут быть распределены по нескольким узлам хранения данных.

  2. Средний уровень состоит из т.н. контайнеров (далее - DAOS-контайнеров), которые размещаются внутри каждого DAOS-пула.

  3. Нижний уровень состоит из т.н. объектов данных (далее - DAOS-объектов), которые размещаются внутри каждого контейнера.

Размещение DAOS-пулов по узлам хранения данных осуществляется по следующей схеме. Каждый DAOS-пул раделяется на т.н. фрагменты пула, pool shard, которые размещаются внутри таргетов одного или нескольких DAOS-серверов. Таким образом внутри каждого таргета процесс DAOS Engine может осуществлять управление данными логически относящимся к разным DAOS-пулам/контейнерам/объектам, а физически размещаемыми на PMEM-устройствах и NVMe-дисках одного узла хранения данных.

Daos System Example

Модель хранения системы DAOS.
На рисунке фрагменты пула 1 (синий цвет) распределены между таргетами узлов 1-4, фрагменты пула 2 (коралловый цвет) размещены на узле 1,
а фрагменты пула 3 (салатовый цвет) располагаются на узлах 3, 4.

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

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

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

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

Ниже представлены разные типы DAOS-контейнеров, содержащие примеры DAOS-объекты структурированных, полуструктурированных и неструктурированных данных.

Daos Container Type

В состав одной DAOS-система может входить сотни тысяч серверов и сотни пулов. Один сервере может поддерживать работу десятки таргетов, а внутри одного пула могут располагаться данные сотни контейнеров, каждый из которых может быть составлен из миллиарда объектов.

Daos Concepts List

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

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

Архитектурные отличия системы DAOS от других параллельных файловых систем

Основным отличием системы DAOS от других параллельных файловых систем является использование PMEM-модулей для хранения метаданных файлов (объектов). Таким образом в системе DAOS данные с произвольным доступом хранятся на устройствах, оптимизированных для чтения/записи в режиме произвольного доступа (RAM/PMEM), что позволяет существенно повысить общую производительность СХД.

Daos vs Lustre

Использование технологии NVMeOF для создания системы DAOS

Программный стек РСК БазИС СХД помогает гибко управлять ресурсами супервычислительного кластера. Одной из самых главных функциональных возможностей данного ПО является возможность осуществлять оркестрацию дисков СХД, используя для этого как локальные диски серверов СХД, так и удаленные, подключаемые к серверам СХД посредством низколатентной и высокоскоростной сети Omni-Path или InfiniBand. Точно также как и в случае отказоустойчивых СХД типа Lustre подобный подход позволяет создавать отказоустойчивые СХД типа DAOS.

В классической системе DAOS предполагается, что все узлы СХД будут иметь в аппаратном решении локальные диски NVMe SSD и модули памяти PMEM. В тоже самое время для стабильной работы системы DAOS общий объем PMEM-модулей в СХД должен составлять не менее 6% от общего объема системы (NVMe + PMEM). При размещении всех этих компонент в одном узле СХД возникает необходимость использовать большое количество PCI-линий. Например, ниже представлена схема узла, чья комплектация дисками NVMe SSD соответствует максимальной комплектации узла PMEM-модулями (NVMeOF/PMEM = 96/6 > 94/6).

NVMe PMEM Scheme 1

Для большинства вычислительных платформ поддержка такого количества PCI-линий невозможна. Однако, используя протокол NVMeOF, NVMe-диски можно подключить через сетевой интерфейс узла СХД без потери пропускной способности в передаче данных и тем самым сделать доступным определенное количество PCI-линий в узле СХД для других устройств. Ниже представлен схема такого аппаратного решения для DAOS-серверов, внутри которого размещены только PMEM-модули памяти.

NVMe PMEM Scheme 2

Подключение дисков по сети никак не сказывается на пропускной способности системы так как высокоскоростные сети Infiniband и Omni-Path являются полнодуплексными, то есть имеют два разнонаправленных потока каждый по 100 Gbit/s (или другой заявленной скорости).

Таким образом, можно создать более гибкие системы DAOS, которые используют аппаратные модули в гиперконвергентной парадигме: к примеру узлы с PMEM-модулями можно использовать не только как DAOS-серверы, но и перепрофилировать под задачи AI/ML, Grid-систем и т.д.

DAOS Usage Scenario