Клонирование жесткого диска посекторно (dd/ddrescue), как пропустить плохие блоки в середине?

Клонирование жесткого диска посекторно (dd/ddrescue), как пропустить плохие блоки в середине?

У меня есть HDD с невосстановимыми плохими блоками. HDD является частью массива Raid-0. Если я обращаюсь к плохим блокам любым способом, HDD зависает. Предположим, что полная емкость HDD составляет 500 000 000 000 байт, плохие блоки находятся в диапазоне 100 000 000 000 - 100 000 004 096 байт (8 LBA). Как использоватьддилиddrescueМогу ли я клонировать этот HDD на другой HDD или в файл образа без доступа к плохим блокам? Мне нужны байты 0 - 99,999,999,999, затем 4096 байт нулей, затем байты 100,000,004,097 - 500,000,000,000.

Спасибо!

решение1

Я сделал это сегодня, надеюсь, у вас это сработает. У меня возникли проблемы с дублированием (резервным копированием диска) с примерно 30 плохими блоками. Первое, что я сделал, это сделал резервную копию файлов с помощью обычной Filezilla для резервного копирования всех хороших данных. Я заметил, что один большой файл копировался неправильно (останавливался на середине и перезапускал передачу). К счастью, у меня есть предыдущая резервная копия того же файла. Чтобы сделать дубликат диска, мне пришлось найти плохие блоки на диске, используя эту процедуру:

1-й найдите проблемный диск, идентифицируя информацию о HD с помощьюfdisk -l

2-й, если, скажем, ваш диск/dev/sdbто вам нужно выполнить команду плохие блоки -v /dev/sdbон выведет список всех плохих блоков на диске. К счастью, их будет несколько. Если плохих блоков не обнаружено, значит, с блоками вашего диска все в порядке и нужно что-то еще придумать. Мой размер блока — 512, поэтому я использую это значение по умолчанию для запуска DD

В-третьих, каждый блок имеет размер 512, поэтому я установил bs=512.

Каждый раз, когда я запускал DD регулярно, как я всегда делаю, мои данные после ошибок выходили поврежденными. Поэтому я затем использовал параметры, как описано на страницеhttps://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.htmlнайдите раздел «Для неисправных дисков».

dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock 

Это заняло некоторое время. Каждый обнаруженный плохой блок издавал звук, похожий на стук по неисправному диску. Он копирует блок за блоком, и через все мои плохие блоки издавал тот же звук. Количество раз, когда издавал звук, было связано с тем, что он находил другой плохой блок и сообщал вам об ошибке на дисплее. Что'conv=noerror,sync'делает, это заполняет плохие чтения с помощью NUL, в то время как'iflag=полный_блок'обслуживает короткие чтения, но сохраняет синхронизацию ваших данных до конца. Никаких повреждений, просто не копирует неисправные блоки и заполняет их пустыми NUL.

После того, как копирование с помощью DD было сделано, я просто заменил этот плохой файл, вернув Filezilla из прошлой резервной копии, и все заработало нормально. Надеюсь, это будет полезно для других, пытающихся сделать резервную копию неисправных дисков.

ПРИМЕЧАНИЕ: Мои плохие блоки были довольно близко друг к другу. Около 4 блоков одновременно вместе в группах, где были обнаружены плохие. Если ваши блоки по всему диску, несколько файлов могли быть затронуты. К счастью, в моем случае был затронут только большой файл базы данных размером 4 ГБ.

решение2

Ладно, возможно, это можно сделать и с помощью dd, но я решил свою проблему с помощью WinHex (я выбрал физическое устройство). Он может клонировать любые части диска в образы и объединять их.

Связанный контент