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 :
- 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.
- 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
- 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.