CentOS 7 : Installation et configuration d'un initiator et target ISCSI
Table des matières
Dans cet article, je vais montrer comment, avec CentOS, se connecter à un stockage SCSI de type NAS.
Vu que je ne dispose pas de cet équipement pour faire mes tests, je vais utiliser donc un serveur CentOS pour «l'utiliser comme NAS»
Un peu de vocabulaire :
Pour résumer de manière assez grossière :
Target ISCSI = «serveur»
Initiator ISCSI = «client»
Evidemment, il faudra satisfaire plusieurs prérequis !
Le système doit être à jour.
Je conseille la désactivation de SELinux : /etc/sysconfig/selinux => disabled
L'activation des dépôts EPEL : yum install epel-release
CentOS1:
Rôle : Initiator
IP : 10.21.21.154
CentOS2:
Rôle : Target
IP : 10.21.21.152
Sur CentOS2, le stockage sera sur le disque sdb. On peut créer des partitions classiques, OU utiliser des volumes logiques (LV). On ne créé pas de système de fichiers.
Pour moi, ce sera un disque sur lequel on trouve un VolumGroup nommé datavg. Un LV est créé adrienlv pour cet article.
Sur le serveur, il faudra installer scsi-target-utils
Le nom du service s'appelle tgtd.
On démarre donc le service et on l'active au démarrage :
Il faut aussi ouvrir le parefeu sur les ports TCP suivants : 860 et 3260
Je rappelle ici la configuration de mon lvm :
Pour créer une LUN. Pour la créer cela se passe dans le fichier /etc/tgt/targets.conf
Exemple :
On peut créer plusieurs Target :
Une fois fait, on recharge le service :
La commande d'administration s'appelle tgtadm.
On vérifie le bon fonctionnement avec
Le «serveur», c'est fini.
Sur le client donc, il faudra installer iscsi-initiator-utils
Ensuite, on va utiliser la commande iscsiadm.
On va donc découvrir les targets de notre serveur (qui est 10.21.21.152 je le rappelle) :
La réponse ne tarde pas :
On récupère le nom qualifié iSCSI (iqn) : iqn.2017-01.fr.linuxtricks:tgt1
Pour s'y connecter, on utilise encore la commande iscsiadm :
A noter : Si on veut se déconnecter, il faudra employer l'option --logout
On constate que la connexion s'est bien déroulée :
Avec un fdisk -l on constate qu'un disque sdb est apparu de la taille du LV de l'autre côté !
On peut donc partitionner ce disque comme un disque classique. le stockage est bien sur l'autre machine.
On peut créer des systèmes de fichiers sans soucis :
On utilise ensuite ce système de fichiers comme s'il s'agissait d'un disque classique... ou presque !
Si vous mettez dans fstab le système de fichiers, utilisez l'option _netdev afin de monter cette partition après l'initialisation du réseau !
Introduction
Dans cet article, je vais montrer comment, avec CentOS, se connecter à un stockage SCSI de type NAS.
Vu que je ne dispose pas de cet équipement pour faire mes tests, je vais utiliser donc un serveur CentOS pour «l'utiliser comme NAS»
Un peu de vocabulaire :
- SCSI : Le SCSI est un type de connectique comme le SATA ou l’IDE qui est principalement utilisé sur les serveurs car il offre de très bonne vitesse (de 10000 à 15000 tr/mn)
- iSCSI : Le iSCSI est une émulation des commandes du protocole SCSI via le réseau. Il permet de s’abstenir de l’achat de connectiques coûteuses. Il est comparable au FBoE (FibreChannel over Ethernet) pour le FibreChannel.
- Target : Un Target iSCSI est un serveur iSCSI. C’est lui qui va distribuer nos données de type bloc via le réseau.
- Initiator : Un initiator iSCSI est un client. C’est lui qui va se connecter au Target. Une fois la partition montée sur l’initiator le système pourra l’utiliser indifféremment comme si elle était une partition d’un disque physique connecté à la machine.
- SAN : Un SAN (Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.
- LUN : pour « Logical Unit Number » correspond dans le domaine iSCSI au numéro d’identification d’une unité de stockage, c’est à dire à une partition partagé par notre SAN.
- iSCSI : Le iSCSI est une émulation des commandes du protocole SCSI via le réseau. Il permet de s’abstenir de l’achat de connectiques coûteuses. Il est comparable au FBoE (FibreChannel over Ethernet) pour le FibreChannel.
- Target : Un Target iSCSI est un serveur iSCSI. C’est lui qui va distribuer nos données de type bloc via le réseau.
- Initiator : Un initiator iSCSI est un client. C’est lui qui va se connecter au Target. Une fois la partition montée sur l’initiator le système pourra l’utiliser indifféremment comme si elle était une partition d’un disque physique connecté à la machine.
- SAN : Un SAN (Storage Area Network), est un réseau spécialisé permettant de mutualiser des ressources de stockage.
- LUN : pour « Logical Unit Number » correspond dans le domaine iSCSI au numéro d’identification d’une unité de stockage, c’est à dire à une partition partagé par notre SAN.
Pour résumer de manière assez grossière :
Target ISCSI = «serveur»
Initiator ISCSI = «client»
Prérequis
Evidemment, il faudra satisfaire plusieurs prérequis !
Le système doit être à jour.
Je conseille la désactivation de SELinux : /etc/sysconfig/selinux => disabled
L'activation des dépôts EPEL : yum install epel-release
Contexte de l'article
CentOS1:
Rôle : Initiator
IP : 10.21.21.154
CentOS2:
Rôle : Target
IP : 10.21.21.152
Sur CentOS2, le stockage sera sur le disque sdb. On peut créer des partitions classiques, OU utiliser des volumes logiques (LV). On ne créé pas de système de fichiers.
Pour moi, ce sera un disque sur lequel on trouve un VolumGroup nommé datavg. Un LV est créé adrienlv pour cet article.
Configuration d'un Target iSCSI
Sur le serveur, il faudra installer scsi-target-utils
Code BASH :
yum install scsi-target-utils
Le nom du service s'appelle tgtd.
On démarre donc le service et on l'active au démarrage :
Code BASH :
systemctl start tgtd
systemctl enable tgtd
Il faut aussi ouvrir le parefeu sur les ports TCP suivants : 860 et 3260
Code BASH :
firewall-cmd --zone=public --add-port=860/tcp --permanent firewall-cmd --zone=public --add-port=3260/tcp --permanent firewall-cmd --reload
Je rappelle ici la configuration de mon lvm :
Code BASH :
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root cl_centos2 -wi-ao---- 6.20g swap cl_centos2 -wi-ao---- 820.00m adrienlv datavg -wi-a----- 5.00g
Pour créer une LUN. Pour la créer cela se passe dans le fichier /etc/tgt/targets.conf
Code BASH :
vi /etc/tgt/targets.conf
Exemple :
Code TEXT :
<target iqn.2017-01.fr.linuxtricks:tgt1> backing-store /dev/datavg/adrienlv </target>
On peut créer plusieurs Target :
Code TEXT :
<target iqn.2017-01.fr.linuxtricks:tgt2> backing-store /dev/datavg/target2lv </target>
Une fois fait, on recharge le service :
Code BASH :
systemctl reload tgtd
La commande d'administration s'appelle tgtadm.
On vérifie le bon fonctionnement avec
Code BASH :
tgtadm --mode target --op show
Code TEXT :
Target 1: iqn.2017-01.fr.linuxtricks:tgt1 System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00020000 SCSI SN: beaf20 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: null Backing store path: None Backing store flags: LUN: 1 Type: disk SCSI ID: IET 00020001 SCSI SN: beaf21 Size: 5369 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: rdwr Backing store path: /dev/datavg/adrienlv Backing store flags: Account information: ACL information: ALL
Le «serveur», c'est fini.
Configuration d'un Initiator iSCSI
Sur le client donc, il faudra installer iscsi-initiator-utils
Code BASH :
yum install iscsi-initiator-utils
Ensuite, on va utiliser la commande iscsiadm.
On va donc découvrir les targets de notre serveur (qui est 10.21.21.152 je le rappelle) :
Code BASH :
iscsiadm --mode discoverydb --type sendtargets --portal 10.21.21.152 --discover
La réponse ne tarde pas :
Code TEXT :
10.21.21.152:3260,1 iqn.2017-01.fr.linuxtricks:tgt1
On récupère le nom qualifié iSCSI (iqn) : iqn.2017-01.fr.linuxtricks:tgt1
Pour s'y connecter, on utilise encore la commande iscsiadm :
Code BASH :
iscsiadm --mode node --targetname iqn.2017-01.fr.linuxtricks:tgt1 --portal 10.21.21.152:3260 --login
A noter : Si on veut se déconnecter, il faudra employer l'option --logout
Code BASH :
iscsiadm --mode node --targetname iqn.2017-01.fr.linuxtricks:tgt1 --portal 10.21.21.152:3260 --logout
On constate que la connexion s'est bien déroulée :
Code TEXT :
Logging in to [iface: default, target: iqn.2017-01.fr.linuxtricks:tgt1, portal: 10.21.21.152,3260] (multiple) Login to [iface: default, target: iqn.2017-01.fr.linuxtricks:tgt1, portal: 10.21.21.152,3260] successful.
Avec un fdisk -l on constate qu'un disque sdb est apparu de la taille du LV de l'autre côté !
Code TEXT :
Disque /dev/sdb : 5368 Mo, 5368709120 octets, 10485760 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
On peut donc partitionner ce disque comme un disque classique. le stockage est bien sur l'autre machine.
Code BASH :
cfdisk /dev/sdb
On peut créer des systèmes de fichiers sans soucis :
Code BASH :
mkfs.ext4 /dev/sdb1
On utilise ensuite ce système de fichiers comme s'il s'agissait d'un disque classique... ou presque !
Si vous mettez dans fstab le système de fichiers, utilisez l'option _netdev afin de monter cette partition après l'initialisation du réseau !
Code BASH :
UUID=aeaab764-a69f-4443-8d13-9a047fbb18bf /mnt ext4 defaults,_netdev 0 0