Creando e instalando una instancia domU de CentOS 5
Aquí describimos cómo usted puede crear una instancia domU de CentOS 5 con Xen, sin usar virt-manager o su variante de consola virt-install. Usualmente, las instancias requieren más personalización que las que estas herramientas nos brindan. De esta forma, a menudo es mejor crear instancias usando las herramientas que están por debajo. La última sección de este artículo describe como usted puede realizar los mismos pasos con virsh, una herramienta genérica para la administración de dominios virtualizados.
Este artículo asume que Xen está instalado y que CentOS está corriendo como dom0 (el dominio administrativo privilegiado). Esto lo puede realizar instalando los paquetes de xen y el núcleo con xen (kernel-xen) e iniciar con la funcionalidad del núcleo Xen.
Además este artículo asume que un fichero de imagen de disco será usado para sostener el disco domU. Así que sería trivial usar una partición física o de volumen.
Para aclarar algunas terminologías que a menudo tienden a confundir a los usuarios nuevos de Xen:
dom0: es el dominio administrativo privilegiado del cual solo uno pude ejecutarse.
domU: es un dominio sin privilegios, del cual pueden correr varios al mismo tiempo.
Aunque es una analogía incorrecta, a menudo resulta útil pensar que dom0 es el host del sistema y domU los sistemas invitados.
Contents
1. Creando una imagen
El primer paso es crear una imagen que sostenga los discos virtuales domU. Debido a que esto puede ser simplemente un fichero vacío, nuestro usual amigo dd nos muestra aquí su utilidad. En este artículo pondremos las imágenes en /srv/xen, aunque la ubicación aprobada de forma semi-oficial parece ser /var/lib/xen/images. Si prefiere ubicar bloques de disco a medida que el fichero crece, usted puede crear un fichero con un hueco. El comando siguiente creará un fichero /srv/xen/mailserver.img de 2048MB, así los bloques de datos actuales son ubicados relajadamente:
# dd if=/dev/zero of=/srv/xen/mailserver.img oflag=direct bs=1M seek=2047 count=1
Si usted desea revertir todo los bloques de datos completamente, puede hacer lo siguiente:
# dd if=/dev/zero of=/srv/xen/mailserver.img oflag=direct bs=1M count=2048
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 de fichero correcto, 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ículo 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).
2. Preparando un fichero de configuración Xen para la instalación
Xen usa un fichero de configuración por dominio. La configuración para el dominio será ligeramente diferente durante la instalación porque tendremos que suministrar la instalación de núcleos y posiblemente parámetros de inicio. Usted necesitará una imagen initrd de la instalación domU y el núcleo. En dependencia de la arquitectura de su computadora, estas pueden ser descargadas desde:
http://mirror.centos.org/centos/5/os/i386/images/xen/
o
http://mirror.centos.org/centos/5/os/x86_64/images/xen/
Usted puede ponerlas en algún directorio sensible y renómbrelas apropiadamente. En este ejemplo, el núcleo y la imagen initrd serán renombradas por /boot/vmlinuz-xen-install y /boot/initrd-xen-install respectivamente.
Con las imágenes en su lugar, usted puede crear el fichero de configuración de la instalación, aquí lo hemos nombrado /etc/xen/mailserver:
kernel = "/boot/vmlinuz-xen-install" ramdisk = "/boot/initrd-xen-install" extra = "text ks=http://localserver/minimal-ks.cfg" name = "mailserver" memory = "256" disk = [ 'tap:aio:/srv/xen/mailserver.img,xvda,w', ] vif = [ 'bridge=xenbr0', ] vcpus=1 on_reboot = 'destroy' on_crash = 'destroy'
Puede que usted desee ajustar algunos de los parámetros, como el de la cantidad de memoria que es dedicada a el domU, o el nombre del puente, si usted estuviese usando un puente diferente para este domU. Además de ello, este fichero de configuración usa el fichero kickstart para realizar la instalación automáticamente. Elimine la estrofa ks=http://localserver/minimal-ks.cfg si desea realizar una instalación interactiva. Además, este ejemplo usa explícitamente una instalación en modo texto - es posible realizar una instalación en modo gráfico con el visor VNC. Pero en nuestra experiencia una instalación en modo texto es mucho más confortable porque usted puede adjuntar una consola (de texto) a el dominio en cualquier momento, permitiéndole usar u observar a Anaconda directamente.
3. Ejemplo de un fichero Kickstart
Para referencia, este es un ejemplo de fichero kickstart. Si usted desea usarlo, usted debe modificarlo para su situación específica (o como mínimo cambiar la contraseña de root). Este fichero kickstart hace una instalación mínima, la cual es útil si a usted le gustaría realizar copias de una imagen y desarrollar nuevas instancias rápidamente.
install url --url http://mirror.centos.org/centos/5/os/i386 lang en_US.UTF-8 network --device eth0 --bootproto dhcp # Bogus password, change to something sensible! rootpw bogus firewall --enabled --port= authconfig --enableshadow --enablemd5 selinux --enforcing −−port=22:tcp timezone --utc Europe/Amsterdam bootloader --location=mbr --driveorder=xvda --append="console=xvc0" reboot # Partitioning clearpart --all --initlabel --drives=xvda part /boot --fstype ext3 --size=100 --ondisk=xvda part pv.2 --size=0 --grow --ondisk=xvda volgroup VolGroup00 --pesize=32768 pv.2 logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=256 --grow --maxsize=512 %packages @core
4. Comenzando la instalación
Con la configuración de la instalación ajustada, usted puede lanzar la instancia domU:
# xm create mailserver
Si usted configuró este domU correctamente, la instalación comenzará felizmente. Si usted seleccionó realizar una instalación manualmente o le gustaría ver kickstart en acción, usted puede adjuntar una consola a el domU:
# xm console mailserver
Después de la instalación, el domU será reiniciado y destruido (debido a que es la acción por defecto para el reinicio, esto lo cambiaremos más adelante).
5. Configuración Post-Instalación
Ahora que la instalación a concluido, es buen momento para realizar una copia de la imagen de la instancia y usarla como una plantilla. En este punto las llaves SSH no han sido generadas aun, haciendo más fácil darle a cada instancia un único conjunto de llaves SSH.
La configuración de la instalación debería ahora ser modificada para un uso sin instalación. Este es la configuración modificada:
name = "mailserver" memory = "256" disk = [ 'tap:aio:/srv/xen/mailserver.img,xvda,w', ] vif = [ 'bridge=xenbr0', ] bootloader="/usr/bin/pygrub" vcpus=1 on_reboot = 'restart' on_crash = 'restart'
Como usted puede ver, esta nueva configuración ya no está más usando el núcleo e imágenes initrd. En su lugar, está usando pygrub como el cargador de inicio. pygrub intentará buscar las particiones sosteniendo un sistema de archivo que contenga la configuración de GRUB en la imagen virtual del disco. Si una configuración de GRUB fuese encontrada, esta será utilizada para iniciar el núcleo. Esto es muy útil porque nos permitirá usar/administrar núcleos en el domU. Si yum update baja una actualización de seguridad para el núcleo del domU, este será usado automáticamente durante el próximo inicio del dominio.
Otro cambiado que hemos hecho es la forma de manipular los reinicios y las roturas. Usted usualmente necesitará reiniciar un dominio si este se bloquea o en los casos que un reinicio sea necesario (ej. después de actualizar de un nuevo kernel en el domU).
Con esta configuración en su lugar, ahora puede probar el dominio:
# xm create mailserver
Si usted ha instalado SSH, usted puede entrar al dominio a través de SSH o usando la consola de Xen:
# xm console mailserver
Usted puede ahora administrar el dominio como una máquina usual de CentOS. Usted puede apagar el dominio con:
# xm shutdown mailserver
Para más información en las opciones que brinda xm, por favor refierase a la página man xm.
6. Iniciando dominios automáticamente
Si usted desea iniciar un dominio automáticamente cuando el sistema (dom0) sea iniciado, mueva la configuración del dominio a el directorio /etc/xen/auto. Por ejemplo:
# mv /etc/xen/mailserver /etc/xen/auto
Esto además apagará el dominio correctamente cuando el sistema sea apagado.
7. Usando virsh/libvirt
La biblioteca libvirt ha sido desarrollada para brindar una abstracción API para las variadas tecnologías de máquina virtual que existen. Una versión vieja de libvirt que soporta Xen está incluida en CentOS 5. Versiones nuevas brindan además abstracción para KVM y qemu.
libvirt puede ser usada desde el shell con el comando virsh. Este comando puede ser usado para administrar dominios, más o menos de la misma forma que xm. La creación de dominios y comandos de apagado son los comandos más importantes en el contexto de este artículo:
virsh create FILE virsh shutdown domain-name/id/uuid
libvirt usa descripciones XML para los dominios. El formato de estas descripciones de dominio está explicado en el sitio web de libvirt. Para comenzar, a continuación se muestra la descripción del dominio para la configuración de instalación y la configuración de tiempo de ejecución respectivamente:
<domain type='xen'> <name>mailserver</name> <os> <type>linux</type> <kernel>/boot/vmlinuz-xen-install</kernel> <initrd>/boot/initrd-xen-install</initrd> <cmdline>text ks=http://localserver/minimal-ks.cfg</cmdline> </os> <memory>262144</memory> <vcpu>1</vcpu> <on_poweroff>destroy</on_poweroff> <on_reboot>destroy</on_reboot> <on_crash>destroy</on_crash> <devices> <interface type='bridge'> <source bridge='xenbr0'/> <script path='vif-bridge'/> </interface> <disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/srv/xen/mailserver.img'/> <target dev='xvda'/> </disk> <console tty='/dev/pts/1'/> </devices> </domain>
<domain type='xen'> <name>mailserver</name> <bootloader>/usr/bin/pygrub</bootloader> <os> <type>linux</type> </os> <memory>262144</memory> <vcpu>1</vcpu> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <interface type='bridge'> <source bridge='xenbr0'/> <script path='vif-bridge'/> </interface> <disk type='file' device='disk'> <driver name='tap' type='aio'/> <source file='/srv/xen/mailserver.img'/> <target dev='xvda'/> </disk> <console tty='/dev/pts/1'/> </devices> </domain>
Supongamos que estos ficheros de configuración fueron llamados /srv/xen/mailserver.xml, usted puede crear y apagar el dominio con:
# virsh create /srv/xen/mailserver.xml # virsh shutdown mailserver