The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Как избавиться от нечитаемых секторов на диске
В логе smartd появились подобные свидетельства наличия нечитаемых секторов на диске:

   smartd[798]: Device: /dev/ad5, 15 Currently unreadable (pending) sectors
   smartd[798]: Device: /dev/ad5, 15 Offline uncorrectable sectors

SMART тестирование подтвердило подозрения:

   Запускаем фоновый тест диска, не мешающий основной работе:
      smartctl -t long /dev/ad5
   Ждем завершения периодически просматривая статус:
      smartctl -l selftest /dev/ad5
   В итоге смотрим содержимое лога, в самом конце вывода:
      smartctl -a /dev/ad5
   Имеем:
   # 1  Extended offline  Completed: read failure  90% 2916 10373954

Выявляем полный список сбойных секторов, путем чтения всех данных с диска:

   dd if=/dev/ad5 of=/dev/null bs=512 conv=noerror,sync

В один прекрасный момент появятся надписи вида:

   dd: /dev/ad5: Input/output error
   10373954+0 records in
   10373954+0 records out
   5311464448 bytes transferred in 2427.397393 secs (2188131 bytes/sec)

В системном логе увидим:

   kernel: ad5: TIMEOUT - READ_DMA retrying (1 retry left)  LBA=10373954
   kernel: ad5: TIMEOUT - READ_DMA retrying (0 retries left) LBA=10373954
   ....
   kernel: ad5: FAILURE - READ_DMA timed out LBA=10374109
   kernel: ad5: TIMEOUT - READ_DMA retrying (1 retry left) LBA=10374113

Проверяем, каждый участок еще раз:

   dd if=/dev/ad5 of=/dev/null bs=512 count=1 skip=10373954 conv=noerror,sync

Смотрим какой файл в ФС подпадает под этот блок.

Смотрим и примерно вычисляем номер раздела на который приходится сбойный сектор (LBA 10373954):

   fdisk -s /dev/ad5

   /dev/ad5: 775221 cyl 16 hd 63 sec
   Part        Start        Size Type Flags
   1:          63   398444067 0xa5 0x80
   2:   398444130   382973535 0xa5 0x80

10373954 - 63 = 10373891

   disklabel /dev/ad5s1

   # /dev/ad5s1:
   8 partitions:
   #        size   offset    fstype   [fsize bsize bps/cpg]
     a:  2097152        0    4.2BSD     2048 16384 28552 
     b:  4194304  2097152      swap                    
     c: 398444067        0    unused    0  0 # "raw" part
     d:  2097152  6291456    4.2BSD     2048 16384 28552 
     e: 10485760  8388608    4.2BSD     2048 16384 28552 
     f: 104857600 18874368    4.2BSD     2048 16384 28552 
     g: 104857600 123731968    4.2BSD     2048 16384 28552 
     h: 162127234 228589568    4.2BSD     2048 16384 28552 

Видим, что 10373891 приходится на раздел /dev/ad5s1e
Расчитываем смещение относительно начала раздела:
10373891 - 8388608 = 1985283

Находим иноду, которой принадлежит заданный блок:
   fsdb -r /dev/ad5s1e
   findblk 1985283

повторяем для каждого сбойного сектора 
(для Linux нужно использовать debugfs - http://smartmontools.sourceforge.net/BadBlockHowTo.txt)

Пытаемся записать данные в сбойный сектор, чтобы инициировать процесс
ремапинга на диске.

    sysctl kern.geom.debugflags=16 # иначе будет dd: /dev/ad5: Operation not permitted)
    dd if=/dev/zero of=/dev/ad5 bs=512 count=1 skip=10373954 conv=noerror,sync
    sysctl kern.geom.debugflags=0

Если после записи сектор начал читаться - все ok, 

если нет - резервная область на диске уже заполнена, пробуем запретить
обращещние окружающих секторов в ФС:

   man badsect

  /dev/ad5s1e примонтирован как /usr, создаем директорию /usr/BAD и выполняем
  badsect /usr/BAD 1985283
  fsck -y /dev/ad5s1e

Полезные порты:
   /usr/ports/sysutils/recoverdm 
   /usr/ports/sysutils/diskcheckd
 
22.07.2008
Ключи: disk, bad, sector, ufs, freebsd / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Установка и синхронизация времени

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, squirL (ok), 15:11, 22/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    угу... а нормальные люди - меняют диск. ибо если на диске появились сбойные сектора и дисковому ПО уже не хватает резервных секторов их заменять - диск годится только на подставки для кофе.
     
     
  • 2.2, Имя (?), 15:33, 22/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Нормальные люди для таких целей используют MHDD и реально (через EraseDelays, хотя не все, конечно) восстанавливают плохие сектора
     
     
  • 3.18, spamtrap (ok), 17:40, 24/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    на планете три нормальных человека?
     

  • 1.3, Аноним (3), 22:49, 22/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но никак не псевдоакадемическими извратами адептов культа ктулху :D
     
     
  • 2.4, Аноним (-), 23:18, 22/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но
    >никак не псевдоакадемическими извратами адептов культа ктулху :D

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

     
     
  • 3.5, GhostMaster (?), 23:27, 22/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но
    >>никак не псевдоакадемическими извратами адептов культа ктулху :D
    >
    >БСДшники походу - нормальный ремонт дисков не осилили зато хитрожопо вывернулись на
    >2 страницы упражнений с стремным результатом.То есть скан диска - нормально
    >а вот метод починки ... убиться можно.Время специалиста убитое на такой
    >ремапинг по сельски будет стоить дороже чем отремапленый таким макаром хард
    >который начинает проситься на пенсию, в утиль.

    Дебилы... сидити в своих виндах, у вас мозгов на большее нету.
    Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "сервер".

     
     
  • 4.6, аноним (?), 04:25, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "сервер

    Это бред. Во-первых, сервер тоже можно выключить и заменить диск - объявить, что 15 минут не будет что-то работать, либо прозрачно перевести все на резервный, если изначально делалось прямыми руками. Во-вторных, на РАБОЧЕМ сервере починить ничего не выйдет по-любому; ведь приложения, работающие с диском, будут нехило "залипать" во время работы с дефектными серверами, но даже если это не критично, описанная операция требует размонтирования раздела, а это означает гашение всех прог, работающих с разделом - что скорее всего примерно эквивалентно перезагрузке.

    Ну и в-третьих, если сервер важный, выключение недопустимо, но по каким-то причинам он не зарезервирован - то почему там не используется рейд?? С текущими ценами на ЖД не может быть никакого оправдания сколько-либо критичному серверу без рйда. Если же было решено, что рейд не нужен, то и 24/7 работа сервера не требовалась.


    А вообще статья интересная, но странная. Практического смысла в ней мало; во-первых далеко не любой современный диск получится починить таким образом, многим при попытке сделать ремап или просто прочитать битый сектор становится _очень_ плохо, во-вторых ЛЮБОЙ современный винчестер при появлении хоть одного битого сектора нужно немедленно менять. Так они внутри устроены, что битости редко бывают одиночными и затрагивают группу секторов, идущих рядом или на соседних дорожках, плюс наличие физического дефекта поверхности обычно приводит к появлению множественных дефектов вокруг (головка задевает поверхность диска и повреждается, либо микрочастицы магнитного слоя, отлетевшего с поверхности "рассыпаются" по остальным частям диска, либо залетевшая пыль оседает на диск и т.д.).

     
     
  • 5.7, Serg11 (??), 09:39, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "сервер
    >
    >Ну и в-третьих, если сервер важный, выключение недопустимо, но по каким-то причинам
    >он не зарезервирован - то почему там не используется рейд??

    Не удержался, чтобы не поддакнуть. Ну хотя бы самый простой рейд - зеркало без горячей замены должно быть. Иначе сервер (если его можно сервером назвать) спокойно можно выключить да поменять диски, а не фигней заниматься. Тем более, что день-другой протянет винт до покупки нового, раз в рабочем состоянии. Статью считаю очень интересной в познавательном смысле.
    а GhostMaster сразу ругаться, дебилы видите-ли...

     
     
  • 6.11, User294 (ok), 11:37, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Не удержался, чтобы не поддакнуть. Ну хотя бы самый простой рейд -
    >зеркало без горячей замены должно быть.

    Более того, нормальный райд контроллер просто вырубит такой диск к едреной фене выдав соответствующий статус.

    >Тем более, что день-другой протянет винт до покупки нового

    Ну да, вопрос в том насколько там активно бэды вылезают и что останется от файловой системы и сколько файлов будет с недостоверными и\или нечитаемыми данными потом.Приколитесь - десяток бэдов в середине многогиговой БД?Так сразу даже и не заметите западла, а когда заметите - у вас может и бэкапов этой базы даже не останется уже.

     
     
  • 7.22, zerot (??), 10:45, 07/08/2008 [^] [^^] [^^^] [ответить]  
  • +/
    скорее для многосот - гиговой
    ну дак ведь бэкап правильными средствами проверяет блоки на читаемость (RMAN),
    есть и dbv для проверки файлов БД ...
    конечно, если это Oracle
    хотя конечно - никто не застрахован, ибо работодатель жаждет видеть одмина загруженным по самые гланды
     
  • 4.10, User294 (ok), 11:32, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Дебилы... сидити в своих виндах, у вас мозгов на большее нету.
    >Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь
    >что вам знакомо значение слова "сервер".

    Дебил - это тот кто такой хард на сервере оставит, IMHO.Если у харда высрались бэды которые он сам отремапить не осилил - ему только на сервере и место, ага.И еще дебил - тот у кого конфигурация сервера не позволяет это заменить на лету на исправный хард.А так вас не смущает что I\O error означает что данные из сектора не прочлись?Ах ну да, бравых перцев разрушение файлов на сервере нисколько не пугает.

     
     
  • 5.12, Аноним (3), 18:25, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь
    >>что вам знакомо значение слова "сервер".
    >
    >Дебил - это тот кто такой хард на сервере оставит, IMHO.Если у
    >харда высрались бэды которые он сам отремапить не осилил - ему
    >только на сервере и место, ага.И еще дебил - тот у
    >кого конфигурация сервера не позволяет это заменить на лету на исправный
    >хард.А так вас не смущает что I\O error означает что данные
    >из сектора не прочлись?Ах ну да, бравых перцев разрушение файлов на
    >сервере нисколько не пугает.

    Да что Вы паритесь, в случае автора оригинального поста (GhostMaster) - там сочетание грамотность+стиль/пальцы указывают на готовый клинический диагноз.
    А так Вы всё верно написали, User294 :D

     

  • 1.8, Гость (?), 11:14, 23/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо, отличная статья! мне очень пригодилась
     
     
  • 2.13, squirL (ok), 18:26, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    ждем появления очередного резюме на job.ru
     

  • 1.9, Дмитрий Ю. Карпов (?), 11:28, 23/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хотелось бы видеть скрипт, который всё это делает сам.
     
     
  • 2.14, Dyr (??), 20:56, 23/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    И даже менял бы диски, да... =)
     
     
  • 3.19, User294 (ok), 12:28, 25/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >И даже менял бы диски, да... =)

    Угу, а еще чтобы мозг админа собой заменял ;)

     

  • 1.15, Аноним (3), 03:28, 24/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1. Неплохо.
    2. слово сервер надо было убрать из статьи, тогда все ок.
    3. Здесь более менее все собрано по работе с диском.
    4. Мой вывод: мне пригодится.
     
     
  • 2.16, thealexis (?), 11:07, 24/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен!
    Применительно к десктопу на котором НЕТ важной информации - пойдет!
    Также может быть полезно для оживления отработавших свое в серверах HDD (их реально жалко выбрасывать, под хранение  фильмотеки ИТ отдела они еще могут поработать....)
     
     
  • 3.17, squirL (ok), 16:27, 24/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    ну так о чем и речь :) ну для дома - так и быть, порево хранить - покатит... ;)
     

  • 1.20, ip (??), 13:30, 25/07/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо автору.
    Про sysctl kern.geom.debugflags=16 не знал, как раз представился случай испробовать, появился диск с бэдами.
     
     
  • 2.21, Andrew Kolchoogin (?), 12:40, 30/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Про sysctl kern.geom.debugflags=16 не знал,

        sysinstall в 7.0 уже про него сам пишет. Как только пытаешься создать раздел на диске, с которого загрузился, sysinstall честно орет, что "Operation not permitted -- try set kern.geom.debugflags=16" :)

     

  • 1.23, z.alex (?), 00:24, 02/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1. Полезно, оч. интересно, но исключельно для домашнего использования. Т.е. "ОЧЕНЬ непрофессиольно".
    ИМХО в начале таких статей нужно крупными буквами оговариваться "не для работы/для экпирементов/на свой страх и риск", чего не было сделано, что и возмутило многих читавших.
    2. Бывают случаи, когда в результате временного перегрева или др. полетело несколько секторов, но потом поменяли кулер или др,да и диск не из дешёвой серии, и "теоретически/в_принципе" можно воспользоваться этим полезным(?) советом. См п.1
    3. "О чём бы не шла речь -- в конечном счёте речь идёт ол деньгах"
    Все эти манипуляции/мастурбации с одним могут занять десятки часов. Совет применим к случаям, когда человекочас стоит не более чем 3..5 долл. Можно пересчитать точнее исходя из текущей стоимости Гига и стоимости Гига на убитом винте, затрат времени на тестирование Гиго/Теров, вывести формулу, и тд....
     
  • 1.24, XAnder (ok), 10:03, 15/01/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > dd if=/dev/zero of=/dev/ad5 bs=512 count=1 skip=10373954 conv=noerror,sync

    Ой-ой-ой!!! Эта команда сначала будет долго-долго тормозить, а потом затрёт нулевой сектор на ad5!

    Нужно заменить skip на seek

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру