RAID6-Scrubbing-Mismatch-Reparatur?

RAID6-Scrubbing-Mismatch-Reparatur?

Sie können einen Scrub eines mdadm-Arrays mit initiieren echo 'check' > /sys/block/mdX/md/sync_action, und wenn ein fehlerhafter Sektor gefunden wird, wird esautomatisch umschreiben(von einem Spiegel oder aus Paritätsinformationen für RAID5/6).

Jedoch, wennAlle Blöcke wurden erfolgreich gelesen, sind aber nicht konsistent. Dann wird dies als Nichtübereinstimmung angesehen.. In diesem Fall ist die Reparatur kompliziert, da mdadm nicht erkennen kann, welcher Spiegel die richtigen Daten enthält (RAID1/10) oder ob Daten oder die Parität beschädigt sind (RAID5).

Theoretisch ist dies bei RAID6 nicht der Fall, wenn ich RAID6 richtig verstehe. Da doppelte Parität vorhanden ist, sollte es möglich sein, genau zu bestimmen, wo eine einzelne Beschädigung vorliegt, ob es sich nun um Daten oder Parität handelt.

  1. Habe ich das richtig verstanden? Sollte das theoretisch möglich sein?
  2. Wenn dies korrekt ist, kann mdadm diese inkonsistenten Daten reparieren, ohne zu erraten, welcher Block beschädigt ist?

Antwort1

Theoretisch ist dies möglich: Durch Daten+Parität erhalten Sie drei Meinungen darüber, wie die Daten aussehen sollten. Wenn zwei davon konsistent sind, können Sie davon ausgehen, dass die dritte falsch ist, und sie auf Grundlage der ersten beiden neu schreiben.

Linux RAID6 macht das nicht. Stattdessen wird bei jeder Nichtübereinstimmung davon ausgegangen, dass die beiden Paritätswerte falsch sind, und sie werden aus den Datenwerten neu berechnet. Es gab Vorschläge, auf ein System mit „Mehrheitsbeschluss“ umzusteigen, aber das wurde nicht umgesetzt.

Das mdadmPaket beinhaltet dieraid6check-DienstprogrammDas Programm versucht im Falle einer Paritätsfehlanpassung herauszufinden, welche Festplatte fehlerhaft ist. Es hat jedoch einige Ecken und Kanten, ist nicht standardmäßig installiert und behebt die gefundenen Fehler nicht.

Antwort2

Das raid6checkDienstprogramm von mdadmenthält einen repairModus seit Version 3.3 (veröffentlicht am 03.09.2013) (genauer gesagt seit diesem Commit:https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8a63c73123b9d022107c82bd684e17bf87bc081e)

verwandte Informationen