Real time web analytics, Heat map tracking

SSD Cache mit EnhanceIO unter Debian (Wheezy)

A. Allgemeines

Um die Leistung meines RAID 10 auf einem NetApp DS14MK4, das den Speicher für einen VMWare Hypervisor 6 bereitstellt, zu steigern, habe ich mit für einen SSD Cache entscheiden. Eingesetzt habe ich als SSD ein OCZ RevoDrive, da der HP ML370 G5, auf dem das Debian läuft einen P400 Controller hat und dieser nur SATA I kann. Beide Teile des RevoDrives laufen einem mdadm Stripe-RAID. Gecachet wird über EnhanceIO. Dies bietet den Vorteil, dass der Speicherplatz des HDD-RAID-Arrays mit dem Geschwindkeitsvorteil einer SSD kombiniert werden kann.

B. Vorgehen

Folgende Schritte sind nötigt, um den SSD Cache einzurichten:

I. Kernel aktualisieren (nur bei Debian Wheezy, nicht bei Jessie notwendig)

Zunächst muss der Debian Kernel aktualisiert werden, da EnhanceIO erst ab dem Kernel 3.9 läuft und Debian Wheezy einen 3.2er Kernel hat.

  • Hierfür muss in /etc/apt/sources.list die Quelle für den Backport-Kernel eingetragen werden:
    • deb http://ftp.debian.org/debian/ wheezy-backports main contrib non-free
      deb-src http://ftp.debian.org/debian/ wheezy-backports main contrib non-free
  • Anschließenden werden die neuen Daten über apt-get update abgerufen
  • mittels apt-cache search linux-image werden die Linux Images angezeigt
  • und apt-cache search linux-headers zeigt die Header an
  • installiert wird das Ganze dann über apt-get install -t wheezy-backports linux-image-amd64 linux-headers-amd64
  • Anschließend erfolgt ein Neustart.

II. EnhanceIO installieren

Nun wird EnhanceIO installiert. Voraussetzungen sind ein Kernel > 3.9, der im ersten Schritt installiert wurde, git, python, build-essential und dkms.

  • über apt-get install git python build-essential dkms werden diese Voraussetzungen installiert
  • über cd /root in das root Verzeichnis wechsel
  • das EnhanceIO git über Git-Repo geklonen: git clone https://github.com/STEC-inc/EnhanceIO und in das Verzeichnis mit cd EnhanceIO wechseln.
  • Nun werden die Konsolentools installiert
    • cp CLI/eio_cli /sbin/
    • chmod 700 CLI/eio_cli
  • dann die Manpage kopieren cp ./CLI/eio_cli.8 /usr/share/man/man8/
  • der Treiber muss kompiliert werden. Mit der von STEC empfohlenen Vorgangsweise funktioniert es jedoch nicht. Dieses Vorgehen funktioniert:
    • cd Driver
    • cp -r enhanceio /usr/src
    • mv /usr/src/enhanceio /usr/src/enhanceio-0.1
    • cd /usr/src/enhanceio-0.1
    • vi dkms.conf
    • Hier muss nun folgende Zeile angepasst werden PACKAGE_VERSION="0.1"
    • Dann müssen folgende dkms-Befehle ausgeführt werden:
    • dkms add -m enhanceio -v 0.1
    • dkms build -m enhanceio -v 0.1
    • dkms install -m enhanceio -v 0.1
  • anschließend neustarten.

III. Cache einrichten

Die Einrichtung des Caches bei EnhanceIO ist sehr einfach. Anders als bei anderen Programmen muss nicht erst die Größe der Partiton für die Metadaten ausgerechnet werden oder ein LVM verbund erzeugt werden. Dies erfolgt nach diesem Schema:

     eio_cli create -d /dev/sdb -s /dev/sdc4 -m wb -c enhanceio_test
                           │                 │                 │                 └Name des Caches (wird intern von EnhanceIO benötigt)
                           │                 │                 └Art des Caches(wb=writeback, wt=writethrough, ro=readonly)
                           │                 └Caching Device (SSD)
                           └Source Device (HDD)

Danach ist der Cache eingerichtet. Dieser transparent, d.h. es wird kein neues, zusätzliches Device erzeugt. Die Zugriffe auf das Source Device werden automatisch über das Cache Device gecachet.

C. Ergebnis

Das Ergebnis ist eine erhebliche Beschleunigung der virtuellen Maschinen. Das DS14MK4 lieferte vor der Einrichtung des Caches ca. 180 MB/s, die ich direkt in einer VM getestet habe, ab.

Folgende Werte ergaben sich bei Verwendung des SSD-Caches. Den RAM-Cache habe ich deaktiviert um das Ergebnis nicht zu verfälschen.

(Getestet mit einer Windows 10 VM auf einem VMWare Hypervisor 6 und einem asynchronen NFS-Share.)