Скопировал неисправный диск с помощью GNU ddrescue, я что-то упустил?

Скопировал неисправный диск с помощью GNU ddrescue, я что-то упустил?

Позвольте мне объяснить, что у меня на уме, чтобы вы могли мне сказать, если я что-то сделаю неправильно.

У меня есть два внешних жестких диска, один из которых выходит из строя (Windows просит меня отформатировать его, чтобы снова использовать), второй пустой и намного больше, поэтому я использовал его для копирования неисправного диска. Сначала я думал об использовании, Testdiskпотому что у меня есть некоторый опыт работы с ним. Однако, прежде чем пробовать какие-либо инструменты для восстановления, я хотел иметь полную копию неисправного диска. Вот где я нашел GNU ddrescue. Поэтому мой план — сделать копию с помощью GNU ddrescueи затем использовать ее Testdiskна копии.

Поэтому я сделал полную копию с помощью GNU ddrescue - GUI version. После завершения восстановления мне предложили на выбор 3 варианта: 1. Сброс 2. Монтирование диска 3. Выход; я новичок в этом деле GNU ddrescueи решил, что лучше всего будет просто выйти из программы, не выполняя сброс или монтирование чего-либо (я понятия не имею, что на самом деле делает монтирование с диском, извините).

Далее я планирую использовать Testdiskдубликат для восстановления потерянного раздела.

Но прежде чем двигаться дальше, я хотел бы знать, прав ли я, используя эти две программы вместе, или я допустил какую-то ошибку в этом процессе. Прав ли я, думая, что новый диск теперь является полной копией старого?

Редактировать:

/dev/sdd/ ... старый неисправный жесткий диск

/dev/sde/ ... новый жесткий диск

root@PartedMagic:~# sudo gdisk -l /dev/sdd

GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Disk /dev/sdd: 976773168 sectors, 465.8 GiB
Model: Portable        
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): A6D24F7F-47D5-4FAA-8595-5E56582C1DB1
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 8-sector boundaries
Total free space is 5099 sectors (2.5 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              63       976768064   465.8 GiB   0700  Microsoft basic data

root@PartedMagic:~# sudo gdisk -l /dev/sde

GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************


Warning! Secondary partition table overlaps the last partition by
244209734 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/sde: 732558336 sectors, 2.7 TiB
Model: Elements 10B8   
Sector size (logical/physical): 4096/4096 bytes
Disk identifier (GUID): E797BEEA-722B-4903-8086-B2A84B5E741C
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 5
First usable sector is 6, last usable sector is 732558330
Partitions will be aligned on 8-sector boundaries
Total free space is 57 sectors (228.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              63       976768064   3.6 TiB     0700  Microsoft basic data

Выходsudo blkid

root@PartedMagic:~# sudo blkid
/dev/sdd1: LABEL="Expansion Drive" UUID="3C148148148105DC" TYPE="ntfs" PARTUUID="3df9d654-01"

sudo blkidне упоминает /dev/sdeX/

Для пояснения: /dev/sdd/ имел только один раздел до сбоя

решение1

Это не сработает так просто.

Логический размер сектора на новом диске составляет 4096, тогда как на старом диске он составляет 512. Числа в таблице разделов остались прежними, но поскольку новые сектора в 8 раз больше, вся таблица разделов в клоне не имеет смысла.

В некоторых случаях эти числа можно перевести (сравнитеэтот мой ответ) но здесь (старый) раздел начинается со смещения 63*512 байт, что не делится на 4096. Это означает, что ваша файловая система теперь начинается где-товнутрибольший сектор (хотя он должен начинаться с начала сектора), поэтому никакая таблица разделов не позволит сделать это немедленно.

Что делать теперь? Вот несколько идей. Пожалуйста, отсоедините старый диск (на всякий случай), прежде чем продолжить.


Вы все равно можете попытаться смонтировать файловую систему независимо от (теперь недействительной) таблицы разделов:

mount -o ro,offset=$((63*512)) /dev/sde /some/mountpoint

Если файловая система была здорова, это должно сработать. В вашем случае команда может не сработать из-за поврежденной файловой системы. Но, возможно, это сработает, и вам удастся вытащить все важные данные.


Вы можете сопоставить весь диск с петлевым устройством, которое сообщает размер сектора 512:

losetup -f --show /dev/sde       # 512 is the default value

Это должно вывести узел типа /dev/loop7. В контексте этого устройства таблица разделов действительна. Инструменты, которые ожидают таблицу разделов, теперь должны работать с устройством (хотя некоторым может потребоваться /dev/loop7p1, для работы с разделом; kpartxможет помочь, но сначала рассмотрите следующую идею).

Примечание: узел уничтожается с помощью losetup -d /dev/loop7.


Вы можете сопоставить реальный раздел с петлевым устройством:

losetup -f --show --offset $((63*512)) --sizelimit $(( (976768064+1-63)*512 )) /dev/sde

Опять же, это должно вывести узел типа /dev/loop8. Файловая система (возможно, поврежденная) начинается в самом начале этого устройства, поэтому инструменты восстановления, которые анализируют файловые системы, как мы надеемся, найдут ее (или, по крайней мере, файлы внутри) без какой-либо таблицы разделов.


Вы можете скопировать раздел на другое смещение, чтобы таблица разделовможетбыть исправлено. Это довольно сложно; все числа должны быть рассчитаны правильно. Если какой-либо из предыдущих методов оказался для вас достаточным, не беспокойтесь.

Обратите внимание, что старый диск был 465,8 GiB, новый — 2,7 TiB; так что у вас достаточно места. Давайте скопируем файловую систему в конец диска.

Старый раздел занимал 512-байтовые сектора с номера сектора 63 по (включительно) 976768064, всего 976768002 секторов. Это значит, что вам нужно как минимум 122096001 больших (4096-байтовых) секторов для него.

В секторах размером 4096 байт начало и конец преобразуются в 7 (частично занято) и 122096008 (также частично занято).

На вашем диске 732558336 секторов, вам нужно отступить на 122096001 сектор (больше, если вы планируете использовать на нем GPT). Начальный сектор 610459648 кажется подходящим. Он оставит немного места в конце для вторичного GPT (и он выровнен по границе 32 МБ, но это не имеет большого значения). Теперь последний сектор нового раздела должен быть не менее 732555648 (732555655, если вы хотите, чтобы размер в секторах делился на 8, это может устроить некоторые инструменты; раздел больше, чем нужно, не должен влиять на файловую систему, она знает свой собственный размер).

Отредактируйте таблицу разделов, уничтожьте старую (недействительную) запись и создайте новую, как и планировалось:

  • первый сектор 610459648
  • последний сектор 732555655
  • код или тип, подходящий для NTFS

Для такого большого диска с секторами по 512 байт потребуется таблица разделов GPT, а не MBR. С секторами по 4096 байт должны работать GPT или MBR.

Затем (после этого partprobe, если программа разбиения не вызывает ее неявно) у вас должен появиться доступ к новому разделу.

Скопируйте данные из /dev/loop8(созданного выше) в новый раздел:

dd if=/dev/loop8 of=/dev/sdeN bs=32M
# or better use ddrescue again

После того, как команда скопирует около 465,8 GiB, файловая система будет правильно выровнена в разделе (она начинается с начала, а не с середины сектора). Предыдущие идеи были несколько «хакерскими»; эта дает вам вполне стандартную настройку.


Обратите внимание, что вы можете создать еще один раздел для восстановленных данных, если вам это нужно. Файловая система, которую вы ddrescueизначально записали, заканчивается в секторе 122096008. Новая копия (если вы решили ее создать) начинается в секторе 610459648. В любом случае все, что находится между ними, вы можете использовать.

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