間違ったマップノードリンクを修正する方法は?

間違ったマップノードリンクを修正する方法は?

私のドライブは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(ツリー内のレコードの総数を格納し、ノードが処理されるたびに減少)がゼロでない場合、fsck は、孤立ノードが存在することを認識し、「間違ったマッピングされたノードリンク」を返します。

しかし、エラーはそれ自体は修正されず、パーティションを書き込み可能にマウントできないため、エラーを修正する方法がわかりません。このエラーを解決する方法についてのアイデアはありますか?

PSディスクユーティリティにも同様の問題があります。

答え1

カタログファイル(Bツリー)指定されたファイルシステム(例:高周波FS+-r) options を指定して、たとえばfsck次のようになります。

$ fsck.hfsplus -fryd /dev/sdd2

現在、このオプションは、指定されたファイルシステムに新しいカタログファイルに十分な連続スペースがあり、既存のカタログファイルのリーフノードが破損していない場合にのみ機能します(つまり、fsckは各カタログファイルを参照できます)。 bツリーの要求されたノードが成功しました。)

もちろん、データが破損する危険がない場合は、ディスク操作を実行する前にバックアップ(フルイメージディスクダンプ)を作成してください。

を実行して詳細を確認してくださいman fsck.hfsplus

それでも役に立たない場合は、次のような他のツールを使用してディスクを修復してみてください。

関連情報