ファイルシステムを破壊する方法


8

以前はメモリ使用量が多かったため、いくつかの大きなファイルシステム(約50 TB)で「xfs_repair」をテストします。正しいファイルシステムでのみプログラムをテストできましたが、破損したシステムでテストすることをお勧めします。

では、ファイルシステムを破損させる最善の方法は何でしょうか。メソッドが繰り返し同じ破損を毎回与える場合の追加のクレジット....

2006年に私が何を意味しているのかを人々に知らせるために

「マルチテラバイトのファイルシステムで修復を正常に確認または実行するには、次のものが必要です。

  • 64ビットマシン
  • 64ビットxfs _ repair / xfs _チェックバイナリ
  • ファイルシステムのテラバイトあたり最大2GBのRAM
  • ファイルシステムの100万iノードあたり100〜200 MBのRAM。

xfs_repairは通常これよりも少ないメモリを使用しますが、これらの数値は、80%を超えるフルファイルシステムが修復に必要とする可能性があるものについて、大まかな数値を与えます。

FWIW、これが最後に内部で発生したとき、問題の29 TBのファイルシステムは、修復に最大75 GBのRAM +スワップを必要としました。」


興味深い質問ですが、見積もりの​​フォーマットを改善できますか?
Coops、

もしそうなら、私は方法がわかりませんか?
ジェームズ

`で囲んでみてください
ブラッドギルバート

これは興味深いテストです。結果をどこかに投稿するつもりですか?
3dinfluence 2009

まあ私はおそらくxfsメーリングリストに投稿し、この質問を結果でいつでも編集できます。
ジェームズ

回答:


12

xfs_dbには、オプションのblocktrashがあります。

ランダムに選択されたファイルシステムのメタデータブロックをゴミ箱に移動します。選択したブロック内のランダムに選択したビットにトラッシングが発生します。このコマンドは、xfs_dbのデバッグバージョンでのみ使用できます。テストxfs_repair(8)やに役立ちますxfs_check(8)

例えば

xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/xfstest/testfs


2

ddは、ファイルシステムが存在するデバイスをブロックします。これをスクリプト化して、繰り返し可能にすることができます。ランダムな場所にいくつかのランダムなブロックを配置してから、次に進みます。


ほとんどが空の50TBのファイルシステムでは、システムを破壊するために静かに幸運である必要がありますか?
ジェームズ

まあ、あなたはちょうど十分なランダムブロックを使用する必要があります:-)。いずれにせよ、誕生日のパラドックスが原因で、「衝突」はおそらくあなたが思っているよりも起こりそうです:en.wikipedia.org/wiki/Birthday_Paradox
sleske 2009

0

ブロックデバイスの最初の512バイト(MBRおよびパーティションテーブル)を上書きしてみることができます。

最初にバックアップします。

dd if=/dev/device bs=512 count=1 of=backup.bin

後でゼロにする:

dd if=/dev/zero bs=512 count=1 of=/dev/device

その後はマシンが起動しないはずです。ライブCDを使用してXFS修復をテストできます。


実行時間とメモリ使用量はファイルの数とファイルシステムのサイズに依存しているため、比較的小さな破損が発生します
James

これは512バイトの破損です。これは、ファイルシステムがどのように見えるかについての情報なしにファイルシステムが回復できるかどうかをチェックするだけです-xfsが予備のスーパーブロックをどこかに格納していない場合。
towo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.