Я создал образ неисправного диска с помощью:
dd if=/dev/sde of=/mnt/image001.dd
У накопителя было всего два раздела:
Device Boot Start End Blocks Id System
/dev/sde1 * 1 13 102400 7 HPFS/NTFS
/dev/sde2 13 60802 488282112 7 HPFS/NTFS
Как разбить изображение (image001.dd) на два или три файла (1: MBR; 2: Раздел 1; 3: Раздел 2) так что я могу смонтировать в нем файловые системы?
Я нашел решение, которое не сработает для меня, - это использовать split
чтобы создать много файлов размером 512 КБ, затем cat
их обратно вместе в три файла (1: 512K, 2: 105M, 3: остальные), но у меня нет места на диске для этого.
История:
Я уже скопировал весь образ на новый диск, он загружается и в основном работает. Похоже, что на старом неисправном диске была повреждена ФС, и dd
скопировал поврежденные части (как надо) и записал их на новый диск. Мое решение - смонтировать скопированную мной ФС и скопировать только файлы (используя rsync
или что-то в этом роде) так что с надеждой Я не буду копировать плохие фрагменты.
ОБНОВЛЕНИЕ 1: Я пробовал dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1
но mount
жалуется, что NTFS signature is missing
, поэтому я думаю, что сделал это неправильно.
Вам вообще не нужно разделять это.
Использовать parted
чтобы получить подробную информацию о таблице разделов:
parted image001.dd
В parted
, переключитесь на байтовые единицы с помощью команды u
, затем B
. После этого введите команду print
.
Вы получите вывод, который выглядит следующим образом (вывод из реальной системы, а не изображения):
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
2 1048576B 400556031B 399507456B primary ext4 boot
3 400556032B 21165506559B 20764950528B primary ext4
1 21165506560B 25164775423B 3999268864B primary linux-swap(v1)
Вы можете использовать Start
число как смещение для петлевого крепления:
mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue
смонтирует третий раздел в /mnt/rescue
.
Намного лучше просто использовать kpartx
инструмент.
usage : kpartx [-a|-d|-l] [-v] wholedisk
-a add partition devmappings
-d del partition devmappings
-l list partitions devmappings that would be added by -a
...
Пример:
# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
На этом этапе я могу установить /dev/mapper/loop0p2
.
После размонтирования звонка kpartx -d whole_disk
очистить.