Только вчера писал про замену винчестеров, сегодня выяснилось, что и второй диск сервера умирает. MD массив раздела /boot не хотел взлетать на оба крыла, кусочек с нового диска переходил в состояние Spare, так как при попытке синхронизации на основном куске, который на старом и уже тоже помирающем диске, были не читаемые сектора. Мне повезло: данных на секторах не было, что, тем не менее, не позволяло успешно просинхронизироваться. На всякий случай сделал dump -0 -f somefile /boot, для бекапа данных и попробовал реанимировать сектора по статье: http://www.sjvs.nl/?p=12. Последовательность такая:
- Убираем раздел из массива (который новый и не может встроиться, так как старый с битыми секторами) mdadm –manage /dev/md1 –remove /dev/sda2.
- Очищаем его суперблок, что бы заново добавить mdadm –zero-superblock /dev/sda2.
- Пытаемся еще раз добавить 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, выписываем номер сектора.
- Проверяем, что сектор действительно не читается hdparm –read-sector 68151475 /dev/sdb.
- Перезаписываем сектор hdparm –write-sector 68151475 –yes-i-know-what-i-am-doing /dev/sdb.
- Перепроверяем, что сектор начал читаться предыдущей командой.
- Заново повторяем пункты 1, 2, 3, пока не найдем и перезапишем все сектора. После нахождения массив нормально поднимется.
Далее можно внимательно проанализировать SMART состояние диска smartctl -a /dev/sdb и принять решение о замене.