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

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

     
     
  • 4.6, аноним (?), 04:25, 23/07/2008 [^] [ответить]     [к модератору]  
  • +/
    Это бред Во-первых, сервер тоже можно выключить и заменить диск - объявить, что... весь текст скрыт [показать]
     
     
  • 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 [^] [ответить]     [к модератору]  
  • +/
    gt оверквотинг удален Да что Вы паритесь, в случае автора оригинального поста ... весь текст скрыт [показать]
     
  • 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:      
    Заголовок:
    Текст:



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