LVM y Snapshots

Julio Pacheco T. julio.pacheco en provectis.cl
Vie Ago 10 18:30:12 CLT 2007


Victor Hugo dos Santos escribió:
> Maestros,
> 
> estoy leyendo y trabajando con snapshots en un servidor con BD
> oracle.. la idea es reducir el actual downtime actual (unas 8 horas)
> para un valor mas aceptable. ;-)
> 
> hasta el momento va todo de maravilla, logramos que el downtime sea <
> a 15 minutos, con un procedimento para parar la BD, hacer el snapshot
> y volver a llevantar la BD.
> 
> las dos preguntas que tengo, son:
> 
> - he visto en varios documentos (LVM-howto incluso) indicando que se
> debe de eleminar el cuanto antes el snapshot por un tema de rendimento
> !!!la verdad es que entendi poco el porque.. no se supone que una vez
> creado una instantanea del FS, este ya no tiene ninguna relacion con
> el FS original ??? en que afecta el rendimento tener por ejemplo un
> SNAP de 600GB durante un mes ??? cual seria el TTL limite para un SNAP
> ???

Por en contrario, un snapshot _sí_ mantiene relación con el FS original, ya que va 
guardando los cambios a partir del momento en que "sacó la foto". Por eso es que un 
snapshot ocupa (físicamente) menos espacio que el FS original.

Por ejemplo, supón un FS como este, y supongamos que ABCD son bloques de tu datafile:

Original
+-------+
|   A   |
+-------+
|   B   |
+-------+
|   C   |
+-------+
|   D   |
+-------+
|  ...  |
+-------+

Al crear el snapshot(t=0), nace vacío. Si no hay cambios en tu filesystem original, 
cualquier lectura del snapshot se entrega desde el FS original, por lo que no ves mayor 
impacto.

Original       Snapshot
+-------+      +-------+
|   A   |      |       |
+-------+      +-------+
|   B   |      |       |
+-------+      +-------+
|   C   |      |       |
+-------+      +-------+
|   D   |
+-------+
|  ...  |
+-------+

Si, por ejemplo, cambias el bloque 'C', este debe copiarse al snapshot _antes_de escribir 
el bloque nuevo, lo cual te genera un impacto en la escritura.

Original             Snapshot
+-------+            +-------+
|   A   |            |       |
+-------+            +-------+
|   B   |            |       |
+-------+            +-------+
|   C   |  ---C--->  |       |
+-------+            +-------+
|   D   |
+-------+
|  ...  |
+-------+

Original       Snapshot
+-------+      +-------+
|   A   |      |   C   |
+-------+      +-------+
|   B   |      |       |
+-------+      +-------+
|   C'  |      |       |
+-------+      +-------+
|   D   |
+-------+
|  ...  |
+-------+

Si ahora lees tu snapshot, la lectura es:

orig(A), orig(B), _SNAP_(C), orig(D) ...,

lo cual (por lo general) significa estar buscando los datos en particiones y/o discos 
distintos

Extrapola para unos cuantos GB y hartos cambios, y le vas a encontrar sentido a la 
recomendación de deshacerte del snapshot tan pronto como cumpla su función.

> - mis conocimentos en oracle son bastante limitados, pero he visto en
> internet que existe un "backup mode" que permite que la BD continue
> operativa durante el processo de creaccion del SNAP... alguien tiene
> algun enlace que explique como puedo aplicar esto en un script que se
> ejecute en un CRON ???
> 
> mmm. esto era.
> 
> salu2 y atento
> 


-- 
It is pitch black. You are likely to be eaten by a grue.


Más información sobre la lista de distribución Linux