Beim Erstellen eines Linux-Software-RAID-Geräts als RAID10-Gerät bin ich verwirrt, warum es initialisiert werden muss. Die gleiche Frage gilt wirklich für raid1 oder raid0.
Letztendlich würden die meisten Leute ein Dateisystem darauf legen, und dieses Dateisystem sollte keinen Status der Datenträgerdaten annehmen. Jeder Schreibvorgang wirkt sich auf beide Festplatten in einem raid10- oder raid1-Setup aus, in das die N Spiegel geschrieben werden. Es sollte überhaupt keinen Grund geben, einen Raid10 zunächst zu initialisieren, da dies im Laufe der Zeit geschehen wird.
Ich kann verstehen, warum für ein raid5 / 6-Setup, bei dem eine Paritätsanforderung besteht, aber selbst dann scheint es, dass dies träge gemacht werden könnte.
Ist es nur so, dass sich die Leute besser fühlen?
quelle
Antworten:
Eine anfängliche Synchronisation ist erforderlich, da Unterschiede zwischen den Spiegeln während der regelmäßigen Überprüfung als Fehler angezeigt werden.
Und Sie sollten regelmäßige Überprüfungen durchführen.
quelle
Raid 1 ist ein Spiegel und hängt davon ab, dass alle Festplatten in einem Spiegel exakte Kopien voneinander sind. Nehmen Sie Ihre zufällige Festplatte und eine andere zufällige Festplatte, und Sie haben dort möglicherweise andere Daten, was gegen diese Vermutung verstößt. Aus diesem Grund ist eine Initialisierung erforderlich. Es kopiert einfach den Inhalt des ersten Laufwerks auf andere. Beachten Sie, dass Sie unter bestimmten Umständen davonkommen können, die Laufwerke nicht zu initialisieren - normalerweise haben werkseitig neue Geräte bereits überall Nullen, sodass Sie dies einfach ignorieren können. Die
mdadm
Option--assume-clean
tut dies, warnt Sie jedoch:Wenn Sie dies nicht tun, besteht eine Diskrepanz zwischen den Laufwerken und dem gelesenen Laufwerk. Es ist nicht bekannt, was das Laufwerk lesen wird. Sie sollten mit einem Dateisystem ziemlich sicher sein (siehe Hinweis unten), da Sie höchstwahrscheinlich schreiben werden, bevor Sie etwas von diesem Gerät lesen, und dann sind Sie klar.
Beachten Sie, dass mindestens Linux
mdadm
das Array im Hintergrund initialisiert. Sie können FS in der ersten Sekunde glücklich darüber erstellen. Die Leistung wird leiden, bis die Initialisierung abgeschlossen ist, aber das ist alles.Aber:
a)
mkfs
Überprüfen Sie bei einigen Dienstprogrammen, ob sich bereits etwas auf diesem Laufwerk befindet. Während dies nur einige bekannte Laufwerksbereiche berührt, wird es gelesen, bevor Sie etwas schreiben, wodurch Sie in Gefahr geraten.b) Wenn Sie Ihr Array regelmäßig neu synchronisieren, kennt das RAID-Gerät nichts von Ihrem FS. Es liest einfach jeden Block von jedem Gerät und vergleicht diese. Und wenn Sie kein Copy-on-Write-FS (z. B. ZFS oder BTRFS) verwenden und Ihr FS niemals füllen, ist es durchaus plausibel, dass ein Block aus FS-Sicht jahrelang nicht initialisiert bleibt.
Warum erneut mit RAID1-Geräten synchronisieren?
Aus dem gleichen Grund synchronisieren Sie erneut mit RAID5-Geräten oder einem anderen Level (außer RAID0). Es liest alle Daten und vergleicht / überprüft RAID-Prüfsummen (in RAID 5 oder 6). Wenn ein Bit in irgendeiner Weise umgedreht wurde (weil der HD-Speicher spontan umgedreht wurde, weil die Handys von Ihnen und Ihren 5 Nachbarn versehentlich in diesen bestimmten Bereich der Platte eingegriffen haben, was auch immer), erkennt es Inkonsistenzen, kann dies jedoch nicht dir helfen. Wenn, OTOH, eine der Festplatten einfach "Ich kann diesen Block nicht lesen" meldet, was bei einem fehlerhaften Laufwerk wahrscheinlicher ist, haben Sie gerade einen Fehler frühzeitig erkannt und die Zeit verkürzt, die Sie im verschlechterten Modus ausführen (Zählen ab der Laufwerksfehler, nicht ab dem Zeitpunkt, an dem Sie ihn bemerken). Raid hilft dir nicht, wenn ein Laufwerk ausfällt und einen Monat später das andere ausfällt, wenn du es nicht tust.
RAID10
Für RAID10 gilt nun alles oben Genannte. Immerhin ist RAID10 nur eine clevere Art zu sagen, dass ich meine beiden RAID1-Geräte in ein RAID0-Paar stecke.
Vorbehalt:
Das ist alles undefiniertes Verhalten. Warum ich unter Linux überprüft habe, verwenden
mdadm
andere Software-RAID-Implementierungen möglicherweise anders. Andere Versionen des Linux-Kernels und / odermdadm
-Tools als die von mir verwendeten verhalten sich möglicherweise auch anders.quelle
If you don't do it, there is a discrepancy between the drives and it's read, the RAID device will report failure of a drive
. Ich glaube, dass diese Aussage falsch ist. Geben Sie zumindest ein Beispiel für die Fehlermeldung an, sodass Sie die Quelle konsultieren können, um zu überprüfen, unter welchen Umständen sie erzeugt wird.While this only touches a few well-known regions of drive, it reads before you write anything, thus putting you in danger.
In Gefahr von was? Mir ist klar, dass das Lesen zu irgendetwas führen kann, aber warum würde dies zu einer Gefahr für den Benutzer führen, wenn (a) die gelesenen Informationen nirgendwo verwendet werden und (b) ein Schreibvorgang bevorsteht?urandom
initialisierten Gerät mit Linux mdadm zeigt, dass die ersten 80k sowie die letzten 48k unterschiedlich bleiben. Letzteres ist wahrscheinlich auf die Rundung der RAID-Größe auf die Blockgröße zurückzuführen. Ich habe nicht mit verschiedenen Gerätegrößen getestet, aber der 80 + 48 ist genau der Größenunterschied zwischen dem RAID-Gerät und dem zugrunde liegenden Blockgerät.Denken Sie daran, dass RAID 1 ein Spiegel und RAID 10 ein Spiegelstreifen ist.
Die Frage ist, auf welcher Festplatte in jedem Spiegel die Daten gültig sind. In einem frisch erstellten Array kann dies nicht bekannt sein, da die Datenträger möglicherweise unterschiedliche Daten enthalten.
Denken Sie auch daran, dass RAID auf einem sehr niedrigen Niveau arbeitet. Es weiß nichts über Dateisysteme oder welche Daten auch immer auf der Festplatte gespeichert sein könnten. Es könnte nicht einmal sein ein Dateisystem im Einsatz.
Somit besteht die Initialisierung in diesen Arrays darin, dass die Daten von einer Platte in jedem Spiegel unverändert auf die andere Platte kopiert werden.
Dies bedeutet auch, dass das Array ab dem Zeitpunkt der Erstellung sicher verwendet werden kann und im Hintergrund initialisiert werden kann. Die meisten RAID-Controller (und Linux mdraid) haben eine Option dafür oder tun dies automatisch.
quelle
Einfach ausgedrückt, da von zwei neuen Festplatten nicht erwartet wird, dass sie von Anfang an spiegelglatte Kopien voneinander sind.
Sie müssen in perfekte Kopien voneinander verwandelt werden.
Darüber hinaus umfasst die Initialisierung das Einrichten des Metadaten-Superblocks mit Informationen zur Array-Konfiguration.
Die Datei / proc / mdstat sollte Ihnen mitteilen, dass das Gerät gestartet wurde, dass der Spiegel rekonstruiert wird und eine ETA des Abschlusses der Rekonstruktion. Die Rekonstruktion erfolgt unter Verwendung der freien E / A-Bandbreite. Ihr System sollte also weiterhin reagieren, obwohl Ihre Festplatten-LEDs auch viel Aktivität anzeigen.
Der Rekonstruktionsprozess ist transparent, sodass Sie das Gerät tatsächlich verwenden können, obwohl der Spiegel gerade rekonstruiert wird.
quelle