XenServer: Almacenamiento

    En esta lección veremos otro de los temas base de XenServer: los espacios de almacenamiento o storage repositories. Comenzaremos con los conceptos y terminología básicos y las tecnologías utilizadas en XenServer. Después realizaremos la configuración de un almacenamiento compartido (shared storage) iscsi , necesario para disponer posteriormente de características como XenMotion o High Availability, y crearemos un repositorio de imágenes iso, muy útil en el despliegue de máquinas virtuales.Por último analizaremos las particularidades de gestión del almacenamiento local de un servidor XenServer.

MA-icono-manual142(ACCEDE AQUÍ AL INDICE DEL MANUAL DE CITRIX XENSERVER)

CONTENIDO DE LA LECCION

  • Caso práctico
  • Conceptos y tipos de almacenamiento
  • Creación de un shared storage iscsi
  • Creación de un repositorio de imágenes iso
  • Administración del almacenamiento local

Caso práctico

   Una vez configurado el resource pool de servidores en L023 Formación, el técnico de sistemas debe ahora configurar el almacenamiento donde ubicar las máquinas virtuales. Este almacenamiento debe ser accesible por todos los servidores del pool, de manera que las máquinas virtuales puedan moverse de un servidor a otro según las necesidades. Para ello, una vez que se haya puesto al día con los conceptos y opciones de almacenamiento de XenServer, conectará el pool de los servidores de producción l023xse01, l023xse02 y l023xse03 con un target iscsi ya configurado en un servidor NAS l023NAS01. También deberá configurar unos nuevos discos internos adquiridos para el servidor de test l023xse04.

   Por otra parte, sabe que es más sencillo desplegar máquinas virtuales desde imágenes iso que desde una copia en DVD, por lo que debe configurar un repositorio donde almacenar las imágenes iso a utilizar.

   Todo el procedimiento de configuración la realizará desde su estación de trabajo l023wst01, en la que está instalada XenCenter. El controlador de dominio l023dom01 realiza las labores de servidor DNS.

Conceptos y tipos de almacenamiento

   Antes de empezar a trabajar con la configuración y administración del almacenamiento en XenServer, vamos a introducir algunos conceptos básicos:

  • VDI: es un archivo en disco de XenServer que es presentado a las máquinas virtuales como un disco físico.
  • Storage repository: espacio de almacenamiento del que dispone un host XenServer para almacenar los archivos VDI. Pueden ser locales (discos internos IDE, SATA, SCSI ó SAS) o remotos (iSCSI, SAS, FC ó NFS).
  • PBD: objeto de conecta los servidores físicos con los storage repositories. Contiene los valores de configuración necesarios para poder realizar esa conexión.
  • VDB: objeto que conecta las máquinas virtuales con sus VDI correspondientes.
  • Shared storage: Es un storage repository remoto compartido y accesible por todos los servidores XenServer que componen un resource pool.

      Por otra parte, el sistema gestor del almacenamiento de los VDI puede ser:

  • Un sistema de ficheros. Ejemplos: ext3 en almacenamiento local, nfs en remoto.
  • Un sistema de volúmenes lógicos. Ejemplos: lvm en almacenamiento local, o  FC, iscsi en remoto.
  • Otros: NetApp, EqualLogic,…

 

Creación de un shared storage iscsi

   En nuestro entorno XenServer, tenemos tres servidores (l023xse01, l023xse02 y l023xse03) que están agrupados en un resource pool (l023pool01). Se dispone de un sistema NAS (l023nas01) al que se le ha configurado un recurso de almacenamiento target iscsi de 600 GB.

Configuración de la interfaz de almacenamiento en XenServer

   En XenServer es necesario separar el tráfico de red utilizado para almacenamiento (si no, XenServer podría enviar tráfico de gestión o de las máquinas virtuales a través de la interfaz que hayamos “dedicado” al almacenamiento). Esto se puede conseguir utilizando dispositivos conmutadores distintos o implementando vlans. También es conveniente utilizar distintos segmentos de red para cada uso. En cualquier caso, se utilizará la red 192.168.160.0/24 para la interconexión de las estaciones de trabajo, máquinas virtuales, servidores, etc,.. y la 192.168.170.0/24 se dedicará al tráfico de almacenamiento. Además, la red dedicada al almacenamiento no puede ser enrutable desde la red de gestión.

   Así pues, se configurará la interfaz de red libre de los servidores XenServer (la otra es la que se está utilizando para su gestión) en el segmento de red 192.168.170.0/24, al igual que la interfaz del NAS que sirve el target iscsi.

      Los datos del NAS que necesitamos para conectar los servidores XenServer son:

  • Dirección IP: 192.168.170.30 (que ha sido dada de alta en el servidor DNS como l023nas01_iscsi170)
  • Identificador IQN del target iscsi: iqn.2006-01.com.openfiler:tsn.9ff686cdfc77
  • Autenticación CHAP: no ha sido habilitado en el NAS, por lo que no será necesaria al configurar el target iscsi en el pool XenServer.

   Tanto la configuración de la nueva interfaz dedicada a almacenamiento como la del target iscsi en el entorno XenServer se ha de realizar a nivel de pool. Esto es, no hay que configurarlo en cada uno de los servidores por separado. Esto será lo habitual a partir de ahora.

   Los requisitos que debe cumplir una conexión dedicada exclusivamente al almacenamiento en XenServer son:

  • Que otro tráfico de red distinto al almacenamiento no pueda utilizar esa conexión, como ya hemos dicho.
  • Que el parámetro “disallow-unplug” de la configuración de XenServer de interfaz física (objeto PIF, ya hablaremos de esto más adelante en el manual) esté establecido a “true”. Como veremos, esto lo hace automáticamente XenCenter al configurar la nueva interfaz.

   En XenCenter, seleccionamos el resource pool en el panel izquierdo y en le derecho vamos a la pestaña “Networking”. En la parte superior se muestran las redes creadas actualmente en el pool. La “Network 0” está creada sobre la interfaz de red NIC 0 y la “Network 1” sobre la NIC 1. Esto es así en todos los servidores que componen el pool. La NIC 0 es la configurada para gestionar los servidores, así que se configurará la interfaz NIC 1 para almacenamiento.

 

   Hacemos clic en “Configure”, disponible en la parte de abajo de la ventana, y se abre la ventana “Configure IP addresses”. hacemos clic en “Add IP Address”en el panel izquierdo de dicha ventana. Esto nos permite configurar una nueva IP para la red “Network 1”. Introducimos el direccionamiento elegido para el tráfico de almacenamiento. En este caso:

  • l023xse01: 192.168.170.21/24
  • l023xse02: 192.168.170.22/24
  • l023xse03: 192.168.170.23/24

   Si es necesario, se debe seleccionar en el campo desplegable “Network” la red que debemos configurar (en este caso, “Network 1”). También daremos un nombre descriptivo a la interfaz configurada. Sólo tendremos que introducir el direccionamiento del primer servidor. XenServer asignará direcciones sucesivas para el resto.

   Ahora comprobaremos que la interfaz se ha creado con los parámetros adecuados con el comando xe pif-list desde el pool master, conectándonos por ssh:

[root@l023xse01 ~]# xe pif-list params=host-name-label,device,management,disallow-unplug,other-config
device ( RO)             : eth1
management ( RO): false
host-name-label ( RO): l023xse03
disallow-unplug ( RW): true
other-config (MRW): management_purpose: Almacenamiento_01

device ( RO)             : eth0
management ( RO): true
host-name-label ( RO): l023xse03
disallow-unplug ( RW): false
other-config (MRW):

device ( RO)             : eth0
management ( RO): true
host-name-label ( RO): l023xse02
disallow-unplug ( RW): false
other-config (MRW): domain: l023.local

device ( RO)             : eth0
management ( RO): true
host-name-label ( RO): l023xse01
disallow-unplug ( RW): false
other-config (MRW): domain: l023.local

device ( RO)             : eth1
management ( RO): false
host-name-label ( RO): l023xse02
disallow-unplug ( RW): true
other-config (MRW): management_purpose: Almacenamiento_01

device ( RO)             : eth1
management ( RO): false
host-name-label ( RO): l023xse01
disallow-unplug ( RW): true
other-config (MRW): management_purpose: Almacenamiento_01

 

Creación del shared storage en el resource pool

   Para crear el nuevo shared storage (un storage repository compartido) en el pool, desde XenCenter tenemos varias opciones de menú. Por ejemplo, seleccionando en el panel izquierdo el pool (l023pool01), vamos en el panel derecho a la pestaña “Storage”, que nos informa de todo el almacenamiento disponible en el pool. En la parte inferior del panel derecho, haciendo clic en el botón “New SR…” se nos abre el asistente “New Storage Repository”. Este se compone de varios pasos:

 

1.- Ventana “Choose the type of new storage”: seleccionamos “Software iSCSI” y hacemos clic en “Next”.

2.- Ventana “What do you want to call this storage repository?”: se escribe el nombre para el nuevo almacenamiento compartido y si procede una descripción. En nuestro caso, le damos el nombre “L023nas01_iscsi01”. Hacemos clic en “Next”.

3.- Ventana “Enter a path for wour iSCSI storage”: se configuran los parámetros de conexión con el servidor NAS en el que se ha configurado el target iscsi:

3.1- Target Host: el nombre DNS del NAS. En este caso se ha configurado un registro en el servidor DNS llamado l023nas01_iscsi170 para que apunte a la dirección 192.168.170.30, que es en la que se ha habilitado el “disco” iscsi

3.2- Hacemos clic en “Discover IQNs”. Aparecen en el desplegable “Target IQN” los target disponibles en el NAS. Seleccionamos el correcto.

3.2- Hacemos clic en “Discover LUNs”. Se muestran las LUNS disponibles en ese IQN. Seleccionamos la correcta.

3.3- Hacemos clic en “Finish”. El asistente escanea el destino iscsi buscando storage repositories ya disponibles en él. Si no existe todavía ninguno, como es el caso, aparece un cuadro de diálogo de confirmación para crear un nuevo disco virtual en él, formateándolo. En este caso, elegimos “Yes”. Una vez que el asistente termina de crear el nuevo SR, se cierra.

   En este momento, en el panel de “Storage” del resource pool, ya aparece el shared storage recién creado.

En la sección “Conceptos y tipos de almacenamiento definimos los objetos PBD como “PBD: objeto de conecta los servidores físicos con los storage repositories. Contiene los valores de configuración necesarios para poder realizar esa conexión”.

   Vamos a obtener los parámetros del shared storage recién creado con el comando xe pbd-list. Nos conectamos por ssh al pool master l023xse01 y ejecutamos:

[root@l023xse01 ~]# xe pbd-list sr-name-label=”L023nas01_iscsi01″ params=host-name-label,device-config
host-name-label ( RO)    : l023xse01
device-config (MRO): port: 3260; target: 192.168.170.30; SCSIid: 14f504e46494c45526e7034326a332d7243644c2d50526b5a; targetIQN: iqn.2006-01.com.openfiler:tsn.9ff686cdfc77

host-name-label ( RO)    : l023xse03
device-config (MRO): port: 3260; target: 192.168.170.30; SCSIid: 14f504e46494c45526e7034326a332d7243644c2d50526b5a; targetIQN: iqn.2006-01.com.openfiler:tsn.9ff686cdfc77

host-name-label ( RO)    : l023xse02
device-config (MRO): port: 3260; target: 192.168.170.30; SCSIid: 14f504e46494c45526e7034326a332d7243644c2d50526b5a; targetIQN: iqn.2006-01.com.openfiler:tsn.9ff686cdfc77

 

Así podemos comprobar este objeto informa, a cada host del pool, de los datos de conexión al disco iscsi.

Por otra parte, si en el mismo host, investigamos el objeto SR (storage repository) con el comando xe sr-list:

[root@l023xse01 ~]# xe sr-list name-label=”L023nas01_iscsi01″ params=name-label,virtual-allocation,physical-utilisation,physical-size,type,shared
name-label ( RW)              : L023nas01_iscsi01
virtual-allocation ( RO): 0
physical-utilisation ( RO): 4194304
physical-size ( RO): 614335512576
type ( RO): lvmoiscsi
shared ( RW): true

 

   Vemos que este objeto está configurado a nivel de pool (no de host, como el anterior), y contiene información referida al “disco”: tipo lvmoiscsi (“Logical Volume Manager over iscsi”), así como espacio utilizado virtual, físico, tamaño total. y además nos indica que es un almacenamiento compartido (shared=true).

 

Creación de un repositorio de imágenes iso

Para instalar de cero un sistema operativo invitado hay dos opciones: desde la unidad de CD/DVD del servidor XenServer o desde una imagen iso de ese sistema operativo copiada en disco. XenServer ofrece un tipo especial de SR, que es el denominado “Windows File Sharing (CIFS)”. Este SR se crea en una carpeta compartida de un equipo Windows. Posteriormente, el servidor XenServer conecta con una imagen iso de esa carpeta compartida y la integra como una unidad CD/DVD en la máquina virtual que debe utilizarla.

Veremos como crear un repositorio de imágenes iso en el equipo del administrador de sistemas, l023wst01, que tiene como sistema operativo un Windows 8.1.

1.- Se crea una carpeta y se comparte para un usuario cuyas credenciales se necesitarán más adelante. En este caso, se crea la  carpeta C:ISOS en l023wst01 y se comparte con permisos de lectura al usuario “gdrivia” del dominio l023.local. Se copian a la carpeta creada las imágenes iso que se quieran utilizar.

2.- En XenCenter se selecciona en el panel izquierdo el resource pool (o un servidor en caso de que no se tenga implementado un resource pool) y con el botón izquierdo del ratón se elige “New SR…”. Esto abre el asistente “New Storage Repository”.

3.- Ventana “Choose the type of new storage”: se elige “ISO Library” –> “Windows File Sharing (CIFS). Se hace clic en “Next”.

4.- Ventana “What do you want to call this Storage Repository”: en nuestro caso se deja el nombre que XenCenter asigna por defecto (“CIFS ISO library”). Clic en “Next”.

5.- Ventana “Enter a path for your CIFS storage”: se escribe la ruta de la carpeta compartida y las credenciales de un usuario con permiso de lectura sobre ella.

 

En nuestro caso:

   Share Name: “\l023wst01.l023.localisos”

   Use different user name: <marcado>

   User name: “gdrivia”

   Password: <La del usuario>

Al hacer clic en “Finish” se realizará la configuración y ya estará disponible el repositorio de imágenes iso para todos los hosts del resource pool.

Administración del almacenamiento local

   Como se puede ver más arriba, en la sección “Creación del shared storage en el resource pool”, en la primera ventana del asistente “New Storage Repository”, ninguno de los tipos de almacenamiento nos permite crear un storage repository con discos internos del servidor. Este tipo se debe crear con el comando xe sr-create. Pero para presentar los discos internos a xe sr-create, primero se debe trabajar con comandos de almacenamiento del sistema linux subyacente. Si se quiere añadir discos nuevos locales al sistema XenServer, se puede elegir entre un sistema de ficheros ext3 o, como recomienda Citrix, LVM. Este último es más flexible en el caso de tener varios discos, ya que permite gestionar unidades de volúmenes lógicos.

 

Configuración de varios discos locales nuevos en un servidor XenServer

   Se han adquirido dos discos scsi de 100GB cada uno para utilizar en el servidor de test l023xse04. Se quiere crear un espacio de almacenamiento de 200 GB con ambos discos haciendo uso de Logical Volume Manager. Tras conectar los discos al servidor, se procede a la configuración del nuevo storage repository a través de una conexión ssh:

1.- Se examinan los discos disponibles con fdisk:

[root@l023xse04 ~]# fdisk -l

WARNING: GPT (GUID Partition Table) detected on ‘/dev/sda’! The util fdisk doesn’t support GPT. Use GNU Parted.

Disk /dev/sda: 42.9 GB, 42949672960 bytes
256 heads, 63 sectors/track, 5201 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        5202    41943039+  ee  EFI GPT

Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn’t contain a valid partition table

Disk /dev/sdc: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn’t contain a valid partition table

Se ve que los nuevos discos están asociados a los dispositivos /dev/sdb y /dev/sdc.

 

2.- Se crean particiones primarias /dev/sdb1 y /dev/sdc1 respectivamente en los discos:

[root@l023xse04 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 13054.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-13054, default 13054):
Using default value 13054

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Se procede de manera análoga con /dev/sdc.

 

3.- Se obtiene el uuid del host l023xse03:

[root@l023xse04 ~]# xe host-list
uuid ( RO)                : f45a7de6-3abc-4247-9faa-08069ffec095
name-label ( RW): l023xse04
name-description ( RW): Default install of XenServer

 

4.- Se crea el SR “Local Storage 02” con el primer disco /dev/sdb, de tipo lvm:

[root@l023xse04 ~]# xe sr-create host-uuid=f45a7de6-3abc-4247-9faa-08069ffec095 content-type=user name-label=”Local Storage 02″ shared=false device-config:device=/dev/sdb type=lvm
a80f2e47-6fe9-1e30-1f61-848860555bed

 

5.- Se crea un volumen físico en con la partición /dev/sdc1 del disco restante:

[root@l023xse04 ~]# pvcreate /dev/sdc1
Physical volume “/dev/sdc1” successfully created

6.- Se obtiene el nombre del Volume Group asociado al SR creado anteriormente (el de 100GB):

[root@l023xse04 ~]# vgdisplay
— Volume group —
VG Name               VG_XenStorage-a80f2e47-6fe9-1e30-1f61-848860555bed
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               0
Max PV                0
Cur PV                1
Act PV                1
VG Size               99.99 GB
PE Size               4.00 MB
Total PE              25597
Alloc PE / Size       1 / 4.00 MB
Free  PE / Size       25596 / 99.98 GB
VG UUID               t0aEaq-r9cm-3QGt-WHwn-NR1D-Bwrb-k61hRb

  — Volume group —
VG Name               XSLocalEXT-138424fa-a7a2-8d24-7761-8b7c1cd0e9bf
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  2
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                1
Open LV               1
Max PV                0
Cur PV                1
Act PV                1
VG Size               31.99 GB
PE Size               4.00 MB
Total PE              8189
Alloc PE / Size       8189 / 31.99 GB
Free  PE / Size       0 / 0
VG UUID               X9Obh6-3o8K-3eJ0-Dy1P-LStA-1rDF-BzH7Il

 

7.- Se extiende el Volume Group con el volumen físico /dev/sc1:

[root@l023xse04 ~]# vgextend VG_XenStorage-a80f2e47-6fe9-1e30-1f61-848860555bed /dev/sdc1
Volume group “VG_XenStorage-a80f2e47-6fe9-1e30-1f61-848860555bed” successfully extended

8.- Se hace un escaneo del storage repository creado para que reconozca todo el espacio. Para ello primero debemos averiguar su uuid:

[root@l023xse04 ~]# xe sr-list name-label=”Local Storage 02″ params=uuid
uuid ( RO)    : a80f2e47-6fe9-1e30-1f61-848860555bed

[root@l023xse04 ~]# xe sr-scan uuid=a80f2e47-6fe9-1e30-1f61-848860555bed

   Con esto ya tendremos disponible el nuevo SR en el servidor. Podemos ahora obtener algunas de sus propiedades:

[root@l023xse04 ~]# xe sr-list name-label=”Local Storage 02″ params=name-label,virtual-allocation,physical-utilisation,physical-size,type,shared
name-label ( RW)              : Local Storage 02
virtual-allocation ( RO): 0
physical-utilisation ( RO): 4194304
physical-size ( RO): 214731587584
type ( RO): lvm
shared ( RW): false

    Así podemos comprobar, haciendo una analogía con los valores obtenidos para el shared storage iscsi configurado en más arriba (para el que obtuvimos las propiedades con este mismo comando) en la sección “Creación de un shared storage iscsi”, que es de tipo lvm, y que no es compartido.

MA icono siguiente Siguiente: Lección 7 – XenServer: Gestión de redes – Networking