잘못된 맵 노드 연결을 수정하는 방법은 무엇입니까?

잘못된 맵 노드 연결을 수정하는 방법은 무엇입니까?

내 드라이브가 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*-트리가 확인되면 fsck는 할당 맵 확인으로 이동합니다. fsck는 위에서 설명한 대로 헤더 노드를 확인합니다. 그런 다음 각 노드를 검사하여 자신을 맵 노드로 식별하고 적절한 수의 레코드가 있는지 확인합니다. 노드가 실패하면 fsck는 "잘못된 맵 노드"를 반환합니다. 그런 다음 fsck는 노드 높이가 0("잘못된 노드 높이")이 아닌지 확인합니다. 마지막으로 트리 최하단까지 도달했고, 트리에 기록된 전체 레코드 수를 저장하며 노드를 처리할 때마다 감소하는 mapSize가 0이 아닌 경우,fsck는 분리된 노드가 있음을 알고 "잘못된 맵 노드 연결"을 반환합니다.

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

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

답변1

카탈로그 파일(B-트리) 지정된 파일 시스템(즉,HFS+-r) 에 대한 옵션을 지정하여 fsck예를 들면 다음과 같습니다.

$ fsck.hfsplus -fryd /dev/sdd2

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

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

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

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

관련 정보