Я собираюсь заменить старый аппаратный массив RAID5 программным массивом RAID1 Linux. Я разговаривал с другом, и он заявил, что RAID5 более надежен, чем RAID1.
Он утверждал, что с RAID5 при чтении считываются данные четности, чтобы убедиться, что все диски возвращают правильные данные. Он также заявил, что на RAID1 ошибки, возникающие на диске, останутся незамеченными, потому что с RAID1 такая проверка не выполняется.
Я вижу как это мог быть правдой, но вы также можете видеть, что все зависит от того, как реализованы рассматриваемые системы RAID. Конечно, система RAID5 не иметь для чтения и проверки данных четности в системе чтения и RAID1 мог так же легко читать со всех дисков при чтении, чтобы убедиться, что все они содержат одни и те же данные, и, следовательно, достичь одинакового уровня надежности (с соответствующей потерей производительности).
Итак, вопрос в том, что на самом деле делают системы RAID5 / RAID1 в реальном мире? Проверяют ли системы RAID5 данные о четности при чтении? Существуют ли системы RAID1, которые читают со всех дисков и сравнивают данные при чтении?
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 обычно не проверяет четность при доступе к данным. Никогда не видел. Некоторые реализации RAID5 считывают данные четности для потокового чтения, чтобы предотвратить ненужный поиск (дешевле выбросить каждый n-й блок, чем заставлять диск искать каждый n-й блок). Реализации RAID1 не могут проверить, потому что они читают с обоих дисков для обеспечения производительности (ну, в подавляющем большинстве реализаций RAID1. Некоторые позволяют выбирать, что может быть полезно, если один диск намного медленнее другого и не требует интенсивной записи нагрузка.)
Некоторые действительно проверяют фон с помощью «очистки». В этом случае выигрывает RAID6, поскольку он может восстановить данные, а RAID5 и RAID1 находятся в той же ситуации, которую вы можете определить, но не исправить. (Это не совсем так, поскольку привод может обнаружить неправильный CRC, вернуть ошибку и позволить вам перезаписать блок с учетом четности. Это случается довольно часто).
Если вам нужна целостность данных, храните хэш с каждым блоком (или записью, или как бы то ни было, разделенной) на уровне приложения. Sybase и Oracle делают это (я полагаю, на уровне страниц), и я много раз видел, как это позволяет сохранить гигантскую базу данных. (например, контроллер начинает возвращать неверные данные, sybase аварийно завершает работу с явной ошибкой, поэтому записи не выполнялись, когда база данных работала на неисправном оборудовании с несогласованным состоянием).
Единственное решение для файловой системы и единственное решение RAID, которое делает это за вас, - это ZFS.
В 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, или контрольная сумма данных, записанных на диск?
Если они примерно равны, значит, у RAID1 нет бита четности - у вас есть две копии одних и тех же данных. Диск должен выполнять контрольную сумму, чтобы убедиться, что то, что было записано на диск, совпадает с тем, что было передано по сети.
В RAID5 есть бит четности. Это означает, что вы можете потерять диск в своем наборе RAID и продолжить работу, как будто ничего не произошло. Тем не менее, должна быть выполнена контрольная сумма данных, записанных на диск, чтобы убедиться, что они соответствуют тому, что было передано по сети.
В этом случае контрольные суммы полностью независимы от RAID, который может или не может быть выполнен с группой дисков.
Отредактировано для добавления: Вы упомянули переход от аппаратного RAID к программному RAID. Предпочтение всегда отдается аппаратному RAID программному RAID. Если вы можете приобрести оборудование, необходимое для обеспечения уровня RAID, который вы хотите реализовать, я бы посоветовал вам пойти на это. Это позволит выполнять все вычисления четности на карте RAID, а не на хосте. Таким образом освобождаются ресурсы на хосте. Без сомнения, есть и другие преимущества, но в данный момент они ускользают от меня
Я собираюсь заменить старый аппаратный массив RAID5 программным массивом RAID1 Linux. Я разговаривал с другом, и он заявил, что 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; по моему опыту НИКОГДА не покупайте диски Maxtor SCSI / SAS - у них ужасные сбои прошивки), среда (контроль температуры и влажности), сам контроллер (есть ли у него BBU? актуальна ли прошивка? реальный рейд или фейкрейд?), количество блоков питания в сервере, качество ИБП и т. д.
Я не знать это, но мне кажется маловероятным, что это так. Помните, что для вычисления четности он должен будет прочитать блок со всех дисков в вашем наборе RAID, а затем выполнить математические вычисления, чтобы определить правильность, тогда как в противном случае он просто выполняет чтение одного диска.
Кроме того, если вы читаете менее одного блока, чтение с проверкой четности должно расширить его до полного блока, тогда как обычное чтение этого не сделает. (При условии, конечно, что блок RAID больше, чем блоки дисков. I считать чтение с диска должно состоять из полных блоков. Если нет, моя точка зрения еще более верна.)
Так что, с моей точки зрения, да, это мог сделать это, но если бы это было так, это было бы неэффективно, и я сомневаюсь, что какие-либо из них реализованы таким образом.
Опять же, у меня нет личных знаний о реальных реализациях.
Проверяют ли системы RAID5 данные о четности при чтении?
В этом нет смысла. Что делать, если обнаруживается несоответствие по четности? (Как узнать, какой блок неправильный?)
Для случайных чтений проверка четности была бы дорогостоящей. Обычно вы можете обслуживать случайное чтение, просто глядя на один диск, но если вы хотите проверить четность, вам нужно будет читать все диски при каждом чтении. (Это могло бы иметь смысл, если бы вы могли что-нибудь с этим поделать!)
Обратите внимание, что у RAID-1 тоже есть эта проблема - что имеет смысл, если вы посмотрите на RAID-1 как на двухдисковый RAID-5.
Я немного подумал о заявлении, что 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 - это ее способность выдерживать отказы. В этом случае и RAID5, и RAID1 могут обрабатывать отказы одного диска, но ни один из них не выживет больше.
Что касается вашего вопроса о бите четности, я думаю, что он зависит от драйверов RAID. Он определенно будет прочитан во время реконструкции, но при нормальном использовании в этом не будет особого смысла, так как пропускная способность будет потрачена на это.
afaik, я не профессионал по хранению 24/7, контроллер всегда проверяет, что записывается и читается с дисков. то есть с raid1 у вас немного хуже записи, чем на одном диске, но ваше чтение немного быстрее (необходимо записать файл на два диска, но может читать одну часть с первого диска, а другую часть с второго диска).
Возможно, вы можете отключить проверку данных для уровня рейда, но какой в этом смысл, все уровни рейда (кроме 0) предназначены для обеспечения избыточности данных, так что зачем мешать себе.
С raid 5 вам нужно как минимум 3 диска, и вы можете использовать диски N-1 для данных. С raid 1 вам всегда нужно четное количество дисков, и вы можете использовать N / 2 дисков для данных.
Таким образом, в более крупных рейдах уровень 5 дает вам больше места для хранения, а рейд 1 дает вам больше избыточности.
Если под более надежным вы имеете в виду то, что предлагает больше избыточности, чем рейд 1.
в зависимости от размера рейда, вы также должны учитывать время восстановления в случае ошибки (сколько дисков там, каков размер одного диска, какой тип рейда (программный, поддельный, аппаратный), какой уровень и т. д. )
Таким образом, невозможно сказать, что один рейд более надежен, чем другой (возможно, рейд 6 всегда надежнее рейда 5 за счет потери места для хранения)