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.
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

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
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.
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
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.
Nota – Si 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) : xVM OpenSolaris



Algunos derechos reservados. Licencia Creative Commons
Comentarios Recientes
Sobre
Esta plantilla a sido creada con la validacion de CSS y XHTML, por N.Design Studio.Los iconos usados son de Web 2 Mini pack.