`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Под капотом отказоустойчивых систем хранения

+55
голосов

Почему пользователя должно интересовать внутреннее устройство его системы хранения данных? Потому что он за него платит.

Все системы хранения данных, что аппаратные, что программно-определяемые, работают под управлением контроллеров. По существу, контроллер системы хранения — это вычислитель, со своим процессором, памятью, логикой и программным обеспечением, который обслуживает движение данных и связанные с ними функции. С фасада (front-end) он принимает запросы ввода/вывода сетевых устройств, с тыла (back-end) обращается к дискам. Контроллером может быть моно-плата специализированной системы хранения, а может — дискретный сервер на типовых компонентах.

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

Кроме обработки очередей сетевых и дисковых запросов, производительность контроллеров СХД подъедают различные службы, и не только базовые — как управление логическими томами и вычисление контрольных сумм RAID. Репликация, клонирование данных, мгновенные снимки, динамическое выделение пространства, автоматическое перетаскивание данных между разноскоростными носителями — все они дают дополнительную нагрузку на процессоры и память контроллеров.

Деление промышленных СХД на уровни обычно соответствует их функциональности, оснащенности службами, и, опосредованно — вычислительной мощности контроллеров. Если хранение программно-определяемое, разработчик ПО прописывает требования к компонентам — и уже по ним интегратор строит стратегии и сами системы хранения. С точки зрения пользователя, ему важно, хватит ли возможностей контроллера для обслуживания его структуры запросов к данным, с его набором сервисов. Пусть система хранения не будет многофункциональной, но уместной и соразмерной бюджету.

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

Двухконтроллерные системы хранения

Они представлены тремя классами.

Под капотом отказоустойчивых систем хранения

Active-Passive (AP). В каждый момент времени только один контроллер («активный») обслуживает все операции ввода/вывода, второй («пассивный») простаивает. Его задача — принять на себя всю активность в случае отказа первого. Такие массивы на рынке с 80-х и постепенно с него уходят. Относительно простые в реализации (не надо изобретать механизмы взаимодействия контроллеров), они обладают большим недостатком: каждому контроллеру нужен достаточный запас вычислительной мощности. Имеем два дорогих контроллера, ресурсы одного из которых все время простаивают. Есть хорошая метафора: это как если бы двуногий бегун вышел на старт с одной поджатой ногой — «чтобы иметь возможность бежать с прежней скоростью на второй ноге, если первая откажет». Флэш-память, требовательная к производительности и разгоняющая цену контроллеров, практически похоронила подход AP. Содержать два комплекта дорогого железа, один из которых прохлаждается, попросту бесхозяйственно.

Под капотом отказоустойчивых систем хранения

Asymmetric Logical Unit Access (ALUA). Задействованы оба контроллера, но логические адреса разделов массива (LUN’ы) приписаны к какому-то одному из них («владельцу»). Доступ к данным через «чужой» контроллер по неоптимальному пути сказывается на производительности. Скорость работы с данными ограничена ресурсами контроллера и просаживается при его отказе. Отдельной заботой администратора является ручная балансировка LUN’ов между контроллерами и настройка путей хостов к данным. Массивы ALUA появились в «нулевые». Они тоже недешевы в реализации, требуют квалифицированной поддержки, но проще в разработке, чем полноценные массивы с равноправным доступом к данным через любой порт любого из контроллеров.

Под капотом отказоустойчивых систем хранения

Active-Active (AA). Оба контроллера имеют полноценный доступ ко всем данным, нагрузка ввода/вывода и обслуживания данных автоматически распределяется между контроллерами. С точки зрения необходимых вычислительных ресурсов, это самый дешевый вариант СХД. AP-cистеме хранения данных «на 200 K IOPS» понадобятся два контроллера по 200K IOPS каждый. AA-cистеме — два по 100K IOPS. Контроллеры «100K» всегда дешевле контроллеров «200K». Другое дело, что AA-системы — наиболее продвинутая и развиваемая двухконтроллерная архитектура. Уровень и цена СХД зависят не так от взаимодействия контроллеров, как от набора реализованных служб.

Краткий промежуточный вывод: двухконтроллерные AA-системы дешевле всего в реализации. Их рыночную цену поднимают добавляемые сервисы и .... маркетологи. Неважно, говорим мы об аппаратных или программно-определяемых системах хранения. Разброс наполнения и позиционирования AA-систем огромен.

Синхронизация кэш-памяти контроллеров

Производительность систем AA зависит от логики записи. Оба контроллера хранилища имеют свою кэш-память для ускорения обслуживания запросов ввода-вывода. Как и в обычных RAID-контроллерах серверов, кэш-память контроллеров СХД защищена по питанию, а сброс ее содержимого на постоянные носители (SSD/HDD) происходит в режиме отложенной записи (write back) — когда это удобно контроллеру. Поскольку оба контроллера работают с общим разделяемым ресурсом накопителей, важно обеспечить когерентность: целостность (непротиворечивость) данных, находящихся в локальной кэш-памяти каждого из них.

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

Традиционный подход

По запросу хоста на запись порция данных сперва записывается в кэш-память первичного контроллера, потом копируется в кэш-память второго контроллера, тот подтверждает факт записи в его кэш-память, и только после этого первичный контроллер отчитывается перед хостом о завершении записи. Многоходовое подтверждение записи, естественно, вносит задержки.

Под капотом отказоустойчивых систем хранения

Можно быстрее

Широкополосное соединение между двумя контроллерами позволяет синхронизировать кэши контроллеров в режиме «вещания», когда попадание любых новых данных в кэш-память одного из контроллеров сопровождается безусловным зеркалированием всего ее содержимого в кэш напарника. Под операции взаимной синхронизации кэш-памяти контроллеров теряется половина ее общего объема. Зато не надо ждать подтверждения посылки по каждому блоку данных. Если контрольная сумма крупного массива информации совпадает — значит кэши когерентны. Издержки на организацию выделенной полосы обменов кэш-памяти не так велики: после добавления внешних коммутаторов, контроллеры общаются по шине PCIe 3.0. Выигрыш по задержкам оправдывает вложения.

Под капотом отказоустойчивых систем хранения

Что же выбрать?

С одноконтроллерной СХД всегда есть риск отказа и неопределенно долгого простоя из-за недоступности данных. Двухконтроллерные системы эти риски значительно уменьшают. Системы с двумя контроллерами сложны и разнообразны, а их цена определяется не только компонентами (bill of materials). Дорогими их делают производители, наделяя функциональностью (и ограничениями). Оснащенность службами и репутация вендора отправляют СХД в ту или иную лигу хранения.

Производители двухконтроллерных массивов редко афишируют, какому типу архитектуры соответствует взаимодействие их контроллеров. Не комментируют, как именно синхронизируется их кэш-память. С одной стороны, это справедливо: пользователю важен конечный эффект, а не знание «как это сделано». С другой, пользователю СХД достается с набором сервисов. Чем система хранения производительнее — тем, как правило, функциональнее и дороже. При ограничениях бюджета (а денег всегда мало) пользователь может и хотел бы отказаться от части служб, но взамен получить максимальную производительность. Или емкость побольше. Хотел бы выбирать наборы дисков, формат исполнения и стратегию расширения сам. Мало какие вендоры поощряют такое.

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

+55
голосов

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT