(Hinweis: Der Artikel lag schon etwas rum – möglicherweise sind die verwendeten Tools nicht mehr aktuell)
Hmmm – ungünstig. Das einzige optische Laufwerk steckt in einem Linux-Server, ich möchte die Discs jedoch auf einem anderen Gerät verwenden. Üblicherweise reicht hier ein File-Share wie Samba, NFS o.Ä. aus, wenn man jedoch beispielsweise kopiergeschützte DVDs abspielen möchte ist eine solche Freigabe nicht ausreichend. Glücklicherweise können wir hier einen alten Bekannten bemühen: iSCSI. Dies hatten wie bereits für Festplatten besprochen, kann aber auch für optische Laufwerke genutzt werden.
Server / Target
Nach dem Aufruf von targetcli sollten wir die altbekannte Textkonsole erhalten, welche auf der Root (/) der Konfiguration startet. Im ersten Schritt registrieren wir das physikalische Laufwerk /dev/sr0 als Backstore und aktivieren es für iSCSI. Sofern nicht bereits vorhanden wird automatisch eine TPG erzeugt.
/> cd backstores/pscsi /backstores/pscsi> create name=cdrom_backend dev=/dev/sr0 Note: block backstore recommended for SCSI block devices Created pscsi storage object cdrom_backend using /dev/sr0 /backstores/pscsi> cd cdrom_backend /backstores/p...cdrom_backend> /iscsi create Created target iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.3299e9a7999b. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
Nun müssen wir noch eine LUN erstellen um Clients den Zugriff zum Gerät zu ermöglichen. Diese Konfiguration findet im Kontext der TPG statt, die nötige ID wurde ja weiter oben angezeigt. Da nur ein Backstore verfügbar ist wird dieser automatisch ausgewählt. Da es sich um ein Testnetz handelt verzichte ich auf eine Absicherung und alle alle Clients zu – bei CD-Laufwerken ein überschaubares Risiko.
/backstores/p...cdrom_backend> cd /iscsi/iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.3299e9a7999b/tpg1/ /iscsi/iqn.20...e8a7999b/tpg1> cd luns /iscsi/iqn.20...99b/tpg1/luns> create /backstores/pscsi/cdrom_backend Created LUN 0. /iscsi/iqn.20...99b/tpg1/luns> cd .. /iscsi/iqn.20...e8a7999b/tpg1> set attribute authentication=0 demo_mode_write_protect=0 generate_node_acls=1 cache_dynamic_acls=1 Parameter cache_dynamic_acls is now '1'. Parameter authentication is now '0'. Parameter generate_node_acls is now '1'. Parameter demo_mode_write_protect is now '0'. /iscsi/iqn.20...e8a7999b/tpg1>
Zuletzt wird die Konfiguration gespeichert, so ist sie z.B. auch nach einem Neustart noch vorhanden
/iscsi/iqn.20...e8a7999b/tpg1> cd / /> saveconfig Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json /> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup. Configuration saved to /etc/target/saveconfig.json
Client / Initiator
Auf der Clientseite benötigen wir ebenfalls eine Userspace-Software. Ich nutze zur Konfiguration iscsiadm aus dem Paket open-iscsi. Hier wird erst über Discover geprüft welche LUNs auf der TPG/Ziel-IP verfügbar sind. Über Login werden diese dann verbunden.
# iscsiadm --mode discoverydb --type sendtargets --portal 10.11.12.13 --discover 10.11.12.13:3260,1 iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.3299e9a7999b # iscsiadm --mode node --login Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.3299e9a7999b, portal: 10.11.12.13,3260] (multiple) Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.3299e9a7999b, portal: 10.11.12.13,3260] successful.
Das Ergebnis ist ein zusätzliches Blockdevice, welches wie ein Lokales angesteuert werden kann.
# dmesg | tail [269195.457603] Loading iSCSI transport class v2.0-870. [269196.464444] iscsi: registered transport (tcp) [269243.373172] scsi host5: iSCSI Initiator over TCP/IP [269243.636444] scsi 5:0:0:0: CD-ROM TSSTcorp DVD+-RW TS-H653B D300 PQ: 0 ANSI: 5 [269243.668795] sr 5:0:0:0: [sr1] scsi-1 drive [269243.669219] sr 5:0:0:0: Attached scsi CD-ROM sr1