SnapRAID unter Debian installieren

index
SnapRAID ist ein nicht standardisiertes RAID-Verfahren. Wie der Name andeutet, handelt es sich um ein Snapshot-RAID, ähnlich zu FlexRAID.

Der Autor charakterisiert es im Vergleich zu herkömmlichen RAID-Produkten dadurch, dass die Paritätsdaten nicht in Echtzeit aktualisiert werden. Dadurch ergeben sich besonders für Anwendungen die nicht unter Dauerlast stehen interessante Möglichkeiten.

Praktisch funktioniert SnapRAID wie ein RAID4 mit separater Paritätsdaten-Festplatte, deren Inhalt nur bei Bedarf aktualisiert wird. Dadurch ist SnapRAID zwischen herkömmlichen RAID-Systemen und Backups einzuordnen. Angesprochen werden SnapRAID-Volumes ähnliche wie JBOD-Konfigurationen, also jede Festplatte einzeln.

Im Unterschied zur kommerziellen Lösung FlexRAID bietet SnapRAID nur die Snapshot-Funktion. Es gibt seit Version 3.0 zwar eine Pooling-Funktion, um die einzelnen Festplatten als ein großes Volume ins Betriebssystem abzubilden, diese ist aber noch nicht ausgereift und verwendet symbolische Links. Auch Monitoring-Funktionen oder die Aufgabenplanung für die Erstellung von Snapshots oder eine grafische Oberfläche sucht man vergeblich. Diese Einfachheit ist sehr lobenswert und entspricht der UNIX-Philosophie.

Eine Konsequenz daraus ist, dass zwar keine Steigerung des Maximaldurchsatzes durch Lesen von mehreren Festplatten erreicht wird, dafür aber auch immer nur die Festplatten laufen müssen, von denen aktiv gelesen wird. In einem Fileserver mit mehreren dutzend Festplatten spart diese Eigenschaft eine Menge Strom.

In der Praxis werden alle Festplatten einzeln mit einem Dateisystem formatiert und eingebunden.

Diese Eigenschaft hilft auch beim Ausfall mehrerer Festplatten. SnapRAID kann sowohl mit einer als auch mit zwei Fesplatten für Paritätsdaten betrieben werden. Je nachdem dürfen dann eine oder zwei Festplatten ausfallen. Ein Vorteil der einzelnen Formatierung gegenüber herkömmlichen RAID-Verbünden ist, dass auch bei Ausfall mehrerer Festplatten die Daten von den intakten Festplatten weiterhin gelesen werden können.

Ein ausführlicher Vergleich verschiedener RAID-Systeme sowie den beliebten Volume-Managern ZFS und BTRFS bietet der Autor hier an. Fragen zu speziellen Funktionen von SnapRAID werden hier beantwortet.

Installation

Leider stehen noch keine Debian-Pakete für SnapRAID zur Verfügung, sodass das Programm per Hand kompiliert werden muss. Das geht mit dem Werkzeug checkinstall, dass ein rudimentäres Debian-Paket erstellt, leicht von der Hand.

apt-get install build-essential checkinstall
cd /usr/local/src/
wget -O snapraid.tar.gz http://sourceforge.net/projects/snapraid/files/snapraid-3.0.tar.gz/download
tar xvzf snapraid.tar.gz
cd snapraid-3.0/
./configure && make && make check

Nach Ausführung der Tests sollte folgende Bestätigung für das erfolgreiche Durchlaufen erscheinen.

No error
echo Success!
Success!
make[1]: Leaving directory `/usr/local/src/snapraid-3.0'

Daraufhin kann SnapRAID und die SnapRAID-Konfiguration installiert werden.

checkinstall make install
cp snapraid.conf.example /etc/snapraid.conf

Konfiguration

Die Einrichtung eines SnapRAID-Volumes ist denkbar einfach über die Konfigurationsdatei /etc/snapraid.conf zu steuern. Hier ein Beispiel als Vorlage.

# Paritaetsdaten-Datei auf eigener Festplatte
parity /storage/b2c07a05-a3e7-44ca-bc7a-1d29a0a2258a_parity/parity

# Hash-Indizes-Datei auf jeder nicht-Paritaetsdaten Festplatten
content /storage/03e2a8fb-be5d-4791-a1d0-e42597771e57/.content
content /storage/3c2b7a4d-aad1-4731-afac-51c163349726/.content
content /storage/82191233-42e8-4cca-8f6d-ba9e0376e5e0/.content
content /storage/a3a5b302-9c69-465d-a910-839abd3fc553/.content

# Angabe der Namen und Pfade zu den Daten-Festplatten
disk 03e2a8fb-be5d-4791-a1d0-e42597771e57 /storage/03e2a8fb-be5d-4791-a1d0-e42597771e57/
disk 3c2b7a4d-aad1-4731-afac-51c163349726 /storage/3c2b7a4d-aad1-4731-afac-51c163349726/
disk 82191233-42e8-4cca-8f6d-ba9e0376e5e0 /storage/82191233-42e8-4cca-8f6d-ba9e0376e5e0/
disk a3a5b302-9c69-465d-a910-839abd3fc553 /storage/a3a5b302-9c69-465d-a910-839abd3fc553/

exclude *.bak
exclude *.unrecoverable
exclude /tmp/
exclude /lost+found/

block_size 256