Hardware Raid -Wieso Rebuild?

Zoldyck

Lieutenant
Registriert
Aug. 2008
Beiträge
554
Hi :)

Ich hab hier ein Hardware Raid6 mit dem Controller "Adaptec RAID 8805". Das Raid wurde mit "Clear" (Link) erstellt.

Sprich der Ausgangspunkt ist ein sauber erstelltes Raid. Wenn ich nun den Rechner ausschalte und eine Platte entferne und den Rechner wieder einschalte, dann wird das natürlich erkannt und gemeldet, dass das Raid nur noch "sub-optimal" ist (klar). Schalte ich nun den Rechner wieder aus und schiebe die gleiche Platte wieder rein dann wird die Platte nicht "wiedererkannt" sondern als neue bzw. Ersatzplatte gehandhabt. Das Resultat: Der Kontroller fängt mit einem Rebuild an um die Platte in das Raid einzubinden -welcher natürlich lange dauert. Ist dieses Verhalten normal -ich muss gestehen das ich erwartet hatte das er die Platte "wiedererkennt" -immerhin war ich zu keinem Zeitpunkt weiter als im Raid-Controller -oder ist das das Problem? Das der Controller bzw. das Raid nicht weiß das es keine Änderung gab?

Gruß Zoldyck
 
Regel Nr.1: Man macht ausschließlich immer einen Build/Verify, alles Andere ist murks

Regel Nr.2: Nimm einem Adaptec-Controller niemals aus Spaß eine Platte weg, das können und konnten die noch nie ab ;) Kann es vom 2405 und 6405 bestätigen.
 
Völlig normales Verhalten. Wenn das Array degraded ist, dann folgt daraufhin ein Rebuild. Auch dann, wenn sich auf der aktiven Platte seit dem Wechsel auf degraded nichts geändert hat und mit der fehlenden Platte das Array theoretisch wieder vollständig wäre.
 
Ein RAID Controller der seine Sache ernst nimmt, betrachtet ein RAID als Volumen dessen Daten konsistent sein müssen. Wurde dann ohne eine der HDDs schon auf das RAID geschrieben, beim Booten passiert das bei jedem OS schon wegen der logs, dann stimmt bei einer fehlenden Platte der Datenstand auf dieser nicht mehr mit dem das RAIDs als Volumen überein, es muss also ein Reync erfolgen um das zu ändern und da die Controller nicht wissen was sich geändert hat, geht es immer über das ganze RAID.

Ich weiß nicht mehr ob hier oder in einem anderen Forum, aber irgendwo war mal ein Thread, da hatte einer einen hochwertigen RAID Controller und zwei Platten im RAID 1 und hat sich beschwert, dass es nicht funktionieren würde. Er hat folgenden Test gemacht:

1. RAID 1 eingerichtet und (meine ich) Windows installiert
2. HDD 1 abgezogen und getestet, Windows hat normal gebootet, wurde wieder runtergefahren.
3. HDD 1 wieder eingesteckt und dafür HDD 2 entfernt.
4. Rechner hat nicht gebootet und darin hat er einen Fehler gesehen.

Das war aber kein Fehler, das war ein Profi-RAID Controller und kein Billig-Spielzeug RAID Controller, der einfach nur spiegelt. Der Profi-RAID Controller hat gemerkt, dass das RAID nach den Abziehe von HDD 1 degradiert war und da sein Inhalt überschrieben worden ist, weil Windows wie jedes OS ja auch Logs führt und damit immer auch auf sein Systemlaufwerk schreibt. Damit entsprechen nur noch die Daten auf HDD2 den aktuellen Zustand des RAIDs. Durch den direkten Tausch der beiden HDDs gab es nun diesen aktuellen Zustand nicht mehr, da die HDD2 auf der er gespeichert war, ja nicht eingebaut war und HDD1 die letzten Änderungen nicht kannte, der Controller hat das RAID also als defekt gesperrt und das war richtig.

Warum war es richtig? Nun hier hätte bei einem einfach RAID Controller der sowas nicht beachtet und wie der Type sie wohl auch nur kannte, der Rechner auch im Schritt 4 gebootet, eben ohne die Änderungen vom letzten Booten, den z.B. den Eintrag Windows hat um 11:30 gebootet der nur auf HDD2 stand. Dann wäre auf HDD 1 nun z.B. 11:45 als letzter Zeitpunkts des Bootens vermerkt. Was kommt raus, wenn man nun beide HDD bei so einem RAID wieder einbaut? Hängt davon ab, ob die Datei von der einen oder von der anderen Platte gelesen wird. Die Daten stimmen auch beiden Platten nicht überein und das fällt bei solche Billiglösung auch nicht gleichen auf, den RAID lesen immer nur von einer Platten und erst wenn es dort einen Lesefehler gibt, von der anderen. Beide Daten sind aber korrekt lesbar, weichen aber voneinander ab und das darf eben bei Enterprise RAIDs nie passieren, da können wichtig Daten drauf liegen und bei einem Abgleich kann dann auch nicht mehr sagen, welche korrekt sind.

Daher wäre der korrekte Test in dem Fall gewesen, den Schritt 3. so zu gestalten, dass man erst die HDD 1 wieder einfügt, dem RAID Controller Zeit gibt das Resync der Daten von HDD 2 auf HDD 1 abzuschließen und dann erst HDD 2 zieht. Dann hätte HDD 1 den korrekten Datenstand des RAIDs enthalten und es hätte funktioniert. Hoffentlich wurde nun verständlich was ich damit sagen will, wenn ich sage, dass ein RAID eben ein logisches Volumen und mehr als nur die Summe der Platte ist und wieso es gut ist, wenn ein Controller das auch so handhabt.
 
Der RAID Controller weiß nicht was mit der Platte passiert ist solange sie abgestöpselt war und wird daher Rebuilden selbst wenn eigentlich nichts aufs RAID geschrieben wurde (sondern die Abwesenheit nur in den RAID-Metadaten registriert wurde).

Auch Software RAID macht das so. Ich nutze unter Linux ein Software-RAID1 um meine SSD im laufenden Betrieb regelmäßig auf HDD zu spiegeln und das ist jedes Mal eine Komplettspiegelung weil ich keinen anderen Weg gefunden habe, den Rebuild zu verhindern bzw. nur auf die geänderten Teile zu beschränken.

Um bei Linux mdadm eine einmal abwesende Platte ohne Rebuild zu integrieren brauchst du z.B. die --force Option. Selbst eine Write Intent Bitmap (die sich merkt welche Regionen innerhalb des RAIDs verändert wurden) verhindert das nicht, eben weil so einer Platte dann einfach nicht mehr vertraut wird.

Wenn die Festplatten einen Zähler hätten der bei jedem Schreibzugriff erhöht wird dann könnte man das anders machen. Die RAID-Metadaten könnten sich den Zählerstand merken und einer Platte deren Zähler sich nicht verändert hat dann auch weiter vertrauen, weil dann klar ist daß auf die Platte nichts geschrieben wurde solange sie abgestöpselt war. Aber so einen Zähler gibts nicht, daher ...
 
Zuletzt bearbeitet:
Ein RAID sollte man nicht als Snapshot oder Backup missbrauchen, Deine HDD würde bei einem anständigen RAID auch nichts nutzen wenn sie nicht gerade angestöpselt wäre wenn die SSD ausfällt, sie mein Beispiel im letzten Post!
 
Zurück
Oben