Позвольте мне объяснить, что у меня на уме, чтобы вы могли мне сказать, если я что-то сделаю неправильно.
У меня есть два внешних жестких диска, один из которых выходит из строя (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. В любом случае все, что находится между ними, вы можете использовать.