Netapp Snapmirror entre dos cabinas

NetAppHacía ya un tiempo que no hacia entradas sobre Netapp, así que vamos a retomar un poco el tema con la utilidad Snapmirror, que permite replicar volumenes/qtrees entre filers. Snapmirror va a trabajar de forma sincrona (snapmirror_sync) y replicando los datos contra el volumen de respaldo a la vez que se escriben en el volumen original o por contra especificando una periodicidad concreta al más puro estilo cron. Los datos antes de ser escritos en disco se guardan en NVRAM con el fin de asegurar su consistencia.

Lo primero de todo, lógicamente es disponer la licencia de snapmirror en ambas cabinas, en este caso vamos a trabajar sobre netapp01 (192.168.1.100) y netapp02 (192.168.1.129). Activamos la licencia y posteriormente snapmirror:

Activación de Snapmirror

Para realizar en los dos filer:

NetApp01> license add XXXXXX
A snapmirror site license has been installed.
snapmirror enabled.
NetApp01> Sat Dec  3 20:02:32 GMT [rc:notice]: snapmirror licensed

NetApp01> license add XXXXXX
A snapmirror_sync site license has been installed.
Sync SnapMirror enabled.

NetApp01> options snapmirror.enable on
NetApp01> options snapmirror.log.enable on

Conectividad entre filers

Lo primero que debemos hacer es revisar la conectividad entre ambas cabinas:

NetApp01> ping 192.168.1.129
192.168.1.129 is alive

NetApp02> ping 192.168.1.100
192.168.1.100 is alive

Configuramos el filer origen permitiendo que el filer destino pueda acceder a él, para ello hay que añadir el hostname/ip del filer destino en el fichero /etc/snapmirror.allow. Antes de nada verificad si existe y tiene contenido para preservarlo, ya que con wrfile eliminamos lo que hubiera anteriormente:

NetApp01> rdfile /etc/snapmirror.allow
/etc/snapmirror.allow: No such file or directory

NetApp01> rdfile /etc/snapmirror.allow
/etc/snapmirror.allow: No such file or directory
NetApp01> wrfile /etc/snapmirror.allow
192.168.1.129
NetApp02
CTRL + C
read: error reading standard input: Interrupted system call
NetApp01> rdfile /etc/snapmirror.allow
192.168.1.129

Creación de volúmenes a replicar

Vamos a crear el volumen de datos en el filer origen:

NetApp01> vol create vol_backup aggr_test 200M
Creation of volume 'vol_backup' with size 200m on containing aggregate
'aggr_test' has completed.

Snapmirror

Una vez creado el volumen en el filer origen, ya podemos crear la configuración de Snapmirror en el destino. Algunas consideraciones son que para hacer Snapmirror el volumen destino tiene que estar en modo restricted. De este modo únicamente permitimos ciertas operaciones en el volumen, como snapmirror o tareas de mantenimiento, pero nunca el acceso a los datos:

Creamos el volumen:

NetApp02> vol create vol_mirror aggr0 200M
Creation of volume 'vol_mirror' with size 200m on containing aggregate
'aggr0' has completed.

Lo restringimos para poder hacer la transferencia inicial:

NetApp02> vol restrict vol_mirror
Volume 'vol_mirror' is now restricted.

Ejecutamos la transferencia inicial de datos:

NetApp02> snapmirror initialize -S 192.168.1.100:vol_backup NetApp02:vol_mirror
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.

Podemos ver el estado mediante snapmirror status o a través del log específico (en caso de haber sido activado como mencionaba antes):

NetApp02> snapmirror status
Snapmirror is on.
Source                    Destination           State          Lag        Status
192.168.1.100:vol_backup  NetApp02:vol_mirror   Snapmirrored   00:00:15   Idle

Configurar periodicidad de sincronización

Una vez realizada la copia inicial, podemos programar las copias incrementales cada X tiempo o que se realicen de forma síncrona. En estas copias únicamente se transferirán los bloques que hayan sido modificados desde la última realizada. Estas configuraciones se especifican en el fichero de configuración /etc/snapmirror.conf con esta estructura:

filer_origen:volumen_origen filer_destino:volumen_destino – opciones min hora dia_mes dia_sem

Para configurar que la copia sea síncrona y que los datos se mantengan actualizados al mismo tiempo en ambos volúmenes únicamente hay que añadir la palabra sync (recordad revisar antes el contenido del fichero):

NetApp02> wrfile /etc/snapmirror.conf
192.168.1.100:vol_backup NetApp02:vol_mirror - sync
CTRL+C

Nota: para la replicación síncrona el volumen tiene que tener un tamaño mínimo, sino recibiréis este error:

Sun Dec 4 08:38:00 GMT [snapmirror.src.sync.FvolSyncTooSmall:error]: The flexible volume Synchronous SnapMirror source vol_backup is 200 MB, which is smaller than the minimum supported size of 10240 MB.

Y si lo que queremos es que la sincronización se realice periódicamente en lugar de a tiempo real usamos el estilo cron que veíamos en la estructura. Vamos a configurarlo todos los días a las 23:00:

NetApp02> wrfile /etc/snapmirror.conf
192.168.1.100:vol_backup NetApp02:vol_mirror - 00 23 * *
CTRL+C

Es recomendable cuando hacemos la configuración de snapmirror y las primeras sincronizaciones tener las consolas de ambas cabinas abiertas para revisar todos los errores que puedan ir apareciendo en una y otra.

Si necesitaramos forzar manualmente la sincronización podemos hacerlo con el comando snapmirror update, con la misma sintaxis que utilizamos con la sincronización inicial:

NetApp02> snapmirror update -S 192.168.1.100:vol_backup NetApp02:vol_mirror
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.

Podéis revisar otros comandos como snapmirror abort para cancelar la sincronización, snapmirror break, snapmirror resync, etc.