En informática, iSCSI es un acrónimo de Internet Small Computer Systems Interface, un estándar de redes de almacenamiento basado en el Protocolo de Internet (IP) para vincular instalaciones de almacenamiento de datos. Proporciona acceso a nivel de bloque a dispositivos de almacenamiento al transportar comandos SCSI a través de una red TCP/IP. iSCSI se utiliza para facilitar transferencias de datos en intranets y para administrar almacenamiento a largas distancias. Puede usarse para transmitir datos en redes de área local (LAN), redes de área amplia (WAN) o Internet y puede permitir el almacenamiento y recuperación de datos independientes de la ubicación.
El protocolo permite a los clientes (llamados iniciadores) enviar comandos SCSI (CDBs) a dispositivos de almacenamiento (objetivos) en servidores remotos. Es un protocolo de red de área de almacenamiento (SAN), que permite a las organizaciones consolidar el almacenamiento en matrices de almacenamiento mientras proporciona a los clientes (como servidores de bases de datos y web) la ilusión de discos SCSI conectados localmente. Compite principalmente con Fibre Channel, pero a diferencia de Fibre Channel tradicional que generalmente requiere cableado dedicado, iSCSI puede ejecutarse a largas distancias utilizando la infraestructura de red existente.
Nota: Puede suceder que al descubrir tus objetivos, estos aparezcan listados bajo una dirección IP diferente. Esto tiende a ocurrir si el servicio iSCSI está expuesto a través de NAT o una IP virtual. En casos como estos, iscsiadmin fallará al conectarse. Esto requiere dos ajustes: uno al nombre del directorio del nodo creado automáticamente por tus actividades de descubrimiento, y otro al archivo default contenido dentro de este directorio.
Por ejemplo, si estás intentando conectarte a un objetivo iSCSI en 123.123.123.123 en el puerto 3260. El servidor que expone el objetivo iSCSI en realidad está en 192.168.1.2 pero expuesto a través de NAT. isciadm registrará la dirección interna en lugar de la dirección pública:
Dentro del directorio, hay un archivo predeterminado con todas las configuraciones necesarias para conectarse al objetivo.
Renombra /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ a /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/
Dentro de /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default, cambia la configuración node.conn[0].address para apuntar a 123.123.123.123 en lugar de 192.168.1.2. Esto se puede hacer con un comando como 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
Ahora puedes montar el objetivo según las instrucciones en el enlace.
Nota que mostrará la IP y el puerto de las interfaces donde puedes alcanzar esos objetivos. Incluso puede mostrar IPs internas o IPs diferentes a la que utilizaste.
Luego capturas la 2da parte de la cadena impresa de cada línea (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe de la primera línea) y intentas iniciar sesión:
iscsiadm-mnode--targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe"-p123.123.123.123:3260--loginLogging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
Podemos encontrar más información al simplemente usar sin ningún parámetro --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
Hay un script para automatizar el proceso básico de enumeración de subredes disponible eniscsiadm