GNU/Linux >> Tutoriels Linux >  >> Cent OS

Guide complet de configuration d'iSCSI dans CentOS / RHEL 7

Internet Small Computer System Interface (iSCSI) est une norme basée sur IP pour connecter des périphériques de stockage. iSCSI utilise des réseaux IP pour encapsuler les commandes SCSI, permettant aux données d'être transférées sur de longues distances. iSCSI fournit un stockage partagé entre plusieurs systèmes clients. Les périphériques de stockage sont attachés aux serveurs (cibles). Les systèmes clients (initiateurs) accèdent aux périphériques de stockage distants via des réseaux IP. Pour les systèmes clients, les périphériques de stockage semblent être connectés localement. iSCSI utilise l'infrastructure IP existante et ne nécessite aucun câblage supplémentaire, comme c'est le cas avec les réseaux de stockage Fibre Channel (FC).

Configuration d'un serveur iSCSI

RHEL/CentOS 7 utilise le sous-système cible du noyau Linux-IO (LIO) pour iSCSI. En plus d'iSCSI, LIO prend en charge un certain nombre de structures de stockage, notamment Fibre Channel over Ethernet (FCoE), l'accès iSCSI sur les réseaux Mellanox InfiniBand (iSER) et l'accès SCSI sur les réseaux Mellanox InfiniBand (SRP). Dans RHEL 7, toutes les structures de stockage sont gérées avec le targetcli utilitaire.

Pour configurer le système RHEL en tant que serveur iSCSI, commencez par installer le package logiciel targetcli :

# yum install targetcli

L'installation du package logiciel targetcli installe également le python-rtslib package, qui fournit le /usr/lib/systemd/system/target.service dossier. Avant d'utiliser l'utilitaire targetcli pour créer, supprimer et afficher des cibles de stockage, utilisez la commande systemctl pour activer et démarrer le service cible sur le serveur iSCSI.

# 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

utilitaire targetcli

L'utilitaire targetcli est le shell d'administration pour créer, modifier et afficher la configuration du sous-système cible du noyau. Exécutez targetcli pour accéder au shell de configuration.

# 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

Exécutez l'aide à partir de l'invite targetcli pour afficher les commandes disponibles. Voici quelques-unes des commandes targetcli disponibles :

  • ls  :Afficher la hiérarchie des objets.
  • cd  :parcourir la hiérarchie des objets.
  • créer  :Créer des objets de stockage, des cibles, des LUN, des portails réseau, des listes de contrôle d'accès.
  • quitter :Quittez le shell targetcli et enregistrez automatiquement la configuration.

Vous pouvez également saisir « targetcli [commande] » pour exécuter des commandes sans entrer dans le shell.

Backstores

Les backstores sont les différents types de ressources de stockage locales que la cible du noyau utilise pour « sauvegarder » les périphériques SCSI qu'elle exporte vers les systèmes clients. Les mappages vers les ressources de stockage locales créées par chaque backstore sont appelés objets de stockage. Utilisez les targetcli ls commande pour lister les différents types de backstores.

# targetcli ls /backstores

Les types de backstores sont décrits comme suit :

  • bloquer :Périphériques de bloc Linux tels que /dev/sda
  • fichier :Tout fichier sur un système de fichiers monté tel que /tmp/disk1.img
  • pscsi  :Tout objet de stockage prenant en charge les commandes SCSI pass-through
  • disque virtuel :Copie de la mémoire sur les disques RAM

Pour créer un backstore de blocs à partir du shell targetcli :

/> cd /backstores/block
/backstores/block> create name=LUN_1 dev=/dev/xvdb

Pour créer un backstore fileio à partir du shell targetcli :

/> cd /backstores/fileio
/backstores/fileio> create name=LUN_3 /root/disk1.img 5G

Création d'une cible iSCSI

Pour créer une cible iSCSI à partir du shell targetcli, utilisez la commande cd pour accéder au répertoire /iscsi.

/> cd /iscsi
/iscsi>

Utilisez la commande create sans aucun argument pour créer une cible iSCSI en utilisant un nom de cible par défaut. Par défaut, la cible est identifiée par un "iqn ” identifiant. Il s'agit d'un nom qualifié iSCSI (IQN) , qui identifie une cible de manière unique. Les adresses au format IQN sont le plus souvent utilisées pour identifier une cible. Cette adresse est composée des champs suivants :

  • iqn littéral
  • Date (au format aaaa-mm) à laquelle l'autorité de nommage a pris possession du domaine
  • Nom de domaine inversé de l'autorité
  • " : " facultatif qui préfixe un nom de cible de stockage spécifié par l'autorité de dénomination
/> 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> 

Pour lister les cibles créées, utilisez la commande ci-dessous.

# targetcli ls /iscsi

Pour permettre aux systèmes distants d'accéder à une cible iSCSI sur le port 3260, désactivez le service firewalld sur le serveur iSCSI ou configurez firewalld pour approuver le port 3260/tcp. L'exemple suivant utilise firewall-cmd pour ouvrir le port 3260/tcp pour le service firewalld.

# firewall-cmd --permanent --add-port=3260/tcp

Si vous incluez le –permanent lors de l'ajout d'un port, utilisez la commande firewall-cmd pour recharger la configuration.

# firewall-cmd –reload

Créer des LUN iSCSI

La cible du noyau exporte les unités logiques SCSI vers des systèmes distants. Utilisez le shell targetcli pour lier des objets de stockage précédemment définis à une cible et pour spécifier le numéro d'unité logique (LUN) utilisé par le périphérique. L'exemple suivant utilise la commande create pour créer deux nouveaux LUN pour une cible. Depuis le shell targetcli, commencez par utiliser la commande cd pour accéder au répertoire luns dans la hiérarchie [target/TGP].

/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/
/iscsi/iqn.20....b0df6e328beb> cd tpg1/luns

Les commandes suivantes créent un LUN à partir des objets de stockage de blocs précédemment définis.

/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1
Created LUN 1.

Création d'ACL

Les listes de contrôle d'accès (ACL) limitent l'accès aux LUN à partir de systèmes distants. Vous pouvez créer une ACL pour chaque initiateur afin d'appliquer l'authentification lorsque l'initiateur se connecte à la cible. Cela vous permet de donner à un initiateur spécifique un accès exclusif à une cible spécifique. L'exemple suivant utilise la commande create pour créer une ACL pour un initiateur. À partir du shell targetcli, commencez par utiliser la commande cd pour accéder au répertoire acls dans la hiérarchie [target/TGP].

/> 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.

Configuration d'un initiateur iSCSI

Pour configurer un système Linux en tant qu'initiateur iSCSI, installez iscsi-initiator-utils progiciel. Ce package est l'initiateur Linux Open-iSCSI.

# yum install iscsi-initiator-utils

Le package installe plusieurs fichiers dont les suivants :

  • /etc/iscsi/iscsid.conf :Le fichier de configuration lu par iscsid et iscsiadm. Ce fichier est fortement commenté avec des descriptions pour chaque directive de configuration.
  • /sbin/iscsid  :Le démon Open-iSCSI qui implémente le chemin de contrôle et les fonctions de gestion
  • /sbin/iscsiadm  :L'utilitaire d'administration Open-iSCSI utilisé pour découvrir et se connecter aux cibles iSCSI

Modifiez le fichier /etc/iscsi/initiatorname.iscsi et remplacez le paramètre InitiatorName par le nom de l'initiateur que vous avez précédemment configuré comme ACL sur la cible. Un nom d'initiateur iscsi par défaut est défini dans ce fichier. Si vous avez utilisé le même nom lors de la configuration d'ACL, vous n'aurez rien à changer ici.

# cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:aabb51a64012

Utilisez la commande systemctl pour activer et démarrer le service iscsid.

# systemctl enable iscsid
# systemctl start iscsid
Comprendre l'utilitaire iscsiadm dans CentOS / RHEL

Découverte iSCSI

La découverte est le processus qui fait connaître les cibles à un initiateur. L'exemple suivant utilise la méthode de découverte SendTargets pour découvrir des cibles sur l'adresse IP 192.168.12.13. Cette commande démarre également le démon iscsid si nécessaire.

# iscsiadm -m discovery --type sendtargets –p 192.168.12.13

Après la découverte, la table des nœuds et les tables send_targets de la base de données sont mises à jour :

# 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

Sessions d'initiateur iSCSI

Une session est une connexion TCP entre un port de nœud initiateur et un port de nœud cible. Les LUN ne sont pas accessibles tant qu'une session n'est pas établie. Utilisez l'option -l (ou –login) pour établir une session :

# iscsiadm -m node -l

Pour vous connecter à une cible spécifique :

# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l

Utilisez l'option -u (ou –logout) pour fermer une session. Pour afficher les informations de session :

# iscsiadm -m session [-P [printlevel]]

Les niveaux d'impression sont 1, 2 et 3. Chacun montre plus de détails.


Cent OS
  1. Un guide ultime pour mettre à niveau le noyau sur CentOS/RHEL/Fedora

  2. CentOS / RHEL 7 :Configurer NTP avec chrony

  3. CentOS / RHEL 7 :Guide du débutant sur systemd

  4. Comment configurer l'initiateur iSCSI (client) dans CentOS / RHEL 6

  5. Guide du débutant pour le montage automatique des systèmes de fichiers dans CentOS / RHEL

Comment configurer le stockage GlusterFS sur CentOS 7 / RHEL 7

Configuration de SpaceWalk / Téléchargement de contenu sur SpaceWalk dans CentOS 6 / RHEL 6

Comment configurer un cluster haute disponibilité sur CentOS 7 / RHEL 7

Installer et configurer GlusterFS sur CentOS 7 / RHEL 7

CentOS / RHEL 7 :Guide du débutant sur les unités de service systemd

Comment configurer la cible iSCSI à l'aide de targetcli dans CentOS / RHEL 7