|

iSCSI no servidor Ubuntu: storage compartilhado para o Proxmox

Um servidor Ubuntu com um disco sobrando e uma placa de rede Gigabit já dá para virar um storage compartilhado por iSCSI — sem SAN dedicada, sem Fibre Channel. O protocolo empacota comandos SCSI dentro de TCP/IP e expõe um bloco de armazenamento pela rede como se fosse um disco local, o que é exatamente o que um cluster Proxmox ou VMware precisa para permitir migração ao vivo de VMs entre hosts sem copiar disco.

Este guia mostra como montar o alvo (target) no Ubuntu Server com targetcli-fb, proteger o acesso com ACL e CHAP, e conectar um Proxmox VE como iniciador.

O que é iSCSI e por que ele diferente de NFS ou SMB

NFS e SMB compartilham arquivos: o cliente vê uma pasta. iSCSI compartilha um bloco: o cliente vê um disco cru, sem sistema de arquivos, e decide o que fazer com ele — formatar, colocar LVM em cima, entregar direto para um hypervisor. É essa diferença que importa para virtualização: o Proxmox e o VMware ESXi gerenciam discos de VM em nível de bloco, então um LUN iSCSI compartilhado entre os nós do cluster permite que qualquer host veja o mesmo disco e assuma uma VM instantaneamente, sem mover dado nenhum.

A contrapartida é que iSCSI exige mais disciplina de rede: ele espera baixa latência e, em produção, uma VLAN dedicada só para tráfego de storage, separada da rede de gerência e da rede das VMs.

Instalando o alvo no Ubuntu Server

O Ubuntu usa o targetcli-fb, um shell interativo que configura o LIO — a implementação de target iSCSI que já vem no kernel Linux. Não existe daemon para compilar nem módulo para carregar manualmente.

sudo apt update
sudo apt install -y targetcli-fb
sudo systemctl enable --now target
sudo systemctl status target

O serviço target ativo é o que persiste a configuração feita pelo targetcli entre reinicializações — sem ele habilitado, o LUN some no próximo boot.

Criando o backstore, o alvo e o LUN

Entre no shell interativo como root. Cada comando abaixo navega a árvore de configuração como se fosse um sistema de arquivos.

sudo targetcli

1. Backstore — é o armazenamento real por trás do LUN. Use uma partição ou disco dedicado em produção; arquivo só serve para teste:

/> backstores/block create name=lun_vms dev=/dev/sdb1

2. Alvo (target) — identificado por um IQN único. Siga o padrão iqn.AAAA-MM.dominio.invertido:identificador, que é o mesmo esquema usado por qualquer implementação iSCSI:

/> iscsi/ create iqn.2026-09.br.com.novaorbit:storage.vms01

3. LUN — conecta o backstore ao alvo recém-criado:

/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/luns/ create /backstores/block/lun_vms

4. Portal — por padrão o LIO escuta em 0.0.0.0:3260, ou seja, em toda interface. Em produção, restrinja ao IP da VLAN de storage:

/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/portals/ delete 0.0.0.0 3260
/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/portals/ create 10.10.30.5

Protegendo o acesso com ACL e CHAP

Sem ACL, qualquer iniciador na rede que souber o IQN do alvo consegue montar o LUN. A ACL amarra o acesso ao IQN específico de cada host Proxmox, e o CHAP adiciona autenticação por usuário e senha em cima disso — sem CHAP, o controle é só “quem sabe o nome”, o que não segura um scanner de rede.

/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/acls/ create iqn.2026-09.br.com.novaorbit:pve-node01
/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/acls/iqn.2026-09.br.com.novaorbit:pve-node01/ set auth userid=pve_storage
/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/acls/iqn.2026-09.br.com.novaorbit:pve-node01/ set auth password=TrocaEssaSenhaAqui
/> iscsi/iqn.2026-09.br.com.novaorbit:storage.vms01/tpg1/ set attribute authentication=1 generate_node_acls=0 demo_mode_write_protect=0
/> saveconfig
/> exit

O generate_node_acls=0 impede que qualquer iniciador não cadastrado consiga conexão automática — sem essa linha, o LIO aceita qualquer IQN por padrão, o que anula a ACL que você acabou de criar.

Liberando a porta 3260 no firewall

iSCSI usa TCP 3260. Sem essa regra, o alvo existe mas nenhum iniciador consegue nem descobrir:

sudo ufw allow from 10.10.30.0/24 to any port 3260 proto tcp
sudo ufw status

Restrinja à sub-rede de storage em vez de liberar para qualquer origem — iSCSI não criptografa o tráfego por padrão, então quem tiver acesso à rede e ao IQN consegue tentar autenticação.

Conectando o iniciador ao Proxmox VE

No host Proxmox, o pacote open-iscsi já vem instalado por padrão. Descubra o alvo e ajuste o IQN local para bater com o que foi cadastrado na ACL:

iscsiadm -m discovery -t sendtargets -p 10.10.30.5
cat /etc/iscsi/initiatorname.iscsi
# InitiatorName=iqn.2026-09.br.com.novaorbit:pve-node01

Se for usar CHAP, edite /etc/iscsi/iscsid.conf antes do login:

node.session.auth.authmethod = CHAP
node.session.auth.username = pve_storage
node.session.auth.password = TrocaEssaSenhaAqui

Depois, adicione o storage direto pela interface web: Datacenter → Storage → Add → iSCSI, informando o IP do portal e selecionando o IQN do alvo na lista. O Proxmox faz a descoberta e o login sozinho a partir daqui.

Um LUN iSCSI cru não deixa o Proxmox criar e apagar discos de VM individualmente — para isso, adicione uma camada LVM por cima: Datacenter → Storage → Add → LVM, escolhendo o volume iSCSI como base e marcando Shared. Isso é o que permite migração ao vivo entre os nós do cluster.

Boas práticas para produção

  • VLAN dedicada para storage — isola o tráfego iSCSI da rede de gerência e da rede das VMs, evitando que um broadcast storm ou um scan de porta afete a latência do storage.
  • Jumbo frames (MTU 9000) — configurado nas duas pontas e no switch, reduz overhead de cabeçalho em transferências grandes.
  • Multipath — com multipath-tools, dois caminhos de rede até o mesmo LUN sobrevivem à queda de uma placa ou um switch sem derrubar a VM.
  • iSCSI não substitui backup — é storage compartilhado, não redundância de dado. Snapshot e réplica continuam sendo rotina separada.

Perguntas frequentes

iSCSI sem CHAP é seguro dentro de uma rede interna?
Só é aceitável se a VLAN de storage for isolada e sem acesso de estações de usuário. Mesmo assim, CHAP custa poucos minutos a mais para configurar e fecha a maior brecha óbvia.

iSCSI ou NFS para armazenar VMs no Proxmox?
iSCSI com LVM compartilhado dá melhor desempenho em I/O de bloco e é o caminho padrão para clusters com migração ao vivo. NFS é mais simples de configurar e funciona bem para backups e ISOs, mas adiciona a camada de sistema de arquivos que o iSCSI evita.

Preciso de um switch gerenciável para isso?
Não é obrigatório para um teste com um host só, mas em produção um switch gerenciável é o que permite separar a VLAN de storage e configurar jumbo frames de forma consistente.

Dá para usar iSCSI em 1GbE?
Dá, mas o link vira gargalo rápido com várias VMs em I/O simultâneo. Para cargas sérias, 10GbE (ou agregação de links) é o mínimo confortável.

Como eu removo o LUN depois?
No iniciador, faça logout com iscsiadm -m node --logout antes de qualquer alteração no alvo. Removê-lo com o Proxmox ainda montado deixa o storage travado até o próximo boot do host.

Conclusão

Com targetcli-fb, ACL, CHAP e a porta 3260 liberada só para a VLAN certa, um Ubuntu Server comum vira storage compartilhado o suficiente para sustentar migração ao vivo num cluster Proxmox pequeno ou médio. O próximo passo natural, depois que o LUN estiver estável, é somar multipath e um segundo host de storage para tirar o ponto único de falha.

Gostou? Compartilhe.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *