잘못된 맵 노드 링크를 수정하는 방법은 무엇입니까?

잘못된 맵 노드 링크를 수정하는 방법은 무엇입니까?

내 드라이브가 hfs+로 포맷되었지만 깨끗하지 않습니다.

mount -f -o rw예를 들어, 를 통해 드라이브를 마운트하려고 하면 dmesg다음 오류가 표시됩니다.

hfs: Filesystem was not cleanly unmounted, running fsck.hfsplus is recommended.
mounting read-only.

fsck.hfsplus따라서 다음과 같이 (부분적으로 ) hfsprogs문제를 해결 하려고 하면 :

$ fsck -dyf /media/sdd2
** /dev/sdd2
    Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
** Checking HFS Plus volume.
** Detected a case-sensitive catalog.
** Checking Extents Overflow file.
** Checking Catalog file.
   Invalid map node linkage
(4, 0)
** Volume check failed.
volume check failed with error 7 
    volume type is pure HFS+ 
    primary MDB is at block 0 0x00 
    alternate MDB is at block 0 0x00 
    primary VHB is at block 2 0x02 
    alternate VHB is at block 3906291630 0xe8d547ae 
    sector size = 512 0x200 
    VolumeObject flags = 0x07 
    total sectors for volume = 3906291632 0xe8d547b0 
    total sectors for embedded volume = 0 0x00 

-y또는 를 사용해 도 -f드라이브가 수리되지 않았습니다.

이는 이 오류에 대한 설명을 기반으로 합니다.블로그:

B*-Tree를 확인한 후 fsck는 계속해서 할당 맵을 확인합니다. fsck는 위에서 설명한 대로 헤드 노드를 확인합니다. 그런 다음 각 노드를 확인하여 매핑된 노드로 식별되고 올바른 수의 레코드가 있는지 확인합니다. 노드가 이러한 검사에 실패하면 fsck는 "잘못된 매핑된 노드"를 반환합니다. 그런 다음 fsck는 노드 높이가 0("잘못된 노드 높이")이 아닌지 확인합니다. 마지막으로 트리의 맨 아래까지 도달했고, mapSize(트리의 전체 레코드 수를 저장하고 노드가 처리될 때마다 감소됨)가 0이 아닌 경우,fsck는 고아 노드가 존재한다는 것을 알고 "잘못된 매핑된 노드 링크"를 반환합니다.

하지만 오류가 자체적으로 수정되지 않고 파티션을 쓰기 가능으로 마운트할 수 없기 때문에 오류를 수정하는 방법을 모르겠습니다. 이 오류를 해결하는 방법에 대한 아이디어가 있습니까?

PS 디스크 유틸리티에도 비슷한 문제가 있습니다.

답변1

카탈로그 파일(B-트리) 지정된 파일 시스템(예:고주파 FS+-r) options 를 지정하여 fsck예를 들면 다음과 같습니다.

$ fsck.hfsplus -fryd /dev/sdd2

현재 이 옵션은 지정된 파일 시스템에 새 카탈로그 파일을 위한 충분한 연속 공간이 있고 기존 카탈로그 파일의 리프 노드가 손상되지 않은 경우에만 작동합니다(즉, fsck가 각 카탈로그 파일을 탐색할 수 있음). b-트리의 요청된 노드가 성공했습니다.)

물론 데이터가 더 이상 손상될 위험을 원하지 않으면 디스크 작업을 수행하기 전에 백업(전체 이미지 디스크 덤프)을 만드십시오.

을 실행하여 더 많은 정보를 확인하세요 man fsck.hfsplus.

그래도 도움이 되지 않으면 다음과 같은 다른 도구를 사용하여 디스크를 복구해 보십시오.

관련 정보