Принудительное оживление секторов под Linux

Только вчера писал про замену винчестеров, сегодня выяснилось, что и второй диск сервера умирает. MD массив раздела /boot не хотел взлетать на оба крыла, кусочек с нового диска переходил в состояние Spare, так как при попытке синхронизации на основном куске, который на старом и уже тоже помирающем диске, были не читаемые сектора. Мне повезло: данных на секторах не было, что, тем не менее, не позволяло успешно просинхронизироваться. На всякий случай сделал dump -0 -f somefile /boot, для бекапа данных и попробовал реанимировать сектора по статье: http://www.sjvs.nl/?p=12. Последовательность такая:

  1. Убираем раздел из массива (который новый и не может встроиться, так как старый с битыми секторами) mdadm –manage /dev/md1 –remove /dev/sda2.
  2. Очищаем его суперблок, что бы заново добавить mdadm –zero-superblock /dev/sda2.
  3. Пытаемся еще раз добавить  mdadm –manage /dev/md1 –add /dev/sda2. Наблюдаем как процесс в /proc/mdstat подвисает, в это время можно погрепать tail -f /var/log/kern.log | grep sector. Увидев сообщение … end_request: I/O error, dev sdb, sector 68151475, выписываем номер сектора.
  4. Проверяем, что сектор действительно не читается  hdparm –read-sector 68151475 /dev/sdb.
  5. Перезаписываем сектор hdparm –write-sector 68151475 –yes-i-know-what-i-am-doing /dev/sdb.
  6. Перепроверяем, что сектор начал читаться предыдущей командой.
  7. Заново повторяем пункты 1, 2, 3, пока не найдем и перезапишем все сектора. После нахождения массив нормально поднимется.

Далее можно внимательно проанализировать SMART состояние диска smartctl -a /dev/sdb и принять решение о замене.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.