Является ли RAID5 более надежным, чем RAID1

Я собираюсь заменить старый аппаратный массив RAID5 на программный массив Linux1 RAID1. Я разговаривал с другом, и он утверждал, что RAID5 был более надежным, чем RAID1.

Он утверждал, что с RAID5 при чтении считывались данные о четности, чтобы убедиться, что все диски возвращают правильные данные. Он также заявил, что ошибки RAID1, возникающие на диске, останутся незамеченными, поскольку такая проверка не выполняется с RAID1.

Я могу видеть, как это может быть правдой, но также могу видеть, что все зависит от того, как реализованы рассматриваемые системы RAID. Конечно, системе RAID5 не нужно считывать и проверять данные о четности при чтении, и система RAID1 может так же легко считывать данные со всех дисков при чтении, чтобы проверить, что все они содержат одни и те же данные и, следовательно, достичь одинакового уровня надежности (с соответствующей потерей производительности).

Итак, вопрос в том, что на самом деле делают системы RAID5/RAID1 в реальном мире? Системы RAID5 проверяют данные четности при чтении? Существуют ли системы RAID1, которые читают со всех дисков и сравнивают данные на чтение?

11 ответов

Решение

RAID-5 - это отказоустойчивое решение, а не решение для обеспечения целостности данных.

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

Контроллер RAID (аппаратный или программный) не проверяет четность блоков во время чтения. Это серьезный риск запуска RAID-5 - если вы столкнулись с частичным отказом носителя на диске (ситуация, когда плохой блок не помечен как "плохой"), вы попадаете в ситуацию, когда ваши данные были скрыты поврежден.

RAID-Z/ZFS от Sun фактически обеспечивает сквозную целостность данных, и я подозреваю, что другие файловые системы и системы RAID будут предоставлять эту функцию в будущем, поскольку число ядер, доступных в ЦП, продолжает увеличиваться.

Если вы используете RAID-5, вы, как мне кажется, дешевы. RAID 1 работает лучше, обеспечивает большую защиту и не влияет на производительность при выходе из строя диска - за счет незначительной разницы в стоимости.

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

Из PDF-файла в разделе SATAssure (tm) Plus:

"Революционная технология SATAssure обеспечивает защиту и надежность данных корпоративного класса с использованием недорогих жестких дисков SATA большой емкости. SATAssure работает со всеми операциями чтения, обеспечивая целостность данных и автоматически исправляя проблемы в режиме реального времени - и все это без потери производительности или емкости, как в традиционных системы хранения данных. Сократите число RMA дисков, добавив в них новую возможность для включения и выключения питания отдельных дисков ".

Интересно, что некоторые производители суетятся из-за того, что они всегда вычисляют четность, и это заставляет меня думать, что это относительно редко встречается на аппаратных контроллерах. Также следует отметить, что такие системы, как ZFS и WAFL (netapp), выполняют вычисления четности для каждого чтения.

В RAID-5 четность обычно читается только при перестроении массива, а не при обычном чтении. Это так, что чтение может быть более случайным и быстрым (так как вам не нужно читать и вычислять четность для всей полосы каждый раз, когда вы хотите получить 1К данных из массива).

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

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

Так RAID-5 "более устойчивый"? Ответ, это зависит. RAID-5 позволяет получить более эффективное хранилище для заданного количества дисков, чем RAID-1; хотя для обеспечения эффективного хранилища за пределами одного диска RAID-1 необходимо комбинировать с RAID-0 в виде полосы массивов RAID-1 или RAID-1 на двух полосах RAID-0.

(Я предпочитаю первое, поскольку сбой одного диска приведет к удалению одного элемента RAID-1, а это означает, что только один диск потребует восстановления. При последнем отказ одного диска убивает элемент RAID-0, а это означает, что диски будут участвовать в восстановлении, когда диск будет заменен.)

Это также приводит к обсуждению "фантомной записи", где электроникой привода сообщается, что запись считается успешной, но по какой-либо причине запись никогда не поступает на диск. Это случается Учтите, что для массива RAID-5, когда у вас есть сбой диска, массив ДОЛЖЕН прочитать ВСЕ секторы на ВСЕХ выживших дисках ОТЛИЧНО для восстановления. NETApp утверждает, что большой размер дисков плюс большой размер рейдовых групп означает, что в некоторых случаях ваши шансы на сбой во время восстановления могут быть такими же, как каждый десятый. Таким образом, они рекомендуют, чтобы большие диски в больших группах RAID использовали двойную четность (что, я думаю, связано с RAID-6).

Я узнал об этом на техническом обсуждении в NetApp, проведенном несколькими их инженерами.

Обычная реализация RAID обычно не проверяет четность доступа к данным. Я никогда не видел ни одного. Некоторые реализации RAID5 считывают данные четности для потоковых чтений, чтобы предотвратить ненужный поиск (дешевле выбрасывать каждый n-й блок, чем заставлять диск искать каждый n-й блок). Реализации RAID1 не могут проверить, потому что они считывают производительность с обоих дисков (ну, в подавляющем большинстве реализаций RAID1. Горстка позволяет выбрать, что может быть полезно, если один диск намного медленнее другого и не требует интенсивной записи). нагрузка).

Некоторые проверяют с помощью фоновой "очистки". В этом случае RAID6 выигрывает, поскольку он может восстановить данные, а RAID5 и RAID1 находятся в одинаковой ситуации, которую вы можете определить, но не исправить. (Это не совсем верно, так как накопитель может обнаружить неверный CRC, вернуть ошибку и позволить перезаписать блок из проверки на четность. Это происходит довольно часто).

Если вам нужна целостность данных, сохраняйте хэш с каждым блоком (или записью, или как бы она ни была разделена) на прикладном уровне. Sybase и Oracle делают это (я верю на уровне страниц), и я видел это во многих случаях, за исключением гигантской базы данных. (например, контроллер начинает возвращать неверные данные, sybase аварийно завершает работу с явной ошибкой, поэтому записи не выполнялись, когда база данных работала на сбойном оборудовании с несовместимым состоянием).

Единственное решение для файловой системы и единственное решение RAID, которое делает это для вас, это ZFS.

Я немного подумал о том, что RAID-1 должен быть быстрее при чтении, чем RAID-5, так как он читает по обоим дискам одновременно.

Теперь, поскольку четность не читается на RAID-5, если массив не нуждается в перестройке, он фактически равен массиву RAID-0 с точки зрения чтения, я прав?

RAID-0 обычно считается самым быстрым уровнем (хотя он должен называться "AID", поскольку нет никакой избыточности).:-D

Говоря о программном RAID для Linux, простой тест с использованием hdparm подтверждает эту теорию: мои массивы RAID-5 всегда показывают более высокую скорость чтения, чем мои массивы RAID-1.

НО: похоже, что деградированный массив работает намного медленнее, чем обычный работающий массив! Я только что проверил это с Fedora 9, работающей на 4 WD 1 ТБ дисках с различными уровнями RAID. Вот результаты:

Ухудшенный RAID-5: скорость чтения 43 МБ / с Нормальный RAID-5: скорость чтения 240 МБ / с (!) RAID-1: скорость чтения 88 МБ / с

Поскольку допустимая потеря дисков одинакова в RAID-1 и RAID-5 (а именно в одном), я думаю, что RAID-5 должен превзойти RAID-1 в каждом аспекте - давая больше емкости по отношению к количеству дисков, используемых в массиве, и тому же Отказоустойчивость. Это приводит к заключению, в котором говорится, что RAID-6 превосходит любой другой уровень RAID, так как он работает быстрее, чем RAID-0 при обычном чтении (нет чтения по четности с двух дисков четности), и все же устойчив к отказам в случае потери член массива.;-)

Ваш друг говорит о бите четности, который задействован в некоторых уровнях RAID, или о контрольной сумме данных, записанных на диск?

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

RAID5 имеет бит четности. Это означает, что вы можете потерять диск в своем наборе RAID и продолжить, как будто ничего не произошло. Тем не менее, должна быть выполнена контрольная сумма данных, записанных на диск, чтобы убедиться, что они совпадают с тем, что произошло по проводам.

В этом случае контрольные суммы полностью независимы от RAID, который может или не может быть выполнен с кучей дисков

Отредактировано, чтобы добавить: Вы упомянули переход от аппаратного RAID к программному RAID. Предпочтение всегда отдается аппаратному RAID, а не программному RAID. Если вы можете приобрести оборудование, необходимое для обеспечения уровня RAID, который вы хотите реализовать, я бы посоветовал вам пойти на это. Это позволит выполнять все вычисления четности картой RAID, а не хостом. Поэтому освобождаю ресурс на хосте. Нет никаких сомнений в других преимуществах, но они избегают меня в данный момент

Системы RAID5 проверяют данные четности при чтении?

Это не имеет смысла. Что вы делаете, когда обнаруживаете несоответствие паритета? (Как вы узнаете, какой блок неправильный?)

Для случайного чтения проверка четности будет дорогой. Обычно вы можете обслуживать случайное чтение, просто просматривая один диск, но если вы хотите проверить четность, вам нужно будет прочитать все диски при каждом чтении. (Это все еще может иметь смысл, если бы вы могли что-то с этим сделать!)

Обратите внимание, что у RAID-1 есть и эта проблема - что имеет смысл, если рассматривать RAID-1 как двухдисковый RAID-5.

Я собираюсь заменить старый аппаратный массив RAID5 на программный массив Linux1 RAID1. Я разговаривал с другом, и он утверждал, что RAID5 был более надежным, чем RAID1.

Это будет зависеть от типа реализации рейда (hw / sw), дисков, контроллера рейда, если таковой имеется, и его особенностей.

Он утверждал, что с RAID5 при чтении считывались данные о четности, чтобы убедиться, что все диски возвращают правильные данные. Он также заявил, что ошибки RAID1, возникающие на диске, останутся незамеченными, поскольку такая проверка не выполняется с RAID1.

это действительно имеет некоторый небольшой смысл, но не совсем:), что происходит - если записаны неправильные данные, на зеркале они будут отправлены на оба диска, и при проверке четности raid5 они будут сгенерированы и распределены по дискам. проверка чтения / записи данных выполняется микропрограммой диска и контроллера и не имеет отношения к уровням рейдов.

So the question is, what do RAID5/RAID1 systems in the real world

на самом деле делать? Системы RAID5 проверяют данные четности при чтении? Существуют ли системы RAID1, которые читают со всех дисков и сравнивают данные на чтение?

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

Надежность массива зависит от качества накопителей (2,5-дюймовые накопители, как правило, живут дольше, чем 3,5 дюйма из-за снижения скорости RV; по моему опыту, НИКОГДА не покупайте жесткие диски SCSI/SAS maxtor - у них ужасные проблемы с прошивкой), окружающая среда (контроль температуры и влажности), сам контроллер (есть ли у него BBU? Прошивка обновлена? Реальный ли это рейд или фиктивный?), количество блоков питания на сервере, качество ИБП и т. д.

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

Кроме того, если ваше чтение выполняется менее чем за один блок, чтение с проверкой четности должно было бы расширить его до полного блока, тогда как обычное чтение не будет. (Разумеется, если предположить, что блок RAID больше блоков дисков. Я думаю, что чтение с диска должно иметь полные блоки. Если нет, моя точка зрения еще более верна.)

Так что, с моей точки зрения, да, он мог бы сделать это, но если бы он это сделал, это было бы неэффективно, и я сомневаюсь, что что-либо будет реализовано таким образом.

Опять же, у меня нет личных знаний о реальных реализациях.

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

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

afaik, я не профессионал в области хранения 24/7, контроллер всегда проверяет, что записывается и читается с дисков. то есть с raid1 у вас чуть хуже записи, чем на одном диске, но ваши чтения немного быстрее (нужно записать файл на два диска, но можно прочитать одну часть с первого диска, а другую часть с второго диска).

Может быть, вы можете отключить проверку данных для уровня рейда, но какой смысл в этом, все уровни рейда (кроме 0) предназначены для обеспечения избыточности данных, так зачем мешать себе.

Для raid 5 вам нужно как минимум 3 диска и вы можете использовать диски N-1 для данных. В raid 1 вам всегда нужно четное количество дисков и вы можете использовать N/2 диски для данных.

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

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

в зависимости от размера рейда, вы также должны учитывать время восстановления в случае ошибки (сколько дисков, какой размер одного диска, какой рейд (софт, фальш, аппаратный), какой уровень и т. д.)

Так что на самом деле невозможно сказать, что один рейд более надежен, чем другой (возможно, рейд 6 всегда более надежен, чем рейд 5 за счет потери места для хранения)

Другие вопросы по тегам