Программные системы хранения данных

16 Июля 2018

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

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

В настоящее время, кроме традиционных аппаратных систем хранения данных, активно развивается и программная система хранения данных. Эта публикация — обзор современных трендов в области хранения информации.

Программные системы хранения данных

Аппаратные хранилища с резервированием

Для начала несколько слов о том, что сейчас представляют собой аппаратные хранилища с резервированием. Это или RAID массив, или NAS хранилище (Network Attached Storage) — сетевые хранилища. Последние обычно построены на базе той же технологии RAID. Диски могут быть объединены в RAID-массив какого-либо уровня (обычно 1-го, реже — 5-го).

Как технология, RAID (определение — Redundant Array of Independent Disks) устарела. Она верой и правдой служила нам более 30 лет (впервые термин «RAID» прозвучал в 1987 году), но сейчас мы наблюдаем ее закат.

RAID массив, как мы уже знаем, представляют собой несколько накопителей (жесткие диски, реже — SSD), объединенных между собой. Методика, по которой выполняется резервирование информации, называется уровнем RAID. RAID 1 — обычное зеркалирование, когда в наличии имеется пара накопителей, и записываемые данные дублируются непосредственно на оба диска массива. Самый популярный из уровней — RAID 5. Он более экономичен — данные распределяются по всем винчестерам массива, минимальное количество — три.

Экономичным это уровень делает то обстоятельство, что при нем больше пространства остается именно под запись данных (особенно, по сравнению организацией через RAID 1). Характерное свойство уровня RAID 5 в том, что он обеспечивает посредственную скорость записи, зато отличное время чтения, поскольку потоки данных с ряда накопителей массива распараллеливаются.

Однако, RAID массив имеет свои недостатки. Во-первых — это плохая масштабируемость — вы только вдумайтесь, технология создавалась 30 лет назад, когда жесткие диски стоили дорого, вращались со скоростью 3600 оборотов в минуту и позволяли записывать мегабайты (!) данных. В 1987 году типичный жесткий диск был размером 21 Мбайт. В 1997 году отличным считался размер 1–2 Гбайт. Сегодня типичный SATA-диск — это 1 Тбайт. У каждого уровня RAID есть ограничения на количество накопителей, которые можно объединить в массив. Для классического варианта RAID 1 — всего два диска. Это означает, что та коробочка в офисе уже не масштабируется, из нее выжато все. Максимум, что можно сделать, — это заменить оба жестких диска более емкими (вместо дисков в 1 Тбайт установить диски по 2 Тбайт). Для RAID 5 максимум составляет 16 дисков. Конечно, есть современные уровни вроде RAID 50 и RAID 51, позволяющие установить 60 дисков. А теперь считаем: пусть у нас есть массив RAID 50, в который мы можем установить 60 дисков по 1 Тбайт. Учитывая полезное использование емкости дисков в 67% для этого уровня, полезный объем (который можно использовать для хранения данных) составит 40 Тбайт.

Во-вторых — это минимальный период восстановления после сбоя — представим, что у нас есть массив уровня RAID 1, состоящий из двух дисков. Если один из жестких или виртуальных дисков выйдет из строя, то RAID-массив продолжит работу в аварийном режиме, ожидая замены диска. В это время массив уязвим, поскольку содержит одну копию данных. Как вычислить время восстановления? Это время, за которое контроллер запишет данные с рабочего диска на новый. В среднем — это 100 Мбайт/с, если контроллер не нагружен. Если массив хранит 1 Тбайт данных, то время восстановления составит 10 тыс. секунд или 2,7 часа. И это не учитывая времени, потраченного на физическую замену диска, которое может оказаться гораздо больше, чем время копирования. Например, в наличии может не оказаться нужного диска, и за ним придется куда-то поехать. А по современным меркам даже 2 часа — это много.

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

При всем этом стоимость аппаратных RAID-решений ой как недешева! Конечно, фанаты RAID могут привести аргумент, что можно создать программный RAID-массив, что существенно удешевит стоимость массива. Да, это так. Но в этом случае страдает производительность.

Обратите внимание, что мы постепенно смещаемся к программным решениям. Именно программная система хранения данных обеспечивает следующие преимущества:

  • хорошую масштабируемость;
  • приемлемую стоимость;
  • высокую скорость.

Но обо всем по порядку.

Программные хранилища с резервированием

В мире аппаратных решений вариантов не так и много — 30-летняя технология RAID и ещё ряд вариантов, основанных на её базе. Выбор аппаратного решения основывается на требуемом уровне RAID и покупке «железа», поддерживающего тот или другой уровень (ну и, конечно же, к приобретению нужного количества дисков).

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

Вариантов много: Parallels Cloud Storage, MooseFS, Ceph, Lustre, GlusterFS — это лишь наиболее популярные.

Программная система хранения данных дает максимум решений для различного рода оптимизации. Данные могут быть разделены по общему кластеру, либо по всем установленным дискам кластера, и если из строя ввиду поломки или ошибки выйдет один из дисков, автоматически запускается процесс репликации. Преимущество очевидно — нет необходимости ждать, пока администратор заменит сломавшийся диск, не говоря уже о скорости самой репликации. На рис. 1 показана диаграмма времени репликации классического RAID уровня 1 и кластера PStorage, построенного на базе 7 и 14 серверов. Используются SATA-диски на 1 Тбайт, а скорость передачи данных по сети (теоретическая) составляет 1 Гбит/с.

Программные системы хранения данных

Рис. 1. Время репликации 1 Тбайт

Полагаю, результаты не нуждаются в каких-либо комментариях.

Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Мы здесь не станем рассматривать, чем отличаются одна от другой программная система хранения данных. Если вам все-таки интересно, рекомендую ознакомиться с кратким сравнением (http://www.yet.org/2012/12/staas/), по результатам которого становится понятно, что самым универсальным вариантом на сегодняшний день является система Ceph (рис. 2). Она позволяет покрыть все потребности современного предприятия. Если вам нужно NAS хранилище, SAN, распределенная файловая система и хранилище объектов, то ваш выбор — Ceph.

Сравнение разных программных систем хранения данных

Рис. 2. Сравнение разных программных систем хранения данных (иллюстрация с ресурса http://www.yet.org/2012/12/staas/)

Распределенная система Ceph

Итак, Ceph — это система хранения данных отличающаяся открытым исходным кодом, обеспечивающая высокую живучесть системы. Действует в составе группы из нескольких Linux-машин или тысяч узлов. Обратите на неё внимание, если вы используете Linux-server или CentOs. Она отличается масштабируемостью, высокой надежностью и отличной производительностью. Система Ceph хранит объекты на програмно-распределенном компьютерном кластере и это удобный интерфейс для обеспечения сохранности файлов.

Ceph, создающая NAS хранилище, построена на следующих архитектурных принципах:

  • нет единой общей точки отказа;
  • все компоненты являются масштабируемыми;
  • в основу заложен код открытого ПО;
  • максимум самоуправляемости — везде, где это возможно;
  • для работы системы применяются общедоступные аппаратные средства.

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

Штатный режим работы Ceph

Рис. 3. Штатный режим работы Ceph (анимация)

Что происходит в случае сбоя

Рис. 4. Что происходит в случае сбоя

На рис. 3 показано, как работает Ceph в штатном режиме, а на рис. 4 — что произойдет с Ceph в случае сбоя. При повреждении или отказе отдельного узла (или диска) система Ceph обеспечит сохранность данных, и в автоматическом режиме восстановит их на других узлах копии — до того момента, пока они не будут заменены или отремонтированы. Нужно отметить, что, в отличие от RAID, ребилд происходит без секунды простоя и полностью незаметен для клиентов. Потеря одной из копий данных переводит систему в состояние degraded. После этого копия объекта переносится на рабочий узел и выполняется ремаппинг. Новая карта будет содержать новое расположение потерянной копии объекта. Все это выполняется автоматически — без вмешательства администратора и, конечно же, незаметно для пользователя. Задержка не более пары секунд.

Откуда появляется высокая производительность? Данные в Ceph квантуются на маленькие части и далее разносятся псевдослучайно по OSD (Object Storage Device) — устройству хранения объектов. Это приводит к тому, что реальные операции ввода/вывода пользователя система равномерно «размазывает» по всем дискам, установленным в единый кластер, что позволяет снизить конкуренцию между клиентами за дисковый ресурс (в качестве бонуса клиент получает существенно большие лимиты по пропускной способности и IOPS).

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

Ceph (http://ceph.com/) — система свободная и бесплатная. Но некоторые компании, в том числе и общеизвестная Red Hat, могут продавать собственные инновационные решения, сформированные на базе Ceph. Клиент сможет выбрать уже готовое решение, например, Red Hat Ceph Storage, а можете построить собственный кластер, и это будет стоить гораздо дешевле (особенно, учитывая, что большая часть оборудования у вас уже есть).

Итак, преимущества внедрения Ceph выглядят так:

  • аппаратный отказ узла (диска) незаметен для пользователей;
  • снижения задержки ввода/вывода до уровня SSD-диска;
  • время простоя системы при отказе отдельного элемента кластера равно 0;
  • исключена единая точка отказа;
  • доступны снэпшоты, клонирование, а также инкрементные диффы;
  • сверхнизкая стоимость на услуги, что возможно из-за работы на стандартном оборудовании.

Дополнительные материалы

Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent