International conference of developers
and users of free / open source software

Многослойные и многоуровневые системы хранения данных.

Александр Клыга, Minsk, Belarus

LVEE 2017

In multilayers data storages the storage drivers are grouped into separate layers according to their technical characteristics. The first layer contains high-speed solid-state drivers (SSDs), whereas the other layers can have HDDs or others storage devices (tape, optical devices). The multilayer data storage provides high speed data access and can be formed by using hardware or software solutions. In multilevel software-define storages (SDS), the separate data storage are grouped with respect to levels of their technical characteristics, the type of stored data, and availability requirements for the end user. Multilevels SDS allows for optimization of the data placement in the storage. The main node of SDS is represented by a controller. The SDS controller is a software platform (open source and other) which includes solution tools for management, monitoring and migration of data between layers.

Многослойные и многоуровневые системы хранения данных. Обзор архитектуры и решений на базе open source.

В настоящее время развитие систем хранения данных (СХД) обусловлено следующими тенденциями (по материалам конференции 1):

  • постепенно разработка новых накопителей для хранения данных на базе магнитных дисков замедляется, при этом отмечаются технологические проблемы с производством дисков большой емкости;
  • стремительное развитие технологий производства устройств хранения данных на базе flash памяти. При этом их емкость постоянно увеличиваются, а надежность хранения данных гарантируется на высоком уровне;
  • цена устройств на базе flash памяти больше не является сдерживающим фактором их применения в системах хранения данных;
  • использованием нового интерфейса NVM Express (NVMe, NVMHCI – Non-Volatile Memory Host Controller Interface Specification 2) для твердотельных устройств хранения данных (SSD);
  • использование решений с открытым кодом для построения программно-определяемых систем хранения данных.

Популярным архитектурным решением СХД являются многослойные хранилища данных разработанные на базе технологии тиринга (от анг. tiering) и использующие интеллектуальные алгоритмы распределения данных между слоями. В основе технологии тиринга лежит принцип разделения хранилища данных на слои, отличающихся производительностью в зависимости от используемых типов запоминающих устройств, из которых оно состоит (например, твердотельные диски SSD или разноскоростные шпиндельных HDD). Для управления размещением данных по слоям СХД могут использоваться как аппаратные решения, например, RAID контроллеры с поддержкой технологии тиринга, так и различные программные решения (в том числе на базе open source). Одним из преимуществ использования программных решений является, то что в качестве слоев могут быть использованы дополнительные хранилища данных подключенные к контроллеру СХД.

При многоуровневом построении СХД отдельные хранилища данных группируются по уровням на основании их технических характеристик, типа хранимых данных, и требований доступности для конечного потребителя. Многоуровневые СХД, как правило, реализуются виде программно-определяемых систем хранения данных или software-define storages (SDS).

Многослойные системы хранения данных.

Технология тиринга применяемая при создании многослойных СХД позволяет группировать устройства хранения данных в отдельные слои в зависимости от их типа и характеристик. Для улучшения производительности хранилища данных между сломи могут располагаться дополнительные cache-layer, основное назначение которых повышение производительности при миграции данных между слоями, или уменьшение латентности отклика данных между пространством пользователя и СХД. Общая структура СХД с многослойной структурой приведена на рисунке ниже.

Обычно в качестве cache-layer используют RAM-диски созданные в ОЗУ или SSD диски, если необходимо кэширование между слоями с медленными накопителями. В слой fast-layer, как правило, объединяют быстрые диски, типа SSD, но при этом важно учитывать их технические характеристики. Так, например, при использовании SSD с интерфейсом NVMe, рекомендуется делать несколько слоев fast-layer, объединяя в каждый слой SSD накопители одного типа. В слои slow-layer как правило, объединяют шпиндельные накопители на магнитных дисках (HDD), группируя исходя из их технических характеристик, либо иные типы накопителей, например, ленточные.

Суммарный объем многослойного СХД равен сумме объемов каждого слоя, при этом необходимо учитывать, что по мере заполнения слоя данными, часть его объема может быть зарезервировано для операций миграции данных (до 5% или более от общей емкости слоя).

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

В рамках второй концепции возможности создания многослойных СХД реализуется с помощью программного менеджера накопителей в файловой системе (наиболее популярное решения для хранилища данных модели DAS). Такой подход реализованы, например, в файловых системах как Bcachefs (3), ZFS (4) и Btrfs (5). Основным преимуществом этой концепции является то, что пользователь может полностью управлять как слоями так и накопителями в СХД.

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

Многоуровневые системы хранения данных.

В основу концепции многоуровневых систем хранения данных положен принцип объединения отдельных хранилищ данных в единую СХД с общим центром управления и мониторинга, основанную на модели программно-определяемых систем хранения данных (software-define storage или SDS). Основным компонентом многоуровневого СХД является контроллер, который осуществляет мониторинг и анализ статистики работы отдельных хранилищ данных, управляем миграцией между уровнями, и обеспечивает подключение новых хранилищ к СХД. Общая структурная схема многоуровневого СХД приведена ниже.

На верхнем уровне, как правило, располагают хранилища данных взаимодействующим с пространством пользователя. На втором уровне, как правило, располагают хранилища данных основное назначение которых хранить «холодные данные» с хранилищ первого уровня, и поддерживать миграцию данных между ними. На третьем и ниже уровне могут находится хранилища архивных данных. Основным преимуществом такой модели СХД является оптимизация хранения данных на первом уровне и распределение нагрузки между хранилищами.

Для реализации многоуровневых СХД могут быть использованы различные программные решения, например, в качестве контроллера может быть использован open source проект CorpHD (8). Одним из его преимуществ является интеграция с объектным хранилищем данных Ceph, и гибкая настройка архитектуры.

Программно-определяемые хранилища данных являются перспективным направлением развития систем хранения данных и поэтому Linux Foundation в октябре прошлого года объявил о старте нового проекта по созданию Open Controller for Software-Defined Storage (9), который станет основой для построения открытых решений SDS. Ознакомится с этим новым проектом можно на его официальном ресурсе (10).

Ссылки

1 Flash memory summit: // Flash memory summit

2 NVM Express: // The official site NVM Express

3 Bcachefs: An advanced new filesystem for Linux // bcachefs.org

4 ZFS: Zettabyte File System (OpenZFS project) // open-zfs.org

5 Btrfs: Btrfs is a modern CoW filesystem for Linux // btrfs

6 Ceph: The future of storage // Ceph

7 Gluster: Storage for your Cloud // gluster.org

8 CorpHD: An open source software defined storage controller // CorpHD

9 The Linux Foundation creates Open Controller for Software-Defined Storage // The announcements Linux Foundation

10 OpenSDS Project // OpenSDS Project

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Back