Главная > Программы Как избавиться от нечитаемых секторов на дискеВ логе 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 # 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/recoverdm22.07.2008 Материал взят с сайта: Главная > Программы |