Про ошибки на жестких дисках

Вот берем Data Sheet на терабайтный диск от Seagate. Читаем там:
  • Capacity: 1Tb. Или, другими словами, 8*1012 бит.
  • Nonrecoverable Read Errors per bits Read: 1 per 10E14.
Кто бы мне пояснил, что все это значит:
  • На каждые 12.5 чтений я вправе ожидать ошибку (в-среднем, естественно) ?
  • Или из каждых 12.5 дисков - у одного (в-среднем) будет ошибка, а остальные 11.5 - нормальные?
  • Или цифирки BER приводят до error recovery, а реально там еще несколько (много) порядков добавляется на ECC ?
  • Или вообще, это такая абстракция ?
Про AFR/MTBF у меня тоже нет полного понимания, но давайте сначала с BER разберемся.

Comments

Я тут недавно купил 6 саташных сигейтов по 750Гб. На двоих смарт уже нашёл ошибки. На первом они пропали как я записал туда большой файл и он затёр сектор с ошибкой, до второго руки ещё не доходили. Или также затру ошибки или поменяю диск по гарантии.

А какие сомнения в прямом переводе с буржуйского?

Мол, читаешь 10-в-14й битов и получаешь одну невосстановимую ошибку. А до того - еще неизвестную кучку восстановимых по ECC.

Т.е. если ты имеешь обыкновение читать свой терабайт от начала до конца каждый раз, то на 13-м прочтении получишь один глюк.

Имхо, это все - в применении к одному экземпляру диска,
т.е. если у тебя страйп из 13 дисков - то ошибка в чтения все равно долна возникать на 13-м прочтении,
а не на первом.

Почему "на 13-м прочтении" ? "В среднем на 13 прочтений будет ошибка".
Это же статистическая величина, не повезет - так первый же бит не прочитается.

Таким образом, если у меня из RAID5 на 14-ти терабайтниках выпал диск четности, то перебилдить массив не получится "в среднем" ? Так что ли ?

На самом деле, в ЖЖ выяснили, хе-хе, что BER порядка 10^-11, но посчитано оно так, что если сектор дал ошибку - это ошибка сразу в четырех килобитах.
Обсуждение тут: http://alextutubalin.livejournal.com/45219.html

Да, вдогонку.

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

Может быть, имеются в виду циклы чтения с одного места?

Ну пусть из одного места (бита). Но битов у меня те самые почти 10^13.

Ну да Получается постоянно должны вылазить ошибки.

Одна на 12 терабайт.

12 терабайт - это, с одной стороны, довольно много. Но в современных условиях - не так, чтобы очень. Получается, что кто-то должен добавлять избыточность.

<i>3. Nonrecoverable errors

...

For example, error rates of one undetected error of 1 in 1015 bits are common. A single drive running at 25 MB/s would experience such an error about once a year.</i>

http://storageconference.org/2003/authorkit/sample.pdf

Э, я другого не понимаю. Что означает эта ошибка ? Что мне потом порекаверят это на уровне ECC или это уже после ECC ? Или сам диск сделает повторное чтение и все будет отлично ? Или что ?

Одна ошибка на 12 терабайт - это, на самом деле, много, если нет дополнительных средств проверки. Скажем, для сжатого файла может быть вообще труба.

Как щаз помню сообщение
"Unknown preprocessor directive #izclude" при компиляции апача на машине с битой памятью. Ага, ошибка в о одном бите.

Битая память - это нештатный режим.

А мне интересно, как оно себя ведет в штатном. Банальный пример чтения больших объемов - это ребилд raid-массива. Скажем, было 8 терабайтных дисков, один отвалился, читаем 7ТБ, вероятность получить ошибку и закрепить ее четностью уже в RAID-е получается сильно ненулевой ?

А 4-8-16 терабайтников в одном сервере - на сегодня никакая не новость.

да, в каком месте этот показатель меряется совершенно непонятно ;(

я думаю, что о чтениях bit говорят не зря, т.е. скорее всего это до ECC, и один бит таки прорекаверят. Кроме того, есть же автоматический ремап сбойных секторов.

вечером попробую еще попокопаться в инете, интересно.

Я вот еще обратил внимание в data sheet на первой странице "Best-Fit Application". Засунул нос в <a href="http://www.seagate.com/docs/pdf/datasheet/disc/ds_barracuda_es_2.pdf">рекомендованую для серверов баракуду</a>, там аналогичный параметр звучит немного иначе.
Nonrecoverable Read Errors per Bits Read: 1 <u>sector</u> per 10E15
Может просто опечатка, может не просто, а может и не опечатка.

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

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

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

Т.е. раз в несколько часов работы - вполне можно ожидать такой ошибки ?

Мда, интересное кино. Я как-то от такого отвык.

А данные у нас будут настоящие, да еще и пакованые.

возвращаемся вопросу "какой такой"?
из общих соображений, неудивительно что раз в час что-то счелкнет и случится ретрай.

И так же понятно, что если раз в час возникает _действительно_ неисправимая ошибка, то туши свет. Поскольку окошки вокруг нас светятся, следовательно ошибка, в конечном счете, исправима

Как-то очень похоже на "такая абстракция"

Вот я и пытаюсь понять, эти 10^-14 - они хотя-бы детектируются ? Или это в чистом виде BER уже после всех способов коррекции.

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

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

Я, собственно, тоже хотел бы, чтобы мне объяснили физический смысл обсуждаемой цифры

Nonrecoverable это уже после error recovery на уровне диска.

Просто сейчас диски проектируют сразу под RAID - почитали, попробовали восстановить, все равно ошибка? Фиг с ней, сектор пометили когда будет в него запись - сделаем ремап.

Ну и цифры, конечно, в среднем для всего поголовья дисков за все время службы. Хотя вот сейчас мы сделали RAID из 12 750Gb, один диск пришлось поменять - вот у него как раз BER не позволял с ним собрать

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

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

За все RAID-ы не скажу но обычно они читают несколько раз сектор - если все еще ошибка - восстанавливают из redundancy и пытаются перезаписать его опять. Потом снова читают - если читается хорошо (потому что сремапило) то и нормально, иначе диск вон из RAID

Потом дисковые ошибки обычно не битовые, а сразу кусок не читается. Битовые - это скорее контроллер. Вот у нас тут у контроллера клоки уезжали - как раз биты менялись.

Другими словами, диск скажет, что была ошибка чтения сектора ?

И, по всей видимости, не скажет в каком бите ? Считается ли при этом (при расчете BER), что ошибка была сразу в 4096 битах ? Другими словами, у нас ошибка происходит каждые 10^14 бит или 10^14 секторов ?

Вот что они сами пишут про sector failure rate

Current HDD products use approximately
9% of ECC overhead to correct a raw bit error rate from 10<sup>-5 </sup>
to 10<sup>-11</sup>. Future HDD product specifications assume a linear
density at which the raw bit error rate is 10<sup>-3</sup>. Such a raw
bit error rate cannot be corrected at the current 512 byte sector format,
independently of the number of ECC bytes. Anticipated defect sizes of
approximately 100 bytes cannot be corrected at this sector format.</font></p>

Using the same amount of ECC overhead,
9%, at 4K sector format, a raw bit error rate of 10<sup>-2.4</sup> can
be corrected to the required 10<sup>-11</sup>

Понял, да? 10<sup>-11</sup> на самом деле, а три порядка - это размер сектора

Последнее что осталось понять - это возможность восстановления.

Т.е. что происходит при повторном чтении и с какой частотой.....

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

But then again, мы продаем backup ;-)

Ну хорошо, пусть повторная попытка одна. Что там с вероятностями в реальной жизни ?

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

Oh my God!

Я спрашиваю про физический смысл дисковых характеристик. Могу, впрочем, спросить и про физический смысл смартовой статистики.

Нету тут никакого "Физического смысла". Есть некоторый маркетинговый термин. Какое он отношение имеет к реальности, думаю, никто не знает.
SMART тебе расскажет, какое количество ошибок какого типа за время своей жизни оно увидело. Что сумело скорректировать, а что продиагностировало, как ошибку. Если поверхность или что-то ещё попортилось таким феерическим образом, что попортились и биты данных, и биты коррекции, и чексуммы, и все совпали, то диск тебе прочитает "неправильные данные", совершенно искрене считая, что всё нормально. Какова вероятность такого события - не знаю. Думаю, что невысокая. Значительно вероятнее нарваться именно на некорректируемую ошибку, когда диск тебе скажет: "не шмог".
Я ни форматов записи на носитель, ни алгоритмов проверки/коррекции не знаю. И, думаю, что те, кто эту цифру в рекламу вставил, тоже не знают. И гадать, что эта цифра значит - совершенно бесполезно.

Пардон, что значит "бесполезно" ?

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

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

Не *каждый* ребилд, потому что BER не распределен равномерно по всем дискам. Вероятность не собрать RAID случайно выбирая диски из ящика - преизрядная, а вот того, что уже работающий не соберется опять - гораздо меньше

В принципе, OEM-ам Seagate дает более подробные характеристики, можешь у них попросить

<i>Могу, впрочем, спросить и про физический смысл смартовой статистики</i>

Я сливаю!

Вот именно!

я думаю при начальном форматировании с проверкой диска 1 бит из 10**14 придется выкинуть из дальнейшей работы.
иначе бы при чтении с sustained rate пришлось вычеркивать по сектору каждые три часа. через 750.000 часов работы 132 МБ будут непригодны для работы.