Red Hat Training
A Red Hat training course is available for RHEL 8
Capítulo 7. Começando com iSCSI
O Red Hat Enterprise Linux 8 usa a shell targetcli
como uma interface de linha de comando para realizar as seguintes operações:
- Adicionar, remover, visualizar e monitorar as interconexões de armazenamento iSCSI para utilizar o hardware iSCSI.
- Exportar recursos de armazenamento local que são apoiados por arquivos, volumes, dispositivos SCSI locais, ou por discos RAM para sistemas remotos.
A ferramenta targetcli
tem um layout baseado em árvores, incluindo preenchimento de guias embutidas, suporte de auto-completar e documentação inline.
7.1. Adicionando uma meta iSCSI
Como administrador de sistema, você pode adicionar uma meta iSCSI usando a ferramenta targetcli
.
7.1.1. Instalando o targetcli
Instale a ferramenta targetcli
para adicionar, monitorar e remover as interconexões de armazenamento iSCSI .
Procedimento
Instale
targetcli
:# yum instalar targetcli
Iniciar o serviço alvo:
# alvo de partida systemctl
Configurar o alvo para começar no momento da inicialização:
# systemctl habilita o alvo
Abra a porta
3260
no firewall e recarregue a configuração do firewall:# firewall-cmd --permanent --add-port=3260/tcp Success # firewall-cmd --reload Success
Veja o layout
targetcli
:# targetcli /> ls o- /........................................[...] o- backstores.............................[...] | o- block.................[Storage Objects: 0] | o- fileio................[Storage Objects: 0] | o- pscsi.................[Storage Objects: 0] | o- ramdisk...............[Storage Objects: 0] o- iscsi...........................[Targets: 0] o- loopback........................[Targets: 0]
Recursos adicionais
-
A página do homem
targetcli
.
7.1.2. Criando uma meta iSCSI
A criação de um alvo iSCSI permite ao iniciador iSCSI do cliente acessar os dispositivos de armazenamento no servidor. Tanto os alvos quanto os iniciadores têm nomes de identificação únicos.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”.
Procedimento
Navegue até o diretório iSCSI:
/> iscsi/
NotaO comando
cd
é usado para mudar os diretórios, assim como para listar o caminho a ser seguido.Use uma das seguintes opções para criar um alvo iSCSI:
Criação de um alvo iSCSI usando um nome de alvo padrão:
/iscsi> create Created target iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff Created TPG1
Criação de um alvo iSCSI usando um nome específico:
/iscsi> create iqn.2006-04.com.example:444 Created target iqn.2006-04.com.example:444 Created TPG1 Here
iqn.2006-04.com.example:444
is target_iqn_nameSubstituir iqn.2006-04.com.example:444 pelo nome do alvo específico.
Verificar o alvo recém-criado:
/iscsi> ls o- iscsi.......................................[1 Target] o- iqn.2006-04.com.example:444................[1 TPG] o- tpg1...........................[enabled, auth] o- acls...............................[0 ACL] o- luns...............................[0 LUN] o- portals.........................[0 Portal]
Recursos adicionais
-
A página do homem
targetcli
.
7.1.3. backstore iSCSI
Um backstore iSCSI permite suporte para diferentes métodos de armazenamento de dados de um LUN exportado na máquina local. A criação de um objeto de armazenamento define os recursos que o backstore utiliza. Um administrador pode escolher qualquer um dos seguintes dispositivos de backstore que o Linux-IO (LIO) suporta:
-
fileio
backstore: Criar um objeto de armazenamentofileio
se você estiver usando arquivos regulares no sistema de arquivos local como imagens de disco. Para criar um backstorefileio
, veja Seção 7.1.4, “Criação de um objeto de armazenamento fileio”. -
block
backstore: Crie um objeto de armazenamentoblock
se você estiver usando qualquer dispositivo de bloco local e dispositivo lógico. Para criar um backstoreblock
, veja Seção 7.1.5, “Criação de um objeto de armazenamento em bloco”. -
pscsi
backstore: Crie um objeto de armazenamentopscsi
se seu objeto de armazenamento suportar a passagem direta dos comandos SCSI. Para criar um backstorepscsi
, veja Seção 7.1.6, “Criação de um objeto de armazenamento pscsi” -
ramdisk
backstore: Crie um objeto de armazenamentoramdisk
se você quiser criar um dispositivo temporário com suporte de RAM. Para criar um backstoreramdisk
, veja Seção 7.1.7, “Criação de um objeto de armazenamento em disco RAM de cópia de memória”.
Recursos adicionais
-
A página do homem
targetcli
.
7.1.4. Criação de um objeto de armazenamento fileio
fileio
os objetos de armazenamento podem suportar tanto as operações write_back
como write_thru
. A operação write_back
permite o cache do sistema de arquivo local. Isto melhora o desempenho, mas aumenta o risco de perda de dados. Recomenda-se usar write_back=false
para desativar a operação write_back
em favor da operação write_thru
.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”.
Procedimento
Navegue até o diretório de backstores:
/> backstores/
Criar um objeto de armazenamento em
fileio
:/> backstores/fileio create file1 /tmp/disk1.img 200M write_back=false Created fileio file1 with size 209715200
Verifique o objeto de armazenamento criado
fileio
:/backstores> ls
Recursos adicionais
-
A página do homem
targetcli
.
7.1.5. Criação de um objeto de armazenamento em bloco
O driver de bloco permite o uso de qualquer dispositivo de bloco que apareça no diretório /sys/block/
para ser usado com Linux-IO (LIO). Isto inclui dispositivos físicos (por exemplo, HDDs, SSDs, CDs, DVDs) e dispositivos lógicos (por exemplo, volumes RAID de software ou hardware, ou volumes LVM).
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”.
Procedimento
Navegue até o diretório de backstores:
/> backstores/
Criar uma backstore
block
:/> backstores/block create name=block_backend dev=/dev/sdb Generating a wwn serial. Created block storage object block_backend using /dev/vdb.
Verifique o objeto de armazenamento criado
block
:/backstores> ls
NotaVocê também pode criar um backstore de blocos em um volume lógico.
Recursos adicionais
-
A página do homem
targetcli
.
7.1.6. Criação de um objeto de armazenamento pscsi
Você pode configurar, como backstore, qualquer objeto de armazenamento que suporte a passagem direta dos comandos SCSI sem emulação SCSI e com um dispositivo SCSI subjacente que aparece com lsscsi
no /proc/scsi/scsi
(tal como um disco rígido SAS) . O SCSI-3 e superiores são suportados com este subsistema.
pscsi
deve ser usado somente por usuários avançados. Comandos SCSI avançados, tais como para Asymmetric Logical Unit Assignment (ALUAs) ou Persistent Reservations (por exemplo, aqueles usados pelo VMware ESX, e vSphere) geralmente não são implementados no firmware do dispositivo e podem causar mau funcionamento ou falhas. Em caso de dúvida, utilize o backstore block
para configurações de produção.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”.
Procedimento
Navegue até o diretório de backstores:
/> backstores/
Criar um backstore
pscsi
para um dispositivo SCSI físico, um dispositivo TYPE_ROM usando/dev/sr0
neste exemplo:/> backstores/pscsi/ create name=pscsi_backend dev=/dev/sr0 Generating a wwn serial. Created pscsi storage object pscsi_backend using /dev/sr0
Verifique o objeto de armazenamento criado
pscsi
:/backstores> ls
Recursos adicionais
-
A página do homem
targetcli
.
7.1.7. Criação de um objeto de armazenamento em disco RAM de cópia de memória
Os discos RAM de cópia de memória (ramdisk
) fornecem discos RAM com emulação SCSI completa e mapeamentos de memória separados usando cópia de memória para iniciadores. Isto fornece capacidade para multi-sessões e é particularmente útil para armazenamento em massa rápido e volátil para fins de produção.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”.
Procedimento
Navegue até o diretório de backstores:
/> backstores/
Criar um backstore de disco de 1GB de RAM:
/> backstores/ramdisk/ create name=rd_backend size=1GB Generating a wwn serial. Created rd_mcp ramdisk rd_backend with size 1GB.
Verifique o objeto de armazenamento criado
ramdisk
:/backstores> ls
Recursos adicionais
-
A página do homem
targetcli
.
7.1.8. Criando um portal iSCSI
A criação de um portal iSCSI adiciona um endereço IP e uma porta ao alvo que mantém o alvo habilitado.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”. - Uma meta iSCSI associada a um Grupo de Portais Alvo (TPG). Para mais informações, veja Seção 7.1.2, “Criando uma meta iSCSI”.
Procedimento
Navegue até o diretório TPG:
/iscsi> iqn.2006-04.example:444/tpg1/
Use uma das seguintes opções para criar um portal iSCSI:
A criação de um portal padrão utiliza a porta padrão iSCSI
3260
e permite que o alvo escute todos os endereços IP naquela porta:/iscsi/iqn.20...mple:444/tpg1> portals/ create Using default IP port 3260 Binding to INADDR_Any (0.0.0.0) Created network portal 0.0.0.0:3260
NotaQuando um alvo iSCSI é criado, um portal padrão também é criado. Este portal é configurado para ouvir todos os endereços IP com o número de porta padrão que é:
0.0.0.0:3260
.Para remover o portal padrão:
/iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260
Criação de um portal usando um endereço IP específico:
/iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137 Using default IP port 3260 Created network portal 192.168.122.137:3260
Verificar o portal recém-criado:
/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, auth] o- acls ......................................[0 ACL] o- luns ......................................[0 LUN] o- portals ................................[1 Portal] o- 192.168.122.137:3260......................[OK]
Recursos adicionais
-
A página do homem
targetcli
.
7.1.9. Criando um iSCSI LUN
O número da unidade lógica (LUN) é um dispositivo físico que é apoiado pela backstore iSCSI. Cada LUN tem um número único.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”. - Uma meta iSCSI associada a um Grupo de Portais Alvo (TPG). Para mais informações, veja Seção 7.1.2, “Criando uma meta iSCSI”.
- Objetos de armazenamento criados. Para maiores informações, ver Seção 7.1.3, “backstore iSCSI”.
Procedimento
Criar LUNs de objetos de armazenamento já criados:
/iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/rd_backend Created LUN 0. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block_backend Created LUN 1. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1 Created LUN 2.
Verificar as LUNs criadas:
/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, auth] o- acls ......................................[0 ACL] o- luns .....................................[3 LUNs] | o- lun0.........................[ramdisk/ramdisk1] | o- lun1.................[block/block1 (/dev/vdb1)] | o- lun2...................[fileio/file1 (/foo.img)] o- portals ................................[1 Portal] o- 192.168.122.137:3260......................[OK]
O nome padrão do LUN começa em
0
.ImportantePor padrão, os LUNs são criados com permissões de leitura-escrita. Se um novo LUN é adicionado após a criação de ACLs, o LUN mapeia automaticamente todas as ACLs disponíveis e pode causar um risco de segurança. Para criar um LUN com permissões somente de leitura, veja Seção 7.1.10, “Criando um iSCSI LUN somente de leitura”.
- Configurar ACLs. Para mais informações, veja Seção 7.1.11, “Criação de uma LCA iSCSI”.
Recursos adicionais
-
A página do homem
targetcli
.
7.1.10. Criando um iSCSI LUN somente de leitura
Por padrão, os LUNs são criados com permissões de leitura-escrita. Este procedimento descreve como criar um LUN somente de leitura.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”. - Uma meta iSCSI associada a um Grupo de Portais Alvo (TPG). Para mais informações, veja Seção 7.1.2, “Criando uma meta iSCSI”.
- Objetos de armazenamento criados. Para maiores informações, ver Seção 7.1.3, “backstore iSCSI”.
Procedimento
Definir permissões somente leitura:
/> set global auto_add_mapped_luns=false Parameter auto_add_mapped_luns is now 'false'.
Isto impede o mapeamento automático de LUNs para ACLs existentes, permitindo o mapeamento manual de LUNs.
Crie o LUN:
/> iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/ create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore=backstore write_protect=1
Exemplo:
/> iscsi/iqn.2006-04.example:444/tpg1/acls/2006-04.com.example.foo:888/ create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1 Created LUN 1. Created Mapped LUN 1.
Verificar o LUN criado:
/> ls o- / ...................................................... [...] o- backstores ........................................... [...] <snip> o- iscsi ......................................... [Targets: 1] | o- iqn.2006-04.example:444 .................. [TPGs: 1] | o- tpg1 ............................ [no-gen-acls, no-auth] | o- acls ....................................... [ACLs: 2] | | o- 2006-04.com.example.foo:888 .. [Mapped LUNs: 2] | | | o- mapped_lun0 .............. [lun0 block/disk1 (rw)] | | | o- mapped_lun1 .............. [lun1 block/disk2 (ro)] | o- luns ....................................... [LUNs: 2] | | o- lun0 ...................... [block/disk1 (/dev/vdb)] | | o- lun1 ...................... [block/disk2 (/dev/vdc)] <snip>
A linha mapped_lun1 agora tem (
ro
) no final (ao contrário dos mapped_lun0's (rw
)) afirmando que ela é somente leitura.- Configurar ACLs. Para mais informações, veja Seção 7.1.11, “Criação de uma LCA iSCSI”.
Recursos adicionais
-
A página do homem
targetcli
.
7.1.11. Criação de uma LCA iSCSI
Em targetcli
, Listas de Controle de Acesso (ACLs) são usadas para definir regras de acesso e cada iniciador tem acesso exclusivo a uma LUN. Tanto os alvos quanto os iniciadores têm nomes de identificação únicos. Você deve saber o nome exclusivo do iniciador para configurar as LCAs. Os iniciadores iSCSI podem ser encontrados no arquivo /etc/iscsi/initiatorname.iscsi
.
Pré-requisitos
-
Instalado e funcionando
targetcli
. Para mais informações, ver Seção 7.1.1, “Instalando o targetcli”. - Uma meta iSCSI associada a um Grupo de Portais Alvo (TPG). Para mais informações, veja Seção 7.1.2, “Criando uma meta iSCSI”.
Procedimento
Navegue até o diretório acls
/iscsi/iqn.20....mple:444/tpg1> acls/
Use uma das seguintes opções para criar uma ACL :
-
Usando o nome do iniciador a partir do arquivo
/etc/iscsi/initiatorname.iscsi
no iniciador. Usando um nome que seja mais fácil de lembrar, consulte a seção Seção 7.1.12, “Criando um iniciador iSCSI” para garantir que o ACL corresponda ao iniciador.
/iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888 Created Node ACL for iqn.2006-04.com.example.foo:888 Created mapped LUN 2. Created mapped LUN 1. Created mapped LUN 0.
NotaA configuração global
auto_add_mapped_luns
usada no exemplo anterior, mapeia automaticamente os LUNs para qualquer ACL criada.Você pode definir ACLs criadas pelo usuário dentro do nó TPG no servidor de destino:
/iscsi/iqn.20...scsi:444/tpg1> set attribute generate_node_acls=1
-
Usando o nome do iniciador a partir do arquivo
Verificar a ACL criada:
/iscsi/iqn.20...444/tpg1/acls> ls o- acls .................................................[1 ACL] o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth] o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)] o- mapped_lun1 .................[lun1 block/block1 (rw)] o- mapped_lun2 .................[lun2 fileio/file1 (rw)]
Recursos adicionais
-
A página do homem
targetcli
.
7.1.12. Criando um iniciador iSCSI
Um iniciador iSCSI forma uma sessão para se conectar com o alvo iSCSI. Para mais informações sobre o alvo iSCSI, veja Seção 7.1.2, “Criando uma meta iSCSI”. Por padrão, um serviço iSCSI é lazily
iniciado e o serviço começa após a execução do comando iscsiadm
. Se o root não estiver em um dispositivo iSCSI ou não houver nós marcados com node.startup = automatic
, então o serviço iSCSI não iniciará até que um comando iscsiadm
seja executado, o que requer iscsid
ou os módulos do kernel iscsi
para ser iniciado.
Forçar o daemon iscsid
a rodar e os módulos do kernel iSCSI a carregar:
# systemctl start iscsid.service
Pré-requisitos
-
Instalado e funcionando
targetcli
em uma máquina servidora. Para mais informações, veja Seção 7.1.1, “Instalando o targetcli”. - Um alvo iSCSI associado a um Target Portal Groups (TPG) em uma máquina servidora. Para mais informações, veja Seção 7.1.2, “Criando uma meta iSCSI”.
- Criado o iSCSI ACL. Para mais informações, veja Seção 7.1.11, “Criação de uma LCA iSCSI”.
Procedimento
Instalar
iscsi-initiator-utils
na máquina do cliente:# yum instalar iscsi-iniciador-utils
Verifique o nome do iniciador:
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=2006-04.com.example.foo:888
Se a ACL recebeu um nome personalizado em Seção 7.1.11, “Criação de uma LCA iSCSI”, modifique o arquivo
/etc/iscsi/initiatorname.iscsi
de acordo.# vi /etc/iscsi/initiatorname.iscsi
Descubra o alvo e faça login no alvo com o IQN do alvo exibido:
# iscsiadm -m discovery -t st -p 10.64.24.179 10.64.24.179:3260,1 iqn.2006-04.example:444 # iscsiadm -m node -T iqn.2006-04.example:444 -l Logging in to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] (multiple) Login to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] successful.
Substituir 10.64.24.179 pelo endereço-ip de destino.
Você pode usar este procedimento para qualquer número de iniciadores conectados ao mesmo alvo se seus respectivos nomes de iniciadores forem adicionados ao ACL, conforme descrito no site Seção 7.1.11, “Criação de uma LCA iSCSI”.
Encontre o nome do disco iSCSI e crie um sistema de arquivo neste disco iSCSI:
# grep "Attached SCSI" /var/log/messages # mkfs.ext4 /dev/disk_name
Substitua disk_name pelo nome do disco iSCSI exibido no arquivo
/var/log/messages
.Montar o sistema de arquivo:
# mkdir /mount/point # mount /dev/disk_name /mount/point
Substituir /mount/point pelo ponto de montagem da divisória.
Edite o arquivo
/etc/fstab
para montar o sistema de arquivo automaticamente quando o sistema for inicializado:# vi /etc/fstab /dev/disk_name /mount/point ext4 _netdev 0 0
Substitua disk_name pelo nome do disco iSCSI e /mount/point pelo ponto de montagem da partição.
Recursos adicionais
-
A página do homem
targetcli
. -
A página do homem
iscsiadm
.
7.1.13. Estabelecendo o Protocolo de Autenticação do Desafio-Amerto de Mãos para o alvo
O Challenge-Handshake Authentication Protocol (CHAP)
permite que o usuário proteja o alvo com uma senha. O iniciador deve estar ciente desta senha para poder se conectar com o alvo.
Pré-requisitos
- Criado o iSCSI ACL. Para mais informações, veja Seção 7.1.11, “Criação de uma LCA iSCSI”.
Procedimento
Definir autenticação de atributos:
/iscsi/iqn.20...mple:444/tpg1> set attribute authentication=1 Parameter authentication is now '1'.
Conjunto
userid
epassword
:/tpg1> set auth userid=redhat Parameter userid is now 'redhat'. /iscsi/iqn.20...689dcbb3/tpg1> set auth password=redhat_passwd Parameter password is now 'redhat_passwd'.
Recursos adicionais
-
A página do homem
targetcli
.
7.1.14. Estabelecendo o Protocolo de Autenticação do Desafio-Amerto de Mãos para o iniciador
O Challenge-Handshake Authentication Protocol (CHAP)
permite que o usuário proteja o alvo com uma senha. O iniciador deve estar ciente desta senha para poder se conectar com o alvo.
Pré-requisitos
- Criado o iniciador iSCSI. Para mais informações, veja Seção 7.1.12, “Criando um iniciador iSCSI”.
-
Defina o
CHAP
para a meta. Para maiores informações, ver Seção 7.1.13, “Estabelecendo o Protocolo de Autenticação do Desafio-Amerto de Mãos para o alvo”.
Procedimento
Habilitar a autenticação CHAP no arquivo
iscsid.conf
:# vi /etc/iscsi/iscsid.conf node.session.auth.authmethod = CHAP
Por padrão, o site
node.session.auth.authmethod
está configurado paraNone
Adicione o alvo
username
epassword
no arquivoiscsid.conf
:node.session.auth.username = redhat node.session.auth.password = redhat_passwd
Inicie o daemon
iscsid
:# systemctl start iscsid.service
Recursos adicionais
-
A página do homem
iscsiadm