ext4パーティションの半分をマウントできますか?

ext4パーティションの半分をマウントできますか?

ハードウェアRAIDアレイがあり、移行中にディスクに障害が発生し、回復せずにコントローラに障害が発生しました。私はアレイの現在の状態(約160 GBは移行され、残りの5.TBは移行されません)を正しくマッピングする小さなPythonスクリプトを作成し、その情報を使用してファイルシステムを新しいディスクに再構築します。このプロセスには時間がかかることがあります。

したがって、私の質問は、最初の250 GBを復元したときに処理する前にファイルシステムのこの部分をマウントし、スクリプトが正しい操作を実行していることを確認できるかどうかです(例:ブロック/ストライプの順序が正しい場合は、次のようになります) )。ごみ)全体の配列?それでは、インストールするにはどのインストールコマンドを実行する必要がありますか?

さて、パーティションテーブルではなくファイルシステムだけが必要だとします。

編集:エラーのより具体的な詳細:4つのディスクRAID 5があり、オンラインで容量を5つのディスクに拡張しましたが、新しいディスクにエラーが発生しました。

これまでに私がしたことは、移行が到達した点を計算することです(A xor B xor C == Dを使用し、古い配列の場合はtrue、新しい配列の場合はfalse、空のスペースの結果を無視)

古いストライプサイズ、新しいストライプサイズ、および移行されたサイズを使用して、アレイ間の「空きスペース」を計算します。一致するものが出るまで、空のスペースブロックの終わりと移行されたブロックの終わりを比較して、それを再確認します。設立する。

今では、ストライピングを再構築し、配列の2つの部分を互いに貼り付け、新しいディスクに書き込むコードを書いています。理想的には、コードを書かずにこのコードの結果を確認できることを願っています。フル6TBアレイ。最初の250 GBを記録すると、復元が完了するまで数日待たずにアレイ全体の復元プロセスを確認して具体化できます。

答え1

パーティションの半分をマウントできません。半分のパーティションは、ファイルシステムのファイルの半分を含むコンテナではなく、本質的には使用できません。ファイルにアクセスするには、パーティション全体に分散できる複数のディレクトリとinodeを参照する必要があります。

ただし、パーティションの先頭を確認して、有効なファイルシステムヘッダーがあるかどうかを確認できます。これには、パーティションの先頭(最初の数キロバイト)のみが必要です。file -s /dev/something特定のデバイスにパーティションが含まれているかどうかを示します(再組み立て中のRAIDアレイのデバイスエントリがすでにあると仮定します)。

答え2

試してみる必要がありますが、読み取り専用の方法を使用する必要があります。ファイルシステムスーパーブロックにまだアクセスできる場合は、それをマウントできる必要があります。ファイルシステムをブラウズすると、多くのIOエラーが発生し、誤ったファイル名と内容が印刷される可能性がありますが、これはどのような場合でも取得するための最良の方法です(特定のtestdiskファイル形式を調べるツールを除く)。

私は努力します:

  • tune2fs -l <blockdevice>:機能する場合は、インストールできる必要があります。
  • `mount -o ro /mnt/recovery

答え3

移行について詳しく説明してください。アレイを拡張または縮小したか、ディスクを追加または削除しましたか?エラーターゲットの代わりに線形およびスナップショットを使用するため、各実験の別のコピーを作成することなく、仮想fsckレイヤでこのような実験を実行できます。debugfsに記載されているものと同様の方法を使用してください。https://raid.wiki.kernel.org/index.php/Recovering_a_failed_software_RAID#Making_the_harddisks_read-only_using_an_overlay_file

取り付けは、「ブロック/ストライプの順序が間違っていることを確認する」などの良い方法ではない可能性があります。アレイが別のディスクに大きくなると、古いデータと新しいデータ表現が重なっている領域がなければ、完全な回復が可能になります。

関連情報