MegaRAID CacheCade konfigurieren

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

MegaRAID CacheCade bezeichnet jene Technologie, die Avago für die Verwendung von SSDs als zusätzlichen Controller-Cache anbietet. Die Liste der unterstützten Controller sind im Artikel MegaRAID CacheCade SSD Cache aufgelistet. Als Caching Modes stehen Write-Back, Write-Through und Forced Write-Back zur Verfügung.

Informationen über SSD Caching finden sich auch im Artikel Flashcache und in der Präsentation der Thomas-Krenn.AG am LinuxTag 2012: Event-News: LinuxTag 2012 MySQL Monitoring/Management und SSD Caching.

Caching Modes

  1. Write-Back: siehe Flashcache#Caching_Modes Überblick
  2. Write-Through: siehe Flashcache#Caching_Modes Überblick
  3. Forced Write-Back: Dieser Modus betrifft vor allem Caching Volumes aus mehreren SSDs. Bei Logical Volumes aus mehreren SSDs bleibt die Cache-Poilcy im Forced Write-Back-Modus auch dann Write-Back, wenn das Logical Volume in einen "degraded" Modus wechselt.[1]

Cache Persistenz

Das CacheCade Virtual Drive behält unabhängig vom Modus (WB, WT, FWB) auch bei Reboots seine gecachten Daten.

Fehler-Strategie

Die Fehler-Strategie bei der Verwendung von CacheCade ist vor allem für die Verhinderung von Datenverlust wichtig. Vor allem die Kombination "Ausfall einer SSD" und "Write-Back-Modus" führen bei einem nicht-redundanten Cache zum Verlust jener Daten, die sich im Cache befinden aber noch nicht auf die Festplatte synchronisiert wurden.

Ein durchdachtes Verhalten des Caching-Volumes kann den Anwender vor dieser Gefahr schützen. CacheCade verhält sich beim Ausfall einer SSD je nach RAID Level und Write Policy unterschiedlich:

  1. Besitzen die SSDs keine Redundanz und WT, wird von dem HDD Virtual Drive weiter gelesen. Die Applikation wird durch den Ausfall der SSD nicht beeinträchtigt, außer, dass nichts mehr auf der SSD gecacht wird.
  2. Besitzen die SSDs Redundanz und WT, wird von dem CacheCade Virtual Drive weiter gelesen.
  3. Besitzen die SSDs keine Redundanz und WB, ist kein Zugriff auf das Virtual Drive mehr möglich. Dieser Ausfall einer SSD ist mit Datenverlust verbunden.
  4. Besitzen die SSDs Redundanz und WB, schaltet das CacheCade Virtual Drive in den WT Modus um. Damit wird verhindert, dass bei einem weiteren Ausfall einer SSD Daten verloren gehen.
  5. Besitzen die SSDs Redundanz und AWB (Always Write Back), wird das CacheCade Volume weiter auf den verbleibenden SSDs im WB Modus betrieben.

Solange ein Zugriff (daher ausgenommen Punkt 3) auf das Virtual Drive möglich ist, werden Applikationen durch den Ausfall einer SSD nicht beeinträchtigt. Über den MegaRAID Storage Manager werden die Ausfälle der SSDs reported.

CacheCade Commands

MegaCli-Befehle zur Verwaltung von CachCade-Volumes.

Das folgende Beispiel realisiert folgendes Szenario:

  1. Erstellen eines einfachen Volumes bestehend aus einer Festplatte (JBOD)
  2. Erstellen eines CacheCade Devices mit einer SSD
  3. Hinzufügen der SSD als Caching Device zum Volume

Für das Anlegen eines Logical Devices wird immer die Enclosure ID (E0,E1,...) benötigt:

MegaCli -CfgLdAdd -rX[E0:S0,E1:S1,...] [WT|WB] [NORA|RA]
        [Direct|Cached] [CachedBadBBU|NoCachedBadBBU] 
        [-szXXX [-szYYY ...]] [-strpszM] [-Hsp[E0:S0,...]]
        [-AfterLdX] [-Force]|[FDE|CtrlBased]  

Beim Anzeigen der Physical Devices scheint diese auf:

# ./MegaCli64 -PDList -a0
                                     
Adapter #0

Enclosure Device ID: 252
Slot Number: 0
Enclosure position: 0
Device Id: 4
[...]

Im ersten Schritt wird die Festplatte als JBOD (RAID-0 mit nur einer Platte) angelegt:

# ./MegaCli64 -CfgLDAdd -R0[252:0] WB RA Cached CachedBadBBU -a0
[...]

Achtung: Die Verwendung des Caches bei einer funktionsunfähigen BBU (CachedBadBBU) wird für den Echtbetrieb nicht empfohlen. Dies wurde nur zu Testzwecken so konfiguriert.

Die soeben erstellte Konfiguration wird wie folgt kontrolliert:

# ./MegaCli64 -LDInfo -Lall -a0
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-0, Secondary-0, RAID Level Qualifier-0
Size                : 1.818 TB
Parity Size         : 0
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 1
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
Is VD Cached: No
[...]

Die nächsten Schritte beziehen die vorhandene SSD mit ein. Das Device "physdrv[252:2]" identifiziert die SSD am Controller. Diese wird nun als CacheCade-Device im Write-Back-Modus hinzugefügt:

:~# MegaCli -cfgcachecadeadd -physdrv[252:2] WB -a0
:~# MegaCli -LDSetProp CachedBadBBU -L1 -a0

Das Logical Drive scheint danach als CacheCade Virtual Drive auf:

:~# MegaCli -LDInfo -L1 -a0
Adapter 0 -- Virtual Drive Information:
CacheCade Virtual Drive: 1 (Target Id: 1)
Virtual Drive Type: CacheCade 
Name:
Size:31.5 GB
Target Id of the Associated LDs : None
Default Cache Policy: WriteThrough, ReadAdaptive, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteThrough, ReadAdaptive, Direct, Write Cache OK if Bad BBU
[...]

Bis zum jetzigen Zeitpunkt wurde das CacheCade-Device nur erstellt, es wird jedoch noch nicht als Cache eines Logical Drives eingesetzt. Dazu muss es noch dem entsprechenden Drive zugewiesen werden:

# ./MegaCli64 -Cachecade -assign -L0 -a0
                                     
Successfully assigned VD to Cache  
[...]

Die beiden Zeilen "Is VD Cached" und "Cache Cade Type" geben Aufschluss über die Caching Optionen des Logical Drives 0:

:~# MegaCli -LDInfo -L0 -a0
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-0, Secondary-0, RAID Level Qualifier-0
Size                : 1.818 TB
Parity Size         : 0
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 1
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
Is VD Cached: Yes
Cache Cade Type : Read and Write

Exit Code: 0x00

CacheCade-Volume Löschen

Das CacheCade-Volume kann durch den remove-Befehl wieder vom Volume gelöst werden:

MegaCli -CfgCacheCadeDel -L0 -a0

Um die komplette Konfiguration zu entfernen können außerdem die Logical Volumes entfernt werden:

MegaCli -cfglddel -L0 -a0
MegaCli -cfglddel -L1 -a0

Nach dem Absetzen dieser Befehle entfernt der Controller die Volumes aber erst dann, wenn alle Daten vom CacheCade-Volume auf die Festplatten geschrieben wurden. Das ist der Grund, warum der Befehl

MegaCli -LDInfo -LALL -a0

auch noch einiger Zeit nach dem Löschen die Volumes anzeigt.

Einzelnachweise


Foto Georg Schönberger.jpg

Autor: Georg Schönberger

Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.


Das könnte Sie auch interessieren

Aktivieren oder Deaktivieren des X10DRC-LN4+ onboard LSI SAS 3108 Controllers
LSI RAID Monitoring Plugin
SSD RAID mit MegaRAID Controllern