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. O iSCSI é usado para facilitar transferências de dados em intranets e para gerenciar armazenamento em longas distâncias. Pode ser usado para transmitir dados em redes locais (LANs), redes de longa distância (WANs) ou na 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 o armazenamento em matrizes de armazenamento, enquanto fornecem aos clientes (como servidores de banco de dados e web) a ilusão de discos SCSI localmente conectados. Ele compete principalmente com Fibre Channel, mas ao contrário do Fibre Channel tradicional que geralmente requer cabeamento dedicado, o iSCSI pode ser executado em longas distâncias usando a infraestrutura de rede existente.
Nota: Você pode descobrir que, quando seus alvos são descobertos, eles sã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 se conectar. Isso requer duas alterações: uma no nome do diretório do nó criado automaticamente por suas atividades de descoberta e outra no arquivo default contido neste diretório.
Por exemplo, se 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. O 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
Agora você pode montar o alvo conforme as instruções no link.
Note que ele mostrará o IP e porta das interfaces onde você pode alcançar esses alvos. Ele até pode mostrar IPs internos ou IPs diferentes daquele que você usou.
Em seguida, 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
Existe um script para automatizar o processo básico de enumeração de sub-redes disponível emiscsiadm