Cache Einstellungen von RAID Controllern und Festplatten
Aus Wiki Thomas-Krenn.AG
Dieser Artikel beschreibt die unterschiedlichen Einstellungsmöglichkeiten von Caches bei RAID Controllern und Festplatten. Dabei wird auch beschrieben, welche Einstellungen erforderlich sind, damit bei einem Stromausfall keine Daten verloren gehen (was die Gefahr einer Zerstörung des Dateisystems bergen könnte).
Inhaltsverzeichnis |
Involvierte Caches beim Datenzugriff
Beim Datenzugriff sind Caches auf unterschiedlichen Ebenen involviert. Diese werden hier kurz beschrieben.
Cache im Betriebssystem
Moderne Betriebssysteme nutzen einen sogenannten Page Cache / Buffer Cache. Wenn Daten geschrieben werden, kommen diese zuerst in diesen Cache. Der Inhalt dieses Caches wird regelmäßig (bzw. auch beim Aufruf von Systemcalls wie sync oder fsync) auf das darunterliegende Speichersystem weitergegeben. Dies kann ein RAID-Controller oder direkt eine Festplatte sein. Weiter Details dazu gibt es in einem Artikel über den Buffer Cache bei Linux auf WebProNews sowie im Artikel zum Page Cache auf Wikipedia.
Unter Linux kann gibt das Kommando free -m in der Spalte cached an, wieviel MB des Arbeitsspeichers momentan für den Page Cache verwendet werden:
[root@testserver ~]# free -m
total used free shared buffers cached
Mem: 1514 537 977 0 8 171
-/+ buffers/cache: 357 1157
Swap: 509 0 509
[root@testserver ~]#
Bei einem Stromausfall geht der Inhalt des Page Caches verloren.
Cache im RAID-Controller
Caches im RAID-Controller können die Performance beim Schreiben von Daten beträchtlich erhöhen. Typisch sind aktuell beispielsweise 256 MB Cache. Bei einem Stromausfall geht der Inhalt dieses Caches verloren - außer man schützt den Inhalt durch eine BBU/BBM (Battery Backup Unit, Battery Backup Module). Die BBU/BBM hat einen Akku integriert, der den Inhalt des Caches meist bis zu 72 Stunden halten kann. Wird innerhalb der Akkulaufzeit der Server wieder hochgefahren, gehen keine Daten aus diesem Cache verloren.
Cache in der Festplatte
Auch Festplatten haben einen Cache integriert. Aktuell sind hier 16 MB gängig. Der Inhalt dieses Caches kann nicht durch eine BBU/BBM geschützt werden. Neuere 3ware Controller schützen den Inhalt dieses Caches auf den Festplatten durch ein proprietäres write journal (Storsave Konfigurationsparameter). Im Normalfall geht aber sonst der Inhalt dieses Caches bei einem Stromausfall verloren.
Gefahren beim Verlust des Cache-Inhalts bei einem Stromausfall
Wenn der RAID-Controller bzw. die Festplatte dem Betriebssystem bestätigt, dass Daten geschrieben wurden - diese Daten aber tatsächlich nur im Cache abgelegt wurden - kann es im schlimmsten Fall zu einem kompletten Datenverlust bei einem plötzlichen Stromausfall kommen. Das kann z.B. dann auftreten, wenn es zahlreiche Updates für Dateisystem-Metadaten gibt, diese Updates aber nur teilweise geschrieben werden (und die restlichen Updates im Cache verloren gehen).
In einem solchen Fall hilft dann nur mehr ein aktuelles Backup. Cache Einstellungen für einen sicheren Betrieb (siehe unten) können diese Gefahren lindern, schränken aber natürlich die Performance teilweise etwas ein.
Einstellungen für sicheren Betrieb
Ziel bei einem sicheren Betrieb ist u.a. dass bei einem Stromausfall keine Daten aus dem RAID-Controller-Cache sowie dem Festplatten-Cache verloren gehen.
Für einen sicheren Betrieb können u.a. folgende Grundregeln herangezogen werden:
- Bei der Verwendung eines Caches im RAID-Controller diesen Cache-Inhalt durch eine BBU/BBM schützen. Der Zustand des Akkus soll regelmäßig überprüft werden. Meist müssen die Akkus alle 2-3 Jahre erneuert werden. Weiters ist zu beachten, dass eine BBU/BBM den Cache-Inhalt meist nur bis zu 72 Stunden sichern kann. Bei einem Stromausfall über mehrere Tage kann der Akku leer laufen, und somit der Cache-Inhalt verloren gehen.
- Der Cache auf den Festplatten kann nicht durch eine BBU/BBM gesichert werden. Daher diesen Cache deaktivieren. (Anmerkung: 3ware bietet bei neueren RAID-Controllern ein proprietäres write journal, das diese Cache-Inhalte schützen soll (Storsave Konfigurationsparameter).)
Beispieltests
Mithilfe eines Perl Skripts haben wir unter Linux getestet, ob Daten bei einem Stromausfall verloren gehen können. Hintergrundinformationen zu diesem Skript gibt es hier: http://brad.livejournal.com/2116715.html
Die folgende Tabelle zeigt Tests mit unterschiedlichen RAID-Controllern und unterschiedlichen Einstellungen. Alle RAID-Controller wurden im Test mit BBU/BBM eingesetzt.
| Test# | Controller | Firmware | Cache Settings | Ergebnis |
|---|---|---|---|---|
| 1 | Adaptec 5405 | 5.2-0 (15726) | HDD Cache aktiviert | max. Performance - Datenverlust mögl. |
| 2 | Adaptec 5405 | 5.2-0 (15726) | HDD Cache deaktiviert (per arcconf CLI) | Test fehlerfrei (kein Datenverl.) |
| 3 | Areca 1210 | 1.43 | HDD Cache deaktiviert (Disk Write Cache Mode = Disabled) | Test fehlerfrei (kein Datenverl.) |
| 4 | Areca 1210 | 1.43 | HDD Cache aktiviert (Disk Write Cache Mode = Enabled) | max. Performance - Datenverlust mögl. |
| 5 | onboard SATA | - | HDD Cache aktiviert | max. Performance - Datenverlust mögl. |
| 6 | onboard SATA | - | HDD Cache deaktiviert (per hdparm -W0 /dev/sda) | Test fehlerfrei (kein Datenverl.) |
| 7 | 3ware 9550SX | FE9X 3.02.00.016 | HDD Cache verm. aktiviert (Storsave Perform) | max. Performance - Datenverlust mögl. |
| 8 | 3ware 9550SX | FE9X 3.02.00.016 | HDD Cache verm. aktiviert (Storsave Balanced) | Test fehlerfrei (kein Datenverl.) |
| 9 | 3ware 9550SX | FE9X 3.02.00.016 | HDD Cache verm. aktiviert (Storsave Protection) | Test fehlerfrei (kein Datenverl.) |
Hinweis: die obigen Ergebnisse spiegeln lediglich unsere Testergebnisse wider. Um für ein konkretes Server-System eine End-To-End Überprüfung durchzuführen, empfehlen wir dann auch den Test selbst durchzuführen.
Weitere Anmerkungen:
- beim Adaptec 5405 wurde der Cache für die einzelnen HDDs wie folgt deaktiviert (Beispiel für erste HDD):
arcconf SETCACHE 1 DEVICE 0 0 wt - beim onboard SATA Test haben wir den Cache der HDD wie folgt deakiviert:
hdparm -W0 /dev/sda. Bei den meisten HDDs geht diese Einstellung nach einem Reboot verloren und muss nach dem Neustart wieder gesetzt werden. Dazu gibt es auch Informationen in der Microsoft KB.
