Políticas de protección de MVs

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

Introdución

  • Nesta ocasión o que se pretende é realizar copias de seguridade das MVs e sacalas para un medio de almacenamento exterior.
  • Até a versión 6.2 de XenServer dispoñíase da utilidade VMPPR/VMPR (Virtual Machine Protection Policies & Recovery), que se amosará ao final deste apartado para ver como funcionaba e por se nalgunha versión posterior a volven incorporar.
  • Na versión 6.2 Citrix retirou esa funcionalidade deste versión aducindo: "Que hai outras ferramentas de backup de terceiros para facer copias das MVs: Quadric Software, SEP, e PHD Virtual.": http://support.citrix.com/article/CTX137826#deprecated_removed.


  • Por tanto, como non deixa de ser moi importante que polo menos unha vez ao mes (incluso por unha por semana, e se se fan moitos cambios unha por día) se faga unha copia de seguridade da MV en si: dos seus VDIs ou discos e de xeito automático é necesario implantar unha política de seguridade feita cun script na linguaxe Python (http://www.python.org/, http://gl.wikipedia.org/wiki/Python)


  • En calquera caso con ou sen script, precísase un recurso externo, compartido por NFS ou por SAMBA, no que realizar as copias.
  • Imos usar para iso a cabina (FreeNAS) lembrar que ao comezo da parte VII creouse un DataSet chamado backup
  • Tamén se pode podería usar calquera outro ordenador da rede que teña un recurso compartido por SMB/CIFS ou NFS.


  • Na imaxe seguinte obsérvase que imos montar un o mesmo recurso Backup da FreeNAS a través de SMB/CIFS e NFS. Non é preciso montar o mesmo recurso por distintos protocolos, pero así vemos toda a casuística. Co cal imos crear en XenServer 2 repositorios de almacenamento para o mesmo recurso: un por CIFS e outro por NFS.


  • Pero antes configuraremos ese recurso na FreeNAS.

00 Servizos Virtualizacion Escenarios Semana 05 C.jpg

Configuración do volume na NAS

Crear políticas de protección

  • As políticas de protección o que fan é:
    • Crear Snapshots programados da/s MV/s, aínda estando acendidas..
    • Opcionalmente pódese exportar ese Snapshot a un recurso externo por SAMBA ou por NFS.
    • A continuación vaise expoñer como implantar políticas de protección facendo uso de comandos do CLI xe.


Políticas de protección facendo uso do CLI xe

  • Basicamente imos realizar os seguintes pasos:
    • Comezar configurando en XenServer os repositorios de almacenamento
    • Realizar un snapshot da MV (MVs) en cuestión
    • Exportar o snapshot a un recurso compartido no exterior para salvagardar a MV
    • Destruír/Eliminar o snapshot


  • Primeiramente exporase como realizar cada un dos pasos anteriores e finalmente automatizaremos o proceso cun script e programaremos a súa execución

Configurar en XenServer os repositorios de almacenamento

  • Unha vez que temos o recurso compartido Backup na FreeNAS e compartido por SMB/CIFS e NFS facendo uso do comando mount poderíamos montar en XenServer ese recurso tanto por SMB/CIFS ou NFS como se viu na parte IV do curso, pero ...
  • Imos crear eses puntos de montaxe a través de XenCenter (podería ser tamén a través do CLI xe) creando dous Repositorios de Almacenamento en XenServer apuntando ao mesmo recurso da FreeNAS (Backup) pero facendo uso de protocolos de conexión distintos en cada caso: CIFS e NFS. (O obxectivo de crear os dous Repositorios é simplemente por practicar, chegaría con crear un só).

Para afondar máis sobre comandos sr: http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/reference.html#cli-xe-commands_sr

Realizar snapshot e exportación dunha MV co CLI xe

  • A continuación imos ver os pasos básicos para crear co CLI xe un snapshot e exportalo ao exterior.
  • Estes pasos serán o núcleo do script que logo se amosará para programar e automatizar as medidas de proteccións das MVs.
  • Imos para iso usar a MV dx2go'.
  • Para os seguintes pasos como pode ser que haxa que copiar/pegar recomendamos conectarse ao host por ssh/putty ou a consola de XenCenter.

Automatización e programación do proceso de backup de MVs: Script


  • IMPORTANTE: en python a identación equivale noutras linguaxes as chaves {}, por tanto todo aquel código que se execute no mesmo nivel de identación pertence ao mesmo bloque de código.
  • Cada identación son 4 espazos, non se realiza coa tecla tabuladora.
  • NOTAS:
  • Ao copiar o script dende a Web non leva consigo os números de liña
  • Se o script se copia dende PDF revisar as tabulacións.
#!/usr/bin/python
# coding: utf-8

import commands, time, os


#######################################################################
# Script que realiza bakcups de MVs nun Repositorio de almacenamento #
#######################################################################



######################################################################
####################################
# Directorio onde se van realizar as copias das MVs: as exportacións
# Cambiar en función do punto de montaxe 
# Usar o comando mount para ver a identificación do punto de montaxe 
# onde se vai realizar a copia.
# O script vai cambiar de directorio para executar dende aí o proceso 
# de copia da MV (exportación)
####################################
######################################################################
directory = "/var/run/sr-mount/037eac02-ddd8-be5d-4179-a08cad518f23"
os.chdir(directory)


######################################################################
####################################
# Función que devolve un array co par (uuid e nome) das MVs que non son 
# dom0 nin un snapshot
####################################
######################################################################
def get_backup_vms():
    result = []
    


    cmd = "xe vm-list is-control-domain=false is-a-snapshot=false"

    # Se se quere facer Backup dunha sóa MV descomentar a seguinte liña e configurala
    #cmd = "xe vm-list name-label=Nome da MV"

    output = commands.getoutput(cmd)

    for vm in output.split("\n\n\n"):
        lines = vm.splitlines()
        uuid = lines[0].split(":")[1][1:]
        name = lines[1].split(":")[1][1:]
        result += [(uuid, name)]

    return result




######################################################################
####################################
# Función que é chamada dende o seguinte bucle e
# recibe:
#   o uuid de cada MV 
#   un nome de ficheiro co que se vai crear o snapshot e o ficheiro a exportar.
# Crea, exporta e elimina o snapshot. 
####################################
######################################################################
def backup_vm(uuid, filename):
    cmd = "xe vm-snapshot uuid=" + uuid + " new-name-label=" + filename
    snapshot_uuid = commands.getoutput(cmd)

    cmd = "xe template-param-set is-a-template=false ha-always-run=false uuid=" + snapshot_uuid
    commands.getoutput(cmd)

    cmd = "xe vm-export vm=" + snapshot_uuid + " filename=" + filename + ".xva"
    commands.getoutput(cmd)

    cmd = "xe vm-uninstall uuid=" + snapshot_uuid + " force=true"
    commands.getoutput(cmd)


 

######################################################################
####################################
# Bucle que procesa tódolos pares (uuid, nome) das MVs
# Chama á 1ª función get_backup_vms() para obter eses pares (uuid, nome) das MVs do host
# Crea o nome do ficheiro (filename) baseado na data-hora e o nome da MV
# Chama á 2ª función (backup_vm) para realizar o backup de cada MV. 
####################################
######################################################################
for (uuid, name) in get_backup_vms():
    timestamp = time.strftime("%Y%m%d-%H%M", time.gmtime())
    print timestamp, uuid, name
    filename = "\"" + timestamp + " " + name +"\""
    backup_vm(uuid, filename)


  • A continuación vaise poñer en práctica o script anterior e a súa programación en xen00.

Políticas de protección facendo uso de XenCenter

  • Como xa se indicou ao comezo deste punto, Citrix retirou a realizacións de medidas de protección dende XenCenter.
  • O que se expón a continuación é como se crean as medidas de protección dende XenCenter en servidores XCP ou versións de pago de XenServer 6.1 e anteriores.
  • O usuario, salvo por curiosidade ou porque dispoña dun servidor XCP, pode saltar este punto.

Realización de probas

Deshabilitar unha política de protección




-- Antonio de Andrés Lema e Carlos Carrión Álvarez (Maio-2013, Rev1: Feb 2014 - Rev2: Nov 2014)