11.2.2.8. Creación y asignación de almacenamiento basado en SCSI con dispositivos vHBA para máquinas virtuales utilizando la CLI
A continuación se proporciona información sobre la creación de pools de almacenamiento basados en SCSI y volúmenes de almacenamiento utilizando dispositivos vHBA, así como la asignación de volúmenes a máquinas virtuales (VM).
Recomendaciones
N_Port ID Virtualization (NPIV) es una tecnología de software que permite compartir un único adaptador de bus de host (HBA) Fibre Channel físico. Esto permite que varias máquinas virtuales vean el mismo almacenamiento desde varios hosts físicos y, por tanto, facilita las rutas de migración del almacenamiento. Como resultado, no es necesario que la migración cree o copie el almacenamiento, siempre que se especifique la ruta de almacenamiento correcta.
En la virtualización, el virtual host bus adapter, o vHBA, controla los Números de Unidad Lógica (LUNs) para las VMs. Para que un host comparta una ruta de dispositivo Fibre Channel entre múltiples VMs, debe crear un vHBA para cada VM. Un solo vHBA no puede ser utilizado por múltiples VMs.
Cada vHBA para NPIV se identifica por su HBA padre y su propio Nombre de Nodo Mundial (WWNN) y Nombre de Puerto Mundial (WWPN). La ruta de acceso al almacenamiento está determinada por los valores WWNN y WWPN. El HBA principal puede definirse como scsi_host#
o como un par WWNN/WWPN.
Si se define un HBA padre como scsi_host#
y se añade hardware a la máquina anfitriona, la asignación scsi_host#
asignación puede cambiar. Por lo tanto, se recomienda definir un HBA padre utilizando un par WWNN/WWPN.
Se recomienda definir un pool de almacenamiento libvirt
basado en el vHBA, porque así se conserva la configuración del vHBA.
El uso de un pool de almacenamiento libvirt tiene dos ventajas principales:
- El código de libvirt puede encontrar fácilmente la ruta del LUN a través de la salida del comando virsh.
- Para migrar una VM sólo es necesario definir e iniciar un pool de almacenamiento con el mismo nombre de vHBA en la máquina de destino. Para ello, el LUN de vHBA, el pool de almacenamiento libvirt y el nombre del volumen deben estar especificados en la configuración XML de la VM.
Antes de crear un vHBA, se recomienda configurar la zonificación del lado de la matriz de almacenamiento (SAN) en el LUN del host para proporcionar aislamiento entre las máquinas virtuales y evitar la posibilidad de corrupción de datos.
Para crear una configuración de vHBA persistente, primero hay que crear un archivo XML de pool de almacenamiento libvirt 'scsi'. Para obtener información sobre el archivo XML, consulte Creación de vHBA. Cuando se crea un único vHBA que utiliza un pool de almacenamiento en el mismo HBA físico, se recomienda utilizar una ubicación estable para el valor <path>
, como una de las /dev/disk/by-{path|id|uuid|label}
ubicaciones de su sistema.
Cuando se crean múltiples vHBAs que utilizan pools de almacenamiento en el mismo HBA físico, el valor del campo <path>
debe ser sólo /dev/
, de lo contrario los volúmenes del pool de almacenamiento son visibles sólo para uno de los vHBAs, y los dispositivos del host no pueden ser expuestos a múltiples VMs con la configuración NPIV.
Para más información sobre <path>
y los elementos de <target>
, consulte la documentación de libvirt.
11.2.2.8.1. Creación de vHBAs
A continuación se ofrecen instrucciones para crear un adaptador de bus de host virtual (vHBA).
Procedimiento
Localice los HBAs en su sistema anfitrión, utilizando el comando
virsh nodedev-list --cap vports
.El siguiente ejemplo muestra un host que tiene dos HBAs que soportan vHBA:
# virsh nodedev-list --cap vports scsi_host3 scsi_host4
Vea los detalles del HBA, utilizando el
virsh nodedev-dumpxml HBA_device
comando.# virsh nodedev-dumpxml scsi_host3
La salida del comando muestra los campos
<name>
,<wwnn>
, y<wwpn>
, que se utilizan para crear un vHBA.<max_vports>
muestra el número máximo de vHBAs soportados. Por ejemplo:<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>
En este ejemplo, el valor
<max_vports>
muestra que hay un total de 127 puertos virtuales disponibles para su uso en la configuración HBA. El valor<vports>
muestra el número de puertos virtuales que se están utilizando actualmente. Estos valores se actualizan después de crear un vHBA.Cree un archivo XML similar a uno de los siguientes para el host vHBA. En estos ejemplos, el archivo se denomina
vhba_host3.xml
.Este ejemplo utiliza
scsi_host3
para describir el vHBA padre.<device> <parent>scsi_host3</parent> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
Este ejemplo utiliza un par WWNN/WWPN para describir el vHBA padre.
<device> <name>vhba</name> <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
NotaLos valores WWNN y WWPN deben coincidir con los de los detalles del HBA vistos en el paso anterior.
El campo
<parent>
especifica el dispositivo HBA a asociar con este dispositivo vHBA. Los detalles de la etiqueta<device>
se utilizan en el siguiente paso para crear un nuevo dispositivo vHBA para el host. Para más información sobre el formato XMLnodedev
, consulte las páginas de libvirt upstream.NotaEl comando
virsh
no permite definir los atributosparent_wwnn
,parent_wwpn
, oparent_fabric_wwn
.Cree un VHBA basado en el archivo XML creado en el paso anterior utilizando el comando
virsh nodev-create
.# virsh nodedev-create vhba_host3 Node device scsi_host5 created from vhba_host3.xml
Verificación
Verifique los detalles del nuevo vHBA (scsi_host5) utilizando el 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>