Red Hat et dérivées version SERVEUR

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

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

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