質問
私のArmbianベースのOrange Pi Webサーバーがクラッシュしました(おそらく停電のため)。 ext4はより弾力性が高く、過去には通常そうだったので、これは良いと思いましたが、今回は何らかの理由で再起動するのではなく、ただ停止しました。確認してみると「ドライブ」(実際にはメモリーカード)であることがわかりました。「有効なファイルシステムがありません」。
カードを取り出し、バックアップイメージ(カードスペース32GBのうち4.5GB程度)を作成し、ヘックスエディタと各種プログラムで確認しました。また、メタデータ値を比較するためにArmbian ISOを同じメモリカードに焼き付けました。
私は数年前のシステムのコピーを別の(同じカードではない)に持っていますが、それ以来サーバーはかなり変わりました。少なくとも比較のためのより多くの情報を提供できることを願っています。
観察結果
いくつかの問題を発見しました。
ほとんどのプログラムは、カードにファイルシステムが含まれているかどうかを検出できません。いいえ、、、
fsck
などがtestdisk
機能しません。bad magic number
、または、wrong fs type, bad option, bad superblock, or missing codepage
またはfilesystem seems damaged
、bad relative sector
または他のブロックエラーについて文句を言います。スーパーブロックが破損しています(そしてバックアップが見つかりません)。ほとんどの項目は問題ないようですが、次の項目には明らかに異常な値または誤った値があります。もちろん、異なるパーティションサイズやインストール回数などの値を無視し、破損したシステムの値を新しいシステムと比較しました。疑問符のある期待値は、ドライブごとに不明な値、つまり間違っているかどうかわからない値です。
大地 | 実際の値 | 期待値 |
---|---|---|
グループあたりのブロック数 | 0 | 32768 |
各クリップグループ | 0 | 32768 |
グループあたりのインデックスノード数 | 5680 | ? 8160 |
最大インストール数 | 0x7777 | 0xffff |
マジックシグネチャー | 0x6753 | 0xef53 |
ファイルシステムの状態 |
答え1
ext2/3/4ファイルシステムは、同じファイルシステムに新機能が追加されたさまざまなバリエーションであるため、ディスク構造のほとんどは同じです。そのため、ファイルシステムの3つのバリエーションはすべて1つの魔法の値しか持っていません。 ext3の新しい主な機能はでありhas_journal
、 ext4にはextents
いくつかの追加機能が追加されました。
プログラムのコピーを入手するために、e2fsprogsソースコード(他のシステム/カード)をダウンロードしてビルドすることを検討してくださいfindsuper
。パーティションテーブルが破損しているかどうかにかかわらず、スーパーブロックでext2/3/4マジック値を見つけるデバイスのセクタスキャンを実行します。これは、各ファイルシステムが存在するパーティションの開始オフセットをバイト単位で識別することによってパーティションを再構築/復元するのに役立ちます。
答え2
議論したように、ext/ext2/3/4は非常に似ており、以下から派生します。超高速ファイルシステム/FFS(あなたも見ることができます1そして2)FFS(Unixの最初のファイルシステム)に共通のアノード、ブロック、ポインタ(間接ブロックなど)に基づいて同じ方法でデータをソートします。 LinuxはUnixの派生物であり、extはいくつかの追加機能を備えたFFSです。 LinuxファイルシステムAPIはカーネルに組み込まれており、すべてのバージョンのextと互換性があります。
inodeテーブルの再生成に関して、ファイルシステムの鍵は、各ファイルのデータを含むブロックへのポインタのリストです。このリストがない場合は、各ファイルに対応するブロックのみを推測できます。 Ext4は連続ブロックを割り当てるのに特に適しています(「マルチブロック割り当て」またはmballoc機能が含まれています。)したがって、この推測はおそらく大丈夫でしょう。ただし、断片化できる大容量ファイルの場合、作業が難しくなり、わかっている限り断片化されたチャンクからファイルを再構成するための既知のツールはありません。私はext2が連続したブロックを割り当てるのにうまくいくことを再び強調します(与えられたファイルのブロックはほぼ常に互いに近いです)。ここでは、ext2/3/4の下位レベルの構造について読むことができます。。断片化の場合はブロックを直接見つける必要がありますが、これは大容量ファイルでは非常に困難です。ファイルが大きいほど断片化される可能性が高くなります。
メタデータ(各ファイルに対応するinode)はデータ自体と同じくらい重要です。メタデータがない場合、データはもはや存在するとは見なされません。変更されていない方法でディスクにまだ存在していても、厳密に言うと、データブロックは次のように再構成できません。したがって、inodeテーブルがないと、大きな断片化されたファイルが失われます。
唯一のオプションは、データフラグメントツール(PhotoRecなど)とデータ構成の独自の経験的な方法を使用することです。これはファイルを再構成するのに役立ちます。
e2image
メタデータの重要性とそれがどれほど簡単に破損するかを考慮して、フルバックアップサイズの一部であるメタデータのみをバックアップするように定期的にスケジュールすることを検討できます。もちろん、バックアップ後にファイルシステムが変更されると、メタデータは関連性がなくなります。