miércoles, 31 de octubre de 2012

Sonrian ... SNAPSHOT


… Uno de los factores determinantes dentro de una arquitectura de almacenamiento es poseer mecanismos de protección datos, y que la recuperación de estos sea los más rápido y consistentes posibles y sobre todo que estos mecanismos no supongan una degradación del rendimiento y permita a los administradores gestionar estas tareas de una manera fácil.  
En este artículo explicaremos el concepto de SNAPSHOT, concretamente desde el punto de vista de NetApp, pero es importante tomar en cuenta que es un concepto genérico, es decir, cada fabricante de acuerdo a su arquitectura define SNAPSHOT de una manera diferente.

En general se denomina SNAPSHOT, a una foto, instantánea o imagen de un sistema de ficheros en un momento dado, para diferentes propósitos, sin necesidad de afectar la disponibilidad de los datos e incluso el rendimiento, uno de los propósitos de generar un snapshot es para respaldo de los datos o para realizar clonados de sistemas de ficheros para proteger los datos ante cambios que se pueden producir en ellos.
Por ejemplo, el concepto de Snapshot en VMWARE es realizar una copia de una máquina virtual específica, en este sentido los administradores de VMWare realizan Snapshots cuando se quiere realizar algún cambio sobre alguna máquina virtual y en caso de producirse algún problema, restaurar la máquina virtual a partir del Snapshot que se generó y así volver al estado anterior de la máquina virtual.

Desde el punto de vista de NetApp , es una imagen en un momento determinado del sistema de ficheros, se realiza a nivel de volumen, por tanto, cuando se realiza un snapshot se realiza una copia de la tabla de inodes del volumen, cuando un fichero es modificado dentro del volumen, Data Ontap copia los bloques antes de modificarse al espacio reservado para snapshots, apuntando los punteros de snapshot a los bloques no modificados, mediante esta técnica se consigue una copia fiable del sistema sin la necesidad de tener que copiar todos los datos, solamente los que se modifican. Se pueden generar hasta 255 snapshots por volumen.
Cuando se crea un volumen se reserva un espacio para los snapshots, y se puede visualizar (es configurable) una vez montado el volumen, concretamente en el directorio . /Snapshot, en el ejemplo vemos un volumen montado en una máquina de Linux y se lista los snapshots generados.

root@maquetas> cd .snapshot/

root@maquetas> ls

 

hourly.0   hourly.1   hourly.2   hourly.3   hourly.4   snapshot1  snapshot2

root@maquetas> ls -la

drwxrwxrwx   9 root     root        4096 Jan 20 20:00 .

drwxr-xr-x   6 root     root        4096 Jan 20 19:30 ..

drwxr-xr-x   5 root     root        4096 Jan 20 19:30 hourly.0

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 hourly.1

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 hourly.2

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 hourly.3

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 hourly.4

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 snapshot1

drwxr-xr-x   4 root     root        4096 Nov 17 13:39 snapshot2

 

La generación de los snapshots se pueden programar en las siguientes periodicidades.

§  Weekly: Se realizan todos los domingos a medianoche.

§  Nightly: Se realizan todos los días a medianoche.

§  Hourly: Se realizan a las horas programadas.

En el ejemplo mostramos una configuración de snapshots programados a través del comando “ snap sched “

Snap sched 1 2 6@8,12,16,20

Donde

1    Nº de snapshots “Weekly” que se guardan

2    Nº de snapshots “Nightly” que se guardan

6    Nº de snapshots “Hourly” que se guardan

8, 12, 16, 20 Horas a las que se realizan los snaps “Hourly”

Esta programación se puede realizar a través del Oncommand System Manager, que es la herramienta grafica de NetApp utilizada para administrar la cabina de NetApp.
A continuación explicaremos, para entender mejor el comportamiento de los snapshots la salida del comando “snap list” , esto nos ayudará a definir una buena configuración de snapshots.

Supongamos que al listar nuestros snapshots nos aparece la siguiente salida

 %/used             %/total            date                  name

     

31% (31%)    0% ( 0%)            Mar 08 00:00                     nightly.0

47% (29%)    0% ( 0%)            Mar 07 20:00                     hourly.0

57% (32%)    0% ( 0%)            Mar 07 16:00                     hourly.1

64% (29%)    0% ( 0%)            Mar 07 12:00                     hourly.2

69% (32%)    0% ( 0%)            Mar 07 08:00                     hourly.3

73% (29%)    0% ( 0%)            Mar 07 00:01                     nightly.1

76% (30%)    0% ( 0%)            Mar 06 20:00                     hourly.4

78% (31%)    0% ( 0%)            Mar 06 16:00                     hourly.5


La columna % used nos muestra el espacio consumido por los snapshots dividido por los bloques utilizados en el volumen, no toma en cuenta si ese espacio es utilizado por el filesystem o snapshots, el primer número es acumulativo para todos los snapshots de la lista, el segundo para el % usado por el snapshot específico.
La columna % total muestra el espacio consumido por los snapshots dividido por el espacio total de disco en el volumen, esto incluye el espacio de datos + espacio reservado para los snapshots incluye todo los bloques usados y libres, si el espacio total del volumen es 100 GB y el espacio consumido por snapshots son 60 MB el cálculo sería < 1% , por tanto nos mostraría 0% tal y como muestra la salida del ejemplo.

Por tanto, la variación de estos valores dependerá de los bloques nuevos, modificados y borrados, dicho esto, si la cantidad de datos varia entonces el % total seguirá siendo el mismo , pero el % used variará, si al contrario la tasa de cambio se mantiene constante, pero el volumen se aumenta o se reduce, entonces el % Total cambiará y el % used seguirá siendo el mismo.
Estos datos son útiles analizarlos, para concluir que cuando se tienen una gran cantidad de datos de snapshots y el espacio libre es alto, se debe de incrementar el % de reserva para snapshots y cuando el espacio libre es bajo, entonces se debe aumentar el tamaño del volumen, de la misma forma el valor del % total nos puede indicar si el porcentaje reservado para los snapshots es insuficiente, y si se ha desbordado el espacio de los datos en el volumen, si se tiene un periodo de retención grande estos datos determinarán hasta cuanto se debe aumentar de tamaño el volumen.

Por último, si se decide eliminar snapshots, ejecutar antes los siguientes comando “snap delta” y snap “reclaimable” para tener una idea que snapshots eliminar.
En conclusión, es importante definir una buena política de retención y reserva de los snapshots tomando en cuenta la variación de los datos almacenados en el volumen, en la práctica, muchas veces nos encontramos sin espacio en el volumen debido a una mala definición de la configuración de los snapshots.

Bueno amigos, espero que este articulo les haya sido de utilidad.
Hasta pronto

No hay comentarios:

Publicar un comentario