「シングル」モードでディスクエラーが発生した後にBTRFSを回復/続行できますか?

「シングル」モードでディスクエラーが発生した後にBTRFSを回復/続行できますか?

btrfsを初めてテストして、特定のプロジェクトで使用できることを確認してください。

私は仮想マシンで働いています。

  1. 任意のサイズの3つのミニディスクを使用してボリュームを作成しました。

    mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd
    mount /dev/sdb /mnt/data
    
  2. テスト用に他のデバイスを追加

    btrfs device add /dev/sde /mnt/data 
    
  3. ディスクを埋めるために1GBのファイルの束を作成します。

    dd if=/dev/urandom of=1GB_07.bin bs=64M count=16 iflag=fullblock
    
  4. 仮想マシンからディスクの1つを削除して再起動しました。

  5. 読み取り専用モードで強制インストールができました

    mount -ro degraded /dev/sdb /mnt/data
    

すべてのファイルを見ることができます。別のディレクトリに同期しようとしましたが、私が作成した1Gファイルの1つをコピーできませんでした。言葉になりますね。消えたディスクにあります!

ここで失われたディスクとその中のファイルを「破棄」して読み取り/書き込みモードで再実行する方法はありますか?私はランダムサイズのディスクを含む箱を一緒に組み立てたかったのです。冗長性は私にとって重要ではなく、データミラーリングによるオーバーヘッドは望ましくありません。この箱に

一部のデータを含むドライブを紛失した場合は、そのドライブを交換/削除してソースから再同期して、BTRFSシステムから失われたファイルの新しいコピーをインポートしたいと思います。

馬になる?可能ですか?

ベストアンサー1

正確な説明によると、いいえ、メタデータツリーの一部も失われるため、不可能です(実際に運が悪い場合はブロックツリー(btrfs fi df出力のシステムブロック)も失われます。これは次のとおりです。ext4ファイルシステムのスーパーブロックとinodeテーブルの一部を削除します。メタデータの欠落は、読み取り専用でインストールする理由の1つです。

デフォルトでは、BTRFSはdupメタデータスキーマを使用します。つまり、各メタデータブロックのコピーを2つ保存しますが、両方とも同じデバイスに保存されます(複数のデバイスがある場合でも)。したがって、このメタデータプロファイルを使用してマルチデバイスBTRFSボリュームからデバイスを紛失すると、一部のメタデータが失われる可能性があります。メタデータツリーが破損していると、ファイルシステムの大部分が失われる可能性があり、ファイルシステムをまったくマウントできない可能性があります。

あなたがすべきことは、raid1メタデータスキーマを使用することです。真剣に、これは思ったほどパフォーマンスに影響を与えません。特に定期的にファイルシステムに書き込まないと、単一のデバイスエラーが原因でファイルシステム全体が破壊されるのを防ぎます。

これでデバイスにエラーが発生した場合は、次の手順を実行します。

  1. mount -o remount,rw,degradedファイルシステムの書き換えを強制するために使用されます。問題が解決しない場合は、ファイルシステムがこのように機能しないようにしてください。 真剣に、ファイルシステムのパフォーマンスが低下していますが、書き込み可能にすると非常に悪いことが起こります。
  2. 何らかの方法でエラーの影響を受けたすべてのファイルを削除します。現時点では、特にどの程度の断片化がある場合、何が影響を受けるかを確実に把握することは容易ではありません。
  3. これらのファイルとディレクトリを削除した後、btrfs device delete失敗したデバイスの削除を使用してください(デバイスが完全に欠落している場合はbtrfs device delete missing削除を使用できます)。この場合、使用するとbtrfs replace失敗する可能性があり、パフォーマンスが向上しません。また、を使用すると、btrfs device delete新しいデバイスが少なくとも古いデバイスと同じ大きさである必要があるという要件がなくなります。したがって、均一なサイズの装置を扱わないので、生活が容易になる。
  4. btrfs device add交換デバイスを追加し、メタデータbtrfs balance start -musage=100ブロックのバランスを再調整するために使用されます(欠落しているファイルをコピーすると、データブロックのバランスが自然に再調整されます)。
  5. または、同様のツールを使用してrsync現在失われているコンテンツをコピーし直してください。

おすすめ記事