Provisionamento de iSCSI para Linux - FSx para ONTAP

Provisionamento de iSCSI para Linux

O FSx para ONTAP é compatível com o protocolo iSCSI. Você precisa provisionar iSCSI no cliente Linux e no sistema de arquivos para usar o protocolo iSCSI para transportar dados entre clientes e seu sistema de arquivos. O protocolo iSCSI está disponível em todos os sistemas de arquivos com até 6 pares de alta disponibilidade (HA).

O processo de configuração do iSCSI em seu Amazon FSx para NetApp ONTAP tem três etapas principais, que são abordadas nos procedimentos a seguir:

  1. Instale e configure o cliente iSCSI no host Linux.

  2. Configure o iSCSI na SVM do sistema de arquivos.

    • Crie um grupo de iniciadores iSCSI.

    • Mapeie o grupo de iniciadores para a LUN.

  3. Monte uma LUN iSCSI no cliente Linux,

Antes de começar

Antes de iniciar o processo de configuração do sistema de arquivos para iSCSI, você precisa concluir os itens a seguir.

  • Crie um sistema de arquivos do FSx para ONTAP. Para obter mais informações, consulte Criar sistemas de arquivos.

  • Crie uma LUN de iSCSI no sistema de arquivos. Para obter mais informações, consulte Como criar um LUN de iSCSI.

  • Crie uma instância do EC2 executando a imagem de máquina da Amazon (AMI) do Amazon Linux 2 na mesma VPC do sistema de arquivos. Esse é o host Linux no qual você configurará o iSCSI e acessará os dados do arquivo.

    Adicionalmente ao escopo destes procedimentos, se o host estiver localizado em outra VPC, você poderá usar o emparelhamento de VPC ou o AWS Transit Gateway para permitir que outras VPCs tenham acesso aos endpoints de iSCSI do volume. Para obter mais informações, consulte Acesso a dados de fora da VPC de implantação.

  • Configure os grupos de segurança de VPC do host do Linux para permitir tráfego de entrada e saída, conforme descrito em Controle de acesso ao sistema de arquivos com a Amazon VPC.

  • Obtenha as credenciais do usuário do ONTAP com privilégios fsxadmin que você usará para acessar a CLI do ONTAP. Para obter mais informações, consulte Usuários e perfis do ONTAP.

  • O host do Linux que você vai configurar para iSCSI e usar para acessar o sistema de arquivos do FSx para ONTAP está localizado na mesma VPC e Conta da AWS.

  • Recomendamos que a instância do EC2 esteja na mesma zona de disponibilidade da sub-rede preferencial do seu sistema de arquivos, conforme mostrado no gráfico a seguir.

    Imagem mostrando um sistema de arquivos do Amazon FSx para NetApp ONTAP com um LUN de iSCSI e uma instância do Amazon EC2 localizados na mesma zona de disponibilidade da sub-rede preferencial do sistema de arquivos.

Se sua instância do EC2 executar uma AMI do Linux que não seja do Amazon Linux 2, alguns dos utilitários usados nesses procedimentos e exemplos poderão já estar instalados e talvez você use comandos diferentes para instalar os pacotes necessários. Além de instalar pacotes, os comandos usados nesta seção são válidos para outras AMIs do Linux do EC2.

Instalar e configurar iSCSI no host Linux

Instalar o cliente iSCSI
  1. Confirme se iscsi-initiator-utils e device-mapper-multipath estão instalados no seu dispositivo Linux. Conecte-se à instância do Linux usando um cliente SSH. Para obter mais informações, consulte Connect to your Linux instance using SSH.

  2. Instale multipath e o cliente iSCSI usando o comando a seguir. A instalação de multipath é necessária se quiser fazer o failover automático entre os servidores de arquivos.

    ~$ sudo yum install -y device-mapper-multipath iscsi-initiator-utils
  3. Para facilitar uma resposta mais rápida ao fazer o failover automático entre servidores de arquivos ao usar multipath, defina o valor do tempo limite de substituição no arquivo /etc/iscsi/iscsid.conf como um valor de 5 em vez de usar o valor padrão de 120.

    ~$ sudo sed -i 's/node.session.timeo.replacement_timeout = .*/node.session.timeo.replacement_timeout = 5/' /etc/iscsi/iscsid.conf; sudo cat /etc/iscsi/iscsid.conf | grep node.session.timeo.replacement_timeout
  4. Inicie o serviço iSCSI.

    ~$ sudo service iscsid start

    Observe que, dependendo da sua versão do Linux, talvez precise usar este comando:

    ~$ sudo systemctl start iscsid
  5. Confirme se o serviço está em execução usando o comando a seguir.

    ~$ sudo systemctl status iscsid.service

    O sistema responde com a seguinte saída:

    iscsid.service - Open-iSCSI Loaded: loaded (/usr/lib/systemd/system/iscsid.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-09-02 00:00:00 UTC; 1min ago Docs: man:iscsid(8) man:iscsiadm(8) Process: 14658 ExecStart=/usr/sbin/iscsid (code=exited, status=0/SUCCESS) Main PID: 14660 (iscsid) CGroup: /system.slice/iscsid.service ├─14659 /usr/sbin/iscsid └─14660 /usr/sbin/iscsid
Configurar o iSCSI no seu cliente Linux
  1. Para permitir que seus clientes façam o failover automático entre os servidores de arquivos, é necessário configurar múltiplos caminhos. Use o seguinte comando:

    ~$ sudo mpathconf --enable --with_multipathd y
  2. Determine o nome do iniciador do host do Linux usando o comando a seguir. A localização do nome do iniciador depende do utilitário do iSCSI. Se estiver usando iscsi-initiator-utils, o nome do iniciador está localizado no arquivo /etc/iscsi/initiatorname.iscsi.

    ~$ sudo cat /etc/iscsi/initiatorname.iscsi

    O sistema responde com o nome do iniciador.

    InitiatorName=iqn.1994-05.com.redhat:abcdef12345

Configurar o iSCSI no sistema de arquivos do FSx para ONTAP

  1. Conecte-se à CLI do NetApp ONTAP no sistema de arquivos do FSx para ONTAP no qual você criou o LUN do iSCSI usando o comando a seguir. Para obter mais informações, consulte Usar a CLI do NetApp ONTAP.

    ~$ ssh fsxadmin@your_management_endpoint_ip
  2. Crie o grupo de iniciadores (igroup) usando o comando de CLI lun igroup create do NetApp ONTAP. Um grupo de iniciadores mapeia para LUNs de iSCSI e controla quais iniciadores (clientes) têm acesso aos LUNs. Substitua host_initiator_name pelo nome do iniciador do host do Linux que você recuperou no procedimento anterior.

    ::> lun igroup create -vserver svm_name -igroup igroup_name -initiator host_initiator_name -protocol iscsi -ostype linux

    Se quiser disponibilizar os LUNs mapeados para esse igroup para vários hosts, você pode especificar vários nomes de iniciadores separados por uma vírgula. Para obter mais informações, consulte lun igroup create no NetApp ONTAP Documentation Center.

  3. Confirme se o igroup existe usando o comando lun igroup show:

    ::> lun igroup show

    O sistema responde com a seguinte saída:

    Vserver Igroup Protocol OS Type Initiators --------- ------------ -------- -------- ------------------------------------ svm_name igroup_name iscsi linux iqn.1994-05.com.redhat:abcdef12345
  4. Esta etapa pressupõe que você já tenha criado um LUN de iSCSI. Se não tiver criado, consulte Como criar um LUN de iSCSI para obter instruções passo a passo sobre como fazer isso.

    Crie um mapeamento do LUN criado para o igroup que você criou, usando o lun mapping create, especificando os atributos a seguir.

    • svm_name: o nome da máquina virtual de armazenamento que fornece o destino iSCSI. O host usa esse valor para acessar o LUN.

    • vol_name: o nome do volume que hospeda o LUN.

    • lun_name: o nome que você atribuiu ao LUN.

    • igroup_name: o nome do grupo de iniciadores.

    • lun_id: o número inteiro do ID do LUN é específico do mapeamento e não do LUN em si. Isso é usado pelos iniciadores no igroup, pois o número da unidade lógica usa esse valor para o iniciador ao acessar o armazenamento.

    ::> lun mapping create -vserver svm_name -path /vol/vol_name/lun_name -igroup igroup_name -lun-id lun_id
  5. Use o comando lun show -path para confirmar se o LUN foi criado, on-line e mapeado.

    ::> lun show -path /vol/vol_name/lun_name -fields state,mapped,serial-hex

    O sistema responde com a seguinte saída:

    Vserver Path serial-hex state mapped --------- ------------------------------- ------------------------ -------- -------- svm_name /vol/vol_name/lun_name 6c5742314e5d52766e796150 online mapped

    Salve o valor serial_hex (neste exemplo, é 6c5742314e5d52766e796150). Você o usará em uma etapa posterior para criar um nome fácil para o dispositivo de blocos.

  6. Use o comando network interface show -vserver para recuperar os endereços das interfaces iscsi_1 e iscsi_2 e da SVM na qual você criou o LUN do iSCSI.

    ::> network interface show -vserver svm_name

    O sistema responde com a seguinte saída:

    Logical Status Network Current Current Is Vserver Interface Admin/Oper Address/Mask Node Port Home ----------- ---------- ---------- ------------------ ------------- ------- ---- svm_name iscsi_1 up/up 172.31.0.143/20 FSxId0123456789abcdef8-01 e0e true iscsi_2 up/up 172.31.21.81/20 FSxId0123456789abcdef8-02 e0e true nfs_smb_management_1 up/up 198.19.250.177/20 FSxId0123456789abcdef8-01 e0e true 3 entries were displayed.

    Neste exemplo, o endereço IP de iscsi_1 é 172.31.0.143 e iscsi_2 é 172.31.21.81.

Montar um LUN de iSCSI no cliente Linux

O processo de montagem da LUN iSCSI no cliente Linux envolve três etapas:

  1. Descobrir os nós iSCSI de destino

  2. Particionar a LUN iSCSI

  3. Montar a LUN iSCSI no cliente

Isso é abordado nos procedimentos a seguir.

Para descobrir os nós iSCSI de destino
  1. No cliente Linux, use o comando a seguir para descobrir os nós do iSCSI de destino usando o endereço IP de iscsi_1 iscsi_1_IP.

    ~$ sudo iscsiadm --mode discovery --op update --type sendtargets --portal iscsi_1_IP
    172.31.0.143:3260,1029 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3 172.31.21.81:3260,1028 iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3

    Neste exemplo, iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3 corresponde ao target_initiator para o LUN do iSCSI na zona de disponibilidade preferencial.

  2. (Opcional) Para promover um throughput maior do que o máximo de 5 Gb/s (~625 MB/s) de cliente único do Amazon EC2 para sua LUN iSCSI, siga os procedimentos descritos em Largura de banda de rede de instâncias do Amazon EC2 no Guia do usuário do Amazon Elastic Compute Cloud para instâncias Linux para estabelecer sessões adicionais com throughput maior.

    O comando a seguir estabelece oito sessões por iniciador por nó do ONTAP em cada zona de disponibilidade, permitindo que o cliente gere até 40 GB/s (5.000 MB/s) de throughput agregado para o LUN de iSCSI.

    ~$ sudo iscsiadm --mode node -T target_initiator --op update -n node.session.nr_sessions -v 8
  3. Faça login nos iniciadores de destino. Seus LUNs de iSCSI são apresentados como discos disponíveis.

    ~$ sudo iscsiadm --mode node -T target_initiator --login
    Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] (multiple) Login to [iface: default, target: iqn.1992-08.com.netapp:sn.9cfa2c41207a11ecac390182c38bc256:vs.3, portal: 172.31.14.66,3260] successful.

    A saída acima está truncada; você deve ver uma resposta Logging in e uma resposta Login successful para cada sessão em cada servidor de arquivos. No caso de quatro sessões por nó, haverá 8 respostas Logging in e 8 respostas Login successful.

  4. Use o comando a seguir para verificar se dm-multipath identificou e mesclou as sessões de iSCSI mostrando um único LUN com várias políticas. Deve haver um número igual de dispositivos listados como active e aqueles listados como enabled.

    ~$ sudo multipath -ll

    Na saída, o nome do disco é formatado como dm-xyz, onde xyz é um número inteiro. Se não houver outros discos de múltiplos caminhos, o valor será dm-0.

    3600a09806c5742314e5d52766e79614f dm-xyz NETAPP ,LUN C-Mode size=10G features='4 queue_if_no_path pg_init_retries 50 retain_attached_hw_handle' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=50 status=active | |- 0:0:0:1 sda 8:0 active ready running | |- 1:0:0:1 sdc 8:32 active ready running | |- 3:0:0:1 sdg 8:96 active ready running | `- 4:0:0:1 sdh 8:112 active ready running `-+- policy='service-time 0' prio=10 status=enabled |- 2:0:0:1 sdb 8:16 active ready running |- 7:0:0:1 sdf 8:80 active ready running |- 6:0:0:1 sde 8:64 active ready running `- 5:0:0:1 sdd 8:48 active ready running

    Seu dispositivo de blocos agora está conectado ao cliente Linux. Ele está localizado sob o caminho /dev/dm-xyz. Você não deve usar esse caminho para fins administrativos; em vez disso, use o link simbólico que está sob o caminho /dev/mapper/wwid, onde wwid é um identificador exclusivo do seu LUN que é consistente em todos os dispositivos. Na próxima etapa, você fornecerá um nome fácil para wwid, de modo que possa diferenciá-lo de outros discos com múltiplos caminhos.

Para dar um nome amigável ao dispositivo de blocos
  1. Para fornecer um nome fácil ao dispositivo, crie um alias no arquivo /etc/multipath.conf. Para isso, adicione a seguinte entrada ao arquivo usando seu editor de texto preferencial, substituindo os seguintes espaços reservados:

    • Substitua serial_hex pelo valor salvo no procedimento Configurar o iSCSI no sistema de arquivos do FSx para ONTAP.

    • Adicione o prefixo 3600a0980 ao valor serial_hex conforme mostrado no exemplo. Este é um preâmbulo exclusivo para a distribuição do NetApp ONTAP usada pelo Amazon FSx para NetApp ONTAP.

    • Substitua device_name pelo nome fácil que deseja usar no seu dispositivo.

    multipaths { multipath { wwid 3600a0980serial_hex alias device_name } }

    Como alternativa, você pode copiar e salvar o script a seguir como um arquivo bash, como multipath_alias.sh. Você pode executar o script com privilégios sudo, substituindo serial_hex (sem o prefixo 3600a0980) e device_name pelo seu respectivo número de série e pelo nome desejado. Esse script busca uma seção multipaths não comentada no arquivo /etc/multipath.conf. Se a seção existir, ele anexa uma entrada multipath a essa seção; caso contrário, ele criará uma seção multipaths com uma entrada multipath para o seu dispositivo de blocos.

    #!/bin/bash SN=serial_hex ALIAS=device_name CONF=/etc/multipath.conf grep -q '^multipaths {' $CONF UNCOMMENTED=$? if [ $UNCOMMENTED -eq 0 ] then sed -i '/^multipaths {/a\\tmultipath {\n\t\twwid 3600a0980'"${SN}"'\n\t\talias '"${ALIAS}"'\n\t}\n' $CONF else printf "multipaths {\n\tmultipath {\n\t\twwid 3600a0980$SN\n\t\talias $ALIAS\n\t}\n}" >> $CONF fi
  2. Reinicie o serviço multipathd para que as alterações em /etc/multipathd.conf entrem em vigor.

    ~$ systemctl restart multipathd.service
Particionar o LUN

A próxima etapa é formatar e particionar o LUN usando fdisk.

  1. Use o comando a seguir para verificar se o caminho para device_name está presente.

    ~$ ls /dev/mapper/device_name
    /dev/device_name
  2. Particione o disco usando fdisk. Você inserirá um prompt interativo. Insira as opções na ordem mostrada. Você pode criar várias partições usando um valor menor que o último setor (20971519, neste exemplo).

    nota

    O valor de Last sector terá variações, dependendo do tamanho do LUN de iSCSI (10 GB, neste exemplo).

    ~$ sudo fdisk /dev/mapper/device_name

    O prompt interativo fsdisk é iniciado.

    Welcome to fdisk (util-linux 2.30.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x66595cb0. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-20971519, default 2048): 2048 Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): 20971519 Created a new partition 1 of type 'Linux' and of size 512 B. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.

    Após inserir w, sua nova partição /dev/mapper/partition_name fica disponível. O partition_name tem o formato <device_name><partition_number>. 1 foi usado como o número da partição utilizada no comando fdisk na etapa anterior.

  3. Crie seu sistema de arquivos usando /dev/mapper/partition_name como caminho.

    ~$ sudo mkfs.ext4 /dev/mapper/partition_name

    O sistema responde com a seguinte saída:

    mke2fs 1.42.9 (28-Dec-2013) Discarding device blocks: done Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=16 blocks 655360 inodes, 2621184 blocks 131059 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 80 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
Montar o LUN no cliente Linux
  1. Crie um diretório directory_path como ponto de montagem do sistema de arquivos.

    ~$ sudo mkdir /directory_path/mount_point
  2. Monte o sistema de arquivos usando o comando a seguir.

    ~$ sudo mount -t ext4 /dev/mapper/partition_name /directory_path/mount_point
  3. (Opcional) Se você quiser dar a um usuário específico a propriedade do diretório de montagem, substitua username pelo nome de usuário do proprietário.

    ~$ sudo chown username:username /directory_path/mount_point
  4. (Opcional) Verifique se pode ler e gravar dados no sistema de arquivos.

    ~$ echo "Hello world!" > /directory_path/mount_point/HelloWorld.txt ~$ cat directory_path/HelloWorld.txt Hello world!

    Você criou e montou com êxito um LUN de iSCSI no cliente Linux.