# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Backups en Virtuozzo 4.6 con vzabackup / vzarestore


Virtuozzovzabackup y vzarestore son las utilidades designadas a la gestión de copias de seguridad tanto para nodos Hardware y máquinas virtuales Virtuozzo.

vzabackup

vzabackup permite hacer copia de seguridad tanto del propio nodo Hardware como de uno, varios o todos los contenedores del mismo. También permite hacer backups de nodos remotos. A continuación podéis ver todas las opciones disponibles:

vzabackup [BACKUP OPTIONS...] NODE1 ... [CT OPTIONS...]

[BACKUP OPTIONS]
-F, -I, --Tfull
	Create a full backup.
-i, --Tinc
	Make an incremental backup or, if no full backups are available, a full backup.
--Tdiff
	Make a differential backup or, if no full backups are available, a full backup
-o,--rm-old
	Create a backup and then remove the oldest backups.
-d,--rm-tag
	Create a backup and then remove the backup with the
	specified backupID. You can learn the backup IDs of the
-J
	Do backing up nodes simultaneously if more than one source node specified.
--force
	Don't stop on errors during backup of Container. Should be used when more than
	one Container's specified to backup.
--view-folder
	 Show current backup storage configuration.
--set-folder-creds [USER[:PASSWORD]]
	 Set backup storage login credentials.
--backup-folder-path PATH
	Path to a custom backup storage location.
--backup-folder-login USER
	Username for a custom backup storage on a samba share.
--backup-folder-passwd PASSWORD
	Password for a custom backup storage on a samba share.
--set-folder
	Use --backup-folder-* options values to change backup storage configuration.
-D DESCRIPTION
	Set backup description.
-C
	Set compression level in range from 0 to 3.
--storage [USER[:PASSWD]]@ADDRESS
	Set address and credentials for storage server, where backup is stored.
NODE
	NODE parameter specifies the node to be backed up.

	 Node should be specified in format: [USER[:PASSWD]]@ADDRESS.

[CT OPTIONS]
-e
	List of Containers to backing up. Back up all the Containers if omitted.
-x
	List of Containers to skip. Do not skip any Containers if omitted.
--include-files
	Paths(files) to include in backups.
--exclude-files
	Paths(files) to exclude from backups.

Vamos a hacer un ejemplo práctico en el que queremos hacer una copia de seguridad de todos los contenedores del nodo Hardware local en la ruta /backup (en este caso una unidad montada por NFS):

# vzabackup --backup-folder-path /backup -i localhost

Con -i indicamos que queremos hacer backups incrementales y con “localhost” que son para el nodo local. Si quisieramos hacerlo en un storage remoto y de un nodo remoto sería así:

# vzabackup  --storage root:password@192.168.0.100 root:password_remoto@192.168.0.111

Si quisieramos hacerlo únicamente del contenedor 101:

# vzabackup --backup-folder-path /backup -i localhost -e 101

El resto es jugar con las opciones, la compresión, el tipo de backup, etc. A la hora de hacer backups de servidores remotos hay que asegurarse que la conectividad SSH es satisfactoria y que pueden comunicarse mediante llave SSH.

vzarestore

Lo primero que debemos saber de vzarestore es que permite mostrar un listado de los backups disponibles en el nodo seleccionado. Si quisieramos ver los backups disponibles en el nodo local y en la ruta /backup:

# vzarestore --list --backup-folder-path /backup
Show existing backups...
CTID    Title                   Creation date/time     Type Size
2719275 vps1                2011-04-15T111346+0002 full 213.19 Mb
305470  vps2                2011-04-15T110646+0002 full 262.13 Mb
3574391 vps3               2011-04-15T110041+0002 full 245.63 Mb
5195637 vps4               2011-04-15T111616+0002 full 710.83 Mb
8426989 vps5               2011-04-15T113722+0002 full 291.22 Mb

Para ver los backups en nodos remotos utilizaríamos el parámetro –storage:

# vzarestore --list --storage root:password_remoto@192.168.0.110

Bien, para restaurar un backup únicamente tendríamos que seleccionar su ID (CTID) y en caso de estar en una ubicación remota especificarla:

Remoto:

# vzarestore 101 --storage root:password_remoto@192.168.200.200

Local:

# vzarestore 101

En caso de contar con backups incrementales, podríamos especificar el punto de restauración con el parámetro “-b” seguido del identificador del backup (no el del contenedor). A continuación la ayuda del comando:

vzarestore is the utility to restore Container's which were backed up by means
of vzbackup. Also it can be used to remove, listing backups
and browsing contents of backups.

vzarestore [CTID[:New CTID] | -e  | -x ] [RESTORE OPTIONS] [STORAGE SERVER]
vzarestore -r, --remove  [STORAGE SERVER]
vzarestore -l,--list [LIST OPTIONS...] [STORAGE SERVER]
vzarestore --browse backupID [BROWSE OPTIONS...] [STORAGE SERVER]
vzarestore --print-ve-config BackupID [STORAGE SERVER]
vzarestore -h,--help

RESTORE OPTIONS:
-B
	Treat parameters for -e and -x options as backup ID's.
--force
	Don't stop on errors during restore of Container.
--files
	Separate files to restore, FILE is the full path to the file.
--skip-ve-config
	Do not restore Container config.
-b backupID
	Backup ID to restore files, if omitted then last backup will used.
--skip-locked
	Don't stop on errors during restore of locked files.

LIST OPTIONS
-f,--full
	Show full information (this option can be used only with --list).
--latest
	Show latest backups only (this option can be used only with --list).
-e
	List of Container's to show.
-B
	Treat parameters for -e option as backup ID's.

BROWSE OPTIONS
-d,--dir DIR
	Set the paths to the folder whose contents is to be shown.

STORAGE SERVER
--storage [USER[:PASSW]]@ADDRESS
	Set address and credentials to storage server.
	When this argument is omitted then local node will be used as storage server.
--backup-folder-path PATH
	Path to a custom backup storage location.

Arreglar inconsistencias y fallos en VZFS (máquina virtual Virtuozzo)


El otro día, tras la migración de una máquina virtual en modo online (sin parada de servicio) me encontré con el problema de que ciertos ficheros (realmente son enlaces simbólicos a la plantilla del sistema operativo que utiliza el VPS) estaban corruptos, por ejemplo, en la ruta /var/empty, sshd aparecía del siguiente modo:

?--------- ? ? ? ? ? sshd

Esto provocaba que el servicio SSH no levantara. Para solventar este tipo de problemas, Virtuozzo ofrece una herramienta que revisa todos los ficheros/enlaces simbólicos de la máquina virtual contra los de su plantilla, en caso de que no sean correctos los restablece. Efectivamente así fue, ejecutando el siguiente comando todos los enlaces fueron regenerados correctamente:

# vzfsutil --call=move --oall=do -t /vz/template /vz/private/$VEID

La utilidad se ejecuta con el comando vzfsutil, le indicamos la ruta en la que se encuentran en primera instancia las plantillas (templates) y después la zona privada de la máquina virtual (cambiaríamos $VEID por el id de la máquina virtual). El parámetro

--call

sirve para corregir todos los errores que la ejecución de la herramienta encuentre, y le especificamos que mueva “move” los ficheros con inconsistencias a la ruta

$VE_PRIVATE/lost_files

, podríamos decirle que los borre directamente o que únicamente nos informe y no haga nada.

Os recomiendo, en caso de encontrar este problema revisar bien la documentación de vzfsutil aquí.

Virtualbox: máquinas virtuales Debian clonadas no funciona la red


Este tip lo he encontrado en “Reflexión = 2 x flexión” y me vino de perlas porque ciertamente no sabía por donde iban los tiros…

Resulta que para unas pruebas creé en mi pc una máquina virtual Debian con Virtualbox. Necesitaba duplicarla, por lo que me dispuse a hacerlo primero clonando el disco duro y después usandolo en otra máquina virtual:

# VBoxManage clonevdi Debian01.vdi Debian02.vdi

El problema vino en el momento de arrancar las dos máquinas virtuales a la vez y comprobar que la “clonada” no levantaba la interfaz de red. Cambiar la MAC en Virtualbox, la configuración de interfaces y demás no funcionaba hasta que descubrí en el enlace que os comentaba antes que Debian y derivado tiene una característica que consiste en asignar un nombre de interfaz de red a una dirección MAC, impidiendo esto que funcione la red en discos clonados.

La solución es sencilla, tenemos que ir a la máquina virtual en la que tenemos problemas y eliminar esa regla (como root):

# rm /etc/udev/rules.d/70-persistent-net.rules

Reiniciamos la máquina virtual y solucionado.

Xen: Clonar una máquina virtual con virt-clone


En el sistema de virtualización Xen, y gracias a la utilidad virt-clone tenemos la posibilidad de duplicar una máquina virtual con un solo comando y de forma extremadamente sencilla.

Podemos hacerlo de dos formas, la primera utilizando el asistente y sin pasar ningún parámetro al comando, simplemente ejecutamos virt-clone –prompt y seguimos los pasos siguientes.

NOTA: La máquina virtual a clonar debe estar parada, sino recibiremos el error:

ERROR Domain with devices to clone must be paused or shutoff.

# virt-clone  --prompt
What is the name of the original virtual machine? mimaquinavirtual
 What is the name for the cloned virtual machine? clonmaquinavirtual
 What would you like to use as the cloned disk (file path) for '/home/mimaquinavirtual.img'? /home/clonmimaquinavirtual.img
Cloning /home/mimaquinavirtual.img           4% [===                                 ]  20 MB/s | 128 MB     07:59 ETA

Como podéis observar no tiene ningún misterio. Primero especificamos la máquina virtual a clonar, después el nombre de la que será el clon y la ruta al disco a utilizar para la imagen clonada.

También se puede especificar todo por línea de comandos, ejemplo:

# virt-clone \
     --original mimaquinavirtual \
     --name clonmimaquinavirtual \
     --file /home/clonmimaquinavirtual.img

Xen: Cómo suspender / activar una máquina virtual


Para la suspensión de máquinas virtuales en Xen utilizaremos la utilidad virsh. Virsh es una utilidad que utiliza la API de libvirt, y es una buena alternativa a la administración de máquinas virtuales a través de xm o cualquier aplicación gráfica.

El modo de suspender una máquina virtual utilizando virsh es el siguiente:

virsh suspend (nombre dominio | identificador dominio | uuid dominio) 

En este caso, si nuestra máquina virtual se llamara test01, podríamos suspenderla de este modo:

virsh suspend test01

Podemos utilizar también el ID de dominio (podemos verlo con un xm list) o el uuid (en el fichero de configuración de la máquina virtual).

Posteriormente, para activar la máquina virtual utilizaremos la opción resume:

virsh resume (nombre dominio | identificador dominio | uuid dominio) 

Cómo convertir una imagen VMware a Virtualbox


La mayoría de vosotros conoceréis estos dos sistemas de virtualización, VMWare y Virtualbox. En el caso de necesitar migrar una máquina virtual o imagen de un sistema de virtualización al otro, hay que hacer lo siguiente:

Instalar qemu:

sudo apt-get install qemu

Convertir la imagen VMWare a una imagen VirtualBox con qemu:

Migraremos la imagen centos.vmdk de VMWare al formato de imagen /tmp/centos.bin

qemu-img convert centos.vmdk /tmp/centos.bin

Finalmente usaremos VBoxManage para convertir el fichero de imagen .bin al nativo de virtualbox .vdi:

VBoxManage convertdd /tmp/centos.bin centos.vdi

Fuente en inglés | www.cyberciti.biz