Centos 7 : Installation et configuration d'un initiator et target ISCSI



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.


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 condiguration 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


On lance aussi le service au démarrage :

Ensuite, on va utiliser la commande iscsiadm.

On va donc découvrir les targets de notre serveur :

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.btrfs /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  btrfs   defaults,_netdev        0 0
Cette page a été vue 5159 fois