Políticas de protección de MVs

De Manuais Informática - IES San Clemente.
Revisión del 09:55 21 nov 2016 de Carrion (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
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.
 1 #!/usr/bin/python
 2 # coding: utf-8
 3 
 4 import commands, time, os
 5 
 6 
 7 #######################################################################
 8 # Script que realiza bakcups de MVs nun Repositorio de almacenamento #
 9 #######################################################################
10 
11 
12 
13 ######################################################################
14 ####################################
15 # Directorio onde se van realizar as copias das MVs: as exportacións
16 # Cambiar en función do punto de montaxe 
17 # Usar o comando mount para ver a identificación do punto de montaxe 
18 # onde se vai realizar a copia.
19 # O script vai cambiar de directorio para executar dende aí o proceso 
20 # de copia da MV (exportación)
21 ####################################
22 ######################################################################
23 directory = "/var/run/sr-mount/037eac02-ddd8-be5d-4179-a08cad518f23"
24 os.chdir(directory)
25 
26 
27 ######################################################################
28 ####################################
29 # Función que devolve un array co par (uuid e nome) das MVs que non son 
30 # dom0 nin un snapshot
31 ####################################
32 ######################################################################
33 def get_backup_vms():
34     result = []
35     
36 
37 
38     cmd = "xe vm-list is-control-domain=false is-a-snapshot=false"
39 
40     # Se se quere facer Backup dunha sóa MV descomentar a seguinte liña e configurala
41     #cmd = "xe vm-list name-label=Nome da MV"
42 
43     output = commands.getoutput(cmd)
44 
45     for vm in output.split("\n\n\n"):
46         lines = vm.splitlines()
47         uuid = lines[0].split(":")[1][1:]
48         name = lines[1].split(":")[1][1:]
49         result += [(uuid, name)]
50 
51     return result
52 
53 
54 
55 
56 ######################################################################
57 ####################################
58 # Función que é chamada dende o seguinte bucle e
59 # recibe:
60 #   o uuid de cada MV 
61 #   un nome de ficheiro co que se vai crear o snapshot e o ficheiro a exportar.
62 # Crea, exporta e elimina o snapshot. 
63 ####################################
64 ######################################################################
65 def backup_vm(uuid, filename):
66     cmd = "xe vm-snapshot uuid=" + uuid + " new-name-label=" + filename
67     snapshot_uuid = commands.getoutput(cmd)
68 
69     cmd = "xe template-param-set is-a-template=false ha-always-run=false uuid=" + snapshot_uuid
70     commands.getoutput(cmd)
71 
72     cmd = "xe vm-export vm=" + snapshot_uuid + " filename=" + filename + ".xva"
73     commands.getoutput(cmd)
74 
75     cmd = "xe vm-uninstall uuid=" + snapshot_uuid + " force=true"
76     commands.getoutput(cmd)
77 
78 
79  
80 
81 ######################################################################
82 ####################################
83 # Bucle que procesa tódolos pares (uuid, nome) das MVs
84 # Chama á 1ª función get_backup_vms() para obter eses pares (uuid, nome) das MVs do host
85 # Crea o nome do ficheiro (filename) baseado na data-hora e o nome da MV
86 # Chama á 2ª función (backup_vm) para realizar o backup de cada MV. 
87 ####################################
88 ######################################################################
89 for (uuid, name) in get_backup_vms():
90     timestamp = time.strftime("%Y%m%d-%H%M", time.gmtime())
91     print timestamp, uuid, name
92     filename = "\"" + timestamp + " " + name +"\""
93     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)