GNU/Linux >> Linux の 問題 >  >> Linux

Ext4ファイルシステムのオフセットを見つける方法は?

ディスクの最初のセクターに書き込みまたは読み取りができない障害のあるハードドライブがあります。 I / Oエラーが発生するだけで、それだけです。ディスクには(ほとんど)問題ないように見える他の領域があります。
パーティション(ext4)をマウントして、回復したいファイルにアクセスできるかどうかを確認しようとしています。 mount以降 コマンドはoffsetをサポートします オプションを選択すると、パーティションテーブルが読み取りおよび書き込み不能であっても、ファイルシステムをマウントできるはずです。問題は、オフセットを見つける方法です。 ext4ツールのどれもこの特定の機能を持っていないようです。

承認された回答:

標準のオフセット自体はありません。もちろん、パーティションはどこからでも開始できます。ただし、最初のパーティションを探していて、それが多かれ少なかれデフォルトを受け入れて作成されたと仮定しましょう。従来のDOSパーティションテーブルを使用していると仮定すると、2つの場所が見つかります。

  1. (512バイト)セクター63から開始。これは非常に長い間伝統であり、誰かが4Kディスクを思い付くまで機能していました…
  2. (512バイト)セクター2048から開始します。これは、4Kディスクに対応するための新しい伝統です。
  3. ボーナスオプション!セクター56でのサーティング。これは、誰かが63スタートパーティションを移動して4Kセクターに合わせるとどうなるかです。

次に進むには、お気に入りの16進ダンプツールを選択して、ext4ディスクレイアウトについて少し学びます。特に、ext4が無視する1024バイトのパディングで始まります。次はスーパーブロックです。スーパーブロックは、オフセット0x38でマジックナンバー0xEF53をチェックすることで認識できます(スーパーブロックの開始から、またはパーティションの開始から0x438、または10進数で1080)。マジックナンバーはリトルエンディアンです。 したがって、実際には0x53EFとしてディスクに保存されます。

xxd -aを使用すると次のようになります。 :

0000000: 0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0000400: 0040 5d00 0084 7401 33a0 1200 33db a600 [email protected]]...t.3...3...
0000410: 4963 5300 0000 0000 0200 0000 0200 0000 IcS.............
0000420: 0080 0000 0080 0000 0020 0000 6637 0952 ......... ..f7.R
0000430: 6637 0952 0200 1600 53ef 0100 0100 0000 f7.R....S.......
0000440: 9938 f851 004e ed00 0000 0000 0100 0000 .8.Q.N..........

マウント(またはlosetup)にオフセットを指定するときは、スーパーブロックではなく、パディングが開始する場所にオフセットを指定する必要があることに注意してください。

関連:コメントに関するYouTubeの通知が見つかりませんか?

これで、最初のパーティションではない場合、または2つ(3つ)の予想される場所のいずれにもない場合は、基本的に魔法の番号0xEF53を検索できます。これがtestdisk (コメントで推奨)あなたのためになります。


Linux
  1. 解決方法:Ext3またはExt4パーティションに書き込めない

  2. Ext4ファイルシステムのiノードの数を増やす方法は?

  3. 現在マウントされているファイルシステムのマウントオプションを見つける方法

  1. 最大スタック サイズを確認するにはどうすればよいですか?

  2. Linux で「find」の結果を mv にパイプする方法

  3. / パーティションのすべてのスペースを使い果たしているものを見つけるにはどうすればよいですか?

  1. Linuxパーティションまたは論理ボリュームにファイルシステムを作成する方法

  2. Linuxでマウントされていないパーティションのサイズを見つける方法は?

  3. 読み取り専用環境でファイルシステムをマウントするには?