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, 15:11, 22/07/2008 [ответить] [смотреть все]
  • +/
    угу... а нормальные люди - меняют диск. ибо если на диске появились сбойные сектора и дисковому ПО уже не хватает резервных секторов их заменять - диск годится только на подставки для кофе.
     
     
  • 2.2, Имя, 15:33, 22/07/2008 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Нормальные люди для таких целей используют MHDD и реально через EraseDelays, хо... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.18, spamtrap, 17:40, 24/07/2008 [^] [ответить] [смотреть все]  
  • +/
    на планете три нормальных человека?
     
  • 1.3, Аноним, 22:49, 22/07/2008 [ответить] [смотреть все]  
  • +/
    В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восст... весь текст скрыт [показать]
     
     
  • 2.4, Аноним, 23:18, 22/07/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    БСДшники походу - нормальный ремонт дисков не осилили зато хитрожопо вывернулись... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.5, GhostMaster, 23:27, 22/07/2008 [^] [ответить] [смотреть все]  
  • +/
    Дебилы сидити в своих виндах, у вас мозгов на большее нету Этот метод позвол... весь текст скрыт [показать]
     
     
  • 4.6, аноним, 04:25, 23/07/2008 [^] [ответить] [смотреть все]  
  • +/
    Это бред Во-первых, сервер тоже можно выключить и заменить диск - объявить, что... весь текст скрыт [показать]
     
     
  • 5.7, Serg11, 09:39, 23/07/2008 [^] [ответить] [смотреть все]  
  • +/
    Не удержался, чтобы не поддакнуть Ну хотя бы самый простой рейд - зеркало без г... весь текст скрыт [показать]
     
     
  • 6.11, User294, 11:37, 23/07/2008 [^] [ответить] [смотреть все]  
  • +/
    Более того, нормальный райд контроллер просто вырубит такой диск к едреной фене ... весь текст скрыт [показать]
     
     
  • 7.22, zerot, 10:45, 07/08/2008 [^] [ответить] [смотреть все]  
  • +/
    скорее для многосот - гиговой ну дак ведь бэкап правильными средствами проверяет... весь текст скрыт [показать]
     
  • 4.10, User294, 11:32, 23/07/2008 [^] [ответить] [смотреть все]  
  • +/
    Дебил - это тот кто такой хард на сервере оставит, IMHO Если у харда высрались б... весь текст скрыт [показать]
     
     
  • 5.12, Аноним, 18:25, 23/07/2008 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален Да что Вы паритесь, в случае автора оригинального поста ... весь текст скрыт [показать]
     
     ....нить скрыта, показать (8)

  • 1.8, Гость, 11:14, 23/07/2008 [ответить] [смотреть все]  
  • +/
    Спасибо, отличная статья! мне очень пригодилась
     
     
  • 2.13, squirL, 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, 12:28, 25/07/2008 [^] [ответить] [смотреть все]  
  • +/
    >И даже менял бы диски, да... =)

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

     
  • 1.15, Аноним, 03:28, 24/07/2008 [ответить] [смотреть все]  
  • +/
    1 Неплохо 2 слово сервер надо было убрать из статьи, тогда все ок 3 Здесь б... весь текст скрыт [показать]
     
     
  • 2.16, thealexis, 11:07, 24/07/2008 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Согласен!
    Применительно к десктопу на котором НЕТ важной информации - пойдет!
    Также может быть полезно для оживления отработавших свое в серверах HDD (их реально жалко выбрасывать, под хранение  фильмотеки ИТ отдела они еще могут поработать....)
     
     
  • 3.17, squirL, 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, 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-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor