Pesquisa de site

Crie armazenamento seguro centralizado usando destino/iniciador iSCSI no RHEL/CentOS 7 - Parte 12


iSCSI é um protocolo em nível de bloco para gerenciar dispositivos de armazenamento em redes TCP/IP, especialmente em longas distâncias. O destino iSCSI é um disco rígido remoto apresentado a partir de um servidor (ou) destino iSCSI remoto. Por outro lado, o cliente iSCSI é chamado de Iniciador e acessará o armazenamento que é compartilhado na máquina Destino.

As seguintes máquinas foram usadas neste artigo:

Servidor (destino):


Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.29
Ports Used : TCP 860, 3260

Cliente (iniciador):


Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.30
Ports Used : TCP 3260

Etapa 1: Instalando Pacotes no Destino iSCSI

Para instalar os pacotes necessários para o alvo (trataremos do cliente mais tarde), faça:


yum install targetcli -y

Quando a instalação for concluída, iniciaremos e habilitaremos o serviço da seguinte forma:


systemctl start target
systemctl enable target

Finalmente, precisamos permitir o serviço no firewalld:


firewall-cmd --add-service=iscsi-target
firewall-cmd --add-service=iscsi-target --permanent

E por último mas não menos importante, não devemos esquecer de permitir a descoberta do alvo iSCSI:


firewall-cmd --add-port=860/tcp
firewall-cmd --add-port=860/tcp --permanent
firewall-cmd --reload

Etapa 2: Definindo LUNs no Servidor de Destino

Antes de prosseguir com a definição de LUNs no Target, precisamos criar dois volumes lógicos conforme explicado na Parte 6 da série RHCSA (“Configurando o armazenamento do sistema ”).

Desta vez, iremos nomeá-los vol_projects e vol_backups e colocá-los dentro de um grupo de volumes chamado vg00, conforme mostrado na Fig. escolha o espaço alocado para cada LV:

Após criar os LVs, estamos prontos para definir os LUNs no Target para disponibilizá-los para a máquina cliente.

Como mostrado na Fig. 2, abriremos um shell targetcli e emitiremos os seguintes comandos, que criarão dois backstores de bloco (recursos de armazenamento local que representam o LUN que o iniciador realmente usará) e um Nome qualificado Iscsi (IQN), um método de endereçamento ao servidor de destino.

Consulte a página 32 da RFC 3720 para obter mais detalhes sobre a estrutura do IQN. Em particular, o texto após o caractere de dois pontos (:tgt1) especifica o nome do destino, enquanto o texto antes de (server:) indica o nome do host do destino dentro do domínio.


targetcli
cd backstores
cd block
create server.backups /dev/vg00/vol_backups
create server.projects /dev/vg00/vol_projects
cd /iscsi
create iqn.2016-02.com.tecmint.server:tgt1

Com a etapa acima, um novo TPG (Target Portal Group) foi criado junto com o portal padrão (um par que consiste em um endereço IP e uma porta que é a forma como os iniciadores pode alcançar o alvo) escutando na porta 3260 de todos os endereços IP.

Se você deseja vincular seu portal a um IP específico (o IP principal do Target, por exemplo), exclua o portal padrão e crie um novo como segue (caso contrário, ignore os seguintes comandos targetcli. style="color:red;">Observe que, para simplificar, também os ignoramos):


cd /iscsi/iqn.2016-02.com.tecmint.server:tgt1/tpg1/portals
delete 0.0.0.0 3260
create 192.168.0.29 3260

Agora estamos prontos para prosseguir com a criação de LUNs. Observe que estamos usando os backstores que criamos anteriormente (server.backups e server.projects). Este processo é ilustrado na Fig. 3:


cd iqn.2016-02.com.tecmint.server:tgt1/tpg1/luns
create /backstores/block/server.backups
create /backstores/block/server.projects

A última parte da configuração do Target consiste na criação de uma Lista de Controle de Acesso para restringir o acesso por iniciador. Como nossa máquina cliente se chama “cliente”, anexaremos esse texto ao IQN. Consulte a Fig. 4 para detalhes:


cd ../acls
create iqn.2016-02.com.tecmint.server:client

Neste ponto podemos fazer com que o shell targetcli mostre todos os recursos configurados, como podemos ver na Fig. 5:


targetcli
cd /
ls

Para sair do shell targetcli, simplesmente digite exit e pressione Enter. A configuração será salva automaticamente em /etc/target/saveconfig.json.

Como você pode ver na Fig. 5 acima, temos um portal escutando na porta 3260 de todos os endereços IP conforme esperado. Podemos verificar isso usando o comando netstat (veja Fig. 6):


netstat -npltu | grep 3260

Isso conclui a configuração do Target. Sinta-se à vontade para reiniciar o sistema e verificar se todas as configurações sobrevivem à reinicialização. Caso contrário, certifique-se de abrir as portas necessárias na configuração do firewall e de iniciar o serviço de destino na inicialização. Agora estamos prontos para configurar o Iniciador e conectar-se ao cliente.

Etapa 3: Configurando o Iniciador do Cliente

No cliente precisaremos instalar o pacote iscsi-initiator-utils, que fornece o daemon do servidor para o protocolo iSCSI (iscsid), bem como o iscsiadm<, o utilitário de administração:


yum update && yum install iscsi-initiator-utils

Assim que a instalação for concluída, abra /etc/iscsi/initiatorname.iscsi e substitua o nome do inicializador padrão (comentado na Fig. 7) pelo nome que foi definido anteriormente no ACL no servidor (iqn.2016-02.com.tecmint.server:client).

Em seguida, salve o arquivo e execute iscsiadm no modo de descoberta apontando para o destino. Se for bem-sucedido, este comando retornará as informações do alvo conforme mostrado na Fig. 7:


iscsiadm -m discovery -t st -p 192.168.0.29

O próximo passo consiste em reiniciar e habilitar o serviço iscsid:


systemctl start iscsid
systemctl enable iscsid

e entrar em contato com o alvo no modo nó. Isso deve resultar em mensagens de nível de kernel, que quando capturadas através de dmesg mostram a identificação do dispositivo que os LUNs remotos receberam no sistema local (sde e sdf na Fig. 8):


iscsiadm -m node -T iqn.2016-02.com.tecmint.server:tgt1 -p 192.168.0.29 -l
dmesg | tail

Deste ponto em diante, você pode criar partições, ou até mesmo LVs (e sistemas de arquivos sobre eles), como faria com qualquer outro dispositivo de armazenamento. Para simplificar, criaremos uma partição primária em cada disco que ocupará todo o espaço disponível e formataremos com ext4.

Finalmente, vamos montar /dev/sde1 e /dev/sdf1 em /projects e /backups, respectivamente ( observe que esses diretórios devem ser criados primeiro):


mount /dev/sde1 /projects
mount /dev/sdf1 /backups

Além disso, você pode adicionar duas entradas em /etc/fstab para que ambos os sistemas de arquivos sejam montados automaticamente na inicialização usando o UUID de cada sistema de arquivos retornado por blkid.

Observe que a opção de montagem _netdev deve ser usada para adiar a montagem desses sistemas de arquivos até que o serviço de rede seja iniciado:

Agora você pode usar esses dispositivos como faria com qualquer outra mídia de armazenamento.

Resumo

Neste artigo, abordamos como instalar e configurar um destino iSCSI e um iniciador em distribuições RHEL/CentOS 7. Embora a primeira tarefa não faça parte das competências exigidas do exame EX300 (RHCE), ela é necessária para implementar o segundo tópico.

Não hesite em nos informar se tiver alguma dúvida ou comentário sobre este artigo – sinta-se à vontade para nos enviar uma mensagem usando o formulário de comentários abaixo.

Procurando configurar o iSCSI Target e o Client Initiator no RHEL/CentOS 6, siga este guia: Configurando o armazenamento iSCSI centralizado com o Client Initiator.