如何修复重叠的 FreeBSD/UFS 分区?

如何修复重叠的 FreeBSD/UFS 分区?

我有一个希捷 1TB 硬盘 [ST1000LM010-9YH146],它有一个 FreeBSD 片,格式化为 UFS,并安装在 pfsense 盒子上的 /home 处。

在更换一些硬件时,驱动器无意中插入了 FreeAgent GoFlex 电缆(带有固件)并插入了 Win 7 笔记本电脑。当我去设置一个新的 pfsense 盒子时,它无法安装并且有一个 NTFS 分区与 UFS 分区重叠。此外,它从未用作启动驱动器,只是我移动一些文件时 /home 的临时位置。

该驱动器上有一些不可替代的东西,我希望能够安装它来恢复文件。我对分区、安装和卸载有足够的了解,但不要相信自己能够在没有指导的情况下调整几何形状。

从测试磁盘日志:

Disk /dev/ad6 - 1000 GB / 931 GiB - CHS 1938021 16 63
Analyse cylinder 1938021/1938020: 100%
Read error at 1938020/1/1 (lba=1953524223)

  No partition             0   0 35 1938020  15 29 1953525100 [/seagate-1tb]
Warning: Incorrect number of heads/cylinder 255 (NTFS) != 16 (HD)
  HPFS - NTFS              0   1  1 1938015  15 63 1953520065 [FreeAgent GoFlex Drive]

Disk /dev/ad6 - 1000 GB / 931 GiB - CHS 1938021 16 63

Warning: the current number of heads per cylinder is 16 but the correct value may be 128.
You can use the Geometry menu to change this value.
It's something to try if
- some partitions are not found by TestDisk
- or the partition table can not be written because partitions overlaps.


Disk /dev/ad6 - 1000 GB / 931 GiB - CHS 1938021 16 63
Analyse cylinder 1938021/1938020: 100%
Read error at 1938020/15/63 (lba=1953525167)

  Solaris /home                 34 1953525133 1953525100 [/seagate-1tb]



Disk /dev/ad6 - 1000 GB / 931 GiB - CHS 1938021 16 63
Analyse cylinder  1747/1938020: 00%


Warning: Incorrect number of heads/cylinder 255 (NTFS) != 16 (HD)
Warning: Incorrect number of heads/cylinder 255 (NTFS) != 16 (HD)
  MS Data                       63 1953520127 1953520065 [FreeAgent GoFlex Drive
  Solaris /home                 66 1953525165 1953525100
  Solaris /home                146 1953525245 1953525100 [/seagate-1tb]
  Solaris /home                178 1953525277 1953525100
  Solaris /home             376290 1953901389 1953525100
  Solaris /home             376402 1953901501 1953525100
  Solaris /home             752514 1954277613 1953525100
  Solaris /home             752626 1954277725 1953525100
  Solaris /home            1128738 1954653837 1953525100
  Solaris /home            1128850 1954653949 1953525100
  Solaris /home            1504962 1955030061 1953525100
  Solaris /home            1505074 1955030173 1953525100
  Stop
TestDisk 6.13, Data Recovery Utility, November 2011
Christophe GRENIER <[email protected]>
http://www.cgsecurity.org

Disk /dev/ad6 - 1000 GB / 931 GiB - CHS 1938021 16 63

The harddisk (1000 GB / 931 GiB) seems too small! (< 1000 GB / 932 GiB)
Check the harddisk size: HD jumpers settings, BIOS detection...

The following partitions can't be recovered:
     Partition               Start        End    Size in sectors
>  Solaris /home                146 1953525245 1953525100 [/seagate-1tb]
   Solaris /home                178 1953525277 1953525100
   Solaris /home             376290 1953901389 1953525100
   Solaris /home             376402 1953901501 1953525100
   Solaris /home             752514 1954277613 1953525100
   Solaris /home             752626 1954277725 1953525100
   Solaris /home            1128738 1954653837 1953525100
   Solaris /home            1128850 1954653949 1953525100
   Solaris /home            1504962 1955030061 1953525100
   Solaris /home            1505074 1955030173 1953525100

[ Continue ]
UFS2, 1000 GB / 931 GiB

我目前无法再次运行 testdisk,pfsense 升级更改了一些库,但我应该很快就能修复该问题。

提前致谢!我非常感谢任何帮助!

编辑:澄清一下,它是用 UFS 格式化的 FreeBSD 分区,而不是 UFS 分区。

答案1

在 UFS2 分区上,扇区 2 应包含部分/切片列表

sector 1 is boot record 0x200 bytes

sector 2 (count bytes started from beginning of partition):

0x200: header/name usually "WEV" upto "amnesiac"
..
0x290: slice a (root)
       0x294: slice size (in sector)
       0x298: start/offset (in sector)
0x2a0: slice b (swap)
0x2b0: slice c (alldisk)
       0x2b4: sum of all slices size (whole partition)
       0x298: 0
0x2c0 - 0x3f0: slice d - w

在您的情况下,您应该将切片 c 编辑为分区的大小(1953525100 个扇区?),同时对 a 0x294-0x29b 进行切片,具有相同的值。

清除 NTFS 的 MBR 条目,并修复 ID 为 0x5A 的剩余 UFS 条目。

相关内容