Ну... это блог, что ещё ожидать от блога?

среда, 19 мая 2010 г.

Сбой работы жёсткого диска в ОС Linux - мой опыт

Иногда это случается

Увы, в моём ноутбуке прозошёл сбой в работе жёсткого диска и я уже было приготовился идти в ближайший магазин компьтерных запчастей подсчитывая в голове предстоящие раcходы на замену вышедшего из строя диска фирмы Seagate, 160 гигабитного Momentus ST9160827AS ..., но на даный момент всё оказалось не так уж плачевно - диск работает, и это всё я пишу со своего ноутбука под управлением всё той же ОС Linux того же самого програмного обеспечения при котором и произошёл предыдущий катастрофичесикий сбой ..., однако же это надо исправить и перейти на что-то другое - в надежде что в ближайшем будущем ничего подобного не повторится.

В начале

Ничто не предвещало страшного! Но страшное рано или поздно приходит к каждому не спрашивая на то позволения, не учитывая готовы вы к этому или нет. И вот однажды, после короткого зависания системы во время обычного выключения ноутбука, я затем примерно в течении 15-ти минут смотрел на чёрный экран на котором нехотя и еле-еле появлялись сообщения системных скриптов выключения системы которые обычно исполняются перед выключением питания. Я уже было хотел сдаться и нажать на блестящую кнопку ВКЛ/ВЫКЛ на поверхности корпуса ноута что бы закончить быстрее это тягостное ожидание перед внезапно ставшей неисправной системой, но как раз кстати ноутбук всё таки соизволил отключиться. Включил я его снова только на следующий день.

А затем

По экрану друг за другом пошли странные и непонятные сообщения от ядра о какой то ошибке в S(ATA) подсистеме которые мне были совершенно не понятны, да и врятли кто либо другой кроме тех кто в этом очень хорошо разбирается смог бы что-то там понять.

Вот оно и пришло - компьютерный бука добрался и до моего нотбука. И насколько я был на тот момент готов к этому - абсолютно не готов! Учитывая что ноутбук достался мне новый и с неполадками в его работе с помощью и в условиях програмной среды ОС Linux я не имел на тот момент. Т.е. счастье моё было полным и окончательным.

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

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

Из средств спасения мне были доступны програмы из пакета e2fsprogs т.к. на диске разделы содержали файловые системы семейства Ext3 и Ext4, но прежде чем приступать к каким либо действиям, предстояло понять что же вообще за неполадки встали на моём жизненом пути. И как раз это было не так очевидно, ведь как я уже говорил, что о работе жёстких дисков и файловых систем я практически ничего не знал. Хотя чего греха таить, опредёлённый опыт всё же был, но ровно настолько что бы знать и помнить что нужные мне програмы начинаются на e2+имя_програмы, так что с этого и пришлось начать.

Хотя, всё было несколько не так. Кроме установочного диска, пришлось задействовать второй старый компьютер с Dial-Up интернетом и вообще события тех дней пуже покрываются в моей памяти туманом забвения и ореолом быллинных приключений. Я уже успел забыть всё череду судорожных метаний и перезагрузок и размышлений о том как же выбраться из этой катастрофы с наименьшим ущербом, судорожных проверок разделов с помощью e2fsk при этом даже не подозревая что некторые сектора на поверхности диска безвозвратно повреждены головками чтения и что всё это в общем то бестолку и может скорее повредить чем помочь сохранить данные. Поиcтине ученье свет а неученье тьма, но этот опыт слишком часто приходит к человеку слишком поздно.

Долго ли коротко, но я всё таки вытащил с одного и двух неисправных разделов нужные мне файлы скопировав их на 1 гигабитную флашку. Попутно я пытался также загрузить "другой" установочный диск и с помощью Acronis Disk Director Suite посмотреть на имеющиеся разделы, но увидел сообщение о том что у меня вообще нет жёстких дисков. Печально но факт.

Что касается Linux то после того как программа dumpe2fs выдала ошибки только в отношении первых двух разделов, остальные оказались в порядке, и после того как я убедился в их исправности смонтировав их сначала только в режиме для чтения а затем и чтения/записи, было принято решение установить имевшийся Linux на один из исправных разделов и настроив там ADSL интернет (старый компьтер был очень неудобен в этом плане) и найти информацию и такого типа проблеммах и конечно поискать способы решения таких проблем. Это было рисковано, в том смысле что диск всё таки был сломан неизвестным образом и в неизвестной степени и в любой момент мог сломаться совсем - или же мои настроения были таковы в тот момент.

Дальше

Всё было довольно просто. Я смог найти инcтрукцию по разрешению проблем с сбойными блоками на диске стандартными средствами без необходимости обращаться к специализированым средствам. А эта страница весьма доходчиво обьяснила о том что реалокацией неисправных секторов диска занимается программное обеспечение встроеное в сам диск, но делает оно это только когда происходит неудачная запись в неисправный сектор. Когда такое происходит все последующие обращения перенаправляются на сектор который был выделен для этого из специального резерва на диске. Следуя этим принципам я попытался с помощью dd if=/dev/zero of=/dev/sda1 bs=512 conv=noerror,sync забить сектора раздела нулями и при записи в неисправный сектор должна была происходить автоматическая перелокация неисправных секторов, но не тут то было, на неисправных секторах dd вылетал с ошибкой ввода/вывода. Это было неожидано, т.к. здесь насколько я смог это усвоить ни о чём таком не упоминалось. Ну, горе не беда, dd при сбое в работе показывает на каком секторе прозошёл сбой записи и поэтому сложив номер проблемного сектора с размером сектора диска т.е. 512 можно применить парметр seek=NNN где NNN количество секторов которые нужно пропустить при записи. Так вот, пришлось запускать dd на запись несколько раз, но при этом возникала ещё одна проблемма, диск нагревался до 56-57 градусов цельсия и при этом нормализованое значение S.M.A.R.T по выводимой информации smartctl -a /dev/sda было меньше порогового значения и приближалось к худшему ... и в такой ситуации не очень понятно что выбрать - пытаться исправить диск и при этом испортить его окончательно перегревом или времено выключить ноутбук и потом попробовать снова когда всё остынет. Я выбирал средний вариант потому что сколько бы я не остужал ноутбук, когда процедура записи раздела в 50 гигабит подходила к середине, диск уже был обычно перегрет изрядно и SMART наивно информировал меня что в данный момент диск перегрет и происходит его отказ. Между всего этого я вспомнил про свои предыдущие попытки применить програму проверки исправности блоков диска под названием badblocks из того же пакета програм e2fsprogs, но раньше я использовал эту програму неграмотно, теперь же я прочитал внимательно man-страницу этой программы и решил использоавть её там где dd не мог справиться - хотя это была надежда а не чёткое знание что это сработает, хотя и выбора то другого не было. И всё получилось, команда badblocks -b 512 -s -v -w /dev/sda5 сделала то что и должна была - четыре раза попыталась произвести запись в сектора одних и тех же последовательностей данных а затем считать их и сравнив записаное со считаным установить исправность блоков. Правда, нужно отметить что при применение этой команды к 50Гб разделу, уже при первом проходе диск начинал разогреваться как уголёк, что и привело в итоге к тому что приходилось это прекращать и ограничиться одним циклом записи/чтения для проверки.

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


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

Комментариев нет:

Отправить комментарий