Archivo

Posts Tagged ‘Ubuntu’

Mover VPS a VirtualBox

abril 15, 2013 Deja un comentario

Vamos a ver los pasos necesarios para mover un servidor VPS a un máquina virtual local con VirtualBox.

Primero vamos a replicar el disco del servidor a nuestro ordenador. Para ello vamos a usar las herramienta netcat y dd. Antes de nada decir que para que funcione lo mejor posible, ninguna partición del disco debe estar montada. Para ello se debe arrancar desde otro disco. En mi caso que uso Hetzner, desde la consola de administración (ellos los llaman robot) permite arrancar el VPS en modo rescue.

Una vez hecho esto, en la máquina destino ejecutamos lo siguiente:

$ nc -v -l 5525 > srvdisk.gz

En el servidor esto:

$ dd if=/dev/sda conv=sync,noerror bs=16M | gzip | nc -v -q 0 host.dst.ip 5525

Una vez clonado el disco, lo descomprimimos:

$ gunzip srvdisk.gz

Y vemos las particiones que tiene:

$ fdisk -l srvdisk

Por último lo convertimos a formato VDI para poder usarlo desde VirtualBox:

$ vboxmanage convertfromraw srvdisk srvdisk.vdi

Una vez creado el disco para VirtualBox creamos una nueva máquina virtual y le decimos que use este disco convertido.

Por último habrá que hacer algunos ajustes en la configuración de Linux para que funcione correctamente. En mi caso el proveedor de hosting es Hetzner y el VPS va con Ubuntu 12.04, por lo que los cambios fueron los siguientes:

  • En el fichero /etc/apt/sources.list comentar los repositorios de Hetzner y poner los de Ubuntu:
deb http://es.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
deb http://es.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
deb http://es.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu precise-security main restricted universe multiverse
  • En el fichero /etc/resolv.conf comentar los nameserver de Hetzner y poner los de Google:
nameserver 8.8.8.8
nameserver 8.8.4.4
  • En el fichero /etc/network/interfaces comentar la configuración de red de Hetzner y poner la que mejor se adapte.
auto eth0
iface eth0 inet static
 address 192.168.0.100
 broadcast 192.168.0.255
 netmask 255.255.255.0
 gateway 192.168.0.1
  • En el fichero /etc/udev/rules.d/70-persistent-net.rules comentar la primera línea de Hetzner donde viene la MAC de la tarjeta del VPS y que quede de esta forma (La segunda entrada se añadirá automáticamente y el parámetro ATTR{address} será diferente ya que se trata de la MAC de la tarjeta de red de la máquina virtual de VirtualBox. Lo importante es que el parámetro NAME sea “eth0”.):
# device: eth0
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1c:14:01:4f:68", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:03.0 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:b9:04:bf", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Y con todo esto ya podríamos usar el VPS localmente.

Categorías:Debian, Ubuntu Etiquetas: , , , , , , , ,

Instalar Hot Copy for Linux en Ubuntu

marzo 9, 2011 Deja un comentario

Una vez instalado el paquete en formato APT perfectamente compilado para tu arquitectura, tienes que instalar el módulo precompilado para tu kernel y compilarlo tu mismo. Para la última versión estable de Ubuntu (10.10 – Maverick Meerkat) no hay módulo precompilado, por lo cual hay que hacerlo. Es muy sencillo, ya que existe la utilidad hcp-setup que nos ayuda en esta labor… pero no todo es tan perfecto. Cuando intentas compilar el módulo para el kernel 2.6.35-27-generic da un feo error:

yomismo@kraken:~$ sudo hcp-setup --get-module
Checking for binary module
Waiting                       |
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1299670593' for kernel headers
Unable to find a 'include/linux/autoconf.h'. This file is required to build a kernel module
Unable to find a valid source directory.
Please install the kernel headers for your operating system.
To install kernel headers execute:
apt-get install linux-headers-`uname -r`

Dice que no encuentra las cabeceras necesarias para compilarlo e incluso te dice el comando
que has de ejecutar para instalarlas, pero resulta que ya las tengo instaladas. O sea, que algo
raro pasa. El problema es que en el kernel 2.6.35 el fichero autoconf.h está en otro lado:

$ ls /usr/src/linux-headers-`uname -r`/include/generated/

En lugar de este otro:

$ ls /usr/src/linux-headers-`uname -r`/include/linux/

Y es ahí donde falla la rutina que comprueba que los fuentes del kernel estén instalados. A la hora de compilar no afecta donde esté este fichero ya que encuentra la ruta correcta. Sólo es problema del chequéo que hace el instalador. Por tanto la solución es bien sencilla (y podríamos decir cutre):

$ sudo touch /usr/src/linux-headers-`uname -r`/include/linux/autoconf.h

Y listos, hemos creado el fichero autoconf.h donde lo necesita y todo irá como la seda. Lo curioso del invento es que parece que envía los fuentes del kernel a un servidor remoto donde se genera el módulo y luego se lo baja. Supongo que el si otro usuario intenta hacer lo mismo con la misma versión del kernel se limitará a bajar el módulo ya compilado.

Nota: No he conseguido hacer un snapshot, al menos de una partición formateada con ext4 y viendo el log del kernel hay un mensaje aclaratorio:

hcp: ERROR: aborting snapshot, your kernel is broken please downgrade or upgrade, snapshots on block devices with ext4 will cause a dead lock.

con lo cual habrá que esperar a una actualización del kernel. Supongo que debe estar relacionado con este bug: lvm snapshot causes deadlock in 2.6.35.

Categorías:Ubuntu Etiquetas: