Home NAS mit iSCSI – Server & iSCSI Target (Teil 1/3)

Zuhause in irgendeiner Art ein System zu haben um Daten zu speichern, ist mittlerweile nichts besonderes mehr. Die einen nutzen diese Speicher um der Familie gemeinsamen Zugriff zu gewähren, die anderen um Daten – beispielsweise vom Laptop – zu sichern. Wenn das NAS dann auch gespiegelte Festplatten besitzt dürfte eigentlich nicht viel passieren.

Man sollte sich wirklich einmal Gedanken darum machen was los ist, wenn man die Daten des Laptops oder des Rechners zu Hause verliert – zum Beispiel durch einen Festplattendefekt. Also mir persönlich ist das keine angenehme Vorstellung. Deshalb habe ich mir auch das System aufgebaut, welches hier beschrieben wird. Ich finde es wirklich einfach  zu benutzen und es erfüllt seinen Zweck mehr als manche gekauften Lösungen.

Warum überhaupt iSCSI ?

Wenigstens unter Linux (mit anderen OSs kenne ich das nicht) hat das ganze den Charme, das man die per iSCSI an gereichte Festplatte (oder das Volume) als normale Festplatte sieht – als Blockdevice. Das ist ein Unterschied zu beispielsweise NFS oder Samba. Des Weiteren ist iSCSI, sofern man eine passende Netzwerkgeschwindigkeit hat, auch recht schnell. Um das ganze recht performant nutzen zu können sollte man also wenigstens über Gigabit Ethernet verfügen. Damit ist auch schon ein weiterer Vorteil von iSCSI angesprochen, der es gerade auch in Firmen interessant macht – man benötigt “nur” Netzwerk. Keine spezielle Verkabelung oder ähnliches. In Firmen würde man allerdings das iSCSI Geschäft über zwei (redundante) dedizierte Netzwerkinterfaces laufen lassen.

Der “Server”

Der “Server” besteht aus einem PC, der mit mindestens zwei Festplatten ausgestattet ist. Server schreibe ich in Anführungszeichen, da die Hardware natürlich keine Serverhardware ist und mein System auch nur dann läuft, wenn es gebraucht wird. Des Weiteren ist an dem PC ein USB Stick angeschlossen, der mit >4GB das Betriebssystem beherbergt. Der USB Stick deshalb, da man auf diese Weise die beiden vorhandenen Festplatten komplett für das Raid nutzen kann und nicht einen Teil für das OS verliert. Man kann es natürlich auch anders machen – ich habs halt so gemacht.

OS

Auf dem USB Stick wird das OS installiert. Dazu bootet man beispielsweise mit einer Ubuntu Live CD (ich habe den Ubuntu Server genommen) und installiert anstatt auf die Platten auf den Stick. Da wir lediglich die eingebauten Festplatten als iSCSI bereitstellen möchten, sind während der Installation keine besonderen Pakete nötig – einfach ein Minimalsystem installieren. Auf die Installation an sich gehe ich hier nicht weiter ein.

Raid

Nachdem das System installiert ist und erfolgreich von dem USB Stick bootet, kann man das Raid Device erstellen. Dazu müssen die Tools installiert werden:

apt-get install mdadm

Nach der Installation kann mit Hilfe von

mdadm --create /dev/md0 --level=1 raid-devices=2 /dev/sda1 /dev/sdb1

das Raid Device angelegt werden. In dem Beispiel würde das Device aus /dev/sda1 und /dev/sdb1 bestehen. Damit auch bei Problemen nichts falsch läuft, sollte man die Raid Konfiguration in die /etc/mdadm/mdadm.conf eintragen. Das sieht beispielsweise so aus:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=1bc8e95a:40e106f6:7756543e:82c7b110 devices=/dev/sda1,/dev/sdb1

Bereits nach dem …create Befehl beginnt das System die Platten zu synchronisieren. Diesen Vorgang sollte man abwarten, bevor man die Platten benutzt.

iSCSI Target

Um iSCSI nutzen zu können, muss das Paket iscsitarget installiert werden.

apt-get install iscsitarget

Nach der Installation findet sich unter /etc/ eine neue Konfigurationsdatei -> ietd.conf. Diese ist für die Konfiguration des iSCSI Target (-> Server) verantwortlich. Um unseren Server einzurichten verwenden wir einfach folgende Konfiguration:

Target iqn.2008-04.local.home:SecureISCSI
 IncomingUser linux-aha secret
 OutgoingUser linux-aha password
 Lun 0 Path=/dev/md0,Type=fileio
 Alias SecureISCSI
 MaxConnections         1
 InitialR2T             Yes
 ImmediateData          No
 MaxRecvDataSegmentLength 8192
 MaxXmitDataSegmentLength 8192
 MaxBurstLength         262144
 FirstBurstLength       65536
 DefaultTime2Wait       2
 DefaultTime2Retain     20
 MaxOutstandingR2T      8
 DataPDUInOrder         Yes
 DataSequenceInOrder    Yes
 ErrorRecoveryLevel     0
 HeaderDigest           CRC32C,None
 DataDigest             CRC32C,None
 Wthreads               8

Mit dieser Konfiguration ist iscsitarget fertig konfiguriert und nach einem reload des Dienstes steht die Platte zur Verfügung.

Wie man sieht gibt es unter iSCSI auch eine – naja – Authentifizierung. Das ganze als sicher zu bezeichnen würde ich mich nicht wagen, allerdings ist es besser als nichts und man kann sich damit auch ein wenig vor Fehlern schützen, in dem man verschiedene Benutzer und Passwörter vergibt.

Im nächsten Teil geht es dann um den Initiator – den Client.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>