Aysad Kozanoglu - Mimarist

Server Howtos & Tutorials

RAID Controller Technologien

15 Dezember, 2016 | Server Anleitungen

Write Back und Write Through

Im Allgemeinen verfügen die meisten RAID-Controller über zwei unterschiedliche Strategien, um Daten vom Betriebssystem auf die Festplatten zu schreiben: Write Back und Write Through.

Beim Write Back schickt der RAID-Controller einen "Completion-Status" (Bestätigungsbefehl) an das Betriebssystem, sobald der Pufferspeicher des Controllers die Schreibdaten für die Festplatte vom System erhalten hat. Der Controller hält die Informationen so lange im Cache, bis der Controller einen geeigneten Zeitpunkt findet, die Daten an die Festplatte zu übertragen. Dies erfolgt zu einem Zeitpunkt, zu dem die Systemressourcen nicht voll beansprucht werden, so dass diese Strategie die Schreibleistung signifikant verbessert.

Allerdings hat das Write-Back-Verfahren auch Nachteile. Tritt eine Störung bei der Stromversorgung auf, sind unter Umständen wichtige Daten, die noch nicht vom Cache-Controller auf die Festplatte geschrieben wurden, unwiderruflich verloren. Deshalb ist es empfehlenswert, die meist optional erhältliche Batteriepufferung des Cache-Controllers mitzubestellen oder sich gleich für eine USV zu entscheiden.

Anders verhält sich die Write-Through-Strategie. Diese sendet einen "Completion-Status" erst dann an das Betriebssystem, wenn die Daten sicher auf die Festplatte geschrieben wurden. Deshalb kostet das Verfahren Übertragungs- beziehungsweise System-Performance, da die Informationen ohne Zwischenpufferung direkt, ohne Rücksicht auf aktuelle Systemressourcen, auf die Festplatte geschrieben werden. Darüber hinaus unterscheidet sich die Schreibleistung mit aktiviertem Write-Through-Cache kaum von der Performance eines Controllers ohne Cache-Unterstützung.

 

Read Ahead und Adaptive Read Ahead

Wie bei den Schreiboperationen bietet ein RAID-Controller auch für die Leseanweisungen verschiedene Caching-Strategien. Im Einzelnen sind dies Read Ahead (als Default-Einstellung), Adaptive Read und No Read Ahead.

Bei der Read-Ahead-Strategie fordert der RAID-Controller neben den tatsächlichen Daten auf der Festplatte auch die weiteren Informationen, die daneben liegen, an. Diese "vorweggenommenen" Daten werden in den Cache zwischengespeichert. Werden beim nächsten Request diese Daten verlangt, kann der Controller diese direkt aus dem Puffer lesen und an das Betriebssystem weiterleiten. Ein Zugriff auf die Festplatte ist dann nicht mehr erforderlich. Das spart Zeit und erhöht die Performance bei Datenanforderungen. Besonders bei zusammenhängenden Datenstrukturen, die sequenziell gelesen werden können, wie Video-Streams oder Audio-Files, kann dieses Verfahren seine besondere Stärke ausspielen. Auch die Defragmentierung einer Festplatte wirkt sich positiv auf die Performance des Storage-Systems aus, wenn die Read-Ahead-Funktion des Cache-RAID- Controllers aktiviert ist.

Die Adaptive-Read-Ahead-Option beinhaltet eine "intelligente" Read-Ahead-Strategie. Diese aktiviert Read-Ahead-Lesezugriffe erst dann, wenn zwei aufeinander folgende Read-Anweisungen Daten aus zwei hintereinander liegenden Sektoren der Festplatte auslesen. Erhält der RAID-Controller Daten aus zufälligen Sektoren der Festplatte, schaltet er in den No-Read-Ahead-Modus um. Der Controller wertet aber weiter alle Leseanweisungen aus, ob sie aus zwei hintereinander liegenden Sektoren kommen. Ist dies der Fall, kann er sofort wieder Read-Ahead-Zugriffe einleiten.

Im No-Read-Ahead-Modus liest der Storage-Controller nicht "vorausschauend" die Daten ein. Das heißt, es wird nur jeweils ein Sektor eingelesen, auch wenn der folgende Nachbarsektor die nächsten Lesedaten enthält. Welche Read-Strategie die bessere ist, hängt letztlich von der Anwendung ab und von deren Datenstruktur auf der Festplatte.

 

Cached I/O und Direct I/O

Die Cached- und Direct-I/O-Strategie bezieht sich jeweils auf ein logisches Laufwerk des RAID-Controllers. Darüber hinaus haben die beiden Cache-Optionen keine Auswirkungen auf die Read-Ahead-Einstellungen des RAID-Systems.

Die Cached-I/O-Einstellung der Cache-Policy spezifiziert, dass alle Lesezugriffe vom RAID-Controller zwischengespeichert werden. Das bedeutet, dass das Betriebssystem die Daten nicht direkt von der Festplatte erhält, sondern vom Cache des Controllers.

Dagegen erfolgen die Lesezugriffe im Direct-I/O-Modus nicht ausschließlich aus dem Cache-Speicher des Controllers. So werden während einer Leseanweisung die Daten simultan zum Controller-Cache und zum Betriebssystem übertragen. Falls ein nachfolgender Leseauftrag - ein so genannter Subsequent-Read - Daten aus dem gleichen Datenblock benötigt, können diese aus dem Controller-Cache direkt angefordert werden.