Internet Small Computer System Interface (iSCSI) ist ein IP-basierter Standard zum Verbinden von Speichergeräten. iSCSI verwendet IP-Netzwerke, um SCSI-Befehle zu kapseln, wodurch Daten über große Entfernungen übertragen werden können. iSCSI bietet gemeinsam genutzten Speicher für eine Reihe von Client-Systemen. Speichergeräte sind an Server (Ziele) angeschlossen. Client-Systeme (Initiatoren) greifen über IP-Netzwerke auf die entfernten Speichergeräte zu. Für die Client-Systeme scheinen die Speichergeräte lokal angeschlossen zu sein. iSCSI nutzt die vorhandene IP-Infrastruktur und erfordert keine zusätzliche Verkabelung, wie dies bei Fibre Channel (FC) Storage Area Networks der Fall ist.
Konfigurieren eines iSCSI-Servers
RHEL/CentOS 7 verwendet das Kernel-Zielsubsystem Linux-IO (LIO) für iSCSI. Zusätzlich zu iSCSI unterstützt LIO eine Reihe von Speicherstrukturen, einschließlich Fibre Channel over Ethernet (FCoE), iSCSI-Zugriff über Mellanox InfiniBand-Netzwerke (iSER) und SCSI-Zugriff über Mellanox InfiniBand-Netzwerke (SRP). In RHEL 7 werden alle Speicher-Fabrics mit der targetcli verwaltet Dienstprogramm.
Um das RHEL-System als iSCSI-Server zu konfigurieren, installieren Sie zunächst das targetcli-Softwarepaket:
# yum install targetcli
Durch die Installation des targetcli-Softwarepakets wird auch die python-rtslib installiert Paket, das den /usr/lib/systemd/system/target.service bereitstellt Datei. Bevor Sie das Dienstprogramm targetcli zum Erstellen, Löschen und Anzeigen von Speicherzielen verwenden, verwenden Sie den Befehl systemctl, um den Zieldienst auf dem iSCSI-Server zu aktivieren und zu starten.
# systemctl enable target Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
# systemctl start target
targetcli-Dienstprogramm
Das Dienstprogramm targetcli ist die Verwaltungsschale zum Erstellen, Bearbeiten und Anzeigen der Konfiguration des Zielsubsystems des Kernels. Führen Sie targetcli aus, um die Konfigurations-Shell aufzurufen.
# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb46 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> help
Führen Sie die Hilfe aus Befehl an der targetcli-Eingabeaufforderung, um die verfügbaren Befehle anzuzeigen. Im Folgenden sind einige der verfügbaren targetcli-Befehle aufgeführt:
- ls :Zeigt die Objekthierarchie an.
- CD :Die Objekthierarchie durchlaufen.
- erstellen :Speicherobjekte, Ziele, LUNs, Netzwerkportale, Zugriffskontrolllisten erstellen.
- beenden :Beenden Sie die Targetcli-Shell und speichern Sie die Konfiguration automatisch.
Sie können auch „targetcli [command]““ eingeben, um Befehle auszuführen, ohne die Shell aufzurufen.
Backstores
Backstores sind die verschiedenen Arten von lokalen Speicherressourcen, die das Kernel-Ziel verwendet, um die SCSI-Geräte zu „sichern“, die es auf Client-Systeme exportiert. Die Zuordnungen zu lokalen Speicherressourcen, die jeder Backstore erstellt, werden als Speicherobjekte bezeichnet. Verwenden Sie die Zielclients Befehl, um die verschiedenen Typen von Backstores aufzulisten.
# targetcli ls /backstores
Die Arten von Backstores werden wie folgt beschrieben:
- blockieren :Linux-Blockgeräte wie /dev/sda
- fileio :Jede Datei auf einem gemounteten Dateisystem wie /tmp/disk1.img
- pscsi :Jedes Speicherobjekt, das Pass-Through-SCSI-Befehle unterstützt
- Ramdisk :Speicher kopieren RAM-Disks
So erstellen Sie einen Block-Backstore aus der targetcli-Shell:
/> cd /backstores/block /backstores/block> create name=LUN_1 dev=/dev/xvdb
So erstellen Sie einen Fileio-Backstore aus der Targetcli-Shell:
/> cd /backstores/fileio /backstores/fileio> create name=LUN_3 /root/disk1.img 5G
Erstellen eines iSCSI-Ziels
Verwenden Sie zum Erstellen eines iSCSI-Ziels von der TargetCli-Shell aus den cd-Befehl, um in das /iscsi-Verzeichnis zu wechseln.
/> cd /iscsi /iscsi>
Verwenden Sie den create-Befehl ohne Argumente, um ein iSCSI-Target unter Verwendung eines Standard-Target-Namens zu erstellen. Standardmäßig wird das Ziel durch ein „iqn“ gekennzeichnet ” Kennung. Dies ist ein qualifizierter iSCSI-Name (IQN) , die ein Ziel eindeutig identifiziert. Adressen im IQN-Format werden am häufigsten verwendet, um ein Ziel zu identifizieren. Diese Adresse besteht aus den folgenden Feldern:
- Wörtliches iqn
- Datum (im Format JJJJ-MM), an dem die Namensbehörde den Besitz der Domain übernommen hat
- Umgekehrter Domänenname der Behörde
- Optional „:“, das einem Speicherzielnamen vorangestellt wird, der von der Namensbehörde angegeben wurde
/> cd /iscsi /iscsi> create Created target iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /iscsi>
Verwenden Sie den folgenden Befehl, um die erstellten Ziele aufzulisten.
# targetcli ls /iscsi
Um Remotesystemen den Zugriff auf ein iSCSI-Ziel an Port 3260 zu ermöglichen, deaktivieren Sie entweder den Firewalld-Dienst auf dem iSCSI-Server oder konfigurieren Sie Firewalld so, dass er dem 3260/tcp-Port vertraut. Das folgende Beispiel verwendet firewall-cmd, um den Port 3260/tcp für den Dienst firewalld zu öffnen.
# firewall-cmd --permanent --add-port=3260/tcp
Wenn Sie –permanent hinzufügen Verwenden Sie beim Hinzufügen eines Ports die Option firewall-cmd, um die Konfiguration neu zu laden.
# firewall-cmd –reload
Erstellen von iSCSI-LUNs
Das Kernel-Ziel exportiert logische SCSI-Einheiten an entfernte Systeme. Verwenden Sie die targetcli-Shell, um zuvor definierte Speicherobjekte mit einem Ziel zu verknüpfen und anzugeben, welche Logical Unit Number (LUN) das Gerät verwendet. Das folgende Beispiel verwendet den create-Befehl, um zwei neue LUNs für ein Ziel zu erstellen. Beginnen Sie in der targetcli-Shell mit dem cd-Befehl, um in das luns-Verzeichnis innerhalb der [target/TGP]-Hierarchie zu wechseln.
/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/ /iscsi/iqn.20....b0df6e328beb> cd tpg1/luns
Die folgenden Befehle erstellen eine LUN aus den zuvor definierten Blockspeicherobjekten.
/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1 Created LUN 1.
ACLs erstellen
Access Control Lists (ACLs) beschränken den Zugriff auf LUNs von Remote-Systemen. Sie können für jeden Initiator eine ACL erstellen, um die Authentifizierung zu erzwingen, wenn der Initiator eine Verbindung zum Ziel herstellt. Dadurch können Sie einem bestimmten Initiator exklusiven Zugriff auf ein bestimmtes Ziel gewähren. Im folgenden Beispiel wird der create-Befehl verwendet, um eine ACL für einen Initiator zu erstellen. Beginnen Sie in der targetcli-Shell mit dem cd-Befehl, um in das acls-Verzeichnis innerhalb der [target/TGP]-Hierarchie zu wechseln.
/> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/tpg1/acls /iscsi/iqn.20...beb/tpg1/acls> create iqn.1994-05.com.redhat:aabb51a64012 Created Node ACL for iqn.1994-05.com.redhat:aabb51a64012 Created mapped LUN 1.
Konfigurieren eines iSCSI-Initiators
Um ein Linux-System als iSCSI-Initiator zu konfigurieren, installieren Sie die iscsi-initiator-utils Softwarepaket. Dieses Paket ist der Linux Open-iSCSI Initiator.
# yum install iscsi-initiator-utils
Das Paket installiert mehrere Dateien, einschließlich der folgenden:
- /etc/iscsi/iscsid.conf :Die von iscsid und iscsiadm gelesene Konfigurationsdatei. Diese Datei ist stark kommentiert mit Beschreibungen für jede Konfigurationsdirektive.
- /sbin/iscsid :Der Open-iSCSI-Daemon, der den Kontrollpfad und die Verwaltungsfunktionen implementiert
- /sbin/iscsiadm :Das Open-iSCSI-Verwaltungsdienstprogramm zum Erkennen und Anmelden bei iSCSI-Zielen
Bearbeiten Sie /etc/iscsi/initiatorname.iscsi -Datei und ersetzen Sie den InitiatorName-Parameter durch den Initiatornamen, den Sie zuvor als ACL auf dem Ziel konfiguriert haben. In dieser Datei ist ein standardmäßiger iscsi-Initiatorname definiert. Wenn Sie beim Konfigurieren von ACL denselben Namen verwendet haben, müssen Sie hier nichts ändern.
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:aabb51a64012
Verwenden Sie den Befehl systemctl, um den iscsid-Dienst zu aktivieren und zu starten.
# systemctl enable iscsid # systemctl start iscsidGrundlegendes zum iscsiadm-Dienstprogramm in CentOS / RHEL
iSCSI-Erkennung
Discovery ist der Prozess, der einem Initiator die Ziele bekannt macht. Im folgenden Beispiel wird die Erkennungsmethode SendTargets verwendet, um Ziele an der IP-Adresse 192.168.12.13 zu erkennen. Dieser Befehl startet bei Bedarf auch den iscsid-Daemon.
# iscsiadm -m discovery --type sendtargets –p 192.168.12.13
Nach der Erkennung werden die nodes-Tabelle und die send_targets-Tabellen in der Datenbank aktualisiert:
# ls /var/lib/iscsi/nodes iqn.2011-12.com.example.mypc:tgt1 iqn.2011-12.com.example.mypc:tgt2 iqn.2012-11.com.example.mypc:tgt3
# ls /var/lib/iscsi/send_targets 192.168.12.13,3260
iSCSI-Initiator-Sitzungen
Eine Sitzung ist eine TCP-Verbindung zwischen einem Initiatorknotenport und einem Zielknotenport. Auf LUNs kann erst zugegriffen werden, wenn eine Sitzung eingerichtet wurde. Verwenden Sie die Option -l (oder –login), um eine Sitzung einzurichten:
# iscsiadm -m node -l
So melden Sie sich bei einem bestimmten Ziel an:
# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l
Verwenden Sie die Option -u (oder –logout), um eine Sitzung zu schließen. So zeigen Sie Sitzungsinformationen an:
# iscsiadm -m session [-P [printlevel]]
Die Druckebenen sind 1, 2 und 3. Jede zeigt mehr Details.