Программное обеспечение против производительности аппаратного RAID и использования кеша

73

Я много читал о RAID-контроллерах / настройках, и одна вещь, которая всплывает, это то, как аппаратные контроллеры без кеша предлагают такую ​​же производительность, как программный RAID. Это действительно так?

Я всегда думал, что аппаратные карты RAID будут предлагать лучшую производительность даже без кеша. Я имею в виду, у вас есть выделенное оборудование для выполнения задач. Если это так, то какая польза получить карту RAID без кеша, что-то вроде LSI 9341-4i, которая не совсем дешевая.

Также, если прирост производительности возможен только с кешем, есть ли конфигурация кеша, которая записывает на диск сразу, но сохраняет данные в кеше для операций чтения, делая BBU не приоритетом?

Это просто я
источник
Что-то, что я заметил, благоприятствует HW raid: по моему опыту, если вы запускаете SW raid и система делает что-то, кроме чистого выключения, вы выйдете из строя массива и вам придется его перестраивать. HW рейд не виноват, если он не писал, когда система вышла из строя.
Лорен Печтел

Ответы:

146

Вкратце: если вы используете низкоуровневую карту RAID (без кеша), сделайте себе одолжение и переключитесь на программный RAID. Если используется карта среднего и высокого класса (с BBU или NVRAM), то аппаратное обеспечение часто (но не всегда! См. Ниже) является хорошим выбором.

Длинный ответ: когда вычислительная мощность была ограничена, аппаратные карты RAID имели существенное преимущество в расчете четности / синдрома разгрузки для задействованных схем RAID (RAID 3/4/5, RAID6, ecc).

Однако с постоянно растущей производительностью ЦП это преимущество в основном исчезло: даже старый процессор моего ноутбука (Core i5 M 520, поколение Westmere) имеет производительность XOR более 4 ГБ / с и производительность RAID-6 с синдромом выше 3 ГБ / с по сравнению с одно ядро ​​исполнения .

Преимущество, которое поддерживает аппаратный RAID сегодня, заключается в наличии защищенного кэш-памяти DRAM в виде BBU или NVRAM. Этот защищенный кэш обеспечивает очень низкую задержку для произвольного доступа к записи (и чтения, которые обращаются) и в основном преобразует случайные записи в последовательные записи. RAID-контроллер без такого кеша практически бесполезен . Более того, некоторые низкоуровневые RAID-контроллеры не только не имеют кеша, но и принудительно отключают частный кэш DRAM диска, что приводит к более низкой производительности, чем вообще без платы RAID. Примером являются карты DELL PERC H200 и H300: если новая прошивка не изменила это, они полностью отключают частный кэш диска (и его нельзя повторно включить, пока диски подключены к RAID-контроллеру). Сделай одолжение себе и сделайникогда, никогда не покупайте такие контроллеры. Хотя даже контроллеры более высокого уровня часто отключают частный кэш диска, они, по крайней мере, имеют собственный защищенный кэш, что делает частный кэш жесткого диска (но не SSD!) Несколько избыточным.

Это еще не конец. Даже способные контроллеры (те, которые имеют кэш BBU или NVRAM) могут давать противоречивые результаты при использовании с SSD, в основном потому, что SSD действительно нужен быстрый частный кэш для эффективного программирования / стирания страниц FLASH. И хотя некоторые (большинство?) Контроллеры позволяют вам повторно включить частный кэш диска (например, PERC H700 / 710 / 710P позволяют пользователю повторно включить его), если этот частный кэш не защищен от записи, вы рискуете потерять данные в случае потери мощности. Точное поведение в действительности зависит от контроллера и встроенного программного обеспечения (например, на DELL S6 / i с 256 МБ кэш-памяти WB и включенным кешем диска , у меня не было потерь при многократном плановом тестировании потери мощности), что вызывает неопределенность и большую озабоченность.

Программные RAID с открытым исходным кодом, с другой стороны, являются гораздо более управляемыми зверями - их программное обеспечение не включено в проприетарную прошивку и имеет четко определенные шаблоны метаданных и поведение. Программный RAID делает (правильное) предположение, что частный кэш-память DRAM диска не защищен, но в то же время он критичен для приемлемой производительности - поэтому они обычно не отключают его, а используют команды ATA FLUSH / FUA, чтобы быть уверенными, что критические Данные земли на стабильном хранении. Поскольку они часто работают от портов SATA, подключенных к чипсету SB, их пропускная способность очень хорошая, а поддержка драйверов - отличная.

Однако при использовании с механическими жесткими дисками синхронизированная схема произвольного доступа для записи (например, базы данных, виртуальные машины) сильно пострадает по сравнению с аппаратным RAID-контроллером с кэш-памятью WB. С другой стороны, при использовании с корпоративными твердотельными накопителями (т. Е. С защищенным от потери данных кэшем записи) программный RAID часто превосходит и дает результаты даже выше, чем достижимые с помощью аппаратных карт RAID. Тем не менее, вы должны помнить, что потребительские твердотельные накопители (читай: с незащищенным кешем обратной записи), хотя они очень хороши при чтении и асинхронной записи, обеспечивают очень низкий IOPS в синхронизированных рабочих нагрузках записи.

Также учтите, что программные RAID не все созданы равными. Программный RAID-массив Windows имеет плохую репутацию, с точки зрения производительности, и даже объем дискового пространства не слишком отличается. Linux MD Raid исключительно быстр и универсален, но стек ввода-вывода Linux состоит из нескольких независимых частей, которые необходимо тщательно понять, чтобы извлечь максимальную производительность. RAID с четностью ZFS (ZRAID) чрезвычайно продвинут, но, если он не настроен правильно, может дать вам очень плохие IOP; зеркалирование + чередование, с другой стороны, работает довольно хорошо. В любом случае, для работы с синхронной записью (ZIL) требуется быстрое устройство SLOG.

Нижняя линия:

  1. если ваши рабочие нагрузки не синхронизированы с случайной записью, вам не нужна карта RAID
  2. если вам нужна карта RAID, не покупайте контроллер RAID без кеша WB
  3. если вы планируете использовать программное обеспечение SSD, предпочтительным является RAID, но имейте в виду, что для высокосинхронизированных случайных записей вам нужен SSD с защитой от потери мощности (т. е. Intel S4600, Samsung PM / SM863 и т. д.). Для чистой производительности лучшим выбором, вероятно, является Linux MD Raid, но в настоящее время я обычно использую чередующиеся зеркала ZFS. Если вы не можете позволить себе потерять половину пространства из-за зеркал и вам нужны расширенные функции ZFS, используйте ZRAID, но внимательно подумайте о настройке VDEV.
  4. если вам, даже при использовании SSD, действительно нужна аппаратная карта RAID, используйте SSD с кэшем, защищенным от записи (Micron M500 / 550/600 имеет частичную защиту - не совсем достаточно, но лучше, чем ничего), в то время как Intel DC и S серии полностью теряют мощность защита, и то же самое можно сказать для корпоративных твердотельных накопителей Samsung)
  5. Если вам нужен RAID6 и вы будете использовать обычные механические жесткие диски, подумайте о покупке быстрой карты RAID с 512 МБ (или более) кэш-памяти WB. RAID6 имеет высокую производительность записи, и кэш WB надлежащего размера может по крайней мере обеспечить быстрое промежуточное хранилище для небольших синхронных записей (например, журнал файловой системы).
  6. Если вам нужен RAID6 с жесткими дисками, но вы не можете / не хотите покупать аппаратную карту RAID, внимательно подумайте о настройке программного RAID. Например, возможное решение для Linux MD Raid состоит в использовании двух массивов: небольшого массива RAID10 для записей журнала / журналов БД и массива RAID6 для необработанного хранилища (в качестве файлового сервера). С другой стороны, программный RAID5 / 6 с твердотельными накопителями очень быстр, поэтому вам, вероятно, не понадобится карта RAID для установки полностью твердотельных накопителей.
shodanshok
источник
Большое спасибо за отличные объяснения, я понятия не имел, карты RAID отключили кэш на жестких дисках. Это не тот тип сервера, который требует инвестиций в размере около 800 долларов США, поэтому я немного подробнее ознакомлюсь с настройками программного RAID и, вероятно, согласен с этим.
JustJeMe
2
ОП говорит о гипервизоре. О RAID5 не может быть и речи, и кэш записи будет обязательным.
ewwhite
1
На самом деле, даже в 2016 году программный RAID 5/6 с 6 накопителями записывает со скоростью <25 МБ / с, а соответствующая аппаратная карта RAID 2010 года - со скоростью> 500 МБ / с. Это как в Intel RSTe, так и в Windows Storage Spaces. Я просто не понимаю, что является узким местом на современном процессоре.
Месье
1
Проблема с программным RAID 5/6 заключается в том, что записи часто запускают чтение-изменение-запись, что, в свою очередь, значительно замедляет диски. Аппаратный RAID-контроллер с поддержкой BBU может объединять несколько записей в один доступ к диску / транзакцию, что значительно повышает производительность.
Shodanshok
1
«[случайное чтение] при использовании с твердотельными накопителями, они часто превосходят» - если твердотельный накопитель не является корпоративным твердотельным накопителем (обычно это означает, что у него нет конденсатора для защиты от потери мощности) и не лжет, тогда даже твердотельные накопители могут иметь чрезвычайно низкий IOPS для операций, подобных последовательным fsync(). См. Эту статью , в которой показано, что твердотельные накопители Samsung NVMe без конденсатора выполняют всего ~ 250 фсин в секунду (я тоже это измерял). SSD с конденсатором дают примерно в 30 раз больше fsyncs / s, аппаратный RAID-контроллер с аккумулятором в 100 раз больше.
nh2
7

Вам понадобится батарея или флэш-кеш для любого аппаратного контроллера, который вы покупаете. Большинство сожалеют, что не сделали этого .

Но, чтобы ответить на ваш вопрос, большинство контроллеров имеют настраиваемые коэффициенты кэша ... поэтому 100% кэш чтения и 0% кэш записи исключают необходимость защиты BBU. Ваша производительность записи просто отстой.

Я не могу ответить на ваш программный вопрос RAID, потому что это зависит. Linux MD RAID отличается от программного RAID Windows, который отличается от ZFS . Такие решения, как ZFS, могут работать лучше, чем аппаратные, поскольку они используют оперативную и серверную ресурсы сервера.

ewwhite
источник
Выражение «производительность записи будет просто отстой» означает, что оно будет примерно таким же, как программный RAID или аппаратный RAID без кеша? Или есть штраф за запись производительности сверх этого, если карта выделяет кэш для чтения?
JustJeMe
Это зависит от того, что вы делаете. Если у вас нет приложения с интенсивной записью, то снижение производительности может не быть проблемой.
ewwhite
Это Proxmox HOST с виртуальными машинами Windows, используемые для почтового и веб-хостинга. Нет большого использования базы данных, но у почтовой службы, вероятно, есть много операций записи. В настоящее время я просто спорю, стоит ли иметь кеш-карту только для чтения по сравнению с программным RAID.
JustJeMe
Используйте флэш-контроллер RAID для виртуализации.
ewwhite
1
Мы запустили почтовый сервер Cyrus с около 4000 учетными записями, используя программный RAID. Активные учетные записи, которые посещали его в любой день, были больше похожи на 300–600. Производительность была заметно хуже, чем у нашего основного почтового сервера Cyrus с аппаратным RAID и BBU. Кэш-память контроллера BBU и RAID обеспечивает достоверность данных, а также производительность. Это связано с тем, что, как только данные поступают в контроллер, они могут сообщить ОС, что запись завершена. В противном случае придется ждать, пока жесткий диск покажет, что запись завершена. Это экономит значительные такты. Перешел на аппаратный RAID и решил.
Лабрадорт
7

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

О HW против самого SW-RAID. Я больше не использую HW-RAID, если это не коробка с логотипом EMC, например. Для всего остального я снова переключился на SW-RAID много лун по нескольким очень простым причинам.

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

  2. Дополнительное оборудование стоит дорого, поэтому вы можете использовать эти дополнительные $ 1000 (достойный контроллер с двумя / тремя дисками) для небольшого решения лучше. Инвестируйте его в большее количество дисков и стандартных контроллеров, память ECC, более быстрый процессор. И запасной диск на месте может быть, если вы планируете использовать его дольше, чем гарантийный период, или не хотите платить за экспресс-доставку за ночь.

  3. Обновление является проблемой, так как вам нужно отслеживать патчи ОС и прошивки как для диска, так и для контроллера. Это может привести к ситуации, когда обновление / обновление больше невозможно.

  4. На дисковых форматах. Достаточно продавцов используют некоторые собственные макеты для хранения данных, которые связаны с пересмотром вашей комбинации аппаратного и микропрограммного обеспечения. Это может привести к ситуации, когда замена детали сделает невозможным доступ к вашим данным.

  5. Это SPOF и узкое место. Наличие только одного контроллера за одним PCI-мостом не дает вам необходимой производительности и избыточности. При этом также не существует никакого пути миграции для переноса данных на другой набор дисков за пределами досягаемости контроллеров.

Большинство из этих вопросов было решено с помощью нового поколения программного обеспечения SW-RAID или таких решений, как ZFS и BtrFS. Имейте в виду, что в конце вы хотите защитить свои данные и не быстро доступны, но избыточный мусор.

hspaans
источник
3
Я не согласен. Многие люди довольны Dell, HP, IBM и высокопроизводительными RAID-контроллерами LSI. Но, честно говоря, большинство современных качественных серверов уже имеют встроенные RAID-решения, поэтому идея покупки отдельного контроллера несколько устарела. Решения программного RAID также должны учитывать рабочие нагрузки записи с малой задержкой. ZFS имеет ZIL, но многие другие программные реализации RAID отсутствуют на этом фронте.
ewwhite
2
Я также не согласен с вашим последним абзацем, RAID - это доступность, а не защита. Защита требует резервного копирования, а не RAID.
Роуэн Хокинс,
4

В прошлом году я провел (в период до 2014–2015 гг.) Тестирование нескольких параллельных конфигураций CentOS 6.6 RAID 1 (зеркальное отображение) с использованием 2 LSI 9300 HBA vers 2 RAID-контроллера LSI 9361-8i с системами, построенными на следующем: 2U Supermicro CSE- Шасси 826BAC4-R920LPB, материнская плата ASUS Z9PE-D16, 2 восьмиъядерных процессора Intel Xeon E5-2687W v2 с частотой 3,4 ГГц, зеркальный Seagate ST6000NM0014, 6 ТБ SAS, 12 ГБ, 512 ГБ ОЗУ. Обратите внимание, что это полностью SAS3 (12 Гбит / с) совместимая конфигурация.

Я просмотрел статьи, написанные о настройке программного обеспечения, и использую программный RAID для Linux более 10 лет. При выполнении базовых тестов ввода / вывода (dd-oflag = прямые файлы от 5k до 100G, hdparam -t и т. Д.) Программный RAID выгодно сочетается с аппаратным рейдом. Программный RAID отражается через отдельные адаптеры HBA. Я зашел так далеко, что провел тестирование со стандартными конфигурациями ядра CentOS 6, kernel-lt и kernel-ml. Я также пробовал различные настройки mdadm, файловой системы, дисковой подсистемы и операционной системы, предложенные различными онлайн-статьями, написанными о программном RAID-массиве Linux. Несмотря на настройку, тестирование, настройку и тестирование, при работе в мире чтения, системе обработки транзакций (с базой данных MySQL или Oracle) я обнаружил, что использование аппаратного RAID-контроллера приводит к увеличению производительности в 50 раз.

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

казарка
источник
2

Большинство авторов здесь просто не знают о « дыре для записи ». Это основа, которая позволяет протестировать резервные единицы аппаратных RAID-массивов против отсутствия программных RAID-массивов. Например, программная реализация Linux для Linux поддерживает битовые карты операций записи или выполняет полный пересчет «четности» в случае неочищенного завершения работы. ZFS всегда стремится к полной записи, чтобы избежать этой несогласованности или отложить повторную проверку. Итак, вкратце, достаточно умный программный RAID в настоящее время часто достаточно хорош, чтобы его можно было использовать вместо «кто знает, что находится внутри», так называемого «аппаратного RAID».

Что касается кеш-части вопроса, это действительно не имеет большого значения, потому что сама кеша записи в ОС может быть намного больше, чем у «аппаратного» адаптера.

poige
источник
1
Это еще одна причина избегать аппаратных карт RAID без надлежащего защищенного кеша WB. Примечание по Linux MD Raid: оно не полностью защищено от дыры в записи. Поскольку он не имеет защиты от потери мощности, в случае внезапной потери мощности данные в конечном итоге будут потеряны (подумайте о передаче данных и / или частичной записи). Конечно, это произойдет даже в сценарии с одним диском, но характер четности или RAID5 / 6 усиливают это. В худшем случае метаданные файловой системы могут быть повреждены, однако современные файловые системы достаточно устойчивы, чтобы их можно было восстановить очень хорошо. Однако некоторые данные могут быть потеряны.
Сёданшок
@shodanshok, ты совершенно не прав. Подумайте
Пойдж
1
Многие батареи, если они находятся в хорошем состоянии, могут включать кэш-память WB в течение 24-96 часов, что достаточно для восстановления питания, за исключением действительно экстремальных ситуаций. Кроме того, современный контроллер переключается в NVRAM (следующим образом: флэш - память) , как длительное хранение, поэтому в случае сбоя питания небольшого аккумулятора / SuperCap будет очищать содержимое кэша в памяти NV , которая может сохранять данные в течение нескольких месяцев или лет в других слово, контроллер RAID BBU будет предотвратить RAID5 / 6 отверстий в (почти) всех обстоятельствах.
Shodanshok
1
Вы сказали, что невосприимчиво, чтобы написать дыру. Разработчики говорят, что это не так , хотя они сказали, что это не должно иметь большого значения в реальном мире.
Shodanshok
1
Извините, но вы написали: «Это основа, которая позволяет использовать только резервные блоки аппаратных RAID-массивов по сравнению с отсутствием таковых для программных RAID-массивов» . Это НЕПРАВИЛЬНО . Надлежащие аппаратные карты RAID обеспечивают дополнительную защиту, и я неоднократно говорил вам, что это мнение тех же разработчиков LSR. Теперь я задаю вам вопрос: ваше утверждение хорошо или неправильно? Так как это неправильно, пожалуйста, отредактируйте ваш ответ, иначе вас могут обмануть другие пользователи.
Сёданшок
0

Я работаю это все время. Это во многом зависит от того, что вы делаете, и от уровня рейда ваша поддержка. SW-контроллер, использующий Raid 0 или 1 для ОС, и ничего особенного не подходит. Запуск SW-контроллера с Raid 5 в базе данных вызывает проблемы! НЕКОТОРЫЕ аппаратные контроллеры действительно дают вам лучшую производительность, но это зависит от того, сможет ли он кешировать и чипсет процессора карты рейда. Также не все программные контроллеры поддерживаются всеми ОС. Поэтому иногда вам может понадобиться купить HW для запуска ESXi ... Если только вы не используете соединения sata.

Странный парень III
источник