Kann btrfs fehlerhafte Blöcke verfolgen/vermeiden?

Kann btrfs fehlerhafte Blöcke verfolgen/vermeiden?

Ich habe eine Festplatte, der ich nicht ganz vertraue, die ich aber trotzdem verwenden möchte (Burstcoin-Mining, wo ich nur ein paar Cent verliere, wenn ich einen fehlerhaften Block in einer Datei bekomme).

Wie kann ich btrfs anweisen, bestimmte Blöcke als fehlerhaft zu markieren (z. B. in badblocksder Ausgabe)?

Wenn ich Blöcke nicht vorab als fehlerhaft markieren kann, werden dann alle dadurch identifizierten fehlerhaften Blöcke btrfs scrubin Zukunft vermieden, wenn die Datei, die sie verwendet, gelöscht wird?

Antwort1

Traurigerweise Nein.

btrfs verfolgt keine fehlerhaften Blöcke und btrfs scrubverhindert nicht, dass die nächste Datei auf dieselben fehlerhaften Blöcke trifft.

Dieser Beitrag in der Mailingliste von btrfsschlägt vor, ext4 zu verwenden mit mkfs.ext4 -c(diesem„erstellt eine Liste mit fehlerhaften Blöcken und verwendet diese Sektoren dann nicht“). Der Vorschlag,btrfs über mdadm 3.1+ mit RAID0 funktioniert nicht.

Es scheint, dassLVM unterstützt keine Badblock-Neuzuweisung.

Eine Problemumgehung besteht darin, ein Gerät zu bauen, das bekanntermaßen fehlerhafte Blöcke ausschließt:btrfs über dmsetup.


Das btrfs Projektideen-Wikisagt:

Nicht beansprucht – noch keine Patches – Noch nicht im Kernel

Derzeit verfolgt btrfs keine fehlerhaften Blöcke, also Festplattenblöcke, die mit hoher Wahrscheinlichkeit Daten verlieren, die in sie geschrieben werden. Btrfs sollte eine Liste im Ausgabeformat von „badblocks“ akzeptieren, sie in einem neuen B-Baum speichern (oder vielleicht im aktuellen Extent-Baum mit einem neuen Flag), alle in den Blöcken enthaltenen Daten verschieben und diese Blöcke reservieren, damit sie nicht für zukünftige Zuweisungen verwendet werden können. Darüber hinaus könnte Scrub beigebracht werden, nach fehlerhaften Blöcken zu suchen, wenn ein Prüfsummenfehler gefunden wird. Dies würde Scrub viel nützlicher machen; Prüfsummenfehler werden im Allgemeinen durch die Festplatte verursacht, aber während Scrub betroffene Dateien erkennt, was in einem Backup-Szenario die Möglichkeit bietet, sie neu zu erstellen, wird die nächste Datei, die die fehlerhaften Blöcke wiederverwendet, stattdessen einfach Fehler erhalten. Diese beiden Elemente würden einer ext4-Funktion entsprechen (verwendet durch e2fsck).

Bitte kommentieren Sie, wenn sich der Status ändert, und ich werde diese Antwort aktualisieren.

Antwort2

So stelle ich mir vor, diese Einschränkung zu umgehen. Eine unvollkommene Lösung.

  1. Erstellen Sie ext4 ohne Journaling als Dateisystem (mit Markierung fehlerhafter Blöcke).
  2. Erstellen Sie ein BTRFS-Dateiimage über ext4.
  3. Mounten Sie das BTRFS-Image mit dem Loop-Gerät.

Möglicherweise ist mit einem geringfügigen Mehraufwand zu rechnen.

verwandte Informationen