ISCSI: Unterschied zwischen den Versionen
Sqozz (Diskussion | Beiträge) |
Sqozz (Diskussion | Beiträge) |
||
Zeile 18: | Zeile 18: | ||
Der Server - also das Gerät, welches die "Targets" zur Verfügung stellt, wird über <u>''targetcli''</u> gesteuert. |
Der Server - also das Gerät, welches die "Targets" zur Verfügung stellt, wird über <u>''targetcli''</u> gesteuert. |
||
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:''' |
'''Block-Device als Target einrichten:''' |
Version vom 3. November 2015, 22:52 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)
- [M] CONFIG_TARGET_CORE (Generic Target Core Mod (TCM) and ConfigFS Infrastructure) →
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