ZFS iSCSI

Openindiana/Solaris 11 und COMSTAR iSCSI-Target in 5 Minuten

openindiana und iSCSI mit COMSTAR

Die Jungs von SUN haben sich irgedwann einmal gedacht, wäre es nicht toll wenn wir Dinge wie iSCSI, FCoE, FC usw... Einfach in einem großen Framework zusammenfasst.

Damit ersetzt nun COMSTAR den alten iSCSI Target Deamon. Damit ändert sich natürlich auch die Konfiguration... Wie an so vielen Stellen beim Wechsel von Solaris 10 auf Solaris 11 / Opensolaris...

Ich möchte hier im Kurzen die Einrichtung eines einfachen iSCSI Targets basierend auf ZFS für einen Microsoft Windows Host beschreiben. Ich nutze dafür ein Openindiana System. Dieses basiert auf dem letzten Opensolaris welches dann später ins aktuelle Oracle Solrais 11 übergegangen ist.

Na dann mal los!

In diesem Testsystem habe ich für dieses Beispiel eine gesonderte Festplatte vorgesehen. Auf dieser erstelle ich zuerst einen neuen ZFS Pool:

root@iscsi-host:/# zpool create iscsi-target-pool c4t2d0
root@iscsi-host:/# zpool list iscsi-target-pool
NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT
iscsi-target-pool 19,9G 124K 19,9G - 0% 1.00x ONLINE -

 

In diesem Pool lege ich nun ein weiters ZFS Volume an, welches später das eigentliche Ziel wird:

root@iscsi-host:/# zfs create -V 10g iscsi-target-pool/iscsi_10gb-lun01
root@iscsi-host:/# zfs list iscsi-target-pool/iscsi_10gb-lun01
NAME USED AVAIL REFER MOUNTPOINT
iscsi-target-pool/iscsi_10gb-lun01 10,3G 19,6G 16K -

Wie man sieht habe ich das ZFS Volume auf eine Größe von 10GB begrenzt. Das macht natürlich Sinn wenn man kurz darüber nachdenkt. Sonst würde die Poolgröße das jeweilige Target begrenzen und wenn man mehrere davon in einem Pool hat... Um die nötigen Grundlagen abzuschließen starte ich nun noch die nötigen Dieste.

root@iscsi-host:/# svcs stmf
STATE STIME FMRI
disabled 12:32:40 svc:/system/stmf:default
root@iscsi-host:/# svcadm enable stmf
root@iscsi-host:/# svcs stmf
STATE STIME FMRI
online 13:02:50 svc:/system/stmf:default
root@iscsi-host:/# stmfadm list-state
Operational Status: online
Config Status : initialized
ALUA Status : disabled
ALUA Node : 0

Zuerst schaue ich mir den Status des stmf (SCSI Target Mode Framework) an; es ist deaktiviert. Nach dem aktivieren und prüfen frage ist das stmf mit dem eigenen stmfadm(in) nach dem Status. Es soll ein iSCSI Target werden, dafür fehlt mir noch das folgende Packet:

root@iscsi-host:/# pkg install -v /network/iscsi/target
Zu installierende Pakete: 1
Geschätzter verfügbarer Speicherplatz: 9.91 GB
Geschätzter Speicherplatzverbrauch: 234.32 MB
Boot-Umgebung erstellen: Nein
Sicherung der Boot-Umgebung erstellen: Ja
Zu ändernde Services: 1
Boot-Archiv neu erstellen: Ja

Geänderte Pakete:
openindiana.org
network/iscsi/target
None -> 0.5.11,5.11-0.151.1.8:20130721T131345Z
Services:
restart_fmri:
svc:/system/manifest-import:default
DOWNLOAD PAKETE DATEIEN ÜBERTRAGUNG (MB)
Completed 1/1 37/37 0.3/0.3

PHASE AKTIONEN
Installationsphase 74/74

PHASE ELEMENTE
Paketstatus-Updatephase 1/1
Abbildstatus-Updatephase 2/2

Den Service wieder aktivieren und prüfen:

root@iscsi-host:/# svcs iscsi/target
STATE STIME FMRI
online 13:23:56 svc:/network/iscsi/target:default

Alles läuft, es kann also mit der logical unit weiter gehen. Ich lege also das logische Gerät an mit dem Ziel des vorhin angelegten ZFS Volumes:

root@iscsi-host:/# sbdadm create-lu /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01
Created the following LU:

GUID DATA SIZE SOURCE
-------------------------------- ------------------- ----------------
600144f051c247000000523ed0050001 10737418240 /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01

Vertrauen ist gut, Kontrolle ist besser! Also mal nachsehen ob alles angelegt ist und ob es auch "online" ist :-) hier hilft wieder der stmfadm(in):

root@iscsi-host:/# stmfadm list-lu -v
LU Name: 600144F051C247000000523ED0050001
Operational Status: Online
Provider Name : sbd
Alias : /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01
View Entry Count : 0
Data File : /dev/zvol/rdsk/iscsi-target-pool/iscsi_10gb-lun01
Meta File : not set
Size : 10737418240
Block Size : 512
Management URL : not set
Vendor ID : OI
Product ID : COMSTAR
Serial Num : not set
Write Protect : Disabled
Writeback Cache : Disabled
Access State : Active

Damit der eigentliche Initiator es sehen kann, müssen wir dazu noch einen "view" erstellen. Ich erstelle diesen mit Hilfe der eindeutigen GUID und prüfe ihn direkt im Anschluss:

root@iscsi-host:/# stmfadm add-view 600144F051C247000000523ED0050001
root@iscsi-host:/# stmfadm list-view -l 600144F051C247000000523ED0050001
View Entry: 0
Host group : All
Target group : All
LUN : 0

Zwischenstand:

- Ich habe alle nötigen Dienste.
- Ich habe 10GB ZFS Volume in einem extra Pool das ich nutzen möchte.
- Ich habe eine logical unit angelegt, welche dieses ZFS Volume wiederspiegelt.
- Ich habe dafür gesorgt das der initiator diese logical unit sehen kann.

Fehlt noch? Genau das Target:

root@iscsi-host:/# itadm create-target
Target iqn.2010-09.org.openindiana:02:6c3939bf-f5e5-4f28-a8d0-d0f0bbb2e1c4 successfully created
root@iscsi-host:/# itadm list-target -v
TARGET NAME STATE SESSIONS
iqn.2010-09.org.openindiana:02:6c3939bf-f5e5-4f28-a8d0-d0f0bbb2e1c4 online 0
alias: -
auth: none (defaults)
targetchapuser: -
targetchapsecret: unset
tpg-tags: default

Wie gehabt... Anlegen und zur Sicherheit noch einmal prüfen. Natürlich könnte ich den Namen des Targets ändern, soll aber schnell und einfach gehen, richtig?

Jetzt kann ich schon fast zur Microsoft Windows Maschine wechseln. Vorher sorge ich mit einem kurzen:

root@iscsi-host:/# devfsadm -i iscsi

...noch dafür dass mein konfiguriertes iSCSI Target ganz sicher im Discovery auftaucht!

Windows....
Ich lasse mich immer wieder von diesem Betriebssystem verarschen! Da will ich nur eben den Microsoft iSCSI-Initiator auf der Windows 7 Pro VM aktivieren um den Windows Part zu zeigen.... Da kommen bei der Installation so hässliche Fehlermeldungen wie:

 

"You do not have permission to update Windows. Please contact your system administrator."
"Setup could not find the update.inf file needed to update your system."
"Initiator-2.08-build3825-x64fre.exe"

 

Eine kurze Recherche zeigte mir meinen Fehler. Das Teil ist bei mir bereits installiert. Im Grunde habe ich für diese Erkentniss länger gebraucht als für die komplette Vorbereitung auf der Solaris Kiste :-( Nicht falsch verstehen, ich suche die Schuld nicht bei Windows! Ich habe halt einfach keine Ahnung von den Kisten.

Aber weiter im Text. Auf der Windows Seite habe ich folgendes gemacht:
- Das Portal über die IPv6 Adresse ermitteln lassen.
- Das Ziel gesucht und verbunden.
- Die neue "Festplatte" in der Datenträgerverwaltung inizialisiert und auf diesem ein einfaches NTFS Volume erstellt.

 

Für den Microsoft Windows Teil habe ich ein paar Bilder erstellt :-)

 

iscsi01 iscsi02 iscsi03 iscsi04
iscsi05 iscsi06 iscsi07 iscsi08