GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum muss ein RAID 10-Gerät initialisiert werden?

Lösung 1:

Da es sich bei Raid 1 um eine Spiegelung handelt, hängt es davon ab, dass alle Festplatten in einer Spiegelung exakte Kopien voneinander sind. Nehmen Sie Ihre Zufallsfestplatte und eine andere Zufallsfestplatte, und Sie haben dort möglicherweise andere Daten, wodurch diese Vermutung verletzt wird. Aus diesem Grund ist eine Initialisierung erforderlich. Es kopiert einfach den Inhalt des ersten Laufwerks auf andere. Beachten Sie, dass Sie unter bestimmten Bedingungen davonkommen können, die Laufwerke nicht zu initialisieren - normalerweise haben fabrikneue Geräte bereits überall Nullen, sodass Sie dies einfach ignorieren können. Der mdadm Option --assume-clean tut dies, warnt Sie aber:

   --assume-clean

Teilen Sie mdadm mit, dass das Array bereits existierte und als sauber bekannt ist. Es kann nützlich sein, wenn Sie versuchen, nach einem größeren Fehler wiederherzustellen, da Sie sicher sein können, dass keine Daten betroffen sind, es sei denn, Sie schreiben tatsächlich in das Array. Es kann auch beim Erstellen eines RAID1 oder RAID10 verwendet werden, wenn Sie die anfängliche Neusynchronisierung vermeiden möchten, jedoch wird diese Vorgehensweise – obwohl normalerweise sicher – nicht empfohlen. Verwenden Sie dies nur, wenn Sie wirklich wissen, was Sie tun.

Wenn Sie es nicht tun, gibt es eine Diskrepanz zwischen den Laufwerken und es wird gelesen, es gibt keine Ahnung, was das Laufwerk lesen wird. Sie sollten mit einem Dateisystem ziemlich sicher sein (aber beachten Sie unten), da Sie höchstwahrscheinlich schreiben, bevor Sie etwas von diesem Gerät lesen, und dann sind Sie klar.

Beachten Sie, dass zumindest mdadm von Linux initialisiert das Array im Hintergrund. Sie können in der ersten Sekunde fröhlich FS darauf erstellen. Die Leistung wird leiden, bis die Initialisierung abgeschlossen ist, aber das ist alles.

Aber:

a) Beim Ausführen von mkfs Einige Dienstprogramme prüfen, ob sich bereits etwas auf diesem Laufwerk befindet. Während dies nur einige bekannte Regionen des Laufwerks berührt, liest es, bevor Sie etwas schreiben, und bringt Sie somit in Gefahr.

b) Wenn Sie Ihr Array regelmäßig neu synchronisieren, weiß 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 nie füllen, ist es durchaus plausibel, dass ein Block aus FS-Perspektive jahrelang nicht initialisiert bleibt.

Warum eine Neusynchronisierung mit RAID1-Geräten?

Aus dem gleichen Grund resynchronisieren Sie mit RAID5-Geräten oder einem anderen Level (außer RAID0). Es liest alle Daten und vergleicht/verifiziert 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 nur versehentlich über diesen bestimmten Bereich des Plattentellers eingegriffen haben, was auch immer), wird es eine Inkonsistenz erkennen, aber nicht in der Lage sein dir helfen. Wenn, OTOH, eine der Festplatten einfach "Ich kann diesen Block nicht lesen" meldet, was bei einem fehlerhaften Laufwerk wahrscheinlicher ist, haben Sie einen Fehler frühzeitig erkannt und die Zeit verkürzt, in der Sie im herabgesetzten Modus laufen (gezählt von des Laufwerksausfalls, nicht ab dem Zeitpunkt, an dem Sie ihn bemerken). Raid hilft Ihnen nicht, wenn ein Laufwerk ausfällt und einen Monat später das andere ausfällt, wenn Sie den ersten Ausfall in diesem Monat nicht bemerken.

RAID10

Für RAID10 gilt nun alles Obige. Schließlich ist RAID10 nur eine clevere Art zu sagen:„Ich lege meine beiden RAID1-Geräte in ein RAID0-Paar.“

Vorbehalt:

Das ist alles undefiniertes Verhalten. Warum ich Linux überprüft habe, mit mdadm , andere Software-RAID-Implementierungen können sich anders verhalten. Andere Versionen des Linux-Kernels und/oder mdadm Tools, die ich verwende, können sich auch anders verhalten.

Lösung 2:

Denken Sie daran, dass RAID 1 ein Mirror ist und dass RAID 10 ein Stripe von Mirrors ist.

Die Frage ist, auf welcher Platte in jedem Spiegel sind die Daten gültig? Bei einem neu erstellten Array kann dies nicht bekannt sein, da die Platten unterschiedliche Daten haben können.

Denken Sie auch daran, dass RAID auf einem sehr niedrigen Niveau arbeitet; es weiß nichts über Dateisysteme oder welche Daten auch immer auf der Platte gespeichert sind. Vielleicht gibt es sie nicht ein verwendetes Dateisystem.

Daher besteht die Initialisierung in diesen Arrays darin, dass die Daten von einer Platte in jedem Spiegel unverändert auf die andere Platte kopiert werden.

Das bedeutet auch, dass das Array vom Moment der Erstellung an sicher verwendet werden kann und im Hintergrund initialisiert werden kann; die meisten RAID-Controller (und Linux mdraid) haben eine Option dafür oder machen es automatisch.

Lösung 3:

Eine anfängliche Synchronisierung ist erforderlich, da alle Unterschiede zwischen den Spiegeln während der regelmäßigen Überprüfung als Fehler angezeigt würden.

Und Sie sollten regelmäßige Kontrollen durchführen.


Linux
  1. Warum Sie ifconfig für ip löschen müssen

  2. Was ist ein Linux-Server und warum benötigt Ihr Unternehmen einen?

  3. Passwort-Hashing und warum wir es brauchen

  4. Warum benötigt der Root-Benutzer eine Sudo-Berechtigung?

  5. Warum beginnt die Unix-Zeit am 1.1.1970?

Warum muss stdout explizit geleert werden, wenn es in eine Datei umgeleitet wird?

Warum brauchen wir einen Bootloader in einem eingebetteten Gerät?

Warum brauchen wir die .so.1-Datei unter Linux?

Es ist unmöglich, das Raid-Gerät zu stoppen

Warum benötigt der 'bin'-Benutzer eine Login-Shell?

Warum muss Linux sowohl `/dev/cdrom` als auch `/media/cdrom` haben?