如何恢复 iSCSI 磁盘

如何恢复 iSCSI 磁盘

我在 Linux 服务器 (RHEL7) 上运行 iSCSI 磁盘。该磁盘有一个普通的 ext4 分区,其中包含一个名为 disk01.img 的循环设备,该设备映射到具有 Windows NTFS 文件系统的虚拟磁盘。一切都很好,直到 Windows 和 Linux 系统之间的以太网连接中断。 Windows 决定应该检查 NTFS 卷,最终建议重新格式化它。在接受之前,我将文件 disk01.img 保存到 Linux 服务器上的 /savedir 中。我现在正在尝试恢复 disk01.img,但遇到了问题。

[root@server ~]# losetup -P /dev/loop1 /savedir/disk01.img
[root@server ~]# mount -t ntfs /dev/loop1 /mount/point
Failed to read bootsector (size=0)
Failed to sync device /dev/loop1: Input/output error
Failed to mount '/dev/loop1': Ongeldig argument
The device '/dev/loop1' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

我想 NTFS 卷可能已损坏,我需要将文件 disk01.img 添加到具有空 NTFS 分区的 USB 磁盘上,然后将 USB 磁盘移植到 Windows,运行 chkdsk,如果失败,请尝试使用某些东西恢复文件就像照片记录一样。或者我只是使用了错误的代码?

编辑:fdisk 的结果(荷兰语)

[root@server ~]# fdisk -l /savedir/disk01.img

Schijf /savedir/disk01.img: 750.2 GB, 750155323392 bytes, 1465147116 sectoren
Eenheid = sectoren van 1 * 512 = 512 bytes

Sectorgrootte (logischl/fysiek): 512 bytes / 512 bytes
in-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes

[root@server ~]#

编辑2:NTFS卷已损坏,因此losetup -P正在工作,但产生了一个空分区。我可能需要使用 iSCSI 扇区的偏移量来挂载 /savedir/disk01.img,例如

mount -o loop,offset=512 /savedir/disk01.img /mount/point

但我很难找到正确的偏移量(寻找 NTFS 签名,将 *.img 文件的十六进制转储与新创建的虚拟磁盘的十六进制转储进行比较)。顺便说一句:我还将 disk01.img 的 dd 副本移植回 Windows,试图解析这些文件。仍在处理这个繁琐的操作。在 disk01.img 上找到 NTFS 文件系统的开头似乎是一个更好的选择。

编辑 3. 运行 TestDisk 4 次后,似乎存在我无法解决的几何问题。输出:

losetup -P /dev/loop1 /savedir/disk01.img
testdisk /dev/loop1

Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors
... ... ...
  Linux filesys. data            0 1465147111 1465147112
  Linux filesys. data            0 1465147111 1465147112
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
  MS Data                100452352 1526511615 1426059264
  Linux filesys. data            0 1465147111 1465147112
... ... ...
  Linux filesys. data    730080712 2195227823 1465147112
  Linux filesys. data    730090720 2195237831 1465147112
... ... ...
  Linux filesys. data    730093536 2195240647 1465147112
  Linux filesys. data            0 1465147111 1465147112
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
  MS Data               1346517247 2772576510 1426059264

------------------------------------------------------

-- After Reboot --

  Linux                          0 1465147111 1465147112
  Linux                          0 1465147111 1465147112
check_FAT: can't read FAT boot sector
Invalid FAT boot sector
 0 D FAT16 LBA             3179978961 3795078107  615099147
  FAT16 LBA             3179978961 3795078107  615099147
  Linux                          0 1465147111 1465147112
Invalid FAT boot sector
 0 D FAT12                  202831329 1489073369 1286242041
  FAT12                  202831329 1489073369 1286242041
  Linux                          0 1465147111 1465147112
Invalid NTFS or exFAT boot
 0 D HPFS - NTFS           2833862451 3582746086  748883636
  HPFS - NTFS           2833862451 3582746086  748883636
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
  HPFS - NTFS            100452352 1526511615 1426059264


Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors

The harddisk (750 GB / 698 GiB) seems too small! (< 1943 GB / 1809 GiB)
Check the harddisk size: HD jumper settings, BIOS detection...

The following partitions can't be recovered:
     Partition               Start        End    Size in sectors
>  HPFS - NTFS            100452352 1526511615 1426059264
   FAT12                  202831329 1489073369 1286242041
   Linux                  730069008 2195218167 1465149160
   Linux                  730071112 2195218223 1465147112
   Linux                  730079744 2195226855 1465147112
   Linux                  730080712 2195227823 1465147112
   Linux                  730090720 2195237831 1465147112
   Linux                  730093536 2195240647 1465147112
   HPFS - NTFS           1346517247 2772576510 1426059264
   HPFS - NTFS           1465145007 2930290014 1465145008


NTFS, blocksize=4096, 730 GB / 679 GiB

--------------------------------------

-- After adding TestDisk MBR, Reboot

  Linux                          0 1465147111 1465147112
  Linux                          0 1465147111 1465147112
  Linux                          0 1465147111 1465147112
  Linux                          0 1465147111 1465147112
check_FAT: can't read FAT boot sector
Invalid FAT boot sector
 0 D FAT16 LBA             3179978961 3795078107  615099147
  FAT16 LBA             3179978961 3795078107  615099147
  Linux                          0 1465147111 1465147112
  Linux                          0 1465147111 1465147112
Invalid FAT boot sector
 0 D FAT12                  202831329 1489073369 1286242041
  FAT12                  202831329 1489073369 1286242041
  Linux                          0 1465147111 1465147112
Invalid NTFS or exFAT boot
 0 D HPFS - NTFS           2833862451 3582746086  748883636
  HPFS - NTFS           2833862451 3582746086  748883636
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 1 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 1 (HD)
  HPFS - NTFS            100452352 1526511615 1426059264

-------------------------------------

-- After Reboot, running Deeper Analysis ---

Disk /dev/loop1 - 750 GB / 698 GiB - 1465147116 sectors


  No partition          36028797018963967 1465147115 1465147117

Enter the ending sector 

--------------------------------------

答案1

挂载失败/dev/loop1表明该映像文件不是有效的分区映像。由于它是用作 iSCSI 磁盘的映像的副本,因此我希望它是包含分区表的完整磁盘映像。

然而,fdisk -l /savedir/disk01.img表示不存在可识别的分区表。即使 iSCSI 磁盘用作 Microsoft 存储空间设置的一部分,也应该至少有存在分区。

即使您有旧版本fdisk只能识别 MBR 分区表,并且该映像使用 GPT 分区表,它至少应该检测到 GPT保护性MBR及其类型为 0xee 的虚拟分区条目。

这表明分区表可能已损坏或被覆盖。您可能想尝试testdisk使用全磁盘循环设备,看看它是否可以找到文件系统的开头和结尾并为您重建分区表。

testdisk /dev/loop1

或者,现代版本的 Windows 通常将磁盘第一个分区的开头放置在距离磁盘开头正好 1 MiB 的位置。所以你可以尝试:

mount -o loop,offset=1M /savedir/disk01.img /mount/point

相关内容