
過去にメモリ使用量が高かったため、いくつかの大規模なファイル システム (約 50 TB) で 'xfs_repair' をテストする予定です。プログラムをテストできるのは正常なファイル システムのみでしたが、破損したシステムでテストするのもよいでしょう。
では、ファイル システムを破損させる最善の方法は何でしょうか。その方法で毎回同じ破損が繰り返される場合は、追加のクレジットが付与されます...
2006年頃に私が何を意味しているかを人々に理解してもらうために
「マルチテラバイトのファイルシステムを正常にチェックまたは修復するには、次のものが必要です。
- 64ビットマシン
- 64 ビット xfs _ repair/xfs _ check バイナリ
- ファイルシステム1テラバイトあたり約2GBのRAM
- ファイルシステム内の 100 万個の i ノードあたり 100 ~ 200 MB の RAM。
xfs_repair は通常これよりも少ないメモリを使用しますが、これらの数値は、80% 以上使用されている大規模なファイルシステムを修復するために必要なメモリの大まかな数値を示します。
ちなみに、前回この問題が社内で発生したとき、問題の 29 TB のファイルシステムを修復するには、約 75 GB の RAM+スワップが必要でした。」
答え1
xfs_dbにはblocktrashオプションがあり、
xfs_repair(8)
ランダムに選択されたファイルシステム メタデータ ブロックを破棄します。破棄は、選択されたブロック内のランダムに選択されたビットに対して行われます。このコマンドは、xfs_db のデバッグ バージョンでのみ使用できます。テストやに役立ちますxfs_check(8)
。
例えば
xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/xfstest/testfs
答え2
dd は、ファイルシステムが存在するデバイスにブロックします。これをスクリプト化して繰り返し実行できます。ランダムな場所にランダムなブロックをいくつか追加して、次に進みます。
答え3
ブロック デバイスの最初の 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 修復をテストできます。