0% encontró este documento útil (0 votos)
231 vistas55 páginas

Manual de Virtualización

Este documento describe varias técnicas de virtualización incluyendo emulación, virtualización nativa, paravirtualización y virtualización a nivel de sistema operativo. Luego procede a explicar cómo instalar Qemu, un emulador de máquinas virtuales, y Kqemu, un módulo que acelera el rendimiento de Qemu, en CentOS. Incluye los comandos para instalar ambos softwares.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
231 vistas55 páginas

Manual de Virtualización

Este documento describe varias técnicas de virtualización incluyendo emulación, virtualización nativa, paravirtualización y virtualización a nivel de sistema operativo. Luego procede a explicar cómo instalar Qemu, un emulador de máquinas virtuales, y Kqemu, un módulo que acelera el rendimiento de Qemu, en CentOS. Incluye los comandos para instalar ambos softwares.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 55

1- Tcnicas de virtualizacin

Enviado por Epe el Mi, 2007-02-28 22:48.

Aunque no soy un expertsimo en las diversas tcnicas de virtualizacin, tratar de exponer algunas de ellas y en breves palabras lo que hallo bien o mal de cada una. Virtualizacin es un trmino bastante amplio, pero que en general podemos pensar que es separar las caractersticas fsicas de el hardware donde corre el programa virtualizado para que pueda ejecutarse tal y como l lo desea o necesita. La virtualizacin se divide en s en dos formas o tipos: - Virtualizacin de la plataforma - Virtualizacin de los recursos El tema que vamos a ver aqui es la virtualizacin de la plataforma que es una forma de crear una mquina virtual para que dentro de ella corra un determinado sistema operativo. sta mquina virtual puede o no recibir ayuda por parte del hardware en que la corremos. En el caso especfico nuestro veremos la virtualizacin basada en los procesadores i386 (Intel o AMD). La virtualizacin de la plataforma (le llamar virtualizacin de aqu en adelante). Se realiza mediante la intervencin de un sistema operativo hospedero (host) el cul se har cargo de crear un sistema simulado para los huspedes (Guests). Estos guests corrern tal y como si lo estuvieran haciendo sobre un hardware verdadero. Normalmente se les simula por parte del host una mquina de forma tal que los guests puedan correr. Sin embargo a veces no se les simula la mquina sino que se les modifica el kernel para que puedan correr de forma compartida en el host. Diferentes formas de hacer virtualizacin por plataforma: Emulacin: Es cuando el host simula completamente la mquina virtual de forma que todas las llamadas que hagan los guests sean interpretadas y ejecutadas por parte del host hacia el verdadero hardware. De sta forma se ha logrado la creacin de software para hardware que no ha sido creado todava. As se puede avanzar en la salida al mercaro de nuevo hardware. La emulacin incluso permite que un sistema operativo diseado para algn una plataforma especfica pueda correr sobre otra plataforma con la cul tcnicamente no es compatible. Ejemplos de emulacin tenemos el qemu sin aceleracin, Virtual PC, Bochs y PearPC. Por mi parte he probado el Qemu y de hecho veremos ms adelante cmo implementarlo.

Virtualizacin nativa: Tambin conocida como virtualizacin completa. El host emula lo suficientemente bien el hardware como para que los guests puedan correr de forma nativa (sin cambios en el kernel) y adems de forma completamente aislada. Estos guests normalmente pueden correr varios en la misma mquina y compartir eficientemente sus recursos. Yo realmente lo veo como un caso de emulacin un poco ms avanzado. El caso ms conocido es el VMWare. Que es un producto comercial y no veremos aqui. Xen y KVM son sistemas open source que permiten realizar ste tipo de virtualizacin de forma sumamente efectiva. Y por supuesto los veremos. Paravirtualizacin El host no ofrece una emulacin del hardware. Pero sin embargo ofrece un API que permite que los guests puedan acceder a los recursos de la mquina, controlados por el hospedero por supuesto. Los guests corren de forma aislada y segura de forma tal que no se afectan en caso de problemas. El kernel de los guests tiene que ser modificado para permitir acceder al API del host y poder manejar y acceder a los recursos del host (disco, red, usb, etc). Ejemplos de paravirtualizacin incluyen el VMWare ESX Server y el XEN. En nuestro caso dedicaremos un tiempo a estudiar el XEN. Virtualizacin a nivel del sistema operativo Los guests comparten el mismo sistema operativo que el hospedero. En verdad todos corren el mismo kernel y es el kernel el que se ocupa de determinar para quin trabaja en un momendo determinado. Los guests se ven como si estuvieran slos pero en verdad todos comparten el mismo kernel cosa que hace que una vulnerabilidad en el kernel afecte a todos. Ejemplos de ste tipo de virtualizacin incluyen al OpenVZ, virtuozzo, y las jaulas de freeBSD. Es una de las formas ms antiguas de virtualizar en linux, pero para mi no son lo suficientemente seguras. Intent el OpenVZ y no me pareci feo, pero gracias, no lo uso ni en su versin comercial (virtuozzo). De todos estos sistemas, tratar de explicar cmo usar el qemu y el xen, aunque si el KVM toma suficiente fuerza lo pondr aqui tambin.

2- QEMU
Enviado por Epe el Sb, 2007-03-03 21:47.

QEMU es un emulador muy simpatico y fcil de usar que nos permitir ejecutar varios sistemas operativos emulndole una mquina virtual a ellos. Al ser un emulador es bastante lento, pero es un gran paso de avance en esto de virtualizacin. ACTUALIZACION Gracias al comentario de Rafael podemos actualizar el howto con sta info: Qemu tiene dos partes que son el qemu (el emulador en s) y un mdulo llamado kqemu que permite acelerar la ejecucin del sistema operativo virtualizado. El kqemu antiguamente era cdigo cerrado pero desde hace unas semanas ya es open source (GPL) por lo que podremos usarlo tambin! Con el Qemu podremos instalar windows, linux y quiz podran instalar algn sistema operativo ms. Yo realmente lo he probado con windows 2000 y con linux, no he probado nada ms. En un inicio me gust pues me permiti experimentar con diversos linux (prob debian por ejemplo y ahi qued mi incursin en debian). Te lo sugiero si quieres algo rpido, mas no si quieres algo serio (no, no el debian, hablo del qemu!).

1- Instalando qemu
La instalacin de Qemu es bastante sencilla, sugiero que previamente tengas instalado el repositorio de DAG, sigue ste documento que te explicar cmo usar el repo dag que ahora se conoce como rpmforge: http://www.ecualug.org/?q=2006/03/30/comos/centos/c_mo_usar_el_repositorio_ de_dag_en_nuestro_centos El proceso de instalacin es como sigue:

[root@laptop ~]# yum install qemu Setting up Install Process Setting up repositories kbs-CentOS-Extras 100% |=========================| 951 B 00:00 kbs-CentOS-Misc 100% |=========================| 951 B 00:00 update 100% |=========================| 951 B 00:00

rpmforge 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 addons 100% |=========================| 951 B 00:00 jpackage-generic 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for qemu to pack into transaction set. qemu-0.9.0-1.el4.rf.i386. 100% |=========================| 12 kB 00:00 ---> Package qemu.i386 0:0.9.0-1.el4.rf set to be updated --> Running transaction check Dependencies Resolved ========================================================================= ==== Package Arch Version Repository Size ========================================================================= ==== Installing: qemu i386 0.9.0-1.el4.rf rpmforge 4.1 M Transaction Summary ========================================================================= ==== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 4.1 M Is this ok [y/N]: y Downloading Packages: (1/1): qemu-0.9.0-1.el4.r 100% |=========================| 4.1 MB 01:30 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction

Installing: qemu ######################### [1/1] Installed: qemu.i386 0:0.9.0-1.el4.rf Complete!


Instalando el kqemu

[root@laptop ~]# yum install dkms-kqemu Setting up Install Process Setting up repositories kbs-CentOS-Extras 100% |=========================| 951 B 00:00 kbs-CentOS-Misc 100% |=========================| 951 B 00:00 update 100% |=========================| 951 B 00:00 rpmforge 100% |=========================| 1.1 kB 00:00 base 100% |=========================| 1.1 kB 00:00 addons 100% |=========================| 951 B 00:00 jpackage-generic 100% |=========================| 951 B 00:00 extras 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 106 kB 00:02 update : ################################################## 308/308 Added 1 new packages, deleted 0 old in 1.05 seconds primary.xml.gz 100% |=========================| 1.3 MB 00:32 rpmforge : ################################################## 5427/5427 Added 11 new packages, deleted 0 old in 9.26 seconds Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for dkms-kqemu to pack into transaction set. dkms-kqemu-1.3.0-0.1.pre1 100% |=========================| 7.0 kB 00:01 ---> Package dkms-kqemu.noarch 0:1.3.0-0.1.pre11.nodist.rf set to be updated --> Running transaction check --> Processing Dependency: dkms for package: dkms-kqemu --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Downloading header for dkms to pack into transaction set. dkms-2.0.13-1.el4.rf.noar 100% |=========================| 4.1 kB 00:00 ---> Package dkms.noarch 0:2.0.13-1.el4.rf set to be updated

--> Running transaction check --> Processing Dependency: kernel-devel for package: dkms --> Restarting Dependency Resolution with new changes. --> Populating transaction set with selected packages. Please wait. ---> Package kernel-devel.i686 0:2.6.9-42.0.10.EL set to be installed --> Running transaction check Dependencies Resolved ========================================================================= ==== Package Arch Version Repository Size ========================================================================= ==== Installing: dkms-kqemu noarch 1.3.0-0.1.pre11.nodist.rf rpmforge 166 k Installing for dependencies: dkms noarch 2.0.13-1.el4.rf rpmforge 49 k kernel-devel i686 2.6.9-42.0.10.EL update 3.7 M Transaction Summary ========================================================================= ==== Install 3 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 3.9 M Is this ok [y/N]: y Downloading Packages: (1/3): dkms-kqemu-1.3.0-0 100% |=========================| 166 kB 00:04 (2/3): dkms-2.0.13-1.el4. 100% |=========================| 49 kB 00:01 (3/3): kernel-devel-2.6.9 100% |=========================| 3.7 MB 01:39 Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: kernel-devel ######################### [1/3] Installing: dkms ######################### [2/3]

Installing: dkms-kqemu ######################### [3/3] Installed: dkms-kqemu.noarch 0:1.3.0-0.1.pre11.nodist.rf Dependency Installed: dkms.noarch 0:2.0.13-1.el4.rf kernel-devel.i686 0:2.6.9-42.0.10.EL Complete!
Listo, ya est listico el qemu para ser usado, veamos su configuracin y uso inicial.

2- Configurando una mquina virtual para arrancar windows


Hay ahora que crear una imagen (un archivo) que es el que ser usado para que arranque la mquina virtual que deseemos. En mi caso voy a crear una mquina virtual para w2k:

qemu-img create w2k.img 5G Formating 'w2k.img', fmt=raw, size=5242880 kB ll w2k.img -rw-r--r-- 1 root root 5368709120 Mar 3 21:56 w2k.img
Hum, ya la tenemos, ahora tomamos un CD de instalacin de w2k y lo ponemos en el lector de cd, y ejecutamos esta instruccin:

qemu w2k.img -boot d -cdrom /dev/cdrom -win2k-hack


Esto significa: arranca desde cdrom (-boot d) el CD es /dev/cdrom (puede ser una imagen) y esto de -win2k-hack slo es necesario para arrancar windows 2000. Con otros sistemas no hace falta. El proceso de instalacin es igual, slo que quiz lo notes un poco demorado. A propsito te sugiero que si ves que se demora un rato detectando el hardware le muevas el mouse. Si deseas salir de la mquina virtual (que el mouse y el teclado sean de tu linux) puedes hacerlo apretando CTRL+ALT Windows te pedir que presiones CTRL ALT DEL para iniciar la sesin, cuando aprietes CTRL ALT te sacar de la ventana, por lo que te sugiero que aprietes: DEL CTRL ALT (al revs), igual te sacar de la ventana pero al menos enva las teclas hacia el windows antes de sacarte. No te garantizo que sea la maravilla, es demoradito, pero una buena forma de probar algunos sistemas o usarlos en caso de ser necesario.

3- Configurando una mquina virtual para arrancar linux.


Muy parecido al caso anterior Primero preparamos la imagen:

qemu-img create centos21.img 1G


Aqu le indico que cree una imagen llamada centos21.img de 1GB de tamao. Ahora meto el primer CD de CentOS 2.1 (yo s que es viejo, pero la idea es que la mquina puede ejecutarlo no slo a l sino a los modernos).

qemu centos21.img -boot d -cdrom /dev/cdrom

Recuerda que una vez acabes la instalacin no necesitas de arrancar con d (cdrom) sino con c (disco) y no necesitas de la opcin -cdrom (para que te quede libre el cdrom para otras cosas).

vbv

4- Configurando qemu para arrancar una mquina de arquitectura ARM


Enviado por Epe el Sb, 2007-03-03 22:34.

S, qemu puede emular mquinas virtuales de diversas arquitecturas, por ejemplo ARM:

qemu-img create -f qcow hda.img 1G

wget http://people.debian.org/~aurel32/arm-versatile/vmlinuz-2.6.18-4-versatile wget http://people.debian.org/~aurel32/arm-versatile/initrd.img-2.6.18-4versatile

wget http://people.debian.org/~kmuto/d-i/images/daily/rpc/netboot/initrd.gz

Se quejar de que no le aparecen los modulos, decirle que s, es porque el kernel que usamos no es el propio que viene con el instalador.

Los mensajes que salgan consideremoslos no importantes y continuemos con la instalacin (dir que no puede instalar el kernel, el grub, etc). Una vez instalado podemos arrancar con: qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-4-versatile -initrd initrd.img-2.6.18-4versatile -hda hda.img -append "root=/dev/sda1" Una vez hallamos arrancado, debemos inmediatamente instalar el kernel:

apt-get install initramfs-tools wget http://people.debian.org/~aurel32/arm-versatile/linux-image-2.6.18-4versatile_2.6.18.dfsg.1-10+versatile_arm.deb su -c "dpkg -i linux-image-2.6.18-4-versatile_2.6.18.dfsg.1-10+versatile_arm.deb"

Aqu una imagen de debian-arm ya trabajando en el qemu: http://www.ecualug.org/files/images/armdebianqemuconsola.preview.png La info de ste artculo fue cuidadosamente copiada desde: http://www.aurel32.net/info/debian_arm_qemu.php

5- Corriendo Minix desde qemu


Minix es un sistema operativo creado y mantenido hace muchos aos por el respetadsimo Doctor Andrew S Tannenbaum. Realmente no es muy usado, es decir, no tiene la violenta popularidad de Linux, pero en todo caso aqu explicamos cmo instalarlo desde el qemu Primero, bajar la imagen de instalacin del minix desde aqui: http://www.minix3.org/download/ Crear la imagen:

qemu-img create minix.img 1G

Bootear desde esa imagen:

qemu -localtime -net user -net nic -m 128 -cdrom IDE-3.1.2a.iso -hda minix.img boot d

Aqui le digo que slo use 128 megas de memoria y que bootee desde el .iso que recin baj (para no tener que quemar un CD). Una vez arranques instalas normalmente minix, entrando como root (sin clave) y poniendo:

setup

En el tipo de tarjeta de red poner la opcin 4 (realtek 8029) Una vez instalado, ejecutar el mismo qemu pero con -boot c para arrancar de disco:

qemu -localtime -net user -net nic -m 128 -hda minix.img -boot c

6- FreeDOS desde qemu


Enviado por Epe el Sb, 2007-03-03 22:53.

ste es fcil puesto que ya podemos conseguir la imagen de qemu La bajamos de aqui y la descomprimimos:

wget http://fabrice.bellard.free.fr/qemu/freedos.img.bz2 bunzip2 freedos.img.bz2

Ahora la podemos ejecutar:

qemu freedos.img
Miren el FreeDOS corriendo:

7- ReactOS desde qemu

Enviado por Epe el Sb, 2007-03-03 23:08.

ReactOS es un sistema operativo que es muy parecido a windows, pero es open source. En ecualug ya se han publicado algunas noticias e informaciones sobre ReactOS sera bueno que le des una miradita en Buscar. Ahora, ReactOS te ofrece bajar una imagen de Qemu para que puedes probarlo. Realmente a mi entender ReactOS no est completo, pero est avanzando y eso es positivo. Bajamos la imagen desde: http://ufpr.dl.sourceforge.net/sourceforge/reactos/reactos0.3.0-REL-qemu.zip (recuerda que las versiones pueden ir subiendo con el tiempo, as que te sugiero verificar la ltima imagen siempre desde: http://www.reactos.org/en/download.html La descomprimimos:

unzip reactos0.3.0-REL-qemu.zip Archive: reactos0.3.0-REL-qemu.zip creating: ReactOS-Qemu/ inflating: ReactOS-Qemu/bios.bin inflating: ReactOS-Qemu/boot.bat extracting: ReactOS-Qemu/boot.sh inflating: ReactOS-Qemu/c.img inflating: ReactOS-Qemu/fmod.dll creating: ReactOS-Qemu/keymaps/ inflating: ReactOS-Qemu/keymaps/ar inflating: ReactOS-Qemu/keymaps/common inflating: ReactOS-Qemu/keymaps/da inflating: ReactOS-Qemu/keymaps/de inflating: ReactOS-Qemu/keymaps/de-ch inflating: ReactOS-Qemu/keymaps/en-gb inflating: ReactOS-Qemu/keymaps/en-us inflating: ReactOS-Qemu/keymaps/es inflating: ReactOS-Qemu/keymaps/et inflating: ReactOS-Qemu/keymaps/fi inflating: ReactOS-Qemu/keymaps/fo

inflating: ReactOS-Qemu/keymaps/fr inflating: ReactOS-Qemu/keymaps/fr-be inflating: ReactOS-Qemu/keymaps/fr-ca inflating: ReactOS-Qemu/keymaps/fr-ch inflating: ReactOS-Qemu/keymaps/hr inflating: ReactOS-Qemu/keymaps/hu inflating: ReactOS-Qemu/keymaps/is inflating: ReactOS-Qemu/keymaps/it inflating: ReactOS-Qemu/keymaps/ja inflating: ReactOS-Qemu/keymaps/lt inflating: ReactOS-Qemu/keymaps/lv inflating: ReactOS-Qemu/keymaps/mk inflating: ReactOS-Qemu/keymaps/modifiers inflating: ReactOS-Qemu/keymaps/nl extracting: ReactOS-Qemu/keymaps/nl-be inflating: ReactOS-Qemu/keymaps/no inflating: ReactOS-Qemu/keymaps/pl inflating: ReactOS-Qemu/keymaps/pt inflating: ReactOS-Qemu/keymaps/pt-br inflating: ReactOS-Qemu/keymaps/ru inflating: ReactOS-Qemu/keymaps/sl inflating: ReactOS-Qemu/keymaps/sv inflating: ReactOS-Qemu/keymaps/th inflating: ReactOS-Qemu/keymaps/tr creating: ReactOS-Qemu/License/ inflating: ReactOS-Qemu/License/LICENSE inflating: ReactOS-Qemu/License/README-SDL.txt inflating: ReactOS-Qemu/License/README.TXT inflating: ReactOS-Qemu/qemu-system-x86_64.exe inflating: ReactOS-Qemu/qemu.exe inflating: ReactOS-Qemu/SDL.dll inflating: ReactOS-Qemu/vgabios-cirrus.bin inflating: ReactOS-Qemu/vgabios.bin
Y procedemos a ejecutarlo

cd ReactOS-Qemu/ qemu -boot c -m 128 -L . c.img

3- Instalando Xen
Bueno, disculpen, no me sobra el tiempo en estos das, pero voy a tratar de ir avanzando. As que quieren instalar Xen no? CentOS desde la versin 5 soporta Xen, ofrece Xen como uno de sus paquetes. Al tener 7 aos de soporte, tendrs la certeza de que tendrs soportado tu Xen durante 7 aos. CentOS ofrece alojar mquinas de forma paravirtualizada (ms rpidas pero ms complejas) y de forma de full virtualization (requiere de procesadores que soporten vmx (intel) o svm (amd) El proceso de instalacin es bien simple y asume que tienes el DVD de CentOS 5 o los 6 CDs. Si no los tuvieras avsame para ponernos de acuerdo en la forma de envo. Atencin, esto es un howto para personas que gusten experimentar, conocedores. Esta instalacin seguro que te formatear el disco duro. Es responsabilidad tuya, no ma. Despus no me culpes por haber perdido la informacin.. respalda antes de seguir! Metes el primer CD o el DVD y arrancas la mquina. Sigues el proceso de instalacin normalmente, como si estuvieras instalando cualquier CentOS o Fedora. Al momento de particionar, te sugiero que por favor crees de la siguiente forma: 1- /boot - 100 megas, forzada a ser primaria 2- el resto del disco de tipo LVM (en vez de ext3, escoger LVM y al resto del disco darle) 3- Apretar en el botn de LVM y en el VolGroup (arriba arriba) poner: dsk (dice: VolGroup00, es feisimo, pon dsk que lo usaremos as, no lo olvides o me molestar bastante!) 4- Abajo de VolGroup, dar opcin para crear nuevos volmenes, es en un recuadrito que a la derecha tiene varios botones (new, delete, etc). 5- crear un Logical Volume (LV, VolName) llamado swap de 1024M que sea de tipo swap y 6- en el mismo lugar: otro llamado root que sea de tipo ext3, montarlo en / y que tenga digamos 5000MB 7- Apretar ok, salir de la configuracin de LVM y regresar al fdisk, 8- seguir instalando. Te sobrar bastante disco (el resto). La idea es que en ese resto de espacio de LVM crearemos las mquinas virtuales (llamadas domU).

A la hora de escoger los paquetes, mira bien abajo, dir: Virtualization. Es este el nico que me interesa que se instale, los dems podras quitarlos, al menos los de ambiente grfico, open office, etc Te sugiero que no instales muchos paquetes. En el sistema ste, que se llamar hospedero (dom0) no hacen falta muchos paquetes, slo los de virtualizacin, es ms, no instalo siquiera el ambiente grfico en ste hospedero (dom0). Escoge esa opcin, y sigue instalando normalito, como si nada pasara. Al finalizar reiniciars la mquina y arrancar CentOS 5. Felicidades. Actualizacin Es OBLIGATORIO que actualices tu sistema, el Xen que vino en el CentOS 5.0 tena algunos problemillas y es mejor que lo actualices. Igual, cuando salgan los siguientes respin (5.1, 5.2, 5.3, etc) nunca est de ms actualizar antes de seguir:

yum update
La actualizacin te llevar un rato en dependencia de la cantidad de paquetes que hayas instalado y la velocidad de tu conexin. Al finalizar, reinicia para que levante el nuevo kernel y ahi vamos con el resto.

1- Pasos iniciales
Bueno, qu se siente con el xen ya instalado? Nada raro. Parece un linux normal. Ests trabajando en algo llamado el hipervisor, el dom0, el hospedero. A la final es un kernel de linux modificado para poder ejecutar maquinas virtuales. Te sugiero que en el dom0, que es ese linux donde ahora ests, no instales nada raro. Nada de nada de paquetes, slo SSH y si puedes quitar el SSH, mejor, qutalo. El xen tiene bsicamente una herramienta desde la que se puede hacer todo.Se llama xm xm list (te lista las mquinas virtuales) xm shutdown ID (Te apaga la mquina virtual que tenga ese ID) xm destroy ID (Es como quitarle la corriente a ese ID) xm create ID (arranca, como ponerle la corriente a ese ID, tiene que haber sido previamente instalado) xm console ID (te permite conectarte via consola a la mquina virtual ID. Es como estar delante de la pantalla, en tty1)

Claro, no has creado una mquina virtual todava, pero por lo menos ya sabes los comandos. Ahora vamos.

2- Usando LVM
Bueno, creme, si no sabes usar LVM, no podrs seguir con el howto, pues usar LVM para crear las mquinas virtuales. Lete ste howto, con calma, pues necesitas saber todo:

Usando LVM2 en Linux CentOS

Enviado por Epe el Vie, 2006-09-08 08:35.

A peticin de death, aqui va: Los LVM te permiten unir varios discos o particiones (conocidos como Physical Volumes, PV) formando un gran pool de almacenamiento de datos conocido como Volume Group (VG) que puede ser posteriormente subdividido en "particiones". En caso de necesidad de ms espacio se pueden redimensionar estas particiones, conocidas como Logical Volumes (LV a partir de ahora). En resumen: VG: Volume Group: Es la unin de todos los discos o particiones que vayas a usar. Del VG es que sacas pedazos para crear tus particiones. PV: Pysical Volume: Es en s todos y cada uno de los dispositivos de almacenamiento que vayas a usar. Discos, particiones, etc.. en verdad es lo que antiguamente conocas como discos duros. LV: Son lo que seran las particiones. Pedazos del VG que asignars. Por ejemplo, dadas dos unidades (PV) de 100GB, se puede crear un volumen lgico (LV) de 200GB. Sin embargo, tambin se pueden crear un volumen lgico (LV) de 150GB y otro de 50GB. Es posible cualquier combinacin de volmenes lgicos igual o menor que la capacidad total (en nuestro ejemplo 200GB). Las posibilidades estn limitadas solamente a las necesidades de su organizacin.

La caracterstica que la mayora de los administradores de sistemas aprecian ms sobre LVM es su habilidad para dirigir fcilmente el almacenamiento donde se necesite. En una configuracin de sistemas no LVM, el quedarse sin espacio significa - en el mejor de los casos - mover archivos desde un dispositivo lleno a uno con espacio disponible. A menudo esto significa la reconfiguracin de sus dispositivos de almacenamiento masivo; una tarea que se debe llevar a cabo despus del horario de oficina. Sin embargo, LVM hace posible incrementar fcilmente el tamao de un volumen lgico. Asuma por un momento que nuestro parque de almacenamiento de 200GB fue utilizado para crear un volumen lgico de 150GB, dejando el resto de 50GB en reserva. Si el volumen lgico de 150GB se llena, LVM permite incrementar su tamao (digamos por 10GB) sin ninguna reconfiguracin fsica. Dependiendo del entorno de su sistema operativo, se puede hacer esto dinmicamente o quizs requiera una pequea cantidad de tiempo fuera de servicio para llevar a cabo el redimensionamiento. Migracin de datos La mayora de los administradores con experiencia estaran impresionados de las capacidades de LVM, pero tambin se preguntaran: Qu pasa si uno de los discos que forman parte del volumen lgico comienza a fallar? Las buenas noticias es que la mayora de las implementaciones LVM incluyen la habilidad de migrar datos fuera de una unidad fsica particular. Para que esto funcione, debe existir suficiente capacidad para absorber la prdida de la unidad fallida. Una vez que se termine la migracin, se puede reemplazar la unidad que dej de funcionar y aadirla nuevamente en el parque de almacenamiento disponible. Por qu utilizar RAID? Dado que LVM tiene algunas funcionalidades similares a RAID (la habilidad de reemplazar dinmicamente unidades fallidas, por ejemplo) y algunas funcionalidades proporcionan capacidades que no se pueden comparar con la mayora de las implementaciones RAID (tales como la habilidad de aadir dinmicamente ms almacenamiento a un parque central de almacenamiento), mucha gente se pregunta si ya RAID no es tan importante. Nada puede estar ms lejos de la realidad. RAID y LVM son tecnologas complementarias que se pueden usar en conjunto (de una forma similar a los niveles RAID anidados), haciendo posible obtener lo mejor de los dos mundos. Ejemplo real:

Tenemos 3 discos de 40 gigas cada uno. Tenemos por tanto 3 PV Estos 3 PV los unimos y formamos un group de volmenes (VG) que llamaremos: disk Ahora, tenemos a nuestra disposicin 120GB en el VG y podemos hacer uso de este espacio como nos convenga. Particionemos nuestro VG con varios Logical Volumes (LV) que vienen siendo las particiones: /dev/disk/home con 45GB /dev/disk/var con 40gb /dev/disk/root con 10GB /dev/disk/usr con 15GB /dev/disk/swap con 1GB En total estaremos consumiendo 111GB, nos quedaran unos 9GB disponibles. Si te fijas, no importa el tamao de los PV que es de 40GB cada uno, sino el conjunto. Si te fijas, una vez creados los LV nos referimos como /dev/nombredelVG/nombredelLV, en este caso sera /dev/disk/home por ejemplo. Ahora podemos usarlos normalmente en nuestro fstab, editamos el fstab y en vez de poner /dev/hda1 por ejemplo, ponemos /dev/disk/var o /dev/disk/root (como no puedo usar el / en el nomnbre le pongo root). Y listo, se usa normalmente. Comandos LVM2 Creando PV: Supongamos tenemos 3 discos disponibles, hda, hdb y hdc, para agregarlos a nuestro LVM lo que hacemos es particionarlos y a las particiones las ponemos del tipo:

8e Linux LVM
Esto se hace con el comando fdisk, escogiendo con "t" la particin que queremos crear como LVM normalmente hago slo una particin por disco, y le cambio el tipo a 8e. Una vez cambiados los tipos de los discos, procedemos a agregarles la informacin de LVM a cada uno, con el comando pvcreate:

pvcreate /dev/hda1 pvcreate /dev/hdb1 pvcreate /dev/hdc1


Con estos simples pasos les hemos agregado dentro del sector de configuracin los datos necesarios para que ellos acten como un Physical Volume. Ahora tenemos que agregar estos 3 PV a un Grupo de Volumenes (VG):

vgcreate disk /dev/hda1 /dev/hdb1 /dev/hdc1 vgchance -a y disk


Con esto hemos agrupado dentro de un grupo de volumenes (la informacin realmente se guarda en cada uno de los PV en su sector de configuracin) a los tres PV y despus hemos activado el VG El VG que tenemos contiene espacio para 120GB, pero atencin, si maana me hace falta ms sencillamente agrego los dispositivos que necesite o tenga. Creando LV (particiones) Creemos los LV que indiqu anteriormente:

lvcreate -L45G -nhome disk lvcreate -L40G -nvar disk lvcreate -L10G -nroot disk lvcreate -L15G -nusr disk lvcreate -L1G -nswap disk
la -L sirve para indicar el tamao del LV, se puede medir en megas (M), gigas (G), y supongo que en kilos (K) pues slo he usado G y M para los discos. la -n sirve para indicar cmo se llamar el LV La ltima entrada es el nombre del VG del que tomaremos la informacin. Asi que ahora tendremos el VG llamado disk conteniendo 5 LV: home, var, root, usr y swap. Una vez hecho esto podemos formatear todos ellos:

mkfs.ext3 /dev/disk/root mkswap /dev/disk/swap mkfs.ext3 /dev/disk/home

mkfs.ext3 /dev/disk/var mkfs.ext3 /dev/disk/usr

Y los podemos usar cuando y como mejor nos plazca.

Comandos adicionales de LVM2


Extendiendo un VG: Para eso le damos de alta a un nuevo PV y lo agregamos al VG, en ste ejemplo agregaremos /dev/hdd1 al VG del howto inicial:

pvcreate /dev/hdd1 vgextend disk /dev/hdd1


visualizando informacin:

pvdisplay vgdisplay lvdisplay


esos tres comandos podrn darte informacin sobre los PV, VG y LV del sistema. Espacio utilizado, disponible, etc. Eliminando un LV Supongamos que no queremos ms el LV llamado home, por alguna razn. Y que deseamos eliminarlo para disponer de ese espacio en otras cosas. Lo hacemos con:

umount /dev/disk/home lvremove /dev/disk/home


Extendiendo un LV Supongamos que por el contrario, s queremos home, pero queremos agregarle 5GB extras, para eso:

umount /dev/disk/home lvextend -L+5G /dev/disk/home e2fsck -f /dev/disk/home resize2fs /dev/disk/home


1- Desmontamos home, pues no puede estar activo para el cambio 2- extendemos con lvextend, si te fijas -L ahora va con +5G, esto es, sumandole 5GB al valor que tena originalmente.

3- chequeamos el FS (supongo que es formato ext3) 4- hacemos un resize del FS, con el comando resize2fs Con esto nos basta para incrementar en 5GB el tamao de ese LV Reduciendo un LV Veamos el caso contrario, pensemos que queremos reducir home, le quitaremos 5GB, el proceso es parecido al anterior:

umount /dev/disk/home e2fschk -f /dev/disk/home resize2fs /dev/disk/home 35G lvreduce -L-5G /dev/disk/home

Con esto 1- desmontamos home, no debe estar montado para la operacin 2- revisamos el FS ext3 3- reducimos el tamao del FS ext3 (aqu s hay que saber a cunto lo reduces 4- reducimos el tamao del LV home, si te fijas usamos -L-5G aunque tambin podamos haber usado -L35G para indicarle el valor hacia donde lo reduciramos. Con esto nos basta para reducir el tamao en 5GB Removiendo un PV Supongamos que un PV nuestro lo queremos sacar. Puede ser porque hemos agregado un nuevo PV anteriormente que es muy grande y ya este PV viejo nos queda pequeo y nos molesta, queremos digamos eliminar el disco. Supongamos que queremos remover hdc1 del ejemplo del howto inicial.

pvmove /dev/hdc1
En este proceso demorar un buen rato, pvmove saca la informacin que tenga guardada y la almacena en los otros PV, esto sin alterar el esquema de los LV. Por supuesto que la suma de capacidad disponible en los otros PV debe ser mayor o igual a la cantidad de informacin que est moviendo. Al finalizar de mover el PV, lo podemos eliminar del VG con:

vgreduce disk /dev/hdc1

Listo, con este paso deja de constar dentro del VG y lo podemos sacar fsicamente de la PC donde lo tenemos. Otras sugerencias: * no sugerimos que usen LVM para la particin /, esta particin prcticamente no crece durante el tiempo de vida del sistema (claro, si tenemos /var y /usr y /home en particiones diferentes). * No sugerimos que usen LVM para /boot, los gestores de arranque normalmente no entienden de lvm y fallar el arranque. Despus de todo /boot tampoco crece tanto durante el tiempo de vida de la mquina. * Este proceso se ve grandemente agilitado cuando estamos recin instalando un nuevo servidor. Pues en el instalador de CentOS/RHEL aparece una opcin para LVM que te permite fcilmente crear los LVM que necesites. * Lo uso en servidores de produccin y me ha sido de utilidad eso de poder quitar y/o poner espacio a particiones, en verdad ayuda y te evita la reinstalacin o el pasar trabajo insertando nuevos discos. * Sugiero usarlo encima de un RAID, pues si un PV se daa, puede joderse todo el sistema.

3- Qu tipo de virtualizacin puedo usar?

Bueno, existen dos tipos en Xen. Paravirtualizacin y full virtualizacin. Paravirtualizacin es mucho ms rpida pues se integran llamadas desde el kernel al hipervisor sin requerir de la ayuda del procesador.Sin embargo se necesita tener el mismo kernel en el dom0 y en los domU, esto es: slo podras instalar linux con el mismo kernel, Es ms, no podras bootear una mquina normal, sino que tendras que hacer una instalacin en base a yum o debootstrap (vieron, ya s de debian y sus hijitos!) desde un chroot y despus bootear. Ms tarde veremos eso. En todo caso, me gusta ms la paravirtualizacin pues me ofrece velocidades cercanas a la velocidad nativa del procesador (con slo un 8% de degradacin en el peor de los escenarios). 2- Full Virtualizacin: El procesador se encargar de emular las llamadas, de sta forma se puede arrancar desde un CD, el sistema trabajar full nativo es decir, el sistema se pensar que est l solito en el procesador. No se requieren modificaciones al kernel, por lo tanto se pueden instalar varios sistemas operativos como domU sinque ellos se enteren en principio.

A mi me pareca excitante esto de full virtualizacin, pero en mediciones que he realizado he notado que hay una gran degradacin del desempeo de la full virtualizacin en lo que respecta a la red (casi un 50% menos de aprovechamiento de la red). Estudios que he analizado indican que es menos eficiente que la paravirtualizacin. En realidad no es algo que pueda o no mejorar el xen, sino que la full virtualizacin depende del procesador (ah, slo he probado en intel con vmx). Supongo que a medida que intel y amd vayan comprendiendo muchas cosas, podrn ir mejorando su tecnologa de virtualizacin. Para determinar si puedo correr en full virtualizacin, hagamos esto: cat /proc/cpuinfo | grep vmx

[root@xen ~]# cat /proc/cpuinfo |grep vmx 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
Si te aparece algo, te salvastes. Si te fijas bien, en la cantidad de informacin de las banderas, a mi me aparece vmx.. eso es.. permite full virtualizacin ste procesador. Si no te aparece vmx, si no te aparece nda, quiz tengas un AMD que s lo permita, Si tienes un amd pon esto entonces:

cat /proc/cpuinfo|grep svm


svm es como se llama la virtualizacin en amd. Si te aparece.. felicidades.. si no te aparece... hum, no te deprimas.. tu mquina no permitir full virtualizacin, sino solamente paravirtualizacin. A mi me gusta la paravirtualizacin, as que no es algo que me quite el sueo. En realidad la que dice vmx es una maquina prestada. Donde comenc a usar Xen fue en un amd durn de 1.6ghz. Cualquier i686 en adelante te permitir experimentar con la paravirtualizacin.

4- Creando una particin LVM


Bueno, esto s hay que tenerlo presente siempre: Antes de instalar cualquier mquina virtual, necesitamos definir cunto espacio en disco vamos a asignarle a la mquina virtual. En este caso, voy a trabajar con valores pequeos pues es slo pruebas. Usar 1 o 2GB que sobran perfectamente para cualquier instalacin de linux e incluso de windows (sin mucha fanfarria, slo la instalacin). Lo primero que hay que hacer antes de crear la mquina virtual es crear el volumen lgico que la contendr. Yo acostumbro llamarles con 3 letras y dos numeros. Las letras indicarn el sistema y los numeros sern un consecutivo. Por ejemplo, comenzaremos instalando una mquina de CentOS, ser la primera por lo que le llamar "cos01"

lvcreate -L1G -ncos01 dsk


ESPERO que hayas ledo y aprendido a usar los LVM. ESPERO que hayas creado el VG llamado "dsk". Si no se llama dsk, entonces ponle el nombre de tu volumen. Aqu lo que hice fue crear un LV llamado cos01 que est basado en el VG llamado dsk y que tiene 1GB de tamao.

5- Preparando el repositorio de instalacin de CentOS


En las instalaciones paravirtuales, necesitamos tener un repositorio con todos los paquetes del linux que vayamos a instalar. En principio instalaremos CentOS como domU. Sugiero que en una mquina aparte, montemos el DVD de CentOS5 en /var/www/html y arranquemos el servidor apache:

mount /dev/dvd /var/www/html service httpd start

Por supuesto, si no tienes apache instalado, dale: yum install httpd

Sugiero que se haga en una mquina aparte, pero si no tienes ms mquinas, monta el dvd en el dom0 y arranca el httpd en el dom0 (no es seguro). DESACTIVA EL SELINUX

6- Usando el virt-install
CentOS 5 ofrece una herramienta llamada virt-install, que te hace una serie de preguntas y te permite instalar una mquina paravirtual o full virtual. En el caso de las paravirtuales solamente podrs instalar RHEL, CentOS o Fedora. Pues son las distribuciones que vienen con un kernel preparado desde el mismo CD que les permite bootear en ambiente paravirtual. RedHat ha sugerido a otras distribuciones que permitan bootear desde ambientes paravirtuales, esperemos que lo hagan. Pero al momento no conozco ninguna otra que bootee directamente. Al ejecutar "virt-install" se harn algunas preguntas, aqui van: virt-install

Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. no What is the name of your virtual machine? cos01 How much RAM should be allocated (in megabytes)? 128 What would you like to use as the disk (path)? /dev/dsk/cos01 Would you like to enable graphics support? (yes or no) no What is the install location? http://192.168.0.89/
En resumen: Le indiqu que no quiero full virtual (por favor, aunque tengan full virtualizacin, comiencen probando la paravirtualizacin). Le dije que mi mquina se llamara cos01, tendra 128MB de RAM, el disco sera el LV que acababa de crear antes (/dev/dsk/cos01), que no quiero soporte grfico y que la URL donde estaba el CD de instalacin es: http://192.168.0.89/ Esta ltima es la mquina donde mont el DVD de centos5. El DVD lo mont en /var/www/html y arranqu apache, por lo que se puede ver. Sobre la memoria: ponle un valor adecuado, 256 seguro que ser ms que suficiente, pero he instalado con 128. despus de instalado se le puede reducir la memoria.

Una vez acabes este paso, buscar la URL, si la puede encontrar, pum.. comenzar el proceso de instalacin de CentOS en ese domU (llamado cos01).

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 | | | +----+ | | | | | +---------------------------------------+ <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen
Fjate qu cmico, sale sin ambiente grfico, ahi con TAB y enter y las teclas de cursor vas instalando

Welcome to CentOS

+----------------------------+ Retrieving +----------------------------+ | | | Retrieving images/minstg2.img... | | | +----------------------------------------------------------------------+

<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen


Aqu la pantalla del particionamiento del disco del domU. Sugiero no tocarlo, dejalo as.

Welcome to CentOS +----------------------------+ Partitioning +---------------------------+ | | | Device Start End Size Type Mount Point | | VG VolGroup00 896M VolGroup ^ | | LV LogVol00 768M ext3 / # | | LV LogVol01 128M swap : | | /dev/xvda : | | xvda1 1 13 101M ext3 /boot : | | xvda2 14 130 917M physical v : | | : | | : | | : | | v | | | | +-----+ +------+ +--------+ +------+ +----+ +------+ | | | New | | Edit | | Delete | | RAID | | OK | | Back | | | +-----+ +------+ +--------+ +------+ +----+ +------+ |

| | | | +-----------------------------------------------------------------------+ F1-Help F2-New F3-Edit F4-Delete F5-Reset F12-OK


Aqu la lista de paquetes, te sugiero lo minimo en principio, despus vas incrementando:

Welcome to CentOS +----------------------+ Package selection +----------------------+ | | | The default installation of CentOS includes a set of software | | applicable for general internet usage. What additional tasks | | would you like your system to include support for? | | | | [ ] Desktop - Gnome ^ | | [ ] Desktop - KDE # | | [ ] Server : | | [ ] Server - GUI v | | | | [ ] Customize software selection | | | | +----+ +------+ | | | OK | | Back | | | +----+ +------+ | | | | | +-----------------------------------------------------------------+

<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen


Va a comenzar la instalacin:

Welcome to CentOS +------------------+ Package Installation +------------------+ | |

| Name : | | Size : | | Summary: | | | | | | Status:+---------+ Install Starting +----------+ | | | | | | | Starting install process. This may | | | | take several minutes... | | | | | Time | | Total +---------------------------------------+ | | Complet | | Remaining: 354 563M | | | | 0% | | | +------------------------------------------------------------+

<Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen


Si no te da error, es que todo te fue feliz. Si te da error, seguro que no actualizastes el dom0, o seguro que no has montado bien el dvd, o no has creado bien el LV

7- Encendiendo y apagando las mquinas

Enviado por Epe el Jue, 2007-05-10 23:06.

Listando las mquinas: xm list Te saldr algo as:

[root@xen ~]# w 23:09:00 up 134 days, 11:09, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ernesto pts/3 xxx.xx.xxx.xx 23:08 0.00s 0.04s 0.01s sshd: ernesto [ [root@xen1 ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 127 2 r----- 238271.8 cos01 120 160 1 -b---- 16218.4 cos03 113 432 1 -b---- 38015.8 cos04 123 160 1 -b---- 215.9 cos05 114 426 1 -b---- 26672.1 cos06 93 224 1 -b---- 381522.5 cos07 58 96 1 -b---- 96268.2 cos10 111 128 1 -b---- 14887.8
Podemos apagar y encender las mquinas por su nombre (Name) Encendiendo la mquina: xm create -c cos01 Esto har que se arranque la mquina llamada cos01 y que veams cmo arranca (-c: Es la consola) Para salir de la consola, apretamos: CTRL - ] Apagando la mquina: podemos dentro de la mquina poner: poweroff O desde el dom0 podemos poner: xm shutdown cos01 Todas las configuraciones de los domU (mquinas virtuales) se guardan en: /etc/xen Arrancando automticamente: Si queremos arrancar una mquina virtual cada vez que arranque el dom0, ponemos: ln -s /etc/xen/cos01 /etc/xen/auto/cos01 xen al arrancar mira siempre los contenidos de /etc/xen/auto y las mquinas que ahi ve, las arranca en orden alfabtico.

4- Instalando un domU automticamente

Enviado por Epe el Mi, 2007-08-22 12:48.

Este pequeo script te ayudar a instalar Xen automticamente. Es para discos creados con LVM Este script bajar los paquetes del sitio de CentOS, si deseas puedes crear un repo local, as hago yo.

#!/bin/bash [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ] && [ -n "$4" ] && [ -n "$5" ] && [ -n "$6" ] && [ -n "$7" ]|| { echo "usar: $0 vmname ip netmask gateway password hdsize ram"; exit 1; } [ -f "/etc/xen/$1" ] && { echo "la maquina virtual $1 existe, eliminela primero"; exit 1;} lvcreate dsk -n$1 -L${6}G cat > /home/centos4.5/ks$1.cfg << EOF # Kickstart file automatically generated by anaconda. install url --url http://mirror.centos.org/centos-4/4/os/i386/. lang en_US.UTF-8 langsupport --default=en_US.UTF-8 en_US.UTF-8 network --device eth0 --bootproto static --ip $2 --netmask $3 --gateway $4 --nameserver 67.15.31.131 --hostname $1.ecualinux.com rootpw $5 reboot firewall --disabled selinux --disabled authconfig --enableshadow --enablemd5 timezone America/Guayaquil bootloader --location=mbr --append="console=xvc0" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work

clearpart --all --initlabel part /boot --fstype ext3 --size=100 --asprimary part swap --size=128 part / --fstype ext3 --size=1 --grow %packages @ text-internet e2fsprogs -kernel kernel-xenU grub -acl -anacron -apmd -at -attr -autofs -redhat-lsb -bluez-bluefw -bluez-hcidump -bluez-libs -bluez-utils -cadaver -cups -cups-libs -dapl -dhclient -dhcpv6_client -dmraid -dos2unix -dosfstools -NetworkManager -mkbootdisk -eject -fbset -fetchmail -finger -fontconfig

-xorg-x11-Mesa-libGL -xorg-x11-libs -gpm -guile -ibutils -swig -ipsec-tools -irda-utils -isdn4k-utils -jpackage-utils -jwhois -lftp -lha -libjpeg -libpng -libtiff -libusb -lksctp-tools -lrzsz -mt-st -mtr -m4 -man -man-pages -mutt -minicom -mtools -syslinux -mdadm -nc -nfs-utils -neon -parted -pcmcia-cs -portmap -ppp -procmail -rp-pppoe

-sendmail -wvdial -yp-tools -ypbind -quota -dump -rsh -rdate -rsync -rdust -rmt -stunnel -slocate -sudo -tcl -talk -telnet -tcsh -setools -unix2dos -unzip -usermode -kbd -system-config-mouse -system-config-network-tui -system-config-securitylevel-tui -wireless-tools -wpa_supplicant -xinetd %post EOF hwaddr=`python -c 'import random; r=random.randint; print "00:16:3E:%02X:%02X:%02X" % (r(0, 0x7f), r(0, 0xff), r(0, 0xff))'` #creando la config del xen cat > /etc/xen/$1 << EOF

kernel = "/boot/kernelinstall45" ramdisk="/boot/initrdinstall45.img" memory = $7 name = "$1" vif = [ 'mac=$hwaddr' ] disk = [ 'phy:/dev/dsk/$1,xvda,w' ] extra = "ip=$2 netmask=$3 gateway=$4 dns=67.15.31.131 hostname=$1.ecualinux.com ks=http://67.15.60.47/ks$1.cfg" on_reboot = 'destroy' EOF xm create -c $1 cat > /etc/xen/$1 << EOF kernel="/boot/vmlinuz-2.6.9-55.ELxenU" ramdisk="/boot/initrd-2.6.9-55.ELxenU.img" root = "/dev/xvda3 ro" memory = $7 name = "$1" vif = [ 'mac=$hwaddr' ] disk = [ 'phy:/dev/dsk/$1,xvda,w' ] on_reboot = 'restart' on_crash = 'restart' EOF xm create -c $1
La instalacin queda en menos de 600MB.

5.1- Otra variante "ms mejor" para instalar debian paravirtual


Aqu lo que intentar ser crear la mquina virtual dentro de un disco. No como el ejemplo anterior que yo creaba dos particiones directamente. El objetivo de esto ser que el grub se instale dentro del disco que creo y que no tenga que depender del kernel externo... pues usar pygrub. Crear el disco:

lvcreate -L3G -ndeb01 dsk

Puedo ahora hacerle un fdisk a esta particin que se ver como un disco a futuro:

fdisk /dev/dsk/deb01
Aqu creo dos particiones:

la primera ser linux (tipo 83) la segunda ser swap (tipo 82)

Con kpartx abrir el disco:

kpartx -a /dev/dsk/deb01
Oh s, les presento a kpartx: "kpartx: este es mi amigo. Mi amigo: este es kpartx". Podemos seguir ahora? kpartx dividir el disco en particiones de forma tal que lo pueda formatar y montar una particin especfica (deb01p1). podemos ver la lista de particiones en /dev/mapper, vers que aparecern dos: deb01p1 y deb01p2 (las dos particiones que anteriormente cre). Ahora proceder a formatear ambas (una en ext3 y otra en swap), as como montar la primera que es la de ext3

mkfs.ext3 /dev/mapper/deb01p1 mkswap /dev/mapper/deb01p2 mount /dev/mapper/deb01p1 /mnt


Monto /dev/mapper/deb01p1 en /mnt para poder utilizar debootstrap Este ejemplo asume que el paquete debootstrap est instalado. Este paquete puede ser obtenido del repo EPEL: http://www.ecualug.org/?q=2008/05/14/comos/instalando_repo_de_epel_en_nues tro_centos Con el debootstrap procedo a instalar la base del sistema:

debootstrap --arch i386 lenny /mnt/ http://ftp.us.debian.org/debian


Ahora me enjaulo e instalo un par de paquetes que me interesan:

chroot /mnt su -

mount -t proc proc /proc mount -t sysfs sysfs /sys /etc/init.d/mountdevsubfs.sh start mkdir /boot/grub aptitude update aptitude install locales dpkg-reconfigure locales (aqui sal y entr del su - no s si sea bueno) aptitude install linux-image-xen-686 libc6-xen grub ssh
El nuevo debian no tiene fstab, as que me toca crearle a mano: vi /etc/fstab

/dev/xvda1 / ext3 errors=remount-ro,noatime 0 1 /dev/xvda2 swap swap defaults 0 0 proc /proc proc defaults 0 0
Falta igualmente un pequeo /etc/hosts, lo pongo: vi /etc/hosts

127.0.0.1 localhost.localdomain localhost 1.2.3.4 nombre nombre.de.mimaquina


Lo mismo para la configuracin de la red: vi /etc/network/interfaces

auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 7.5.2.23 netmask 255.255.255.0 gateway 7.5.2.1
Tambien pongo un nombre a la maquina: vi /etc/hostname

deb01.nuestroserver.com
Cambio la clave de root

passwd
En el /etc/inittab busco una linea que comience con 1:2345:...... y le comento, entonecs agrego esta. Es para que puedas ver la consola serial:

T1:2345:respawn:/sbin/getty 38400 hvc0

creo un archivo llamado /boot/grub/menu.lst que contenga esto (Verificar versin del kernel y ramdisk):

#boot=/dev/xvda default=0 timeout=3 hiddenmenu title debian root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-xen-686 ro root=/dev/xvda1 initrd /boot/initrd.img-2.6.26-2-xen-686
adems creo un enlace directo para menu.lst

ln -s /boot/grub/menu.lst /boot/grub/grub.conf
Salgo del chroot y creo la configuracin de la mquina /etc/xen/deb01 que contiene esto:

bootloader = "/usr/bin/pygrub" memory = 64 name = "deb01" vif = [ "mac=00:16:3e:43:3d:e1,bridge=xenbr0" ] disk = [ 'phy:/dev/dsk/deb01,xvda,w' ]

Le activo automticamente

ln -s /etc/xen/deb01 /etc/xen/auto/
desmonto /mnt

umount /mnt/proc umount /mnt/sys

umount -f -l /mnt kpartx -d /dev/dsk/deb01


Esta es la forma que sugiero!!! Estas pruebas las realic en mis servidores de virtualizacin y son completamente funcionales.

7- Instalando KVM
hum, bueno, KVM es un bonito experimento que le garantizo buen futuro. Es un sistema en el cual las mquinas virtuales se ven como procesos para el kernel de tu CentOS. Quieres matar una mquina virtual? Matas un proceso. Quieres arrancar una mquina virtual? Se arranca un proceso, etc. Bueno, KVM es medio reciente, es incorporado a partir del kernel 2.6.20; ni RedHat ni CentOS han implementado soporte para KVM en el presente. Sin embargo existe un paquete de kvm que est siendo actualizado y mantenido, aunque en testing todava, en el sitio de CentOS. KVM requiere de un procesador que tenga implementada virtualizacin. Es decir, no trabaja con cualquier procesador. En el futuro ms y ms procesadores ya vendrn con la virtualizacin provista. Instalemos el KVM Lo que vamos a hacer es: 1- Instalar el repo de testing para CentOS-5 2- Instalar el KVM de ese repo 3- ver cmo funciona y arranca una mquina 4- explicar trucos, si es que existen, para cada linux que he instalado.

1- Instalando el repo y los paquetes


Lo primero que debemos hacer es instalar el testing repo, para eso nos cambiaremos a /etc/yum.repos.d y bajaremos el repo:

cd /etc/yum.repos.d/ wget http://dev.centos.org/centos/5/CentOS-Testing.repo

Ahora que lo tenemos instalado podemos proceder a instalar el kvm:

yum --enablerepo=c5-testing install kvm kmod-kvm


Una vez arrancado tienes que tener en cuenta una precaucin. El kvm no funciona en un kernel XEN. Debes reiniciar tu mquina con un kernel que no sea xen, si es que ests en xen.

2- Arrancando alguna distro


Bueno, ya supongo que arrancaste con un kernel no xen y que ya tienes instalado los paquetes. Probemos alguna distro. Encontr as como quien no quiere las cosas ubuntu 7.0.algo .nombrecurioso-feisty-fawn-no-sque y lo he puesto, en resumen: que puse un cd de instalacin de ubuntu. Tengo que crear un volumen lgico:

lvcreate -L2G -nkvm01 dsk


Para los que no conocen de LVM, por favor ver en el howto de virtualizacin de XEN o en los howtos de aqui, explico claramente cmo se hace. Una vez creada el volumen LVM arranco el kvm:

qemu-kvm -hda /dev/dsk/kvm01 -cdrom /dev/cdrom -boot d


esto indicar que el disco hda ser el volumen LVM recin creado /dev/dsk/kvm01 y que el CD est puesto en /dev/cdrom y que arrancar desde cd (d). Vigila por favor que no diga algo as como: no encuentro /dev/kvm, si te dice eso es que no has instalado el kvm correctamente o que el kernel conque ests es un kernel xen o un kernel sin kvm. Ahi comenzar el proceso de instalacin y dems. En el caso de ubuntu no saldr nada en la pantalla, le d varios "enter" y agarr. Es por la imagen que presenta ubuntu al arrancar no se lleva bien con estos sistemas. Para poder usar esa mquina virtual, la arrancas cuantas veces quieras con:

qemu-kvm -hda /dev/dsk/kvm01 -boot c


Si quieres darle ms memoria puedes poner -m ### (en MB, por ejemplo: 256)

9- Extendiendo el tamao de un disco contenido dentro de un LV


Antes que nada, este procedimiento no es para los dbiles de corazn. Segunda advertencia: antes de hacer este procedimiento no hagas como yo y por el amor de dios saca un respaldo total! Ahora s. Mira, sucede que a veces me piden que extienda un disco de tamao, los discos de mis clientes yo los monto dentro de LV. Y dentro de este LV pongo sus particiones, dos o tres o las que sean. El caso ltimo fue precisamente ecualug, ya desde hace unas semanas estaba por extenderle el espacio en disco pues ya estaba al 100% (por eso a veces no responda).. hasta que por fin hoy ya me molest pues amaneci down nuevamente ecualug y proced. Pondr un ejemplo muy sencillo (no es el caso de ecualug), supondremos que ecualug tiene solamente dos particiones dentro de su LV de la siguiente forma:

Device Boot Start End Blocks Id System /dev/dsk/ecualug1 1 570 4578493+ 83 Linux /dev/dsk/ecualug2 571 587 136552+ 82 Linux swap / Solaris
Fjate, tiene como 4GB en la primera particin. y unos 128MB en la segunda, la segunda es de SWAP. El LV se llama /dev/dsk/ecualug y es el que debo redimensionar. Le agregar 10GB aproximadamente. Aqui va el paso a paso: 1- Apago la mquina virtual (cos02 se llama en mi caso)

xm shutdown cos02

No trabajes con la mquina encendida o jodes todo! 2- Una vez est apagada, reljate que cualquier error de aqui en adelante es mortal. 3- procedo a revisar la particin 1 (y en tu caso cualquier particin ext3 que tengas)

kpartx -a /dev/dsk/ecualug fsck -f /dev/mapper/ecualug1 kpartx -d /dev/dsk/ecualug


Si todo se revisa feliz y correctamente entonces proceder con el siguiente paso: 4- Voy a eliminar la particin numero 2 (que es swap y en mi caso me da igual, quiero eliminarla y despus crearla). El objetivo es para despus tener espacio para redimensionar la particin 1.

fdisk /dev/dsk/ecualug Command (m for help): p Disk /dev/dsk/ecualug: 4831 MB, 4831838208 bytes 255 heads, 63 sectors/track, 587 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/dsk/ecualug1 1 570 4578493+ 83 Linux /dev/dsk/ecualug2 571 587 136552+ 82 Linux swap / Solaris Command (m for help): d Partition number (1-4): 2 Command (m for help): w The partition table has been altered! [root@xen2 ~]# partprobe

te resumo: elimin la particin 2, grab (con w) y proced a partprobe para que retomara el cambio. 5- Voy a extender el LV:

lvextend -L+10G /dev/dsk/ecualug


6- Una vez extendido procedo a entrar nuevamente al fdisk para borrar la particin 1 y crearla nuevamente comenzando por el mismo cilindro, pero esta vez ms grande!:

[root@xen2 ~]# fdisk /dev/dsk/ecualug

The number of cylinders for this disk is set to 1892. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes 255 heads, 63 sectors/track, 1892 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/dsk/ecualug1 1 570 4578493+ 83 Linux Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1892, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1892, default 1892): 1750 Command (m for help): p Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes 255 heads, 63 sectors/track, 1892 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/dsk/ecualug1 1 1750 14056843+ 83 Linux

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (1751-1892, default 1751): Using default value 1751 Last cylinder or +size or +sizeM or +sizeK (1751-1892, default 1892): Using default value 1892 Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap / Solaris) Command (m for help): p Disk /dev/dsk/ecualug: 15.5 GB, 15569256448 bytes 255 heads, 63 sectors/track, 1892 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/dsk/ecualug1 1 1750 14056843+ 83 Linux /dev/dsk/ecualug2 1751 1892 1140615 82 Linux swap / Solaris Command (m for help): w The partition table has been altered!
Fjate, antes acababa en el cilindro 570, entonces borr la primera particin, y la cre comenzando en el mismo cilindro que antes (1) pero esta vez le puse ms cilindros (1750). Aprovech y cre una segunda particin para swap que cubriera hasta el final de los cilindros. 7- Ahora proceder a hacer un resize2fs a la particin 1, para que ocupe el sistema de archivos su nuevo tamao pues al momento la particin es ms grande que el sistema de archivos:

[root@xen2 ~]# kpartx -a /dev/dsk/ecualug [root@xen2 ~]# resize2fs /dev/mapper/ecualug1 resize2fs 1.39 (29-May-2006)

Resizing the filesystem on /dev/mapper/ecualug1 to 3514210 (4k) blocks. The filesystem on /dev/mapper/ecualug1 is now 3514210 blocks long. [root@xen2 ~]# mkswap /dev/mapper/ecualug2 Setting up swapspace version 1, size = 1167982 kB [root@xen2 ~]# kpartx -d /dev/dsk/ecualug

Ah s, de paso cre una swap en la segunda particin. y listo, ahora s, arranca la mquina que te debe funcionar si respetastes todos los pasos. Te resumo: El redimensionamiento se puede dar en particiones que queden al final del disco. De forma tal que se pueda extender el disco (lvextend) y despus borrar esa ultima particin y crearla del nuevo valor pero siempre partiendo del mismo cilindro.No se te ocurra redimensionar una particin partiendo desde un cilindro diferente al que tena antes!!!! Esto es lo primordial. En mi caso la particin a redimensionar estaba delante de otra (swap), pero como la swap se puede borrar y crear de nuevo, lo que hice fue precisamente esto, la borr, de forma tal que me qued con la particin a redimensionar al final (pues quedaba slo una). Despus que la redimension proced a crear la swap nuevamente al final. Si quieres que te ayude redimensionando particiones, con sumo gu$to...

Cmo generar numeros de MAC aleatoriamente


Muy al inicio lo haca as a lo caballo: tomando un numero MAC y modificndolo, pero uno de aquellos das leyendo (pues para eso escriben la documentacin, para leer) me d cuenta que Xen reserv todo el rango:

00:16:3e:XX:YY:ZZ
Manejamos decenas de mquinas virtuales diariamente en nuestro negocio y ya la "generacin cerebral pseudoaleatoria de numeros" me estaba fallando, as que me dije: bueno, por qu a nadie se le ha ocurrido lo que a m, en crear un script para generar aleatoriamente nmeros? Cre un tremendo script, slo para darme cuenta que alguien ya lo haba hecho! (eso pasa por NO leer la documentacin). Disculpen, le encontr en un doc de RedHat, pero para que no se olvide aqu le dejo puesto:

vi /usr/sbin/macgen.py
pongo:

#! /usr/bin/python # macgen.py script generates a MAC address for Xen guests # import random mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] print ':'.join(map(lambda x: "%02x" % x, mac))
Despus le das derecho de ejecucin : chmod +x /usr/sbin/macgen.py y ya puedes invocarlo cuantas veces quieras, mira:

[root@xen01 ~]# macgen.py 00:16:3e:4e:5c:0a [root@xen01 ~]# macgen.py 00:16:3e:34:3c:01 [root@xen01 ~]# macgen.py 00:16:3e:50:ec:04 [root@xen01 ~]# macgen.py 00:16:3e:04:e8:d9
La MAC es un protocolo de capa 2 por lo que slo funciona en redes fsicas, no atraviesa ruteadores ni nada por el estilo, por lo que el nico requerimiento es que este nmero no coincida para mquinas que estn presentes en la misma red.

Utilizando dos tarjetas de red del dom0 en el domU


Este documento es una "mejora" a: http://www.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-VirtualizationPre_Red_Hat_Enterprise_Linux_5.4_Xen_networking.html Supongamos que tenemos dos tarjetas de red en nuestro hardware, en nuestro dom0. Supongamos que quiero que ambas tarjetas acten como DOS switches diferentes. Es decir, quiero que ambos switches (tarjetas) se conecten a redes diferentes. Por defecto Xen utiliza la tarjeta eth0 para el primer bridge que le llama xenbr0 e ignora las tarjetas adicionales que puedas tener. Lo que haremos es reconfigurar los scripts de xen para que al levantar xend arranque un segundo bridge: xenbr1 asociado a eth1 Quedara as: eth0 es xenbr0 eth1 es xenbr1 por supuesto puedes modificar el script para tantos bridges como necesites. Yo asumo que tanto eth0 como eth1 ya estn configurados normal, cada tarjeta con ips de sus respectivas redes (que no sean de la misma red!!) Entonces los pasos son los siguientes: 1- Si deseas lees http://www.redhat.com/docs/enUS/Red_Hat_Enterprise_Linux/5.4/html/Virtualization_Guide/chap-VirtualizationPre_Red_Hat_Enterprise_Linux_5.4_Xen_networking.html 2- crear una copia de: /etc/xen/scripts/network-bridge

cp /etc/xen/scripts/network-bridge /etc/xen/scripts/network-bridge.xen
3- vi /etc/xen/xend-config.sxp y comentar:

#(network-script network-bridge)

Agregar justo debajo:

(network-script network-xen-multi-bridge)
quedara as:

#(network-script network-bridge) (network-script network-xen-multi-bridge)


Lo que estoy es cambiando el script de arranque de la red de xen, por uno llamado network-xenmulti-bridge 4- Crear el siguiente archivo:

vi /etc/xen/scripts/network-xen-multi-bridge
Que contenga lo siguiente:

#!/bin/sh # network-xen-multi-bridge # Exit if anything goes wrong. set -e # First arg is the operation. OP=$1 shift script=/etc/xen/scripts/network-bridge.xen case ${OP} in start) $script start vifnum=1 bridge=xenbr1 netdev=eth1 $script start vifnum=0 bridge=xenbr0 netdev=eth0 ;; stop) $script stop vifnum=1 bridge=xenbr1 netdev=eth1 $script stop vifnum=0 bridge=xenbr0 netdev=eth0 ;; status) $script status vifnum=1 bridge=xenbr1 netdev=eth1 $script status vifnum=0 bridge=xenbr0 netdev=eth0 ;; *) echo 'Unknown command: ' ${OP} echo 'Valid commands are: start, stop, status' exit 1 esac
A este script le doy derechos de ejecucin:

chmod +x /etc/xen/scripts/network-xen-multi-bridge
Y listo. Reinicio el xend:

service xend restart


y ya estar lista la segunda red. Lo puedes comprobar si haces:

ifconfig
vers algo as:

xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:801 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:116109 (113.3 KiB) TX bytes:0 (0.0 b) xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:61236 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4675108 (4.4 MiB) TX bytes:0 (0.0 b)

ves? xenbr0 y xenbr1 Configuracin de las mquinas virtuales para usar ambas tarjetas Ahora, las mquinas virtuales que configures, vendrn configuradas para usar la primera red, si haces por ejemplo un cat /etc/xen/cos01 (pensando que as se llame tu mquina virtual) vers lo siguiente:

. vif = [ "mac=00:16:36:62:9d:9b,bridge=xenbr0" ] .
Si no viene bridge=xenbr0 eso es porque es por defecto, no te preocupes. Si quieres usar ambos switches (tarjetas de red) simplemente modificas esta linea y la dejas as:

. vif = [

"mac=00:16:36:62:9d:9b,bridge=xenbr0","mac=00:16:36:6e:93:9b,bridge=xenbr 1" ] .
Lo que estoy indicando es lo siguiente: eth0 tiene de MAC 00:16:36:62:9d:9b y est conectada al switch virtual llamado xenbr0 (a la eth0) eth1 tiene de MAC 00:16:36:6e:93:9b y est conectada al switch virtual llamado xenbr1 (a la eth1) Apagas y enciendes la mquina virtual. Y listo,ahi tienes un equipo domU conectado a ambos switches, a ambas redes. Al arrancar por primera vez la mquina virtual, eth1 estar configurada para usar dhcp, te tocar dentro de la mquina virtual configurar eth1 para no usar dhcp si es que en la red donde est eth1 no hay servidor de dhcps. Eso es normal como siempre se hace.

Utilizando una tarjeta de red del dom0 en dos del domU


Piensa en el dom0 como "algo" que acta como un switch. la eth0 piensa que es un switch, yo puedo conectar a este switch dos tarjetas de red de un equipo (del domU). El objetivo? Quiz quieras probar una red con uno o varios equipos que tengan dos tarjetas. Por ejemplo piensa que ests probando NAT o firewall o algo as: -eth0|domU1|eth1-----eth0|domU2|eth1------eth0|domU3| En este ejemplo tengo 3 domU (1, 2 y 3) el 1 y el 2 tienen 2 tarjetas de red. Quiz ests probando rutas o lo que desees. Ahora, en el dom0 tienes una sola tarjeta fsica. No hay problema. Te presento cmo quedara la configuracin del vif del domU1:

. vif = [ "mac=00:16:36:62:9d:9b,bridge=xenbr0","mac=00:16:36:6e:93:9b,bridge=xenbr 0" ] .


fjate, he creado dos tarjetas de red (con dos mac diferentes) AMBAS en el mismo switch (xenbr0). Ya dentro del domU puedes ponerle las IPs que desees a cada una de las tarjetas, incluso de redes IPs diferentes, pues esto se puede hacer en un verdadero switch tambin (tu puedes conectar dos tarjetas de un mismo equipo a un mismo switch y ponerle ips diferentes). Por supuesto para que dos equipos se vean, seguramente debern estar en una misma red ip, por lo que si vas a conectar varios equipos al menos la IP de la tarjeta de uno debe estar en la misma red ip que la IP de la tarjeta de otro y as irlos encadenando. Requiere de conocimiento de redes

VLANS en xen
Todo se desarrollar en principio en /etc/sysconfig/network-scripts/ Por ejemplo si quiero crear una vlan llamada 9 debo crear un archivo para mi bridge llamado ifcfg-xenbr9 que ser el bridge (switch) que se relacionar con la vlan9 El contenido de este archivo dir:

DEVICE=xenbr9 BOOTPROTO=static IPADDR=0.0.0.0 ONBOOT=yes TYPE=Bridge


Entonces debo crear un archivo de configuracin para el vlan llamado ifcfg-bond0.9 En mi caso se llama ifcfg-bond0.9 porque es una interfaz con bonding, quiz en tu caso se deba llamar ifcfg-eth0.9 si usas una eth0 y no bonding. El .9 es la VLAN. Dentro del archivo pongo:

VLAN=yes DEVICE=bond0.9 BOOTPROTO=static ONBOOT=yes TYPE=Ethernet BRIDGE=xenbr9

Por supuesto si tu interfaz se llama eth0 y no bond0, ajusta los valores. Al final, en el archivo de configuracin de la mquina virtual ajusto vif:

vif = [ "ip=x.y.z.w,bridge=xenbr9"]
fjate que dice: bridge=xenbr9 de esta forma usar la mquina virtual el bridge9 que es el perteneciente a la vlan9 reinicio una vez el xend:

service xend restart

y listo, ya puedo arrancar mi mquina en la vlan9 Antes de que preguntes, ten en cuenta una cosa, en el 100% de las ocasiones esto no funciona porque la VLAN no est bien creada por el administrador de la red, verifica una y mil veces que la vlan funcione antes de preguntar.

migrando domU de un disco local a un disco local


el otro da a Rafael le sucedi lo mismo: Tena una mquina con un disco local, las mquinas virtuales estaban en LV cada una. Se top conque tena un nuevo hardware y quera migrar las mquinas virtuales al nuevo equipo. Variants hay muchas, puede ser mediante aoe, pero yo us otra un poco ms a la antigua. Me sucedi que tambin me v en la necesidad de migrar un servidor virtual nuestro hacia otro hardware, en otro sitio fsicamente separados, opt por realizar los siguientes pasos: 1- En el viejo XEN, tomar un snapshot del LV de la mquina virtual que voy a migrar: el snapshot es independiente del LV original y no deja de funcionar la mquina virtual

lvcreate -s -L10G -nbackup /dev/dsk/nombredellvfuncionando


-s: es un snapshot, es rapidisimo, es una foto de cmo est la mquina en este momento el nuevo lv (backup le llam) debe ser del mismo tamao que el antiguo. /dev/dsk/nomberdellvfuncionando es el nombre del lv del que quiero fotografiar 2- acceder a ese snapshot: Tipicamente una maquina virtual tiene varias particiones (al menos una para / y otra para SWAP), pero desde el pnto de vista del dom0, slo se ve un LV, tenemos que segregarlo, para dividirlo usamos kpartx:

kpartx -a /dev/dsk/backup

Fijate, estoy usando el snapshot, no se te ocurra usar el LV de la maquina que est viva. Usa el del snapshot que recin creastes Al usar kpartx se crea un dispositivo en /dev/mapper por cada particin dentro del LVM, se veran como

/dev/mapper/backupp1 /dev/mapper/backupp2 .

. .
p1, p2 (particin 1, particin2) Podra entonces montar la o las particiones que tienen datos (en mi ejemplo pensar que es slo una y la otra es swap). Swap no necesita ser respaldada

mount /dev/mapper/backupp1 /mnt


3- hacer un tar de todo y enviarlo al servidor remoto y copiar ese tar a la mquina remota

cd /mnt star zc f=- . | ssh servidor.remoto.com "cat -> respaldo.tar.gz"


4- en el xen nuevo, instalar un domU, entonces apagarlo. Lo instalo normalmente.. y lo apago porque slo usar la particin que me crear Una vez lo tenga instalado, procedo a montar la particin de datos, la formateo (para dejarla en blanco).

kpartx -a /dev/dsk/maq1 mkfs.ext3 /dev/mapper/maq1p1 mount /dev/mapper/maq1p1 /mnt


5- abrir los contenidos del tar de la maquina vieja en este lugar

cd /mnt star zx f=/root/respaldo.tar.gz


6- cambiar fstab e ifcfg-eth0 puesto que quiz esto cambi

vi /mnt/etc/fstab vi /mnt/etc/sysconfig/network-script/ifcfg-eth0 vi /mnt/etc/sysconfig/network


7- Eliminar los mappers creados en ambos servidores: en viejo server elimino adems el snapshot:

kpartx -d /dev/dsk/backup lvremove /dev/dsk/backup


en nuevo server elimino el mapper ANTES DE ARRANCAR LA MAQUINA

umount /mnt kpartx -d /dev/dsk/maq1


8- arrncar la maquina en el nuevo server:

xen create maq1


Tuve que migrar 19 maquinas virtuales, tom menos de media hora por cada una.

También podría gustarte