iSCSI para laboratório de cluster: servidor e clientes
Este guia mostra como instalar e configurar um servidor iSCSI (iscsitarget) e clientes Linux para criar LUNs partilhadas em laboratório. Inclui passos práticos, exemplos de configuração (ietd.conf, initiators.allow), verificação no cliente e checklists de problemas comuns para testes de cluster de dois nós.
Importante: este arranjo é indicado apenas para laboratórios e testes — não o utilize em produção sem medidas adicionais de segurança e redundância.
Introdução
iSCSI é um protocolo de Storage Area Network (SAN) que permite expor blocos de armazenamento através de uma rede IP existente. Neste guia uso o iscsitarget (http://iscsitarget.sourceforge.net) para criar LUNs a partir de volumes lógicos do host físico e apresentá-los a máquinas convidadas.
Definição rápida: LUN = Logical Unit Number, um identificador de um dispositivo de armazenamento apresentado por um alvo iSCSI.
1. Instalação e configuração do servidor iSCSI
1.a Compilar o tarball do iscsitarget (no host físico)
Este passo deve ser executado no host físico que fará de servidor iSCSI.
- Baixe o tarball do SourceForge e coloque-o em /usr/local/src.
- Entre na pasta /usr/local/src:
cd /usr/local/src
- Extraia os ficheiros:
tar xvf iscsitarget-0.4.16.tar.gz
cd iscsitarget-0.4.16
- Compile e instale:
make
make install
Nota: em distribuições modernas pode haver pacotes pré-compilados; adaptar conforme a sua distro.
1.b Configuração (exemplo de ietd.conf)
Abaixo está um exemplo do meu /etc/ietd.conf com duas LUNs mapeadas para volumes lógicos. Mantenha o bloco de código exatamente como no seu ficheiro de configuração.
#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
MaxConnections 2
Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
MaxConnections 2
Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
Alias LUN02
# end of ietd.conf
No meu host físico criei dois volumes lógicos de 50G cada. Em alternativa, pode usar ficheiros ou partições de disco; nesse caso altere os Path conforme necessário.
1.c ACL (controle de acesso)
O iscsitarget usa /etc/initiators.allow e /etc/initiators.deny, semelhantes a hosts.allow/hosts.deny. Configure para permitir apenas os iniciadores (initiators) que devem aceder às LUNs.
Exemplo:
#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow
Inicie o serviço iscsi-target:
service iscsi-target start
Ative-o para inicialização automática:
chkconfig --add iscsi-target
chkconfig iscsi-target on
chkconfig --list iscsi-target
Output de exemplo:
iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2. Lado do cliente
Instale o pacote iscsi-initiator-utils (a versão pode variar conforme a distribuição). No exemplo original foi usado iscsi-initiator-utils-6.2.0.865-0.8.el5.
2.a Configuração do iniciador
- Edite /etc/iscsi/initiatorname.iscsi para definir o InitiatorName se necessário.
Exemplo fornecido:
#/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00
InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00
# end of #/etc/iscsi/initiatorname.iscsi
- Inicie o daemon iscsid e descubra os alvos:
service iscsid start
Output de exemplo:
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
- Descobrir alvos:
iscsiadm -m discovery -t st -p node00
Resposta de exemplo:
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00
- Inicie o serviço iscsi para estabelecer sessão aos alvos:
service iscsi start
Output esperado (trecho):
iscsid (pid 964 963) is running...
Setting up iSCSI targets: Login session [iface: default, target:
iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260]
Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\
NODE00, portal: 192.168.222.1,3260] [ OK ]
- Verifique os logs e o dmesg para confirmar que os dispositivos SCSI foram detectados:
dmesg
Trecho de exemplo mostrando sda e sdb (cada um ~53.6 GB no exemplo):
scsi0 : iSCSI Initiator over TCP/IP
Vendor: IET Model: VIRTUAL-DISK Rev: 0
Type: Direct-Access ANSI SCSI revision: 04
scsi 0:0:0:2: Attached scsi generic sg0 type 0
SCSI device sda: 104857600 512-byte hdwr sectors (53687 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
sda: unknown partition table
sd 0:0:0:2: Attached scsi disk sda
scsi1 : iSCSI Initiator over TCP/IP
Vendor: IET Model: VIRTUAL-DISK Rev: 0
Type: Direct-Access ANSI SCSI revision: 04
SCSI device sdb: 104857600 512-byte hdwr sectors (53687 MB)
sdb: unknown partition table
sd 1:0:0:1: Attached scsi disk sdb
- Verifique com fdisk:
fdisk -l
Trecho de saída de exemplo indicando que /dev/sda e /dev/sdb não têm tabela de partição válida (esperado para dispositivos brutos a usar por LVM/ASM/OCFS2):
Disk /dev/sda: 53.6 GB, 53687091200 bytes
Disk /dev/sda doesn't contain a valid partition table
Disk /dev/sdb: 53.6 GB, 53687091200 bytes
Disk /dev/sdb doesn't contain a valid partition table
Repita o procedimento para node02. Uma vez que ambos os convidados vejam os discos, poderá configurar um cluster de dois nós. Este método foi utilizado para testar um Oracle 10gR2 RAC com ASM partilhado e OCFS2 num sistema 64-bit.
Checagens rápidas e checklist do laboratório
Importante: execute estas verificações antes de configurar o cluster de alto nível.
Checklist para o administrador do servidor iSCSI:
- Verificar que os volumes/ficheiros referidos em ietd.conf existem e têm permissões.
- Confirmar que /etc/initiators.allow contém os IQNs corretos e endereços permitidos.
- Validar que o serviço iscsi-target inicia sem erros.
- Testar descoberta a partir de um cliente autorizado.
Checklist para o administrador do cliente:
- Confirmar que iscsi-initiator-utils/iscsid está instalado.
- Verificar /etc/iscsi/initiatorname.iscsi se necessário.
- Executar iscsiadm -m discovery e iscsiadm -m node –login conforme necessário.
- Conferir dmesg e fdisk -l para detetar os blocos apresentados.
Solução de problemas comum (mini-runbook)
- Cliente não vê alvos com iscsiadm -m discovery
- Verifique conectividade TCP/IP para a porta 3260 (telnet/ss/ nc).
- Confirme que o iscsitarget está em execução no IP correto.
- Verifique ACLs em /etc/initiators.allow e iniciator IQN.
- Conexão falha durante login
- Conferir logs em /var/log/messages ou systemd-journald.
- Verificar se MaxConnections foi atingido no ietd.conf.
- Disco aparece mas não tem tabela de partição
- Isto é normal se pretende usar LVM/ASM/OCFS2; não crie partições se a stack requerida exige o dispositivo bruto.
Alternativas e quando evitar este método
- Alternativa: usar iSCSI target software mais moderno (LIO em kernels recentes) ou soluções baseadas em ZFS/Gluster para partilha de ficheiros.
- Quando não usar: não utilize este arranjo em produção sem camadas adicionais de segurança, HA e monitorização. Em produção prefira soluções suportadas pelo fornecedor e com replicação e failover.
Modelos mentais e níveis de maturidade
- Laboratório: iscsitarget em LVM ou ficheiros, sem redundância — objetivo de aprendizagem.
- Pré-produção: usar hardware de teste com múltiplos caminhos e autenticação CHAP.
- Produção: target suportado (LIO/targetcli), multipath, CHAP, redes isoladas para iSCSI, e backups.
Diagrama de decisão para problemas de conectividade
flowchart TD
A[Iniciar descoberta iscsiadm] --> B{Responde ao ping?}
B -- Não --> C[Verificar rede/IP/roteamento]
B -- Sim --> D{Porta 3260 aberta?}
D -- Não --> E[Verificar firewall / iscsitarget]
D -- Sim --> F{Resposta ao iscsiadm discovery}
F -- Não --> G[Verificar ACLs e IQN]
F -- Sim --> H[Login e verificar dmesg]
Comandos rápidos (cheat sheet)
- Instalar iscsitarget (compilar): cd /usr/local/src; tar xvf …; make; make install
- Iniciar target: service iscsi-target start
- Verificar serviço: chkconfig –list iscsi-target
- No cliente: service iscsid start; iscsiadm -m discovery -t st -p
- Logar target manual: iscsiadm -m node –login -T
-p - Mostrar blocos: dmesg | grep -i scsi ; fdisk -l
Segurança e privacidade (notas rápidas)
- Active CHAP se a sua stack e versão suportarem.
- Isole a rede iSCSI em VLAN separada ou rede física dedicada.
- Limite os initiators permitidos em /etc/initiators.allow.
Conclusão
Este procedimento permite montar um ambiente de testes com iSCSI sem hardware adicional, ideal para aprender conceitos de clustering e armazenamento partilhado. Não é um arranjo para produção; use-o apenas para laboratório e testes. Depois de familiarizado, aplique os mesmos conceitos a soluções suportadas e configuradas para produção.
Leituras adicionais
- RHEL5 Virtualization Manual
- http://iscsitarget.sourceforge.net
- Oracle RAC HowTO
Resumo final
- iSCSI torna possível partilhar dispositivos de bloco sobre IP.
- iscsitarget é uma solução simples para laboratórios; LIO/targetcli é preferível hoje em dia.
- Siga as checklists e o mini-runbook para diagnosticar problemas comuns.
Materiais semelhantes

Limpar Recent Places no macOS

Corrigir erros 0x80070057, 0xa0000400 e Cortana

Remover atualizações problemáticas do Windows

Organizar abas e sessões no Firefox e Chrome

Pasta FOUND.000 no Windows: o que é e como remover
