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