Я собираюсь заменить старый аппаратный массив RAID5 на программный массив Linux1 RAID1. Я разговаривал с другом, и он утверждал, что RAID5 был более надежным, чем RAID1.
Он утверждал, что с RAID5 при чтении считывались данные о четности, чтобы убедиться, что все диски возвращали правильные данные. Он также заявил, что ошибки RAID1, возникающие на диске, останутся незамеченными, поскольку такая проверка не выполняется с RAID1.
Я вижу, как это может быть правдой, но также вижу, что все зависит от того, как реализованы рассматриваемые системы RAID. Конечно, системе RAID5 не нужно читать и проверять данные о четности при чтении, а система RAID1 может так же легко считывать данные со всех дисков при чтении, чтобы проверить, что все они содержат одни и те же данные и, следовательно, достичь одинакового уровня надежности ( с соответствующей потерей производительности).
Таким образом, вопрос в том, что на самом деле делают системы RAID5 / RAID1 в реальном мире? Системы RAID5 проверяют данные о четности при чтении? Существуют ли системы RAID1, которые читают со всех дисков и сравнивают данные на чтение?
источник
В 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 , или о контрольной сумме данных, записанных на диск?
Если они о четности, то RAID1 не имеет бита четности - у вас есть две копии одинаковых данных. На диске должна быть выполнена контрольная сумма, чтобы убедиться, что записанное на диск соответствует найденному
RAID5 имеет бит четности. Это означает, что вы можете потерять диск в своем наборе RAID и продолжить, как будто ничего не произошло. Тем не менее, должна быть произведена контрольная сумма данных, записанных на диск, чтобы убедиться, что они соответствуют тому, что получилось по проводам.
В этом случае контрольные суммы полностью независимы от RAID, который может или не может быть выполнен с кучей дисков
Отредактировано, чтобы добавить: Вы упомянули переход от аппаратного RAID к программному RAID. Предпочтение всегда отдается аппаратному RAID, а не программному RAID. Если вы можете приобрести оборудование, необходимое для обеспечения уровня RAID, который вы хотите реализовать, я бы посоветовал вам пойти на это. Это позволит выполнять все вычисления четности картой RAID, а не хостом. Поэтому освобождаю ресурс на хосте. Нет никаких сомнений в других преимуществах, но они избегают меня в данный момент
источник
Это будет зависеть от типа реализации рейда (hw / sw), дисков, контроллера рейда, если таковой имеется, и его особенностей.
это действительно имеет некоторый небольшой смысл, но не совсем :), что происходит - если записываются неправильные данные, на зеркале они будут отправляться на оба диска, и на уровне четности raid5 они будут генерироваться и распространяться по всем дискам. проверка чтения / записи данных выполняется микропрограммой диска и контроллера и не имеет отношения к уровням рейдов.
Как я уже сказал, проверки не являются частью алгоритма рейда, хотя некоторые контроллеры могут иметь что-то дополнительно реализованное.
Надежность массива зависит от качества накопителей (2,5-дюймовые накопители, как правило, живут дольше, чем 3,5 дюйма из-за снижения скорости RV; по моему опыту, НИКОГДА не покупайте жесткие диски SCSI / SAS maxtor - у них ужасные проблемы с прошивкой), окружающая среда (контроль температуры и влажности), сам контроллер (есть ли у него BBU? Прошивка обновлена? Реальный ли это рейд или фиктивный?), количество блоков питания на сервере, качество ИБП и т. д.
источник
Я не знаю этого, но мне кажется маловероятным, что это так. Помните, что для вычисления четности ему нужно будет прочитать блок со всех дисков в вашем наборе RAID, а затем выполнить математические вычисления, чтобы определить правильность, тогда как если этого не произойдет, он просто выполнит считывание одного диска.
Кроме того, если ваше чтение выполняется менее чем за один блок, чтение с проверкой четности должно было бы расширить его до полного блока, тогда как обычное чтение не будет. (Разумеется, если предположить, что блок RAID больше блоков дисков. Я думаю, что чтение с диска должно иметь полные блоки. Если нет, моя точка зрения еще более верна.)
Так что, с моей точки зрения, да, он мог бы сделать это, но если бы он это сделал, это было бы неэффективно, и я сомневаюсь, что что-либо будет реализовано таким образом.
Опять же, у меня нет личных знаний о реальных реализациях.
источник
Это не имеет смысла. Что вы делаете, когда обнаруживаете несоответствие паритета? (Как вы узнаете, какой блок неправильный?)
Для случайного чтения проверка паритета будет дорогой. Обычно вы можете обслуживать случайное чтение, просто просматривая один диск, но если вы хотите проверить четность, вам нужно будет прочитать все диски при каждом чтении. (Это все еще может иметь смысл, если бы вы могли что-нибудь с этим сделать!)
Обратите внимание, что 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 за счет потери места на диске)
источник