Virtualización de servidores físicos GNU/Linux con KVM
Archivado en: Linux - El día: 2010-05-06 08:52:02 | permalink | Meneame del.icio.us | Pon tu comentario

Estos días he tendio que lidiar on una de esas tareas que a priori parecerán triviales y de repete te das cuenta de que no lo son tanto... Tenía que migrar un servidor físico a uno virtual. Si buscáis información en google al respecto encontraréis toneladas de información al respecto. Eso es lo que pensé yo a primera vista. Es una tarea tan "común" que tiene que haber mil documentos y páginas de referencia. PUES NO.


La mayoría de páginas que he encontrado hacen referencia a la virtualización de máquinas Windows a KVM, y aunque también encontré cómo virtualizar máquinas con GNU/Linux todas las que vi hacían referencia a la virtualización con OpenVZ

Por lo general suelo utilizar como plataforma de virtualización una distribución llamada PROXMOX que me gusta mucho porque a parte de soportar máquinas virtuales con OpenVZ también soporta máquinas virtuales con KVM con lo cual nos permite aprovechar al máximo nuestros procesadores de última generación. Proxmox soporta VLANs directamente sobre las máquinas virtuales, lo cual es imprescindible para el entorno empresarial. Además proxmox ofrece una fácil e intuitiva interfaz gráfica via web, lo que nos permite acceder a nuestras máquinas virtuales desde cualquier lado, realizar backups y modificaciones de hardware en las mismas desde cualquier lugar. Y eso señores, es una gozada.

Bueno, pues el caso es que no fui capaz de encontrar referencias útiles en cuanto a migrar máquinas GNU/Linux a KVM así que ahí va el procedimiento que utilicé para la migración:

Lo primero fue hacer una inspección del disco duro de la máquina original. Observé que disponía de un disco duro de 250GB. El sistema utilizaba LVM en lugar de las tradicionales particiones. En total, el disco tenia unos 30GB de información ocupados, el resto estaba libre. Se trataba de un servidor que no requería de gran espacio de almacenamiento, así que pensé que para la máquina virtual no sería necesario tanto espacio.

Lo siguiente que hice en el servidor proxmox fue crear un disco virtual del tipo qcow2. Esto permite que el disco virtual vaya aumentando de tamaño segun los archivos que tenga que almacenar. Lo cree de un tamaño de 120GB. Esto hace que si bien el tamaño máximo de la información de este disco sea 120GB, realmente solo ocupe sobre la cantidad de GB necesarios para almacenar la información que contiene. Es decir, este disco va a aumentar de tamaño segun vaya almacenando datos, hasta llegar a su tamaño máximo de 120GB. 

Llegó el momento de copiar la información del servidor original al nuevo. Para ello utilicé rsync, pero dado que no es posible montar una partición qcow2 de forma intuitiva tiré de ingenio. Creé la máquina virtual y le dije a proxmox que utilizara  como disco duro primario de esa máquina el disco que creé en el paso anterior. Entonces me bajé Gentoo, e hice arrancar el nuevo servidor virtual desde la unidad de CD virtual. De este modo conseguí una shell, con acceso a un disco duro (que recordad, aun no estaba ni particionado ni nada).

Mediante cfdisk (hay quien prefiere fdisk, pero para gustos hay colores) creé una partición de 118GB, el resto lo dejé para swap. Acto seguido cree el sistema de archivos sobre la partición primaria, utilicé ext3. Después monté la partición sobre el primer directorio que pillé (en este caso /mnt/gentoo).

Bien, perfecto. Es hora de copiar la información (por fin!). Es importante tener configurada la red al llegar a este momento. Tecleamos rsyn... vaya, pues la aplicación rsync no viene dentro de la iso básica de Gentoo... mal vamos. En este momento os diré que lo más lógico es buscar una distribución que sí venga con rsync, y repetir los pasos anteriores. Pero como iba algo justo de tiempo os diré lo que hice. Una vez  configurada la red, mediante scp copié el binario de rsync de otra máquina, y después copié la libreria "libpopt.so.0" necesaria para que rsync se ejecute sin problemas. Mediante ldconfig añadi /root como directorio de librerias de sistema. Con lo que voilá: en 2 minutos tenía rsync funcionando perfectamente en mi LiveCD de Gentoo :).

Antes de empezar a copiar información debemos tener en cuenta una cosa. Hay algunos direcotorios que por su contenido no deben ser copiados. Esto es porque contienen información relativa a hardware que si bien está presente en la máquina física no lo va a estar en la virtual, por tanto mejor evitar copiarlos. La lista de directorios especiales que utilicé yo es la siguiente:
/boot
/dev/*
/mnt/*
/tmp/*
/proc/*
/sys/*
/usr/src/*
/etc/sysconfig/network-scripts/ifcfg-eth*

Guardad este listado en un archivo llamado excludes en el directorio /root.

Perfecto, llegó el gran momento. Vamos a copiar toda la información:

rsync -arvpz --numeric-ids --exclude-from '/root/excludes' $host:/ /mnt/gentoo/

Bien, el comando casi se explica por sí solo, pero vamos, básicamente es copiar el contenido de la raíz del sistema $host en el directorio /mnt/gentoo (recordemos que ahi es donde tenemos nuestro disco duro virtual de 120GB montado). Evidentemente vosotros tendréis que cambiar $host por la direccion IP de vuestro servidor origen, y /mn/gentoo por el directorio que estéis utilizando.

Este comando evidentemente tardará bastante, todo depende del volumen de información a copiar de un lado a otro. En mi caso tardó un par de horas.

Varios cafés después, una vez finalizado el proceso de copia de datos sobre nuestro nuevo servidor ya solo quedan por hacer algunos retoques. Para empezar, nos falta ajustar el sistema de arranque, recordemos que hemos dejado el directorio /boot vacío. 

Yo probé mil opciones en este sentido, y por algun motivo  que desconozco, en este contexto, no fui capaz de instalar  grub directamente sobre mi disco duro virtual (Si alguien lo ha conseguido que comente cómo). Así  que opté por crear una segunda unidad de disco virtual, en este caso con formato raw, y con un tamaño de 100MB. La formateé con ext3 y hice un chroot a mi nuevo entorno:

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo/ /bin/bash

Entonces ya fui capaz de montar esta nueva partición en el directorio /boot e instalar  GRUB en ella. Sin más sobresaltos. A estas alturas de juego, si estás haciendo esto, presupongo que no necesitas ayuda con la instalación de GRUB, si no tu comentario es bienvenido.

Hay que recordar que antes de reiniciar nuestra máquina virtual, es necesario que modifiquemos el archivo /etc/fstab para que se adapte a nuestro nuevo contexto de particiones.

Una vez hecho esto ya podemos reiniciar para poder entrar en nuestro nuevo servidor virtual, un clon perfecto del original.

Technorati tags:  

Video de China 2009
Archivado en: Viajes - El día: 2009-09-11 11:20:22 | permalink | Meneame del.icio.us | 2 Comentarios

Bueno, aquí está finalmente el video que resume mi viaje a China. Espero que disculpéis la calidad del montaje pero soy novatillo en el tema. A parte que está claro que para hacer un buen video se necesita una cámara de video con un estabilizador, porque con una de fotos, por mucho video que se grabe el resultado es el que es...

Bueno, basta ya de excusas, si no os gusta no lo miréis y ya :)

Get Flash to see this player.

Technorati tags:   

Dos conexiones VPN hacia un mismo servidor, detrás de NAT.
Archivado en: Networking - El día: 2009-09-01 10:48:32 | permalink | Meneame del.icio.us | Pon tu comentario

Desde que estoy trabajando como autónomo me veo obligado a conectarme a múltiples redes de clientes con VPN. Esto a veces implica tener varias conexiones hacia la misma localización, pero por desgracia me encontraba con la molestia de que aunque las dos VPNs estuvieran configuradas de forma idéntica, y que cada una de ellas funciona de forma individual, ambas simultáneamente no funcionaban. Siempre se producía un "Fallo en la conexión".

Hoy buscando, buscando, encontré una solución a este problema. Solamente hay que cargar varios módulos en el sistema para que estos errores ya no se produzcan.

Los módulos en concreto son:

modprobe ip_gre
modprobe ip_nat_pptp
modprobe ip_conntrack_pptp

Con esto ya podemos trabajar sin problemas :)

PD: Para los olvidadizos (entre los que me encuentro), lo mejor es poner esos móduloes al final del archivo /etc/modules de modo que el propio sistema los cargue al iniciar.

Technorati tags:    

Facturando como autónomo en España
Archivado en: Personal - El día: 2009-03-09 11:43:26 | permalink | Meneame del.icio.us | 2 Comentarios

Siguiendo con mi último post a cerca de cómo montar una oficina en casa con el objetivo de trabajar como autónomo, pasamos ahora ver cómo debe realizarse una factura.

Un autónomo puede emitir facturas a su nombre, por que él es la empresa. En las facturas a parte del nombre deberá constar siempre el número de D.N.I incluyendo la letra, y normalmente también se pone el domicilio fiscal (que es el lugar donde realizáis vuestra tarea profesional). En caso de que como yo realicéis vuestro trabajo desde casa vuestro domicilio fiscal coincide con vuestro domicilio particular, poned la dirección de vuestra casa. También se ponen el nombre, dirección y número de identificación fiscal de la empresa/persona a la que le emitís la factura (o sea, el cliente).

Pasamos ahora a ver la parte económica de la factura. En las facturas, a parte de nuestro trabajo, hay que incluir los impuestos. Tenemos siempre que cargar el I.V.A (Impuesto sobre el Valor Añadido), que por lo general es del 16%, aunque éste percentil puede variar segun sea nuestra actividad. A parte de esto, el autónomo debe descontar un porcentaje del I.R.P.F (Impuesto de la Renta sobre las Personas Físicas). Esto implica descontar de la factura un 15% del valor total sin el I.V.A. Ojo, si nos hemso dado de alta como autónomos recientemente, durante los primeros 6 meses 3 años podemos deducir solamente un 7%, siempre y cuando informemos de ello a la empresa a la que estemos facturando.

Veamos algunos ejemplos:

Supongamos que llevamos 30 meses ejerciendo como autónomos y realizamos un trabajo por el importe de 1000€. Nuestra factura quedaría tal que asi:
1000€ + 16% (I.V.A) - 15% (I.R.P.F) = 1000€ + 160€ - 150€ = 1010€

Sin embargo, si esta misma factura la emitiésemos tras 3 meses ejerciendo de autónomo quedaría así:
1000€ + 16% (I.V.A) - 7% (I.R.P.F) = 1000€ + 160€ - 70€ =  1090€

A parte de esto, no olvidéis que segun la legislación española los autónomos tenemos el deber de realizar una declaración trimestral a Hacienda. Y que cada més debemos pagar nuestra cuota a la seguridad social, que para menores de 30 años es de aproximadamente 170€ durante los primeros 18 meses de vida profesional, y para el resto si no recuerdo mal 210€ (actualizaré este post si van variando las cifras).

Pronto explicación de cómo se hace la declaración trimestral.Mientras, espero que esto os sea de utilidad.

Technorati tags:    

Montando una oficina en casa
Archivado en: Around the web - El día: 2009-03-05 11:04:30 | permalink | Meneame del.icio.us | 2 Comentarios

Como muchos sabréis o, si no os lo dgo ahora, me estoy estableciendo como autónomo. Ya llevaba meses coqueteando con la idea, pero últimamente las cosas están yendo paradójicamente bien así que llegó el momento de intentarlo.

Uno de los pasos más importantes es el de crear un espacio de trabajo adecuado para trabajar desde casa. Trabajar sentado en el sofá, mientras uno ve la tele NO es una buena idea. La producitvidad se reduce drásticamente. Cuando hay que trabajar se trabaja, cuando hay que descansar se descanasa, pero no las dos a la vez. He estado leyendo mucho acerca de cómo conseguir un ambiente de trabajo adecuado, qué elementos son necesarios y qué elementos son prescindibles. Hoy he encntrado una lista muy buena en WWB, concretamente la lista estaba en los comentarios de éste post. Asi que a continuación os la traduzco (y adapto) para que todos la podamos tener en cuenta:

Cosas necesarias:

  • Hardware adecuado, incluyendo por lo menos un BUEN mouse o trackball.
  • Algun elemento que nos pueda proteger de picos de tensión eléctrica (éste elemento no es necesario si utilizáis portátiles).
  • Una conexión a internet decente (no vale ir a "pescar" la wifi del vecino).
  • Una buena mesa. Cuanto más espacio mejor.
  • Una buena silla.
  • Buena luz. Las lámparas necesarias y, siempre que sea posible, contar en nuestro espacio con luz natural (es más inspiradora).
  • Ventilación y control de clima. A nadie le gusta pasar ni frio ni calor...
  • Un impresora. Para imprimir reportes, facturas, propuestas...
  • Material de oficina (carpetas, folios, bolígrafos, post-its,...), componentes  (los cables USB y de red necesarios, un HUB USB) y de limpieza (para mantener las pantallas y teclados límpios).
  • Una buena estantería con cajones para poder guardar documentación, libros, cables y demás.
  • Una copia en papel de vuestra lista de contactos (o por lo menos encargáos de tenerlos sincronizados en variso dispositivos).

Otras cosas no necesarias, pero que siempre va bien tener:

  • Una unidad de UPS (si vivís en una zona con contínuas tormentas eléctricas pasad este punto al apartado anterior).
  • Algo de dinero encima, aunque solo sean 20 € es bueno siempre tener algo.
  • Pantallas auxiliares. Se trabaja mucho más cómodo si puedes ver todos los elementos participantes de un proyecto a la vez con un solo vistazo.
  • Discos duros externos y llaves USB, para realizar backups y simplemente para transportar nuestro código o trabajo desde nuestra oficina a la del cliente sin saturarle la cuenta de correo.
  • Unos altavoces decentes. Aceptémoslo, se trabaja mucho más a gusto si mientras se puede escuchar algo de buena música.
  • Una buena cafetera (el café es al programador lo que la gasolina al coche).
  • Etiquetas con nuestra dirección para los envios de paquetes.
  • Un organizador de tarjetas de visita (porque a poco que nos movamos nos van a saturar con ellas).

Cosas que molaría mucho tener:

  • Algo de decoración en las paredes. Porque siempre es más inspirador un cuadro o una fotografía que una pared blanca.
  • Elementos para reducción del ruido exterior si tenéis este tipo de problemas acústicos que os impide concentraros en lo que de verdad importa.
  • Una buena puerta que separe vuestra zona de trabajo del resto de la casa. Sobretodo si tenéis hijos de corta edad...
  • Algunos juguetes (bolas anti-estress, por ejemplo). Os ayudarán a tomaros un break meditando la solución a algun problema.

Yo creo que la lista es bastante completa. ¿Añadiríais algo más?

Technorati tags:    

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Generated by QuetzaLog 2.0 - Pedro Fiol 2010