Частичная реанимация жесткого диска с битыми секторами

Попал ко мне в руки полусломанный диск на 3TB. Данные на него записываются на скорости около 40МБ/c, а вот читаются как повезет. Большая часть пространства вполне целая. Но вот несчастный процент поверхности портит все. Он читается. Просто очень медленно. Итого, диск можно заполнить данными за день, но на то чтобы прочитать все уйдут месяцы.

Виндовый chkdsk проработав несколько суток подряд ничего полезного не сделал, и я принялся за крайние меры.

Сразу оговорюсь, метод работает только на дефекте именно такого класса: быстрая запись, медленное чтение некоторых секторов. Более того, придумал это не я, это из комментов с хабра, только в комменте не было кода, а у меня код есть. Сам коммент я потерял…

За основу был взят чужой bash-скрипт copy.sh, предназначенный для вытягивания всех данных на относительно большой скорости с относительно целого диска. При подвисании диска больше чем на 10 секунд файл просто пропускается.

Я от себя добавил удаление лишних файлов и получил следующую простую схему:
1) Забиваем диск гигабайтными файлами
2) Монтируем файловую систему nullfs для наличия места для копирования (можно было и на /dev/null переписать скрипт, но мне это тогда в голову не пришло)
3) Оставшиеся файлы записать в отдельную папку, и никогда больше ее не трогать

Таким образом, все сектора, которые читаются относительно быстро будут освобожденны, а битые сектора будут заняты файлами, которые никто и никогда читать не будет.
Исходники и покомандная инструкция на гитхабе

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *