• In diesem Bereich findet ihr Tutorials und Reviews. Die Forenrechte zur Erstellung neuer Themen sind hier eingeschränkt, da Problemdiskussionen bitte in den übrigen Forenbereichen auf Apfeltalk zu führen sind. Wer ein Tutorial oder Review einstellen möchte, kann im Unterforum "Einreichung neuer Tutorials" ein neues Thema erstellen. Die Moderatoren verschieben den Beitrag dann in den passenden Bereich.
  • Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick
  • Auch in diesem Jahr möchten wir auf unserer Webseite mit einem passenden Banner etwas weihnachtliche Stimmung verbreiten. Jeder Apfeltalker kann, darf und sollte uns einen Banner-Entwurf zusenden, wie und wo das geht, könnt Ihr hier nachlesen --> Klick

[Tutorial] iSCSI mit Mac und Linux

WDZaphod

Prinzenapfel
Registriert
10.11.06
Beiträge
546
Seit einiger Zeit interessiert mich die Möglichkeit, die HDD-Kapazität meines Debian-Homeservers auch für mein Macbook nutzen zu können.
Besonders ins Auge fiel die Möglichkeit, iSCSI-Verbindungen mit dem Macbook herstellen zu können. Dafür kann die kostenlose Software "GlobalSAN iSCSI Initiator" verwendet werden, welche HIER herunterladbar ist.

Als nächstes die Frage: iSCSI unter Debian? Folgend ein Howto, wie man einen Etch-Server als iSCSI-Target konfiguriert:

Zuerst fügen wir die folgende Zeile in /etc/apt/sources.list hinzu:

Code:
deb http://debian.hug.cx/debian/ unstable/
Ein apt-get update bringt die Paketverwaltung auf den neusten Stand.

Als nächstes werden die benötigten Softwarepakete installiert, und die Kernelmodule gebaut. Die einzelnen Zeilen können eigentlich einfach per C&P übernommen werden:

Code:
[root@heimserver]# apt-get install module-assistant debhelper linux-source-2.6.18 dpkg-dev kernel-package libncurses-dev libssl-dev linux-headers-2.6.18-4-xen-amd64

[root@heimserver]# cd /usr/src/
[root@heimserver]# tar -jxvf linux-source-2.6.18.tar.bz2
[root@heimserver]# ln -s linux-source-2.6.18 linux

[root@heimserver]# apt-get install  iscsitarget iscsitarget-source
[root@heimserver]# tar -zxvf iscsitarget.tar.gz 

[root@heimserver]# m-a a-i iscsitarget
Die Konfigutationsdate /etc/ietd.conf ist wiefolgt aufgebaut:

Code:
Target iqn.2006-07.com.example.intra:storage.disk1.vault
       Lun 0 Path=/dev/ziellaufwerk1,Type=fileio
       Alias vault1
Target iqn.2006-07.com.example.intra:storage.disk2.vault
       Lun 1 Path=/dev/ziellaufwerk2,Type=fileio
       Alias vault2
Dann kann der iSCSI Taget Deamon gestartet werden:

Code:
[root@heimserver]# /etc/init.d/iscsi-target start
Der Deamon lauscht per default auf TCP port 3260, was man vom Macbook mit:

Code:
[zaphod@macbook]# sudo nmap -sS -p 3000-4000 192.168.178.2
einfach überprüfen kann. (Wer kein nmap installiert hat: Der Portscanner in den Netzwerktools tuts auch!)

Problematisch bei mir war, daß die Datenplatte des Fileservers bereits voll durch das ext3-Rootfilesystem des Servers genutzt war, ich hatte also kein Laufwerk frei, und keine leere Partition verfügbar. Die Lösung ist Linux-Typisch einfach:
Man erzeugt ein File mit der Größe des benötigten Volumes:

Code:
[root@heimserver]# dd if=/dev/urandom of=/pfad/zum/file bs=1M count=500
Dies dauert je nach Systemleistung zwischen sehr lange und unglaublich lange o_O
Danach kann das File via loopback gemounted werden:

Code:
[root@heimserver]# losetup /dev/loop1 /pfad/zum/file
Das nun verfügbare Laufwerk /dev/loop1 könnte nun als ext3 formatiert werden - was wir aber nicht wollen. NAtürlich kann anstelle dieser Variante auch eine (leere) Festplattenpartition verwendet werden, was deutlich performanter sein dürfte.
Nun machen wir dieses "Laufwerk in a Textfile" via iSCSI verfürbar, indem wir in der /etc/ietd.conf folgenden Eintrag erstellen:

Code:
Target iqn.2006-07.com.example.intra:storage.disk1.vault
       Lun 0 Path=/dev/loop1,Type=fileio
       Alias vault1
Neustart des iSCSI-Targets:

Code:
[root@heimserver]# /etc/init.d/iscsi-target restart
Und - Tadaaaa! Ein neues (unformatiertes) Laufwerk ist im iSCSI-Initiator vefügbar, und kann als HFS+ formatiert und gemounted werden. Da sich diese Partition wie ein "echtes" Laufwerk verhält, funktioniert dort auch die Spotlight-Indizierung. Auch ein Timemachine-Backup sollte gehen. Mit diesen Mitteln hat man nun ein Teil des Speicherplatzes des Linux-Servers als HFS-Speicherplatz zur Verfügung. Das Debian-System kann darauf zwar (momentan) in keiner Weise zugreifen, aber immerhin kann das komplette File gesichert werden.

Nun sitze ich gerade in der Firma, und mache Mittag. Es wäre ja toll, an sein Laufwerk daheim zu kommen. Der Heimserver ist über dyndns erreichbar, iSCSI will nur einen TCP-Port. Fein, schnell eine Shell geöffent, und einen Tunnel gegraben:

Code:
[zaphod@macbook]#ssh [email protected] -L3260:localhost:3260
Damit ist der lokale Port 3260 auf den Heimserver Port 3260 weitergeleitet. Im iSCSI-Initiator unter der IP 127.0.0.1 (localhost) nach Volumes gesucht, kurz warten, Volume verfügbar. Die Sache ist zwar ehr träge, aber ich habe mein Laufwerk nun unterwechs verfügbar!

Spielereien für die nächsten Tage:
  • Anstatt direkt in das Loopback-Textfile zu schreiben, soll ein LVM (Logical Volume Manager) dazwischengeschaltet werden. Damit kann "on the fly" die Kapazität des iSCSI-Devices verändert werden, indem ein weiteres File (oder Laufwerk) hinzugefügt wird. Auch LVM-Snapshopts können evtl. sinnvoll eingesetzt werden.
  • Umzug des iSCSi-Tagets auf das "große Eisen" - eine Sun Fire V210 mit momentan 14x146Gb Fibrechannel-HDDs. Die Kiste läuft unter Solaris 10, welches ZFS (ein ohne Reboot erweiterbares Filesystem) und iSCSI von Haus aus unterstützt.
  • Test, wie man mit mehreren Rechner auf die gleiche LUN (iSCSI-Volume) zugreifen kann
Viel Spaß beim basteln ;)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person