Смотря что Вы имеете ввиду под «бэд блоками». SMART имеет такие показатели, как Relocated Sectors (перемещённые секторы) и Relocation Candidate (кандидаты к перемещению).
С первыми нельзя сделать ничего. Если их количество превысило некоторый предел, то пора бы менять диск, а то риск скорого накрытия велик. Если на нём есть ценные данные, то как минимум пора участить бэкапы.
Со вторыми ещё есть шанс. Кандидаты к перемещению — это такие сектора, чтение из которых произошло однажды с ошибкой (у каждого сектора есть на этот случай CRC32). Чтобы проверить, окончательно ли накрылся сектор, контроллер жёсткого диска пытается записать туда данные. Этого можно ждать, пока само сложится, а можно форсировать утилитами типа упомянутой здесь mhdd. Так вот, если запись пройдёт успешно, сектор будет помечен рабочим. Если нет, будет увеличен счётчик перемещённых секторов.
Перемещаются, кстати, сектора в специально зарезервированный участок, обычно в конце диска. Логически он остаётся там же, где был, но фактически головка бегает за ним в другое место.