OpenVZ Installation · 6 min read · Nov 25, 2025

Instalación y uso de OpenVZ en Ubuntu 13.04 (AMD64)

Instalación y uso de OpenVZ en Ubuntu 13.04 (AMD64)

Versión 1.0
Autor: Falko Timme
Sígueme en Twitter

En este HowTo describiré cómo preparar un servidor Ubuntu 13.04 para OpenVZ. Con OpenVZ puedes crear múltiples Servidores Privados Virtuales (VPS) en el mismo hardware, similar a Xen y al proyecto Linux Vserver. OpenVZ es la rama de código abierto de Virtuozzo, una solución de virtualización comercial utilizada por muchos proveedores que ofrecen servidores virtuales. El parche del núcleo de OpenVZ está licenciado bajo la licencia GPL, y las herramientas de nivel de usuario están bajo la licencia QPL.

Este howto está destinado como una guía práctica; no cubre los antecedentes teóricos. Estos se tratan en muchos otros documentos en la web.

¡Este documento se proporciona sin garantía de ningún tipo! Quiero decir que esta no es la única forma de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero este es el camino que tomo. ¡No emito ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

Estoy usando un sistema x86_64 (amd64) aquí. Si estás en un sistema i386, algunos comandos serán ligeramente diferentes.

2 Instalando OpenVZ

Para Ubuntu 13.04, no hay un núcleo de OpenVZ en los repositorios oficiales. Por lo tanto, debemos instalar OpenVZ desde los paquetes RPM oficiales del proyecto OpenVZ (ver Instalar núcleo desde RPM en Debian 6.0) - con soporte para ploop

2.1 Instalando desde los paquetes RPM oficiales del proyecto OpenVZ

Descarga los últimos paquetes RPM de vzkernel, vzctl, ploop y vzquota desde http://wiki.openvz.org/Download/kernel/rhel6 y http://wiki.openvz.org/Download/utils, por ejemplo, de la siguiente manera:

cd /tmp  
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-2.6.32-042stab076.8.x86_64.rpm  
wget http://download.openvz.org/kernel/branches/rhel6-2.6.32/042stab076.8/vzkernel-devel-2.6.32-042stab076.8.x86_64.rpm  
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-4.3.1-1.x86_64.rpm  
wget http://download.openvz.org/utils/vzctl/4.3.1/vzctl-core-4.3.1-1.x86_64.rpm  
wget http://download.openvz.org/utils/ploop/1.7/ploop-1.7-1.x86_64.rpm  
wget http://download.openvz.org/utils/ploop/1.7/ploop-lib-1.7-1.x86_64.rpm  
wget http://download.openvz.org/utils/vzquota/3.1/vzquota-3.1-1.x86_64.rpm

Instala los siguientes paquetes…

apt-get install fakeroot alien libcgroup1

… y convierte los paquetes RPM a paquetes DEB:

fakeroot alien --to-deb --scripts --keep-version vz*.rpm ploop*.rpm

Instala los paquetes DEB de la siguiente manera:

dpkg -i vz*.deb ploop*.deb 

A continuación, debemos asegurarnos de que el núcleo correcto (el núcleo de OpenVZ) se inicie cuando reinicies el sistema. En la salida del último comando, deberías ver algo como esto:

Configurando vzkernel (2.6.32-042stab076.8) …
update-initramfs: Generando /boot/initrd.img-2.6.32-042stab076.8
ADVERTENCIA: no se pudo abrir /lib/modules/2.6.32-042stab076.8/modules.builtin: No existe tal archivo o directorio
ADVERTENCIA: no se pudo abrir /tmp/mkinitramfs_I0VIfE/lib/modules/2.6.32-042stab076.8/modules.builtin: No existe tal archivo o directorio
Generando grub.cfg …
Imagen de linux encontrada: /boot/vmlinuz-3.8.0-19-generic
Imagen initrd encontrada: /boot/initrd.img-3.8.0-19-generic
Imagen de linux encontrada: /boot/vmlinuz-2.6.32-042stab076.8
Imagen initrd encontrada: /boot/initrd.img-2.6.32-042stab076.8
Imagen memtest86+ encontrada: /memtest86+.bin
hecho

Esto significa que también hay otro núcleo en el sistema (3.8.0), y el núcleo de OpenVZ (2.6.32) no es el primero en la lista. Así que para hacer del núcleo de OpenVZ el núcleo predeterminado, tenemos dos opciones: ajustar el núcleo predeterminado en GRUB (recomendado) o eliminar el/los núcleo(s) no-VZ.

Para ajustar el núcleo predeterminado en GRUB, abre /etc/default/grub…

vi /etc/default/grub

… y modifica la línea GRUB_DEFAULT (el conteo comienza en 0; nuestro OpenVZ es el tercer núcleo en el submenú de opciones avanzadas de GRUB de Ubuntu (que es la segunda opción en el menú de arranque después del núcleo 3.8.0), así que necesitamos poner “1>2” aquí (entre comillas) - puedes encontrar más sobre los submenús de GRUB aquí: https://help.ubuntu.com/community/Grub2/Submenus):

| [...] GRUB_DEFAULT="1>2" [...] |

Actualiza GRUB después:

update-grub

Para eliminar el núcleo predeterminado, ejecuta…

apt-get remove linux-image linux-image-3.8.0-19-generic

… y actualiza GRUB:

update-grub

Ahora que nos hemos asegurado de que el núcleo correcto se inicie, podemos continuar.

A continuación, debemos verificar que estamos usando UUIDs en lugar de nombres de dispositivo en /etc/fstab porque de lo contrario el sistema podría no arrancar con el núcleo de OpenVZ. Ejecuta…

blkid

… para averiguar los UUIDs de tus dispositivos/particiones:

root@server1:/tmp# blkid
/dev/sda1: UUID=”9b8299f1-b2a2-4231-9ba1-4540fad76b0f” TYPE=”ext2”
/dev/sda5: UUID=”M83xtW-GofR-FFaa-myo1-T4Gw-grKe-Kg1Etc” TYPE=”LVM2_member”
/dev/mapper/server1–vg-root: UUID=”a5a6e916-64e1-4af9-8bd4-32491d7edcac” TYPE=”ext4”
/dev/mapper/server1–vg-swap_1: UUID=”a68ae8a2-c2cd-4e92-af08-a71661f8f719” TYPE=”swap”
root@server1:/tmp#

Abre /etc/fstab:

vi /etc/fstab

Mi /etc/fstab original se ve como sigue (como puedes ver, el UUID de la partición /boot ya se está utilizando, pero para / y swap, se están utilizando los nombres de dispositivo):

| # /etc/fstab: información estática del sistema de archivos. # # Usa 'blkid' para imprimir el identificador único universal para un # dispositivo; esto puede usarse con UUID= como una forma más robusta de nombrar dispositivos # que funciona incluso si se añaden y eliminan discos. Ver fstab(5). # # /dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 # /boot estaba en /dev/sda1 durante la instalación UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 /dev/mapper/server1--vg-swap_1 none swap sw |

Modifícalo para que se utilicen UUIDs para todas las particiones:

| # /etc/fstab: información estática del sistema de archivos. # # Usa 'blkid' para imprimir el identificador único universal para un # dispositivo; esto puede usarse con UUID= como una forma más robusta de nombrar dispositivos # que funciona incluso si se añaden y eliminan discos. Ver fstab(5). # # #/dev/mapper/server1--vg-root / ext4 errors=remount-ro 0 1 UUID=a5a6e916-64e1-4af9-8bd4-32491d7edcac / ext4 errors=remount-ro 0 1 # /boot estaba en /dev/sda1 durante la instalación UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2 #/dev/mapper/server1--vg-swap_1 none swap sw 0 0 UUID=a68ae8a2-c2cd-4e92-af08-a71661f8f719 none swap sw 0 0 |

Asegúrate de que OpenVZ se inicie automáticamente al arrancar:

update-rc.d vz defaults  
update-rc.d vzeventd defaults

A continuación, necesitamos vincular algunas bibliotecas:

ln -s /usr/lib64/libvzctl-4.3.1.so /usr/lib  
ln -s /usr/lib64/libploop.so /usr/lib

Si deseas usar contenedores ploop, haz esto:

apt-get install parted

Además, abre /etc/init.d/vz…

vi /etc/init.d/vz

… y agrega la línea mkdir $VARLOCK/ploop para asegurarte de que el directorio /var/lock/ploop se recree después de un reinicio:

| #!/bin/sh # Copyright (C) 2000-2009, Parallels, Inc. Todos los derechos reservados. # # Este programa es software libre; puedes redistribuirlo y/o modificarlo # bajo los términos de la Licencia Pública General de GNU tal como fue publicada por # la Fundación de Software Libre; ya sea la versión 2 de la Licencia, o # (a tu elección) cualquier versión posterior. # # Este programa se distribuye con la esperanza de que sea útil, # pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de # COMERCIABILIDAD o ADECUACIÓN PARA UN PROPÓSITO PARTICULAR. Ver la # Licencia Pública General de GNU para más detalles. # # Deberías haber recibido una copia de la Licencia Pública General de GNU # junto con este programa; si no, escribe a la Fundación de Software # Libre, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Script de inicio de OpenVZ, utilizado para distribuciones relacionadas con redhat y debian. ### # chkconfig: 2345 96 20 # descripción: Script de inicio de OpenVZ. ### ### BEGIN INIT INFO # Proporciona: vz # Requerido-iniciar: $network $remote_fs $syslog # Requerido-detener: $network $remote_fs $syslog # Debería-iniciar: sshd vzeventd # Debería-detener: sshd vzeventd # Inicio-predeterminado: 2 3 4 5 # Detener-predeterminado: 0 1 6 # Descripción-corta: Script de inicio de OpenVZ # Descripción: Script de inicio de OpenVZ. ### END INIT INFO # Esta línea es necesaria para engañar a /etc/init.d/rc que espera una palabra de acción . /usr/libexec/vzctl/scripts/initd-functions mkdir $VARLOCK/ploop [...] |

Crea un enlace simbólico de /vz a /var/lib/vz para proporcionar compatibilidad hacia atrás:

ln -s /vz /var/lib/vz

Abre /etc/sysctl.conf y asegúrate de que tienes las siguientes configuraciones en él:

vi /etc/sysctl.conf

| [...] net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 [...] |

Si necesitas modificar /etc/sysctl.conf, ejecuta

sysctl -p 

despues.

El siguiente paso es importante si las direcciones IP de tus máquinas virtuales son de una subred diferente que la dirección IP del sistema host. ¡Si no haces esto, la red no funcionará en las máquinas virtuales!

Abre /etc/vz/vz.conf y establece NEIGHBOUR_DEVS en all:

vi /etc/vz/vz.conf

| [...] # Controla qué interfaces enviar solicitudes ARP y modificar tablas APR. NEIGHBOUR_DEVS=all [...] |

Instala vzdump:

apt-get install vzdump

Finalmente, reinicia el sistema:

reboot

Si tu sistema se reinicia sin problemas, ¡entonces todo está bien!

Ejecuta

uname -r

y tu nuevo núcleo de OpenVZ debería aparecer:

root@server1:~# uname -r
2.6.32-042stab076.8
root@server1:~#

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.