увеличение кучи дисков в рейде 0 увеличивает производительность?

10

увеличение кучи дисков в рейде 0 увеличивает производительность? я знаю, что два диска в чередовании с чередованием обычно быстрее, чем один, но заметил ли я разницу в производительности, скажем, 2 диска в чередовании и 8? Есть ли общее ограничение на количество дисков в рейде, прежде чем вы действительно не получите больше пользы?

подобный вопрос был задан здесь

Увеличивает ли добавление дисков в массив RAID 10 производительность?

но я действительно спрашиваю, если добавление многих дисков в raid 0 имеет улучшения по сравнению с простым добавлением, скажем, 2 или 4. Продолжает ли увеличиваться производительность?

Питер Каллен
источник

Ответы:

11

В теории да, большее количество дисков в raid0 приведет к повышению производительности, поскольку нагрузка распределяется между большим количеством дисков. Однако на практике вы будете ограничены пропускной способностью raid-контроллера, производительностью процессора и памяти и тому подобным. Увеличение производительности не будет линейным, то есть 4 диска не в два раза быстрее, чем 2 диска.

В любой достаточно современной системе с raid-контроллером или даже при использовании программного raid с linux 'mdadm использование 8 дисков будет быстрее, чем использование 2, и вы не должны сдерживать производительность остальной системы. Процессор, рейд и / или дисковый контроллер, память, все это должно быть в состоянии справиться с этим. Чем больше дисков вы добавляете, тем выше использование системных ресурсов. Особенно, если вы используете встроенный контроллер SATA в мягкой боевой комбинации. Но ничего, что действительно мешало бы общему удобству использования. Если вы используете linux, вы можете использовать ядро, которое было сконфигурировано без «preempt», чтобы задачи, ориентированные на сервер, имели преимущество перед отзывчивостью пользователя.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Конечно, чем больше дисков вы добавляете, тем выше вероятность того, что один из них потерпит неудачу, и весь ваш рейд будет уничтожен. Я бы ожидал, что raid0 из 8 дисков не продлится больше года или двух, если вам повезет. Raid0 из 16 дисков будет требовать неприятностей, и тогда я рассмотрю raid10, он все равно будет достаточно быстрым, и вам будет меньше о чем беспокоиться.

Что касается того, сколько дисков будет максимально использовать ресурсы системы, я бы не знал, если бы у меня не было подробных системных характеристик. Я думаю, что вы будете более ограничены частотой сбоев, если вы пройдете около 16 дисков (я бы не хотел об этом думать).

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

Если вы используете mdadm, возможно, стоит подумать о том, чтобы просто использовать raid10, так как в некоторых конфигурациях он может приблизиться к производительности raid0, то есть производительности чтения raid0 и уже улучшить производительность записи по сравнению с другими уровнями raid (кроме raid0). Вы получите лучшую избыточность, чем другие уровни рейда, только с небольшим штрафом за скорость по сравнению с рейдом 0. Это было бы лучшим из обоих миров, вы не найдете это часто.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 предоставляет общий драйвер RAID, который в своей «ближней» компоновке по умолчанию использует стандартный RAID 1 с двумя дисками и стандартный RAID 1 + 0 с четырьмя дисками; тем не менее, он может включать в себя любое количество дисков, в том числе нечетные числа. Благодаря своей «далекой» компоновке MD RAID 10 может работать как с чередованием, так и с зеркалированием, даже имея только два диска в компоновке f2; при этом выполняется зеркалирование с чередованием операций чтения, что обеспечивает производительность чтения RAID 0. Обычный RAID 1, предоставляемый программным RAID-массивом Linux, не выполняет чтение с чередованием, но может выполнять чтение параллельно.

Как предлагается в комментариях, смешивание размеров с mdadm не даст увеличения скорости, если вы будете использовать все дисковое пространство, а не позволять маленькому диску определять размер массива.

Также время поиска не улучшится в raid0 и может даже стать немного медленнее. Для raid0, основанного на SSD, время поиска было бы таким маленьким (между 0,08 и 0,16 мс https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ), это не будет иметь большого значения, я ожидаю.

aseq
источник
Если вы хотите смешать размеры, то вы не можете применить RAID0, по крайней мере, использовать все пространство, которое имеют эти диски. Вы должны использовать JBOD, который не увеличивает производительность.
Теро Килканен
Вы можете смешивать размеры, используя mdadm, это очень гибко, mdadm даже позволяет вам настроить raid10 на 3 диска. Я не ожидал, что вы можете смешивать размеры в контроллерах рейда, они менее гибкие, но быстрее.
Aseq
1
Я проверил это, и если вы хотите RAID0, то самое маленькое устройство массива определяет размер всего массива. То есть, если у вас есть 100 ГБ, 200 ГБ и 300 ГБ дисков, вы получите массив RAID0 300 ГБ и свободное пространство 100 ГБ и 200 ГБ для использования в других целях. В линейном режиме вы получаете полную емкость всех устройств, но не параллельную производительность.
Теро Килканен
1
Это звучит примерно так, да.
Aseq
2
В случае ротационных носителей не возникает ли проблема времени поиска и времени передачи? Добавление большего количества дисков распределяет объем считываемой / записываемой информации по большему количеству пластин (каждый должен делать меньше == быстрее), но все они все еще должны выполнить операцию поиска (не уменьшенную путем добавления большего количества дисков). Таким образом, в зависимости от типа операций, которые вы выполняете (т. Е. Потеря небольшого чтения по сравнению с несколькими большими чтениями), увеличение скорости передачи (путем добавления большего количества дисков) может иметь небольшую или большую разницу.
Моломби
1

Это зависит от рабочей нагрузки, но ИМХО да, добавление 2 дополнительных дисков к существующему массиву из 2 дисков должно повысить общую производительность.

Вы должны понять, где находятся узкие места:

  • CPU - сколько потоков данных может обрабатывать CPU,
  • шина / контроллер - сколько данных он может нести,
  • SSD / HDD - сколько данных он может дать / взять.

Предположим, что существует программный RAID-массив Linux, и добавление двух дополнительных дисков МОЖЕТ привести к:

  • ~ в два раза короче время доступа к достаточно большому блоку данных, что приводит к;
  • ~ двойной IOPS,
  • Двойная пропускная способность, при условии, что контроллер имеет достаточную шину и процессор может обрабатывать трафик.

* ~ это никогда не бывает двухкратным увеличением следующих факторов, всегда меньше 10-20%. Это выглядит более или менее линейно. Пожалуйста, не относитесь к этому как к авторитетному ответу, я не изучал его.

Михал Соколовский
источник