iSCSI Ubuntu · 9 min read · Feb 07, 2026

Usando iSCSI no Ubuntu 9.04 (Iniciador e Destino)

Usando iSCSI no Ubuntu 9.04 (Iniciador e Destino)

Versão 1.0
Autor: Falko Timme

Este guia explica como você pode configurar um destino iSCSI e um iniciador iSCSI (cliente), ambos executando Ubuntu 9.04. O protocolo iSCSI é um protocolo de rede de área de armazenamento (SAN) que permite que iniciadores iSCSI usem dispositivos de armazenamento no destino iSCSI (remoto) usando cabos ethernet normais. Para o iniciador iSCSI, o armazenamento remoto parece um disco rígido normal, conectado localmente.

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Estou usando dois servidores Ubuntu 9.04 aqui:

  • server1.example.com (Iniciador): endereço IP 192.168.0.100
  • server2.example.com (Destino): endereço IP 192.168.0.101

Como executaremos todas as etapas deste tutorial com privilégios de root, podemos ou adicionar a string sudo a todos os comandos neste tutorial, ou nos tornarmos root agora digitando

sudo su 

2 Configurando o Destino (server2)

server2:

Primeiro, configuramos o destino (server2):

aptitude install iscsitarget

Abra /etc/default/iscsitarget…

vi /etc/default/iscsitarget

… e defina ISCSITARGET_ENABLE como verdadeiro:

| ISCSITARGET_ENABLE=true |

Podemos usar volumes lógicos não utilizados, arquivos de imagem, discos rígidos (por exemplo, /dev/sdb), partições de disco rígido (por exemplo, /dev/sdb1) ou dispositivos RAID (por exemplo, /dev/md0) para o armazenamento. Neste exemplo, criarei um volume lógico de 20GB chamado storage_lun1 no grupo de volumes vg0:

lvcreate -L20G -n storage_lun1 vg0 

(Se você quiser usar um arquivo de imagem, pode criá-lo da seguinte forma:

mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000

Isso cria o arquivo de imagem /storage/lun1.img com um tamanho de 20GB.

)

Em seguida, editamos /etc/ietd.conf…

vi /etc/ietd.conf

… e comentamos tudo naquele arquivo. No final, adicionamos a seguinte estrofe:

| [...] Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6 |

O nome do destino deve ser um nome globalmente único, o padrão iSCSI define o “Nome Qualificado iSCSI” da seguinte forma: iqn.yyyy-mm.[:identificador]; yyyy-mm é a data em que o domínio é válido; o identificador é livremente selecionável. A linha IncomingUser contém um nome de usuário e uma senha para que apenas os iniciadores (clientes) que fornecem esse nome de usuário e senha possam fazer login e usar o dispositivo de armazenamento; se você não precisar de autenticação, não especifique um nome de usuário e senha na linha IncomingUser. Na linha Lun, devemos especificar o caminho completo para o dispositivo de armazenamento (por exemplo, /dev/vg0/storage_lun1, /storage/lun1.img, /dev/sdb, etc.).

Agora dizemos ao destino que queremos permitir conexões ao dispositivo iqn.2001-04.com.example:storage.lun1 do endereço IP 192.168.0.100 (server1.example.com)…

vi /etc/initiators.allow

| [...] iqn.2001-04.com.example:storage.lun1 192.168.0.100 |

… e iniciamos o destino:

/etc/init.d/iscsitarget start  

3 Configurando o Iniciador (server1)

server1:

No server1, instalamos o iniciador:

aptitude install open-iscsi

Em seguida, abrimos /etc/iscsi/iscsid.conf…

vi /etc/iscsi/iscsid.conf

… e definimos node.startup como automático:

| [...] node.startup = automatic [...] |

Então reiniciamos o iniciador:

/etc/init.d/open-iscsi restart

Agora nos conectamos ao destino (server2) e verificamos quais dispositivos de armazenamento ele tem a oferecer:

iscsiadm -m discovery -t st -p 192.168.0.101

server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

iscsiadm -m node

server1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

As configurações para o dispositivo de armazenamento iqn.2001-04.com.example:storage.lun1 em 192.168.0.101:3260,1 estão armazenadas no arquivo /etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default. Precisamos definir o nome de usuário e a senha para o destino nesse arquivo; em vez de editar esse arquivo manualmente, podemos usar o comando iscsiadm para fazer isso por nós:

iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.authmethod –value=CHAP
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.username –value=someuser
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.password –value=secret

Agora podemos fazer login, seja executando…

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login

server1:~# iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –login
Fazendo login em [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Login em [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]: bem-sucedido
server1:~#

… ou reiniciando o iniciador:

/etc/init.d/open-iscsi restart 

(Se você quiser sair, pode executar

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout

)

Na saída de

fdisk -l 

você deve agora encontrar um novo disco rígido (/dev/sdb neste exemplo); esse é o nosso dispositivo de armazenamento iSCSI:

server1:~# fdisk -l
Disco /dev/sda: 32.2 GB, 32212254720 bytes
255 cabeçotes, 63 setores/track, 3916 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador do disco: 0x00031334

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Estendido
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Disco /dev/sdb: 21.4 GB, 21474836480 bytes
64 cabeçotes, 32 setores/track, 20480 cilindros
Unidades = cilindros de 2048 * 512 = 1048576 bytes
Identificador do disco: 0x00000000

O disco /dev/sdb não contém uma tabela de partição válida
server1:~#

Para usar esse dispositivo, devemos formatá-lo:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
O dispositivo não contém uma tabela de partição DOS válida, nem rótulo de disco Sun, SGI ou OSF
Construindo um novo rótulo de disco DOS com o identificador de disco 0x882944df.
As alterações permanecerão na memória apenas até que você decida gravá-las.
Depois disso, claro, o conteúdo anterior não poderá ser recuperado.

O número de cilindros para este disco é definido como 20480.
Não há nada de errado com isso, mas isso é maior que 1024,
e pode, em certas configurações, causar problemas com:

  1. software que é executado no tempo de inicialização (por exemplo, versões antigas do LILO)
  2. software de inicialização e particionamento de outros sistemas operacionais
    (por exemplo, DOS FDISK, OS/2 FDISK)
    Aviso: a bandeira inválida 0x0000 da tabela de partição 4 será corrigida por w(rite)

Comando (m para ajuda): <– m
Ação do comando
a alternar uma bandeira de inicialização
b editar rótulo de disco bsd
c alternar a bandeira de compatibilidade dos
d excluir uma partição
l listar tipos de partição conhecidos
m imprimir este menu
n adicionar uma nova partição
o criar uma nova tabela de partição DOS vazia
p imprimir a tabela de partição
q sair sem salvar alterações
s criar um novo rótulo de disco Sun vazio
t alterar o id do sistema de uma partição
u alterar unidades de exibição/entrada
v verificar a tabela de partição
w gravar tabela no disco e sair
x funcionalidade extra (apenas para especialistas)

Comando (m para ajuda): <– n
Ação do comando
e estendida
p partição primária (1-4)
<– p
Número da partição (1-4): <– 1
Primeiro cilindro (1-20480, padrão 1): <– ENTER
Usando o valor padrão 1
Último cilindro ou +tamanho ou +tamanhoM ou +tamanhoK (1-20480, padrão 20480): <– ENTER
Usando o valor padrão 20480

Comando (m para ajuda): <– t
Partição selecionada 1
Código hexadecimal (tipo L para listar códigos): <– L

0 Vazio 1e Oculto W95 FAT1 80 Antigo Minix be Inicialização Solaris
1 FAT12 24 NEC DOS 81 Minix / antigo Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 oculto OS/2 C: c6 DRDOS/sec (FAT-
5 Estendida 41 PPC PReP Boot 85 Linux estendida c7 Syrinx
6 FAT16 42 SFS 86 conjunto de volume NTFS da Dados não FS
7 HPFS/NTFS 4d QNX4.x 87 conjunto de volume NTFS db CP/M / CTOS / .
8 AIX 4e QNX4.x 2ª parte 88 Linux plaintext de Dell Utility
9 AIX inicializável 4f QNX4.x 3ª parte 8e Linux LVM df BootIt
a Gerenciador de Inicialização OS/2 50 OnTrack DM 93 Amoeba e1 acesso DOS
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 FAT12 Oculto 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Diagnóstico Compaq 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 FAT16 Oculto <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 FAT16 Oculto 63 GNU HURD ou Sys ab inicialização Darwin f2 secundário DOS
17 HPFS/NTF Oculto 64 Novell Netware b7 sistema BSDI fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 swap BSDI fe LANstep
1b FAT3 Oculto W95 70 Multidão DiskSecure bb Boot Wizard oculto ff BBT
1c FAT3 Oculto W95 75 PC/IX
Código hexadecimal (tipo L para listar códigos): <– 83

Comando (m para ajuda): <– w
A tabela de partição foi alterada!

Chamando ioctl() para reler a tabela de partição.
Sincronizando discos.
server1:~#

Depois, a saída de

fdisk -l

deveria parecer da seguinte forma:

server1:~# fdisk -l
Disco /dev/sda: 32.2 GB, 32212254720 bytes
255 cabeçotes, 63 setores/track, 3916 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador do disco: 0x00031334

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Estendido
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Disco /dev/sdb: 21.4 GB, 21474836480 bytes
64 cabeçotes, 32 setores/track, 20480 cilindros
Unidades = cilindros de 2048 * 512 = 1048576 bytes
Identificador do disco: 0x882944df

Dispositivo Boot Início Fim Blocos Id Sistema
/dev/sdb1 1 20480 20971504 83 Linux
server1:~#

Agora criamos um sistema de arquivos em /dev/sdb1…

mkfs.ext3 /dev/sdb1

… e montamos para fins de teste:

mount /dev/sdb1 /mnt

Você deve agora ver o novo dispositivo nas saídas de…

mount

server1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
odev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt type ext3 (rw)
server1:~#

… e

df -h

server1:~# df -h
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /mnt
server1:~#

Você pode desmontá-lo assim:

umount /mnt

Para que o dispositivo seja montado automaticamente na inicialização, por exemplo, no diretório /storage, criamos esse diretório…

mkdir /storage

… e adicionamos a seguinte linha a /etc/fstab:

vi /etc/fstab

| [...] /dev/sdb1 /storage ext3 defaults,auto,_netdev 0 0 |

Para fins de teste, você pode agora reiniciar o sistema:

reboot

Após a reinicialização, o dispositivo deve estar montado:

mount

server1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
odev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /storage type ext3 (rw,_netdev)
server1:~#

df -h

server1:~# df -h
Sistema de arquivos Tamanho Usado Disponível Uso% Montado em
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /storage
server1:~#

4 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.