« LINUX:ISCSI » : différence entre les versions

7 894 octets ajoutés ,  9 juin 2023
aucun résumé des modifications
Aucun résumé des modifications
Aucun résumé des modifications
Balise : Révocation manuelle
 
(13 versions intermédiaires par le même utilisateur non affichées)
Ligne 53 : Ligne 53 :
     backing-store /dev/sdb1
     backing-store /dev/sdb1
     initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
     initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
     incominguser diskuser Eupen2marron
     incominguser diskuser Eupen2Marron
     initiator-address 192.168.1.73
     initiator-address 192.168.1.73
  </target>
  </target>
Ligne 62 : Ligne 62 :
     backing-store /dev/sdb1
     backing-store /dev/sdb1
     initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
     initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
     incominguser diskuser Eupen2marron
     incominguser diskuser Eupen2Marron
     initiator-address 192.168.1.73
     initiator-address 192.168.1.73
  </target>
  </target>
Ligne 87 : Ligne 87 :
  systemctl enable tgtd.service
  systemctl enable tgtd.service
  systemctl start tgtd.service
  systemctl start tgtd.service
Eventuellement:
systemctl enable remote-fs.target
Quand on exécute la commande:
Quand on exécute la commande:
  netstat -nltp | grep tgtd
  netstat -nltp | grep tgtd
Ligne 185 : Ligne 187 :
  node.session.auth.authmethod = CHAP
  node.session.auth.authmethod = CHAP
  node.session.auth.username = '''diskuser'''
  node.session.auth.username = '''diskuser'''
  node.session.auth.password = '''Eupen2marron'''
  node.session.auth.password = '''Eupen2Marron'''
----
----
* Dans le fichier "initiatorname.iscsi", on remplace la ligne existante par le nom d'initiator défini sur les serveurs targets ISCSI:
* Dans le fichier "initiatorname.iscsi", on remplace la ligne existante par le nom d'initiator défini sur les serveurs targets ISCSI:
Ligne 195 : Ligne 197 :


==Activer et lancer le service==
==Activer et lancer le service==
Le service à lancer est "iscsid.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.
Le service à lancer est "iscsid.service". La première et la seconde commandes active et lance le service "iscsid" et sont chargées d'établir les connexions aux "Targets" découverts:
  systemctl enable iscsid.service
  systemctl enable iscsi.service
  systemctl start iscsi.service
  systemctl start iscsi.service
Il est important de vérifier que le "target" suivant est activé:
Il est important de vérifier que le "target" de Systemd suivant est activé:
  systemctl enable remote-fs.target
  systemctl enable remote-fs.target
Et éventuellement:
Et éventuellement:
systemctl enable iscsid.socket
  systemctl enable iscsiuio.socket
  systemctl enable iscsiuio.socket
Il existe un autre ensemble de services et socket que l'on peut activer en remplacement de celui ci-dessus.
  systemctl enable iscsi-onboot.service
  systemctl enable iscsi-onboot.service
  systemctl enable iscsid.socket
  systemctl enable iscsid.service
systemctl enable iscsi.service
systemctl enable remote-fs.target
Et éventuellement:
systemctl enable iscsiuio.socket
Notons que par défaut, ils sont activés sous Fedora Server.
Notons que par défaut, ils sont activés sous Fedora Server.
Activez l'un ou l'autre.




Ligne 235 : Ligne 229 :
En parallèle dans le répertoire "/var/lib/iscsi/send_targets", deux sous-répertoires sont apparus: "192.168.1.71,3260" et "192.168.1.72,3260". Dans chacun, le fichier "st_config" est créé. On y rencontre d'autres paramètres liés aux serveurs.
En parallèle dans le répertoire "/var/lib/iscsi/send_targets", deux sous-répertoires sont apparus: "192.168.1.71,3260" et "192.168.1.72,3260". Dans chacun, le fichier "st_config" est créé. On y rencontre d'autres paramètres liés aux serveurs.


 
<!--
==Automatisation de la liaison==
==Automatisation de la liaison==
Les commandes suivantes permettent de créer une liaison automatiques à ces devices.
Les commandes suivantes permettent de créer une liaison automatiques à ces devices.
Ligne 266 : Ligne 260 :
  iscsiadm --mode discoverydb --portal 192.168.1.71:3260 -n discovery.sendtargets.use_discoveryd -v Yes -o update -t sendtargets
  iscsiadm --mode discoverydb --portal 192.168.1.71:3260 -n discovery.sendtargets.use_discoveryd -v Yes -o update -t sendtargets
  iscsiadm --mode discoverydb --portal 192.168.1.72:3260 -n discovery.sendtargets.use_discoveryd -v Yes -o update -t sendtargets
  iscsiadm --mode discoverydb --portal 192.168.1.72:3260 -n discovery.sendtargets.use_discoveryd -v Yes -o update -t sendtargets
 
-->


==Mise en route de la liaison==
==Mise en route de la liaison==
Maintenant soit on relance la machine "initiator" soit on relance le service "iscsid.service":
Maintenant soit on relance la machine "initiator" soit on relance le service "iscsi.service":
  systemctl restart iscsid.service
  systemctl restart iscsi.service




==Vérification==
On peut vérifier que les liaisons sont effectives.
On peut vérifier que les liaisons sont effectives.
* par la commande:
* par la commande:
  lsblk
  lsblk
fait apparaître les deux entrées suivantes:
qui fait apparaître les deux nouvelles entrées suivantes:
----
----
  NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
  sdb                  8:16  0  149G  0 disk
  '''sdb'''                   8:16  0  149G  0 disk
  sdc                  8:32  0  149G  0 disk
  '''sdc'''                   8:32  0  149G  0 disk
----
----
Ce sont les deux partitions mises à disposition par les serveurs "target".
Ce sont les deux partitions mises à disposition par les serveurs "target".
Ligne 289 : Ligne 284 :
  Connexions Internet actives (serveurs et établies)
  Connexions Internet actives (serveurs et établies)
  Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
  Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
  tcp        0      0 192.168.1.73:57520      192.168.1.71:3260      ESTABLISHED 2315/iscsid
  tcp        0      0 192.168.1.73:57520      '''192.168.1.71''':3260      ESTABLISHED 2315/iscsid
  tcp        0      0 192.168.1.73:58242      192.168.1.72:3260      ESTABLISHED 2315/iscsid
  tcp        0      0 192.168.1.73:58242      '''192.168.1.72''':3260      ESTABLISHED 2315/iscsid
----
* par la commande:
iscsiadm -m session -P 3
qui affiche plus d'informations, notamment la liaison entre le serveur et le device disque à la fin de chaque bloc:
----
iSCSI Transport Class version 2.0-870
version 6.2.1.4
Target: '''iqn.2023-02.dom.home.sv1:sv1.target1''' (non-flash)
        Current Portal: '''192.168.1.71''':3260,1
        Persistent Portal: 192.168.1.71:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.2023-02.dom.home.sv:sv.initiator01
                Iface IPaddress: 192.168.1.73
                Iface HWaddress: default
                Iface Netdev: default
                SID: 5
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                *********
                Recovery Timeout: 120
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                *****
                username: diskuser
                password: ********
                username_in: <empty>
                password_in: ********
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 8192
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                ************************
                Attached SCSI devices:
                ************************
                Host Number: 6  State: running
                scsi6 Channel 00 Id 0 Lun: 0
                scsi6 Channel 00 Id 0 Lun: 1
                        Attached scsi '''disk sdb'''          State: running
Target: '''iqn.2023-02.dom.home.sv2:sv2.target1''' (non-flash)
        Current Portal: '''192.168.1.72''':3260,1
        Persistent Portal: 192.168.1.72:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.2023-02.dom.home.sv:sv.initiator01
                Iface IPaddress: 192.168.1.73
                Iface HWaddress: default
                Iface Netdev: default
                SID: 6
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                *********
                Recovery Timeout: 120
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                *****
                username: diskuser
                password: ********
                username_in: <empty>
                password_in: ********
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 8192
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
                ************************
                Attached SCSI devices:
                ************************
                Host Number: 7  State: running
                scsi7 Channel 00 Id 0 Lun: 0
                scsi7 Channel 00 Id 0 Lun: 1
                        Attached scsi '''disk sdc'''          State: running
----
 
 
==Partitionnement==
On partitionne ces deux disques "/dev/sdb" et "/dev/sdc" comme vu à l'article sur le [[LINUX:Partitionnement du disque|Partitionnement du disque]].
Nous n'avons fait qu'une partition.
 
 
La commande:
lsblk
donne maintenant:
----
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb                  8:16  0  149G  0 disk
└─'''sdb1'''                8:17  0  149G  0 part
sdc                  8:32  0  149G  0 disk
└─'''sdc1'''                8:33  0  149G  0 part
----
 
 
==Formatage==
Nous formatons ces deux partitions au format "xfs":
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdc1
 
 
==Montage classique via le fichier "/etc/fstab"==
Nous allons les monter comme décrit dans l'article sur le [[LINUX:Montage d'espace disque|Montage d'espace disque]].
 
 
Nous créons deux répertoires vides pour le montage:
mkdir /datab
mkdir /datac
 
 
Comme nous ne connaissons pas à l'avance le nom du device disque, nous utiliserons son UUID.
 
Exécutons la commande:
blkid
qui donne ces deux UUID:
----
/dev/sdb1: '''UUID="74435bdf-f453-471f-aa85-ec5418d59cfd"''' BLOCK_SIZE="512" TYPE="xfs" PARTUUID="2a4e45db-01"
/dev/sdc1: '''UUID="c45eb09d-3eae-4090-995f-3da5ab7d167c"''' BLOCK_SIZE="512" TYPE="xfs" PARTUUID="7cdf9c3a-01"
----
 
 
Nous avons le nécessaire pour ajouter toutes deux entrées au fichier "/etc/fstab":
----
UUID="74435bdf-f453-471f-aa85-ec5418d59cfd" /datab  xfs  defaults,_netdev        0 0
UUID="c45eb09d-3eae-4090-995f-3da5ab7d167c" /datac  xfs  defaults,_netdev        0 0
----
----
L'option "_netdev" est fondamentale car ce montage ne doit être fait qu'après l'exécution du service "iscsid.service" lors de la phase de Systemd nommée "remote-fs.target".
On peut monter ces nouveaux espaces disques:
mount -a
ou redémarrer la machine "cl1.home.dom".
La commande:
df
voit apparaître nos deux répertoires "/datab" et "/datac":
----
Sys. de fichiers            blocs de 1K Utilisé Disponible Uti% Monté sur
/dev/sdb1                    156211688 1122160  155089528  1% /datab
/dev/sdc1                    156211688 1122160  155089528  1% /datac
----
==Montage via Systemd==
Au lieu d'ajouter ces deux entrées au fichier "/etc/fstab", on peut utiliser la fonctionnalité de Systemd pour monter ces disques.
Dans le répertoire "/usr/lib/systemd/system", on crée deux fichiers, un pour chaque montage.
* le fichier "datab.mount" dont voici le contenu:
----
[Unit]
Before=remote-fs.target
After=iscsid.service
Requires=iscsid.service
&nbsp;
[Mount]
What=/dev/disk/by-uuid/74435bdf-f453-471f-aa85-ec5418d59cfd
Where=/datab
Type=xfs
Options=defaults,_netdev
&nbsp;
[Install]
WantedBy=remote-fs.target
----
* le fichier "datac.mount" dont voici le contenu:
----
[Unit]
Before=remote-fs.target
After=iscsid.service.
Requires=iscsid.service
&nbsp;
[Mount]
What=/dev/disk/by-uuid/c45eb09d-3eae-4090-995f-3da5ab7d167c
Where=/datac
Type=xfs
Options=defaults,_netdev
&nbsp;
[Install]
WantedBy=remote-fs.target
----
On y retrouve tous les paramètres entrés dans le fichier "/etc/fstab". On remarque l'ordre d'éxécution. Il se fait après le service "iscsid.service" qui effectue la liaison avec les serveurs "target" et le montage se fait lors de la phase "remote-fs.target".
On recharge les paramètres de Systemd que nous venons de modifier:
systemctl daemon-reload
et on active ces deux points de montage:
systemctl enable datab.mount
systemctl enable datac.mount
Deux liens sont ajouté dans le répertoire "/etc/systemd/system/remote-fs.target.wants".


On redémarre la machine "cl1.home.dom" ou on exécute les commandes:
systemctl start datab.mount
systemctl start datac.mount
pour monter ces deux disques.




==RAID 1==
Au lieu d'utiliser les deux disques séparément, comme ils sont de même taille, on peut les coupler pour faire un seul device de type RAID 1 software.