如何“修复”具有 512 字节扇区的磁盘,并使用转换为 4k 扇区的盘柜进行格式化

Hap*_*Dog 5 hard-drive mbr external-hard-drive

我有一个 1TB 硬盘,扇区为 512 字节,我已经通过 USB 磁盘盒使用它很多年了。然而,外壳现在已经死了。

当我将其转移到新的附件时,我发现 Windows 无法读取它 - 它只是显示为“本地磁盘”。

通过各种研究,我发现原因是原始 USB 外壳将磁盘上的 512 字节扇区转换为 4k 扇区,并将其呈现给外界。新机柜没有这样做,这就是无法读取磁盘的原因。

我发现了一个听起来像类似问题的问题(How to Correct 512-byte扇区MBR on a 4096-byte扇区磁盘?),但是(a)从我的阅读来看,这听起来与我的情况相反;(b) 它没有描述解决问题所需的实际步骤(只是一般方法)。


理论

除了试图找到另一个进行相同类型转换的外壳(感觉就像只是把罐子踢到路上,而且是不必要的开支)之外,据我所知,解决方案是修复 MBR 中的值,以便它们反映了真实的 512 字节磁盘几何结构,而不是之前感知的 4k 几何结构。

由于分区表大小都是根据扇区数定义的,因此我需要转换现有值,这些值以 4k 扇区指定大小(即ByteOffset = N x 4096),以便它们包含N512 字节扇区的等效值(即ByteOffset = N x 512)。换句话说,我需要将每个值乘以 8。

问题 1:我是否正确 - 这是我需要做的全部事情,还是比这更复杂?


实践

假设上述解决方案是正确的,我真正要求的是是否有任何人都可以提供的工具或一组明确的说明,以便我能够对磁盘进行这些更改。风险越小越好!(例如,通过输入十进制数字直接编辑 MBR 字段的工具比直接在磁盘上处理十六进制值更好。)

问题 2:我应该使用什么工具(根据上述标准)?

Q3:我需要编辑哪些字段/偏移量?(磁盘有一个分区,可填满整个磁盘。)

请注意,我可以访问以下系统:Windows XP、Windows 10、Ubuntu 15.4。我更喜欢 Windows 解决方案,但如果有必要的话,Linux 解决方案也可以 - 我很喜欢使用命令行。

另外,我过去曾经做过字节级手动磁盘编辑任务,所以如果确实没有更好的方法来解决这个问题,这是可能的。


更新

外部驱动器是 Dynamode 3.5" USB 2.0 外壳,就像这个一样。

根据要求,这是 Linux 命令的输出fdisk

root@buttons:~# fdisk -l /dev/sdb

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 0x000210df

Device     Boot Start        End    Sectors   Size Id Type
/dev/sdb1  *     2048 1953523711 1953521664 931.5G  7 HPFS/NTFS/exFAT

root@buttons:~# fdisk -l /dev/sdb1

Disk /dev/sdb1: 931.5 GiB, 1000203091968 bytes, 1953521664 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: 0x2052474d

Device      Boot      Start        End    Sectors   Size Id Type
/dev/sdb1p1 ?       6579571 1924427647 1917848077 914.5G 70 DiskSecure Multi-Boot
/dev/sdb1p2 ?    1953251627 3771827541 1818575915 867.2G 43 unknown
/dev/sdb1p3 ?     225735265  225735274         10     5K 72 unknown
/dev/sdb1p4      2642411520 2642463409      51890  25.3M  0 Empty

Partition table entries are not in disk order.
Run Code Online (Sandbox Code Playgroud)

Hap*_*Dog 1

这不是对我的问题的直接答案,因为它没有对磁盘进行正确的修复(这是我最感兴趣的)。

然而,从实际的角度来看,它以相当缓慢和迂回的方式解决了问题。

我发现了 CG Security 推出的一款名为TestDisk的免费工具,它似乎可以在几乎任何操作系统上运行。可以指示该工具使用任意扇区大小读取磁盘,这意味着我们可以覆盖驱动器报告的物理扇区大小并从中恢复数据。

如何使用

下载并安装此命令行实用程序后,运行它,决定应如何创建日志文件,然后:

  1. 从列表中选择磁盘。确保选择物理磁盘而不是逻辑驱动器
  2. 选择Intel分区类型。
  3. 选择该Geometry选项并将其Sector Size从更改5124096。这将使 TestDisk 能够正确读取磁盘。
  4. 选择Advanced哪个将您带到文件实用程序,然后 - 如果有多个分区 - 选择您感兴趣的分区。如果您计划稍后重建磁盘,您还应该在这一阶段记下分区大小。
  5. 选择List查看磁盘上的文件。
  6. 从这里您可以浏览文件系统,选择单个文件或文件组,并将它们复制到另一个位置(即复制到不同的磁盘)。
  7. 要复制整个磁盘,请从根目录中选择a所有文件,然后大写C复制所选文件,然后浏览到目标磁盘并C再次按大写复制所有文件。
  8. 如果有多个分区,请重复此操作。

您现在已经备份了整个磁盘!因此,您可以使用标准操作系统工具根据以前的布局擦除和重新分区原始磁盘(由于没有磁盘盒转换扇区,这将自动使用正确的几何结构)并将文件复制回来以完成重建。

请注意,上述说明仅恢复磁盘分区和文件结构,但如果您还需要引导扇区、使用非 NTFS 驱动器、具有需要位于特定磁盘位置(罕见)的文件或使用其他更复杂的文件,则这可能还不够gubbins(例如替代数据流)。使用此工具可能会或可能无法解决所有这些问题,但不能使用上述说明。


(请注意,我真的不想接受这个作为答案,因为它实际上是在回避我的问题而不是解决它。但是,我在这里指出它是一种替代方法。)