Хабрахабр

Используем старые HDD с бэдами

Ещё со студенческих времен у меня стояла куча жестких дисков. Время от времени я их апгрейдил — старые продавал, а вместо них ставил более емкие. Тогда спрос на объем был довольно большой, все приходилось хранить у себя на винтах. Но пришло время интернета, и локалки отпали сами собой. Какое-то время диски использовались как файлопомойка для торрентов. Но надобность в апгрейде из-за нехватки объема постепенно отпала. В итоге я оказался с кучей довольно старых винчестеров, которые начали постепенно умирать. Они еще не трупы, но уже накрылись бэд блоками и поползли в сторону могилы. Естественно, при первых признаках бэдов всё более-менее ценное переносилось на новый винт, а старый…
Вот и возник вопрос, а что делать со старым? Как-то жалко выкидывать 4ТБ винт когда на нем всего с десяток бэдов. Причем в большинстве случаев их количество растет не быстро, и этот 4ТБ винт можно использовать для всякой ерунды ещё довольно долго. Встал вопрос, а как бы сделать так, чтобы данные на бэды не попадали. Большинство утилит пытаются эти сектора восстановить. Но при таком объеме напрашивается вопрос — зачем? Это процесс весьма долгий, а ± гигабайт на диске в 4ТБ особой роли не играет. Особенно когда накопилось несколько таких живых мертвецов. Немного погуглив способ быстрой маркировки бэдов наткнулся на несколько веток на форумах, где народ искал что-то похожее. Но нормального решения я так и не нашел.

Немного подумав решил поступить самым простым способом — написать консольную утилитку забивающую винт файлами, а потом проверяющую эти файлы на чтение. Раз решения нет, значит будет. Отлично, сектор под файлом целый, файлик удаляем. Файл прочитался? Вот и нашли бэд блок, файл оставляем на этом бэде чтобы ничего больше на него не писалось. Не читается?

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

Всего есть 2 режима, полный, и режим чистки.

Для этого указываем диск и желаемый размер блока/файла. Полный режим забивает диск файлами, потом их проверят и удаляет.

BadBlocksPlaceholder [disk] [file_size_kb] BadBlocksPlaceholder e:\ 4096

Файлы создаются в папке BadBlockPlaceholders\yyyymmdd

Забить 4ТБ файлами и проверить их на чтение тоже не моментальный процесс, и иногда приходится разбивать его на пару дней. Второй режим предназначен для продолжения проверки/чистки. В этом режиме нужно указать папку с файлами-Placeholder'ами, созданными на первом этапе.

BadBlocksPlaceholder clean e:\BadBlockPlaceholders\20190110

Естественно, после чистки оставляем BadBlockPlaceholders лежать на винте. Надеюсь кому-нибудь утилитка пригодится. Проверялся только happy-day сценарий, так что сильно не пугайтесь, и сильно не пинайте. Написано на .net core/C#.

Исходники лежат на github.

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть