GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie das Linux-iSCSI-Speicherziel und den Remote-Client-Zugriff ein

iSCSI steht für Internet Small Computer System Interface.

Dies funktioniert auf der TCP/IP-Schicht und ermöglicht das Senden von SCSI-Befehlen über lokale Netzwerke (LAN).

Es wird für den Zugriff auf den Speicher in Ihrem Netzwerk über TCP/IP unter Verwendung von Datenübertragungen auf Blockebene verwendet.

Es gibt oft einen Vergleich zwischen NFS und iSCSI. Der Hauptunterschied besteht darin, dass NFS eine Implementierung auf Dateiebene ist, während iSCSI eine Implementierung auf Blockebene ist.

Bei Implementierungen auf Blockebene wie iSCSI und Fibre Channel bietet das Speicherarray dem Client eine Sammlung von Blöcken an, die diesen Rohspeicher dann mit dem Dateisystem formatieren, das er verwenden möchte.

In Ordnung um über iscsi auf den speicher zuzugreifen, benötigen wir die folgenden komponenten:

  1. iSCSI-Initiator (Hardware/Software) – Dies ist ein iSCSI-Client, der iscsi-Befehle über ein TCP/IP-Netzwerk senden kann. Dies ist normalerweise Ihr NIC-Adapter auf Ihrem Server und kann physisch oder virtuell sein, mit einer IP, die im selben Subnetz wie die iscsi-Schnittstelle des Speicher-Arrays konfiguriert ist.
  2. iSCSI-Ziel (Ihr Speicherknoten) – Dies ist Ihr Speicherknoten, den Sie selbst konfigurieren können oder der ein physisches Array von einem Anbieter sein kann, der die iscsi-konfiguration unterstützt
  3. iSCSI-Switch (optional) – Der iscsi-Switch ist hier optional, aber um den Host-Datenverkehr vom iscsi-Datenverkehr in Unternehmensumgebungen zu trennen, wird empfohlen, einen separaten Switch für den iscsi-Datenverkehr zu verwenden.

In diesem Tutorial werden wir sehen, wie Sie unseren eigenen Speicherknoten einrichten, der die iscsi-konfiguration unterstützt, und auf den Speicher vom iscsi-client auf einem Centos 6-Rechner zugreifen.

Die gleichen Verfahren sollten für die Version RHEL 6 (CentOS 6) funktionieren. Für CentOS 7 ist das Verfahren mit targetcli etwas anders, was wir in einem anderen Artikel behandeln werden.

1. Installieren Sie SCSI Target Utils und starten Sie tgtd

Installieren Sie zuerst die scsi-target-utils mit dem Befehl yum auf dem Speicherknoten, der zum Konfigurieren von iSCSI erforderlich ist.

yum install scsi-target-utils

Wenn Sie Perl noch nicht auf Ihrem System installiert haben, installiert der obige Befehl Perl und mehrere andere Abhängigkeiten (zum Beispiel:sg3_utils) automatisch.

Dadurch wird der tgtadm-Befehl wie unten gezeigt installiert.

# which tgtadm
/usr/sbin/tgtadm

Starten Sie den SCSI-Target-Daemon wie unten gezeigt.

# service tgtd start
Starting SCSI target daemon: [ OK ]

Stellen Sie mit dem Befehl chkconfig sicher, dass es beim Systemstart automatisch gestartet wird.

chkconfig tgtd on

2. Neues iSCSI-Target mit tgtadm hinzufügen

Verwenden Sie den Befehl tgtadm, um ein neues iSCSI-Ziel auf dem Speicherknoten hinzuzufügen, indem Sie die folgende Syntax verwenden:

tgtadm --lld --mode target --op new --tid --targetname

Das folgende Beispiel erstellt ein Ziel mit der Ziel-ID 1 mit dem folgenden iqn,

tgtadm --lld iscsi --op new --mode target --tid 1 \
       -T iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Im obigen Befehl:

  • Der Befehl tgtadm ist das Linux SCSI Target Administration Utility
  • –lld iscsi gibt an, dass wir den iscsi-Treiber verwenden (Sie können auch -L anstelle von –lld verwenden)
  • –op new gibt die Operation an, in diesem Fall erstellen wir ein neues Ziel (Sie können auch -o anstelle von –op verwenden)
  • –mode target zeigt an, dass wir ein Ziel erstellen. Andere mögliche Modi sind:logicalunit, account, portal, conn, sys. (Sie können auch -m anstelle von –mode verwenden)
  • –tid 1 gibt die Ziel-ID an, die in diesem Beispiel 1 ist (Sie können auch -t anstelle von –tid verwenden)
  • -T gibt den Zielnamen an (Sie können auch –targetname anstelle von -T verwenden)

3. Anzeigen der iSCSI-Target-Konfiguration

Nachdem das Ziel erstellt wurde, können Sie die Details mit der Operation „Anzeigen“ wie unten gezeigt anzeigen. Dadurch werden die Systeminformationen und LUN-Informationen aller auf Ihrem System verfügbaren Ziele bereitgestellt.

Wie Sie der folgenden Ausgabe entnehmen können, haben wir nur ein Ziel (Ziel 1), bei dem es sich um einen iSCSI-Treiber handelt, mit einer LUN (LUN 0).

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:

Hinweis:In der obigen Ausgabe ist der „Backing Store Path“ derzeit None, da wir diesem iSCSI noch keinen physischen Speicherpfad zugeordnet haben.

4. Fügen Sie die LUN dem iSCSI-Ziel hinzu

Im folgenden Beispiel fügen wir dem von uns erstellten iSCSI-Ziel ein vorhandenes lun hinzu, nämlich /storage/lun01, das auf unserem Speicherknoten gemountet und verfügbar ist.

Für die vorhandene LUN (/storage/lun01) sollten Sie auch den SELinux-Kontext entsprechend wie unten gezeigt einstellen.

semanage fcontext -a -t tgtd_var_lib_t /storage/lun01

restorecon -Rv /storage/lun01

Wenn Sie „ungültige Anfrage“ erhalten, sollten Sie zu vorübergehenden Testzwecken SELinux deaktivieren, indem Sie SELinux in den Permissive-Modus versetzen, um zu sehen, ob es das Problem löst, und das Problem auf die SELinux-Berechtigung eingrenzen.

Fügen Sie nun mit dem Befehl tgtadm /storage/lun01 zum zuvor erstellten iSCSI-Ziel hinzu.

tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \
       --lun 1 --backing-store /storage/lun01

Im obigen Befehl:

  • Die meisten Optionen sind dieselben, die wir in unserem vorherigen tgtadm-Befehl oben erklärt haben.
  • –Modus logische Einheit. Bitte beachten Sie, dass wir früher „Ziel“ für Modus verwendet haben, aber hier verwenden wir logische Einheit für Modus.
  • –lun gibt die LUN-ID an, die in diesem Beispiel 1 ist (Sie können auch -l anstelle von –lun verwenden)
  • –backing-store gibt den physischen Speicherpfad auf dem Speicherserver an. In unserem Beispiel ist es /storage/lun01 (Sie können auch -b anstelle der Option –backing-store verwenden)
  • –tid 1 gibt an, dass diese gegebene LUN mit der bestehenden Ziel-ID 1 verbunden werden soll, die wir zuvor erstellt haben.

Sehen Sie sich jetzt erneut die Details des iSCSI auf Ihrem System an.

Aber dieses Mal zeigt in LUN 1 der „Backing Store Path“ in der folgenden Ausgabe auf den Speicherpfad, den wir mit diesem iSCSI verknüpft haben. In unserem Beispiel ist es /storage/lun01.

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:

Wenn Sie aus irgendeinem Grund einen Fehler im obigen Befehl gemacht haben und die oben erstellte LUN1-Zuordnung löschen möchten, verwenden Sie den folgenden Befehl.

tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1

Im obigen Befehl:

  • Alles ist wie beim vorherigen Befehl
  • Aber hier ist das -op (das ist die Operation) delete.
  • Dadurch wird lun1 aus iSCSI tid 1 (Ziel 1) gelöscht

5. ACL-Beschränkung für iSCSI einrichten

Als nächstes müssen Sie ACL einrichten, um den Initiatoren zu erlauben, auf dieses SCSI-Ziel zuzugreifen.

tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

Im obigen Befehl:

  • Die meisten Optionen sind unseren vorherigen Befehlen ziemlich ähnlich
  • -I ALL-Option gibt an, dass wir dem Ziel erlauben, ALLE Initiatoren zu akzeptieren (Sie können auch –initiator-address anstelle von -I verwenden)

Wenn Sie die iSCSI-Details mit der Operation „show“ anzeigen, werden Sie die ACL-Informationen gegen Ende der Ausgabe bemerken, wie unten gezeigt.

# tgtadm --lld iscsi --op show --mode target
..
..
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:
ALL

Wenn Sie nur den Client einschränken möchten, der auf den Speicher zugreifen muss, können Sie den folgenden Befehl verwenden und eine bestimmte IP-Adresse angeben.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.109

Wenn Sie den Zugriff auf ein bestimmtes Subnetz einschränken möchten, können Sie das Subnetz anstelle der IP-Adresse angeben, wie unten gezeigt.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.0/24

6. Zugriff auf Port 3260 zulassen

Wenn Sie ip-tables ausführen, fügen Sie eine ip-tables-Regel hinzu und lassen Sie Port 3260 wie unten gezeigt zu.

iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT

Überprüfen Sie, ob der Port 3260 geöffnet ist, indem Sie den netstat-Befehl wie unten gezeigt verwenden.

# netstat -tunlp | grep 3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1248/tgtd
tcp 0 0 :::3260 :::* LISTEN 1248/tgtd

Hinweis:Bis zu diesem Zeitpunkt wurden alle oben genannten Befehle auf dem Speicherserverknoten ausgeführt. Von nun an werden alle Befehle im folgenden Abschnitt auf dem Client-Rechner ausgeführt, der sich mit dem Speicherserver verbinden muss.

7. Auf dem Client:iSCSI erkennen

Auf dem Client wird die neue iSCSI-Festplatte nicht angezeigt, bevor Sie das iSCSI erkennen. Die folgende Ausgabe zeigt beispielsweise nichts an.

fdisk -l /dev/sdb

Jetzt ist die gesamte zielseitige Konfiguration abgeschlossen und auf das lun kann über iscsi vom Client zugegriffen werden. Die folgenden Verfahren zeigen Ihnen, wie Sie die Client-Seite für den Zugriff auf den Speicher konfigurieren.

Installieren Sie auf dem Client-Server das Paket iscsi-initiator-utils wie unten gezeigt.

yum install iscsi-initiator-utils

Ermitteln Sie als Nächstes das iSCSI-Ziel mit dem Befehl iscsiadm wie unten gezeigt.

[root@client ~]# iscsiadm --mode discovery --type sendtargets \
                --portal 192.168.2.166

Der obige Befehl zeigt die folgende Ausgabe an:

192.168.2.166:3260,1 iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Im obigen Befehl:

  • iscsiadm-Befehl ist das Open-iscsi-Verwaltungsdienstprogramm
  • –Modus Discover zeigt an, dass wir hier den iSCSI-Server entdecken. Andere mögliche Modi sind:discoverydb, node, fw, host iface oder session. (Sie können auch -m anstelle von –mode verwenden)
  • – Geben Sie hier spezifische Sendeziele ein. Andere mögliche Werte sind:sendtargets, fw und iSNS. Anstelle von sendtargets können Sie auch die Abkürzung st verwenden. (Sie können auch -t anstelle von –type verwenden)
  • –portal gibt die IP-Adresse des iSCSI-Speicherknotens an, den wir zuvor eingerichtet haben (Sie können auch -p anstelle von –portal verwenden).
  • Wenn Sie iSCSI auf einem nicht standardmäßigen Port (anders als 3260) ausführen, geben Sie die IP-Adresse nach der IP-Adresse an. Beispiel:192.168.2.166:3261

Hinweis:Wenn Sie den Fehler „Keine Route zum Host“ erhalten, sind die iptables auf dem Ziel oder dem Client nicht richtig konfiguriert.

8. Auf dem Client:Melden Sie sich bei der iSCSI-Zielsitzung an

Sobald der Erkennungsprozess erfolgreich abgeschlossen ist, müssen Sie sich mit dem folgenden Befehl bei der iscsi-Zielsitzung anmelden:

[root@client ~]# iscsiadm --mode node --targetname iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com \
                          --portal 192.168.2.166 --login

Der obige Befehl zeigt die folgende Ausgabe an:

Logging in to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] (multiple)
Login to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] successful.

Im obigen Befehl:

  • Die meisten Optionen sind ähnlich wie beim vorherigen Befehl.
  • Für den Modus verwenden wir hier Knoten (anstelle von Erkennung)
  • -Zielname gibt den Zielnamen an. Dies ist der Zielname, den wir zuvor auf dem Speicherknoten angegeben haben, als wir das iSCSI erstellt haben (Sie können auch -T anstelle von –Zielname verwenden)
  • –Login-Option meldet sich bei allen erkannten Zielen an. In unserem Fall wird es sich bei unserem Speicher-iSCSI-Server anmelden, der in der Option –portal angegeben ist.

Jetzt sollten Sie Ihr neues iscsi-gerät auf Ihrer fdisk-Ausgabe sehen. Sie können es formatieren, zu lvm hinzufügen und nach Bedarf verwenden.

Die Ausgabe des fdisk-Befehls zeigt nun das Gerät.

[root@client ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Hinweis:Die obige Festplatte kommt nicht vom Client-Rechner, sondern vom Speicherserver als iSCSI.


Linux
  1. So richten Sie NTP-Server und -Client unter Debian 9 Stretch Linux ein

  2. So richten Sie einen iSCSI-Speicherserver unter Ubuntu 18.04 LTS ein

  3. Zugriff auf Linux-Dateisysteme in Windows 10 und WSL 2

  4. So synchronisieren Sie lokale und entfernte Verzeichnisse in Linux

  5. Anleitung zum Einrichten und Konfigurieren von YPServ Linux NIS Server und Client

So richten Sie ZSH und Oh-my-zsh unter Linux ein

So deaktivieren Sie Suspend und Hibernation in Linux

So installieren und konfigurieren Sie Let’s Encrypt (Certbot) unter Linux

So installieren und konfigurieren Sie die Cockpit-Webkonsole auf einem Linux-System

So konfigurieren und verwalten Sie ein Remote-Git-Repository unter Linux

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein