Drive cache raid что это
Drive cache raid что это
Всем привет, давно хотел написать для себя напоминалку, по поводу того какие виды кэша на рейд контроллерах LSI и Intel бывают, и какие настройки лучше всего выставлять для достижения максимальной производительности на ваших RAID контроллерах. Сразу хочу отметить, что если у вас есть запас времени, перед, тем как отдать сервер в продашен заказчику, то не поленитесь все же провести несколько тестов с разными настройками, и не забывайте, до их начала обновить все прошивки на оборудование и RAID контроллер.
Общие понятия по видам кэш
Существует три разновидности cache на RAID контроллерах:
Рассмотрим более детально, что из себя представляет каждая политика кэширования.
Read policy (Политика чтения)
Политика Read Ahead Policy: При ее включении контроллер начинает считывать последовательно сектора на диске, находящиеся за сектором с которого извлекается информация. При низкой фрагментации данная политика позволяет увеличить скорость чтения. Каждая операция чтения будет потреблять больше ресурсов жесткого диска, но если запросы на чтение последовательные это может существенно уменьшить количество запросов на чтение на жесткие диски и может существенно повысить производительность. Этот параметр будет работать только если типичный размер запроса на чтения меньше, чем ширина полосы пропускания.
Политика No Read Ahead (Normal) : При данном режиме контроллер не будет считывать последовательно данные, данный режим предпочтительнее когда будут производиться рандомные (случайные) чтения. Также этот режим рекомендуется при измерении последовательного чтения с помощью I/O meter под Windows.
Политика Adaptive Read Policy : по сути политика адаптивного чтения при которой контроллер запускает политику упреждающего чтения только после того, как две последние операции запрашивали доступ к последовательно идущим блокам данных. Если далее идут блоки рандомно разбросанные по дисковой подсистеме контроллер возвращается в нормальный режим работы. Этот режим рекомендуется использовать, если нагрузка на RAID контроллере подразумевает смешанные и последовательные операции.
Write policy (Политика записи)
Политика W rite-Through : Включая данную политику контроллер начинает посылает сигнал о завершении записи только тогда, когда информация упадет на физические носители, т.е. 100 процентов будет уже на жестких дисках. Обеспечивает более высокую безопасность. Данный режим не использует кэш для ускорения записи, и будет медленнее других, однако позволяет так же достичь хороших показателей при RAID 0 и RAID 10.
Политика Write-Back : Включая данный режим политика кэширования RAID контроллера начинает посылать сигнал о завершении записи только тогда, когда информация попадает в кэш контроллера, но еще не записана на дисковый массив. Обеспечивает более высокую прозводительность чем при политике write-through. Приложение продолжает работать, не дожидаясь, чтобы данные были физически записаны на жесткие диски. Но есть одно большое, но если во время работы RAID контроллера в таком режиме у вас пропадет электричество, то с 99 процентной вероятностью вы потеряете данные, для предотвращения этого есть BBU батарейки или модули защиты данных, так же советую проверить что у вашего сервера есть UPS (источник бесперебойного питания) и дублирующее подключение питания от блока питания.
Политика Write-Back with BBU : Данный режим это все тот же Write-Back, но разница в том, что у нас есть батарейка BBU, которая предотвращает потерю данных при выключении электропитания.
BBU или Battery Backup Unit (Модуль Резервной Батареи). BBU дает батарейную защиту питания для cache RAID контроллера. В случае сбоя питания, BBU поможет сохранить данные в кэше.
I/O Policy (Политика ввода/вывода)
Политика ввода/вывода определяет, будет ли RAID контроллер сохранять данные в кэше, который может уменьшить время доступа к ним при последующих запросах на чтение сделаными в те же самые блоки данных.
Политика direct IO : чтение происходит с дисков. Прямой режим I/O рекомендуется в большинстве случаев. Большинство файловых систем и множество приложений имеют свой собственный кэш и не требуют кэширования данных на уровне контроллера RAID.
Политика Cached IO : При ее включении чтение происходит с дисков, но прочитанные данные одновременно кладутся в кэш. Запросы тех же данных в последствии берутся из кэша. Этот режим может потребоваться, если приложение или файловая система не кэширует запросы чтения
Disk cache policy : это политика кэша диска. Если ее включить то на дисках будет храниться дополнительный кэш, это будет влиять на скорость записи в худшую сторону, но будут быстрее считывание, так же при включенном режиме есть риск потери данных.
Настройка RAID контроллера для лучшей производительности
Любой инженер по системам хранения данных, хочет чтобы его инфраструктура работала как можно быстрее и использовала весь функционал заложенный в ней. Каждый вендор RAID контроллеров, имеет некий best prictice для своей продукции, давайте сегодня рассмотрим их на примере контроллеров Intel и LSI.
Оптимальные настройки для контроллеров Intel
Ниже представлена таблица с рекомендуемыми настройками для контроллеров Intel, для достижения максимальной производительности. О таких параметрах как Stripe size, Virtual Drive initialization, Consistency Check, Patrol Read мы поговорим ниже. Как видите лучшим режимом чтения является Adaptive Read Ahead, а режимом записи Write Back.
Оптимальные настройки для контроллеров LSI
Ниже представлена таблица с рекомендуемыми настройками для контроллеров LSI, для достижения максимальной производительности. Будут рассмотрены сводные таблицы для HDD и для SSd дисков.
Оптимальные настройки для HDD
Размер stripe 256 kb, включение disk Cache Policy включен, выбран I/O Policy Direct IO, нужно дать закончить lun инициализацию
MegaRAID Settings for Maximum HDD Performance
Оптимальные настройки для SSD
Размер stripe 256 kb, включение disk Cache Policy включен, выбран I/O Policy Direct IO, нужно дать закончить lun инициализацию, режимы записи для разных видов RAID разные.
MegaRAID Settings for Maximum SSD Performance
Оптимальные настройки для HP контроллеров
Факторы влияющие на производительность
Рассмотрим что такое Stripe size, Virtual Drive initialization, Consistency Check, Patrol Read.
Виды RAID массивов, настройка RAID и характеристики.
Виды RAID массивов (часто используемые).
RAID 0 (stripe) – диски объединяются в один, который может быть размечен на несколько логических.
RAID 1 (mirror) – такой вид массива также называют “зеркальный массив”.
Плюсы.
Надежность хранимых данных, диски дублируют друг друга.
При выходе из строя одного из дисков RAID 1, данные остаются в полном объеме на втором.
Минусы.
Высокая стоимость за счет использование половиной места под резервирование, высокая надежность.
Производительность не увеличивается.
Пример.
Имеются два диска по 1 Tb, скорость чтения и записи каждого по 150 Мбайт/с. Объединяем их в RAID 1, получаем в итоге один диск объемом 1 Tb и скоростью записи, чтения диска 150 МБайт/c (150*2). Но данные записываются одновременно на оба диска, полностью копируя друг друга.
RAID 5 – дисковый массив, который может вести параллельную запись на диски массива, что увеличивает его быстродействие.
Есть резервирование данных. При выходе из строя одного из дисков массив продолжает работать.
Плюсы.
Экономичность, высокая надёжность, неплохая производительность
Минусы.
Производительность ниже RAID 0
RAID 10 – массив RAID 0, построенный из массивов RAID 1, минимальное количество жестких дисков 4. Совмещение RAID 1 и RAID 0.
Плюсы.
Высокая производительность за счет RAID 0.
Высокая надежность за счет RAID.
Минусы.
Высокая стоимость
Пример.
Берем четыре диска по 1 Tb, скорость чтения и записи каждого по 150 Мбайт/с. Объединяем их в RAID 10, получаем в итоге один диск объемом 2 Tb. Скорость записи, чтения становится диска 150 МБайт/c (150*2). Данные копируются на оставшиеся два диска.
Настройки RAID
Stripe size – определяет объем данных записываемых за одну операцию ввода/вывода. размер strip задается в момент создания RAID массива и не может быть изменен позднее без пересоздания всего массива. Запись производится поочередно на каждый диск массива по указанному размеру stripe.То есть файл размещается сразу на двух дисках по по кусочкам указанных в stripe. Больший размер страйпа обеспечивает прирост производительности при работе с большими последовательными файлами (например, видео), меньший – обеспечивает большую эффективность в случае работы с большим количеством небольших файлов. В большинстве случаев рекомендуется оставлять значение по умолчанию.
Read Policy – определяет, запускать или нет процедуру упреждающего чтения. Рекомендуется здесь выбирать Adaptive, если RAID предназначен для решения широкого спектра задач и отдать тем самым принятие решения на откуп RAID контроллеру. Если RAID массив рассчитан на “переваривание” максимально возможного количества IOPS, то этот параметр обычно устанавливается в Off.
Normal – упреждающее чтение отключено
Read-Ahead – использовать механизм упреждающего чтения. Эта функция помогает увеличить скорость чтения при операциях с большими файлами.
Adaptive (Адаптивно) – контроллер сам решает использовать ли упреждающее чтение, включается только при последовательном чтении одинаковых блоков. При произвольном чтении автоматически не используется.
Write Policy – способ записи данных, полученных RAID контроллером, на дисковый массив. По другому эти способы еще называются так: прямая запись (Write Through) и отложенная запись (Write Back).
Write Through – данные записываются непосредственно на дисковый массив. Как только данные получены, они сразу же записываются на диски и после этого контроллер подает сигнал управляющей ОС о завершении операции.
Write Back – данные записываются сначала в cache, и только потом (либо по мере заполнения cache, либо в моменты минимальной загрузки дисковой системы) из cache на диски. При этом, сигнал о завершении операции записи передается управляющей ОС сразу же по получении данных cache контроллера. Write Back работает быстрее, но при этом надо помнить, что в случае сбоя питания все данные, которые находились в этот момент в cache, будут потеряны. Причем, управляющая ОС (а следовательно и приложение, записывавшее эти данные) ничего об этом “не узнают”, так как они уже получили сообщение от контроллера об успешном завершении записи. Например, если в cashe находились данные транзакции сервера СУБД, то СУБД будет уверенна, что с данными все хорошо, хотя на самом деле это не так. Избежать описанной проблемы можно или с помощью установки на RAID контроллер BBU, или посредством подключения всего сервера через источник бесперебойного питания (UPS) с функцией программируемого выключения. RAID контроллеры не позволяют включить функцию Write Back без установленного BBU.
Always Write Back – всегда включена политика записи через cache, не зависимо от присутствия/отсутствия BBU
Write Back with BBU – работает только при наличии исправной BBU, переключится в режим Write Through при отсутствии BBU или ее не достаточном заряде
IO Policy – влияет на работу cache при операциях чтения и не зависит от состояния read-ahead.
Cache I/O — все операции чтения кешируются.
Direct I/O — операции чтения не кешируются. При использовании этого режима данные из дисковой подсистемы параллельно направляются в cache и в ОС. В случае повторного чтения того же блока, сперва блок берётся из cache.
Drives Cache – кэширование дисков
Enable – включено
Disable – выключено, лучше выбирать это если нет online ИБП или bbu
Unchanged – не изменять текущую политику кэширования
Disable BGI (Disable background initialization)
No – background initialization включено. Значение по умолчанию.
Yes – background initialization отключено.
BBU (Battery Backup Unit) необходим для предотвращения потери данных находящихся в cache RAID контроллера и еще не записанных на диск (отложенная запись – “write-back caching”), в случае аварийного выключения компьютерной системы. Существуют такие виды BBU:
Просто BBU – аккумулятор, который обеспечивает резервное питание cache через RAID контроллер.
Переносимые (Transportable) BBU (tBBU) – аккумулятор, который размещен непосредственно на модуле cache и питает его независимо от RAID контроллера. В случае выхода из строя RAID контроллера, это позволяет перенести данные, сохраненные в cache, на резервный контроллер и уже на нем завершить операцию записи данных.
Flash BBU – в случае сбоя питания RAID контроллер копирует содержимое cache в энергонезависимую память. Питание, необходимое для завершения этого процесса, обеспечивается встроенным супер-конденсатором. После восстановления питания, данные из flash-памяти копируются обратно в cache контроллера.
Тестирование технологии кэширования RAID–массивов Adaptec
Решения для работы с RAID-массивами из жестких дисков используются уже очень давно. В целом они продолжают оставаться популярными во многих областях, когда требуется относительно недорогой отказоустойчивый массив большого объема. Учитывая размеры современных винчестеров, их скорость, а также и другие причины, наибольший практический интерес вызывают массивы RAID6 (или RAID60, если дисков много). Но этот тип массивов имеет невысокую производительность на операциях случайной записи и сделать что-либо с этим непросто.
Конечно, в данном случае речь идет о скорости «сырого тома». В реальной жизни к нему добавляется файловая система, операционная система, приложения и все такое. Так что на самом деле не все так плохо. Однако есть и программно-аппаратные способы увеличения производительности, независимые от указанных подсистем. Речь идет о технологиях кэширования, когда к массиву из жестких дисков добавляется существенно более быстрый накопитель на базе флэшпамяти.
В частности в RAID- контроллерах Adaptec эта технология называется maxCache и ее версия 3.0 реализована в моделях ASR-8885Q и ASR-81605ZQ. При ее использовании необходимо учитывать несколько особенностей: допускается наличие только одного тома maxCache на контроллер, максимальный объем тома maxCache составляет 1 ТБ, для работы кэширования записи необходимо иметь отказоустойчивую конфигурацию самого тома maxCache (например, зеркало). При этом пользователь может самостоятельно указывать для каждого логического тома как конкретно он будет работать с maxCache – на чтение и/или на запись и в каком режиме.
Для тестирования использовался сервер на базе материнской платы Supermicro X10SLM-F, процессора Intel Xeon E3-1225 v3 (4C/8T, 3,2 ГГц), 32 ГБ оперативной памяти, работающий под ОС Debian 9.
Тестируемый контроллер ASR-81605ZQ штатно имеет блок защиты памяти и при работе с массивом из жестких дисков у него активны кэши и на чтение и на запись. Напомним, что объем собственной памяти у этой модели – 1 ГБ. Массив RAID6 с блоком в 256 КБ создавался из шести жестких дисков Seagate ST10000NM0086 с интерфейсом SATA и объемом 10 ТБ. Общий объем тома составил около 36 ТБ.
В качестве SSD-накопителей для тома maxCache выступали две пары устройств: два Samsung 850 EVO второго поколения по 1 ТБ с интерфейсом SATA и два Seagate 1200 SSD (ST400FM0053) по 400 ГБ с интерфейсом SAS, из которых создавались массивы RAID1. Конечно, первая модель уже может считаться устаревшей и не только морально. Но для иллюстрации бюджетного сценария она подойдет. Вторая формально лучше подходит под «корпоративную» категорию, но и ее сложно считать современной. В настройках самого массива maxCache есть только опция Flush and Fetch Rate, которая оставалась на значении по умолчанию (Medium). Возможности выбрать приоритет по операциям или дисковым томам нет. Отметим, что накопители были не в новом состоянии и TRIM в данной конфигурации не используется.
После создания тома maxCache нужно включить в свойствах логического тома параметры для его использования. Всего здесь предусмотрено три опции: включение кэша на чтение, включение кэша на запись и тип кэша на запись.
В качестве тестового инструмента применялась утилита fio, а набор сценариев включал в себя последовательные и случайные операции с разным числом потоков. Стоит заметить, что исследование производительности продуктов с кэширующими технологиями синтетическими тестами сложно признать оптимальным вариантом. Адекватно оценивать эффект лучше на реальных задачах, поскольку синтетическая нагрузка в определенной степени противоречит самой идее кэширования. Кроме того, в данном случае мы рассматриваем низкоуровневые операции, а по факту пользователь обычно имеет дело с файлами и в работу с ними включаются, как мы говорили выше, файловая система тома, операционная система и непосредственно программное обеспечение. Так что именно синтетика, привлекательная своей простотой и повторяемостью, имеет смысл не сама по себе, а в основном для сравнения «как было и как стало» в сложных для алгоритмов кэширования сценариях и достаточно грубой оценки эффекта.
Посмотрим сначала, на что способен наш массив сам по себе. Напомним, что в последовательных операциях интересна скорость в МБ/с и задержки (в логарифмическом масштабе), а на случайных – IOPS и тоже задержки.
Скорость потоковых операций с массивом данной конфигурации находится на уровне 900 МБ/с. При этом задержки не превышают 70 мс даже при большом числе потоков.
Для жестких дисков случайные операции являются самой сложной нагрузкой, что видно по результатам. Если поставить порог времени ожидания на уровне 100 мс, то на чтении можно получить около 1100 IOPS, а на записи независимо от нагрузки массив способен дать около 300 IOPS. Отметим, что с массивом RAID60 из 36-ти дисков на том же контроллере можно получить и более интересные цифры, благодаря конфигурации трех блоков по 12 винчестеров. Это позволяет добавить чередование и поднять скорости до 3500 и 1200 IOPS на случайном чтении и записи соответственно (в этой конфигурации были достаточно старые SAS-винчестеры от HGST по 2 ТБ). Отрицательная сторона такого варианта – дополнительные расходы на объем, поскольку «теряется» не два диска на том, а два на каждую группу.
Итак, без кеширования наш массив смотрится достаточно грустно на случайных операциях. Конечно это «сырая» скорость тома и программы редко дают исключительно случайную нагрузку (напомним, что здесь у нас все-таки массив для хранения файлов большого объема, а не базы данных).
Посмотрим, чем могут помочь в данной ситуации SSD. В тестах будет использоваться четыре доступных варианта конфигурации – только чтение, чтение и запись Write Through, чтение и запись Write Back, чтение и запись Instant Write Back:
На операциях последовательного чтения массив показывает стабильные результаты независимо от типа используемого кэша, что вполне ожидаемо. При этом они мало отличаются от массива без кэша – все те же 900 МБ/с и задержки около 70 мс.
На последовательной записи есть две группы – только на чтение и с Write Back демонстрируют результаты аналогичные массиву без кэша – около 900 МБ/с и до 100 мс, а Write Through и Instant Write Back способны вытянуть не более 100 МБ/с и с существенно большими задержками.
Напомним, что на чтении массив из винчестеров показал максимальное около 1100 IOPS, но на этой границе задержки уже начали превышать 100 мс. С кэшированием SATA SSD можно добиться немного более высоких результатов – около 1500 IOPS и с теми же задержками.
На операциях случайной записи мы видим наибольший эффект – рост показателей в два с половиной раза с одновременным увеличением нагрузочной способности. При использовании кэша можно иметь задержки до 100 мс при в два-три раза большем числе потоков.
Общие заключение по данной конфигурации: на последовательном чтении не мешает, на последовательной записи в некоторых конфигурациях не мешает, на случайном чтении добавляет около 35%, на случайной записи увеличивает производительность в пару раз.
Посмотрим теперь на вариант кэширующего тома второй пары накопителей SSD. Отметим, что в нашем случае у них был существенно меньший объем, интерфейс SAS 12 Гбит/с и более высокие скоростные характеристики (заявленные производителем).
На последовательном чтении результаты не отличаются от приведенных ранее, что вполне ожидаемо.
На последовательной записи теперь у нас три группы – отстает конфигурация с кэшем записи Write Through, примерно половину максимальной скорости показывает Instant Write Back и только Write Back не отличается от массива без кэша. Такой же расклад и со временем ожидания.
Зато на случайном чтении Instant Write Back показал себя лучше всего, достигая 2500 IOPS, тогда как остальные конфигурации способны вытянуть только до 1800 IOPS. Заметим, что все варианты с кэшированием записи заметно быстрее «чистого» массива. При этом время ожидания не превышает 100 мс даже при большом числе потоков.
На операциях случайного чтения Instant Write Back снова выходит вперед, показывает почти 2000 IOPS. Во второй группе находятся конфигурации Write Through и Write Back c 1000 IOPS.
Последний участник, не использующий кэш на операциях записи, показывает около 300 IOPS, как и просто массив из винчестеров.
Пожалуй, для этого кэширующего тома интереснее всего смотрится вариант Instant Write Back. Правда он медленнее на операциях потокового чтения. Возможно, это получится исправить использованием конфигурации RAID10 для тома maxCache, но это будет «стоить» уже четырех отсеков в корпусе СХД.
В целом, можно говорить о том, что применение технологии maxCache действительно может быть полезно для повышения производительности массивов из жестких дисков, особенно если в нагрузке много случайных операций. Однако считать, что это настолько же эффективно, как замена жесткого диска на SSD в настольном компьютере или рабочей станции, все-таки нельзя.
Наибольший эффект, который был отмечен в тестах – увеличение скоростей случайных операций в 2-3 раза. Конечно, были использованы не самые быстрые SSD, что явно сказывалось в некоторых тестах (например, последовательной записи в режиме Write Through). Кроме того, хотелось бы еще раз обратить внимание на то, что выбор конфигурации кэширования существенно влияет на результаты. Учитывая, что изменение настроек возможно «на лету» без потери данных, стоит самостоятельно проверить все варианты на своих задачах и выбрать оптимальный вариант.