Wer vom “Speichern im Netz” spricht, meint oft das Einbinden von Geräten via I-SCSI. Dieser Artikel stellt die einfache Alternative ATA over Ethernet vor, die sich schnell zu einem Software-Raid ausbauen lässt.
Ganz ähnlich wie I-SCSI ist auch ATA over Ethernet (AOE, [1]) ein Protokoll für den Zugriff auf Datenträger übers Ethernet. Der Zugriff auf die Datenträger erfolgt mit ATA-Befehlen, die das Protokoll zur Übertragung über das Netzwerk in Datenpakete verpackt und auf der Gegenseite wieder zusammenbaut (Abbildung1). Diese Vorgehensweise ermöglicht einen vergleichsweise Hardware-nahen Zugriff auf Speichergeräte über das Netzwerk hinweg.
Die genauen Spezifikationen des Protokolls lassen sich auf der Webseite [1] nachlesen: Ganz ähnlich wie bei I-SCSI bezeichnet die Literatur das System, das die physikalischen Datenträger bereitstellt, als Target. Initiator heißt das System, das die Datenträger einbindet.
Benötigte Komponenten
Für den Betrieb eines AOE-Setups ist nicht viel Software erforderlich. Auf dem Target muss der Administrator nur das Paket »vblade« installieren, auf Debian-Systemen geht das schnell mit »aptitude install vblade« . Nicht weniger einfach läuft die Prozedur auf dem Initiator, nur sind hier die AOE-Tools erforderlich (»aptitude install aoe-tools« ). Jetzt steht das Kernelmodul »aoe« bereit, »modprobe aoe« lädt es. Soll es beim Start standardmäßig geladen werden, ist ein entsprechender Eintrag in der Datei »/etc/modules« erforderlich.
Bereitstellung von Datenträgern
Das Bereitstellen von Datenträgern oder Partitionen übernimmt das Programm Vblade. Es erwartet als Parameter eine Shelf-Nummer (Shelf steht für Regal oder Ablage), eine Slot-Nummer (Einschub), die Netzwerkschnittstelle, über welche die Bereitstellung erfolgen soll, sowie die Angabe der Partition oder des Datenträgers. Auch eine Datei bereitzustellen, zum Beispiel Raw-Images, ist möglich. Die Shelf- und die Slot-Nummer oder deren Kombination müssen allerdings im Netzwerk eindeutig sein.
Neben Optionen für die schreibgeschützte Bereitstellung und Einstellungen des Puffers oder der Zugriffsmodi ist auch die Angabe von MAC-Adressen als kommaseparierte Liste möglich. Das funktioniert als Whitelist: Nur Computer mit einer der angegebenen MAC-Adressen haben Zugriff auf die Daten.
Zu Testzwecken bietet es sich an, Raw-Images zu verwenden. Der folgende Befehl erzeugt ein Abbild mit einer Größe von 10 GByte:
dd if=/dev/zero of=/test/raw_image.rawbs=1M count=10000
Wer es lieber mit realen Datenträgern probieren möchte, setzt statt des Image »/test/raw_image.raw« einfach das gewünschte Device ein, etwa »/dev/sdc1« für die erste Partition der als »sdc« eingebundenen Festplatte.
Shelfs und Slots
Um das soeben erzeugte Raw-Image auf dem Target über Shelf 2 und Slot 1 freizugeben, reicht ein einfaches:
vblade 2 1 eth0 /test/raw_image.raw
Wenn auf dem Initiator-System alle Voraussetzungen erfüllt sind, dann wird der Datenträger sofort sichtbar sein. Ist das nicht der Fall, dann sollte der Administrator den Befehl »aoe-discover« aufrufen. Welche Datenträger dem System zur Verfügung stehen, zeigt »ls /dev/etherd« , detailliertere Angaben erhält der Administrator durch den Aufruf von »aoe-stat« (Abbildung 2).
Vblade zu verwenden reicht für Testzwecke, wobei der Admin das Programm im Vordergrund ausführt (Abbruch mit [Strg]+[C]) und jede Menge Debug-Informationen erhält. Als Hintergrunddienst steht »vbladed« zur Verfügung. In beiden Fällen sind bereitgestellte Daten nach einem Neustart jedoch erst mal wieder verschwunden.
Wer das Einbinden von Initiatoren und Targets automatisieren will, greift auf »vblade-persist« zurück. Das Programm ist jedoch in einem separaten Paket enthalten und will erst per »aptitude install vblade-persist« installiert sein. Um das oben erzeugte Raw-Image permanent bereitzustellen, bedarf es im ersten Schritt eines persistenten Exports:
vblade-persist setup 2 1 eth0 /test/raw_image.raw
Hierbei muss der Admin absolute Pfade für den Datenträger oder die Datei verwenden. Danach markiert er das Device mit »vblade-persist auto 2 1« für den automatischen Start. Um es auch ohne Neustart umgehend bereitzustellen, kann er es auch mit »vblade-persist start 2 1« sofort aktivieren. Einen Überblick über alle persistenten AOE-Exporte sowie deren Status gibt der Aufruf »vblade-persist ls« .
Netzwerk-Raid
Wer im eigenen Netzwerk mehrere Computer vorhält, die ohnehin rund um die Uhr im Betrieb sind und außerdem über ungenutzte Speicherkapazitäten verfügen, mag sich wünschen, diese Ressourcen auch anderen PCs zur Verfügung zu stellen. Noch etwas weiter gedacht wird daraus schnell eine Art Raid-System, dessen Speicher der Admin zentral bereitstellt. Weil mehrere Computer involviert sind, bedarf es allerdings auch einiger Abwägungen hinsichtlich der Ausfallwahrscheinlichkeit, doch schon die Wahl eines geeigneten Raid-Levels nimmt der Thematik die Brisanz.
Das folgende Beispiel erzeugt der Einfachheit halber einen Raid-5-Verbund. Im ersten Schritt hat der Admin auf drei Systemen jeweils ein Raw-Image erzeugt und zur Verfügung gestellt (vergleiche Abbildungen 1 und 2). Den Raid-Verbund erzeugt er einfach mit dem Kommando »mdadm« (Listing 1). Auf dem neu erzeugten Raid-Verbund lässt sich jetzt beispielsweise ein Ext-4-Dateisystem erzeugen:
mkfs.ext4 -L nwraid /dev/md0
Damit der Administrator bei einem Ausfall des Initiators ohne großen Zeitverlust den Raid-Verbund auf einem anderen System reaktivieren kann, sollte er sich eine entsprechende Mdadm-Konfigurationsdatei »mdadm.conf« anlegen und sicher aufbewahren (Listing 2).
Listing 1
Mdadm erzeugt den Raid
01 mdadm --create /dev/md0 --auto md --level=5 --raid-devices=3 /dev/etherd/e1.1 /dev/etherd/e2.1 /dev/etherd/e3.1 02 03 mdadm: Defaulting to version 1.2 metadata 04 mdadm: array /dev/md0 started.
Listing 2
mdadm.conf
01 DEVICE /dev/etherd/e*.* 02 # auto-create devices with Debian standard permissions 03 CREATE owner=root group=disk mode=0660 auto=yes 04 # automatically tag new arrays as belonging to the local system 05 HOMEHOST <system> 06 # instruct the monitoring daemon where to send mail alerts 07 MAILADDR root 08 # definitions of existing MD arrays 09 ARRAY /dev/md/0 devices=/dev/etherd/e1.1,/dev/etherd/e2.1,/dev/etherd/e3.1
Experimentierfreudige Administratoren greifen statt zu Mdadm zu Btr-FS, weil es in der Handhabung deutlich einfacher als Mdadm ist, dabei aber mehr Möglichkeiten mitbringt, zum Beispiel Inline-Komprimierung oder Snapshots. Listing 3 zeigt, wie schnell das Einrichten eines Raid-Verbunds mit Btr-FS gelingt.
Listing 3
Raid-Verbund mit Btr-FS
01 # mkfs.btrfs -d raid5 -m raid5 -L nwraid /dev/etherd/e1.1 /dev/etherd/e2.1 /dev/etherd/e3.1 02 03 WARNING! - Btrfs v0.20-rc1 IS EXPERIMENTAL 04 WARNING! - see http://btrfs.wiki.kernel.org before using 05 06 adding device /dev/etherd/e2.1 id 2 07 adding device /dev/etherd/e3.1 id 3 08 Setting RAID5/6 feature flag 09 fs created label nwraid on /dev/etherd/e1.1 10 nodesize 4096 leafsize 4096 sectorsize 4096 size 29.30GB 11 Btrfs v0.20-rc1
Datensicherung und Virtualisierung
Wer öfter Datenträger-Sicherungen übers Netzwerk anfertigen muss (wie das beispielsweise in der Datenforensik häufig der Fall ist), wird besonderen Gefallen an AOE finden: Das Bereitstellen eines Datenträgers über das Netzwerk ist verglichen mit I-SCSI deutlich schneller erledigt. Auch im Vergleich zu einer Sicherung über Netcat in Verbindung mit Dd oder Ewfacquire ist AOE wesentlich komfortabler. Und Forensiker freuen sich, weil das beliebte Sicherungsprogramm Guymager [2] AOE-Geräte auf Anhieb erkennt (Abbildung 3).
Die Freude trübt jedoch ein wenig, dass Vblade bisher neben Debian lediglich auf der Grml-CD [3] sowie in Caine [4] in der Version 5 enthalten ist. Für andere Distributionen müssen Anwender bisher auf die Archive von Sourceforge [5] zurückgreifen. Auf Anfrage an die einschlägigen Projekte hat bis zum Redaktionsschluss lediglich das Team von Deftlinux [6] mit einer Zusage für die nächste Version reagiert.
Sichergestellte Systeme virtualisieren
AOE ist auch für Virtualisierungszwecke ein hilfreiches Werkzeug. In Verbindung mit Xmount ([7], Listing 4) kann der Admin schnell ein gesichertes Image als virtuelle Festplatte ins Netzwerk stellen. Wie Xmount funktioniert, erklärt ein früherer Artikel des Linux-Magazins [8]. Forensiker, die ein Datenträgerabbild im Encase-Format mit Schreibsupport bereitstellen wollen, sollten dieses zunächst virtuell in ein Raw-Image umwandeln und das Raw-File anschließend als Datenträger einbinden.
Listing 4
Xmount
01 # xmount --in ewf --out dd --cache daten.ovl Festplattenabbild.e?? /mnt/analyse 02 # vblade 2 3 eth0 /mnt/analyse/Festplattenabbild.dd
Auf einem entfernten Rechner kann die Virtualisierung des Systems beispielsweise über »qemu-kvm« erfolgen. Im einfachsten Falle gelingt das mit
qemu-kvm -m 1024 -hda /dev/etherd/e2.3
das bewusst auf mögliche Optimierungen verzichtet und keine Anpassungen des Gastsystems an die neue Umgebung berücksichtigt, dafür aber deutlich klarere Fehlermeldungen ausgeben wird.
Ausfall eines Targets oder des Initiators
Fällt ein Target aus, ist dies im Prinzip nichts anderes als der Ausfall einer Festplatte in einem normalen Raid-Verbund. Der Admin braucht nur das defekte Gerät durch ein funktionstüchtiges auszutauschen, wobei er beispielsweise auch eine reale Festplatte durch ein Raw-Image auf einer anderen Maschine ersetzen kann. Der neue Datenträger sollte nur der Größe des ursprünglichen entsprechen und ist schließlich über Vblade-persist freizugeben.
Wer zum Beispiel das mit »e2.1« verbundene und ausgefallene Device lösen will, ruft den folgenden Befehl auf:
mdadm /dev/md0 --remove /dev/etherd/e2.1
Anschließend nimmt er das neue Gerät, hier als »e4.1« dargestellt, in den Raid-Verbund auf:
mdadm /dev/md0 --add /dev/etherd/e4.1
Im Hintergrund startet die Software nun den Rebuild-Prozess, der je nach Größe des Systems einige Stunden in Anspruch nehmen kann.
Fällt dagegen ein Initiator aus, dann lässt sich der Verbund einfach auf einem neuen System wieder aufbauen. Hierbei kann der Administrator auf die zuvor gesicherte Konfiguration zurückgreifen oder direkt Mdadm verwenden:
mdadm --assemble /dev/md0 /dev/etherd/e1.1/dev/etherd/e2.1 /dev/etherd/e3.1
Im diesem Fall stellt der Befehl das Raid auf einem anderen System wieder her:
Fazit
ATA over Ethernet ist ein vielversprechendes Protokoll, das vieles vereinfacht und eigentlich mehr Beachtung verdient hat. Der richtige Einsatz kann Administratoren und Forensikern die Arbeit an einigen Stellen erleichtern – nicht selten lassen sich damit sogar Raid-Strukturen virtualisieren. (mfe)
Infos
- AOE-Standard: http://support.coraid.com/documents/aoer11.txt
- Guymager: http://guymager.sf.net
- Grml: http://www.grml.org
- Caine: http://www.caine-live.net
- AOE-Tools bei Sourceforge: http://aoetools.sourceforge.net
- Deftlinux: http://www.deftlinux.net
- Xmount-Homepage: http://www.pinguin.lu
- Hans-Peter Merkel und Markus Feilner, “Kreuz und quer”: Linux-Magazin 10/09, S. 90









