...

четверг, 17 сентября 2020 г.

СХД, которая не устаревает. Никогда

image

Поначалу история звучит довольно просто: СХД хорошо работает три года на расширенной гарантии, относительно нормально живёт четвёртый, а на пятый покупается новая вместо устаревшей. Вендоры выжимают из вас деньги повышением стоимости поддержки и всякими платными фичами вроде поддержки VDI. Можно поломать эту схему? Наверное, да.

Компания вышла на рынок с интригующим предложением: железяка всегда работает, всегда делает это быстро, стоимость поддержки каждый год одна и та же, все фичи доступны сразу. Ну то есть просто взяли коробку и время от времени меняют в ней комплектующие так, что они устаревают примерно со скоростью замены. Раз в три года обновляются контроллеры, есть возможность замены старых дисков на более современные, т. е. занимаемое СХД в стойке место может не только расти, но и уменьшаться, при этом объём и производительность увеличиваются.

Собственно, первое, что вы видите в стойке — это ручки с названием модели, за которые можно и нужно дёргать контроллеры из массива.

image

Делается это без выключения, наживую, и запас производительности такой, чтобы банковские системы не тормозили во время замены. Чтобы так получилось, понадобилось написать собственную файловую систему (точнее, аналог RAID), собрать внутри кластер и сделать ещё пару улучшений, заодно выкидывая оверхед, доставшийся от жёстких дисков.

Давайте посмотрим, что получилось и как получилось. Начнём с архитектуры.

Для начала — процедура работы с массивом не предусматривает кнопок питания. Совсем. Не понадобится. Для выключения достаточно просто выдернуть кабели из PDU.

image

Архитектура Pure Storage


Компания начинала с того, что разработала с нуля очень хорошую архитектуру, заточенную под флеш (c 2017 года — NVMe), и эффективные алгоритмы дедупликации и компрессии данных. Расчёт был такой: на рынке тогда были массивы из жёстких дисков, гибридные решения и SSD all-flash. Флешовые были дорогие, а дисковые — медленные. Соответственно, они ворвались в конкурентное окружение с флешовыми массивами по цене владения дисковых.

image

Сделали вот что:

  1. Написали собственную ОС для дисков. Главная особенность — быстрое сжатие данных перед записью, а потом постпроцессинг с мощным дедупом, который позволяет утрамбовать их ещё плотнее и точнее.
  2. Взяли только флешовые диски (сейчас это вообще строго NVMе) и мощное железо для вычислений.

Первые внедрения были под VDI-среды, поскольку данные там очень хорошо сжимаются. Алгоритмы дедупликации и сжатия давали выигрыш в шесть–девять раз по используемому месту, то есть при всех преимуществах all-flash скидывали цены примерно на порядок. Плюс подкупала экономическая модель: фиксированная стоимость на поддержку и возможность не менять железку. Тогда я увидел первые замены двух стоек на трёх или шестиюнитовые исполнения, но всё ещё не верил, что эта железяка будет использоваться где-то за пределами VDI.

И тут LinkedIn начал хранить на этих железках. Подключился AT&T. Топ банков и телекомов в США тоже закупил в прод.

Оказалось, алгоритмы сжатия достаточно хорошо подходят для сред разработки и тестирования. После замены SSD на NVME внезапно началась конкуренция в обычных транзакционных базах данных в банковском сегменте. Потому что массив получался быстрым и надёжным из-за своей архитектуры «в любой момент можем потерять два любых флеш-модуля». Потом вышел флеш-массив на более дешёвых чипах (QLC) со временем отклика 2–4 мс, а не 1 мс как в топовых моделях, и я начал наблюдать вынос тех же VNX и Compellent. Стало понятно, что железка вполне себе конкурентоспособная.

Естественно, стоимость ТБ будет по-прежнему высокой там, где есть несжимаемые данные: это шифрование, хранение архивов, видеопотоки (видеонаблюдение) и библиотеки изображений, но иногда и такие внедрения случаются, когда клиенту требуется большая производительность. Знаю случай, когда сжали видео (казалось бы, сжатые данные) дополнительно на 10 %.

Но даже для обычных баз данных оказалось вполне рабочей по цене за гигабайт.

И вот тут-то начала подкупать модель «вечнозелёной» СХД.

Постоянный апгрейд


За пять лет в железке из старого остаётся только шасси и блоки питания, по сути. Можно переезжать рывками с переносами, а можно менять комплектующие как в кластере. Собственно, это и есть кластер, только собранный в одной трёхюнитовой (или шестиюнитовой) коробке. Железо делали с нуля для себя. Сначала давайте посмотрим на архитектуру, а потом перейдём к тому, почему удобно менять её по кускам.

image

Интересные решения такие:

  • Вычислительная мощность всегда в два раза избыточная: это нужно для замены контроллера без деградации производительности. При этом на фронте работают оба контроллера, а на бэкенде для записи на флеш-модули используется один контроллер.
  • RAID-массив заложен на уровне ОС контроллеров, он N + 2, то есть можно без остановки вытаскивать два любых диска. Что самое смешное, как вытаскиваешь — можно поменять их местами и воткнуть обратно, и всё продолжит работать. Это я на тестах проверил.
  • Поскольку дисков N + 2, всегда можно восстанавливать данные, используя наименее занятые диски. То есть если данные хранятся на пяти дисках, то достаточно трёх из них для полноценного чтения. И RAID, собственно, читает с трёх дисков, потому что восстановить данные, используя процессорную мощность второго контроллера (который стоит в запасе фактически) быстрее, чем прочесть полный набор.
  • И можно выбирать для чтения наименее занятые диски! То есть если в нашем примере данные на пяти дисках, то мы будем читать с тех, куда не идёт запись. Система приоритетов тоже на уровне ОС контроллера, и это какая-то чёртова магия.
  • Как вы помните, кэша контроллера нет! Есть буфер на запись, установленный отдельно в шасси, он маленький (несколько ГБ), и он задействуется доли секунды во время онлайн-сжатия данных. Защищён он, кстати, большими конденсаторами, которые позволяют успеть записать всё из буфера при отключении питания. Это я тоже несколько раз проверил. Буфер защищён зеркалированием двойным, там четыре модуля в RAID 10.
  • Вместо кэша контроллера на чтение — сами NVMe-диски, на запись — модули NVRAM. Дополнительно возможна установка модулей Optane. Архитектура не похожа на мидрейндж — не зеркалирует кэш, нет классического кэша (но есть SCM-память), нет накладных расходов на это.
  • Вместо кнопки питания просто гнездо кабеля. Если его вдруг нужно куда-то перевозить, то есть процедура выключения, но можно просто дёрнуть кабель. Страшно, но работает.
  • На первичной записи в буфере лёгкая компрессия примерно уровня 3:1, дальше данные пишутся на диск и потом на постпроцессинге прогоняются тяжёлыми алгоритмами и дедупом. Гранулярность блока 512 байт при том, что норма в индустрии 8 КБ. Если блоки повторяются — они плавающие, то есть на повторах границы раздвигаются. Это даёт лучшие коэффициенты сжатия по сравнению с другими вендорами. Старые архитектуры заточены на HDD, новые же позволяют менять время процессоров на более плотную упаковку.
  • Приложение может прозрачно переезжать без переключения томов на другие такие же устройства (это для удалённой репликации). Весь софт входит в базовую поставку, апдейты приходят в виде обновлений прошивки.

image

Но компании оказалось мало собрать свою архитектуру и написать к ней фактически серверную ОС. Они залезли ещё в низкий уровень самих флеш-чипов и выпустили свои. Но при этом совместимые со стандартами. Сверху интерфейс NVMe, внутри чипы своей разработки.

image

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

image

Если в обычной дисковой полке каждый SSD или NVMe-модуль — это маленький чёрный ящик для контроллера, то тут он видит вообще всё. Понадобилось это при решении проблемы большого адресуемого объёма, потому что проблемы flash-массивов всё те же: управление износом, сбор мусора и т. п. Это делается прошивкой контроллеров.

image

image

То есть, как видите, пазл складывается так: дешёвое место достигается за счёт обмена на производительность. Высокая производительность означает постоянное избыточное число процессоров и RAID. Избыточное число процессоров означает мощный постпроцессинг сжатия и возможность терять любую часть без потери производительности. RAID сочетается с этой идеей. То есть все эти преимущества чуть ли не бесплатно дают фишку вынимать любую часть «наживую».

Дальше приходит маркетинг и предлагает громкое заявление «нестареющая СХД». Фиксированный ценник поддержки, включено всё ПО, никаких дополнительных бандлов. За счёт отдельного уровня сервиса можно делать замену контроллеров бесплатно раз в три года (Evergreen GOLD-уровень). Есть апгрейды по мере повышения требований: я видел, как XR2 поменяли на XR3. Поработал год, потом пришёл бизнес, сказал, нам нужно новое. У вендора есть вариант сдать старые контроллеры трейд-ином и получить новые раньше времени. Хороший апгрейд. Контроллеры просто меняются по одному.

Апгрейд дисков интереснее. Приходит сервисная полка дополнительная с дисками с завода. На полку мигрируются данные без остановки — все данные с тех носителей, что подлежат замене. Полка работает с основными контроллерами (у неё есть и свои). Фактически это юнит-датапак, временное хранилище. Когда миграция кончается, диски помечаются как ОК, инженер их вынимает из шасси. На место старых вставляет новые и запускает обратную миграцию. Это занимает день и больше, но приложения и сервера не замечают. Поскольку эти СХД часто стоят у сервис-провайдеров, есть возможность одновременной замены и апгрейда: в рамках Evergreen GOLD можно старые диски поменять на несколько новых ёмких и быстрых, плюс докупить таких же.

Так, хорош заливать, слабое место всегда компрессия!


Это мы привыкли слышать от пользователей дисковых СХД. Там история стандартная — функционал не предусматривался при разработке архитектуры — включили сжатие, приложение остановилось, дальше потратили много времени на то, чтобы всё заново восстановить под ругань руководства. Как уже говорили, в Pure Storage пошли другим путём — дедупликацию с компрессией сделали базовым неотключаемым функционалом. Результат — сейчас Pure Storage cтоит более чем в 15 тысячах инсталляциях. Во время инициализации можно поставить галочку «давать обезличенную статистику», и тогда ваша СХД будет отправлять в систему мониторинга Pure 1. Гарантия для баз данных, например, — 3,5:1. Есть конкретные особенности — тот же VDI от 7:1 и выше. Массивы продаются не по сырому месту, а по полезной ёмкости с гарантией допоставки, то есть если у вас при миграции окажется уровень сжатия ниже гарантируемого, вендор ставит больше физических дисков бесплатно. Вендор говорит, что диски доставляются в примерно 9-10 % случаях, и ошибка редко превышает пару накопителей. В России я такое ещё не видел, коэффициенты совпадали на всех инсталляциях кроме случая, когда «вскрываются» шифрованные данные, про которые заказчик не сказал, что они шифрованные.

Из-за особенностей снапшотов тестовые среды получаются очень эффективными. Есть пример клиента, который делал сайзинг 7:1 в расчёте, а получил 14 с копейками к одному.

Вендор заявляет следующее:

  • 3,5:1 базы данных (Oracle, MS SQL).
  • 4,2:1 виртуализация серверов (VMware, Hyper-V).
  • 7,1:1 VDI (Citrix, VMware).
  • 5:1 средний коэффициент по всей инсталлированной базе.

Также из интересного функционала: автоматизация и интеграция с модными молодёжными штуками типа Kubernetes, а также полная поддержка VMware vvol. Здесь всё просто — большая часть западных клиентов Pure Storage — облачные провайдеры типа ServiceNow, кейс по которым, кстати, выложен на сайте. Они привыкли всё максимально автоматизировать.

Итого


Получилась интересная штука, которая сначала выглядит странно, а потом всё радостнее и радостнее. Пять лет в Гартнере:

image

Конечно, экономическая модель Evergreen не такая, что прямо дёшево-дёшево, но от ряда геморроев спасает и при расчёте стоимости владения на несколько лет выглядит вполне конкурентоспособно.

P.S. По ссылке доступен онлайн-митап: «Системы хранения данных по подписке: правда или вымысел».

Let's block ads! (Why?)

Комментариев нет:

Отправить комментарий