LINUX.ORG.RU
ФорумAdmin

RAID 0/1/10/01: не понимаю...


0

2

Вот уже две темы читаю и не понимаю: откуда во всех вышеуказанных уровнях RAID может взяться ускорение чтения при последовательном однопоточном чтении данных?

Deleted

это наверное красноглазый линупс глючит и скорость чтения растёт.

В других системах такого нет©

anonymous
()

> RAID 0

«0» как бы намекает...

1


А там ускорения и нет

10


В соседнем треде разобрали

01


А это что?

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

01 — это 10 наизнанку, в гугле его не рекомендовали использовать

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

после синка или из кеша? попробуйте отключить кеширование совсем

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

Упреждающее чтение могло бы идти со второго диска

А вот это уже интересно. По умолчанию размер chunk'а для RAID0, RAID4, RAID5, RAID6 и RAID10 - 64кб (man 8 mdadm), по умолчанию размер упреждающего чтения - 128кб (получен при помощи blockdev --getra, на разных девайсах у меня одинаковый). А блоками какого раздела читает RAID1? Что-то найти не могу...

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

Есть ускорение при чтении, кратное количеству дисков. Нет - при записи.

Можно почитать в википедии.

Я в первом посте задал ограничение: при последовательном однопоточном чтении данных. Что в этом случае? sdio сказал про упреждающее чтение, но я что-то никакой толковой информации по этому поводу нагуглить не могу...

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

01

А это что?

10 наоборот.

К.О. отдыхает...

Ну... хм... 01 - это зеркало из страйпов, а 10 - это страйп из зеркал.

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

64кб

Сейчас - 512

Откуда информация?

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

Ну... хм... 01 - это зеркало из страйпов, а 10 - это страйп из зеркал.

Просто это как бы очевидная вещь, имел в виду - где и зачем оно нужно?

Откуда информация?

       -c, --chunk=
              Specify  chunk size of kibibytes.  The default when creating an array is 512KB.  To ensure compatibility with
              earlier versions, the default when Building and array with no persistent metadata  is  64KB.   This  is  only
              meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.

YAR ★★★★★
()

На RAID1 скорость чтения 1х, т.к. чтение идёт с одного диска (на сколько я понял). Теоретически, скорость можно поднять до 2х, если читать с двух дисков сразу.

Рецепт поднятия RAID10 на двух дисках и призван это исправить. На днях хочу проверить на сколько это работоспособно.

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

На RAID1 скорость чтения 1х, т.к. чтение идёт с одного диска (на сколько я понял).

Чтение идёт с двух по очереди, что логично.

Теоретически, скорость можно поднять до 2х, если читать с двух дисков сразу.

При однопоточном последовательном чтении одновременно с двух дисков читать можно только, если запрашивать у SoftRAID'а за раз куски данных большие, чем куски, которые он «раскидывает» по разным дискам.

Рецепт поднятия RAID10 на двух дисках и призван это исправить. На днях хочу проверить на сколько это работоспособно.

RAID10 из двух дисков полностью эквивалентен RAID0 и является страйпом из двух деградированных зеркал. Его имеет смысл делать только в том случае, если ты позднее собираешься добавить ещё два диска, чтобы «восстановить» полные зеркала.

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

Вот в этом примере видно, что отказоустойчивость сохранилась:

Если отказоустойчивость сохранилась, значит я ошибся и RAID10 из двух дисков эквивалентен RAID1, так что делать его также не имеет смысла.

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

>Если отказоустойчивость сохранилась, значит я ошибся и RAID10 из двух дисков эквивалентен RAID1, так что делать его также не имеет смысла.

Вот как со скоростью чтения обстоят дела, мне пока тоже не понятно. Надо пробовать, смотреть.

adepto
()

Как уже сказали, упереждающий кеш -> если ты начал читать файл размером 10TB, то ОС может логично предположить, что читать ты его будешь до конца - и кешировать файл в память вторым потоком.

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

Как уже сказали, упереждающий кеш -> если ты начал читать файл размером 10TB, то ОС может логично предположить, что читать ты его будешь до конца - и кешировать файл в память вторым потоком.

Но тогда почему это не происходит?

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

Но тогда почему это не происходит?

Почему не происходит? В нормальных ос и контроллерах - происходит. Только вопли начинаются «куда делась моя ОЗУ»

zgen ★★★★★
()

А что счастливчикам с софтовым RAID 1 делать-то?
от сюдава

лучше и софтовый RAID1 создавать в виде
mdadm -C -l10 -p f2 -n2 /dev/md0 /dev/sda1 /dev/sdb1

Вот это поможет?

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

Что не так? Я вот в нескольких местах читал, что на RAID 1 скорость чтения должна быть выше. А тут уже третий тред подряд говорят об обратном. Я не пойму, оно лечится или нет?

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

> Что не так?

То, что тут почти весь тред идет обсуждение этого, в т.ч. и моих постов из соседних тредов (в т.ч. и приведенной мною строчки для mdadm'a), плюс я привел ссылки с тестами.

И снова тот же вопрос - «а поможет ли оно?»...

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

Это же ЛОР, зачем так нервничать (-; Окей, пойду перечитаю

ostin ★★★★★
()

Вот уже две темы читаю и не понимаю: откуда во всех вышеуказанных уровнях RAID может взяться ускорение чтения при последовательном однопоточном чтении данных?

Классиков почитай. Ну, там «Архитектура компьютера» Таненбаума, что ли.

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

>Я вот в нескольких местах читал, что на RAID 1 скорость чтения должна быть выше.

Многие так думают. Только в реальности при одном потоке скорость чтения с RAID1 - 1x, при двух потоках 1,5х суммарно (по моим замерам).

adepto
()

у тебя есть блок данных размером X, который размещён на N дисках блоками размера X/N, и система, при чтении блока X, используя либо софт-рейд прокладку, либо хард-рейд, запрашивает все субблоки блока Х одновременно. Скорость поиска в данном случае, конечно, не увеличится, а вот скорость однопоточного чтения - примерно в N раз.

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

Судя по отзывам, при использовании RAID10 на двух дисках, есть и отказоустойчивость и 2х чтение.

у нас на работе есть полуофициальный порядок рассмотрения каких-либо проблем, включающий в себя усаживание на стул/в кресло, фразу «это надо обмозговать», и таки обмозговывание проблемы. А тебе я бы предложил разобраться, как достигается отказоустойчивость, и от каких отказов она устойчива, и как достигается повышение скорости чтения и записи.

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

у тебя есть блок данных размером W<=X, который должен быть размещён на N дисках блоками размера X/N, и система, при записи блока W, используя либо софт-рейд прокладку, либо хард-рейд, отправляет на запись субблоки блока W одновременно. Скорость поиска в данном случае, конечно, не увеличится, а вот скорость однопоточной записи - примерно в N раз.

следует, пожалуй, привести некоторую аналогию с сетевыми технологиями: допустим, есть сетевой линк, способный передавать данные со скоростью 100 Мб/с. Т.е. за секунду он может передать 100 Мб данных. Но вот на практике ты фиг по этому линку передашь один бит за 10*е-8 с. А 100 Мб - примерно за секунду :) И если на жёстких дисках у тебя блоки размера K, то именно использование блоков размера K*N на страйпе из N жёстких дисков позволяет добиться увеличения скорости и записи, и чтения данных, сравнимых по размеру или больших, чем размер блока страйпа.

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

Это все хорошо, но тут речь про RAID1 и/или двухдисковый RAID10, где в один момент времени система пишет одинаковый блок на все диски (иначе это уже не зеркалирование, а непонятно что); увеличения скорости не будет, что и подтверждается моей последней ссылкой.

В RAID5/6 тоже увеличения скорости быть не должно, скорее, даже наоборот - блоки данных раскидываются на все диски и суммарная скорость их записи равна (N-1)*S (или (N-2)*S), где S - наименьшая скорость записи из всех дисков (скорее всего, еще и с учетом затрат на позиционирование, а чем больше дисков - тем больше «медленных» мест может оказаться), НО после/параллельно с этим вычисляется контрольная сумма и пишется на оставшийся(-еся) диск(-и), т.е., в самом паршивом случае получим S/2.

Так что твое описание применимо разве что к RAID0, который и не *R*AID, в общем-то...

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

«кто здесь?»(с)

изначально я писал 2 mironov_ivan. Именно объяснение метода увеличения скорости доступа на примере чтения, далее я уже тебе привёл аналог моего примера, поменяв его под запись. В примере я сознательно не использовал упоминание какого-либо из типов RAID. Я подозреваю, что ты смог сделать из написанного мной правильные выводы, но решил, что следует немного повозмущаться.

На RAID1 или двухдисковом RAID10 увеличения скорости записи/чтения нет. RAID5 и 6 вообще, АФАИК, самые медленные из рейдов. Увеличение скорости возможно при использовании честного страйпа, который, сюрприз-сюрприз, RAID0 & RAID10(>=4 дисков).

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

а ничего, что рейд5 и 6 это фактически страйпы с размазанной по ним информацией о чётности, например?

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

а ничего, что рейд5 и 6 это фактически страйпы с размазанной по ним информацией о чётности, например?

очень даже чего. Однако мои личные тесты на аппаратном рейде дали для 5-ки самый фиговый результат. Я был в такой печали, что на софтовом рейде пятёрку вообще не тестировал. с 6-кой та же песня, с уточнением, что ни моё железо, ни мой софт 6-ку не умеет :) С утверждением, что 5 и 6 - это страйпы с размазанной суммой - согласен. С мысленным экспериментом, в котором 5ка делает единичку - согласен. Опыт, скотина, не даст мне спать спокойно :(

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

у меня софтовый рейд5 из трех дисков давал двукратный прирост в скорости по сравнению с отдельно стоящим диском в том же сервере, например. Правда железка использовалась для бекапов и толку от увеличившейся скорости чтения было не много. Кстати, запись не проседала в сравнении с отдельным диском.

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

>> Однако мои личные тесты на аппаратном рейде дали для 5-ки самый фиговый результат.

на аппаратном рейде

А теперь проверь на софтовом. На RAID5 из трёх дисков достижима двукратная скорость.

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

random read очень даже увеличивается в raid1, за счет возможности позиционирования большего числа головок по одному и тому же набору битобайтов одновременно. при n-way mirror оно увеличивается не в n раз конечно, но вполне себе зависимо от n. от характера конкретного io зависит, конечно же, тоже.

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

но разве random read убирает в raid1 необходимость в подтверждении целостности считанных данных за счёт считывания их с обоих винчестеров (если их два)?

spunky ★★
()

Вдруг кому пригодится

В соседней теме выложил результат простого эксперимента, показывающего как работает распараллеливание в софтовом raid1 при наличии нескольких потоков чтения: http://www.linux.org.ru/jump-message.jsp?msgid=5805778&cid=5813982

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