Mostrando entradas con la etiqueta virtualizacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta virtualizacion. Mostrar todas las entradas

domingo, 17 de julio de 2011

Storage distribuido con SheepDog

Instalé SheepDog siguiendo las instrucciones del sitio sobre un Debian Sid, todo funcionó excelente!

Todo el esquema de pruebas lo armé en mi notebook:
  • Host: acer (Ubuntu Desktop 11.04)
    • Guest: debian-virt-server-01 (Debian Sid / libvirt+KVM)
      • ejecutando SheepDog
    • Guest: debian-virt-server-02 (Debian Sid / libvirt+KVM)
      • ejecutando SheepDog
    • Guest: debian-virt-server-03 (Debian Sid / libvirt+KVM)
      • ejecutando SheepDog
    • Guest: linux-over-sheepdog (Ubuntu 10.04 Server / QEMU)
      • usando "linux-over-sheepdog" como disco (esta imagen es creada usando qemu-img).
Luego configuré coresync y arranqué sheepdog en debian-virt-server-01debian-virt-server-02 y debian-virt-server-03.

Ahora, a crear la imagen de disco!

root@debian-virt-server-01:~# collie cluster format --copies=2

Este comando sólo se debe ejecutar en 1 nodo.

root@debian-virt-server-01:~# collie node list
 Idx - Host:Port Number of vnodes
------------------------------------------------
* 0 - 192.168.122.101:7000 64
 1 - 192.168.122.102:7000 64
 2 - 192.168.122.103:7000 64
El cluster fue "formateado" para que mantenga 2 copias de la información. Los 3 nodos se están viendo, ya que aparecen al ejecutar "collie node list". 

Creamos imagen para ser usado como disco

acer| ~$ qemu-img create sheepdog:192.168.122.101:7000:linux-over-sheepdog 4G
Formatting 'sheepdog:192.168.122.101:7000:linux-over-sheepdog', fmt=raw size=4294967296
Booteamos QEMU

acer| ~$ qemu-system-x86_64 -enable-kvm -m 512 -cdrom ubuntu-10.04-server-amd64-LTS.iso sheepdog:192.168.122.101:7000:linux-over-sheepdog

Y listo! La instalación de Ubuntu Server se inició correctamente sobre un "disco virtual" hosteado usando SheepDog.



miércoles, 15 de junio de 2011

Compactar particiones con zerofree

Para realizar backups de imágenes de discos usadas en QEmu/KVM se puede optimizar usar zerofree. Este programa  escribe 0 (ceros) en los lugares de la imagen que NO está siendo usada por archivos, y que han sido usadas pero actualmente están libres (por ejemplo, en el lugar donde se haya creado un archivo que luego haya sido borrado).

Zerofree funciona para ext2/ext3/ext4, en particiones que no están montadas, o montadas solo-lectura. Esta utilidad es "inteligente" en el sentido que no hace "crecer" a los archivos sparse. 


Los pasos a seguir son:

  • cargar nbd

   ~$ sudo modprobe nbd max_part=16

  • asociar imagen de disco disk01.qcow2nbd1 y crear dispositivos asociados a particiones

   ~$ sudo qemu-nbd -c /dev/nbd1 -v disk01.qcow2
   ~$ sudo partprobe /dev/nbd1

  • ejecutar zerofree

   ~$ sudo zerofree -v /dev/nbd1p5

Listo! El archivo "disk01.qcow2" ocupa teóricamente 11G, pero como es un archivo sparse, en realidad está ocupado en disco sólo 1.9G:


   ~$ ls -lh disk01.qcow2
   -rw-r--r-- 1 root root 11G 2011-06-15 14:51 disk01.qcow2
   ~$ du -h disk01.qcow2 

   1.9G disk01.qcow2

El .tar ocupa sólo 918M:

   ~$ tar --sparse -cf disk01.qcow2.tar disk01.qcow2
   ~$ ls -lh disk01.qcow2.tar 
   -rw-r--r-- 1 horacio horacio 918M 2011-06-15 15:10 disk01.qcow2.tar

Y al comprimirlo solo nos queda 305M:

   $ gzip -1 disk01.qcow2.tar 
   $ ls -lh disk01.qcow2.tar.gz 
   -rw-r--r-- 1 horacio horacio 305M 2011-06-15 15:10 disk01.qcow2.tar.gz



   ~$ du -h *
   1.9G disk01.qcow2
   305M disk01.qcow2.tar.gz



En este caso, un archivo que ocupa inicialmente 1.9G lo llevamos a ocupar 918M (305M comprimido).

jueves, 9 de junio de 2011

Cómo compilar cliente spice

Seguiendo los pasos para instalar Spice (un nuevo protocolo para comunicarse con guests KVM/QEMU/etc.) me surgieron unos errores, no muy complicados de resolver.

En general, segui las instrucciones de http://spice-space.org/page/Building_Instructions.
La instalación la hice en /usr/local/slice, asi que reemplace "INST_ROOT" por "/usr/local/slice".


Para compilar e instalar el cliente, en un momento hay que ejecutar:

~$ cd $SRC_ROOT/spice
~$ ./autogen.sh --prefix=$INST_ROOT

Pero este ultimo comando me generó un error:


----------------------------------------
(...)
checking for PROTOCOL... no
configure: error: Package requirements (spice-protocol >= 0.6.0) were not met:
No package 'spice-protocol' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables PROTOCOL_CFLAGS
and PROTOCOL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
----------------------------------------

Esto se solucione usando:

~$ export PKG_CONFIG_PATH="/usr/local/spice/share/pkgconfig:/usr/local/spice/lib/pkgconfig"
~$ ./autogen.sh --prefix=/usr/local/spice
~$ cd client
~$ make install

Y... no funcionó...

----------------------------------------
make[1]: *** No rule to make target `../common/libspice-common.la', needed by `spicec'. Stop.
make[1]: Leaving directory `/mnt/sin_encriptar/src/spice-client-src/spice/client'
make: *** [install] Error 2

----------------------------------------

Pero, compilando manualmente lo del directorio "common", luego lo de "cliente" funciona:

~$ cd ..
~$ cd common
~$ make install
~$ cd ..
~$ cd client
~$ make install

Y ahora sí!

miércoles, 3 de junio de 2009

Virtualización con KVM

Investigando para implementar KVM encontré varios artículos interesantes:

Guías
- Virtualization With KVM On Ubuntu 9.04
- Virtualization With KVM On Ubuntu 8.10
- Installing KVM Guests With virt-install On Ubuntu 8.10 Server (agregado el 5 de jun)

En sitio de KVM
- Setting guest network
- Setting up NAT with KVM in Ubuntu

En sitio de Ubuntu (administrada a través de libvirt)
- Installation
- Networking
- CreateGuests
- Managing

Y para gestionar el tráfico de red, además del clásico iptables, es interesante tener en cuenta ebtables.