OpenSolaris: Virtualizando con xVM (I)

OpenSolaris, Virtualizacion Dejar un comentario

En esta entrada vamos a hablar sobre una de las opciones de virtualización que podemos encontrar en OpenSolaris, se trata de xVM, un hypervisor basado en Xen, que nos permite arrancar varias instancias de distintos SO, como Linux, Windows y Solaris, en una máquina con Solaris Express a partir de la build 75.

  • Permite ejecutar Windows, Linux y Solaris como SO invitados.
  • Solo corre en sistemas x86/x64.
  • Permite dos modos de virtualización, HVM y PVM.
  • Migración de “invitados” en caliente.
  • Soporte para Intel VT-x y AMD-V.

Por qué utilizar xVM

En el siguiente esquema, podemos ver los cuatro nichos, que Solaris tiene para la gestión de los recursos.

imagen1.png

No podemos olvidar que las distintas técnicas de virtualización, tienen como fin, no el que podamos disfrutar en una máquina de un SO Linux, un Windows y varias versiones distintas de Solaris, aunque aparentemente suena tentador. El objetivo principal de utilizar tecnología de virtualización consiste en mejorar la forma en la que se hace uso de los recursos disponibles en un sistema.

Cualquier persona que haya administrado un número considerable de máquinas, conoce perfectamente que el uso de CPU y memoria está muy por debajo de las posibilidades reales de la propia máquina, es normal que la mayoría de las máquinas se encuentren entre un 30% y un 60%, en entornos de desarrollo estos valores decrecen considerablemente. Si realizamos el ejercicio de calcular los recursos utilizados normalmente en nuestras máquinas y sumamos estos resultados, nos llevaremos una grata sorpresa, LOS RECURSOS DE LOS QUE DISPONEMOS ESTÁN MUY POR ENCIMA DEL USO REAL QUE SE HACE DE LOS MISMO, os recomiendo que esta información nunca llegue al departamento financiero, porque el año siguiente recibiréis una desagradable sorpresa, al ver reducido el presupuesto de vuestra área. Bromas a parte, el párrafo anterior intentaba reflejar una hecho, que según los casos, puede distanciarse mas o menos de la realidad.

El objetivo de la virtualización es aprovechar de la mejor manera posible los recursos disponibles en nuestros sistemas. Sin entrar en detalles, los recursos mas preciados en un sistema son:

  • Tiempo de ejecución de CPU
  • Uso de la memoria
  • Entrada/Salida

Particiones físicas.

En una máquina realizamos una serie de particiones a nivel físico de forma que se reparten los recursos disponibles entre los distintos SO que van a ser ejecutados en la máquina. A todos los efectos disponemos de varias máquinas, esa es la visión que tiene el SO.

Máquinas virtuales.

En una máquina podemos tener corriendo varias máquinas virtuales con distintos SO. En este caso los recursos son asignados mediante la utilización de un Hypervisor que se encarga de gestionar el acceso al HW, los distintos SO tienen asignados unos recursos que son controlados por el Hypervisor.

Virtualización de SO.

La virtualicación de SO, consiste en que un SO anfitrión ejecuta varias instancias del mismo SO, asignando y gestionando los recursos del sistema. La impresión es de disponer varios sistemas con el mismo SO.

Control de recursos.

Solaris dispone de una serie de herramientas para controlar los recursos del sistema. CPU, memoria, tiempo de CPU, de esta forma los recursos no son asignados a un SO invitado, sino que se asigna mediante políticas a los procesos o grupos de procesos que están ejecutándose en el sistema.

xVM se encuentra dentro del nicho de máquinas virtuales y sería para x86 lo mismo que LDoms para SPARC.

Arquitectura

arquitectura_xvm.jpg
La arquitectura de un sistema con xVM consiste en:

  • Un hypervisor que controla el acceso a los recursos del sistema y sirve como capa de abstracción, entre los SO huéspedes y el HW.
  • Un dominio principal, denominado dom0, que se encarga de gestionar los recursos y los SO huéspedes.
  • Dominios de usuario, denominados domU, estos dominios son los distintos SO huéspedes que se ejecutarán en la máquina. Como SO huéspedes podemos tener:
    • PVM (paravirtualización), todos aquellos SO cuyo kernel tenga soporte para Xen.
    • HVM (virtualización total), el SO no necesita que su kernel disponga de soporte para Xen, la única condición es que los procesadores de nuestro sistema tengan, en caso de Intel® que tenga soporte para Virtualization Technology y en AMD®, AMD-V.

Red

xen_network.png

Los distintos domU acceden a dispositivos virtuales, que están asociado a dispositivos virtuales en el dom0 que a su vez se encuentran asociados a un dispositivo físico, como en este caso una interfaz de red bge0.

Dispositivos de bloque

Un dominio, puede ser bien el dominio de control dom0, bien cualquiera de los dominios de usuarios domU, pueden exportar un dispositivo de bloques, que puede ser a su vez, un dispositivo físico, como un disco o bien puede ser un fichero del FS, el cual es exportado al domU y éste la visión que tendrá será la de que está accediendo a un dispositivo de bloques.

  • Dispositivo físico
    disk = [‘phy:dispositivo_dom0, disp_domU, rw’]
  • Fichero
    disk = [‘file:file_dom0, disp_domU, rw’]

¿Tiene nuestro sistema soporte para xVM?

xVM esta disponible desde la build 75 de Solaris Express. Para comprobar que tenemos instalado en nuestra maquina xVM, podemos chequear el directorio /boot/

bash-3.2# cd /boot/
bash-3.2# ls
acpi               grub               solaris            x86.miniroot-safe  xen.gz
amd64              platform           solaris.xpm        xen-syms
bash-3.2#

En la salida anterior podemos comprobar que existe un kernel con soporte para Xen, el fichero es xen.gz. También podemos chequear el estado de los servicios en SMF.

bash-3.2# svcs | grep xvm
disabled       23:36:20 svc:/system/xvm/store:default
disabled       23:36:20 svc:/system/xvm/domains:default
disabled       23:36:21 svc:/system/xvm/console:default
disabled       23:36:22 svc:/system/xvm/xend:default
bash-3.2#

Los servicios de xVM

xVM cuenta con 4 servicios en el sistema de arranque SMF, estos 4 servicios deben estar habilitados para que podamos trabajar con xVM.

  • svc:/system/xvm/store:default, controla la configuración de los distintos dominios creados en el sistema.
  • svc:/system/xvm/xend:default, gestiona al demonio que controla todos los dominios
  • svc:/system/xvm/console:default, se encarga de controlar las consolas de los dominios.
  • svc:/system/xvm/domains:default, se encarga de la parada/arranque de los dominios durante la parada/arranque del sistema.

GRUB para xVM

En el apartado anterior hemos comprobado que nuestro sistema puede correr con xVM, el siguiente paso consistes en arrancar el kernel con soporte para Xen, para ello, vamos añadir a GRUB las siguientes líneas:

bash-3.2# cat /boot/grub/menu.lst  

...  

#--------------------- xVM 64bits--------------------
title Solaris xVM
kernel$ /boot/$ISADIR/xen.gz
module$ /platform/i86xpv/kernel/$ISADIR/unix /platform/i86xpv/kernel/$ISADIR/unix
module$ /platform/i86pc/$ISADIR/boot_archive
#----------------------------------------------------  

#--------------------- xVM 32bits--------------------
title Solaris xVM 32bits
kernel$ /boot/xen.gz
module$ /platform/i86xpv/kernel/unix /platform/i86xpv/kernel/unix
module$ /platform/i86pc/boot_archive
#----------------------------------------------------

Hemos añadido 2 entradas en GRUB, una para que arranque xVM en 64bits y otra en 32bits. La razón principal para añadir una entra para 32bits, es que si el dom0 esta en 64bits,los SO de los distintos domU también deben correr en 64bits y si el dom0 esta corriendo a 32bits, todos los domU deben correr a 32bits.

Herramientas para xVM

La gestión de los distintos domU que vayamos a tener en nuestro sistema la podemos realizar con 4 herramientas:

  • virt-install, consiste en un script que nos ayuda en el proceso de instalación de un nuevo domU, podemos ejecutarlo, pasando una serie de parámetros o bien ejecutarlo sin ningún parámetro e iremos contestando a una serie de preguntas.
  • virsh, es una shell con la que podemos gestionar los distintos domU que tengamos creados en nuestro sistema.
  • xm, este comando nos permite realizar la gestión de los domU desde la linea de comando, mediante la utilización de una serie de parámetros.
  • virt-manager, es un sencillo GUI que nos ayuda con la gestión de los domU.

Directorios

Entre los directorios utilizados por xVM, vamos a destacar los siguientes, por que son donde se almacenan los ficheros que vamos a necesitar cuando comencemos a trabajar con xVM:

  • /var/log/xen, se utiliza para almacenar los logs, es importante echar un vistazo a este directorio, ya que los errores que devuelven los distintos comandos no son demasiado descriptivos.
  • /var/lib/xend/domains, cada dominio que creemos disponde de un directorio, identificado con el ID del dominio. Existe un directorio por cada dominio.
  • /var/xen/dump, en este directorio se almacenan, por defecto, los ficheros cores que se crean cuando los solicitamos con el subcomando dump-core de xm.

Creando un domU con Linux Centos

La creación de un nuevo domU, es un proceso bastante sencillo, la parte más complicada está en la propia instalación del SO que se realizará sobre el nuevo domU. Para el ejemplo, vamos a utilizar una imagen ISO del DVD de instalación de Centos 5.1, esta es la imagen de uno de los mirror oficiales.

Vamos a realizar la instalación utilizando el comando virt-install, al que pasaremos los siguientes parámetros:

  • -n centos_x64_2, nombre para el nuevo domU
  • -r 512, cantidad de memoria asignada al nuevo dominio, en MB
  • -f /export/home/xen/CentOS-5.1/centos_51_x64_2.img, fichero de imagen se se utilizará como disco root del nuevo dominio.
  • -s 5, tamaño en GB de disco.
  • –nographics, no queremos configurar la consola gráfica para el nuevo dominio.
  • –paravirt, vamos a utilizar la paravirtualización
  • –os-type=linux, el SO que vamos a instalar en el domU es de tipo linux.
  • -l /export/home/root/Desktop/CentOS-5.1-x86_64-bin-DVD.iso, es el fichero con la imagen de un SO que utilizaremos para instalar.
(huelva@dom0)# virt-install -n centos_x64_2 -r 512 -f /export/home/xen/CentOS-5.1/centos_51_x64_2.img
-s 5 --nographics --paravirt --os-type=linux -l /export/home/root/Desktop/CentOS-5.1-x86_64-bin-DVD.iso  

Starting install...
Creating storage file...  100% |=========================| 5.0 GB    00:00
Creating domain...                                                 0 B 00:06
Bootdata ok (command line is  method=/export/home/root/Desktop/CentOS-5.1-x86_64-bin-DVD.iso)
Linux version 2.6.18-53.el5xen (mockbuild@builder6.centos.org) (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Mon Nov 12 02:46:57 EST 2007
BIOS-provided physical RAM map:
 Xen: 0000000000000000 - 0000000020800000 (usable)
No mptable found.
Built 1 zonelists.  Total pages: 133120
Kernel command line:  method=/export/home/root/Desktop/CentOS-5.1-x86_64-bin-DVD.iso
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 32768 bytes)
Xen reported: 2194.498 MHz processor.
Console: colour dummy device 80x25
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
Software IO TLB disabled
Memory: 500480k/532480k available (2357k kernel code, 23224k reserved, 1326k data, 172k init)
Calibrating delay using timer specific routine.. 5489.47 BogoMIPS (lpj=10978940)
Security Framework v1.0.0 initialized
SELinux:  Initializing.
....  

Welcome to CentOS  

+---------+ Choose a Language +---------+
                   |                                       |
                   | What language would you like to use   |
                   | during the installation process?      |
                   |                                       |
                   |       Catalan                ^        |
                   |       Chinese(Simplified)    :        |
                   |       Chinese(Traditional)   #        |
                   |       Croatian               :        |
                   |       Czech                  :        |
                   |       Danish                 :        |
                   |       Dutch                  :        |
                   |       English                v        |
                   |                                       |
                   |                +----+                 |
                   |                | OK |                 |
                   |                +----+                 |
                   |                                       |
                   |                                       |
                   +---------------------------------------+  

/ between elements  |  selects |  next screen

Para el ejemplo utilizaremos la opción de instalar mediante NFS, para ellos utilizaremos como servidor NFS nuestro dom0 y compartiremos el directorio donde se encuentra la ISO de Centos.

(huelva@dom0)# share /export/home/root/Desktop/
(huelva@dom0)# share
-               /export/home/root/Desktop   rw   ""
(huelva@dom0)#

El siguiente paso consiste en configurar una IP cuando el instalador de Centos nos lo solicite, también nos pedirá que le digamos cual es la IP del servidor de NFS y el directorio que dicho servidor está compartiendo.

Welcome to CentOS  

+----------------------+ NFS Setup +----------------------+
          |                                                         |
          | Please enter the following information:                 |
          |                                                         |
          |     o the name or IP number of your NFS server          |
          |     o the directory on that server containing           |
          |       CentOS for your architecture                      |
          |                                                         |
          |       NFS server name:  192.168.0.192___________        |
          |       CentOS directory: port/home/root/Desktop/_        |
          |                                                         |
          |          +----+                     +------+            |
          |          | OK |                     | Back |            |
          |          +----+                     +------+            |
          |                                                         |
          |                                                         |
          +---------------------------------------------------------+
         mo  

/ between elements  |  selects |  next screen  

....

Una vez terminado el proceso de instalación, podemos arrancar el nuevo domU en el que hemos instalado nuestro Centos, con el comando xm start arrancaremos el dominio centos_x64.

(huelva@dom0)# xm start centos_x64
(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    389.4
centos_x64                                30   720     2     -b----     39.0
(huelva@dom0)#

Nuestro Centos está arrancando, podemos conectarnos a la consola del nuevo dominio, utilizando el comando xm console.

bash-3.2# xm console centos_x64
rtc: IRQ 8 is not free.
rtc: IRQ 8 is not free.
i8042.c: No controller found.
Red Hat nash version 5.1.19.6 starting
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
  2 logical volume(s) in volume group "VolGroup00" now active
                Welcome to  CentOS release 5 (Final)
                Press 'I' to enter interactive startup.
  Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Setting clock  (utc): Wed Mar 12 01:09:11 CET 2008 [  OK  ]
Starting udev: [  OK  ]
Loading default keymap (us): [  OK  ]
Setting hostname trantor:  [  OK  ]
Setting up Logical Volume Management:   2 logical volume(s) in volume group "VolGroup00" now active [  OK  ]
Checking filesystems
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/VolGroup00/LogVol00
/dev/VolGroup00/LogVol00: clean, 108551/1007872 files, 735200/1007616 blocks
[/sbin/fsck.ext3 (1) -- /boot] fsck.ext3 -a /dev/xvda1
/boot: clean, 36/26104 files, 16420/104388 blocks
[  OK  ]
Remounting root filesystem in read-write mode:  [  OK  ]
Mounting local filesystems:  [  OK  ]
Enabling local filesystem quotas:  [  OK  ]
Enabling /etc/fstab swaps:  [  OK  ]
INIT: Entering runlevel: 3
Entering non-interactive startup
Applying Intel CPU microcode update: [FAILED]
Starting monitoring for VG VolGroup00:   2 logical volume(s) in volume group "VolGroup00" monitored [  OK  ]
Starting background readahead: [  OK  ]
Checking for hardware changes [  OK  ]
Applying ip6tables firewall rules: [  OK  ]
...
Starting sm-client: [  OK  ]
Starting console mouse services: [  OK  ]
Starting crond: [  OK  ]
Starting xfs: [  OK  ]
Starting anacron: [  OK  ]
Starting atd: [  OK  ]
Starting yum-updatesd: [  OK  ]
Starting Avahi daemon... [  OK  ]
Starting HAL daemon: [  OK  ]
Starting smartd: [  OK  ]
CentOS release 5 (Final)  

Kernel 2.6.18-53.el5xen on an x86_64
trantor login:

La siguiente imagen muestra como podemos exportar el display de nuestra maquina virtual centos_x64 para trabajar con el entorno KDE, desde una ventana de Xnest

centos_x.png

Parando un domU

Para parar un domU, podemos utilizar varios subcomandos del comando xm:

  • xm destroy, esto es parecido a meter un botonazo al domU.
    (huelva@dom0)# xm list
    Name                                      ID   Mem VCPUs      State   Time(s)
    Domain-0                                   0   774     2     r-----    389.4
    centos_x64                                30   720     2     -b----     39.0
    (huelva@dom0)#
    (huelva@dom0)# xm destroy centos_x64
    (huelva@dom0)# xm list
    Name                                      ID   Mem VCPUs      State   Time(s)
    Domain-0                                   0   774     2     r-----    391.7
    centos_x64                                     512     1                 0.0
    (huelva@dom0)#
  • xm reboot, provoca un reboot en el domU.

Pausando un domU

Tenemos dos formas de suspender la ejecución de un domU y volver a ejecutarla cuando nosotros deseemos:

  • xm pause, provoca una pausa en la ejecución del domU. Para que el dominio vuelva a ejecutarse utilizaremos el comando xm unpause.
    (huelva@dom0)# xm pause centos_x64
    (huelva@dom0)# xm list
    Name                                      ID   Mem VCPUs      State   Time(s)
    Domain-0                                   0  1485     2     r-----    256.9
    centos_x64                                 6   512     1     --p---     40.7
    solaris_11_x64                                 750     1                64.8
    (huelva@dom0)#
  • xm suspend, en este caso se provoca una suspensión del dominio, se almacena en disco el estado de ejecución del dominio y se para, de echo podriamos volver a ejecutar el dominio, bien con el comando xm resume o bien volviendo a arrancarlo con el comando xm start, es este caso arrancaría como si hubiéramos dado un botonazo al dominio.
    (huelva@dom0)# xm list
    Name                                      ID   Mem VCPUs      State   Time(s)
    Domain-0                                   0  1479     2     r-----    366.0
    centos_x64                                 8   511     1     -b----      0.1
    solaris_11_x64                                 750     1                64.8
    (huelva@dom0)#
    (huelva@dom0)# xm suspend centos_x64
    (huelva@dom0)# xm list
    Name                                      ID   Mem VCPUs      State   Time(s)
    Domain-0                                   0  1479     2     r-----    374.7
    centos_x64                                       1     1                 0.1
    solaris_11_x64                                 750     1                64.8

    Como podemos ver en el ejemplo, al suspender un dominio no tiene estado en la columna state.

Puntos de control

Tenemos la posibilidad de almacenar en un fichero, la ejecución de un dominio en un determinado instante, esto nos permite crear puntos de control, para posteriormente recuperarlos en caso necesario.

(huelva@dom0)# xm save centos_x64 /var/snap/centos_x64.save_01;xm restore /var/snap/centos_x64.save_01
(huelva@dom0)#

Con la línea anterior hemos creado un fichero con la imagen de la ejecución del dominio centos_x64 en un momento determinado, justo después hemos utilizado el comando xm restore para continuar la ejecución. El tiempo que el dominio ha estado parado correspondo con el tiempo que hemos tardado en almacenar en disco el fichero. Si no ejecutamos el comando xm restore el dominio estará offline.

Borrando un domU

Para borrar un domU, necesitamos que primero esté parado y posteriormente podemos utilizar el comando xm delete :

(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    391.7
centos_x64                                     512     1                 0.0
(huelva@dom0)#
(huelva@dom0)# xm delete centos_x64
(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    392.6
(huelva@dom0)#

El domU centos_x64 ha sido eliminado, pero el fichero que hemos utilizado como disco root continua en su directorio original, por lo que podemos utilizarlo para otra prueba. El comando xm delete solo elimina las configuraciones del domU que utiliza xVM.

Asignando CPU a un domU

Al crear el domU se le asigna un número de CPUs determinado, con el comando xm podemos cambiar, posteriormente, el número de CPUs asignados a un domU.

(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    389.4
centos_x64                                30   512     1     -b----     39.0
(huelva@dom0)# xm vcpu-set centos_x64   2
(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    389.4
centos_x64                                30   512     2     -b----     39.0

Si modificamos el número de CPUs, debemos reiniciar el domU para que el cambio tenga efecto.

[trantor@domU ~]# init 6
...
[trantor@domU ~]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Duo CPU     E4500  @ 2.20GHz
stepping        : 13
cpu MHz         : 2194.500
cache size      : 2048 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush dts acpi mmx fxsr
sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl est tm2 cx16 xtpr lahf_lm
bogomips        : 5489.33
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Duo CPU     E4500  @ 2.20GHz
stepping        : 13
cpu MHz         : 2194.500
cache size      : 2048 KB
physical id     : 1
siblings        : 1
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush dts acpi mmx fxsr
sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl est tm2 cx16 xtpr lahf_lm
bogomips        : 5489.33
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
[trantor@domU ~]

Asignando memoria a un domU

Al crear un nuevo domU se le asigna una cantidad de memoria, con el comando xm mem-set y xm mem-max podemos modificar la cantidad de memoria asignada a un domU.

(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    389.4
centos_x64                                30   512     1     -b----     39.0
(huelva@dom0)# xm mem-set centos_x64 720
(huelva@dom0)# xm mem-max centos_x64 720
(huelva@dom0)# xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   774     2     r-----    389.4
centos_x64                                30   720     2     -b----     39.0
(huelva@dom0)#

Al igual que ocurre con los cambios en el número de CPUs, cuando realizamos cambios en la cantidad de memoria asignada a un domU, debemos reiniciar el domU para que los cambios tengan efecto.

[trantor@domU ~] init 6
...
[trantor@domU ~]# cat /proc/meminfo
MemTotal:       737280 kB
MemFree:        462248 kB
Buffers:         12920 kB
Cached:         152432 kB
SwapCached:          0 kB
Active:          70148 kB
Inactive:       144184 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       737280 kB
LowFree:        462248 kB
SwapTotal:     1081336 kB
SwapFree:      1081336 kB
Dirty:             764 kB
Writeback:           0 kB
AnonPages:       49060 kB
Mapped:           9012 kB
Slab:            18428 kB
PageTables:       2996 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   1449976 kB
Committed_AS:    94868 kB
VmallocTotal: 34359738367 kB
VmallocUsed:      1160 kB
VmallocChunk: 34359736511 kB

Asignando interfaz de red un domU

Podemos añadir interfaces de red a un domU ya creado utilizando el comando xm network-attach, este comando acepta una serie de parámetros, que nos permitirán definir las características del nuevo interfaz.

(huelva@dom0)# xm network-attach centos_x64

Si vemos el fichero /var/log/messages del domU.

[trantor@domU]# tail -f /var/log/messages | grep device
trantor kernel: netfront: device eth1 has flipping receive path.

Vemos como el dispositivo eth1 ha sido añadido al sistema, al contrario de lo que ocurre con los cambios en CPUs y memoria, en este caso no necesitamos reinicial el domU.

Asignando un nuevo disco a un domU

Vamos a ver cómo podemos asignar un nuevo disco a un domU que está corriendo. Lo primero que tenemos que hacer es decidir, qué vamos a utilizar como almacenamiento, para nuestro ejemplo utilizaremos un fichero de 50MB, que crearemos con el comando dd.

(huelva@dom0)#  dd if=/dev/zero of=/var/prueba/discos1.img count=100000
100000+0 records in
100000+0 records out
(huelva@dom0)#

Una vez creado el fichero, lo asignamos al dominio centos_x64.

(huelva@dom0)# xm block-attach centos_x64 file:/var/prueba/discos1.img hdd1 w
(huelva@dom0)#

Le hemos dado el nombre hdd1 al nuevo dispositivo asignado al domU. Si antes de asignar el dispositivo, tenemos una sesión abierta con la consola del domU centos_x64, veremos como el sistema registra el nuevo dispositivo y aparece un mensaje parecido a “Registering block device major 22″, este mensaje dependerá el SO que tenemos instalado en el domU. Con el comando ls podemos comprobar que en el directorio /dev/ del domU a aparecido el dispositivo hdd1, ejecutamos el comando fdisk sobre el nuevo disco.

[trantor@domU ]# Registering block device major 22
[trantor@domU ]# ls
console  loop3     parport3  ram4     tty    tty22  tty37  tty51  tty9
core     loop4     port      ram5     tty0   tty23  tty38  tty52  ttyS0
cpu      loop5     ppp       ram6     tty1   tty24  tty39  tty53  ttyS1
disk     loop6     ptmx      ram7     tty10  tty25  tty4   tty54  ttyS2
evtchn   loop7     pts       ram8     tty11  tty26  tty40  tty55  ttyS3
fd       MAKEDEV   ram       ram9     tty12  tty27  tty41  tty56  urandom
full     mapper    ram0      ramdisk  tty13  tty28  tty42  tty57  vcs
gpmctl   md0       ram1      random   tty14  tty29  tty43  tty58  vcsa
hdd1     mem       ram10     rawctl   tty15  tty3   tty44  tty59  VolGroup00
initctl  net       ram11     root     tty16  tty30  tty45  tty6   X0R
input    null      ram12     rtc      tty17  tty31  tty46  tty60  xvc0
kmsg     nvram     ram13     shm      tty18  tty32  tty47  tty61  xvda
log      oldmem    ram14     stderr   tty19  tty33  tty48  tty62  xvda1
loop0    parport0  ram15     stdin    tty2   tty34  tty49  tty63  xvda2
loop1    parport1  ram2      stdout   tty20  tty35  tty5   tty7   xvdb
loop2    parport2  ram3      systty   tty21  tty36  tty50  tty8   zero
[trantor@domU ]# fdisk /dev/hdd1
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.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/hdd1: 51 MB, 51200000 bytes
255 heads, 63 sectors/track, 6 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
Command (m for help):

Creando un domU con Solaris Express

Vamos a realizar una instalación básica de un Solaris en un nuevo domU, para la instalación utilizaremos la imagen ISO del primer disco. Utilizaremos el comando virt-install y utilizaremos los siguientes parámetros:

  • -n solaris_11_x64, nombre para el nuevo domU
  • -r 512, cantidad de memoria asignada al nuevo dominio, en MB
  • -f /export/home/xen/Solaris_11/solaris_11_x64.img, fichero de imagen se se utilizará como disco root del nuevo dominio.
  • -s 5, tamaño en GB de disco.
  • –nographics, no queremos configurar la consola gráfica para el nuevo dominio.
  • –paravirt, vamos a utilizar la paravirtualización
  • –os-type=solaris, el SO que vamos a instalar en el domU es de tipo linux.
  • -l /export/home/IMAGES/Solaris_11_x86_1.iso, es el fichero con la imagen de un SO que utilizaremos para instalar.
bash-3.2#  virt-install -n solaris_11_x64 -r 512 -f /export/home/xen/Solaris_11/solaris_11_x64.img  -s 5 --nographics
--paravirt --os-type=solaris  -l /export/home/IMAGES/Solaris_11_x86_1.iso  

Starting install...
Creating storage file...  100% |=========================| 5.0 GB    00:00
Creating domain...                                                 0 B 00:07
v3.0.4-1-xvm chgset 'Mon Nov 12 23:09:42 2007 -0800 13228:ed897008a4c9'
SunOS Release 5.11 Version snv_78 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring /dev
Solaris Interactive Text (Console session)
Using install cd in /dev/dsk/c0d1p0
Using RPC Bootparams for network configuration information.
Attempting to configure interface xnf0...
Skipped interface xnf0
Reading ZFS config: done.
Setting up Java. Please wait...

Y tanto que esperé, de aquí no pasó la instalación, tuve que subir a 750MB la memoria asignada para que la instalación pudiera continuar.

bash-3.2# virt-install -n solaris_11_x64 -r 750 -f /export/home/xen/Solaris_11/solaris_11_x64.img  -s 5
--nographics --paravirt --os-type=solaris  -l /export/home/IMAGES/Solaris_11_x86_1.iso  

Starting install...
Creating domain...                                                 0 B 00:06
v3.0.4-1-xvm chgset 'Mon Nov 12 23:09:42 2007 -0800 13228:ed897008a4c9'
SunOS Release 5.11 Version snv_78 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Configuring /dev
Solaris Interactive Text (Console session)
Using install cd in /dev/dsk/c0d1p0
Using RPC Bootparams for network configuration information.
Attempting to configure interface xnf0...
Skipped interface xnf0
Reading ZFS config: done.
Setting up Java. Please wait...
Beginning system identification...
Searching for configuration file(s)...
Search complete.
Discovering additional network configuration...  

Select a Language  

   1. English
   2. French
   3. German
   4. Italian
   5. Japanese
   6. Korean
   7. Simplified Chinese
   8. Spanish
   9. Swedish
  10. Traditional Chinese  

Please make a choice (1 - 10), or press h or ? for help:  

- The Solaris Installation Program ---------------------------------------------  

  The Solaris installation program is divided into a series of short sections
  where you'll be prompted to provide information for the installation. At
  the end of each section, you'll be able to change the selections you've
  made before continuing.  

  About navigation...
        - The mouse cannot be used
        - If your keyboard does not have function keys, or they do not
          respond, press ESC; the legend at the bottom of the screen
          will change to show the ESC keys to use for navigation.  

--------------------------------------------------------------------------------
    F2_Continue    F6_Help  

- DHCP for xnf0 ----------------------------------------------------------------  

  Specify whether or not this network interface should use DHCP to configure
  itself.  Choose Yes if DHCP is to be used, or No if the network interface is
  to be configured manually.  

  NOTE: DHCP support will not be enabled, if selected, until after the system
  reboots.  

      Use DHCP for xnf0
      -----------------
      [ ] Yes
      [X] No  

--------------------------------------------------------------------------------
    Esc-2_Continue    Esc-6_Help  

- Confirm Information for xnf0 -------------------------------------------------  

  > Confirm the following information.  If it is correct, press F2;
    to change any information, press F4.  

                  Networked: Yes
                   Use DHCP: No
                  Host name: mordor
                 IP address: 192.168.0.190
    System part of a subnet: Yes
                    Netmask: 255.255.255.0
                Enable IPv6: No
              Default Route: Specify one
          Router IP Address: 192.168.0.1  

--------------------------------------------------------------------------------
    Esc-2_Continue    Esc-4_Change    Esc-6_Help  

- Time Zone --------------------------------------------------------------------  

  On this screen you must specify your default time zone.  You can specify a
  time zone in three ways:  select one of the continents or oceans from the
  list, select other - offset from GMT, or other - specify time zone file.  

  > To make a selection, use the arrow keys to highlight the option and
    press Return to mark it [X].  

      Continents and Oceans
      ----------------------------------
  -   [ ] Africa
  ¦   [ ] Americas
  ¦   [ ] Antarctica
  ¦   [ ] Arctic Ocean
  ¦   [ ] Asia
  ¦   [ ] Atlantic Ocean
  ¦   [ ] Australia
  ¦   [X] Europe
  v   [ ] Indian Ocean  

--------------------------------------------------------------------------------
    Esc-2_Continue    Esc-6_Help  

- Profile ----------------------------------------------------------------------  

  The information shown below is your profile for installing Solaris software.
  It reflects the choices you've made on previous screens.  

  NOTE:  You must change the BIOS because you have changed the default boot
  device.  

  ============================================================================  

 -              Installation Option: Initial
 ¦                      Boot Device: c0d0
 ¦                  Client Services: None
 ¦
 ¦                          Locales: Spain (ISO8859-1)
 ¦                    System Locale: C ( C )
 ¦
 ¦                         Software: Solaris 11, Core System Support
 ¦
 ¦      File System and Disk Layout: /                   c0d0s0 1134 MB
 v                                   swap                c0d0s1  512 MB  

--------------------------------------------------------------------------------
     Esc-2_Begin Installation    F4_Change    F5_Exit    F6_Help  

Executing JumpStart postinstall phase...  

The begin script log 'begin.log'
        is located in /var/sadm/system/logs after reboot.  

The finish script log 'finish.log'
        is located in /var/sadm/system/logs after reboot.  

   Pausing for 90 seconds at the "Reboot" screen. The wizard will continue to
   the next step unless you select "Pause". Enter 'p' to pause. Enter 'c' to
   continue. [c]
Unable to run Launcher without Java.
The following CDs will not be installed:
Solaris Software 2 for x86 Platforms
Creating ram disk for /a
updating /a/platform/i86pc/boot_archive...this may take a minute
updating /a/platform/i86pc/amd64/boot_archive...this may take a minute
syncing file systems... done
rebooting...  

Guest installation complete... restarting guest.
v3.0.4-1-xvm chgset 'Mon Nov 12 23:09:42 2007 -0800 13228:ed897008a4c9'
SunOS Release 5.11 Version snv_78 64-bit
Copyright 1983-2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: mordor
Configuring devices.
Loading smf(5) service descriptions: 114/114
/dev/rdsk/c0d0s7 is clean
Reading ZFS config: done.  

mordor console login: root
Mar 12 22:36:29 mordor login: ROOT LOGIN /dev/console
Sun Microsystems Inc.   SunOS 5.11      snv_78  October 2007
mordor# uname -a
SunOS mordor 5.11 snv_78 i86pc i386 i86xpv
mordor#   

mordor# df -k
Filesystem            kbytes    used   avail capacity  Mounted on
/dev/dsk/c0d0s0      1125599  595232  474088    56%    /
/devices                   0       0       0     0%    /devices
/dev                       0       0       0     0%    /dev
ctfs                       0       0       0     0%    /system/contract
proc                       0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
swap                 1073356     376 1072980     1%    /etc/svc/volatile
objfs                      0       0       0     0%    /system/object
sharefs                    0       0       0     0%    /etc/dfs/sharetab
/usr/lib/libc/libc_hwcap3.so.1
                     1125599  595232  474088    56%    /lib/libc.so.1
fd                         0       0       0     0%    /dev/fd
swap                 1072980       0 1072980     0%    /tmp
swap                 1072992      12 1072980     1%    /var/run
/dev/dsk/c0d0s7      3494494    3489 3456061     1%    /export/home
mordor#

Conclusión

Hemos realizado una pequeña introducción sobre qué es xVM y cómo podemos comenzar a crear dominios domU, en próximos artículos intentaremos profundizar en distintas cuestiones, como es la configuración de la red, ver como un domU puede exportar dispositivos de bloque, analizar la herramienta virt-manager, así como plantear otros escenarios.

NotaSi tiene alguna pregunta o sugerencia sobre este artículo, por favor, no dude en ponerse en contacto conmigo mediante email en jjmora AT arrakis DOT es

Technorati Tag(s) :

Los comentarios están cerrados.

My name is null, /dev/null
Algunos derechos reservados. Licencia Creative Commons