겹치는 FreeBSD/UFS 파티션을 수정하는 방법은 무엇입니까?

겹치는 FreeBSD/UFS 파티션을 수정하는 방법은 무엇입니까?

FreeBSD 슬라이스가 있고 UFS로 포맷되었으며 pfsense 상자의 /home에 마운트된 Seagate 1TB 하드 드라이브 [ST1000LM010-9YH146]가 있습니다.

일부 하드웨어를 교체하는 동안 실수로 Win 7 노트북에 연결된 FreeAgent GoFlex 케이블(펌웨어 포함)이 드라이브와 함께 제공되었습니다. 새 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 파티션이 아닌 UFS로 포맷된 FreeBSD 파티션입니다.

답변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 섹터?)로 편집하고 동일한 값으로 0x294-0x29b도 슬라이스해야 합니다.

NTFS에 대한 MBR 항목을 지우고 ID 0x5A를 사용하여 나머지 UFS 항목을 복구합니다.

관련 정보