Tengo un sistema local FreeNAS y quiero usar instantáneas ZFS para las copias de seguridad.
FreeNAS tiene las tareas de replicación integradas que utilizan
zfs send snapshot_name
para enviar una instantánea a un sistema remoto. Pero esto necesita un sistema con ZFS en el otro extremo.
Quiero enviar la instantánea a un archivo y enviar este archivo comprimido y cifrado a la máquina remota.
Esto es posible con
zfs send snapshot_name | gzip | openssl enc -aes-256-cbc -a -salt > file.gz.ssl
Todos los días hago una instantánea del grupo de almacenamiento y guardo cada instantánea durante 30 días.
Con cada instantánea tomada, canalizaré esta instantánea a un archivo.
- snapshot_file 1 tiene todos los archivos (digamos 2GB)
- snapshot_file 2 solo tiene los cambios en snapshot_file 1 (digamos 5MB)
- snapshot_file 3 contiene los cambios en snapshot_file 2; y así.
El día 31, el archivo snapshot_file 1 se elimina (porque solo quiero los cambios de los últimos 30 días)
Por lo tanto, snapshot_file 2 debe contener todos los archivos (2GB de snapshot_file 1 + 5MB cambios)
Pero con este enfoque todos los días (desde el día 31 en adelante) se debe crear un nuevo archivo de 2GB y enviarlo a un sistema remoto. Esto es demasiado sobrecarga.
¿Cuál sería el mejor enfoque para usar instantáneas canalizadas a un archivo como estrategia de respaldo con un historial de X días?
PD: Sé que hay una gran cantidad de software de respaldo (rdiff-backup por ejemplo), que podría usar. Pero tengo curiosidad de cómo se podría hacer esto.
zfs recv
en el otro extremo (en un grupo con,zfs set compression=gzip-9
por ejemplo)? Almacenar archivos de instantáneas me parece muy ineficiente.Respuestas:
Si almacena las instantáneas en archivos, a diferencia del sistema de archivos (por ejemplo, con
zfs receive
), me temo que esto no es posible.ZFS en el lado receptor
Si usa ZFS en el lado de envío y de recepción, puede evitar tener que transferir toda la instantánea y solo transferir las diferencias de la instantánea en comparación con la anterior:
ZFS conoce las instantáneas y almacena bloques mutuos solo una vez. Hacer que el sistema de archivos comprenda las instantáneas le permite eliminar las antiguas sin problemas.
Otro sistema de archivos en el lado receptor
En su caso, usted almacena las instantáneas en archivos individuales, y su sistema de archivos desconoce las instantáneas. Como ya notó, esto rompe la rotación. Debe transmitir instantáneas completas, lo que desperdiciará ancho de banda y espacio de almacenamiento, pero le permitirá eliminar instantáneas individuales. No dependen el uno del otro. Puede hacer instantáneas incrementales como esta:
Para restaurar una instantánea incremental, también necesita las instantáneas anteriores. Esto significa que no puede eliminar los antiguos incrementales.
Soluciones posibles
Puede hacer incrementales como se muestra en mi último ejemplo y hacer una nueva no incremental cada mes. Los nuevos incrementales dependen de este no incremental y puede eliminar las instantáneas antiguas.
O podría buscar otras soluciones de respaldo. Hay rsnapshot , que utiliza
rsync
y enlaces duros. Hace un muy buen trabajo en la rotación y es muy eficiente en ancho de banda, ya que requiere una copia de seguridad completa solo una vez.Luego hay bareos . Hace incrementales, que ahorran ancho de banda y espacio. Tiene una característica muy bonita; Puede calcular una copia de seguridad completa de un conjunto de incrementales. Esto le permite eliminar los incrementales antiguos. Pero es un sistema bastante complejo y destinado a configuraciones más grandes.
La mejor solución, sin embargo, es usar ZFS en el lado receptor. Será eficiente en ancho de banda, almacenamiento eficiente y mucho más rápido que las otras soluciones. El único inconveniente que se me ocurre es que debe tener un mínimo de 8 ECG de memoria de GiB en ese cuadro (puede estar bien con 4 GiB si no ejecuta ningún servicio y solo lo usa
zfs receive
).fuente
rsnapshot
entonces. O podría comenzar un nuevo no incremental después de un mes y luego eliminar los incrementales anteriores.