LINUX:ISCSI

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour à la gestion des disques

retour au menu de la Haute disponibilité


But

ISCSI est un protocole réseau qui permet d'utiliser à distance une partition de disque d'une machine "target" sur une autre machine "initiator" comme si ce disque était connecté localement.

Ce protocole est utilisé dans les SAN qui mettent à disposition un ensemble de disques durs à utiliser comme on le désire mais à distance.


Il ne faut le confondre avec les protocoles de partages de fichiers tels SMB (samba) et NFS. Un NAS est une machine qui offre des espaces de partage de fichiers.


Principe

Le protocole ISCSI travaille en mode Client-Serveur. Il est donc constitué de deux composantes:

  • Target : la machine qui met à disposition certain de ses disques
  • Initiator : la machine qui va utiliser les disques mis à disposition par le serveur

Nous allons expliquer la configuration de ces deux pièces: target et initiator.


Matériel et adressage IP

Dans notre exemple, nous utilisons deux serveurs ("target") et un client ("initiator"). Le schéma ci-dessous nous montre l'adressage IP et le nom de ces trois machines. Nous avons mis deux serveurs (target) ISCSI pour illustrer l'intérêt du terme "initiator-name" abordé ci-dessous.

LINUX:Iscsi.pdf


Serveur ou Target

Ces opérations sont à effectuer sur les deux serveurs.


Installation

Un paquet est à installer:

dnf install scsi-target-utils

Notons qu'il existe d'autres méthodes de gestion.


Préparation du disque dur

Nous avons ajouté un disque dur de 160GB que nous nommons "/dev/sdb". Nous y faisons une seule partition de type Linux: "/dev/sdb1".


Configuration

Les fichiers de configuration se retrouvent dans le répertoire "/etc/tgt".

  • le fichier "tgtd.conf" fait référence au fichier "targets.conf" et aux fichiers de type ".conf" se trouvant dans le sous-répertoire "/etc/tgt/conf.d",
  • le fichier "targets.conf" contient les paramètres généraux.
  • Dans le sous-répertoire "/etc/tgt/conf.d", on crée le fichier, que l'on nommera "diskb.conf", contenant les paramètres permettant de mettre à disposition la partition "/dev/sdb1" aux clients ISCSI distants.

Voici son contenu pour la machine "sv1.home.dom":


<target iqn.2023-02.dom.home.sv1:sv1.target1>
   backing-store /dev/sdb1
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
   incominguser diskuser Eupen2marron
   initiator-address 192.168.1.73
   initiator-address 192.168.1.74
</target>

Et voici son contenu pour la machine "sv2.home.dom":


<target iqn.2023-02.dom.home.sv2:sv2.target1>
   backing-store /dev/sdb1
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
   incominguser diskuser Eupen2marron
   initiator-address 192.168.1.73
</target>

Explications des options:

  • target <nom du target> : définit le nom du target sous lequel les clients ISCSI verront ce device. Normalement ce nom suit une structure de nommage: "iqn.<année>-<mois>.<nom de domaine en ordre inverse>:<intitulé personnel>". On a donné des noms du target différents pour les deux machines pour une question de lisibilité.
  • backing-store <nom de device disque> : définit le nom du device disque; il peut être une partition disque ou LVM
  • initiator-name <nom de l'initiator> : définit le nom de l'initiator, sorte de groupe de targets, ayant des options, permettant à un groupe de clients ISCSI d'y accéder; la structure de ce nom suit le même principe que le nom du target. Il est identique sur chaque machine, ainsi il forment un groupe de deux targets ISCSI.
  • incominguser <nom d'utilisateur> <mot de passe> : définit les paramètres d'authentification des clients ISCSI; lors d'une connexion, le client devra fournir de nom de cet utilisateur et son mot de passe pour cet "initiator-name". Ils sont liés au nom d'initiator.
  • initiator-address <adresse IP> : définit l'adresse IP d'un client ISCSI qui peut y accéder. Ils sont liés au nom d'initiator.

Il existe bon nombre d'autres options. Les trois dernières sont facultatives mais ajoute un aspect de sécurité.


Configurer le mur de feu ou FireWall

Si vous activez le Firewall, ce qui est recommandé, il faut y ajouter la règle suivante:


-A INPUT  -p tcp -m tcp --sport 3260 -s 192.168.1.73 -m conntrack --ctstate NEW -j ACCEPT


Activer et lancer le service

Le service à lancer est "tgtd.service". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service.

systemctl enable tgtd
systemctl start tgtd

Quand on exécute la commande:

netstat -nltp | grep tgtd

on obtient:


Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:3260            0.0.0.0:*               LISTEN      1767/tgtd
tcp6       0      0 :::3260                 :::*                    LISTEN      1767/tgtd

Nous remarquons que ce service écoute aussi en IPV6.

On peut aussi le constater avec la commande suivante:

tgtadm --lld iscsi --op show --mode portal

qui donne:


Portal: [::]:3260,1
Portal: 0.0.0.0:3260,1

Il est possible d'éliminer la première ligne par la commande:

tgtadm --lld iscsi --op delete --mode portal --param portal=[::]:3260

Nous allons l'intégrer au lancement du service. On crée le répertoire "/etc/systemd/system/tgtd.service.d"; dans ce répertoire, on ajoute le fichier "ipv4.conf" dont voici le contenu:


[Service]
ExecStartPost=/usr/sbin/tgtadm --lld iscsi --op delete --mode portal --param portal=[::]:3260

On recharge les paramètres de Systemd:

systemctl daemon-reload

On relance le service:

systemctl stop tgtd
systemctl start tgtd

L'entrée pour IPV6 a disparu.


Vérification

La commande suivante permet d'afficher les caractéristiques de ce target:

tgtadm --mode target --op show

qui donne:


Target 1: iqn.2023-02.dom.home.sv1:sv1.target1
   System information:
       Driver: iscsi
       State: ready
   I_T nexus information:
   LUN information:
       LUN: 0
           Type: controller
           SCSI ID: IET     00010000
           SCSI SN: beaf10
           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     00010001
           SCSI SN: beaf11
           Size: 160040 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/sdb1
           Backing store flags:
   Account information:
       diskuser
   ACL information:
       192.168.1.73
       iqn.2023-02.dom.home.sv:sv.initiator01







retour à la gestion des disques

retour au menu de la Haute disponibilité