« LINUX:ISCSI » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 38 : | Ligne 38 : | ||
==Préparation du disque dur== | ==Préparation du disque dur== | ||
Nous avons ajouté un disque dur de | Nous avons ajouté un disque dur de 160GB que nous nommons "/dev/sdb". Nous y faisons une seule partition de type Linux: "/dev/sdb1". | ||
Ligne 123 : | Ligne 123 : | ||
qui donne: | qui donne: | ||
---- | ---- | ||
Target 1: iqn.2023-02.dom.home.sv1:sv1.target1 | Target 1: '''iqn.2023-02.dom.home.sv1:sv1.target1''' | ||
System information: | System information: | ||
Driver: iscsi | Driver: '''iscsi''' | ||
State: ready | State: ready | ||
I_T nexus information: | I_T nexus information: | ||
Ligne 143 : | Ligne 143 : | ||
Backing store path: None | Backing store path: None | ||
Backing store flags: | Backing store flags: | ||
LUN: 1 | '''LUN: 1''' | ||
Type: disk | '''Type: disk''' | ||
SCSI ID: IET 00010001 | SCSI ID: IET 00010001 | ||
SCSI SN: beaf11 | SCSI SN: beaf11 | ||
Size: 160040 MB, Block size: 512 | '''Size: 160040 MB''', Block size: 512 | ||
Online: Yes | Online: Yes | ||
Removable media: No | Removable media: No | ||
Ligne 155 : | Ligne 155 : | ||
Thin-provisioning: No | Thin-provisioning: No | ||
Backing store type: rdwr | Backing store type: rdwr | ||
Backing store path: /dev/sdb1 | Backing store path: '''/dev/sdb1''' | ||
Backing store flags: | Backing store flags: | ||
Account information: | Account information: | ||
diskuser | '''diskuser''' | ||
ACL information: | ACL information: | ||
192.168.1.73 | '''192.168.1.73''' | ||
iqn.2023-02.dom.home.sv:sv.initiator01 | '''iqn.2023-02.dom.home.sv:sv.initiator01''' | ||
---- | ---- | ||
Version du 4 mars 2023 à 17:18
→ 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.
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 optient:
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 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
ipv4.conf
[Service] ExecStartPost=/usr/sbin/tgtadm --lld iscsi --op delete --mode portal --param portal=[::]:3260
→ retour à la gestion des disques
→ retour au menu de la Haute disponibilité