Como compartilhar volumes do ZFS via ISCSI

Como compartilhar volumes do ZFS via ISCSI

Os volumes do ZFS são dispositivos de armazenamento em bloco que funcionam como qualquer outro dispositivo de armazenamento (HDD/SSD). Você pode criar tabelas de partição, criar novas partições, formatar essas partições, criar sistemas de arquivos e montá -las no seu computador.

Você também pode compartilhar volumes do ZFS através do protocolo ISCSI e acessá -los a partir de computadores remotos.

Neste artigo, vou mostrar como compartilhar volumes do ZFS via ISCSI e acessá -los a partir de computadores remotos. Eu estarei usando o Ubuntu 20.04 Sistema operacional LTS para a demonstração. No entanto, as etapas mostradas neste artigo também devem funcionar em outras distribuições Linux com alguns ajustes.

Vamos começar.

Índice:

  1. Diagrama de rede
  2. Instalando o TGT no servidor ISCSI
  3. Instalando o Open -Csi no cliente ISCSI
  4. Criando uma piscina ZFS
  5. Criando volumes de ZFS
  6. Criando alvos iSCSI
  7. Adicionando volumes do ZFS aos alvos iSCSI
  8. Configurando a autenticação ISCSI (opcional)
  9. Gerando a configuração do servidor ISCSI
  10. Acessando volumes de ZFS compartilhados via ISCSI
  11. Montando automaticamente volumes de ZFS compartilhados via ISCSI
  12. Conclusão
  13. Referências

Diagrama de rede:

Neste artigo, vou configurar dois Ubuntu 20.04 LTS Computers: ISCSI-Server e ISCSI-Client. Vou instalar o ZFS e o software do servidor ISCSI no Computador ISCSI-Server e configure -o para compartilhar volumes do ZFS via ISCSI.

Vou instalar o Software cliente ISCSI no Computador ISCSI-Client e configure -o para acessar os volumes do ZFS exportados do ISCSI-Server Computer via ISCSI.

Toda a configuração é visualizada na figura abaixo:

Instalando o TGT no servidor ISCSI:

Nesta seção, vou mostrar como instalar o pacote de servidor ISCSI TGT no computador ISCSI-Server.

Primeiro, atualize o cache do repositório de pacotes apt da seguinte maneira:

$ sudo apt update

Em seguida, instale o pacote TGT no computador ISCSI-Server com o seguinte comando:

$ sudo apt install tgt -y

Se você ainda não possui o ZFS instalado no computador ISCSI-Server, você pode instalá-lo com o seguinte comando:

$ sudo apt install zfsutils -linux -y

Instalando o Open -Csi no cliente ISCSI:

Nesta seção, vou mostrar como instalar o ISCSI CLIE no iscsi-client computador.

Primeiro, atualize o cache do repositório de pacotes apt com o seguinte comando:

$ sudo apt update

Em seguida, instale o pacote aberto-discsi no Computador ISCSI-Client com o seguinte comando:

$ sudo apt install open -discsi -y

Criando um pool ZFS:

Para a demonstração, vou criar um pool ZFS, pool1, no ISCSI-SERVER computador usando o Armazenamento VDB e VDC dispositivos:

$ sudo lsblk -e7 -d

Crie um pool ZFS, Pool1, usando os dispositivos de armazenamento VDB e VDC na configuração do espelho da seguinte forma:

$ sudo zpool create -f pool1 espelho vdb vdc

Um novo pool ZFS, Pool1, deve ser criado no computador ISCSI-Server.

Lista de $ sudo zfs

Criando volumes do ZFS:

Nesta seção, vou mostrar como criar volumes de ZFS vol1 e vol2 no Pool ZFS, Pool1, para que você possa exportá -los via ISCSI.

Para criar um volume ZFS Vol1 do tamanho 1 GB no pool ZFS, Pool1, execute o seguinte comando:

$ sudo zfs crie -v 1g pool1/vol1

Para criar um volume ZFS Vol2 do tamanho 2 GB no pool ZFS, Pool1, execute o seguinte comando:

$ sudo zfs criar -v 2g pool1/vol2

Os volumes ZFS Vol1 e Vol2 devem ser criados no pool ZFS, Pool1.

Lista de $ sudo zfs

Criando alvos ISCSI:

Um alvo ISCSI é como um contêiner nomeado. Você pode colocar um ou mais volumes de ZFS lá. Quando você acessa um alvo de outros computadores, todos os volumes do ZFS que você colocou naquele contêiner serão montados.

Nomes de destino iSCSI têm um formato padrão:

iqn.-.:

Aqui:

- O ano em formato de 4 dígitos. eu.e. 2021, 2018

- O mês numérico em formato de 2 dígitos. Deve estar na faixa 01-12. eu.e. 01 (para janeiro), 08 (para agosto), 12 (dezembro)

- O nome de domínio totalmente qualificado em formato reverso. eu.e. ISCSI.Linuxhint.com deve ser escrito como com.Linuxhint.ISCSI.

- Pode ser qualquer coisa única em sua configuração. Para uma pequena configuração de casa e escritório, você pode usar o nome do pool ZFS e o nome do volume (eu.e., Pool1.Vol1, Pool1.Vol2) ou o nome do departamento/filial (eu.e., Engenharia.PC1, conta.PC2, Engenharia.US-1, conta.UK-2) dos clientes que usarão esses volumes compartilhados. Isso deve ser único o suficiente. Em uma grande empresa, você pode usar um UUID único para cada alvo.

Nesta seção, vou mostrar como criar Dois alvos ISCSI: IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2. Na próxima seção, mostrarei como adicionar volumes do ZFS a esses alvos.

Para criar um ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e defina um ID de 1 para o alvo, execute o seguinte comando:

$ sudo tgtadm --ld iScsi -Op New -Modo Target - -Tid 1 -TargetName IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1

Da mesma maneira, execute o seguinte comando para criar um ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 e defina um ID de 2 para o alvo:

$ sudo tgtadm --ld iScsi -Op New -Modo Target - -Tid 2 -TargetName IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2

Para listar todas as metas que você criou, execute o seguinte comando:

$ sudo tgtadm --ld iscsi --p show -alvo do modo

Os alvos que você criou devem ser listados, como você pode ver na captura de tela abaixo:

Adicionando volumes do ZFS aos alvos iSCSI:

Os volumes do ZFS que você adicionará a um alvo são chamados LUNS (unidades lógicas).

Como mencionado anteriormente, você pode adicionar um ou mais volumes de ZFS em um alvo ISCSI. Mas, se o fizer, quando você acessar o alvo de outros computadores, todos os volumes do ZFS que você adicionou a esse alvo serão montados. Então, se você quiser permitir o acesso a apenas um Volume ZFS por ISCSI Target, Adicione apenas um volume ZFS a um alvo ISCSI.

Nesta seção, demonstro como adicionar os volumes do ZFS Vol1 e Vol2 aos alvos iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, respectivamente.

Cada um dos LUNS em um alvo ISCSI tem um ID a partir de 0. Então, o primeiro Lun é chamado LUN 0. Então, o segundo Lun é chamado LUN 1, enquanto o Terceiro Lun é chamado Lun 2, e assim por diante.

Por padrão, LUN 0 de cada ISCSI O alvo será ocupado por um controlador ISCSI, conforme mostrado na captura de tela abaixo. Então, você terá que usar LUN 1, LUN 2, e assim por diante, para adicionar seus volumes de ZFS aos alvos iSCSI.

$ sudo tgtadm --ld iscsi --p show -alvo do modo

Para adicionar o ZFS Volume Vol1 de Zfs pool pool1 como lun 1 para o ID de destino 1 (iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1), execute o seguinte comando:

$ sudo tgtadm --ld iScsi --Op New-Modo LogicalUnit--Tid 1--Lun 1-Backing-store/dev/pool1/vol1

Para adicionar o ZFS Volume Vol2 de ZFS Pool, Pool1, como LUN 1 para o ID de destino 2 (iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2), execute o seguinte comando:

$ sudo tgtadm --ld iScsi --Op New-Modo LogicalUnit--Tid 2--Lun 1--backing-store/dev/pool1/vol2

O ZFS Volume Vol1 deve ser adicionado ao ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 como LUN 1, conforme marcado na captura de tela abaixo:

$ sudo tgtadm --ld iscsi --p show -alvo do modo

O ZFS Volume Vol2 deve ser adicionado ao ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 como LUN 1, conforme marcado na captura de tela abaixo:

Configurando a autenticação ISCSI (Opcional):

Nesta seção, vou mostrar como ativar o nome de usuário básico e a autenticação de senha para o ISCSI tem como alvo IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2.

Você pode pular alegremente esta seção se não quiser ativar a autenticação para seus alvos iSCSI.

Primeiro, crie um novo ISCSI User Linuxhint1 com uma senha fictícia 123456 (Você terá que alterá -lo mais tarde) com o seguinte comando:

$ sudo tgtadm --ld iScsi -Op New -Mode Conta --User Linuxhint1 -Password 123456

Da mesma maneira, crie outro ISCSI User Linuxhint2 com uma senha fictícia 456789 (Você terá que alterá -lo mais tarde) com o seguinte comando:

$ sudo tgtadm --ld iScsi -Op New -Mode Conta --User Linuxhint2 -Password 456789

Usuários do ISCSI Linuxhint1 e Linuxhint2 deve ser criado, como você pode ver na captura de tela abaixo:

$ sudo tgtadm --ld iscsi --p show -conta de modo

Para permitir apenas o acesso do usuário Linuxhint1 ao ISCSI ID de destino 1 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1) Dos clientes remotos do ISCSI, execute o seguinte comando:

$ sudo tgtadm --ld iScsi -OP Bind -Modo conta - -tid 1 --User Linuxhint1

Da mesma maneira, para permitir o Usuário Linuxhint2 Acesso ao ISCSI ID de destino 2 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2) Dos clientes remotos do ISCSI, execute o seguinte comando:

$ sudo tgtadm --ld iScsi -OP Bind -Modo conta - -tid 2 --User Linuxhint2

O Conta de usuário Linuxhint1 deve ser adicionado a ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, Como você pode ver na captura de tela abaixo:

$ sudo tgtadm --ld iscsi --p show -alvo do modo

O Conta de usuário Linuxhint2 também deve ser adicionado a ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Como você pode ver na captura de tela abaixo:

Gerando a configuração do servidor ISCSI:

Nesta seção, vou mostrar como gerar um arquivo de configuração para o servidor ISCSI, para que as alterações que você fez sejam persistentes e sobreviverão às reinicializações do sistema.

Primeiro, permita o acesso ao ISCSI ID de destino 1 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1) De qualquer cliente ISCSI da seguinte forma:

$ sudo tgtadm --ld iScsi-Op Bind-Modo Target--Tid 1-Initiator-address all

Da mesma maneira, permitir acesso ao ISCSI ID de destino 2 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2) De qualquer cliente ISCSI da seguinte forma:

$ sudo tgtadm --ld iScsi-Op Bind-Modo Target--Tid 2-Initiator-address all

Agora, despeje a configuração atual do servidor ISCSI no arquivo de configuração do servidor ISCSI /etc/tgt/alvos.conf do seguinte modo:

$ sudo tgt-admin--dump | sudo tee/etc/tgt/alvos.conf

A configuração atual do servidor ISCSI deve ser salva no /etc/tgt/alvos.conf arquivo.

A senha do usuário não será salva. Então, você terá que substituir PELHE_Correct_the_password string com a senha do usuário no /etc/tgt/alvos.arquivo conf.

Abra o arquivo de configuração do servidor ISCSI /etc/tgt/alvos.conf Com o editor de texto Nano da seguinte forma:

$ sudo nano/etc/tgt/alvos.conf

Substitua as cordas PELHOR_Correct_the_password Com a respectiva senha de usuário aqui:

Para o Usuário Linuxhint1, Vou definir a senha secret1 e para o Usuário Linuxhint2, Vou definir a senha secreta2, conforme marcado na captura de tela abaixo.

Depois de terminar, pressione + X seguido por y e Para salvar o /etc/tgt/alvos.arquivo conf:

Para que as mudanças entrem em vigor, reinicie o Computador ISCSI-Server:

$ sudo reiniciar

Uma vez o botas de computador ISCSI-Server, O servidor ISCSI deve estar em execução Porta 3260, Conforme exibido na captura de tela abaixo:

$ sudo ss -tlpn

Acessando volumes de ZFS compartilhados via ISCSI:

Depois de definir o Servidor ISCSI no Computador ISCSI-Server, você pode acessar o Volumes de ZFS Vol1 e Vol2 via ISCSI no computador ISCSI-Client.

Para acessar o ISCSI alvos de Computador ISCSI-Server, você precisa saber o endereço IP do Computador ISCSI-Server. No meu caso, o endereço IP do meu Computador ISCSI-Server é 192.168.122.98. Vai ser diferente para você. Portanto, certifique -se de substituí -lo por seu a partir de agora.

$ hostname -i

Para descobrir todos os alvos iSCSI do ISCSI-SERVER (Endereço IP 192.168.122.98), Execute o seguinte comando:

$ sudo iScsiAdm -Modo Discovery -Type SendTargets -Portal 192.168.122.98

Como você pode ver, o ISCSI tem como alvo IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 estão listadas.

Se você não configurou a autenticação, poderá acessar o ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Login

Da mesma maneira, você pode acessar o ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Gin

Se você ativou a autenticação para o ISCSI tem como alvo IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 e IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Você deve receber uma mensagem de falha de autorização, marcada na captura de tela abaixo.

Para fazer login com êxito nos alvos ISCSI habilitados para autenticação, defina o método de autenticação, nome de usuário e senha para cada destino ISCSI habilitado para autenticação.

Você pode definir o método de autenticação do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 para cap com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Op Update -Nó -Nome.sessão.Auth.AuthMethod -Cap

Você pode definir o nome de usuário de login do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 para Linuxhint1 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Op Update -Nó -Nome.sessão.Auth.Nome de usuário --Value Linuxhint1

Você pode definir a senha de login do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 a Secret1 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Op Update -Nó -Nome.sessão.Auth.Senha --Value secret1

Depois de terminar de configurar o método de autenticação, login nome de usuário e senha para o ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, você deve ser capaz de fazer login com sucesso no ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Login

Depois de fazer login com sucesso no ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, Um novo SCSI Disk SDA deve ser anexado ao Computador ISCSI-Client. Observe que pode ser diferente no seu caso:

$ sudo dmesg | grep -i anexado

Como você pode ver, um novo dispositivo de armazenamento SDA de tamanho 1 GB é adicionado ao iscsi-client computador. É o volume ZFS Vol1 que você compartilhou via ISCSI:

$ sudo lsblk -e7 -d

Da mesma maneira, defina o método de autenticação do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 a cap com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Op Update -Nó -Nome.sessão.Auth.AuthMethod -Cap

Defina o nome de usuário de login do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 para Linuxhint2 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Op Update -Nó -Nome.sessão.Auth.Nome de usuário --Value Linuxhint2

Defina a senha de login do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 a Secret2 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Op Update -Nó -Nome.sessão.Auth.Senha --Value secret2

Faça login no ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 com o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Login

Você deve ser capaz de fazer login com sucesso no ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2:

Depois de fazer login com sucesso no ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Um novo SCSI Disk SDB deve ser anexado ao Computador ISCSI-Client. Observe que pode ser diferente no seu caso.

$ sudo dmesg | grep -i anexado

Como você pode ver, um novo dispositivo de armazenamento SDB de tamanho 2 GB é adicionado ao Computador ISCSI-Client. É o volume ZFS Vol2 que você compartilhou via ISCSI:

$ sudo lsblk -e7 -d

Montando automaticamente volumes de ZFS compartilhados via iSCSI:

Para fazer login automaticamente em um alvo ISCSI, você terá que definir o nó.propriedade inicial do alvo ISCSI para automático.

Para definir o nó.propriedade inicial do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 Para automático, execute o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Op Update -Nó -Nome.Startup -Valor automático

Para definir o nó.Propriedade inicial do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 a automático, Execute o seguinte comando:

$ sudo iscsiadm -nó mode -TargetName iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Op Update -Nó -Nome.Startup -Valor automático

Finalmente, ative o Serviço Systemd Open -Csi para que ele comece automaticamente no horário de inicialização com o seguinte comando:

$ sudo systemctl atable open-discsi

Para que as mudanças entrem em vigor, reinicie o Computador ISCSI-Client com o seguinte comando:

$ sudo reiniciar

Uma vez o botas de computador ISCSI-Client, você deveria ver o Dispositivos de armazenamento SDA e SDB no Computador ISCSI-Client conforme marcado na captura de tela abaixo:

$ sudo lsblk -e7 -d

Conclusão:

Neste artigo, mostrei como criar volumes do ZFS e compartilhá -los via ISCSI. Além disso, mostrei como configurar a autenticação para alvos iSCSI. Eu mostrei como fazer login nos alvos iSCSI remotamente e acessar os volumes ZFS compartilhados.

Referências:

[1] Ubuntu Manpage: TGTADM - Utilitário de Administração de Alvo Linux SCSI

[2] Ubuntu Manpage: TGT -ADMIN - Linux SCSI Target Configuration Tool

[3] Ubuntu Manpage: ISCSIADM - Utilitário de Administração Open -Csi

[4] Serviço - ISCSI | Ubuntu

[5] Convenções de nomeação de ISCSI