Программно-определяемые системы хранения в Linux

Что такое программно-определяемые хранилища?
SDS (Software-Defined Storage) имеет еще более размытые границы определения, чем модный с некоторого времени термин Big Data. В общем случае, понять суть SDS можно из названия — хранилище данных, не зависимое от аппаратной реализации. По сути, SDS может быть как облачным хранилищем с одним или несколькими интерфейсными протоколами доступа, так и документно-ориентированной БД. Из этого определения следует основное свойство — масштабируемость системы, когда количество доступных ресурсов (объем хранилища) либо качество доступа (скорость работы) наращиваются без изменений архитектуры, которые как-то может обнаружить клиент.
Рассмотрим самые «знаковые» из существующих решений SDS.
Apache Cassandra
Apache Cassandra — NoSQL СУБД, написанная на Java и обрабатывающая огромные массивы данных. Ключевая изюминка Apache Cassandra — работа с хэш-таблицами типа «ключ-значение». Apache Cassandra попадает под определение SDS за счет своей кластерной архитектуры — так, одно из крупнейших решений на этой системе включало более 400 серверов и обслуживало БД размером более 300 ТБ.
CouchDB
Следующий продукт — также система управления базами данных NoSQL-формата. CouchDB разработана на Erlang-е и построена на древовидной архитектуре из JSON-документов. Интерфейсную часть системы исполняет встроенный веб-сервер с JavaScript-интерфейсом для работы с приложениями.
Система поддерживает механизмы репликаций, кластерную архитектуру и прочий необходимый функционал.
MongoDB
Пожалуй, самая популярная NoSQL-СУБД, MongoDB написана на благородных C++ и C, ну и JavaScript-е еще. Система работает с JSON-документами (хранятся в бинарном формате BSON).
Помимо высокой производительности и масштабируемости, эта СУБД интересна своим «интерфейсом файловой системы» – GridFS, обладающим функциями репликации и распределения нагрузки.
Также MongoDB интересна отсутствием механизма транзакций — документ как минимальная сущность данных, обновляется только целиком.
Redis
Следующая по популярности NoSQL-система — Redis. Этот продукт известен, прежде всего, своей высокой производительностью — база данных изначально хранится в оперативной памяти, и оттуда регулярно реплицируется на дисковые накопители. Доступ к данным происходит в формате «ключ — значение».
Swift
Swift — по сути, распределенная файловая система с объектными интерфейсом REST. Доступ к определенным данным происходит посредством трех-уровневого пути вида /account/container/object, где object — конечное имя данных, а account и container выступают в качестве имен группировок.
Swift является частью облачного OpenSource-комплекта OpenStack и поддерживает кластерную архитектуру.
Структурно Swift-архитектура включает в себя Прокси-сервер (обрабатывает клиентские запросы вида /account/container/object и выполняет маршрутизацию данных к каждому серверу кластера), Сервер обработки объектов (хранилище двоичных данных), Сервер обработки аккаунтов и Сервер обработки контейнеров (оба последних обрабатывают списки объектов соответствующих групп).
Ceph
Система Ceph также предоставляет доступ к данным как распределенное хранилище. POSIX-интерфейс доступа к данным системы реализован через штатную утилиту cmdline, имеются также клиенты FUSE и Amazon S3.
Ceph построен по модульной архитектуре — отдельные компоненты системы выполняют отдельные группы задач. Для базового функционала достаточно трех базовых модулей – сервера обработки объектов, сервера мониторинга и шлюза RADOS.
Nexenta OS
Решение все-в-одном, Nexenta OS представляет собой операционную систему на базе Ubuntu с использованием ядра OpenSolaris.
Система поддерживает интеграцию с ПО VMWare и Docker, а также облачными пакетами OpenStack.
В этой статье мы рассмотрели самые популярные из программно-определяемых систем для хранения данных в различных дистрибутивах Linux.
Чтобы узнать о них намного больше, а также научиться применять знания на практике — приходите на курсы IT Education Center!