Recherche de site Web

Créer un stockage sécurisé centralisé à l'aide d'une cible/initiateur iSCSI sur RHEL/CentOS 7 - Partie 12


iSCSI est un protocole de niveau bloc pour gérer les périphériques de stockage sur les réseaux TCP/IP, en particulier sur de longues distances. La cible iSCSI est un disque dur distant présenté à partir d'un serveur (ou) d'une cible iSCSI distante. D'autre part, le client iSCSI est appelé Initiateur et accédera au stockage partagé sur la machine Cible.

Les machines suivantes ont été utilisées dans cet article :

Serveur (cible) :


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

Client (initiateur) :


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

Étape 1 : Installation des packages sur la cible iSCSI

Pour installer les packages nécessaires à la cible (nous traiterons du client plus tard), faites :


yum install targetcli -y

Une fois l'installation terminée, nous démarrerons et activerons le service comme suit :


systemctl start target
systemctl enable target

Enfin, nous devons autoriser le service dans firewalld :


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

Et enfin, il ne faut pas oublier d'autoriser la découverte de la cible iSCSI :


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

Étape 2 : Définition des LUN sur le serveur cible

Avant de procéder à la définition des LUN dans la Cible, nous devons créer deux volumes logiques comme expliqué dans la partie 6 de la série RHCSA (« Configuration du stockage système »).

Cette fois, nous les nommerons vol_projects et vol_backups et les placerons dans un groupe de volumes appelé vg00, comme le montre la figure 1. N'hésitez pas à choisissez l'espace alloué à chaque LV :

Après avoir créé les LV, nous sommes prêts à définir les LUN dans la Target afin de les rendre disponibles pour la machine client.

Comme le montre la Fig. 2, nous allons ouvrir un shell targetcli et émettre les commandes suivantes, qui créeront deux backstores de blocs (ressources de stockage locales qui représentent le LUN que l'initiateur utilisera réellement) et un Nom qualifié Iscsi (IQN), une méthode d'adressage du serveur cible.

Veuillez vous référer à la page 32 de la RFC 3720 pour plus de détails sur la structure de l'IQN. En particulier, le texte après le caractère deux-points (:tgt1) spécifie le nom de la cible, tandis que le texte avant (server:) indique le nom d'hôte de la cible à l'intérieur du domaine.


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

Avec l'étape ci-dessus, un nouveau TPG (Target Portal Group) a été créé avec le portail par défaut (une paire composée d'une adresse IP et d'un port qui est le moyen par lequel les initiateurs peut atteindre la cible) en écoutant sur le port 3260 de toutes les adresses IP.

Si vous souhaitez lier votre portail à une IP spécifique (l'adresse IP principale de la cible, par exemple), supprimez le portail par défaut et créez-en un nouveau comme suit (sinon, ignorez les commandes targetcli suivantes. Notez que par souci de simplicité, nous les avons également ignorés :


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

Nous sommes maintenant prêts à procéder à la création de LUN. Notez que nous utilisons les backstores que nous avons créés précédemment (server.backups et server.projects). Ce processus est illustré sur la figure 3 :


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

La dernière partie de la configuration Target consiste à créer une liste de contrôle d'accès pour restreindre l'accès par initiateur. Puisque notre machine client est nommée « client », nous ajouterons ce texte à l'IQN. Reportez-vous à la Fig. 4 pour plus de détails :


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

À ce stade, nous pouvons utiliser le shell targetcli pour afficher toutes les ressources configurées, comme nous pouvons le voir sur la Fig. 5 :


targetcli
cd /
ls

Pour quitter le shell targetcli, tapez simplement exit et appuyez sur Entrée. La configuration sera automatiquement enregistrée dans /etc/target/saveconfig.json.

Comme vous pouvez le voir sur la Fig. 5 ci-dessus, nous avons un portail écoutant sur le port 3260 de toutes les adresses IP comme prévu. Nous pouvons vérifier cela en utilisant la commande netstat (voir Fig. 6) :


netstat -npltu | grep 3260

Ceci conclut la configuration Target. N'hésitez pas à redémarrer le système et à vérifier que tous les paramètres survivent à un redémarrage. Sinon, assurez-vous d'ouvrir les ports nécessaires dans la configuration du pare-feu et de démarrer le service cible au démarrage. Nous sommes maintenant prêts à configurer l'initiateur et à nous connecter au client.

Étape 3 : configuration de l'initiateur client

Dans le client, nous devrons installer le package iscsi-initiator-utils, qui fournit le démon serveur pour le protocole iSCSI (iscsid) ainsi que iscsiadm<., l'utilitaire d'administration :


yum update && yum install iscsi-initiator-utils

Une fois l'installation terminée, ouvrez /etc/iscsi/initiatorname.iscsi et remplacez le nom de l'initiateur par défaut (commenté dans la Fig. 7) par le nom précédemment défini dans le ACL sur le serveur (iqn.2016-02.com.tecmint.server:client).

Enregistrez ensuite le fichier et exécutez iscsiadm en mode découverte en pointant vers la cible. En cas de succès, cette commande renverra les informations sur la cible, comme indiqué sur la Fig. 7 :


iscsiadm -m discovery -t st -p 192.168.0.29

L'étape suivante consiste à redémarrer et activer le service iscsid :


systemctl start iscsid
systemctl enable iscsid

et contacter la cible en mode nœud. Cela devrait entraîner des messages au niveau du noyau qui, une fois capturés via dmesg, montrent l'identification du périphérique selon laquelle les LUN distants ont été attribués dans le système local (sde et sdf dans la Fig. 8) :


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

À partir de ce moment, vous pouvez créer des partitions, voire des LV (et des systèmes de fichiers par-dessus) comme vous le feriez avec n'importe quel autre périphérique de stockage. Pour plus de simplicité, nous allons créer une partition principale sur chaque disque qui occupera tout son espace disponible, et la formater avec ext4.

Enfin, montons /dev/sde1 et /dev/sdf1 sur /projects et /backups, respectivement ( notez que ces répertoires doivent être créés en premier) :


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

De plus, vous pouvez ajouter deux entrées dans /etc/fstab afin que les deux systèmes de fichiers soient montés automatiquement au démarrage en utilisant l'UUID de chaque système de fichiers tel que renvoyé par blkid. fort>.

Notez que l'option de montage _netdev doit être utilisée afin de différer le montage de ces systèmes de fichiers jusqu'au démarrage du service réseau :

Vous pouvez désormais utiliser ces appareils comme vous le feriez avec n’importe quel autre support de stockage.

Résumé

Dans cet article, nous avons expliqué comment installer et configurer une cible iSCSI et un initiateur dans les distributions RHEL/CentOS 7. Bien que la première tâche ne fasse pas partie des compétences requises de l'examen EX300 (RHCE), elle est nécessaire à la mise en œuvre du deuxième sujet.

N'hésitez pas à nous faire savoir si vous avez des questions ou des commentaires sur cet article – n'hésitez pas à nous écrire en utilisant le formulaire de commentaires ci-dessous.

Vous souhaitez configurer la cible iSCSI et l'initiateur client sur RHEL/CentOS 6, suivez ce guide : Configuration du stockage iSCSI centralisé avec l'initiateur client.