Stor IT Back - Ihr Speicherspezialist
Für Linux wird ebenfalls ein Software Initiator für iSCSI entwickelt. Die ersten Versionen
waren im Juni 2005 verfügbar. Neben dem Initiator ist auch ein Target für iSCSI vorhanden.
Ab dem 2.6er Kernel werden Treiber und Daemon im Sourcecode unter
GNU General Public License angeboten.
Sowohl der Initiator, wie auch das Target sind meist in den Bibliotheken der Distributionen enthalten.
Ansonsten werden zur Kompilierung die Header-Files des genutzten Kernels, sowie einige
Tools benötigt.
Damit kann auch für Linux die Welt von iSCSI ohne große
Kosten erschlossen werden. Als Schnittstelle können die vorhandenen Netzwerkkarten
(Ethernet Gigabit oder Ethernet 10 Gigabit) genutzt werden. Treiber und Deamon
übernehmen die Umwandlung der SCSI- in iSCSI-Befehle und die Verpackung
in Ethernet-Pakete.
In der /etc/iscsi.conf (je nach Distribution auch in anderen Verzeichnissen) lassen sich sämtlich Einstellungen für den
Daemon vornehmen, welches Target soll verwendet werden, spezielle Einstellungen
für TCP und iSCSI, sowie Multipath- und Failover-Konfigurationen.
In den meisten kommerziellen Distributionen ist ein fertiger iSCSI-Initiator
enthalten. Meist mit einer komfortablen Administrationsoberfläche, die
eine manuelle Bearbeitung der Konfiguration überflüssig macht.
Die Produktions-Pakete sind ausgereift und auch für Enterprise-Anwendungen
zu empfehlen. Die kurze Zeit für die eventuelle Erstellung der Programme
lohnt sich sicherlich.
Die Source-Codes lassen sich unter https://github.com/open-iscsi/open-iscsi
oder https://sourceforge.net/projects/linux-iscsi/
downloaden. Dort finden sich auch Anleitungen und man-pages für Programme
und Konfiguration.
Als Beispiel erfolgt die Installation des iSCSI-Initiators unter Debian mit
apt-get install open-iscsi
Es werden meist noch andere benötigte Pakete installiert. Nach erfolgreicher Installation befinden
sich die Konfigurationsdateien unter /etc/iscsi/. Dies ist der initiatorname.iscsi und iscsid.conf.
In der initiatorname.iscsi ist bei der Installation ein Default-Name eingetragen, dieser sollte
entsprechend der eigenen Umgebung angepasst werden. Wird zum Beispiel die LUN auf dem iSCSI Storage nur für einen bestimmten
Initiator freigegeben, so kann dies unter anderem durch den IQN vorgenommen werden. Weiterhin besteht auch die Möglichkeit,
eine Freigabe (bzw. Mapping) nur für eine bestimmte IP-Adresse vorzunehmen.
In der iscsid.conf muss auf jeden Fall der Parameter "node.startup" von "manual" auf "automatic" geändert werden,
ansonsten müsste der Initiator immer nach einem Reboot per Hand gestartet werden. Angaben zu
CHAP-User und Passwort können hier auch gleich vorgegeben werden.
Das Haupttool für die Commandline-Administrations ist iscsiadm. Es folgt eine kurze Aufstellung der möglichen Parameter:
./iscsiadm --help
iscsiadm -m discoverydb [ -hV ] [ -d debug_level ] [-P printlevel] [ -t type -p ip:port -I ifaceN ... [ -Dl ] ] | [ [ -p ip:port -t type] [ -o operation ] [ -n name ] [ -v value ] [ -lD ] ]
iscsiadm -m discovery [ -hV ] [ -d debug_level ] [-P printlevel] [ -t type -p ip:port -I ifaceN ... [ -l ] ] | [ [ -p ip:port ] [ -l | -D ] ]
iscsiadm -m node [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I ifaceN ] [ -l | -u | -R | -s] ] [ [ -o operation ] [ -n name ] [ -v value ] ]
iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel] [ -r sessionid | sysfsdir [ -R | -u | -s ] [ -o operation ] [ -n name ] [ -v value ] ]
iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename | -H hostno|MAC ] [ [ -o operation ] [ -n name ] [ -v value ] ] [ -C ping [ -a ip ] [ -b packetsize ] [ -c count ] [ -i interval ] ]
iscsiadm -m fw [ -d debug_level ] [ -l ]
iscsiadm -m host [ -P printlevel ] [ -H hostno|MAC ] [ [ -C chap [ -x chap_tbl_idx ] ] | [ -C flashnode [ -A portal_type ] [ -x flashnode_idx ] ] | [ -C stats ] ] [ [ -o operation ] [ -n name ] [ -v value ] ]
iscsiadm -k priority
Ein wichtiges Kommando ist iscsiadm -m discovery -t sendtargets -p x.y.z.a, welches die Targets auf der IP-Adresse x.y.z.a anzeigt. Es sollte dann ein Target mit dem IQN angezeigt werden.
Ist das Target identifiziert, so kann mit iscsiadm -m node -T iqn --login eine Verbindung mit dem Target aufgebaut werden. Wichtig ist bei einer CHAP Authentifizierung der richtige User und
das passende Passwort in der iscsid.conf. Ansonsten wird die Anmeldung mit einem Authentifizierungsfehler abbrechen. Die iqn in dem node Befehl ist das Ergebnis aus dem discovery Aufruf.
Ist zum Beispiel eine Festplatten-LUN auf dem Target freigegeben, so wird dieses als "interne" Festplatte erkannt. Ein neues Device wird eingerichtet und dieses kann
dann genutzt werden. So kann zum Beispiel ein Filesystem mit mkfs.ext4 /dev/sdx angelegt werden.