Red Hat Training

A Red Hat training course is available for RHEL 8

11.2.2.8. Criação e atribuição de armazenamento baseado em SCSI com dispositivos vHBA para máquinas virtuais usando o CLI

A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em SCSI usando dispositivos vHBA, bem como a atribuição de volumes a máquinas virtuais (VMs).

Recomendações

N_Port ID Virtualization (NPIV) é uma tecnologia de software que permite o compartilhamento de um único adaptador físico de barramento host do Canal de Fibra (HBA). Isto permite que várias VMs vejam o mesmo armazenamento a partir de vários hosts físicos, e assim permite caminhos de migração mais fáceis para o armazenamento. Como resultado, não há necessidade de migração para criar ou copiar o armazenamento, desde que o caminho de armazenamento correto seja especificado.

Em virtualização, o virtual host bus adapter, ou vHBA, controla os Números de Unidade Lógica (LUNs) para VMs. Para que um host compartilhe um caminho de dispositivo Fibre Channel entre várias VMs, você deve criar um vHBA para cada VM. Um único vHBA não pode ser usado por múltiplas VMs.

Cada vHBA para NPIV é identificado por sua matriz HBA e seu próprio World Wide Node Name (WWNN) e World Wide Port Name (WWPN). O caminho para o armazenamento é determinado pelos valores WWNN e WWPN. O HBA pai pode ser definido como scsi_host# ou como um par WWNN/WWPN.

Nota

Se um HBA pai é definido como scsi_host# e hardware é adicionado à máquina hospedeira, o scsi_host# a tarefa pode mudar. Portanto, recomenda-se definir um HBA pai usando um par WWNN/WWPN.

Recomenda-se definir um pool de armazenamento libvirt com base no vHBA, pois isso preserva a configuração do vHBA.

A utilização de uma piscina de armazenamento de libvirt tem duas vantagens principais:

  • O código da libvirt pode facilmente encontrar o caminho do LUN através da saída do comando virsh.
  • Você pode migrar uma VM requer apenas definir e iniciar um pool de armazenamento com o mesmo nome vHBA na máquina alvo. Para fazer isto, o vHBA LUN, libvirt storage pool e o nome do volume devem ser especificados na configuração XML da VM.
Nota

Antes de criar um vHBA, é recomendado que você configure o zoneamento de armazenamento (SAN) no LUN do host para proporcionar isolamento entre VMs e evitar a possibilidade de corrupção de dados.

Para criar uma configuração vHBA persistente, primeiro crie um arquivo XML do pool de armazenamento 'scsi'. Para obter informações sobre o arquivo XML, consulte Criando vHBAs. Ao criar um único vHBA que utilize um pool de armazenamento no mesmo HBA físico, recomenda-se usar um local estável para o valor <path>, tal como um dos /dev/disk/by-{path|id|uuid|label} locais em seu sistema.

Ao criar múltiplos vHBAs que usam pools de armazenamento no mesmo HBA físico, o valor do campo <path> deve ser apenas /dev/, caso contrário, os volumes do pool de armazenamento são visíveis apenas para um dos vHBAs, e os dispositivos do host não podem ser expostos a múltiplos VMs com a configuração NPIV.

Para maiores informações sobre <path> e os elementos em <target>, veja a documentação da libvirt upstream.

11.2.2.8.1. Criando vHBAs

A seguir são fornecidas instruções para a criação de um adaptador de ônibus host virtual (vHBA).

Procedimento

  1. Localize os HBAs em seu sistema host, usando o comando virsh nodedev-list --cap vports.

    O exemplo seguinte mostra um anfitrião que tem dois HBAs que suportam o vHBA:

    # virsh nodedev-list --cap vports
    scsi_host3
    scsi_host4
  2. Veja os detalhes da HBA, usando o virsh nodedev-dumpxml HBA_device comando.

    # virsh nodedev-dumpxml scsi_host3

    A saída do comando lista os campos <name>, <wwnn>, e <wwpn>, que são usados para criar um vHBA. <max_vports> mostra o número máximo de vHBAs suportados. Por exemplo:

    <device>
      <name>scsi_host3</name>
      <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3</path>
      <parent>pci_0000_10_00_0</parent>
      <capability type='scsi_host'>
        <host>3</host>
        <unique_id>0</unique_id>
        <capability type='fc_host'>
          <wwnn>20000000c9848140</wwnn>
          <wwpn>10000000c9848140</wwpn>
          <fabric_wwn>2002000573de9a81</fabric_wwn>
        </capability>
        <capability type='vport_ops'>
          <max_vports>127</max_vports>
          <vports>0</vports>
        </capability>
      </capability>
    </device>

    Neste exemplo, o valor <max_vports> mostra que há um total de 127 portas virtuais disponíveis para uso na configuração HBA. O valor <vports> mostra o número de portas virtuais que estão sendo utilizadas atualmente. Estes valores são atualizados após a criação de um vHBA.

  3. Criar um arquivo XML similar a um dos seguintes para o host vHBA. Nestes exemplos, o nome do arquivo é vhba_host3.xml.

    Este exemplo usa scsi_host3 para descrever o vHBA pai.

    <device>
      <parent>scsi_host3</parent>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>

    Este exemplo usa um par WWNN/WWPN para descrever o vHBA pai.

    <device>
      <name>vhba</name>
      <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/>
      <capability type='scsi_host'>
        <capability type='fc_host'>
        </capability>
      </capability>
    </device>
    Nota

    Os valores da WWNN e da WWPN devem coincidir com os valores da HBA, que foram vistos na etapa anterior.

    O campo <parent> especifica o dispositivo HBA a ser associado a este dispositivo vHBA. Os detalhes na tag <device> são usados na próxima etapa para criar um novo dispositivo vHBA para o host. Para mais informações sobre o formato nodedev XML, veja as páginas da libvirt upstream.

    Nota

    O comando virsh não fornece uma forma de definir os atributos parent_wwnn, parent_wwpn, ou parent_fabric_wwn.

  4. Criar um VHBA com base no arquivo XML criado na etapa anterior usando o comando virsh nodev-create.

    # virsh nodedev-create vhba_host3
    Node device scsi_host5 created from vhba_host3.xml

Verificação

  • Verifique os detalhes do novo vHBA (scsi_host5) usando o comando virsh nodedev-dumpxml:

    # virsh nodedev-dumpxml scsi_host5
    <device>
      <name>scsi_host5</name>
      <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3/vport-3:0-0/host5</path>
      <parent>scsi_host3</parent>
      <capability type='scsi_host'>
        <host>5</host>
        <unique_id>2</unique_id>
        <capability type='fc_host'>
          <wwnn>5001a4a93526d0a1</wwnn>
          <wwpn>5001a4ace3ee047d</wwpn>
          <fabric_wwn>2002000573de9a81</fabric_wwn>
        </capability>
      </capability>
    </device>