Website-Suche

Erstellen eines zentralisierten sicheren Speichers mit iSCSI-Ziel/Initiator auf RHEL/CentOS 7 - Teil 12


iSCSI ist ein Protokoll auf Blockebene für die Verwaltung von Speichergeräten über TCP/IP-Netzwerke, insbesondere über große Entfernungen. iSCSI-Ziel ist eine Remote-Festplatte, die von einem Remote-iSCSI-Server (oder -Ziel) bereitgestellt wird. Auf der anderen Seite wird der iSCSI-Client als Initiator bezeichnet und greift auf den Speicher zu, der auf dem Zielcomputer freigegeben ist.

In diesem Artikel wurden die folgenden Maschinen verwendet:

Server (Ziel):


Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.29
Ports Used : TCP 860, 3260

Mandant (Initiator):


Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.30
Ports Used : TCP 3260

Schritt 1: Installieren von Paketen auf dem iSCSI-Ziel

Um die für das Ziel benötigten Pakete zu installieren (wir werden uns später mit dem Client befassen), gehen Sie wie folgt vor:


yum install targetcli -y

Wenn die Installation abgeschlossen ist, starten und aktivieren wir den Dienst wie folgt:


systemctl start target
systemctl enable target

Schließlich müssen wir den Dienst in firewalld zulassen:


firewall-cmd --add-service=iscsi-target
firewall-cmd --add-service=iscsi-target --permanent

Und zu guter Letzt dürfen wir nicht vergessen, die iSCSI-Zielerkennung zuzulassen:


firewall-cmd --add-port=860/tcp
firewall-cmd --add-port=860/tcp --permanent
firewall-cmd --reload

Schritt 2: Definieren von LUNs auf dem Zielserver

Bevor wir mit der Definition von LUNs im Ziel fortfahren, müssen wir zwei logische Volumes erstellen, wie in Teil 6 der RHCSA-Serie ("Konfigurieren des Systemspeichers") erläutert.

Dieses Mal nennen wir sie vol_projects und vol_backups und platzieren sie in einer Volume-Gruppe namens vg00, wie in Abb. 1 gezeigt. Fühlen Sie sich frei, den Platz zu wählen, der jedem LV zugewiesen ist:

Nachdem wir die LVs erstellt haben, sind wir bereit, die LUNs im Target zu definieren, um sie für den Client-Rechner verfügbar zu machen.

Wie in Abb. 2 gezeigt, öffnen wir eine targetcli-Shell und geben die folgenden Befehle aus, die zwei Block-Backstores (lokale Speicherressourcen, die die LUN darstellen, die der Initiator tatsächlich verwendet) und einen Iscsi Qualified Name (IQN), eine Methode zur Adressierung des Zielservers, erstellen.

Weitere Informationen zur Struktur des IQN finden Sie auf Seite 32 von RFC 3720. Insbesondere gibt der Text nach dem Doppelpunkt (:tgt1) den Namen des Ziels an, während der Text davor (server:) den Hostnamen des Ziels innerhalb der Domäne angibt.


targetcli
cd backstores
cd block
create server.backups /dev/vg00/vol_backups
create server.projects /dev/vg00/vol_projects
cd /iscsi
create iqn.2016-02.com.tecmint.server:tgt1

Mit dem obigen Schritt wurde eine neue TPG (Target Portal Group) zusammen mit dem Standardportal (ein Paar bestehend aus einer IP-Adresse und einem Port, über den Initiatoren das Ziel erreichen können) erstellt, das auf dem Port 3260 aller IP-Adressen lauscht.

Wenn Sie Ihr Portal an eine bestimmte IP-Adresse binden möchten (z. B. die Haupt-IP-Adresse des Ziels), löschen Sie das Standardportal, und erstellen Sie ein neues Portal wie folgt (andernfalls überspringen Sie die folgenden targetcli-Befehle. Beachten Sie, dass wir sie der Einfachheit halber auch übersprungen haben):


cd /iscsi/iqn.2016-02.com.tecmint.server:tgt1/tpg1/portals
delete 0.0.0.0 3260
create 192.168.0.29 3260

Jetzt sind wir bereit, mit der Erstellung von LUNs fortzufahren. Beachten Sie, dass wir die Backstores verwenden, die wir zuvor erstellt haben (server.backups und server.projects). Dieser Prozess ist in Abb. 3 dargestellt:


cd iqn.2016-02.com.tecmint.server:tgt1/tpg1/luns
create /backstores/block/server.backups
create /backstores/block/server.projects

Der letzte Teil der Target-Konfiguration besteht darin, eine Zugriffssteuerungsliste zu erstellen, um den Zugriff pro Initiator einzuschränken. Da unser Client-Rechner den Namen "client" hat, hängen wir diesen Text an den IQN an. Weitere Informationen finden Sie in Abb. 4:


cd ../acls
create iqn.2016-02.com.tecmint.server:client

An dieser Stelle können wir die targetcli-Shell so verwenden, dass alle konfigurierten Ressourcen angezeigt werden, wie wir in Abb. 5 sehen können:


targetcli
cd /
ls

Um die targetcli-Shell zu beenden, geben Sie einfach exit ein und drücken Sie die Eingabetaste. Die Konfiguration wird automatisch in /etc/target/saveconfig.json gespeichert.

Wie Sie in Abb. 5 oben sehen können, haben wir ein Portal, das wie erwartet alle IP-Adressen auf Port 3260 abhört. Wir können dies mit dem Befehl netstat überprüfen (siehe Abb. 6):


netstat -npltu | grep 3260

Damit ist die Target-Konfiguration abgeschlossen. Fühlen Sie sich frei, das System neu zu starten und zu überprüfen, ob alle Einstellungen einen Neustart überstehen. Wenn nicht, stellen Sie sicher, dass Sie die erforderlichen Ports in der Firewall-Konfiguration öffnen und den Zieldienst beim Booten starten. Wir sind nun bereit, den Initiator einzurichten und eine Verbindung zum Client herzustellen.

Schritt 3: Einrichten des Client-Initiators

Auf dem Client müssen wir das Paket iscsi-initiator-utils installieren, das den Server-Daemon für das iSCSI-Protokoll (iscsid) sowie iscsiadm, das Verwaltungsprogramm, bereitstellt:


yum update && yum install iscsi-initiator-utils

Sobald die Installation abgeschlossen ist, öffnen Sie /etc/iscsi/initiatorname.iscsi und ersetzen Sie den Standard-Initiatornamen (kommentiert in Abb. 7) durch den Namen, der zuvor in der ACL auf dem Server (iqn.2016-02.com.tecmint.server:client) festgelegt wurde.

Speichern Sie dann die Datei, und führen Sie iscsiadm im Ermittlungsmodus aus, wobei Sie auf das Ziel verweisen. Wenn dieser Befehl erfolgreich ist, gibt er die Zielinformationen zurück, wie in Abb. 7 gezeigt:


iscsiadm -m discovery -t st -p 192.168.0.29

Der nächste Schritt besteht darin, den iscsid-Dienst neu zu starten und zu aktivieren:


systemctl start iscsid
systemctl enable iscsid

und Kontaktaufnahme mit dem Ziel im Knotenmodus. Dies sollte zu Nachrichten auf Kernel-Ebene führen, die, wenn sie über dmesg erfasst werden, die Gerätekennung anzeigen, die den Remote-LUNs im lokalen System gegeben wurde (sde und sdf in Abb. 8):


iscsiadm -m node -T iqn.2016-02.com.tecmint.server:tgt1 -p 192.168.0.29 -l
dmesg | tail

Von diesem Zeitpunkt an können Sie Partitionen oder sogar LVs (und Dateisysteme darauf) erstellen, wie Sie es mit jedem anderen Speichergerät tun würden. Der Einfachheit halber erstellen wir auf jeder Festplatte eine primäre Partition, die den gesamten verfügbaren Speicherplatz einnimmt, und formatieren sie mit ext4.

Zum Schluss mounten wir /dev/sde1 und /dev/sdf1 auf /projects bzw. /backups (beachten Sie, dass diese Verzeichnisse zuerst erstellt werden müssen):


mount /dev/sde1 /projects
mount /dev/sdf1 /backups

Zusätzlich können Sie zwei Einträge in /etc/fstab hinzufügen, damit beide Dateisysteme beim Booten automatisch eingehängt werden, wobei die UUID jedes Dateisystems verwendet wird, wie sie von blkid zurückgegeben wird.

Beachten Sie, dass die Einhängeoption _netdev verwendet werden muss, um das Einhängen dieser Dateisysteme zu verschieben, bis der Netzwerkdienst gestartet wurde:

Sie können diese Geräte jetzt wie jedes andere Speichermedium verwenden.

Zusammenfassung

In diesem Artikel haben wir behandelt, wie Sie ein iSCSI-Ziel und einen Initiator in RHEL/CentOS 7-Distributionen einrichten und konfigurieren. Obwohl die erste Aufgabe nicht zu den erforderlichen Kompetenzen der EX300 (RHCE) Prüfung gehört, wird sie benötigt, um das zweite Thema umzusetzen.

Zögern Sie nicht, uns mitzuteilen, wenn Sie Fragen oder Kommentare zu diesem Artikel haben – schreiben Sie uns gerne eine Nachricht über das untenstehende Kommentarformular.

Wenn Sie den iSCSI-Ziel- und Client-Initiator unter RHEL/CentOS 6 einrichten möchten, befolgen Sie diese Anleitung: Einrichten des zentralisierten iSCSI-Speichers mit dem Client-Initiator.

Verwandte Artikel: