Блог компании Huawei
Huawei OceanStor Dorado V3: из какого золота выплавляют СХД высокой доступности
За последние двадцать лет мощность процессоров выросла почти в 580 раз, пропускная способность каналов — в 1000 раз, а вот производительность СХД — только в 20 раз. Хранение данных стало «слабым местом», которое тормозит развитие всех IT-систем. Положение дел заметно улучшилось благодаря распространению СХД на SSD-накопителях. К таким системам относится Huawei OceanStor Dorado V3 — СХД высокой доступности (99,9999%). В этом посте мы без громких эпитетов расскажем о технологиях, на которые стоит обратить внимание, оценивая нашу новинку.
Собственные SSD Huawei
All-flash СХД Huawei OceanStor Dorado V3 рассчитана для использования в ИТ-системах, где скорость и надёжность систем хранения становятся критически важны. Это, к примеру, обработка транзакций в реальном времени (OLTP), оперативная аналитическая обработка (OLAP) крупных баз данных, высокопроизводительные вычисления (HPC), инфраструктура виртуального рабочего стола (VDI). В них потенциал нашей СХД основан на разработках в трех областях — это оригинальные SSD, функциональная ОС и широкие возможности интеграции.
Основа Dorado V3 — собственные накопители Huawei SSD, работа с которыми оптимизирована на уровне операционной системы. В зависимости от модели СХД, в нее можно установить до 200, 800 или 2400 накопителей.
Архитектура SSD Huawei
Контроллер накопителя основан на SoC Cortex-A9, поддерживает DDR4, 18 каналов NAND-флэш, 12 Гбит/с SAS и 8 GT/s PCIe. Непосредственно на SSD реализовано несколько функций, обеспечивающих необходимые для систем высокой доступности пропускную способность и надёжность.
Многоступенчатая проверка данных
Схема защиты данных
Чтобы снизить количество ошибок, данные проверяются на каждом этапе. Многоступенчатая проверка процесса позволяет получить частоту битовых ошибок (BER) равную 10-17. На уровне DDR для предотвращения ошибок данных используются ECC (error correction code) и CRC (cyclic redundancy check). На уровне NAND-флеш используются LDPC (low density parity check code) и CRC. И непосредственно на уровне DIE алгоритм XOR.
LDPC используются совместно с технологиями Read Retry и Read Offset. При записи данных в NAND, контроллер записывает LDPC вместе с ними в флэш-память. Эта информация используется для проверки данных и исправления ошибок, если таковые имеются. Если на NAND возникла ошибка, Huawei SSD использует LDPC, чтобы исправить ошибку. Если это не поможет, у нас припасена технология Read Retry
Схема восстановления данных
Read Retry попробует прочитать данные, изменяя напряжение flash-накопителя. В разумных пределах, разумеется. Чтобы устранить задержку при последовательном переборе нескольких уровней напряжения, Read Retry учитывает частоту использования блока, продолжительности хранения данных.
Read Retry использует только предустановленные уровни напряжения, поэтому дополнительно применяется технология Read Offset. На SSD компании Huawei сохраняются таблицы калибровки напряжения. При возникновении ошибки Huawei Enterprise SSD запрашивает таблицу на основе состояния блока и выбирает наиболее подходящее напряжение.
Регулирование износа SSD
Из-за ограниченного срока службы SSD считают слабым местом all-flash СХД. Мы постарались сбалансировать нагрузку так, чтобы износ не стал проблемой. Наш основной инструмент здесь — регулирование износа SSD.
Распределение циклов программирования/стирания при регулировании износа SSD в СХД Dorado V3
C помощью алгоритмов распределения P/E-циклов ресурс дисков сокращается равномерно.
Распределение нагрузки при наличии диска со сравнительно большим износом
Но при достижении высокого показателя выработки (>80%) такой подход может привести к одновременному выходу из строя всех дисков. А наш RAID готов только к трём одновременным отказам. Поэтому, когда жизненный цикл SSD близится к концу, включается обратная функция — Anti-Wear Leveling. Система выбирает SSD с самым большим износом и начинает писать данные на него, а пользователю тем временем советует его заменить.
Разделение горячих и холодных данных
Особенность работы NAND-флэш такова, что для записи новых данных на страницу — минимальную единицу в местной терминологии — нужно очистить весь блок в который она входит. Поэтому если в блоке есть полезные данные, их нужно перенести, что требует дополнительных операций.
Разделение «горячих» и «холодных» данных
Чтобы локализовать данные, к которым обращаются чаще всего, их на уровне SSD разделяют на «горячие» и «холодные». Данным с разной частотой использования добавляются соответствующие метки. SSD сохраняют данные с теми же ярлыками в один и тот же блок. Таким образом, «горячие» и «холодные» данные хранятся в разных блоках, уменьшая объем данных, с которым приходится работать системе.
ОС OceanStore с технологией FlashLink
Программная архитектура OceanStor Dorado V3 (BDM — управление блоками данных, DSW — сетевой коммутатор)
СХД семейства OceanStore работают под управлением одноименной ОС. Самое интересное в этой операционке — это набор утилит FlashLink для управления и оптимизации записи на SSD. FlashLink охватывает I/O-модули ПО контроллера с драйверами SSD дисков. Симбиоз на двух уровнях СХД позволяет увеличить IOPS и обеспечить задержку не более 0,5 мс. Функции FlashLink можно разложить по трем слоям.
Базовый уровень — виртуализация дисков. RAID 2.0 со знаком «плюс» стирает границы между RAID-массивами. Это позволяет одновременно и лучше распределять нагрузку, и ускорять работу. А при необходимости и восстановление информации. RAID-TP застрахует от проблем с данными даже если из строя выйдут сразу три диска.
На уровень распределения данных идет взаимодействие с накопителями. Разделение на горячие и холодные данные, выравнивание износа, цельнострайповая последовательная запись (full-stripe sequential write) — FlashLink управляет этими функциями, благодаря которым SSD живут долго, счастливо и не умирают неожиданно.
Уровень обслуживания данных: здесь происходит объединение все записей в один страйп, распределение по дискам раздаются приоритеты по распределению ресурсов.
Остановимся подробнее технологиях ОС OceanStore, которые мы не рассмотрели ранее.
Цельнострайповая последовательная запись
Чтобы эффективно распределять нагрузку на дисковые массивы, нужно обеспечивать быструю запись на несколько дисков сразу. Чтобы сократить задержки используется цельнострайповая последовательная запись: новые и измененные данные объединяются в полный страйп и пишутся в свободное место на SSD. Благодаря тому, что здесь произвольная запись становится последовательной, мы избегаем задержек на чтение/очистку/запись, характерных для NAND:
Схема цельнострайповой последовательной записи
При записи новых данных система объединяет данные LUN 1 и LUN 2 в страйп, а затем записывает данные на диски, как показано в левой части рисунка.
При изменении данных, пользователь изменяет 1B на 1b в LUN 1, записывает новые данные 3A и 3B в LUN 3, а новые данные 4A — LUN 4. Система объединяет 1b, 2B, 2C, 3A, 3B и 4A в качестве нового страйпа, а затем записывает данные на SSD. Блок 1B отмечается на удаление.
При изменении данных, пользователь изменяет 1B на 1b в LUN 1, записывает новые данные 3A и 3B в LUN 3, а новые данные 4A — LUN 4. Система объединяет 1b, 2B, 2C, 3A, 3B и 4A в качестве нового страйпа, а затем записывает данные на SSD. Блок 1B отмечается на удаление.
Глобальная очистка проводится после того, как все нужные данные были скопированы и сохранены в новом месте
При накоплении большого числа мусорных данных используется глобальная очистка. Таким образом освобождается пространство для записи целых страйпов.
Приведем аналогию. Вы поехали с большой компанией друзей на рыбалку. Поехали недалеко, потому что собрать столько народу надолго не получилось. Закинули удочки, сидите. Вдруг у вас в камышах запутывается леска. Капитально запуталась — нужно лезть в заросли, и неизвестно, распутаете ли вообще. У вашего друга рядом такая же история. Вместо того, чтобы долго распутывать снасти (перезаписывать данные) вы просто обрезаете леску и быстро натягиваете все заново — крючок, поплавок, грузило (записываете данные на пустое пространство). Когда рыбалка подойдет к концу, самый молодой и ловкий залезет в заросли и вытащит все сразу, с листьями и узлами, которые можно распутать по пути домой (в контексте СХД — проведет глобальную очистку).
RAID-TP
RAID TP — схема создания страйпов с тройным резервным копированием
Для лучшей сохранности данных диски объединяются в массивы Raid TP. Благодаря цельнострайповой последовательной записи в Raid-массив добавляется дополнительный диск с информацией для исправления ошибок. Благодаря этому сохранность данных обеспечивается даже при выходе из строя трех дисков, и не происходит потери производительности. Таким образом, Dorado V3 поддерживает 23+3 (23 основных диска и 3 с кодами коррекции ошибок) RAID-конфигурацию, более надежную по сравнению с 23+2.
End-to-End I/O Priority
Расстановка приоритетов для операций ввода/вывода. Голубым выделены запросы, поступающие не с хоста — глобальная очистка, сброс кэша, репликация. Красным — группы с наиболее важным приоритетом — запросы с хоста и некоторые другие.
Чтобы уменьшить задержки, контроллеры Dorado V3 задают приоритеты для операций ввода-вывода. Например, приоритет запроса на чтение с хоста выше, чем запрос на очистку кеша, который в свою очередь ставится перед копированием в рамках асинхронной репликации. Приоритеты чтения/записи отправляются на SSD вместе с запросами на эти операции. Далее приоритеты обрабатывает контроллер SSD.
SmartDedupe и SmartCompression
В Dorado V3 встроены функции дедупликации и сжатия. Вот как они работают. Сначала блок данных записывается в постоянный кэш. Затем вычисляется fingerprint блока с использованием слабой хэш-функции (экономим время и ресурсы), производится выбор контроллера для записи и побитовое сравнение со всеми хранящимися fingerprint'ами.
Если результат положительный, то производится удаление блока и подмена его ссылкой на найденный. Если совпадений нет, то производится сжатие блока с использованием алгоритма LZ4.
После этого производится запись блока на SSD, а его fingerprint добавляется в каталог. Эффективность сжатия зависит от типа данных, и обычно составляет от 2 до 3,5 раз. Принцип сжатия показан на картинке ниже:
Последовательность работы алгоритмов сжатия
Стоит оговориться, что такой подход к сжатию влияет на скорость записи. В сценариях, где требуется более получить более высокую скорость записи, эту функцию можно отключить на уровне LUN.
Интеграция
С технологией FlashLink мы смогли повысить производительность и надежность СХД. Это позволило нам реализовать на базе Dorado V3 несколько важных функций, которые необходимы, например, для крупномасштабного развертывания VDI или хранения данных критически важных услуг.
HyperMetro
Схема инфраструктуры HyperMetro. Оранжевые линии — связь между хостами и сетевыми коммутаторами. Красные — сеть между дата-центрами в одном городе. Зеленые — репликация HyperMetro. Голубые — кворумная сеть с отдельным следящим сервером.
Объединение двух СХД OceanStor V3 открывает режим Huawei Active-Active HyperMetro, позволяет повысить аптайм системы хранения до 99,9999%.
Особенности этого решения:
Особенности этого решения:
- Объединение SAN и NAS.
- Согласованность двух СХД — параллельное чтение и запись. Когда одно хранилище недоступно, происходит переключение на другое хранилище с RPO=0 и RTO=0.
- Связь между копиями может осуществляться по протоколу FCOe на скорости 10Gbps, с возможностью комбинирования IP- и FC-интерфейсов.
- Между активными центрами обработки данных поддерживается сеть FC, которая позволяет разносить ЦОДы на большие расстояния, чем в случае с IP-сетями — до 300 км.
- Поддержка двух режимов арбитража доступа (внутренний и внешний) с возможностью бронирования приоритета. Внешний арбитраж может быть осуществлён с физического или виртуального сервера (Quorum Server), доступного по IP-сети.
- Каждая Dorado V3 имеет дополнительный контроллер OceanStor V3. Система из двух СХД остается рабочей при доступности хотя бы одного из четырех контроллеров.
SmartVirtualization
OceanStor Dorado V3 может работать в гетерогенной виртуальной среде, совместно с хранилищами других производителей.
Общая архитектура OpenSDS. Эта инфраструктура дает возможность объединять популярные облачные и энтерпрайз-платформы, а также различные типы других устройств, как через встроенные драйвера, так и через плагины от производителей.
В такой конфигурации Dorado V3 централизованно управляет ресурсами сторонних систем, что включает в себя:
- Плавный перенос данных между гетерогенными LUN без прерывания обслуживания;
- Аварийное восстановление гетерогенных LUN.
- Быстрое резервное копирование гетерогенных LUN.
Эта функциональность реализована с помощью opensource-решения OpenSDS, которое мы помогаем развивать с самого первого релиза.
Собрать и оценить ИТ-инфраструктуру с СХД OceanStor Dorado V3 и другим оборудованием Huawei вы можете с помощью нашего онлайн-конфигуратора.