安装 NAS dd 映像时出现问题

安装 NAS dd 映像时出现问题

我使用 dd 备份了我的 NAS HDD,现在我正尝试安装映像以进行验证。使用 kpartx,我收到以下错误:

# kpartx -av 2018-02-23_dlink_nas.img 
add map loop0p1 (253:0): 0 1060224 linear 7:0 64
device-mapper: resume ioctl on loop0p2 failed: Invalid argument
create/reload failed on loop0p2
add map loop0p4 (253:1): 0 1024080 linear 7:0 1060288

而分区 2 包含实际数据。我猜想这个错误是由于奇怪的文件系统结构造成的:

# file 2018-02-23_dlink_nas.img 
2018-02-23_dlink_nas.img: DOS/MBR boot sector; partition 1 : ID=0x82, start-CHS (0x0,1,2), end-CHS (0x41,254,61), startsector 64, 1060224 sectors; partition 2 : ID=0x83, start-CHS (0x81,190,14), end-CHS (0x3ff,254,63), startsector 2084368, 3900393296 sectors; partition 4 : ID=0x83, start-CHS (0x44,41,48), end-CHS (0x85,254,59), startsector 1060288, 1024080 sectors

对于原始硬盘,我能够使用 mdadm 挂载它,因为数据分区是 linux_raid_partition。

有没有办法继续安装映像?如果数据丢失,能够访问我的数据就太好了。

更新:

(1)图像大小为 1,816,156,778,496 字节

(2)图像大小与原始硬盘非常吻合,

# fdisk -l /dev/sdd
Disk /dev/sdd: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c640956

Device     Boot   Start        End    Sectors   Size Id Type
/dev/sdd1            64    1060287    1060224 517.7M 82 Linux swap / Solaris
/dev/sdd2       2084368 3902477663 3900393296   1.8T 83 Linux
/dev/sdd4       1060288    2084367    1024080   500M 83 Linux

Partition table entries are not in disk order.# fdisk -l /dev/sdd
Disk /dev/sdd: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6c640956

Device     Boot   Start        End    Sectors   Size Id Type
/dev/sdd1            64    1060287    1060224 517.7M 82 Linux swap / Solaris
/dev/sdd2       2084368 3902477663 3900393296   1.8T 83 Linux
/dev/sdd4       1060288    2084367    1024080   500M 83 Linux

Partition table entries are not in disk order.

(3)该硬盘是 RAID1 硬盘之一,我可以使用

mdadm --assemble --run /dev/md0 /dev/sdc2

然后安装/dev/md0

答案1

我已重建您的分区表并进行了一些测试。您收到以下错误:

device-mapper: resume ioctl on loop0p2 failed: Invalid argument
create/reload failed on loop0p2

可能表示您的映像太小。事实上,您的分区 2 是最后一个分区(分区顺序不对),它需要映像至少有 3902477664(= 2084368 + 3900393296)个 512 B 扇区,即至少 1,998,068,563,968 B。但是……

图片大小为 1,816,156,778,496 字节

显然太小了。

图像尺寸与原始硬盘非常吻合。

不,不是。您的任何一个磁盘都有 2,000,398,934,016 B,足以容纳所有分区。所有的HDD 应大小​​相同。

磁盘可能仅被部分读取dd或图像已以某种方式被截断,或者已通过其他方式损坏。

相关内容