Как стать автором
Обновить
0

Новая система хранения в облаке

Время на прочтение5 мин
Количество просмотров19K
Буквально пару дней назад мы ввели в эксплуатацию новейшую систему хранения, над созданием которой трудились последние полгода. Прежде чем рассказать, что же в ней нового, я расскажу об истории ее развития.

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

В момент, когда мы проектировали систему, а это был 2007 год, на рынке существовало 3 основных технологии для организации сетевых хранилищ: iSCSI по Ethernet 1/10 Гбит/с, FibreChannel 4 Гбит/с и Infiniband 40 Гбит/с. Проведя исследования, в том числе и по ценовым характеристикам, мы выбрали последний вариант с Infiniband. Это позволило нам использовать одну сетевую фабрику как для системы хранения, так и для передачи IP-данных. На первый взгляд это кажется странным, так как многие привыкли думать про Infiniband как об очень дорогой экзотичной технологии из мира суперкомпьютеров. Но простое сравнение цен показывает, что в данном случае Infiniband является очень экономичным.

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

Касательно самих хранилищ, мы не нашли ни одного готового производительного решения способного работать с Infiniband; что-то было у LSI и DDN, но в очень сыром виде. Еще раз просчитав стоимость отказоустойчивых решений на базе iSCSI и FC, мы поняли, что по получившейся цене никто их покупать не будет.

В тот момент к нашей компании присоединился Максим Лапань, имевший опыт работы с коммерческим продуктом фирмы IBM — кластерной файловой системой GPFS. Оказалось, что GPFS умеет напрямую работать с Infiniband, максимально задействуя все ее возможности, и имеет все инструменты для резервирования. Так и была создана первая версия системы хранения облака Скалакси. Использовались raid10 на узлах GPFS и двукратное резервирование самих узлов. Образы дисков виртуальных машин лежали в виде обычных файлов на GPFS.

Однако в процессе эксплуатации выяснилось, что наши задачи GPFS решает крайне плохо. Во-первых, частые падения во время конфигурации кластера (добавление новых узлов и т.д.). Коллеги, пошедшие по нашему пути, и сейчас сталкиваются с различными проблемами. Во-вторых, низкая производительность: GPFS изначально проектировалась для последовательной работы с большими кусками данных, например, для стримминга видео-файлов, а не для работы с образами пользовательских дисков, где на первый план выходит произвольный доступ небольшими блоками.

Мы стали думать над проблемой, пробовать разные решения. При этом, очень хотелось уйти от проприетарных и непредсказуемых технологий. Наткнулись на VastSky, разработку VA Linux Systems. Ее архитектура была очень похожа на то, к чему двигались мы — использование device-mapper драйвера для работы с пользовательскими образами. LVM также работает на базе этого драйвера и является по сути его управляющей утилитой. Однако VastSky еще не готов к использованию в продакшн системах.

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

image

В нашем облаке существует три типа серверов:

VRT (ViRTualization) — бездисковые серверы виртуализации, на которых запущены клиентские виртуальные машины.
IBRP (IB Raid Proxy) — прокси-серверы системы хранения, задача которых обслуживать рейды.
IBRN (IB Raid Node) — узлы системы хранения, в которых находятся диски и кэши.

Фото стойки c IBRN спереди:

image

Сзади:

image

Фото Infiniband свитча:

image

Работает это все следующим образом:

— IBRN экспортируют свои диски по Infiniband SRP (SRP — SCSI over RDMA Protocol) используя драйвер SCST с кэшированием, самый быстрый открытый драйвер SCSI-таргетов. SCST вообще хорошая штука, её нам посоветовал все тот же Максим Лапань; разрабатывают ее русские парни. Она позволяет из любой коробки с Linux сделать хранилище уровня «энтерпрайз».
— IBRP получают диски от IBRN, для каждой пары IBRN собирают raid10 с помощью md, чей код мы тщательно выверили на работоспособность в конкурентных условиях, создают на этом рейде LV-группу и экспортируют его опять через SCST уже без кэширования.
— VRT получают диски от всех IBRP, драйвер multipath создает из них round-robin группу, таким образом распределяя нагрузку по всем IBRP.
— При создании нового диска на одном из IBRP выполняется команда lvcreate, запоминается таблица device-mapper для созданого тома, через device-mapper устройство создается уже на VRT и отдается в Xen.
— I/O операции на запись из клиентской виртуальной машины доходят до IBRP, попадают в md, md делает запись на обе IBRN и только после этого возращает наверх ответ о том, что операция прошла успешно. Таким образом, при падении любого узла I/O операция в клиентской машине обработается корректно.

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

Далее мы составили список сценариев тестирования этой системы на отказоустойчивость и многократно их провели, ниже результаты:

1. Зависание IBRN или падение по питанию.

Тесты пройдены успешно. На некоторое время I/O на клиентских машинах замораживается, пока не сработает таймаут дисков на IBRP. Далее md на IBRP отключает диски упавшей IBRN и продолжает работу. После восстановления IBRN синхронизация md проходит успешно в течение суток.

2. Остановка IBRN выгрузкой SCST драйвера.

Тесты пройдены успешно. Ход событий аналогичен предыдущему тесту, только без таймаута.

3. Зависание IBRP или падение по питанию.

Тесты успешно пройдены. По таймауту разрывается SRP-сессия, и multipath на VRT удаляет путь. На клиентских машинах все I/O замораживается на время таймаута multipath.

4. Остановка IBRP выгрузкой SCST драйвера.

Тесты успешно пройдены. После выгрузки SCST корректно разрывается SRP-сессия, и multipath на VRT сразу помечает путь как failed. Для клиентов все выглядит прозрачно и без таймаутов.

5. Сбойный диск в IBRN (выдергиваем диск на горячую).

Тесты успешно пройдены. Диск исчезает в IBRN, сыплются ошибки, также сыплются ошибки на IBRP, а md постоянно редиректит на зеркало. После вставки диска обратно, синхронизация md проходит успешно в течение суток.

6. Перезагрузка Infiniband свитча.

Тесты успешно пройдены. Свитч отключался по питанию на пару секунд и включался обратно. При перезагрузке наблюдалось: падение и поднятие IB-линков, разрыв и восстановление SRP-сессий, временное падение путей multipathd на VRT. Клиентское I/O замораживается на время перезагрузки.

7. Одновременное падение IBRP и IBRN.

Тесты успешно пройдены.

8. Одновременная остановка пары IBRN выгрузкой SCST драйверов.

Тесты успешно пройдены. В ходе теста пара IBRN была остановлена, перезагружена и введена обратно в строй. Все это время I/O клиентских машин было заморожено, после окончания теста все клиентские машины разморозились, I/O операции возобновились. Вывод — одновременную остановку пары IBRN можно производить для обслуживания физических серверов IBRN в регламентное окно (с 2 ночи до 6 утра).

Напомним, что все серверы системы хранения стоят в нашем дата-центре Оверсан-Меркурий, к каждой стойке подведено два источника питания от независимых вводов, дополнительно это резервируется ИБП и дизельными генераторами. Таким образом, что бы уронить такое хранилище, нужно заблокировать (например ОМОНом) подвоз дизельного топлива к ДЦ и обесточить всю Москву на неделю.

Производительность новой системы хранения поистине колоссальна, нам удалось получить более 120 тысяч IOPS на запись с пары IBRN. Но об этом мы расскажем в одном из следующих постов, проведя сравнительный анализ производительности дисковых подсистем различных российских и зарубежных облачных хостингов.

Те, кто уже сейчас хочет проверить новую систему хранения, могут клонировать свои имеющиеся серверы (все новые диски создаются на новой системе), либо подождать до следующей недели, когда мы проведем окончательную миграцию. Тем, у кого еще нет серверов в Скалакси, самое время их завести, при регистрации для тестирования доступны 150 рублей.
Теги:
Хабы:
Всего голосов 58: ↑49 и ↓9+40
Комментарии77

Публикации

Информация

Сайт
www.oversun.ru
Дата регистрации
Дата основания
2008
Численность
51–100 человек
Местоположение
Россия

Истории