En informatique, iSCSI est un acronyme pour Internet Small Computer Systems Interface, une norme de réseau de stockage basée sur le protocole Internet (IP) pour relier les installations de stockage de données. Il fournit un accès au niveau des blocs aux dispositifs de stockage en transportant des commandes SCSI sur un réseau TCP/IP. iSCSI est utilisé pour faciliter les transferts de données sur des intranets et pour gérer le stockage sur de longues distances. Il peut être utilisé pour transmettre des données sur des réseaux locaux (LAN), des réseaux étendus (WAN) ou Internet et peut permettre le stockage et la récupération de données indépendants de l'emplacement.
Le protocole permet aux clients (appelés initiateurs) d'envoyer des commandes SCSI (CDB) aux dispositifs de stockage (cibles) sur des serveurs distants. C'est un protocole de réseau de stockage (SAN), permettant aux organisations de consolider le stockage dans des baies de stockage tout en fournissant aux clients (comme les serveurs de bases de données et web) l'illusion de disques SCSI attachés localement. Il rivalise principalement avec Fibre Channel, mais contrairement au Fibre Channel traditionnel qui nécessite généralement un câblage dédié, iSCSI peut être exécuté sur de longues distances en utilisant l'infrastructure réseau existante.
Remarque : Vous pouvez constater que lorsque vos cibles sont découvertes, elles sont répertoriées sous une adresse IP différente. Cela se produit souvent si le service iSCSI est exposé via NAT ou une IP virtuelle. Dans de tels cas, iscsiadmin échouera à se connecter. Cela nécessite deux ajustements : l'un au nom du répertoire du nœud créé automatiquement par vos activités de découverte, et l'autre au fichier default contenu dans ce répertoire.
Par exemple, si vous essayez de vous connecter à une cible iSCSI sur 123.123.123.123 au port 3260. Le serveur exposant la cible iSCSI est en réalité à 192.168.1.2 mais exposé via NAT. isciadm enregistrera l'adresse interne plutôt que l'adresse publique:
Dans le répertoire, il y a un fichier par défaut avec tous les paramètres nécessaires pour se connecter à la cible.
Renommez /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ en /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/
Dans /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default, changez le paramètre node.conn[0].address pour pointer vers 123.123.123.123 au lieu de 192.168.1.2. Cela pourrait être fait avec une commande telle que sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default
Vous pouvez maintenant monter la cible selon les instructions du lien.
Notez qu'il affichera l'IP et le port des interfaces auxquels vous pouvez accéder ces cibles. Il peut même afficher des IPs internes ou différentes IPs de celle que vous avez utilisée.
Ensuite, vous attrapez la 2ème partie de la chaîne imprimée de chaque ligne (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe de la première ligne) et essayez de vous connecter:
Nous pouvons trouver plus d'informations à ce sujet en utilisant simplement sans aucun paramètre --login/--logout
iscsiadm-mnode--targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe"-p123.123.123.123:3260# BEGIN RECORD 2.0-873node.name=iqn.1992-05.com.emc:fl1001433000190000-3-vnxenode.tpgt=1node.startup=manualnode.leading_login=Noiface.hwaddress=<empty>iface.ipaddress=<empty>iface.iscsi_ifacename=defaultiface.net_ifacename=<empty>iface.transport_name=tcpiface.initiatorname=<empty>iface.bootproto=<empty>iface.subnet_mask=<empty>iface.gateway=<empty>iface.ipv6_autocfg=<empty>iface.linklocal_autocfg=<empty>iface.router_autocfg=<empty>iface.ipv6_linklocal=<empty>iface.ipv6_router=<empty>iface.state=<empty>iface.vlan_id=0iface.vlan_priority=0iface.vlan_state=<empty>iface.iface_num=0iface.mtu=0iface.port=0node.discovery_address=192.168.xx.xxnode.discovery_port=3260node.discovery_type=send_targetsnode.session.initial_cmdsn=0node.session.initial_login_retry_max=8node.session.xmit_thread_priority=-20node.session.cmds_max=128node.session.queue_depth=32node.session.nr_sessions=1node.session.auth.authmethod=Nonenode.session.auth.username=<empty>node.session.auth.password=<empty>node.session.auth.username_in=<empty>node.session.auth.password_in=<empty>node.session.timeo.replacement_timeout=120node.session.err_timeo.abort_timeout=15node.session.err_timeo.lu_reset_timeout=30node.session.err_timeo.tgt_reset_timeout=30node.session.err_timeo.host_reset_timeout=60node.session.iscsi.FastAbort=Yesnode.session.iscsi.InitialR2T=Nonode.session.iscsi.ImmediateData=Yesnode.session.iscsi.FirstBurstLength=262144node.session.iscsi.MaxBurstLength=16776192node.session.iscsi.DefaultTime2Retain=0node.session.iscsi.DefaultTime2Wait=2node.session.iscsi.MaxConnections=1node.session.iscsi.MaxOutstandingR2T=1node.session.iscsi.ERL=0node.conn[0].address=192.168.xx.xxnode.conn[0].port=3260node.conn[0].startup=manualnode.conn[0].tcp.window_size=524288node.conn[0].tcp.type_of_service=0node.conn[0].timeo.logout_timeout=15node.conn[0].timeo.login_timeout=15node.conn[0].timeo.auth_timeout=45node.conn[0].timeo.noop_out_interval=5node.conn[0].timeo.noop_out_timeout=5node.conn[0].iscsi.MaxXmitDataSegmentLength=0node.conn[0].iscsi.MaxRecvDataSegmentLength=262144node.conn[0].iscsi.HeaderDigest=Nonenode.conn[0].iscsi.DataDigest=Nonenode.conn[0].iscsi.IFMarker=Nonode.conn[0].iscsi.OFMarker=No# END RECORD
Il existe un script pour automatiser le processus de base d'énumération de sous-réseau disponible suriscsiadm