Etiquetaxen

Manipular volúmenes lógicos (LVM) en discos virtuales

Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.

Tengo mi disco original llamado “vm1.img” y la clono simplemente con un cp o bien con “dd if=vm1.img vm1_clon.img“, paso a paso, lo que tenemos que hacer es:

  1. Crear un dispositivo “loop” en base a nuestro disco virtual
  2. Mapear el dispositivo loop creado
  3. Revisar los dispositivos creados en /dev/mapper/
  4. Activar el volúmen y realizar las tareas necesarias

Las herramientas que usé son losetup, kpartx y vgchange.

Seguir leyendo

Clonación de máquinas virtuales en serie

En el lugar donde trabajo, he estado montando y monitoreando muchas máquinas virtuales (gnu/linux sobre gnu/linux). En un principio, las máquinas estaban virtualizadas con VMWare, eran sólo 3 máquinas. Luego estas máquinas fueron aumentando a 5, 10 y actualmente ya son 20 máqiunas. La empresa donde trabajo ofrece el servicio de email marketing en base  a newsletter y “fidelización de clientes“, y soy yo quien debe administrar los servidores de envios de correos. Se envían más de 500 mil emails semanales por lo que el uptime y la disponibilidad del servicio debe ser la más alta.

fide

Para ésto, decidí migrar todas las máquinas a Xen y comenzar a para-virtualizar todos los servidores de envios (nosotros les llamamos “smtp“). Si pensamos que su única función es enviar correos (ya que, de la lógica del servicio se encarga otro servidor), las caracteristicas de cada smtp son muy básicas:

  • 128MB ram
  • 2Gb disco
  • Servicios: postfix, ssh

Para lograr el objetivo, me dediqué a crear un script que me automatiza la creación y configuración de máquinas virtuales.

Seguir leyendo

Tip: Migración de servidores a Xen

xen_tipsEste es el segundo post del día relacionado con Xen ya que he estado jugando con Xen, hace tiempo que no probaba cosas. Este post se trata de un tip para poder mgirar cualquier servidor hacia Xen, no importa si está virtualizado con VMWare, si es una máquina fisica, Xen, etc etc, es una forma bastante sencilla que no tiene ninguna ciencia.

La teoría
Copiar todos los archivos (por red) de una máquina a otra manteniendo los permisos e integridad de cada fichero.

La práctica
Lo haremos en 4 sencillos pasos y haciendo uso de la herramienta rsync

Seguir leyendo

Instalar CentOS con Xen en Debian

Luego de intentar varias maneras de instalar CentOS sobre Xen y luego de varios intentos fallidos, puedo resumir todo en 5 sensillos pasos para no morir en el intento.

  1. Descargar las imágenes
  2. Descargar las siguientes imágenes (checkear si existen más nuevas):
    * https://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz
    * https://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img

    Por ejemplo, dejemoslo en /tmp/

    wget https://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz -O /tmp/
    wget https://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img -O /tmp/

  3. Configuración de la máquina virtual
  4. El fichero de configuración de la máquina debe ser algo como: (//modificar según requerimientos//)

    kernel=’/tmp/vmlinuz’
    ramdisk=’/tmp/initrd.img’
    extra=’text’
    maxmem=’3072′
    memory=’2048′
    vcpus=2

    disk=[
    ‘file:/vm/cpanel/root.img,hda,w’,
    ‘file:/vm/cpanel/home.img,hdb,w’,
    ‘file:/vm/cpanel/tmp_swap.img,hdc,w’,
    ]

    name=’cpanel’
    vif=[ ‘ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1’ ]

    on_poweroff = ‘destroy’
    on_reboot = ‘restart’
    on_crash = ‘restart’

  5. Preparación de discos
  6. root será nuestra partición que montaremos en /
    en home vamos a montar nuestro /home y
    tmp_swap la usaremos para montar /tmp y la swap del sistema.

    Creamos los discos:
    dd if=/dev/zero of=root.img bs=1M count=10240 #10Gb
    dd if=/dev/zero of=home.img bs=1M count=40960 #40Gb
    dd if=/dev/zero of=tmp_swap.img bs=1M count=2048 #2Gb

  7. Instalación
  8. Iniciamos la máquina virtual:
    xm create -c configuration.cfg

    Seguimos paso a paso la instalación y finalizamos.

  9. Booteo
  10. Para bootear debemos hacer una modificacion en el fichero de configuración de la máquina, la dejamos así:

    bootloader = ‘/usr/lib/xen-3.2-1/bin/pygrub’ #El path depende de la version
    extra=’text’
    maxmem=’3072′
    memory=’2048′
    vcpus=2

    disk=[
    ‘file:/vm/cpanel/root.img,hda,w’,
    ‘file:/vm/cpanel/home.img,hdb,w’,
    ‘file:/vm/cpanel/tmp_swap.img,hdc,w’,
    ]

    name=’cpanel’
    vif=[ ‘ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1’ ]

    on_poweroff = ‘destroy’
    on_reboot = ‘restart’
    on_crash = ‘restart’

    Luego iniciamos la maquina:
    xm create configuration.cfg -c

Cómo redimenzionar el tamaño de un disco virtual en Xen

hdd-1

El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré.
En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando dd y luego concatenamos con el que ya tenemos, creamos el sistema de ficheros y listo. Pero el disminuirlo me pareció más complejo, pero no fue así.

Seguir leyendo

Xen: Migración de discos fisicos a discos virtuales (pt3)

quantum-bigfoot La migración de discos físicos a discos virtuales para poder montar una VM en Xen es, en teoría, fácil. Es simplemente hacer una copia con dd de las particiones que deseas. Hay que tener mucho cuidado, no debemos hacer una imágen del disco completo, sólo las particiones que deseamos, sin el sector 0 (mbr), ni tabla de particiones, etc. Tampoco recomiendo migrar la swap, es mejor crearla (en teoría demoraría menos).

Cuando se trata de máquinas de producción o servidores, lo que debemos hacer para no tener conflictos con las direcciones ip, hostnames, fstab o cualquier configuración especial que tenga esa máquina que de una u otra forma pueda generar conflictos, es montarla con loop y modificar las configuraciones directamente desde la imágen que creamos.
Los pasos a seguir (recomendados por mi) son:

  1. Determinar qué particiones son las que debemos migrar.
  2. Hace las imágenes correspondientes de cada partición.
  3. Configuración de la máquina virtual (crear el .cfg).
  4. Montar las particiones que podrían generar algún tipo de conflicto y modificar los archivos necesarios.
  5. Creación de la swap.
  6. Levantar la máquina.

Seguir leyendo