fiestaforever
Lt. Junior Grade
- Registriert
- Mai 2013
- Beiträge
- 296
(Ich bitte um Entschuldigung, der Thread-Titel ist etwas unbeholfen, aber leider fällt mir kein besserer ein.)
In der letzten Zeit habe ich mich verstärkt in die diversen RAID-Level (und Alternativmethoden) eingelesen und bin aber aus ein paar Dingen nicht ganz schlau geworden.
Eines davon ist die Frage, wie ein RAID 1 eigentlich die Daten schreibt und liest. Dass die Daten gespiegelt, also parallel geschrieben (und im Prinzip auch gelesen) werden, ist klar.
Aber was heißt das genau? Wie werden die Daten geschrieben, und vor allem, wie werden sie gelesen? Was passiert bei Schreib- oder Lesefehlern?
Und wie ist das z.B. bei billigen RAID1-NAS-Boxen?
Bei Schreiben nehme ich an, dass das einfach Adresse für Adresse (LBA) geschieht.
Was passiert bei einem Schreibfehler? Ich vermute, dass die Platte dann selbständig die Daten an eine Ersatzadresse schreibt. Der RAID-"Controller" (Hard- oder Software, deshalb in Anführungszeichen) würde dann überhaupt nichts von dem Schreibfehler mitbekommen (müsste er aber auch nicht). Das würde aber erfordern, dass die Platte eine Art von "Verify" macht, um zu erkennen, dass die Daten nicht korrekt geschrieben wurden. Ist dem so?
Was passiert beim Lesen? Was ist, wenn die eine Platte die Daten schneller liefert als die andere?
Steigt die andere, langsamere, dann irgendwann aus, und wird nur auf die schnellere zurückgegriffen?
Was passiert bei einem Lesefehler auf einer Platte? Wenn eine Platte einen defekten Sektor hat, der nicht gelesen werden kann, wird dann der Inhalt automatisch von der anderen Platte geliefert, oder nimmt der "Controller" auch defekte Daten entgegen? Wenn eine Platte immer mehrere Versuche unternimmt, einen schwer zu lesenden Sektor auszulesen, müssten die "richtigen" Daten von der anderen Platte ja i.d.R. schneller ankommen, oder? Andererseits, wenn die Platte mit dem defekten Sektor im übrigen schneller war, hätte sie ja vielleicht einen Vorsprung ...
Oder meldet eine Platte Lesefehler immer an den "Controller", der dann immer auf die Daten der anderen Platte zurückgreift? Fragen über Fragen.
Wobei ich auch wieder bei der Einheit wäre, die gelesen wird. Erfolgt das Lesen auf Sektoren-, Block-, Cluster-, Datei- oder einer anderen Ebene? Von anderen RAID-Leveln (0,5) weiß ich, dass die Daten in sog. "Chunks" geschrieben und gelesen werden, die alle möglichen Größen von 512B bis 64kB oder mehr haben können. Verwendet RAID 1 auch solche Größen?
Warum ich eigentlich frage: Manchmal liest man (v.a. bei Anbietern "alternativer" Systeme), dass RAID 1 bei Fehlern auf einer Platte gerne "korrupte" Daten an den "Controller" liefern würde, obwohl auf der anderen Platte die korrekten Daten liegen würden.
Ich bin mir nicht sicher, ob das überhaupt möglich ist.
Evtl. unterscheiden sich die RAID1-Implementationen auch. Wie ist das z.B. bei einem Linux-Software-RAID?
Ich vermute mal, dass günstige NAS-Boxen intern Linux-Software-RAID verwenden, weshalb das besonders interessant wäre.
In der letzten Zeit habe ich mich verstärkt in die diversen RAID-Level (und Alternativmethoden) eingelesen und bin aber aus ein paar Dingen nicht ganz schlau geworden.
Eines davon ist die Frage, wie ein RAID 1 eigentlich die Daten schreibt und liest. Dass die Daten gespiegelt, also parallel geschrieben (und im Prinzip auch gelesen) werden, ist klar.
Aber was heißt das genau? Wie werden die Daten geschrieben, und vor allem, wie werden sie gelesen? Was passiert bei Schreib- oder Lesefehlern?
Und wie ist das z.B. bei billigen RAID1-NAS-Boxen?
Bei Schreiben nehme ich an, dass das einfach Adresse für Adresse (LBA) geschieht.
Was passiert bei einem Schreibfehler? Ich vermute, dass die Platte dann selbständig die Daten an eine Ersatzadresse schreibt. Der RAID-"Controller" (Hard- oder Software, deshalb in Anführungszeichen) würde dann überhaupt nichts von dem Schreibfehler mitbekommen (müsste er aber auch nicht). Das würde aber erfordern, dass die Platte eine Art von "Verify" macht, um zu erkennen, dass die Daten nicht korrekt geschrieben wurden. Ist dem so?
Was passiert beim Lesen? Was ist, wenn die eine Platte die Daten schneller liefert als die andere?
Steigt die andere, langsamere, dann irgendwann aus, und wird nur auf die schnellere zurückgegriffen?
Was passiert bei einem Lesefehler auf einer Platte? Wenn eine Platte einen defekten Sektor hat, der nicht gelesen werden kann, wird dann der Inhalt automatisch von der anderen Platte geliefert, oder nimmt der "Controller" auch defekte Daten entgegen? Wenn eine Platte immer mehrere Versuche unternimmt, einen schwer zu lesenden Sektor auszulesen, müssten die "richtigen" Daten von der anderen Platte ja i.d.R. schneller ankommen, oder? Andererseits, wenn die Platte mit dem defekten Sektor im übrigen schneller war, hätte sie ja vielleicht einen Vorsprung ...
Oder meldet eine Platte Lesefehler immer an den "Controller", der dann immer auf die Daten der anderen Platte zurückgreift? Fragen über Fragen.
Wobei ich auch wieder bei der Einheit wäre, die gelesen wird. Erfolgt das Lesen auf Sektoren-, Block-, Cluster-, Datei- oder einer anderen Ebene? Von anderen RAID-Leveln (0,5) weiß ich, dass die Daten in sog. "Chunks" geschrieben und gelesen werden, die alle möglichen Größen von 512B bis 64kB oder mehr haben können. Verwendet RAID 1 auch solche Größen?
Warum ich eigentlich frage: Manchmal liest man (v.a. bei Anbietern "alternativer" Systeme), dass RAID 1 bei Fehlern auf einer Platte gerne "korrupte" Daten an den "Controller" liefern würde, obwohl auf der anderen Platte die korrekten Daten liegen würden.
Ich bin mir nicht sicher, ob das überhaupt möglich ist.
Evtl. unterscheiden sich die RAID1-Implementationen auch. Wie ist das z.B. bei einem Linux-Software-RAID?
Ich vermute mal, dass günstige NAS-Boxen intern Linux-Software-RAID verwenden, weshalb das besonders interessant wäre.