jueves, 27 de noviembre de 2008

vdi is already registered

Es posible que algún día necesitemos restaurar una copia de una máquina virtual que teníamos instala. O simplemente pretendemos copiar una máquina virtual para tener dos y no tener que esperar el tiempo de instalación.

Para hacer esto tenemos que registrar el fichero.vdi en el servidor de VirtualBox. Para hacer esto haremos:
VBoxManage registerimage disk fichero.vdi -type normal

Si este fichero.vdi ya ha estado funcionando en este servidor de VirtualBox no mostrará el siguiente error.
VirtualBox Command Line Management Interface Version 1.6.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

[!] FAILED calling virtualBox->RegisterHardDisk(hardDisk) at line 6478!
[!] Primary RC = NS_ERROR_INVALID_ARG (0x80070057) - Invalid argument value
[!] Full error info present: true , basic error info present: true
[!] Result Code = NS_ERROR_INVALID_ARG (0x80070057) - Invalid argument value
[!] Text = A hard disk with UUID {xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} or with the same properties ('fichero.vdi') is already registered
[!] Component = VirtualBox, Interface: IVirtualBox, {xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}
[!] Callee = IVirtualBox, {xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}

Para solucionar esto podemos clonar el fichero.vdi, de forma que le asignará un nuevo identificador y podremos registrar el fichero.vdi resultante.
VBoxManage clonevdi DiscoAClonar.vdi DiscoResultante.vdi
VirtualBox Command Line Management Interface Version 1.6.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Una vez terminado el proceso de clonación podremos registrar el nuevo fichero.vdi.
VBoxManage registerimage disk DiscoResultante.vdi -type normal

miércoles, 19 de noviembre de 2008

Tamaño máximo de correo Postfix / dbmail

Para controlar el tamaño de los correos que salen de nuestro servidor de correos dbmail/postfix simplemente tendremos que configurar la variable message_size_limit asignándole un valor. Esta variable tendremos que modificarla o añadirla si no la tenemos en el fichero /etc/postfix/main.cf.
message_size_limit = 5120000

En este caso el límite del correo a enviar es de 5MB.

martes, 18 de noviembre de 2008

Cliente VRDP para la consola de servidores virtuales

Recordaréis que en otro post publiqué como modificar los parámetros de una máquina virtual, pues ahora veremos para qué sirve el parámetro vrdpport.

Con este parámetro definimos el puerto que se usará en la máquina servidora para el volcado de la consola del sistema virtual. Es decir, en lugar de usar un entorno gráfico para usar la máquina virtual, lo volcaremos a este puerto para poder servir el sistema.

Este es el comando para modificar este puerto de escucha, como es lógico cada máquina virtual tendrá que tener su propio puerto, no podemos tener dos máquinas virtuales en el mismo puerto. Si intentamos lanzar dos máquinas en el mismo puerto, simplemente la segunda no iniciará.
VBoxManage modifyvm NombreDeMiMaquinaVirtual -vrdpport 3390

Cuando iniciamos la máquina virtual, tendremos que hacerlo con el -type vrdp, así se iniciará sin esperar a que nadie se conecte a la consola.
VBoxManage startvm NombreDeMiMaquinaVirtual -type vrdp

Para entrar desde un máquina GNU/Linux en la consola de administración de una máquina virtual, solo tendremos que hacer rdesktop -a 16 IP:PUERTO, usando la IP del servidor de máquinas virtuales, porque es ahí donde está corriendo el puerto de escucha.
rdesktop -a 16 xxx.xxx.xxx.xxx:3390

Además de hacer esto también podríamos configurar la máquina virtual con algún programa de administración para conectarnos a ella directamente. Sin necesidad de entrar desde la máquina servidora. Por ejemplo SSH, VNC o Terminal Server, en el caso de máquina Window$.

Para conectar con la consola de administración desde una máquina Window$ supongo que será usando del cliente de Terminal Server, pero no sé si se le podrá modificar el puerto al que ataque.

viernes, 14 de noviembre de 2008

Administración de máquinas virtuales

Encender máquinas virtuales


Para encender una máquina virtual desde línea de comandos en un servidor sin entorno gráfico.
VBoxManage startvm winxp -type vrdp

Apagar máquinas virtuales


Para apagar las máquinas virtuales tenemos varias opciones, he probado con una máquina virtual Debian y la opción acpipowerbutton hace como si en una máquina física apretásemos una vez el botón de encendido. Esto envía una señal al sistema para que detenga todos los procesos y ser apague correctamente.
VBoxManage controlvm Debian acpipowerbutton

Otra opción para apagar una máquina virtual es poweroff, yo llamo a esto "el botonazo", básicamente esto lo que hace es "cortarle la corriente eléctrica" a la máquina virtual y no deja que el sistema se apague correctamente.
VBoxManage controlvm winxp poweroff

Esto me llevó a buscar algún método para apagar una máquina Window$ que no responde a una petición acpipowerbutton y sin tener que usar el llamado "botonazo".
Pues encontré una solución muy buena. Con esta instrucción podemos apagar un servidor Window$ sin necesidad de estar conectado, simplemente ejecutando el comando desde el servidor de máquinas virtuales. Donde pongo "xxx.xxx.xxx.xxx" hay que poner la IP de la máquina Window$ que pretendemos apagar. Donde pongo "-U Administrador%1234", Administrador es el usuario con permisos para apagar la máquina y 1234 es la clave del usuario Administrador.
net rpc SHUTDOWN -t 0 -C "Apagado desde el servidor de maquinas vituales" -f -I xxx.xxx.xxx.xxx -U Administrador%1234

Registro de discos duros


Hay que tener mucho cuidado con el tipo de registro que hacemos de un disco duro virtual, porque si lo hacemos inmutable no se modificará su estado. Es decir, cuando instalemos algo y apaguemos y volvamos a encender la máquina virtual, todo se quedará como al principio.
Esto puede ser muy útil cuando tenemos una máquina virtual en la que queremos hacer alguna prueba de configuración pero queremos probar pudiendo volver al estado anterior.
VBoxManage registerimage disk winxp.vdi -type immutable
VBoxManage registerimage disk winxp.vdi -type normal

Montar una imagen ISO


Ya que tenemos una unidad virtual de DVD, podríamos montarla con una imagen ISO. Es sencillo, simplemente tenemos que decirle cual es la máquina virtual y donde está la ISO. Cuando volvamos a encender la máquina virtual veremos que dentro del lector de DVD tenemos los datos que contienen la ISO.
VBoxManage modifyvm winxp -dvd /home/usuario/misISOs/PoInT_v7.iso

jueves, 13 de noviembre de 2008

Creación de máquina virtual desde linea de comandos

Podréis encontrar en muchos sitios web como crear máquinas virtuales desde el asistente gráfico que incorpora VirtualBox. Dejo algunos enlaces para el que prefiera crearlas desde entorno gráfico.

crear-maquinas-virtuales-en-debian-etch-con-virtualbox
crear-una-maquina-virtual-virtual-box
crear-maquina-virtual-para-instalar

Yo personalmente prefiero administrar siempre los servidores desde linea de comandos, así que publico como crear máquinas virtuales desde la linea de comandos.

Lamentablemente necesitaba virtualizar una máquina window$ así que son los comandos que usaré para publicar este post.

Lo primero será crear la máquina virtual dándole un nombre y registrándola en nuestro VirtualBox.
VBoxManage createvm -name winxp -register

Una vez creada iremos lanzando modificaciones para tener una configuración más concreta de nuestra máquina virtual.

Yo ya tenía una imagen de un window$ XP, así que vamos a reciclarla en esta máquina. Y así nos ahoramos el tiempo de instalación.

Lo primero que hay que hacer para asociar un disco virtual a una máquina virtual es registrar el disco en nuestro VirtualBox.
VBoxManage registerimage disk winxp.vdi -type normal

Después asociamos el disco a la máquina virtual.
VBoxManage modifyvm winxp -hda winxp.vdi

Le asignamos a la máquina virtual 1GB de memoria RAM que cogerá de la máquina servidora.
VBoxManage modifyvm winxp -memory 1024

A mí personalmente no me gusta dejar el puerto de VRDP por defecto, así que lo modifico para que esta máquina virtual escuche en otro puerto distinto. Además si pretendemos tener más de una máquina virtual en el mismo servidor, no podremos iniciarlas a la vez si el puerto VRDP es el mismo.
VBoxManage modifyvm winxp -vrdpport 3390

Configuramos la tarjeta de red con NAT sobre la máquina servidora.
VBoxManage modifyvm winxp -nic1 nat -cableconnected1 on

Una vez hecho todo esto ya tendríamos la máquina preparada para correr. Y podríamos iniciarla ejecutando:
VBoxManage startvm winxp -type vrdp

Si queremos entrar dentro de la consola de nuestra máquina servidora usamos el comando rdesktop, donde pongo las xxx.xxx.xxx.xxx tendrás que poner la IP de tu servidor de VirtualBox.
rdesktop -a 16 xxx.xxx.xxx.xxx:3390

Ya puedes usar tu máquina Window$ corriendo en un servidor GNU/Linux con VirtualBox.

Todo esto está muy bien, pero será más cómodo la esa máquina virtual tenga su propia IP dentro de nuestra Red y que la máquina servidora sea transparente. Para esto tendremos que hacer algunas modificaciones en nuestro sistema y en nuestra máquina virtual.

Lo primero que haremos será modificar nuestro fichero /etc/network/interfaces. Tendremos la configuración una nueva tarjeta "virtual" que hará un puente entre nuestra tarjeta de red que utilicemos.
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto br0
iface br0 inet dhcp
bridge_ports eth0

Después de reiniciar las interfaces (/etc/init.d/networting restart) hacemos un ifconfig y veremos las dos tarjetas, la virtual con si propia IP asignada por el DHCP y la eth0 también con su propia IP.
usuario@maquina:~$ ifconfig
br0 Link encap:Ethernet direcciónHW XX:XX:XX:XX:XX:XX
inet dirección:xxx.xxx.xxx.xxx Difusión:xxx.xxx.xxx.xxx Máscara:xxx.xxx.xxx.xxx
dirección inet6: fe80::20a:5eff:fe5f:e275/64 Alcance:Vínculo
ARRIBA DIFUSIÓN CORRIENDO MULTICAST MTU:1500 Métrica:1
RX packets:7328 errors:0 dropped:0 overruns:0 frame:0
TX packets:6345 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:5590681 (5.3 MB) TX bytes:882468 (861.7 KB)

eth0 Link encap:Ethernet direcciónHW XX:XX:XX:XX:XX:XX
ARRIBA DIFUSIÓN MULTICAST MTU:1500 Métrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

lo Link encap:Bucle local
inet dirección:127.0.0.1 Máscara:255.0.0.0
dirección inet6: ::1/128 Alcance:Anfitrión
ARRIBA LOOPBACK CORRIENDO MTU:16436 Métrica:1
RX packets:3287 errors:0 dropped:0 overruns:0 frame:0
TX packets:3287 errors:0 dropped:0 overruns:0 carrier:0
colisiones:0 txqueuelen:0
RX bytes:155517 (151.8 KB) TX bytes:155517 (151.8 KB)

Ahora vamos a crear una nueva tarjeta de red de VirtualBox que estará enlazada con la br0 que hemos creado. Para ello tenemos que parar un servicio de VirtualBox que administra las conexiones de red de las máquinas virtuales. Crear la tarjeta VirtualBox y después volver a encender el administrador de redes VirtualBox.

Las tarjetas de red de VirtualBox están asociadas a un usuario, yo corro los servicios de VirtualBox con root, si preferís correrlos con otro usuario, tendréis que darles permisos al fichero /dev/net/tun.
/etc/init.d/vboxnet stop
VBoxAddIF vbox0 root br0
/etc/init.d/vboxnet start

Ahora al hacer ifconfig veremos además de nuestra lo, eth0 y br0 la nueva tarjeta vbox0.

Solo nos falta asignar esta vbox0 para que la use directamente nuestra máquina virtual.
VBoxManage modifyvm winxp -nic1 hostif -cableconnected1 on -hostifdev1 vbox0

vbox0 no puedes configurarla desde el servidor de máquinas virtuales, la configuración de IP y puerta de enlace tendrás que hacerla dentro de la máquina virtual.

Es posible que necesitemos tener un disco secundario para usar como almacen dentro de nuestra máquina virtual. Son un par de pasos muy sencillos.

Creamos el fichero .vdi con un tamaño máximo (30GB) y lo registramos dentro de nuestro servidor VirtualBox. Y después asociamos ese disco a la máquina virtual que prefiramos. Una vez hecho esto iniciamos la máquina virtual y será dentro de la máquina virtual donde tendremos que crearle una partición y formatearla.
VBoxManage createvdi -filename Almacen.vdi -size 30000 -register
VBoxManage modifyvm winxp -hdb Almacen.vdi

jueves, 6 de noviembre de 2008

Instalación de VirtualBox en Debian / Ubuntu

Simplemente tendremos que incluir la siguiente linea en el /etc/apt/sources.list.
deb http://download.virtualbox.org/virtualbox/debian etch non-free

Una vez incluida hacemos aptitude update para actualizar la lista de paquetes.

Posíblemente tengamos un error porque no tenemos guardada una clave publica del repositorio. Para solucionarlo ejecutaremos:
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -

aptitude update

Y por último instalaremos el paquete virtualbox
aptitude install virtualbox

Y ya tenemos instalado en nuestro sistema Debian VirtualBox.

Granja de Servidor VirtualBox

Dejaré aquí una relación de post que he creado para tener más organizado el blog. Es un pequeño manual sobre como instalar y administrar un servidor VirtualBox con una granja de servidores virtuales.

No es muy complicado de instalar.