Em computação, iSCSI é um acrônimo para Internet Small Computer Systems Interface, um padrão de rede de armazenamento baseado em Protocolo de Internet (IP) para conectar instalações de armazenamento de dados. Ele fornece acesso em nível de bloco a dispositivos de armazenamento, transportando comandos SCSI por uma rede TCP/IP. iSCSI é usado para facilitar transferências de dados sobre intranets e para gerenciar armazenamento a longas distâncias. Pode ser usado para transmitir dados sobre redes de área local (LANs), redes de área ampla (WANs) ou a Internet e pode permitir armazenamento e recuperação de dados independentes de localização.
O protocolo permite que clientes (chamados iniciadores) enviem comandos SCSI (CDBs) para dispositivos de armazenamento (alvos) em servidores remotos. É um protocolo de rede de área de armazenamento (SAN), permitindo que organizações consolidem armazenamento em matrizes de armazenamento, enquanto fornecem aos clientes (como servidores de banco de dados e web) a ilusão de discos SCSI conectados localmente. Ele compete principalmente com Fibre Channel, mas, ao contrário do Fibre Channel tradicional, que geralmente requer cabeamento dedicado, o iSCSI pode ser executado a longas distâncias usando a infraestrutura de rede existente.
Nota: Você pode descobrir que, quando seus alvos são descobertos, eles estão listados sob um endereço IP diferente. Isso tende a acontecer se o serviço iSCSI estiver exposto via NAT ou um IP virtual. Em casos como esses, iscsiadmin falhará ao tentar se conectar. Isso requer duas alterações: uma no nome do diretório do nó criado automaticamente por suas atividades de descoberta e uma no arquivo default contido dentro deste diretório.
Por exemplo, você está tentando se conectar a um alvo iSCSI em 123.123.123.123 na porta 3260. O servidor que expõe o alvo iSCSI está na verdade em 192.168.1.2, mas exposto via NAT. isciadm registrará o endereço interno em vez do endereço público:
Dentro do diretório, há um arquivo padrão com todas as configurações necessárias para se conectar ao alvo.
Renomeie /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ para /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, altere a configuração node.conn[0].address para apontar para 123.123.123.123 em vez de 192.168.1.2. Isso pode ser feito com um 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
Você pode agora montar o alvo conforme as instruções no link.
Note que ele mostrará o IP e a porta das interfaces onde você pode alcançar esses alvos. Ele pode até mostrar IPs internos ou IPs diferentes do que você usou.
Então você pega a 2ª parte da string impressa de cada linha (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe da primeira linha) e tenta fazer login:
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 mais informações sobre isso apenas usando sem nenhum 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
Há um script para automatizar o processo básico de enumeração de sub-rede disponível emiscsiadm