viernes, 13 de enero de 2012

Proxmox 1.9

Backup de una máquina virtual montada en Proxmox:

La copia de una máquina virtual implica un fichero de configuración, que se almacena en /etc/qemu-server/, y el/los fichero/s de disco duro (raw, qcow, qcow2, etc.), que estará almacenado en local (/var/lib/vz/images/) o en red mediante ISCSI o NFS.
A continuación se recopilan los comandos más interesantes:
Se realiza una copia de la máquina con identificador (VMID) y se almacena en un 'tar' en el directorio por defecto (/var/lib/vz/dump/).
vzdump (VMID)
Se realiza una copia de todas las máquinas y se almacenan, en un 'tar' cada una, en el directorio por defecto (/var/lib/vz/dump/).
vzdump --all
Se puede realizar la copia comprimida en 'tgz'.
vzdump --compress (VMID)
Se puede indicar en qué directorio almacenar la copia.
vzdump --dumpdir (DIR) (VMID)
Se puede indicar el número de copias permitidas en el mismo directorio (se eliminará la copia más antigua en caso de superar dicho número, que por defecto es 1).
vzdump --maxfiles (N) (VMID)
Se puede indicar en qué Storage (definido en Proxmox) se quiere almacenar la copia.
vzdump --storage (STORAGE_ID)
A la hora de comenzar el proceso de copia, si la máquina se encuentra en ejecución, se puede indicar qué hacer.
vzdump --stop (VMID) --) La máquina virtual se detiene.
vzdump --suspend (VMID) --) La máquina virtual se suspende
(opción por defecto).
vzdump --snapshot (VMID) --) La máquina virtual no se detiene
(copia al vuelo, sólo funciona con volúmenes LVM).

Restauración de una máquina virtual en Proxmox:

La restauración de una máquina virtual se realiza desde un empaquetado 'tar' o 'tgz'. El proceso consiste en restaurar el fichero de configuración de la máquina virtual en el directorio /etc/qemu-server/ y restaurar el/los discos duros virtuales de la máquina virtual en el Storage (definido en Proxmox) en el que se encontraran cuando se realizó el backup.
Este mismo proceso, con las opciones adecuadas, sirve para clonar una máquina, esto es, crear una máquina nueva a partir de una imagen base.
A continuación se recopilan los comandos más interesantes:
Se restaura la máquina desde el empaquetado (FICHERO) con el identificador (VMID) en el Storage desde el que se generó el backup.
qmrestore (FICHERO) (VMID)
Se restaura la máquina asignándole una dirección MAC distinta a la tarjeta de red (en caso de que la máquina la tenga definida) (usar cuando se quiere clonar una máquina).
qmrestore --unique (FICHERO) (VMID)
Se puede indicar en qué Storage (definido en Proxmox) restaurar la máquina virtual.
qmrestore --storage (STORAGE_ID) (FICHERO) (VMID)
Se puede realizar la restauración de una máquina virtual de manera secuencial, indicando el número de restauraciones a realizar. Cada restauración incrementará el (VMID) en una unidad.
qmrestore --repeat (N)

Ampliación del tamaño de un disco duro:

Para ampliar el tamaño de un disco duro para una máquina virtual es necesario realizar dos pasos:

Ampliar el tamaño del disco desde la visión de host:

En local:
- Hay que indicar la ruta a la imagen RAW del disco duro virtual (IMAGEN_DISCO) y el nuevo tamaño del disco expresado en megabytes (TAM).
dd if=/dev/zero of=(IMAGEN_DISCO) bs=1M count=0 seek=(TAM)
En LVM2:
- Hay que indicar la ruta del dispositivo LVM2 (LV_NAME) y el nuevo tamaño del disco expresado en megabytes (TAM).
lvresize -L (TAM) (LV_NAME)

Ampliar el tamaño del disco desde la visión de anfitrión:

Utilizar un programa de gestión de particiones como Partition Master (Windows) o Gparted (Linux) para ampliar la partición desde la máquina virtual.

Eliminación de dispositivo LVM2:

En Proxmox existe una deficiencia cuando se tienen configurados varios nodos en cluster. Cuando se crea un dispositivo en LVM2 desde alguno de los nodos, en el resto se actualiza y se genera dicho dispositivo. Sin embargo, cuando se elimina una máquina virtual, se eliminan todos sus discos pero solo del nodo desde el que se elimina la máquina. En el resto de nodos del cluster se mantiene el dispositivo, aunque éste ya no exista realmente. Esto puede producir incoherencias. Para ello se puede utilizar el siguiente comando para eliminar un dispositivo concreto, (DISPOSITIVO).
dmsetup remove (DISPOSITIVO)

Gestión de volúmenes con LVM2:

LVM2 (Logical Volume Manager) es una herramienta para linux para la gestión de volúmenes lógicos que introduce una capa de abstracción entre los discos físicos, las particiones y los sistemas de ficheros configurados.
Se puede mostrar información acerca de los discos del sistema, indicando cuáles están configurados con LVM2, así como cuántas particiones hay definidas.
lvmdiskscan
LVM2 funciona a tres niveles: volúmenes físicos (PV: physical volumes), grupos de volúmenes (VG: volume groups) y volúmenes lógicos (LV: logical volumes).
Para cada uno de los niveles hay aplicaciones concretas para su gestión (crear, redimensionar, eliminar, etc).
A continuación se recopilan los comandos más interesantes de cada nivel:

PV:

Se muestra información acerca de los volúmenes físicos. Cualquiera de los siguientes comandos muestra dicha información. pvdisplay muestra una información algo más extendida que los otros.
pvs pvscan pvdisplay
Se inicializa un volumen físico (alguna partición o el disco entero de un dispositivo físico), (PV_NAME), para que LVM2 pueda gestionarlo más adelante.
pvcreate (PV_NAME)
Se elimina un volumen físico, (PV_NAME), de manera que LVM2 ya no podrá gestionarlo.
pvremove (PV_NAME)
Se redimensiona un volumen físico, extendiendo o comprimiendo el área de dicho volumen hasta completar el área de la partición física del dispositivo (PV_NAME). Es decir, para redimensionar un volumen físico, se requiere la redimensión de la partición con otras herramientas.
pvresize (PV_NAME)

VG:

Se muestra información acerca de los grupos de volúmenes. Cualquiera de los siguientes comandos muestra dicha información. vgdisplay muestra una información algo más extendida que los otros.
vgs vgscan vgdisplay
Se activan los volúmenes lógicos que alberga un grupo de volúmenes concreto (VG_NAME), de manera que el kernel los detecta.
vgchange -aly (VG_NAME)
Se desactivan los volúmenes lógicos que alberga un grupo de volúmenes concreto (VG_NAME), de manera que el kernel deja de detectar cualquier volumen lógico.
vgchange -aln (VG_NAME)
Se crea un grupo de volúmenes lógicos, (VG_NAME), a partir de uno o varios volúmenes físicos inicializados, (PV_NAME).
vgcreate (VG_NAME) (PV_NAME) [PV_NAME...]
Se añade uno o varios volúmenes físicos inicializados, (PV_NAME).
vgextend (VG_NAME) (PV_NAME) [PV_NAME...]
Se elimina uno o varios volúmenes físicos, (PV_NAME), asociados a un grupo de volúmenes (VG_NAME).
vgreduce (VG_NAME) (PV_NAME) [PV_NAME...]
Se elimina el grupo de volúmenes (VG_NAME) y todos los volúmenes lógicos incluidos en éste.
vgremove (VG_NAME)
Se renombra el grupo de volúmenes (VG_NAME), dándole el nuevo nombre (VG_NAME_NEW).
vgrename (VG_NAME) (VG_NAME_NEW)

LV:

Se muestra información acerca de los volúmenes lógicos. Cualquiera de los siguientes comandos muestra dicha información. lvdisplay muestra una información algo más extendida que los otros.
lvs lvscan lvdisplay
Se activa el volumen lógico concreto (LV_NAME), de manera que el kernel lo detecta.
lvchange -aly (LV_NAME)
Se desactiva el volumen lógico concreto (LV_NAME), de manera que el kernel deja de detectarlo.
lvchange -aln (LV_NAME)
Se crea un volumen lógico, (LV_NAME), con un tamaño (LV_SIZE) en MB, contenido en el grupo de volúmenes (VG_NAME).
lvcreate -L (LV_SIZE) -n (LV_NAME) (VG_NAME)
Se establece el tamaño de un volumen lógico, (LV_NAME), al indicado, (LV_NEW_SIZE).
lvresize -L (LV_NEW_SIZE) (LV_NAME)
Se elimina el volumen lógico (LV_NAME).
lvremove (LV_NAME)
Se eliminan todos los volúmenes lógicos contenidos en el grupo de volúmenes lógicos (VG_NAME).
lvremove (VG_NAME)
Se renombra el volumen lógico (LV_NAME), dándole el nuevo nombre (LV_NAME_NEW).
lvrename (LV_NAME) (LV_NAME_NEW)

Análisis de rendimiento:

Para analizar el rendimiento del servidor se han utilizado tres aplicaciones diferentes además del servidor de monitorización Zabbix. Se muestra información acerca del consumo en tiempo real de la memoria y de la swap, además del uso de disco y de la cpu. Cualquiera de los siguientes comandos muestra información acerca del uso de disco y de la cpu. Únicamente iostat carece de información de memoria y swap. htop muestra una información más gráfica, mientras que iostat muestra más información relacionada con discos duros.
htop atop iostat
Se muestra la información completa de uso de los discos cada (N) segundos.
iostat (N)
Se muestra la información completa de uso de los discos de manera extendida.
iostat -x
Se muestra la información completa de uso de los discos indicados.
iostat [(DEVICE1) ...]

Herramientas personalizadas:

Clonación de máquinas virtuales:

Se realiza una copia de la máquina virtual (VMIDMaquinaOriginal) y se coloca en un directorio temporal (/var/lib/vz/vztmp). Se duplica dicha máquina hasta conseguir (NumTotalMaquinas) de máquinas virtuales totales. Por ultimo, se inician todas las máquinas duplicadas y la máquina original. Si no se indica el valor (NumTotalMaquinas), se asume un 2, es decir, se creará una única copia de la máquina original.
vmclon (VMIDMaquinaOriginal) [(NumTotalMaquinas)]

Backup de máquinas virtuales:

Se realiza una copia de seguridad de las máquinas virtuales comprendidas entre la máquina (MAQ_INICIO) y la máquina (MAQ_FIN), soportando (NUM) copias de seguridad totales de cada máquina, de manera que si se excede dicho número, las copias más antiguas se borrarán automáticamente. Además, las copias de seguridad existentes con más de (DIAS) días de antigüedad se borrarán automáticamente por estar obsoletas. La política de backup establecida es de almacenar todas las copias de seguridad en un mismo directorio, exceptuando las copias realizadas en domingo o lunes (noche del domingo al lunes), que se almacenarán en distinto directorio para que el backup corporativo las recoja.
backup -c (NUM) (DIAS) (MAQ_INICIO) (MAQ_FIN)
Se restaura la copia de seguridad (BACKUP) para la máquina (VMID). La máquina (VMID) será parada antes de restaurar la copia de seguridad y se arrancará cuando el proceso haya terminado. Si no se indica el parámetro (BACKUP), se muestra un listado de copias de seguridad disponibles para la máquina (VMID). Si no se indican ninguno de los dos parámetros, se muestra un listado de las máquinas disponibles sobre las que se puede restaurar una copia de seguridad.
vmbackup -r [(VMID) [(BACKUP)]]

Gestión de máquinas virtuales:

Se inician todas las máquinas virtuales comprendidas entre la (MAQ_INICIO) y la (MAQ_FIN).
vmmanagement start (MAQ_INICIO) [(MAQ_FIN)]
Se detienen de manera abrupta todas las máquinas virtuales comprendidas entre la (MAQ_INICIO) y la (MAQ_FIN).
vmmanagement stop (MAQ_INICIO) [(MAQ_FIN)]
Se apagan de manera segura todas las máquinas virtuales comprendidas entre la (MAQ_INICIO) y la (MAQ_FIN).
vmmanagement shutdown (MAQ_INICIO) [(MAQ_FIN)]
Se suspenden todas las máquinas virtuales comprendidas entre la (MAQ_INICIO) y la (MAQ_FIN).
vmmanagement suspend (MAQ_INICIO) [(MAQ_FIN)]
Se eliminan todas las máquinas virtuales comprendidas entre la (MAQ_INICIO) y la (MAQ_FIN).
vmmanagement destroy (MAQ_INICIO) [(MAQ_FIN)]

Limpieza de dispositivos LVM2:

Se limpia la referencia de los discos utilizados por la máquina (VMIDMaquina) si dicha máquina ya no existe (simplificación de lo explicado en el apartado Eliminación de dispositivo LVM2).
vmcleandisk (VMIDMaquina)

Backup de ficheros de configuración:

Se realizan copias de seguridad en el directorio /etc/qemu-server/(nombre_maquina) de los ficheros de configuración de las máquinas virtuales del otro servidor del cluster, soportando (NUM) copias de seguridad totales, de manera que si se excede dicho número, las copias más antiguas se borrarán automáticamente. Donde (nombre_maquina) es el nombre del servidor del que se realizarán las copias.
crossoverbackup (NUM)

Backup completo:

Ejecuta conjuntamente copia de seguridad de los ficheros de configuración y de máquinas virtuales a partir de ciertos parámetros establecidos globalmente en el script. Dichos parámetros son los siguientes:
- MAQUINA_INICIAL → Máquina inicial del rango sobre el que se realizarán las copias de seguridad.
- MAQUINA_FINAL → Máquina final del rango sobre el que se realizarán las copias de seguridad.
- NUMERO_DIAS → Número de días a partir de los cuales las copias antiguas están obsoletas y deben borrarse.
- NUMERO_COPIAS_CONF → Número de copias de seguridad soportadas de los ficheros de configuración.
- NUMERO_COPIAS_MAQUINAS → Número de copias de seguridad soportadas de las máquinas virtuales.
backup