So beschädigen Sie ein Dateisystem

8

Ich werde 'xfs_repair' auf einigen großen Dateisystemen (ca. 50 TB) testen, da in der Vergangenheit die Speichernutzung hoch war. Während ich das Programm nur auf korrekten Dateisystemen testen konnte, wäre es gut, sie auf einem beschädigten System zu testen.

Was wäre der beste Weg, um ein Dateisystem zu beschädigen? Zusätzliches Guthaben, wenn die Methode jedes Mal wiederholt dieselbe Beschädigung verursacht ....

Um den Leuten eine Vorstellung davon zu geben, was ich 2006 meine, ish

"Um die Reparatur eines Multi-Terabyte-Dateisystems erfolgreich zu überprüfen oder auszuführen, benötigen Sie:

  • eine 64-Bit-Maschine
  • eine 64-Bit-xfs-Reparatur / xfs-Check-Binärdatei
  • ~ 2 GB RAM pro Terabyte Dateisystem
  • 100-200 MB RAM pro Million Inodes im Dateisystem.

xfs_repair benötigt normalerweise weniger Speicher als dieser, aber diese Zahlen geben Ihnen einen Überblick darüber, was ein großes Dateisystem, das zu> 80% voll ist, zur Reparatur benötigen kann.

FWIW, das letzte Mal, als dies intern auftauchte, benötigte das betreffende 29-TB-Dateisystem ~ 75 GB RAM + Swap, um es zu reparieren. "

James
quelle
Interessante Frage, aber kann die Formatierung des Zitats verbessert werden?
Coops
Wenn ja, weiß ich nicht wie?
James
Versuchen Sie es mit `
Brad Gilbert
Dies ist ein interessanter Test. Ich habe vor, die Ergebnisse irgendwo zu veröffentlichen?
3dinfluence
Nun, ich werde wahrscheinlich auf der xfs-Mailingliste posten und ich könnte diese Frage immer mit den Ergebnissen bearbeiten.
James

Antworten:

12

xfs_db hat eine Option blocktrash welche

Zufällig ausgewählte Metadatenblöcke des Dateisystems in den Papierkorb werfen. Bei zufällig ausgewählten Bits in den ausgewählten Blöcken tritt ein Papierkorb auf. Dieser Befehl ist nur in Debugging-Versionen von xfs_db verfügbar. Es ist nützlich zum Testen xfs_repair(8)und xfs_check(8).

Zum Beispiel

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

James
quelle
2

dd blockiert das Gerät, auf dem sich das Dateisystem befindet. Sie können dies so schreiben, dass es wiederholbar ist. Nur ein paar zufällige Blöcke an zufälligen Orten, dann weiter.

Posipiet
quelle
In einem 50-TB-Dateisystem, das größtenteils leer ist, müssten Sie sicher Glück haben, um das System zu beschädigen?
James
Nun, du musst nur genug zufällige Blöcke verwenden :-). In beiden Fällen ist eine "Kollision" aufgrund des Geburtstagsparadoxons wahrscheinlich wahrscheinlicher als Sie denken: en.wikipedia.org/wiki/Birthday_Paradox .
Sleske
0

Sie können versuchen, die ersten 512 Bytes (MBR und Partitionstabelle) des Blockgeräts zu überschreiben.

Sichern Sie es zuerst:

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

Und später auf Null:

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

Ihr Computer sollte danach nicht mehr starten. Sie können die XFS-Reparatur mithilfe einer Live-CD testen.

Karolis T.
quelle
Ich möchte eine relativ kleine Beschädigung haben, da Laufzeit und Speichernutzung von der Anzahl der Dateien und der Größe des Dateisystems abhängen
James
Dies sind nur 512 Byte Korruption. Hiermit wird nur überprüft, ob das Dateisystem wiederhergestellt werden kann, ohne dass Informationen darüber vorliegen, wie das Dateisystem aussehen soll - wenn xfs nicht irgendwo Ersatz-Superblocks verstaut hat.
Zwei