Linux-IO Target (LIO) unter Ubuntu 14.04
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird. Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar. |
---|
Dieser Artikel zeigt die Installation und Konfiguration eines LIO iSCSI Targets unter Ubuntu Server 14.04.1. Weitere Informationen finden Sie im Artikel iSCSI Grundlagen.
LIO
- Linux-IO Target[1]
- Seit der Version 2.6.38 Bestandteil des Linux Kernels.
- Es unterstützt eine Vielzahl von Übertragungsstandards wie z.B. Fibre Channel oder iSCSI.
- Als Backends können unterschiedlichste Speichertechnologien benutzt werden (z.B. FileIO oder IBLOCK).
- Als Management Shell und API wird targetcli verwandt.
- Client-Server Modell[2]
- LIO als Target stellt die Serverkomponente dar.
- Ein Inititator (z.B. Windows) bildet die Clientkomponente.
Frontends (Fabric Modules)
Fabric Modules bezeichnen die Frontends des SCSI Targets. Sie transportieren die SCSI Kommandos über die Netzwerke.[3]
Folgende Übertragungswege sind mit LIO verfügbar:
- Fibre Channel
- Fibre Channel over Ethernet
- FireWire
- IBM vSCSI (virtuelles SCSI)
- iSCSI
- iSER
- SRP
- tcm_loop
- USB Gadget
- vHost
Backends (Storage Modules)
Backstores beschreiben das Backend von LIO. Es gibt unterschiedliche Ausprägungen und im nachfolgenden erfolgt eine Gegenüberstellung.[4]
FILEIO (Linux VFS devices)
Fileio beschreibt ein beliebiges File auf einem gemounteten Filesystem. Standardmäßig wird es in einem nicht gebufferten Modus betrieben. Es wird davor abgeraten Fileio mit einem Writecache zu benutzen. Obwohl es eine signifikante Performanceverbesserung bringt, kann ein nicht weggeschriebener Cache bei einem Systemcrash den Backstore beschädigen.
IBLOCK
Hier wird ein Blockdevice als Backstore benutzt. Es kann jedes Device im Verzeichnis /sys/block verwendet werden (z.B. SATA Festplatten oder auch SAS). IBLOCK Backstores bieten für gewöhnlich die beste Performance.
PSCSI
PSCSI bedeutet Linux pass-through SCSI device und beschreibt Speicherobjekte die ohne Emulation ein pass-through der SCSI Kommandos unterstützen. Wenn das SCSI device in der Ausgabe von lsscsi
erscheint wird es durch dieses Subsystem unterstützt, z.B. SAS Festplatten.
Memory Copy RAMDISK
Die Memory Copy RAMDISK stellt RAM Disks mit vollständiger SCSI Emulation zur Verfügung. Separate Memory Mappings durch Verwendung von Memory Copy for Initiators ermöglicht eine Multi-Session Funktion.
Installation von targetcli
targetcli ist in den Paketquellen nahezu jeder Distribution erhalten.
Am Beispiel von Ubuntu 14.04 wird es per sudo apt-get install --no-install-recommends targetcli
installiert.
Beispielkonfiguration eines Targets mit targetcli
Es wird anhand eines Beispiels gezeigt wie die Konfiguration eines Targets mit targetcli gelingt. Im nachfolgenden wird ein IBLOCK Device als Backstore und ein iSCSI Target konfiguriert und mit einem Windows Initiator verbunden.
targetcli starten
Als root durch die Eingabe von targetcli
gelangt man in die targetcli-shell.
Mittels ls
wird im Wurzelverzeichnis die Gesamtübersicht angezeigt. Die Backstores mit ihren Unterordnern und die Fabric Modules werden hier angezeigt.
/> ls o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- fileio ............................................... [0 Storage Object] | o- iblock ............................................... [0 Storage Object] | o- pscsi ................................................ [0 Storage Object] | o- rd_dr ................................................ [0 Storage Object] | o- rd_mcp ............................................... [0 Storage Object] o- ib_srpt ....................................................... [0 Targets] o- iscsi ......................................................... [0 Targets] o- loopback ...................................................... [0 Targets] o- qla2xxx ....................................................... [0 Targets] o- tcm_fc ........................................................ [0 Targets]
Ordner iblock
Wechseln in den Ordner iblock:
cd backstores/iblock
Neues Blockdevice anlegen
create name=iscsi dev=/dev/sdb
- In der Ausgabe von ls ist nun ein iblock Device mit dem Namen iscsi vorhanden.
/> ls o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- fileio ............................................... [0 Storage Object] | o- iblock ............................................... [1 Storage Object] | | o- iscsi .......................................... [/dev/sdb deactivated] | o- pscsi ................................................ [0 Storage Object] | o- rd_dr ................................................ [0 Storage Object] | o- rd_mcp ............................................... [0 Storage Object] o- ib_srpt ....................................................... [0 Targets] o- iscsi ......................................................... [0 Targets] o- loopback ...................................................... [0 Targets] o- qla2xxx ....................................................... [0 Targets] o- tcm_fc ........................................................ [0 Targets]
Targetnamen festlegen
- Wechseln in den Ordner /iscsi:
cd /iscsi
- Mittels create wird der Targetname erstellt. Ohne Angabe eines spezifischen Namens wird ein automatisch generierter erstellt:
/iscsi> create Created target iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246. Selected TPG Tag 1. Successfully created TPG 1.
- Nun erscheint bei der Ausgabe von
ls
im Verzeichnis iscsi der automatisch generierte Targetname. Die Unterverzeichnisse acl, luns und portals werden bei der Anlage eines Targets automatisch angelegt.
/iscsi> cd / /> ls o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- fileio ............................................... [0 Storage Object] | o- iblock ............................................... [1 Storage Object] | | o- iscsi .......................................... [/dev/sdb deactivated] | o- pscsi ................................................ [0 Storage Object] | o- rd_dr ................................................ [0 Storage Object] | o- rd_mcp ............................................... [0 Storage Object] o- ib_srpt ....................................................... [0 Targets] o- iscsi .......................................................... [1 Target] | o- iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246 ......... [1 TPG] | o- tpgt1 ....................................................... [enabled] | o- acls ....................................................... [0 ACLs] | o- luns ....................................................... [0 LUNs] | o- portals ................................................. [0 Portals] o- loopback ...................................................... [0 Targets] o- qla2xxx ....................................................... [0 Targets] o- tcm_fc ........................................................ [0 Targets]
Portals
- Hier wird angegeben auf welcher IP-Adresse des Servers das Target freigegeben wird.
- Bei nur einer IP-Adresse wird diese standardmäßig ausgewählt, ansonsten kann sie explizit angegeben werden.
- Der Port kann ebenso angepasst werden.
- Wechseln in das Portals-Verzeichnis des zuvor angelegten Targets:
/> cd iscsi/iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246/tpgt1/portals
- Anlegen eines Portals
/iscsi/iqn.20...tpgt1/portals> create Using default IP port 3260 Automatically selected IP address 10.1.102.155. Successfully created network portal 10.1.102.155:3260.
LUN konfigurieren
- Eine LUN bezeichnet eine Logical Unit (LU).
- Oft wird aber auch der Begriff Logical Unit Number verwendet.
- Sie wird zur Zuordnung für die Ansteuerung von Geräten im SCSI-Bus verwendet.
- Es können je Target ein oder mehrere LUNs bereitgestellt werden.
- In das Unterverzeichnis /luns wechseln
cd ../luns
- Anlage eines neuen LUNs auf das vorab erstellte Blockdevice.
/iscsi/iqn.20...46/tpgt1/luns> create /backstores/iblock/iscsi Selected LUN 0. Successfully created LUN 0.
ACL anlegen
- Access Control List[5]
- Hiermit wird gesteuert auf welche Interfaces ein Initiator zugreifen darf.
- In das Unterverzeichnis /acls wechseln
cd ../acls
/iscsi/iqn.20...46/tpgt1/acls> create iqn.1991-05.com.microsoft:node01.infra.local Successfully created Node ACL for iqn.1991-05.com.microsoft:node01.infra.local Created mapped LUN 0.
Speichern der Konfiguration
- In das Wurzelverzeichnis wechseln
cd /
saveconfig
und anschließend mityes
bestätigen
Fertige Konfiguration
- Hier sehen Sie eine fertiggestellte Targetkonfiguration anhand der targetcli ls Ausgabe und anhand einer Grafik.
/> ls o- / ..................................................................... [...] o- backstores .......................................................... [...] | o- fileio ............................................... [0 Storage Object] | o- iblock ............................................... [1 Storage Object] | | o- iscsi ............................................ [/dev/sdb activated] | o- pscsi ................................................ [0 Storage Object] | o- rd_dr ................................................ [0 Storage Object] | o- rd_mcp ............................................... [0 Storage Object] o- ib_srpt ....................................................... [0 Targets] o- iscsi .......................................................... [1 Target] | o- iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246 ......... [1 TPG] | o- tpgt1 ....................................................... [enabled] | o- acls ........................................................ [1 ACL] | | o- iqn.1991-05.com.microsoft:node01.infra.local ....... [1 Mapped LUN] | | o- mapped_lun0 ......................................... [lun0 (rw)] | o- luns ........................................................ [1 LUN] | | o- lun0 .................................... [iblock/iscsi (/dev/sdb)] | o- portals .................................................. [1 Portal] | o- 10.1.102.155:3260 ............................. [OK, iser disabled] o- loopback ...................................................... [0 Targets] o- qla2xxx ....................................................... [0 Targets] o- tcm_fc ........................................................ [0 Targets] />
Schematischer Ablauf
Die folgende Grafik stellt den schematischen Ablauf der Erzeugung eines iSCSI Targets dar:
Target steuern
Das LIO Target kann per service target {start|startbak|stop|status|restart}
gesteuert werden.
Konfiguration löschen
Mit delete
kann die Konfiguration gelöscht werden.
- Backstore löschen
/backstores/iblock> delete iscsi Deleted storage object iscsi.
- Fabric Module löschen
/iscsi> delete iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246 Deleted Target iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246.
Demo Modus
Der Demo Modus dient zum grundlegenden Testen der Verbindung. Er beinhaltet keinerlei Sicherheitsmaßnahmen. In einer produktiven Umgebung sollte deshalb immer eine Authentifizierung aktiviert sein. Im Verzeichnis tpg1 wird nachfolgender Befehl abgesetzt, um den Demomodus zu aktivieren und die Verbindung testen zu können.
/> iscsi/iqn.2003-01.org.linux-iscsi.iscsi.x8664:sn.7dab2d8e4246/tpgt1/ set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1
Parameter demo_mode_write_protect is now '0'. Parameter authentication is now '0'. Parameter generate_node_acls is now '1'. Parameter cache_dynamic_acls is now '1'.
Target Sichtbarkeitskontrolle
- Ein spezifisches Target kann mittels Username und Passwortangabe nur für diesen Account sichtbar gemacht werden.
- Jedoch kann es auch für alle sichtbar gemacht werden.
- Wechseln in das Targetverzeichnis (in diesem Beispiel /iscsi)
set discovery_auth enable={0,1}
- 1 und eine zusätzliche Angabe von
userid=<id>
undpassword=<pw>
grenzt die Sichtbarkeit auf den einen spezifischen User ein.set discovery_auth enable=1 userid=<id> password=1
- 0 ermöglicht eine generelle Sichtbarkeit
- Jedoch funktioniert im Moment (Version 2.1-1 von targetcli) die Option 0 nicht. Es schaltet die Sichtbarkeit nicht für alle ein sondern funktioniert wie der Parameter 1. Um die Sichtbarkeit für alle zu aktivieren muss ein Fragezeichen eingegeben werden.
- 1 und eine zusätzliche Angabe von
/iscsi> set discovery_auth enable=0 Parameter enable is now '1'. /iscsi> set discovery_auth enable=1 Parameter enable is now '1'. /iscsi> set discovery_auth enable=? Parameter enable is now '0'.
Verbindung testen
Nachfolgend wird beschrieben wie man sich von Windows 7 aus mit dem iSCSI Initiator auf das zuvor erstellte Target verbindet.
- Aufrufen des iSCSI Inititators
- Startmenü - Systemsteuerung - Verwaltung - iSCSI Initiator
- Alternativ im Startmenü unten links den Suchbegriff "iscsi" eintippen.
- Konfiguration
Weitere Informationen
- Configuring iSCSI target using 'targetcli' (wiki.rvijay.in)
- Linux iSCSI Target (TCM) (wiki.alpinelinux.org)
Einzelnachweise
- ↑ http://linux-iscsi.org/wiki/LIO LIO (linux-iscsi.org)
- ↑ http://lwn.net/Articles/424004/ A tale of two SCSI targets (lwn.net)
- ↑ http://linux-iscsi.org/wiki/LIO#Fabric_modules Fabric Modules (linux-iscsi.org)
- ↑ http://linux-iscsi.org/wiki/LIO#Backstores Backstores (linux-iscsi.org)
- ↑ http://linux-iscsi.org/wiki/LIO#Glossary Glossary (linux-iscsi.org)
Autor: Thomas Niedermeier Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates. |