iSCSI - internet Small Computer System Interface - ist ein Verfahren zur Nutzung des SCSI-Protokolls über TCP. Es werden SCSI-Daten in TCP/IP-Pakete verpackt und über IP-Netze transportiert.
Analog zu SCSI existieren die Rollen Initiator und Target. Diese stehen zueinander in einer Client-/Server-Beziehung. I.d.R. ist jeder SCSI-ID auf dem Bus eine dieser beiden Rollen fest zugewiesen. Der Initiator ist zumeist ein Computer, der als Controller die Kommunikation mit dem Target steuert. Das Target ist ein Speichergerät wie eine Festplatte, ein Bandlaufwerk oder ein optisches Laufwerk. Ausgabegeräte wie Drucker kommen als Target ebenfalls infrage.
Initiator und Target sind im Netzwerk eindeutig addressiert durch:
eui
iqn
In beiden Fällen sind Aliase möglich, um nicht die langen, unübersichtlichen Identifier verwenden zu müssen.
Das Target wartet auf Anfragen eines SCSI-Initiators. Durch Senden eines SCSI-Kommandos startet der Initiator den Verbindungsaufbau zum Target, woraufhin das Target dem Initiator eine oder mehrere Logical Unit Numbers (LUNs) zur Adressierung des Befehls- und des Datenstroms zur Verfügung stellt.
iSCSI nutzt preiswerte, meist bereits vorhandene Netzwerkinfrastrukturen (NICs, Ethernet Hubs, Ethernet Switches) und vorhandene Netzwerkmangementtools. Durch die Kapselung der Daten in Datenpakete (Ethernet, TCP/IP) ist iSCSI routingfaehig und ermöglicht den Einsatz im LAN, SAN und WAN. Ein IP-Port kann mehrere iSCSI-Target-Devices handhaben, darunter auch Fibre-Channel Devices. Somit sind Verbindungen ohne Fibre-Channel HBAs möglich. Die Anzahl konfigurierbarer iSCSI-Target-Devices ist nicht begrenzt. Systeme mit dedizierten Diskarrays können Storage über Fileysteme wie ZFS und UFS exportieren. Über das iSCSI-Protokoll können, mit geeigneter Hardware, SAN-Umgebungen mit Fibre Channel oder iSCSI verbunden werden.
Es folgt eine Gegenüberstellung einer exemplarischen Konfiguration von iSCSI-Target und -Initiator unter den Betriebssystemen Solaris 10 und Solaris 11 im Umfeld des OSL Storage Cluster bzw. des OSL UVE. Unterschiede in der Konfiguration werden in separaten Spalten gegenübergestellt, Gemeinsamkeiten werden über beide Spalten dargestellt. Die Vorgehensweise ist als Empfehlung zu verstehen und beschränkt sich daher auf das Notwendige. Die genannten und weitere Konfigurationsmöglichkeiten werden im Anschluß an die Gegenüberstellung beschrieben.
Solaris 10 | Solaris 11 |
auf dem Target-Node den iSCSI-Target-Service aktivieren target # svcadm enable svc:/system/iscsitgt:default | auf dem Target-Node den STMF-Service aktivieren target # svcadm enable svc:/system/stmf:default |
auf dem Target-Node ein Backing Store Directory einrichten target # iscsitadm modify admin -d /etc/iscsitgt | |
auf dem Target-Node die Festplatte formatieren (100% "SOLARIS System" Partition) und labeln und als iSCSI-Target bereitstellen target # format Specify disk (enter its number): 1 format >fdisky format >labelyes format >quit | |
auf dem Target-Node die formatierte Festplatte als iSCSI-Target bereitstellen target # iscsitadm create target -b /dev/dsk/c1t0d0s2 diskvol target # iscsitadm list -v target | auf dem Target-Node eine Logical Unit der Festplatte erzeugen, LUN anzeigen und LU der Festplatte für alle Initiator-Nodes zugreifbar machen target # sbdadm create-lu /dev/dsk/c2t0d0s2 target # stmfadm list-lu LU Name: 600144F0B5418B0000004DDAC7C10001 target # stmfadm add-view 600144F0B5418B0000004DDAC7C10001 |
auf dem Targe Node - Target-Service aktivieren und Target erzeugen target # svcadm enable -r svc:/network/iscsi/target:default target # itadm create-target | |
auf dem Initiator Node für das Target-Device eine statische Discovery-Addresse setzen und die statische Discovery-Methode aktivieren initiator # iscsiadm add static-config iqn.1986-03.con.sun:02:310b3021-1d81-e201-c9f8-f47abe0d8279.diskvol,192.168.100.22:3260 initiator # iscsiadm modify discovery --static enable | |
auf dem Initiator Node die Device-Links für das Target Device erzeugen initiator # devfsadm -i iscsi initiator # echo | format | |
auf dem Initiator die iSCSI-Target Devices in den globalen Storage-Pool des OSL Storage Cluster inventarisieren - es werden PVs (physikal Volume) angelegt initiator # vi /etc/dvsc/scancfg initiator # devtab -l initiator # dkadmin -u 0 -nie /dev/rdisk/c3t600144F04B555F370000093E40495B00d0s0 initiator # dvboot | |
auf dem Initiator Node können AVs (Application Volume) auf den PVs angelegt werden initiator # smgr -c av01 -S 2g |
Das Betriebssystem Solaris kann sowohl als iSCSI-Target als auch als iSCSI Initiator konfiguriert werden.
Hardwareanforderungen:
Solaris 10
Softwareanforderungen:
Erforderliche Pakete:
$ pkginfo | grep -i sunwiscsi system SUNWiscsir Sun iSCSI Device Driver (root) system SUNWiscsitgtr Sun iSCSI-Target (Root) system SUNWiscsitgtu Sun iSCSI-Target (Usr) system SUNWiscsiu Sun iSCSI Management Utilities (usr)
Target
Solaris 10 verwendet den iSCSI-Target Dämon und das Kommando iscsitadm um iSCSI LUNs zu konfigurieren. Um ZFS auf dem Target als iSCSI LUN bereitzustellen, wird die Eigenschaft shareiscsi (zfs set shareiscsi=on) verwendet.
Es ist sicherzustellen, dass der Service svc:/system/iscsitgt:default aktiviert ist. Ggf. muss eine Aktivierung über die SMF erfolgen.
target # svcs -a | grep iscsitgt disabled 8:25:25 svc:/system/iscsitgt:default target # svcadm enable svc:/system/iscsitgt:default
Initiator
Der Service svc:/network/iscsi/initiator:default muss aktiviert sein. I.d.R. ist das der Fall. Anderenfalls ist er über die SMF zu aktivieren.
initiator # svcs -a | grep initiator disabled 8:25:25 svc:/network/iscsi/initiator:default initiator # svcadm enable svc:/network/iscsi/initiator:default
Um Target Devices auf dem Initiator-Node verwenden zu können, steht das Kommando iscsiadm zur Verfügung.
Solaris 11
Target
Solaris in der Version 11 verwendet COMSTAR (Common Multiprotocol SCSI Target). Neben dem iSCSI-Protokoll unterstützt es verschiedene Arten von SCSI Targets. ZFS Volumes können als Backing Store Devices für SCSI Targets über verschiedene Protokolle (iSCSI, Fibre Chanel, InfiniBand) verwendet werden. Das iSCSI-Target in COMSTAR ersetzt den iSCSI-Target Dämon aus Solaris 10. Auch das Kommando iscsitadm und die ZFS Eigenschaft shareiscsi steht in Solaris 11 nicht mehr zur Verfügung. Mit Solaris 10 angelegte iSCSI LUNs können nicht in das COMSTAR Format konvertiert werden.
Folgende Kommandos werden verwendet:
itadm | verwaltet SCSI Targets |
srptadm | verwaltet SCSI RDMA Protocol (SRP) Targetports |
stmfadm | das SCSI Target Mode Framework verwaltet SCSI LUNs |
sbdadm | SCSI Block Disk verwaltet SCSI-Blockdevice-basierte Logical Units, die mit dem SCSI Target Mode Framework (STMF) registriert werden |
Der Target-Betrieb von Solaris 11 erfordert folgendes Software-Paket:
Das Software-Paket wird wie folgt auf dem Target-Node ermittelt und ggf. installiert. Dabei wird auf ein Solaris-Repository zugegriffen, das vorab auf dem Target-Node zur Verfügung gestellt werden muss.
target # pkg search storage-server target # pkg install group/feature/storage-server
Der Service svc:/system/stmf:default muss aktiviert sein. Er ist über die SMF zu aktivieren.
target # svcs -a | grep stmf target # svcadm enable svc:/system/stmf:default
Initiator
Als Initiator-Node konfiguriert, verwendet Solaris 11 denselben Service wie Solaris 10.
Solaris 10 / Solaris 11
Der Target-Node und der Initiator-Node müssen an dasselbe Netzwerk angeschlossen und mit gültigen IP-Adressen konfiguriert sein.
target # ping initiator initiator is alive initiator # ping target target is alive
Solaris 10
Der iSCSI Dämon auf dem Target-Node speichert zu jedem Target Device Informationen. Zu diesem Zweck wird auf dem Target-Node wie folgt ein Backing Store Directory eingerichtet:
target # iscsitadm modify admin -d /etc/iscsitgt
Als iSCSI-Target kann eine ganze Festplatte, eine Datei oder ein ZFS erzeugt werden.
Eine ganze Festplatte als iSCSI-Target bereitstellen.
target # format Specify disk (enter its number): 1 format >fdisk No fdisk table exists. The default partition for the disk is: a 100% "SOLARIS System" partition Type "y" to accept the default partiotion, otherwise type "n" to edit the partition table. y format >label Ready to lable disk, continue? yes format >quit target # iscsitadm create target -b /dev/dsk/c1t0d0s2 diskvol
Datei als iSCSI-Target mit 500 MB:
target # iscsitadm create target --size 500m filevol
ZFS als iSCSI-Target mit 200 MB:
target # zfs create -V 200m rpool/zfsvol target # zfs set shareiscsi=on rpool/zfsvol
Die Anzeige der auf dem Target-Node konfigurierten Target Devices erfolgt mit:
target # iscsitadm list target target # iscsitadm list -v target
Solaris 11
iSCSI-Target Devices können als ganze Festplatte, als Datei oder als ZFS bereitgestellt werden.
Eine ganze Festplatte als iSCSI-Target bereitstellen.
target # format Specify disk (enter its number): 1 format >fdisk No fdisk table exists. The default partition for the disk is: a 100% "SOLARIS System" partition Type "y" to accept the default partiotion, otherwise type "n" to edit the partition table. y format >label Ready to lable disk, continue? yes format >quit target # sbdadm create-lu /dev/dsk/c2t0d0s2 target # stmfadm list-lu LU Name: 600144F0B5418B0000004DDAC7C10001 target # stmfadm add-view 600144F0B5418B0000004DDAC7C10001
Eine Datei als iSCSI-Target bereitstellen.
target # touch /filevol target # sbdadm create-lu --size 20m /filevol target # stmfadm list-lu LU Name: 600144F0B5418B0000004DDAC7A60001 target # stmfadm add-view 600144F0B5418B0000004DDAC7A60001
Ein ZFS als iSCSI-Target bereitstellen.
target # zpool create iscsipool c2t3d0 target # zfs create -V 1g iscsipool/zfsvol target # stmfadm create-lu /dev/zvol/rdsk/iscsipool/zfsvol Logical unit created: 600144F0B5418B0000004DDAC7D20001 target # stmfadm add-view 600144F0B5418B0000004DDAC7D20001
Im Gegensatz zu Solaris 10 muss in Solaris 11 das Target separat erzeugt werden. Dazu ist zuvor der Service /network/iscsi/target:default über die SMF zu aktivieren.
target # svcs -a | grep iscsi disable 8:25:25 svc:/network/iscsi/target:default target # svcadm enable -r svc:/network/iscsi/target:default target # itadm create-target
Die Authentifizierung ist optional und in sicheren Umgebungen nichr erforderlich. Zur Authentifizierung in einem iSCSI-Speichernetzwerk können zwei Verfahren genutzt werden.
Solaris 10
Target
CHAP konfigurieren
target # iscsitadm modify admin -H TargetNode target # iscsitadm modify admin -C target # iscsitadm create initiator -n iqn.1986-03.com.sun:01:00e081553307.4399f40e InitiatorNode target # iscsitadm modify initiator -C InitiatorNode
RADIUS konfigurieren
Der RADIUS-Server ist zuvor aufzusetzen und ein RADIUS-Passwort zu konfigurieren.
target # iscsitadm modify admin -r 10.0.0.55:1812 target # iscsitadm modify admin -P target # iscsitadm modify admin -R enable
Initiator
CHAP konfigurieren
initiator # iscsiadm modify initiator-node --CHAP-secret initiator # iscsiadm modify initiator-node --CHAP-name new-CHAP-name initiator # iscsiadm modify initiator-node --authentication CHAP initiator # iscsiadm modify target-param -B enable eui.5000ABCD78945E2B initiator # iscsiadm modify target-param --authentication CHAP eui.5000ABCD78945E2B initiator # iscsiadm modify target-param --CHAP-secret eui.5000ABCD78945E2B initiator # iscsiadm modify target-param --CHAP-name target-CHAP-name
RADIUS konfigurieren
Der RADIUS-Server ist zuvor aufzusetzen und ein RADIUS-Passwort zu konfigurieren.
initiator # iscsiadm list initiator-node initiator # iscsiadm modify initiator-node --radius-server 10.0.0.55:1812 initiator # iscsiadm modify initiator-node --radius-shared-secret initiator # iscsiadm modify initiator-node --radius-access enable initiator # iscsiadm modify initiator-node --authentication CHAP initiator # iscsiadm modify target-param --bi-directional-authentication enable target-iqn initiator # iscsiadm modify target-param --authentication CHAP eui.5000ABCD78945E2B
Solaris 11
Target
CHAP konfigurieren
target # itadm modify-target -a chap eui.5000ABCD78945E2B target # itadm create-initiator -s eui.8000FFCD78945A64 target # itadm modify-initiator -u eui.8000FFCD78945A64 InitiatorNode target # itadm modify-target -s eui.5000ABCD78945E2B target # itadm modify-target -u eui.5000ABCD78945E2B TargetNode
RADIUS konfigurieren
Der RADIUS-Server ist zuvor aufzusetzen und ein RADIUS-Passwort zu konfigurieren.
target # itadm modify-defaults -r 10.0.0.55:1812 target # itadm modify-defaults -d target # itadm modify-target -a radius eui.5000ABCD78945E2B
Initiator
Die Konfiguration der Autentifizierung auf dem Initiator-Node wird unter Solaris 11 analog zu Solaris 10 vorgenommen.
Auf dem Initiator-Node ist die Discovery Methode festzulegen. Sie bestimmt, auf welche Weise bereitgestellte Target Devices aufgefunden werden. Die Methoden werden nach dynamisch und statisch unterschieden. Es existieren die Methoden:
Es ist darauf zu achten, dass nur eine der Discovery Methode aktiviert ist. Sind mehrere Discovery Methoden aktiviert, kann das die Performance der Kommunikation zwische Initiator-Node und Target Device beeinträchtigen.
Solaris 10
Discovery Methode iSNS:
initiator # iscsiadm list isns-server initiator # iscsiadm add isns-server 192.168.100.11:3205 initiator # iscsiadm list discovery initiator # iscsiadm modify discovery --iSNS enable
Discovery Methode SendTargets:
initiator # iscsiadm list discovery-address initiator # iscsiadm add discovery-address 192.168.100.22:3260 initiator # iscsiadm list discovery initiator # iscsiadm modify discovery --sendtargets enable
Discovery Methode Static:
initiator # iscsiadm list static-config initiator # iscsiadm add static-config iqn.1986-03.con.sun:02:310b3021-1d81-e201-c9f8-f47abe0d8279.diskvol,192.168.100.22:3260 initiator # iscsiadm list discovery initiator # iscsiadm modify discovery --static enable
Nach dem Setzen der Discovery Methode ist folgender Schritt erforderlich, um die Target Devices auf dem Initiator-Node sichtbar zu machen:
initiator # devfsadm -i iscsi initiator # echo | format
Solaris 11
Das Einstellung der Discovery Methode und der jeweiligen Parameter erfolgt unter Solaris 11 analog zu Solaris 10.
Nachdem die iSCSI-Target Devices auf dem Initiator-Node sichtbar sind, können auf ihnen, je nach Anforderung, verschiedene Filesysteme angelegt werden.
Solaris 10
UFS auf einem Target Device anlegen und einhängen:
initiator # newfs /dev/rdsk/c0t600144F0751C8E0000005294663C0001d0 newfs: construct a new file system /dev/rdsk/c0t1d0s0: (y/n)? y /dev/rdsk/c0t600144F0751C8E0000005294663C0001d0: 286722656 sectors in 46668 cylinders of 48 tracks, 128 sectors 140001.3MB in 2917 cyl groups (16 c/g, 48.00MB/g, 5824 i/g) super-block backups (for fsck -F ufs -o b=#) at: 32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920, Initializing cylinder groups: .......................................................... super-block backups for last 10 cylinder groups at: 285773216, 285871648, 285970080, 286068512, 286166944, 286265376, 286363808, 286462240, 286560672, 286659104 initiator # mkdir /mountpoint initiator # mount dev/dsk/c0t600144F0751C8E0000005294663C0001d0 /mountpoint
Um das UFS auch nach einem Reboot verfügbar zu machen (Persistenz), ist Folgendes nötig:
initiator # vi /etc/vfstab #device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/c0t600144F0751C8E0000005294663C0001d0 - /mountpoint ufs - no -
ZFS auf einem Target Device anlegen und einhängen:
initiator # zpool create iscsipool c3t600144F04B555F370000093D00495B00d0s0 initiator # zfs create iscsipool/zfsvol initiator # zfs mount -a
Im Kontext des OSL Storage Cluster bzw. des OSL UVE können iSCSI-Target Devices wie folgt in den globalen Storage-Pool inventarisiert werden:
initiator # vi /etc/dvsc/scancfg initiator # devtab -l initiator # dkadmin -u 0 -nie /dev/rdisk/c3t600144F04B555F370000093E40495B00d0s0 initiator # dvboot
Solaris 11
Das Erstellen und Einhängen von Dateisystemen erfolgt unter Solaris 11 analog zu Solaris 10.
Solaris 10
Target
Das Kommando iscstiadm show liefert administrative und statistische Informationen zum iSCSI-Target und zu den iSCSI-Target Devices.
target # iscsitadm show admin target # iscstiadm show stats
Initiator
Das Kommando iscsiadm list liefert Informationen über den iSCSI-Initiator und die iSCSI-Target Devices.
initiator # iscsiadm list initiator-node initiator # iscsiadm list discovery initiator # iscsiadm list target -v initiator # iscsiadm list target-param iqn.1986-03.com.sun:01:0003ba0e0795.4455571f
Solaris 11
Target
Das Kommando itadm liefert Informationen über den iSCSI-Target.
target # itadm list-target -v target # itadm list-tpg -v target # itadm list-initiator -v target # itadm list-defaults
Das Kommando stmfadm liefert Informationen über den iSCSI-Target Devices.
target # stmfadm list-hg -v target # stmfadm list-tg -v target # stmfadm list-lu -v target # stmfadm list-target -v target # stmfadm list-view -v --lu-name 600144F0B5418B0000004DDAC7C10001 target # stmfadm list-state -v
Initiator
Überwachungsaufgabe auf dem Initiaor-Node werden unter Solaris 11 mit dem gleichen Befehlssatz wie unter Solaris 10 ausgeführt.
Solaris 10
Target
Mit dem Kommando iscsitadm modify können die Eigenschaften folgender Objekte bearbeitet werden.
target # iscsitadm modify target option target # iscsitadm modify initiator option target # iscsitadm modify tpgt option target # iscsitadm modify admin option
Initiator
Mit dem Kommando iscsiadm modify können Änderungen an den Eigenschaften folgender Objekte vorgenommen werden.
initiator # iscsiadm modify discovery option initiator # iscsiadm modify initiator-node option initiator # iscsiadm modify target-param option target
Solaris 11
Target
Über das Kommando itadm können Änderungen an Eigenschaften von Objekten des iSCSI-Target vorgenommen werden.
target # itadm modify-target option target_node_name target # itadm modify-initiator option initiator_node_name target # itadm modify-defaults option
Das Kommando stmfadm ändert Eigenschaften von Objekten der iSCSI-Target Devices.
target # stmfadm modify-lu option lu-name
Initiator
Änderungen der Eigenschaften auf dem Initiator-Node werden unter Solaris 11 analog zu Solaris 10 ausgeführt.
iSCSI ermöglicht den Zugriff von Initiator-Hosts wie Solaris, Linux, Mac OS und Windows auf Speichergeräte über Netzwerke. Die Speichergeräte verhalten sich aus Sicht des Initiator-Hosts wie lokale Speichermedien.
Die Unterschiede beim Einsatz des iSCSI-Protokolls auf Solaris 10 und Solaris 11 liegen in der Konfiguration des Betriebssystems als Target. Solaris 11 nutzt COMSTAR, ein Software Framework zur Konfiguration von Logical Units. Es ersetzt den iSCSI-Target Daemon aus Solaris 10. Das Kommando iscsitadm und die ZFS-Eigenschaft shareiscsi aus Solaris 10 existieren in Solaris 11 nicht mehr.
Mit Solaris 10 erstellte iSCSI LUNs sind nicht mit COMSTAR LUNs kompatibel und können nicht konvertiert werden.
COMSTAR unter Solaris 11 unterstützt die Speicherprotokolle:
COMSTAR unter Solaris 11 nutzt den Befehlssatz:
Wenn Sie Vorschläge, Ideen, Hinweise haben oder sich weiter mit dem Thema beschäftigen möchten, senden Sie bitte eine Mail mit dem Betreff "[iSCSI]" an: info@osl-it.de.
Wir halten Sie auf dem Laufenden bzw. nehmen Kontakt zu Ihnen auf!