GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer la cible de stockage Linux iSCSI et l'accès au client distant

iSCSI signifie Internet Small Computer System Interface.

Cela fonctionne sur la couche TCP/IP et permet aux commandes SCSI d'être envoyées sur les réseaux locaux (LAN).

Il est utilisé pour accéder au stockage sur votre réseau via TCP/IP à l'aide de transferts de données au niveau des blocs.

Il y a souvent une comparaison entre NFS et iSCSI. La principale différence est que NFS est une implémentation au niveau des fichiers, tandis qu'iSCSI est une implémentation au niveau des blocs.

Dans les implémentations au niveau des blocs telles que iSCSI et Fibre Channel, la baie de stockage offre une collection de blocs au client, qui formate ensuite ce stockage brut avec le système de fichiers qu'il décide d'utiliser.

Dans l'ordre pour accéder au stockage via iscsi, nous avons besoin des composants suivants :

  1. Initiateur iSCSI (Matériel/Logiciel) - Il s'agit d'un client iscsi qui peut envoyer des commandes iscsi sur le réseau TCP/IP. Il s'agit généralement de votre adaptateur NIC sur votre serveur et peut être physique ou virtuel avec une adresse IP configurée sur le même sous-réseau avec l'interface iscsi de la matrice de stockage.
  2. Cible iSCSI (votre nœud de stockage) :il s'agit de votre nœud de stockage que vous pouvez configurer vous-même ou qui peut être une baie physique d'un fournisseur prenant en charge la configuration iscsi
  3. Commutateur iSCSI (facultatif) :le commutateur iscsi est facultatif ici, mais afin de séparer le trafic hôte du trafic iscsi dans les déploiements d'entreprise, il est recommandé d'utiliser un commutateur distinct pour le trafic iscsi.

Dans ce didacticiel, nous allons voir comment configurer notre propre nœud de stockage prenant en charge la configuration iscsi et accéder au stockage à partir du client iscsi sur une machine Centos 6.

Les mêmes procédures devraient fonctionner pour la version RHEL 6 (CentOS 6). Pour CentOS 7, la procédure est légèrement différente en utilisant targetcli, que nous aborderons dans un autre article.

1. Installez SCSI Target Utils et démarrez tgtd

Tout d'abord, installez scsi-target-utils à l'aide de la commande yum sur le nœud de stockage, qui est nécessaire pour configurer l'iSCSI.

yum install scsi-target-utils

Si Perl n'est pas déjà installé sur votre système, la commande ci-dessus installera automatiquement Perl et plusieurs autres dépendances (par exemple :sg3_utils).

Cela installera la commande tgtadm comme indiqué ci-dessous.

# which tgtadm
/usr/sbin/tgtadm

Démarrez le démon cible SCSI comme indiqué ci-dessous.

# service tgtd start
Starting SCSI target daemon: [ OK ]

À l'aide de la commande chkconfig, assurez-vous qu'elle démarre automatiquement au démarrage du système.

chkconfig tgtd on

2. Ajouter une nouvelle cible iSCSI à l'aide de tgtadm

Utilisez la commande tgtadm pour ajouter une nouvelle cible iSCSI sur le nœud de stockage en utilisant la syntaxe suivante :

tgtadm --lld --mode target --op new --tid --targetname

L'exemple suivant crée une cible avec l'ID cible 1 avec l'iqn ci-dessous,

tgtadm --lld iscsi --op new --mode target --tid 1 \
       -T iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Dans la commande ci-dessus :

  • la commande tgtadm est l'utilitaire d'administration cible SCSI Linux
  • –lld iscsi spécifie que nous utilisons le pilote iscsi (vous pouvez également utiliser -L au lieu de –lld)
  • –op new spécifie l'opération, dans ce cas, nous créons une nouvelle cible (vous pouvez également utiliser -o au lieu de –op)
  • –mode target indique que nous créons une cible. Les autres modes possibles sont :logicalunit, account, portal, conn, sys. (Vous pouvez également utiliser -m au lieu de –mode)
  • –tid 1 spécifie l'ID cible, qui est 1 dans cet exemple (vous pouvez également utiliser -t au lieu de –tid)
  • -T spécifie le nom de la cible (vous pouvez également utiliser –targetname au lieu de -T)

3. Afficher la configuration de la cible iSCSI

Une fois la cible créée, vous pouvez afficher les détails à l'aide de l'opération "afficher" comme indiqué ci-dessous. Cela fournira les informations système et les informations LUN de toutes les cibles disponibles sur votre système.

Comme vous le voyez dans la sortie suivante, nous n'avons qu'une seule cible (Target 1), qui est le pilote iSCSI, avec un LUN (LUN 0).

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
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
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:

Remarque :Dans la sortie ci-dessus, le "Chemin du magasin de sauvegarde" est actuellement Aucun, car nous n'avons pas encore associé de chemin de stockage physique à cet iSCSI.

4. Ajouter le LUN à la cible iSCSI

Dans l'exemple suivant, nous ajouterons un LUN existant, qui est /storage/lun01 qui est monté et disponible sur notre nœud de stockage à la cible iSCSI que nous avons créée.

Pour le LUN existant (/storage/lun01), vous devez également définir le contexte SELinux de manière appropriée, comme indiqué ci-dessous.

semanage fcontext -a -t tgtd_var_lib_t /storage/lun01

restorecon -Rv /storage/lun01

Si vous obtenez une "Demande non valide", à des fins de test temporaire, vous pouvez désactiver SELinux en définissant SELinux sur le mode permissif pour voir s'il résout le problème et limiter le problème à l'autorisation SELinux.

Maintenant, à l'aide de la commande tgtadm, ajoutez le /storage/lun01 à la cible iSCSI que nous avons créée précédemment.

tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \
       --lun 1 --backing-store /storage/lun01

Dans la commande ci-dessus :

  • la plupart des options sont identiques à celles que nous avons expliquées dans notre précédente commande tgtadm ci-dessus.
  • –mode unité logique. Veuillez noter qu'auparavant, nous utilisions "cible" pour le mode, mais ici nous utilisons l'unité logique pour le mode.
  • –lun indique l'identifiant LUN, qui est 1 dans cet exemple (vous pouvez également utiliser -l au lieu de –lun)
  • –backing-store indique le chemin de stockage physique sur le serveur de stockage. Dans notre exemple, il s'agit de /storage/lun01 (vous pouvez également utiliser -b au lieu de l'option –backing-store)
  • –tid 1 indique que connecter ce LUN donné à l'identifiant cible existant 1, que nous avons créé précédemment.

Maintenant, affichez à nouveau les détails de l'iSCSI sur votre système.

Mais, cette fois, dans le LUN 1, le "chemin du magasin de sauvegarde" dans la sortie suivante pointera vers le chemin de stockage que nous avons associé à cet iSCSI. Dans notre exemple, il s'agit de /storage/lun01.

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:

Pour une raison quelconque, si vous avez fait une erreur dans la commande ci-dessus et souhaitez supprimer l'association LUN1 que nous avons créée ci-dessus, utilisez la commande suivante.

tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1

Dans la commande ci-dessus :

  • Tout est identique à la commande précédente
  • Mais, ici, le -op (qui est l'opération) est delete.
  • Cela supprimera le lun1 de l'iSCSI tid 1 (cible 1)

5. Configurer la restriction ACL pour l'iSCSI

Ensuite, vous devez configurer ACL pour autoriser les initiateurs pouvant accéder à cette cible scsi.

tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

Dans la commande ci-dessus :

  • La plupart des options sont assez similaires à nos commandes précédentes
  • -I ALL indique que nous autorisons la cible à accepter TOUS les initiateurs (vous pouvez également utiliser –initiator-address au lieu de -I)

Lorsque vous affichez les détails iSCSI à l'aide de l'opération "afficher", vous remarquerez les informations ACL vers la fin de la sortie, comme indiqué ci-dessous.

# tgtadm --lld iscsi --op show --mode target
..
..
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:
ALL

Si vous souhaitez limiter uniquement le client qui a besoin d'accéder au stockage, vous pouvez utiliser la commande suivante et spécifier une adresse IP spécifique.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.109

Si vous souhaitez restreindre l'accès à un sous-réseau particulier, vous pouvez spécifier le sous-réseau au lieu de l'adresse IP, comme indiqué ci-dessous.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.0/24

6. Autoriser l'accès au port 3260

Si vous exécutez ip-tables, ajoutez des règles ip-tables et autorisez le port 3260 comme indiqué ci-dessous.

iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT

Vérifiez que le port 3260 est ouvert à l'aide de la commande netstat comme indiqué ci-dessous.

# netstat -tunlp | grep 3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1248/tgtd
tcp 0 0 :::3260 :::* LISTEN 1248/tgtd

Remarque :Jusqu'à présent, toutes les commandes ci-dessus étaient exécutées sur le nœud du serveur de stockage. À partir de maintenant, toutes les commandes de la section suivante seront exécutées sur la machine cliente, qui doit se connecter au serveur de stockage.

7. Sur le client :Découvrir iSCSI

Sur le client, avant de découvrir l'iSCSI, vous ne verrez pas le nouveau disque iSCSI. Par exemple, la sortie suivante n'affichera rien.

fdisk -l /dev/sdb

Maintenant, toute la configuration côté cible est terminée et le LUN est accessible via iscsi depuis le client. Les procédures ci-dessous vous montreront comment configurer le côté client pour accéder au stockage.

Sur le serveur client, installez le package iscsi-initiator-utils comme indiqué ci-dessous.

yum install iscsi-initiator-utils

Ensuite, découvrez la cible iSCSI à l'aide de la commande iscsiadm comme indiqué ci-dessous.

[root@client ~]# iscsiadm --mode discovery --type sendtargets \
                --portal 192.168.2.166

La commande ci-dessus affichera la sortie suivante :

192.168.2.166:3260,1 iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

Dans la commande ci-dessus :

  • La commande iscsiadm est l'utilitaire d'administration open-iscsi
  • –mode discovery indique que nous découvrons ici le serveur iSCSI. Les autres modes possibles sont :discoverydb, node, fw, host iface ou session. (Vous pouvez également utiliser -m au lieu de –mode)
  • –type sendtargets spécifique ici. Les autres valeurs possibles sont :sendtargets, fw et iSNS. Vous pouvez également utiliser l'abréviation st au lieu de sendtargets. (Vous pouvez également utiliser -t au lieu de -type)
  • –portal spécifiez l'adresse IP du nœud de stockage iSCSI que nous avons configuré précédemment (vous pouvez également utiliser -p au lieu de –portal).
  • Pour l'adresse IP, si vous exécutez iSCSI sur un port autre que le port par défaut (autre que 3260), spécifiez-le après l'adresse IP. Par exemple, 192.168.2.166:3261

Remarque :Si vous obtenez l'erreur "Aucune route vers l'hôte", cela signifie que les iptables sur la cible ou le client ne sont pas configurés correctement.

8. Sur le client :connectez-vous à la session cible iSCSI

Une fois le processus de découverte terminé avec succès, vous devez vous connecter à la session cible iscsi à l'aide de la commande suivante :

[root@client ~]# iscsiadm --mode node --targetname iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com \
                          --portal 192.168.2.166 --login

La commande ci-dessus affichera la sortie suivante :

Logging in to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] (multiple)
Login to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] successful.

Dans la commande ci-dessus :

  • La plupart des options sont similaires à la commande précédente.
  • Pour le mode, nous utilisons ici node (au lieu de discovery)
  • -targetname spécifie le nom de la cible. Il s'agit du nom cible que nous avons spécifié sur le nœud de stockage lors de la création de l'iSCSI (vous pouvez également utiliser -T au lieu de –targetname)
  • L'option
  • –login permet de se connecter à toutes les cibles découvertes. Dans notre cas, il se connectera à notre serveur de stockage iSCSI spécifié dans l'option –portal.

Vous devriez maintenant voir votre nouveau périphérique iscsi sur votre sortie fdisk. Vous pouvez le formater, l'ajouter à lvm et l'utiliser selon vos besoins.

La sortie de la commande fdisk affichera maintenant le périphérique.

[root@client ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Remarque :Le disque ci-dessus ne provient pas de la machine cliente, il provient du serveur de stockage en tant qu'iSCSI.


Linux
  1. Comment accéder aux systèmes de fichiers Linux dans Windows 10 et WSL 2

  2. Comment configurer le serveur VNC (accès au bureau à distance Linux) sur CentOS/RHEL et Fedora

  3. Comment configurer le serveur et le client NFS sur Rocky/Alma Linux 8

  4. Comment installer et configurer le client Putty SSH sur le bureau Linux

  5. Comment installer et configurer le serveur et le client NIS YPServ Linux

Comment configurer ZSH et Oh-my-zsh sous Linux

Comment désactiver la suspension et l'hibernation sous Linux

Comment installer et configurer Let's Encrypt (Certbot) sous Linux

Comment installer et configurer la console Web Cockpit sur le système Linux

Comment configurer et gérer un référentiel Git distant sous Linux

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN