LINUX.ORG.RU

[Soft] RAID5 or RAID10 для сервера?


0

3

Опять решил посоветоваться.
Не то что бы сказать, что преимущество RAID10 неочевидно, просто хочу знать мнение на сколько это целесообразно в данной ситуации.

RAID5
sda1 sdb1 sdc1 > RAID1 /boot
sda2 sdb2 sdc2 > RAID5 /
sda3 sdb3 sdc3 > RAID0 swap

RAID10
sda1 sdb1 sdc1 sdd1 > RAID1 /boot
sda2 sdb2 sdc2 sdd2 > RAID10 /
sda3 sdb3 sdc3 sdd3 > RAID0 swap

Процессор ориентировочно i7 875K, дистр CentOS, задача web server.

10: очень малая нагрузка на проц, иногда выдерживает вылет двух дисков сразу.

5: нужно только 3 диска, а не 4 при том же объеме

annoynimous ★★★★★ ()
Ответ на: комментарий от annoynimous

Да, я знаю о схемах, принципах и отличиях. Тут скорее два вопроса.

Практический: Даст ли RAID10 заметный прирост скорости при построении сервера на десктопном процессоре. (в отличии от схемы без рэйда или рэйд1 для /)

Теоретический: Правильно ли использовать разделы внутри диска, мне все же кажется, что идеальная модель подразумевает использовать под часть рэйда весь диск, или это скорее домыслы и на практике не скажется.

Umberto ★☆ ()

Umberto> sda3 sdb3 sdc3 sdd3 > RAID0 swap

Плохо

sdio ★★★★★ ()

Если нужна скорость, делай десятку.

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

nnz ★★★★ ()

Лучше 10й как по надежности так и по скорости..

sda1 sdb1 sdc1 sdd1 > RAID1 /boot
sda3 sdb3 sdc3 sdd3 > RAID0 swap

А вот таких извращений лучше не творить, ибо толку ноль, а геммороя добавится.

Reset ★★★★★ ()
Ответ на: комментарий от Reset

sda1 sdb1 sdc1 sdd1 > RAID1 /boot - пусть будет, реализовать просто и хуже точно не будет

sda3 sdb3 sdc3 sdd3 > RAID0 swap - ИМХО есть смысл для увеличения скорости (в ущерб надежности), т.к. при использовании просто swap-разделов постоянно вижу одну и ту же картину, когда используется только один из swap-разделов

anonymous ()
Ответ на: комментарий от YAR

Filename Type Size Used Priority
/dev/hda1 partition 514040 44304 -1
/dev/hdc1 partition 514040 0 -2

...твоя правда, разные приоритеты.
Где их поменять?

anonymous ()
Ответ на: комментарий от Umberto

Угу. Но не забываем про

Другое дело, что при вылете одного винта и интенсивном своппинге система может обидеться.

YAR ★★★★★ ()
Ответ на: комментарий от YAR

Ясно, тоесть черевато ребутом. А при размещении раздела свопа внутри рэйд10 можно будет «доаптаймить» на 3х колесах пока заботливый админ не притащит новый винт.

Umberto ★☆ ()
Ответ на: комментарий от Umberto

> Ясно, тоесть черевато ребутом.

Ребут - это в лучшем случае, а так - это и некорректная работа софта, и повреждение / потеря данных.

YAR ★★★★★ ()

Какая хе*ня.

Все зависит от задач. Смысл использовать Raid10 бывает КРАЙНЕ редко. Нужно выдерживать отказы 2х дисков — raid6, в случае железного рейда это, имхо, оптимальный вариант для бд.

swap, /boot в рейдах не нуждается. Свап сам будет использовать возможность одновременного кеширования на несколько дисков. /boot можно просто продублировать на каждом разделе, raid1 для этого не нужен, но смысл этого все равно от меня ускользает.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

Задача сделать RAID способный выдержать потерю одного винта + получить профит скорости на R/W. RAID1 простое зеркало, прирост в скорости чтения, RAID5 теряет на скорости записи, нужно 3 винта.
Вот и подумал сделать 10ку.

swap, /boot в рейдах не нуждается.

Парой постов выше YAR намекнул, что при падении одного винта и потере части свопа на нем может быть потеря керированных данных, что есть нехорошо. Смысл использовать рэйд, сохранить данные на нем, но потерять часть из кеша. Что, как я понимаю, может быть при долгом аптайме сервера.

Что же касается /boot на RAID1, так это просто реализовать, хотя все же склоняюсь установить /boot на каждый раздел sdX1 без рэйда, ну а sdX2 отдать под RAID10 и уже потом порезать на /, /tmp, /var.

Umberto ★☆ ()
Ответ на: комментарий от Umberto

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

хотя все же склоняюсь установить /boot на каждый раздел sdX1 без рэйда


У RAID'а тот плюс в данном случае, что не придется каждый раз при обновлении загрузчика (установки новой версии GRUB'a или обновления ядра) руками раскидывать копию /boot на остальные разделы.

YAR ★★★★★ ()
Ответ на: комментарий от Umberto

> Задача сделать RAID способный выдержать потерю одного винта + получить профит скорости на R/W. RAID1 простое зеркало, прирост в скорости чтения, RAID5 теряет на скорости записи, нужно 3 винта. Вот и подумал сделать 10ку.

Лучше raid5. Запись на 3х винтах примерно такая же как у raid1 на двух, чтение очень быстрое (быстрее только у raid0, raid50, raid60).

Парой постов выше YAR намекнул, что при падении одного винта и потере части свопа на нем может быть потеря керированных данных, что есть нехорошо. Смысл использовать рэйд, сохранить данные на нем, но потерять часть из кеша. Что, как я понимаю, может быть при долгом аптайме сервера.

Нехорошо если при потере кеша умирает сервер. Если нужно это защитить, то лучше использовать 1 raid. 10 raid тут точно не нужен, если нужно увеличить кеш, то использовать несколько 1 raid.

Что же касается /boot на RAID1, так это просто реализовать, хотя все же склоняюсь установить /boot на каждый раздел sdX1 без рэйда

Некоторое время назад я так и делал. Потом стал просто делать бекап /boot раздела после установки.

PS: Вообще у меня в брошюрке от интела (относящееся правда к аппаратному рейду) для вебсерверов советуют raid5. Под бд raid6 (сам его предпочитаю). Если нужна скорость чтения такая же как у raid0, то она есть только у raid50, а такой же скорости записи у других рейдов нет.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

> Лучше raid5. Запись на 3х винтах примерно такая же как у raid1 на двух

А разве для RAID1 есть разница в скорости записи в зависимости от количества дисков? Насколько я понимаю, там скорость записи не выше, чем скорость записи самого медленного диска.

YAR ★★★★★ ()
Ответ на: комментарий от YAR

Скорость записи raid1 от кол-ва дисков не зависит. Я просто указал, что raid5 на трех дисках будет так же быстро писать как и рассмотренный Вами raid1. «Потери в скорости» в данном случае нет.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

>Лучше raid5. Запись на 3х винтах примерно такая же как у raid1 на двух, чтение очень быстрое (быстрее только у raid0, raid50, raid60).

быстрее только у raid0

Вот и подумываю использовать RAID0+1 он же 10ка.
Меньше нагрузка на процессор при вычислении XOR, высокая скорость чтения/записи.

для вебсерверов советуют raid5. Под бд raid6

Ну у меня пока что все в куче, MySQL, Apache, прочее.

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

Да, я как раз имел ввиду кэш приложений, а не дисковый.

У RAID'а тот плюс в данном случае, что не придется каждый раз при обновлении загрузчика (установки новой версии GRUB'a или обновления ядра) руками раскидывать копию /boot на остальные разделы.

Тоесть нет принципиальной разницы какой из дисков выйдет из строя, загрузка все равно произведется?
Я понимаю, что это зеркало, просто думал, что /boot может не определиться в зеркале.

Еще вопрос, если /boot делать на RAID1, запись загрузчика произведется в MBR всех, в данном случае 4х дисков?
И какой бы из них не вышел из строя на загрузке это не скажется?

Umberto ★☆ ()

думаю RAID 10 будет быстрее на чтение, за счет структуры своей

anonizmus ()
Ответ на: комментарий от Umberto

> Еще вопрос, если /boot делать на RAID1, запись загрузчика произведется в MBR всех, в данном случае 4х дисков?

[Софтовый рейд] придется руками установить в каждый диск по отдельности.

И какой бы из них не вышел из строя на загрузке это не скажется?

[софтовый рейд] скажется, грузится все равно будет с одного раздела, другое дело если он будет недоступен (диск отвалится), то грузится будет с другого, из рейда. т.е. на этапе загрузки граба софтовый рейд не существует.

Вот и подумываю использовать RAID0+1 он же 10ка.

Меньше нагрузка на процессор при вычислении XOR, высокая скорость чтения/записи.

у raid10 скорость записи будет примерно такая же как у raid5 или raid1, скорость чтения тоже не будет сильно отличаться от raid5 или raid1. Поэтому дополнительное объединение двух raid1 в raid0 лишено смысла.

soomrack ★★★ ()
Ответ на: комментарий от Umberto

> Меньше нагрузка на процессор при вычислении XOR
А где в 10-ке XOR? Там же простое раскидывание данных по chunk'ам.

Тоесть нет принципиальной разницы какой из дисков выйдет из строя, загрузка все равно произведется?


Загрузка в любом случае произведется, вне зависимости от того, будет содержимое /boot находиться в RAID1 или просто прямо на разделе, но

Еще вопрос, если /boot делать на RAID1, запись загрузчика произведется в MBR всех, в данном случае 4х дисков?


Насчет «произведется» - не знаю, я это руками обычно делаю, но - да, обычно прописываю загрузчик во все диски. Тогда

И какой бы из них не вышел из строя на загрузке это не скажется

YAR ★★★★★ ()
Ответ на: комментарий от soomrack

> на этапе загрузки граба софтовый рейд не существует.

Почему? GRUB2, например, умеет грузиться с 5-го, соответственно, там одним диском уже не обойтись, значит, он должен уметь его собирать.

YAR ★★★★★ ()
Ответ на: комментарий от soomrack

> у raid10 скорость записи будет примерно такая же как у raid5 или raid1, скорость чтения тоже не будет сильно отличаться от raid5 или raid1

ты не в теме.

annoynimous ★★★★★ ()
Ответ на: комментарий от YAR

Спасибо

А где в 10-ке XOR?

Сори, мой поток сознания имел ввиду: «Меньше нагрузка на процессор при отсутствии вычислении XOR» который считается в 5ке

Umberto ★☆ ()
Ответ на: комментарий от annoynimous

>> у raid10 скорость записи будет примерно такая же как у raid5 или raid1, скорость чтения тоже не будет сильно отличаться от raid5 или raid1

ты не в теме.

Тест?

soomrack ★★★ ()
Ответ на: комментарий от YAR

> Почему? GRUB2, например, умеет грузиться с 5-го, соответственно, там одним диском уже не обойтись, значит, он должен уметь его собирать.

Правда? Интересно... Впрочем на сайте граба ничего по этому поводу я не увидел.

soomrack ★★★ ()
Ответ на: комментарий от annoynimous

Кстати, да, в 10-ке чтение, по-идее, может достигать 4*m (если RAID1 в нем параллелит запросы на чтение между дисками), а запись - 2*m (ибо RAID0).

// m - скорость одного диска, всего дисков 4

YAR ★★★★★ ()
Ответ на: комментарий от YAR

> Кстати, да, в 10-ке чтение, по-идее, может достигать 4*m (если RAID1 в нем параллелит запросы на чтение между дисками), а запись - 2*m (ибо RAID0).

В реальности все несколько хуже.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

> Я просто указал, что raid5 на трех дисках будет так же быстро писать как и рассмотренный Вами raid1. «Потери в скорости» в данном случае нет.

Уверен? Представь, что мы имеем RAID5 из трех дисков, и рассмотрим одну полоску из этого RAID5, для простоты предположив, что каждая буква обозначает один сектор:

ABP

Предположим, что тебе надо обновить блок B. Расскажи, что для этого должен будет сделать КAID5?

mukoh ()
Ответ на: комментарий от Umberto

Теоретический: Правильно ли использовать разделы внутри диска, мне все же кажется, что идеальная модель подразумевает использовать под часть рэйда весь диск, или это скорее домыслы и на практике не скажется.

Я бы сделал /boot на флешке, все остальное на RAID. Разделы нарезал бы через LVM поверх RAID.

Deleted ()

В серьёзном ынтерпрайсе обычно работает такая схема - боевые системы = RAID10, тестовые и вспомогательные (не влияющие на бизнес-процессы) = RAID5

Hokum ☆☆☆☆ ()
Ответ на: комментарий от Hokum

правда, в том же ынтерпрайсе не в чести DAS (и NAS тоже) :)

Hokum ☆☆☆☆ ()
Ответ на: комментарий от soomrack

Оптимальный вариант для БД - RAID10, почитай тесты чтоли. RAID5 и его, если утрировать, продолжение в виде RAID6 для нагруженной БД не подходят.

Deleted ()
Ответ на: комментарий от Deleted

RAID10 без вариантов, и не только для БД, любой тяжёлый продакшен, иначе iopsов не хватит...

Hokum ☆☆☆☆ ()
Ответ на: комментарий от Deleted

> Оптимальный вариант для БД - RAID10, почитай тесты чтоли. RAID5 и его, если утрировать, продолжение в виде RAID6 для нагруженной БД не подходят.

Для нагруженной БД лучше raid50 на аппаратном рейде. ТС задавал вопрос об целесообразности софтового raid10 для вебсервера.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

Эээ. raid50? может, пора о нормальном массиве подумать?

Hokum ☆☆☆☆ ()
Ответ на: комментарий от soomrack

> Для нагруженной БД лучше raid50 на аппаратном рейде

Для нагруженной БД лучше raid10 на аппаратном рейде. И всегда было так. iops'ов большеЭ, причём солидно, чем у raid50. Прогони тесты сам или почитай тесты от более-менее уважаемых контор.

Deleted ()
Ответ на: комментарий от Deleted

Из (http://download.intel.com/support/motherboards/server/sb/d29305015_raid_swg.pdf), стр. 12, 15.

Raid10:

Appropriate when used with data storage that requires 100 percent redundancy of mirrored arrays and that needs the enhanced I/O performance of RAID 0 (striped arrays). RAID 10 works well for medium-sized databases or any environment that requires a higher degree of fault tolerance and moderate to medium capacity.

Provides both high data transfer rates and complete data redundancy.

Raid50:

Appropriate when used with data that requires high reliability, high request rates, high data transfer, and medium to large capacity

Provides high data throughput, data redundancy, and very good performance.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

В чём по-вашему преимущество RAID 5+0 перед RAID 1+0?

Hokum ☆☆☆☆ ()
Ответ на: комментарий от soomrack

Мне, если честно, плевать, что интел пишет. Тесты показывают, что для DB-паттернов производительнее всего RAID10.

Deleted ()
Ответ на: комментарий от Deleted

Можно ссылку на тест с указанием контроллера и подробным описанием методики тестирования? Ничего путного на тему raid10 vs raid50 я не нашел, а из идеализированных соображений raid50 кажется выгодней.

soomrack ★★★ ()
Ответ на: комментарий от soomrack

Надо не «raid10 vs raid50» искать, а более-менее нормальное тестирование различных контроллеров. Там показатели тестов iometer'а в Database patterns. Первое место, разумеется, занимает RAID0, но это же не RAID, т.к. нет R ;) Второе - RAID10. Ну и рекомендации производителей (хоть того же оракла) если почитать, то под файлы DB рекомендуют только на RAID10 класть.

Deleted ()

Раз уж пошла такая пьянка... Пару вопросов знатокам RAID'ов:

С Википедии:

Производительность RAID 5 заметно ниже, в особенности на операциях типа Random Write (записи в произвольном порядке), при которых производительность падает на 10-25% от производительности RAID 1

Производительность RAID1 на запись примерно равна скорости одного диска, соответственно, фразу выше можно расценивать как сравнение с одним диском. Почему берется 10-25%? Ведь с учетом того, что при записи произвольного блока данных небольшого размера надо выполнить 2 операции - чтение (всех дисков, кроме контрольной суммы, делается параллельно со всех дисков, считаем одной операцией) и запись (модифицированный блок и контрольная сумма для всего страйпа, тоже делаются параллельно) - и если чтение и запись у нас делается примерно с одной скоростью (в принципе, у реальных дисков они не сильно различаются), допустим, по 200 Мб/сек, то с точки зрения системы изначальная операция записи должна проходить со скоростью около 100 Мб/сек, т.е., потери скорости должны быть порядка 50% от скорости одного диска. За счет чего меньшие цифры? Асинхронность работы дисков? Т.е., пока идет операция записи обрабатывается уже другой запрос?

Далее, там же:

Обычно использование RAID-6 вызывает примерно 10-15% падение производительности дисковой группы, по сравнению с аналогичными показателями RAID-5, что вызвано бόльшим объемом обработки для контроллера (необходимость рассчитывать вторую контрольную сумму, а также прочитывать и перезаписывать больше дисковых блоков при записи каждого блока).

Про контрольные суммы: при современных мощностях процессоров пере'XOR'ивание данных делается на более чем на порядок больших скоростях, чем обмен данными с RAID'ом и дисками, соответственно, это вряд ли узкое место.

Про блоки: операций с дисками, по-идее, столько же: надо модифицировать блок данных - читаем все диски, кроме контрольных сумм (1 операция параллельно для всех дисков), считаем 2 контрольных суммы, потом пишем их и модифицированный блок (тоже одна операция, параллельно для трех дисков). Потребление ресурсов со сравнению с RAID5 - да, больше, но куда девается производительность?

Далее, пробовал создавать ядерный RAID1 через mdadm - скорость чтения такая же, как и для одного диска. А где параллельность чтения? Его надо как-то иначе создавать или линуксовый raid1 не умеет параллельно читать данные с нескольких дисков? RAID10 на двух дисках дает нужный результат, но это немного не то...

YAR ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.