Configurando um servidor de armazenamento utilizando iSCSI no Linux com o iscsitarget. O iSCSI permite compartilhar discos de armazenamento em rede, que podem ser acessados como se fossem discos locais por outros computadores (iniciadores iSCSI).
Instalar as ferramentas de administração
$ apt-get -y install iscsitarget iscsitarget-dkms
Ative o serviço iscsitarget no arquivo /etc/default/iscsitarget
:
ISCSITARGET_ENABLE=true
Melhores práticas para armazenar discos iSCSI:
Use um diretório dedicado em uma partição separada: É recomendado criar um diretório dedicado para armazenar imagens de discos iSCSI em uma partição separada do sistema principal. Por exemplo:
- Crie um ponto de montagem em
/mnt/iscsi20G
, e utilize uma partição dedicada ou um disco físico separado para essa finalidade.
Primeiro, liste os discos disponíveis no sistema para verificar se o novo disco foi detectado. Use o comando lsblk
ou fdisk
para listar os dispositivos:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 119G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 976M 0 part [SWAP]
sdb 8:16 0 20G 0 disk (Disco adicionado)
sr0 11:0 1 1024M 0 rom
Para particionar o disco /dev/sdb
:
Criar uma partição no disco
$ fdisk /dev/sdb
Aqui estão os passos básicos dentro do fdisk
:
- Pressione
n
para criar uma nova partição. - Escolha as opções padrão para a partição (pressione Enter).
- Quando terminar, pressione
w
para escrever as alterações no disco.
Formatar a partição
$ mkfs.ext4 /dev/sdb
Crie um diretório onde o disco será montado. O ponto de montagem é o diretório no qual o conteúdo da partição será acessível
$ mkdir /mnt/iscsi20G
Monte a partição no diretório que você acabou de criar:
$ mount /dev/sdb /mnt/iscsi20G
Para confirmar que o disco foi montado corretamente, use o comando df
ou lsblk
:
$ df -h
Agora, o disco está montado e você pode acessar o conteúdo dele no diretório /mnt/iscsi20G
.
$ touch /mnt/iscsi20G/jrf.txt
$ ls /mnt/iscsi20G/
Adicionar ao /etc/fstab
para montagem automática
Adicionar o UUID (identificador único) do disco no arquivo /etc/fstab
é uma prática recomendada, pois garante que o disco será montado corretamente.
$ blkid
*Isso listará todos os dispositivos e suas informações, incluindo o UUID. O resultado será algo assim:
/dev/sdb: UUID="ffb24b14-f2e8-494c-aae6-b853ea5fda4d" TYPE="ext4"
*Anote o UUID deseja adicionar e edite o arquivo /etc/fstab
$ vim /etc/fstab
Adicione a entrada com o UUID
# Disco iSCSI 20G
UUID=ffb24b14-f2e8-494c-aae6-b853ea5fda4d /mnt/iscsi20G ext4 defaults 0 0
Testar a montagem automática
Após salvar as alterações no arquivo /etc/fstab
, você pode testar a montagem automaticamente sem reiniciar o sistema:
$ mount -a
*Se não houver erros, o disco foi montado com sucesso
Passos para criar o arquivo de imagem baseado no tamanho da partição:
- Calcular o tamanho em megabytes: A partição
/dev/sdb
tem 20 GB, então, para criar um arquivo de imagem de 20 GB, você precisará de 20 * 1024 = 20480 MB. - Criar o arquivo de imagem com 20 GB: Execute o seguinte comando para criar o arquivo de imagem com o mesmo tamanho da partição:
$ dd if=/dev/zero of=/mnt/iscsi20G/disk20G.img bs=1M count=20480
- if=/dev/zero: Isso cria o arquivo preenchido com zeros.
- of=/mnt/iscsi20G/disk20G.img: Este é o caminho onde o arquivo de imagem será armazenado, dentro do diretório
/mnt/iscsi20G
. - bs=1M: Define o tamanho do bloco como 1 MB.
- count=20480: Cria um arquivo com 20480 blocos de 1 MB, resultando em 20 GB.
Verificar o arquivo de imagem: Após a criação, você pode verificar o tamanho do arquivo de imagem para garantir que ele tem 20 GB:
$ ls -lh /mnt/iscsi20G/disk20G.img
Configurar o alvo iSCSI (Target):
$ vim /etc/iet/ietd.conf
# Nomeando o alvo iSCSI usando o formato iqn (iSCSI Qualified Name)
Target iqn.2024-04.jrf.srv:target20
# Associando o disco ao alvo (LUN 0)
Lun 0 Path=/mnt/iscsi20G/disk20G.img,Type=fileio
# Definindo o IP do iniciador iSCSI que poderá se conectar ao alvo
initiator-address 192.168.0.43
# Definindo usuário e senha para autenticação (utilize senha forte)
# incominguser username password
Lun 0: Define a imagem de disco (LUN 0) que será compartilhada. O caminho para a imagem deve ser exato.
initiator-address: Especifica o endereço IP do cliente (iniciador iSCSI) que terá permissão para se conectar.
Reiniciar o serviço iSCSI Target
$ systemctl restart iscsitarget
Verificar o status do alvo iSCSI
Você pode verificar se o alvo iSCSI foi criado corretamente e se está funcionando utilizando o comando ietadm
:
$ ietadm --op show --tid=1
Conexão do Cliente iSCSI
Agora que o servidor iSCSI está configurado, o cliente iSCSI (iniciador) pode se conectar ao alvo utilizando o IQN e o endereço IP do servidor iSCSI.