DataLife Engine > Полезное > Отчего умирают винчестеры?

Отчего умирают винчестеры?


28 января 2008. Разместил: Eugene

Отчего умирают винчестеры?

Небольшой обзор причин выхода из строя жёстких дисков...

Он есть у каждого из нас.

Он - наше всё в прямом смысле слова, маленький кусочек высоких технологий и точной механики, на котором хранятся наши бесценные данные: фотографии, тексты, фильмы, музыка, конфиги и собственно операционная система.

Это - Винчестер. Но рано или поздно, он выходит из строя - почему?

Предыстория вопроса

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

Однако при копировании была выдана ошибка:

I/O Error, и в логах dmesg засветилось:

hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=35807470, high=2, low=2253038, sector=35807428
ide: failed opcode was: unknown
end_request: I/O error, dev hda, sector 35807428


Приехали - по диску пошли битые сектора...

Дело плохо, и я решил посмотреть на данные SMART, чего, признаться, уже давно не делал.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 192 192 033 Pre-fail Always - 2
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1904
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6651
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 965
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299688
194 Temperature_Celsius 0x0002 144 144 000 Old_age Always - 38 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 5
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 1
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0


А вот и герой торжества: сбойный сектор отловлен, и он уже не одинок - их там пятеро. Обидно перекачивать такой большой файл (хотя при подсчёте MD5SUM значение выдавалось правильное), но ещё обиднее терять данные - тут же была сделана резервная копия самых важных данных.
Через день я выполнил на нём полное тестирование по SMART, и оно прошло гладко.
Теперь сбойный сектор исчез (для меня, но не для SMART), и их теперь шестеро.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 099 099 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 204 204 033 Pre-fail Always - 2
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1906
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6659
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 966
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299691
194 Temperature_Celsius 0x0002 171 171 000 Old_age Always - 32 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 6
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0


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

Статьи, на которые я буду ссылаться, научные, так что не ищите там выкриков "самсунг\сигейт отстой\рулёз" и конкретных рекомендаций "покупайте у Васи - не прогадаете".

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

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

Причины, статистика, анализ
Итак, статья "Failure Trends in a Large Disk Drive Population" проливает немного света на причины выхода из строя винчестеров на серверах Гугл - авторы собирали данные в течении полутора лет (с декабря 2005 по август 2006) с почти 100.000 винчестеров, диски были SATA и ATA, 5400 и 7200 RPM, ёмкостью от 80 до 400Гб разных производителей.

Главное, на что упирают гугловцы, что SMART - вовсе не панацея от всех бед и что ориентирование только на данные SMART в большинстве случаев (особенно индивидуальных) ничего не даёт. Большая часть их дисков померли в то время, как по SMART они были совершенно здоровы и без каких либо сообщений об ошибках.

Сообщается так же, что вероятность гибели винчестера слабо связана с его степенью загруженности. И наоборот, если SMART сыплет ошибками типа scan errors, reallocation counts, offline reallocation counts, and probational counts - дело дрянь и пора делать бекапы :-)

Возраст
Вероятность отказа, как и следовало ожидать, растёт с возрастом диска, то есть с тем временем, которое он отработал. Диски, работающие до 1 года, чаще всего дохнут в первые три месяца. Резкий скачок вероятности выхода из строя - 2 года.

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

Нагрузки
Дальше они приводят данные по зависимости смертности дисков от степени их загруженности (т. е. от дисковых операций).



График из работы "Failure Trends in a Large Disk Drive Population", Eduardo Pinheiro, Wolf-Dietrich Weber and Luiz Andre Barroso, Google Inc., Appears in the Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST’07), February 2007

Оказывается, что только очень новые (до 3 месяцев) и очень старые (старше 3 лет) чаще всего дохнут от высоких нагрузок, в остальных возрастных категориях вероятность выхода из строя от нагрузок зависит слабо.

Температура
Считается, что температура - важнейший фактор для жёсткого диска и что лучше диски охлаждать. Здесь главное не дойти до маразма: температура винчестера ниже 15 градусов по Цельсию удваивает среднюю частоту выхода их из строя.



График из работы "Failure Trends in a Large Disk Drive Population", Eduardo Pinheiro, Wolf-Dietrich Weber and Luiz Andre Barroso, Google Inc., Appears in the Proceedings of the 5th USENIX Conference on File and Storage Technologies (FAST’07), February 2007

Гугловцы выяснили, что с повышением температуры винчестера риск отказа растёт медленно - хуже того, есть тенденция к тому, что дискам больше страшны низкие температуры. Интересно, что минимальный риск выхода из строя приходится на интервал температур от 36 до 45 градусов. Риск выхода из строя при температурах меньше 25 градусов почти вдвое больше, чем при 45, и возрастает быстро с уменьшением температуры.

Диски возраста до 2 лет чаще дохнут от холода (при температуре от 15 до 30 градусов), а старики (от 3 лет) дохнут от перегрева (более 45 градусов).

Анализ данных SMART
Самые важные ошибки, на которые следует обращать внимание: Scan Error, Reallocation Count Offline reallocation Probational Count

Ошибка сканирования (Scan Error).
Электроника диска время от времени сканирует поверхность диска незаметно для пользователя и передаёт данные SMART - если будут найдены битые сектора, они, как правило, вскоре будут заменены на свободные. Однако гугловцы говорят: после первой же ошибки сканирования поверхности, вероятность выхода из строя винчестера в следующие 60 дней возрастает почти в 40 раз!

Количество перемещений (Reallocation Count).
Если при чтении информации возникают ошибки ввода-вывода и операционная система о них сообщает, такие ошибки перехватываются SMART и сбойный сектор заменяется нормальным из набора доступных. Количество перемещений отражает износ поверхности, однако это ещё не повод бить тревогу: около 90% гугловских винчестеров имеют отличное от нуля количество перемещений, хотя при этом годовая вероятность сбоя (Annualized Fault Rate, AFR) повышается в 3-6 раз.
После первого же перемещения сбойного участка, вероятность выхода из строя в следующие 60 дней увеличивается в 14 раз.

Остальные ошибки (в том числе Seek Error) не дают заметного вклада в общую статистическую картину дисковой смертности. Примечательно, что, например, выход диска из строя слабо соотносится с количеством циклов "старт-стоп". Однако если диску более 3 лет, следует его использовать непрерывно, так как частых включениях и выключениях вероятность выхода из строя повышается на 2%.

В общем, гугловцы призывают не уповать на SMART и его в общем не высокую предсказательную силу (более 56% всех умерших дисков не имели отметок об ошибках SMART), а больше налегать на бекапы и резервирование, чем почти никто не занимается, пока жареный петух не клюнет в известное место.

На десерт - самое вкусное: распределение вероятностей ошибок по данным SMART. На кладбище гугловых винчестеров винчестеры встречаются со следующим распределением сбоев:

Ошибки, которые SMART не отловила - 60%
Reallocation Count - около 40%
Seek Error - 30%
Offline Reallocation - 28%
Probe Count - 20%
Scan Error - 15%
CRC Error - менее 5%.

Ясно, что винчестеры дохнут не от одной ошибки, а чаще всего от нескольких, лидирует в которых сбойные сектора и ошибки позиционирования.

Следует отметить, что в винчестерах отдельных производителей Raw_Read_Error_Rate и Seek_Error_Rate параметры достигают максимума и обнуляютя несколько раз в день.
Это связанно с политикой некоторых производителей в отношении SMART: в эти параметры пишутся все ошибки, а остальные производители только те, что не смог отловить контроллер.

Время наработки на отказ
Другая статья, "Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you?", подробно разбирает, что такое MTTF, или mean time to failure.
Статистика так же очень впечатляющая (около 100.000 устройств).

Многие производители оценивают отказоустойчивость двумя связанными друг с другом оценками: ежегодная частота ошибок (Annualized failure rate, AFR) и среднее время отказа (mean time to failure). AFR оценивается на основе предсказаний по результатам ускоренных тестов, а MTTF оценивается как время работы за год делённой на AFR.
Ведущие производители дисков заявляют, что MTTF их устройств - от 1 млн. часов до 1.5 млн. часов в соответствии с AFR равной 0.58% и 0.88% соответственно.

Для любознательных: делается это потому, что проверять диски непосредственно, включив их и оставив, скажем, на 4-5 лет, просто невозможно, потому как производителю данные о надёжности нужны сейчас, а не через 5 лет, когда эти диски безнадёжно устареют. Поэтому разработаны и проводятся так называемые ускоренные тесты, при которых устройства загоняют в заведомо невыносимые условия работы (страшная жара \ лютый мороз и катастрофические дисковые нагрузки) и смотрят, сколько они в таком режиме протянут. Ясное дело, что дохнут они там очень быстро - и эти данные потом экстраполируются (т.е. пересчитываются с предсказанием) на нормальные условия работы. Конечно, точность таких предсказаний не слишком высока, но это лучше, чем ничего.
Чаще всего исходные данные таких исследований строго охраняются компанией - производителем и не просачиваются за пределы лабораторий. На выходе цифры, полученные такими методами, несколько приукрашиваются отделом маркетинга, и мелкими буквами вписываются на сайте для тех, кто интересуется.
Искать правду в этой мутной воде - дело гиблое, и остаётся ориентироваться на научные исследования разной степени достоверности, отчёты о которых время от времени публикуются на научных конференциях.

В статье говорится о том, что их данные о частоте замены винчестеров в виду сбоев, мягко говоря, расходятся с тем, что заявляет производитель. Так, в трёх дата-центрах, в которых снимались данные для этой статьи в течение 5 лет, в общем случае замены жёстких дисков в связи со сбоями были несколько чаще, чем замена планок оперативной памяти, в 2.5 раза чаще, чем замена процессоров, в 2 раза чаще, чем замена материнских плат. Факт остаётся фактом: сбои винчестеров - одни из самых распространённых причин остановки узлов дата-центров для замены оборудования.

Дальше в рамках исследования было вычислено значение ежегодной частоты ошибок (AFR) для всех датацентров, в которых это исследование проводилось, и вот график:



График взят из работы: Bianca Schroeder, Garth A. Gibson "Disk failures in the real world: What does an MTTF of 1,000,000 hours mean to you?", FAST ’07: 5th USENIX Conference on File and USENIX Association Storage Technologies.

Он стоит тысячи слов: горизонтальная сплошная прямая соответствует заявляемым 1.5 млн. часам безотказной работы, горизонтальная пунктирная - 1 млн. часов, а точечная - реальному усреднённому времени работы. Согласно этому, AFR составляет 3%, а соответствующее MTTF - около 300 тыс. часов.

Но и эта цифра несколько завышена: не секрет, что в дата-центрах сделано всё, чтобы оборудование работало дольше. Это и системы кондиционирования, и распределение вычислительной нагрузки, и защита от перегрева \ переохлаждения отдельных компонентов и проч. Едва ли в пользовательских машинах имеется нечто подобное, особенно это касается ноутбуков.

Разброс таких данных велик: AFR составляет от 0.5% до 13.6%, и это в дата-центрах. Последняя цифра соответствует примерно 7 годам работы винчестера, но понятно, что в бытовых устройствах эта цифра намного скромнее: постоянно меняющаяся температура устройства, небольшое время непрерывной работы, скачки напряжения, большое количество циклов "старт-стоп" и прочее сильно сокращают время жизни жёстких дисков.

Ещё один замечательный график, показывающий жизненный цикл жёстких дисков в зависимости от времени работы:



График из работы J. Yang and F.-B. Sun., "A comprehensive review of hard-disk drive reliability". In Proc. of the Annual Reliability and Maintainability Symposium, 1999.

Как остроумно назвали авторы работы такую форму графика, "bathtub curve", т.е. кривая в форме ванной :-)

Интересные выводы в работе такие:
1. MTTF, которое заявляет производители, более чем в 3 раза превосходит тот, который оценен в реальных условиях дата-центров.
2. Для старых винчестеров, отработавших 5-8 лет, переоценка MTTF производителями составляет более 30 раз.
3. Даже для сравнительно новых жёстких дисков (менее 3 лет работы) MTTF производителем завышена по крайней мере в 6 раз.
4. Частота замен для дорогостоящих SCSI-дисков и обычных SATA почти одинакова.

И далее по работе:
Для дисков, чьё время непрерывной работы менее 5 лет, частота замены в связи со сбоями в 2-10 раз больше той, которая следует из времени MTTF, а для старше 8 лет эта частота замен в 30 раз больше.

Как просмотреть информацию SMART

Для этого уже должны быть установлен пакет smartmontools, который содержит в том числе утлиту smartctl.
После этого:
* для IDE-дисков пишем smartctl --all /dev/hda
* для SCSI-дисков smartctl --all /dev/sda
* для SATA-дисков smartctl --all -d ata /dev/sda



Будет выведена длинная таблица, в которой будет много интересного.
smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model: HTS421260H9AT00
Serial Number: HKA210AJGKHV1B
Firmware Version: HA2OA70G
User Capacity: 60.011.642.880 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 7
ATA Standard is: ATA/ATAPI-7 T13 1532D revision 1
Local Time is: Fri Oct 19 17:12:58 2007 MSD
SMART support is: Available - device has SMART capability.
SMART support is: Enabled


Здесь, собственно, информация о винчестере - размер, серийный номер.

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 645) seconds.
Offline data collection
capabilities: (0x5b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 47) minutes.


Здесь данные о том, какие тесты поддерживаются SMART в устройстве и сколько они по времени будут занимать.

А дальше идёт самое интересное.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 062 Pre-fail Always - 0
2 Throughput_Performance 0x0005 100 100 040 Pre-fail Offline - 0
3 Spin_Up_Time 0x0007 202 202 033 Pre-fail Always - 1
4 Start_Stop_Count 0x0012 099 099 000 Old_age Always - 1930
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0

8 Seek_Time_Performance 0x0005 100 100 040 Pre-fail Offline - 0
9 Power_On_Hours 0x0012 085 085 000 Old_age Always - 6745
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 978
191 G-Sense_Error_Rate 0x000a 100 100 000 Old_age Always - 0
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 2
193 Load_Cycle_Count 0x0012 071 071 000 Old_age Always - 299731
194 Temperature_Celsius 0x0002 196 196 000 Old_age Always - 28 (Lifetime Min/Max 11/44)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 6
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0


Выделенные - для повышенного внимания, жирным - для внимания пристального.
В общем, если данные в них ненулевые, то есть имеются определённые ошибки, это ещё не повод для вселенской катастрофы, просто сигнал к тому, что неплохо бы выяснить адресок ближайшего сервис-центра по обслуживанию ноутбука вашей фирмы и отложить немного денег на замену винчестера.
Хорошо бы ещё сделать полный дамп данных, пока это ещё возможно (чтобы потом залить на новый винчестер сразу всё). Или по крайней мере сделать копию содержимого /etc и /home

Error 4 occurred at disk power-on lifetime: 6652 hours (277 days + 4 hours)
When the command that caused the error occurred, the device was active or idle.

After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
40 51 d6 ee 60 22 e2 Error: UNC 214 sectors at LBA = 0x022260ee = 35807470

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
25 00 00 c4 60 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5f 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5e 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5d 22 e0 00 00:29:58.200 READ DMA EXT
25 00 00 c4 5c 22 e0 00 00:29:58.100 READ DMA EXT


Далее пойдёт описание ошибок, если таковые случались.
У меня это была ошибка ввода-вывода.


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


SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offline Completed without error 00% 6651 -
# 2 Short offline Completed without error 00% 6651 -
# 3 Short offline Completed without error 00% 3097 -
# 4 Short offline Completed without error 00% 806 -

Для дальнейшего изучения параметров SMART можно обратиться к ЭТОЙ ссылке.
ТУТ говорят о SMART в целом.

Оригинал - Записки дебианщика

Вернуться назад