ISCSI: Unterschied zwischen den Versionen

Aus bytewerk-Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „===ISCSI for dummies=== ====Der Server (Target)==== =====Kernelconfig===== * Device Drivers → ** [M] CONFIG_TARGET_CORE (Generic Target Core Mod (TCM) and C…“)
 
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 10: Zeile 10:
*** [M] CONFIG_TCM_PSCSI (TCM/pSCSI Subsystem Plugin for Linux/SCSI)
*** [M] CONFIG_TCM_PSCSI (TCM/pSCSI Subsystem Plugin for Linux/SCSI)
WICHTIG: Diese Punkte <u>müssen</u> als Module gebaut werden.
WICHTIG: Diese Punkte <u>müssen</u> als Module gebaut werden.

CONFIG_TCM_IBLOCK wird benötigt, wenn man Block-Devices freigeben möchte<br>
CONFIG_TCM_FILEIO für Dateien<br>
CONFIG_TCM_PSCSI für "echte" SCSI-Geräte (z.B. CD-Laufwerk)<br>


=====Einrichten von Targets=====
=====Einrichten von Targets=====
Zeile 15: Zeile 19:
Dieses Tool könnt ihr über euren Paketmanager beziehen.
Dieses Tool könnt ihr über euren Paketmanager beziehen.


'''Generell:'''
Entsprechend dem Gerät, welches ihr als Target einrichten wollt, muss das Modul geladen werden.
target_core_file, target_core_iblock oder target_core_pscsi.<br>
Der Backstore muss natürlich entsprechend im richtigen Ordner angelegt werden.

iblock in /backstores/iblock<br>
pscsi in /backstore/pscsi<br>
usw…

'''Block-Device als Target einrichten:'''

''targetcli'' starten (Tip: Es kann Tab-Completion):
<pre>
<pre>
$ sudo targetcli
test
</pre>

In ''targetcli'' angekommen erstellt man zuerst einen "Backstore". Ich verwende exemplarisch sda1. Es kann aber auch jedes andere Blockdevice oder Partition sein.
<pre>
/> cd /backstores/iblock
/backstores/iblock> create my_blockdevice /dev/sda1
Generating a wwn serial.
Created iblock storage object my_blockdevice using /dev/sda1.
/>
</pre>

Anschließend wird das iSCSI-Target initialisiert:
<pre>
/backstores/iblock> cd /iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42.
Selected TPG Tag 1.
Successfully created TPG 1.
</pre>

Das "Portal" repräsentiert einen Netzwerkserver bei iSCSI und muss ebenfalls gestartet/angelegt werden:
<pre>
/iscsi> cd iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42/tpgt1/portals
/iscsi/iqn.20...tpgt1/portals> create
Using default IP port 3260
Automatically selected IP address 10.42.0.193.
Successfully created network portal 10.42.0.193:3260.
</pre>

Innerhalb dieses IQNs (dieser kryptische Name) wird nun eine LUN über iSCSI exportiert.
Als letztes wird das LUN (der "Backstore") über iSCSI exportiert/verbunden
<pre>
/iscsi/iqn.20...tpgt1/portals> cd ../luns
/iscsi/iqn.20...tpgt1/luns> create /backstores/iblock/my_blockdevice
Selected LUN 0.
Successfully created LUN 0.
</pre>

Damit es leichter wird, kann man noch den Demo-Mode anschalten. Dieser deaktiviert das Password und erlaubt RW-Zugriff auf euer Target. Also VORSICHTIG sein.
<pre>
/iscsi/iqn.20...42/tpgt1/luns> cd ..
/iscsi/iqn.20...382cc42/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'.
</pre>

Zu guter letzt kann man die Config persistieren
<pre>
/iscsi/iqn.20...tpgt1/luns> cd /
/> saveconfig
WARNING: Saving sulfur current configuration to disk will overwrite your boot settings.
The current target configuration will become the default boot config.
Are you sure? Type 'yes': yes
[…]
/> exit
</pre>
</pre>


Zeile 24: Zeile 97:
** [M] CONFIG_ISCSI_TCP (iSCSI Initiator over TCP/IP)
** [M] CONFIG_ISCSI_TCP (iSCSI Initiator over TCP/IP)
WICHTIG: Dieser Punkt muss ebenfalls als Modul gebaut werden.
WICHTIG: Dieser Punkt muss ebenfalls als Modul gebaut werden.

=====Target mit dem Client verbinden=====
Auf dem Client wird open-iscsi verwendet, um Targets zu verbinden. Dies kann ebenfalls über den Paketmanager installiert werden.

Zuerst muss der iscsid gestartet werden:
<pre>
root@workstation ~ # /etc/init.d/iscsid start
* Checking Open-iSCSI configuration ... [ ok ]
* Starting iscsid ... [ ok ]
* Setting up iSCSI targets ...
iscsiadm: No records found
</pre>

Dann kann der Server nach Targets "abgesucht" werden
<pre>
root@workstation ~ # iscsiadm -m discovery -t sendtargets -p 10.42.0.193:3260
10.42.0.193:3260,1 iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42
</pre>

Dabei sollte der IQN des Targets zurückgegeben werden. Diesen verwendet man anschließend um sich zu verbinden:
<pre>
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42 -p 10.42.0.193:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42, portal: 10.42.0.193,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42, portal: 10.42.0.193,3260] successful.
</pre>

Nun ist das Gerät als vollwertiges Block-Device unter eurem Client verfügbar. lsblk zeigt das neue Device auch:
<pre>
root@workstation ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
[…]
sdc 8:32 0 100M 0 disk
</pre>

====Mehr Doku====
Mehr Doku gibts [http://linux-iscsi.org/wiki/ISCSI hier] und [http://www.linux-iscsi.org/Doc/LIO%20Admin%20Manual.pdf hier].



[[Category:Anleitungen]]
[[Category:Anleitungen]]

Aktuelle Version vom 3. November 2015, 22:58 Uhr

ISCSI for dummies

Der Server (Target)

Kernelconfig
  • Device Drivers →
    • [M] CONFIG_TARGET_CORE (Generic Target Core Mod (TCM) and ConfigFS Infrastructure) →
      • [M] CONFIG_ISCSI_TARGET (Linux-iSCSI.org iSCSI Target Mode Stack)
      • [M] CONFIG_TCM_IBLOCK (TCM/IBLOCK Subsystem Plugin for Linux/BLOCK)
      • [M] CONFIG_TCM_FILEIO (TCM/FILEIO Subsystem Plugin for Linux/VFS)
      • [M] CONFIG_TCM_PSCSI (TCM/pSCSI Subsystem Plugin for Linux/SCSI)

WICHTIG: Diese Punkte müssen als Module gebaut werden.

CONFIG_TCM_IBLOCK wird benötigt, wenn man Block-Devices freigeben möchte
CONFIG_TCM_FILEIO für Dateien
CONFIG_TCM_PSCSI für "echte" SCSI-Geräte (z.B. CD-Laufwerk)

Einrichten von Targets

Der Server - also das Gerät, welches die "Targets" zur Verfügung stellt, wird über targetcli gesteuert. Dieses Tool könnt ihr über euren Paketmanager beziehen.

Generell: Entsprechend dem Gerät, welches ihr als Target einrichten wollt, muss das Modul geladen werden. target_core_file, target_core_iblock oder target_core_pscsi.
Der Backstore muss natürlich entsprechend im richtigen Ordner angelegt werden.

iblock in /backstores/iblock
pscsi in /backstore/pscsi
usw…

Block-Device als Target einrichten:

targetcli starten (Tip: Es kann Tab-Completion):

$ sudo targetcli

In targetcli angekommen erstellt man zuerst einen "Backstore". Ich verwende exemplarisch sda1. Es kann aber auch jedes andere Blockdevice oder Partition sein.

/> cd /backstores/iblock
/backstores/iblock> create my_blockdevice /dev/sda1
Generating a wwn serial.
Created iblock storage object my_blockdevice using /dev/sda1.
/>

Anschließend wird das iSCSI-Target initialisiert:

/backstores/iblock> cd /iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42.
Selected TPG Tag 1.
Successfully created TPG 1.

Das "Portal" repräsentiert einen Netzwerkserver bei iSCSI und muss ebenfalls gestartet/angelegt werden:

/iscsi> cd iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42/tpgt1/portals
/iscsi/iqn.20...tpgt1/portals> create
Using default IP port 3260
Automatically selected IP address 10.42.0.193.
Successfully created network portal 10.42.0.193:3260.

Innerhalb dieses IQNs (dieser kryptische Name) wird nun eine LUN über iSCSI exportiert. Als letztes wird das LUN (der "Backstore") über iSCSI exportiert/verbunden

/iscsi/iqn.20...tpgt1/portals> cd ../luns
/iscsi/iqn.20...tpgt1/luns> create /backstores/iblock/my_blockdevice
Selected LUN 0.
Successfully created LUN 0.

Damit es leichter wird, kann man noch den Demo-Mode anschalten. Dieser deaktiviert das Password und erlaubt RW-Zugriff auf euer Target. Also VORSICHTIG sein.

/iscsi/iqn.20...42/tpgt1/luns> cd ..
/iscsi/iqn.20...382cc42/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'.

Zu guter letzt kann man die Config persistieren

/iscsi/iqn.20...tpgt1/luns> cd /
/> saveconfig
WARNING: Saving sulfur current configuration to disk will overwrite your boot settings.
The current target configuration will become the default boot config.
Are you sure? Type 'yes': yes
[…]
/> exit

Der Client (Initiator)

Kernelconfig
  • Device Drivers → SCSI device support → SCSI low-level drivers →
    • [M] CONFIG_ISCSI_TCP (iSCSI Initiator over TCP/IP)

WICHTIG: Dieser Punkt muss ebenfalls als Modul gebaut werden.

Target mit dem Client verbinden

Auf dem Client wird open-iscsi verwendet, um Targets zu verbinden. Dies kann ebenfalls über den Paketmanager installiert werden.

Zuerst muss der iscsid gestartet werden:

root@workstation ~ # /etc/init.d/iscsid start
 * Checking Open-iSCSI configuration ... [ ok ]
 * Starting iscsid ... [ ok ]
 * Setting up iSCSI targets ...
iscsiadm: No records found

Dann kann der Server nach Targets "abgesucht" werden

root@workstation ~ # iscsiadm -m discovery -t sendtargets -p 10.42.0.193:3260
10.42.0.193:3260,1 iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42

Dabei sollte der IQN des Targets zurückgegeben werden. Diesen verwendet man anschließend um sich zu verbinden:

iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42 -p 10.42.0.193:3260 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42, portal: 10.42.0.193,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.sulfur.x8664:sn.46326382cc42, portal: 10.42.0.193,3260] successful.

Nun ist das Gerät als vollwertiges Block-Device unter eurem Client verfügbar. lsblk zeigt das neue Device auch:

root@workstation ~ # lsblk
NAME     MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
[…]
sdc        8:32   0   100M  0 disk

Mehr Doku

Mehr Doku gibts hier und hier.