В логе smartd появились подобные свидетельства наличия нечитаемых секторов на диске:smartd[798]: Device: /dev/ad5, 15 Currently unreadable (pending) sectors
smartd[798]: Device: /dev/ad5, 15 Offline uncorrectable sectorsSMART тестирование подтвердило подозрения:
Запускаем фоновый тест диска, не мешающий основной работе:
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 0x8010373954 - 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
URL:
Обсуждается: http://www.opennet.me/tips/info/1720.shtml
угу... а нормальные люди - меняют диск. ибо если на диске появились сбойные сектора и дисковому ПО уже не хватает резервных секторов их заменять - диск годится только на подставки для кофе.
Нормальные люди для таких целей используют MHDD и реально (через EraseDelays, хотя не все, конечно) восстанавливают плохие сектора
на планете три нормальных человека?
В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но никак не псевдоакадемическими извратами адептов культа ктулху :D
>В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но
>никак не псевдоакадемическими извратами адептов культа ктулху :DБСДшники походу - нормальный ремонт дисков не осилили зато хитрожопо вывернулись на 2 страницы упражнений с стремным результатом.То есть скан диска - нормально а вот метод починки ... убиться можно.Время специалиста убитое на такой ремапинг по сельски будет стоить дороже чем отремапленый таким макаром хард который начинает проситься на пенсию, в утиль.
>>В любом случае, нормальные люди пользуются или хардварной заменой или mhdd-восстановлением, но
>>никак не псевдоакадемическими извратами адептов культа ктулху :D
>
>БСДшники походу - нормальный ремонт дисков не осилили зато хитрожопо вывернулись на
>2 страницы упражнений с стремным результатом.То есть скан диска - нормально
>а вот метод починки ... убиться можно.Время специалиста убитое на такой
>ремапинг по сельски будет стоить дороже чем отремапленый таким макаром хард
>который начинает проситься на пенсию, в утиль.Дебилы... сидити в своих виндах, у вас мозгов на большее нету.
Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "сервер".
> Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "серверЭто бред. Во-первых, сервер тоже можно выключить и заменить диск - объявить, что 15 минут не будет что-то работать, либо прозрачно перевести все на резервный, если изначально делалось прямыми руками. Во-вторных, на РАБОЧЕМ сервере починить ничего не выйдет по-любому; ведь приложения, работающие с диском, будут нехило "залипать" во время работы с дефектными серверами, но даже если это не критично, описанная операция требует размонтирования раздела, а это означает гашение всех прог, работающих с разделом - что скорее всего примерно эквивалентно перезагрузке.
Ну и в-третьих, если сервер важный, выключение недопустимо, но по каким-то причинам он не зарезервирован - то почему там не используется рейд?? С текущими ценами на ЖД не может быть никакого оправдания сколько-либо критичному серверу без рйда. Если же было решено, что рейд не нужен, то и 24/7 работа сервера не требовалась.
А вообще статья интересная, но странная. Практического смысла в ней мало; во-первых далеко не любой современный диск получится починить таким образом, многим при попытке сделать ремап или просто прочитать битый сектор становится _очень_ плохо, во-вторых ЛЮБОЙ современный винчестер при появлении хоть одного битого сектора нужно немедленно менять. Так они внутри устроены, что битости редко бывают одиночными и затрагивают группу секторов, идущих рядом или на соседних дорожках, плюс наличие физического дефекта поверхности обычно приводит к появлению множественных дефектов вокруг (головка задевает поверхность диска и повреждается, либо микрочастицы магнитного слоя, отлетевшего с поверхности "рассыпаются" по остальным частям диска, либо залетевшая пыль оседает на диск и т.д.).
>> Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь что вам знакомо значение слова "сервер
>
>Ну и в-третьих, если сервер важный, выключение недопустимо, но по каким-то причинам
>он не зарезервирован - то почему там не используется рейд??Не удержался, чтобы не поддакнуть. Ну хотя бы самый простой рейд - зеркало без горячей замены должно быть. Иначе сервер (если его можно сервером назвать) спокойно можно выключить да поменять диски, а не фигней заниматься. Тем более, что день-другой протянет винт до покупки нового, раз в рабочем состоянии. Статью считаю очень интересной в познавательном смысле.
а GhostMaster сразу ругаться, дебилы видите-ли...
>Не удержался, чтобы не поддакнуть. Ну хотя бы самый простой рейд -
>зеркало без горячей замены должно быть.Более того, нормальный райд контроллер просто вырубит такой диск к едреной фене выдав соответствующий статус.
>Тем более, что день-другой протянет винт до покупки нового
Ну да, вопрос в том насколько там активно бэды вылезают и что останется от файловой системы и сколько файлов будет с недостоверными и\или нечитаемыми данными потом.Приколитесь - десяток бэдов в середине многогиговой БД?Так сразу даже и не заметите западла, а когда заметите - у вас может и бэкапов этой базы даже не останется уже.
скорее для многосот - гиговой
ну дак ведь бэкап правильными средствами проверяет блоки на читаемость (RMAN),
есть и dbv для проверки файлов БД ...
конечно, если это Oracle
хотя конечно - никто не застрахован, ибо работодатель жаждет видеть одмина загруженным по самые гланды
>Дебилы... сидити в своих виндах, у вас мозгов на большее нету.
>Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь
>что вам знакомо значение слова "сервер".Дебил - это тот кто такой хард на сервере оставит, IMHO.Если у харда высрались бэды которые он сам отремапить не осилил - ему только на сервере и место, ага.И еще дебил - тот у кого конфигурация сервера не позволяет это заменить на лету на исправный хард.А так вас не смущает что I\O error означает что данные из сектора не прочлись?Ах ну да, бравых перцев разрушение файлов на сервере нисколько не пугает.
>[оверквотинг удален]
>>Этот метод позволяет починить диск при РАБОЧЕМ сервере, на лету. Хотя сомневаюсь
>>что вам знакомо значение слова "сервер".
>
>Дебил - это тот кто такой хард на сервере оставит, IMHO.Если у
>харда высрались бэды которые он сам отремапить не осилил - ему
>только на сервере и место, ага.И еще дебил - тот у
>кого конфигурация сервера не позволяет это заменить на лету на исправный
>хард.А так вас не смущает что I\O error означает что данные
>из сектора не прочлись?Ах ну да, бравых перцев разрушение файлов на
>сервере нисколько не пугает.Да что Вы паритесь, в случае автора оригинального поста (GhostMaster) - там сочетание грамотность+стиль/пальцы указывают на готовый клинический диагноз.
А так Вы всё верно написали, User294 :D
Спасибо, отличная статья! мне очень пригодилась
ждем появления очередного резюме на job.ru
Хотелось бы видеть скрипт, который всё это делает сам.
И даже менял бы диски, да... =)
>И даже менял бы диски, да... =)Угу, а еще чтобы мозг админа собой заменял ;)
1. Неплохо.
2. слово сервер надо было убрать из статьи, тогда все ок.
3. Здесь более менее все собрано по работе с диском.
4. Мой вывод: мне пригодится.
Согласен!
Применительно к десктопу на котором НЕТ важной информации - пойдет!
Также может быть полезно для оживления отработавших свое в серверах HDD (их реально жалко выбрасывать, под хранение фильмотеки ИТ отдела они еще могут поработать....)
ну так о чем и речь :) ну для дома - так и быть, порево хранить - покатит... ;)
Спасибо автору.
Про sysctl kern.geom.debugflags=16 не знал, как раз представился случай испробовать, появился диск с бэдами.
> Про sysctl kern.geom.debugflags=16 не знал,sysinstall в 7.0 уже про него сам пишет. Как только пытаешься создать раздел на диске, с которого загрузился, sysinstall честно орет, что "Operation not permitted -- try set kern.geom.debugflags=16" :)
1. Полезно, оч. интересно, но исключельно для домашнего использования. Т.е. "ОЧЕНЬ непрофессиольно".
ИМХО в начале таких статей нужно крупными буквами оговариваться "не для работы/для экпирементов/на свой страх и риск", чего не было сделано, что и возмутило многих читавших.
2. Бывают случаи, когда в результате временного перегрева или др. полетело несколько секторов, но потом поменяли кулер или др,да и диск не из дешёвой серии, и "теоретически/в_принципе" можно воспользоваться этим полезным(?) советом. См п.1
3. "О чём бы не шла речь -- в конечном счёте речь идёт ол деньгах"
Все эти манипуляции/мастурбации с одним могут занять десятки часов. Совет применим к случаям, когда человекочас стоит не более чем 3..5 долл. Можно пересчитать точнее исходя из текущей стоимости Гига и стоимости Гига на убитом винте, затрат времени на тестирование Гиго/Теров, вывести формулу, и тд....
> dd if=/dev/zero of=/dev/ad5 bs=512 count=1 skip=10373954 conv=noerror,syncОй-ой-ой!!! Эта команда сначала будет долго-долго тормозить, а потом затрёт нулевой сектор на ad5!
Нужно заменить skip на seek