Вопрос по RAID-5

elena-kotenok75

встретил в интернетах (http://forum.hdtracker.ru/showthread.php?t=8232) такие рассуждения:
В спецификациях жестких дисков среди прочих малопонятных и пугающих параметров указывается “вероятность невосстановимой ошибки чтения” (unrecoverable read error - URE). Для современных дисков эта величина составляет порядка 10^-15, а это означает, что из каждого квадриллиона битов (125 терабайт) один, как ни старайся, прочесть не удасться. Замечу, что к указанной вероятности следует относиться как к скорости света в вакууме: уменьшить ее правильным температурным режимом, стабильным напряжением или вечерними молитвами не получится.
Для простоты дальнейших расчетов я нагло округлю 125 до 100, на порядок величин это не повлияет. Тогда при последовательном чтении стандартного двухтерабайтника (например, для создании его резервной копии) URE возникнет с вероятностью 2%. Это не так страшно, потому что будет потерян только один файл - тот, в котором встретился бит-неудачник. Не верите? Cкопируйте 50 двухтерабайтных дисков и, если вам “повезет”, убедитесь сами.
Теперь поместим 6 дисков в RAID-5. В случае поломки и замены одного из них, контроллеру для восстановления массива придется считать всю иноформацию с дисков, которым повезло выжить. Нетрудно видеть, что вероятность сбоя при чтении уцелевших 10 ТБ составит 10%. Однако в данном случае сбой будет означать не потерю файла, а потерю массива.
Здесь я немного отвлекусь, ибо как всякий порядочный дилетант обожаю порассуждать на темы, в которых не слишком разбираюсь. Как известно, в мирное время бит может принимать лишь два значения. В случае URE находчивый контроллер с достаточно хитрой прошивкой мог бы попробовать сначала нолик, а в случае неудачи сборки массива - единицу, или наоборот. Другое решение - копирование диска с битым битом на другой носитель какими-нибудь спецсредствами, с явным заданием значения этого самого бита. Думаю, у специально обученных людей из контор по восстановленю данных нечто подобное имеется.
Однако вернемся к нашему рейду. Городить огород, чтобы при сбое одного диска всё равно с вероятностью 10% потерять 10 терабайт попросту нелогично. В качестве выхода из этой неприятной ситуации алчные производители железа предлагают RAID-6. Вероятность возникновения двух невосстанавливаемых ошибок чтения при сбое в нашем случае составит 10%*8%=0,8% (вероятность выхода диска из строя по причинам отличным от URE не рассматривается по причине другого порядка малости). Меньше одного случая на сотню, это гораздо лучше! Однако пожертвовать придется третью полезного объема. Есть ли в этом смысл?
оцените, плз, верны ли такие рассуждения?
т.е. - "6 двухтерабайтников в пятом рейде, после выхода из строя одного диска - в одном из 10 случаев массив не восстановится штатным образом"

AlexV769

По-моему брехня.
В качестве проверки на вшивость поставил свой 4х750 массив, на котором лежит около тера торрентов на простую проверку - проверка контрольных сумм торрентов.
Где-то к вечеру расскажу о результатах.

Serena

Для твоего массива вероятность куда ниже, какой смысл в таком эксперименте? :)

nas1234

Для твоего массива вероятность куда ниже, какой смысл в таком эксперименте? :)
если он запустит такую проверку 10 раз, то вроде бы порядок будет нужный.

Serena

Я так понял, что описана проблема с железом, то есть она либо есть, либо нет...

AlexV769

Массив я уже раз десять пересобирал (по ресету, вот ещё недавно диск поменял) - Данные на ФС почти не менялись: 800Gb -> 1Tb, так что к требуемой вероятности в 10% я по идее должен был приблизиться.
А вообще надо подробнее почитать об этом параметре. В частности, как на него реагируют (должны реагировать) контроллеры дисков.

AlexV769

Я так и думал. В статье не учитывается, что в любом диске на посекторном уровне работает ECC, которая в 100% случаев может восстановить неправильно прочтенный бит, а в некоторых - и того больше. Теоретически, жопа может настать, когда в пределах одного сектора не прочитаются 2 бита так, что ECC не сможет их восстановить.
Это случится с вероятностью около 10^-30, или, в переводе на терабайты, 125000000000000000000Tb.
Дальше не вникал, но скорее всего после возникновения этой ситуации сектор считается плохим, о чем начинает ругаться SMART.

janlynn

Теоретически, жопа может настать, когда в пределах одного сектора не прочитаются 2 бита так, что ECC не сможет их восстановить.
Если ошибка будет retryable, то тада ваще пох

kruzer25

Как тут уже сказали, неправильно прочитанный бит выявится CRC, после чего ты попробуешь прочитать его ещё раз. Ну или должно очень сильно не повезти (гораздо сильнее, чем с одним битом на сто терабайт чтобы и CRC не совпал так же.
Однако в данном случае сбой будет означать не потерю файла, а потерю массива.
Это почему ещё?

elena-kotenok75

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

elena-kotenok75

Как тут уже сказали, неправильно прочитанный бит выявится CRC, после чего ты попробуешь прочитать его ещё раз.
насколько я понимаю, это - стандартный и постоянно используемый механизм, в результате использования которого можно наблюдать "медленные" блоки?

AlexV769

В спецификации сказано, что с вероятностью 10^-15 для чтения блока придется использовать корректировку с помощью ECC. Блок от этого не становится ни на йоту медленнее.

elena-kotenok75

о, спасибо, так понятно.
но вот с этим - "не становится ни на йоту медленнее" - не согласен.

AlexV769

ECC вычисляется аппаратно, никаких мозгов для этого не используется.
вполне возможно, что это блок, которому на вход подают пакет, на выходе - пакет и биты "no error" "ECC recovered" "BAD" ну или что-то в этом духе.
Сектор в таком разрезе медленнее не становится.

kruzer25

вполне возможно, что это блок, которому на вход подают пакет, на выходе - пакет и биты "no error" "ECC recovered" "BAD" ну или что-то в этом духе.
И, если говорят "BAD" - придётся попробовать прочитать ещё раз.
Хотя медленнее сектор окажется только один раз (когда произошла ошибка); это не означает, что в следующие миллион раз, когда кто-то будет считывать этот блок, произойдёт ошибка.
Оставить комментарий
Имя или ник:
Комментарий: