Instalando y usando un invitado Xen completamente virtualizado
Además de instalar sistemas invitados paravirtualizados, Xen puede hospedar invitados completamente virtualizados en las computadoras que posean el hardware apropiado. Esto significa que usted puede correr sistemas operativos que no guardan relación entre sí, como es el caso de CentOS 3 o Microsoft Windows.
Este artículo describe cómo usted puede instalar un invitado completamente virtualizado, sin usar virt-manager o su variante de consola virt-install. A menudo, los usuarios necesitan personalizar más allá de las posibilidades que le brindan estas herramientas, así que usualmente es mejor utilizar las herramientas que están debajo. Este artículo usa la herramienta genérica virsh, del paquete libvirt, para la administración de máquinas virtuales.
En nuestro ejemplo veremos una instalación de CentOS 3. Después de esto, algunos posibles cambios a la configuración serán discutidos.
Contents
1. Comprobando el hardware
Para poder instalar un invitado completamente virtualizado, usted necesita un CPU con la extensión VT-X(Intel) o AMD-V(AMD). Usted puede comprobar esto fácilmente si busca el campo banderas (flags) de /proc/cpuinfo para ver si tiene la bandera vmx o svm. Por ejemplo:
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
Algunos sistemas no tienen el soporte para VT-X o AMD-V habilitado por defecto, compruebe la configuración de su BIOS para ver si la extensión de su CPU está habilitada. La información de cpuinfo no nos muestra esto. Aún si el soporte para la virtualización en el BIOS está deshabilitado, la bandera vmx será mostrada.
2. Creando una imagen
El primer paso es crear un imagen que sostenga el disco virtual de domU. Como esto puede ser un fichero vacío, nuestro usual amigo dd puede ser utilizado. En este artículo pondremos la imagen en /srv/xen, aunque la ubicación aprobada semi-oficialmente parece ser /var/lib/xen/imgaes. Si prefiere situar bloques al disco mientras el fichero crece, usted puede crear un fichero con un hueco. El comando siguiente creara un fichero /srv/xen/centos3.img de 4096MB, así los bloques de datos son ubicados relajadamente.
# dd if=/dev/zero of=/srv/xen/centos3.img oflag=direct bs=1M seek=4095 count=1
Si usted desea revertir todo los bloques de datos completamente, puede hacer lo siguiente:
# dd if=/dev/zero of=/srv/xen/centos3.img oflag=direct bs=1M count=4096
Esto evitará los problemas de ubicación de bloque de datos si el volumen que sostiene la imagen se llena.
Si usted está usando SELinux, es importante que compruebe que la imagen tiene el contexto (xen_image_t) de seguridad correcto, de lo contrario el acceso al disco virtual le será denegado al sistema domU. Usted puede comprobar esto con ls:
# ls -Z /srv/xen/mailserver.img -rw-r--r-- root root user_u:object_r:xen_image_t /srv/xen/mailserver.img
Si está teniendo problemas a la hora de ajustar el contexto del fichero, por favor eche un vistazo a la página de los trucos y mañas de Xen. Desactivar SELinux a cualquier precio, como algunos artículos que tratan este tema advierten, es una solución muy pobre. Para calzar la seguridad, es buena idea leer las páginas man semanage(8) y restorecon(8).
3. Instalando el sistema invitado
Para comenzar la instalación, necesitaremos un fichero de configuración que defina al sistema invitado. Puede utilizar el ejemplo siguiente para instalar CentOS 3:
<domain type='xen'> <name>CentOS3</name> <os> <type>hvm</type> <loader>/usr/lib/xen/boot/hvmloader</loader> <boot dev='cdrom'/> </os> <memory>262144</memory> <vcpu>1</vcpu> <on_poweroff>destroy</on_poweroff> <on_reboot>destroy</on_reboot> <on_crash>destroy</on_crash> <features> <acpi/> <apic/> <pae/> </features> <devices> <emulator>/usr/lib/xen/bin/qemu-dm</emulator> <interface type='bridge'> <source bridge='xenbr0'/> <script path='vif-bridge'/> </interface> <disk type='file' device='disk'> <driver name='file'/> <source file='/srv/xen/centos3.img'/> <target dev='hda'/> </disk> <disk type='file' device='cdrom'> <source file='/srv/xen/boot-centos3.iso'/> <target dev='hdc'/> <readonly/> </disk> <graphics type='vnc' port='5900'/> </devices> </domain>
Los siguientes aspectos de la configuración son importantes en este punto:
Debido a que la imagen del disco no ha sido propagada aun, usted tendrá que iniciar desde otro medio. En este ejemplo, nosotros usaremos la imagen iso (la cual es presentada como un CD-ROM al sistema invitado). El dispositivo de inicio por defecto puede ser especificado en el tab boot:
<boot dev='cdrom'/>
La cantidad de memoria del sistema invitado es especificada, en kilobytes, con el tag memory:
<memory>262144</memory>
- Debido a que nosotros no queremos iniciar el invitado con los mismos parámetros después que la instalación haya finalizado, vamos a asegurarnos que la máquina virtual sea destruida después que se reinicie. Haremos lo mismo para los casos que la máquina se bloquee o apague:
<on_poweroff>destroy</on_poweroff> <on_reboot>destroy</on_reboot> <on_crash>destroy</on_crash>
- Una entrada a dispositivo es adicionada para el disco duro o para el sistema invitado. En este caso, este es la imagen del disco que habíamos creado:
<disk type='file' device='disk'> <driver name='file'/> <source file='/srv/xen/centos3.img'/> <target dev='hda'/> </disk>
- Un dispositivo CD-ROM es adicionado. El CD virtual está disponible a través de la imagen ISO (en este caso nosotros simplemente usamos el fichero boot.iso que está disponible en el árbol de CentOS 3):
<disk type='file' device='disk'> <driver name='file'/> <source file='/srv/xen/centos3.img'/> <target dev='hda'/> </disk>
- Finalmente, adjuntamos una consola gráfica a la máquina virtual, a la cual podemos adjuntarnos con el visor VNC:
<graphics type='vnc' port='5900'/>
Usted ahora puede iniciar el sistema invitado con virsh. Suponga que el fichero de configuración fue salvado como /srv/xen/centos3.xml, usted puede iniciar el sistema invitado con el comando siguiente:
virsh create /srv/xen/centos3.xml
Cuando el comando regresa sin error alguno, el invitado está corriendo. Usted tendrá que adjuntar un visor VNC a la consola gráfica. Para adjuntarlo a este dominio específico, primero necesitará el identificador (ID) del dominio. Esto puede ser recuperado a través del comando virsh list:
$ virsh list Id Name State ---------------------------------- 0 Domain-0 running 12 CentOS3 running
En este ejemplo, el sistema invitado está corriendo con el identificador 12. Ahora usted se puede adjuntar a este sistema con vncviewer localhost:<ID>. En este caso, el comando a usar sería vncviewer localhost:12. Con un poco de suerte el prompt de ISOLinux será mostrado, permitiéndole comenzar la instalación.
Después de la instalación, el sistema invitado se apagará.
4. Usando el sistema invitado
Usted tendrá que ajustar un poco la configuración del sistema invitado para su uso normal. Primero que todo, tendrá que cambiar el dispositivo de inicio de cdrom a hd para iniciar desde la imagen del disco duro. Además, es buena idea cambiar a restart la opciones on_reboot y on_crash para la consistencia. La siguiente configuración tiene estos cambios, así como la eliminación del dispositivo cdrom:
<domain type='xen'> <name>CentOS3</name> <os> <type>hvm</type> <loader>/usr/lib/xen/boot/hvmloader</loader> <boot dev='hd'/> </os> <memory>262144</memory> <vcpu>1</vcpu> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <features> <acpi/> <apic/> <pae/> </features> <devices> <emulator>/usr/lib/xen/bin/qemu-dm</emulator> <interface type='bridge'> <source bridge='xenbr0'/> <script path='vif-bridge'/> </interface> <disk type='file' device='disk'> <driver name='file'/> <source file='/srv/xen/centos3.img'/> <target dev='hda'/> </disk> <graphics type='vnc' port='5900'/> </devices> </domain>
Usted puede iniciar el sistema invitado con esta configuración, ejecutando el comando:
virsh create /srv/xen/centos3.xml
Usted puede adjuntar una consola gráfica con el mismo procedimiento descrito arriba.
5. Usando un dispositivo CD-ROM real
Usted puede usar un dispositivo CD-ROM real en el invitado virtual. Para ello use la siguiente entrada de dispositivo para la torre de CD-ROM de su invitado, cambiando la opción source para listar el nombre del dispositivo de la torre de CD-ROM a ser utilizada:
<disk type='block' device='cdrom'> <driver name='phy'/> <source dev='/dev/hdc'/> <target dev='hdc'/> <readonly/> </disk>
6. Instalando Windows
Si el instalador de Windows se cuelga cuando el núcleo de Windows está iniciado (el comando xentop usualmente dirá que el invitado está 100% ocupado), esto puede ser resuelto deshabilitando la ACPI y la APIC en el invitado. Usted puede hacer esto si comenta las opciones de configuración siguientes:
Cambie
<acpi/> <apic/>
por
<!-- <acpi/> --> <!-- <apic/> -->
y reinicie la instalación.