Utilizo un grupo de ZFS que consta de dos discos duplicados. Para realizar copias de seguridad fuera del sitio, compré dos discos más.
Mi plan inicial era crear la copia de seguridad fuera del sitio conectando un tercer disco al espejo, esperando que ZFS se recupere, luego desconecte la unidad y la lleve fuera del sitio. Esto funciona bastante bien, pero me ha sorprendido que parezca realizar una recuperación completa cada vez que se conecta un disco (leí, y posiblemente entendí mal, que cada conexión daría como resultado una recuperación incremental o delta). Esto hace que las copias de seguridad demoren más de lo aceptable.
Mis requisitos son tener una copia externa de mi zpool y todas sus instantáneas que pueda rotar diariamente. Esto significa que la recuperación debe durar como máximo 24 horas, actualmente está cerca de eso, pero nuestros planes de hacer crecer nuestro grupo lo llevarán más allá de ese plazo.
¿Cómo puedo mantener copias de seguridad fuera del sitio que no requieren una operación de recuperación completa? ¿Debo usar un sistema de archivos diferente en mis unidades de copia de seguridad (por ejemplo, exportar una imagen en lugar de hacer que formen parte del grupo ZFS)? ¿Debo tener las copias de seguridad en un grupo separado y enviarle nuevas instantáneas a medida que se crean?
Respuestas:
Después de mucho retoques y experimentación, he encontrado una solución, aunque con una compensación bastante grande.
En primer lugar, las opciones que tuve que descartar:
Tener un segundo servidor ZFS externo con un grupo reflejado no era una opción debido al costo. Si hubiera sido una opción, este hubiera sido el mejor enfoque, utilizando ZFS enviar / recibir para enviar instantáneas al grupo remoto.
Tener un segundo grupo reflejado de ZFS en el sitio, del cual podría eliminar discos para llevar a casa. Esto es más factible que la primera opción, pero necesitaría que el segundo grupo siempre tenga dos discos en el sitio (o usar dos copias de datos en un solo disco en el sitio). Actualmente tengo cuatro discos y no hay más espacio para un quinto en el servidor. Este sería un enfoque justo pero aún no ideal.
Usando ZFS adjuntar y desconectar para girar el disco de copia de seguridad dentro y fuera del grupo reflejado. Esto funciona bien, pero tiene que realizar una recuperación completa cada vez que se agrega el disco. Esto lleva inaceptablemente largo, por lo que no podía confiar en esto.
Mi solución es similar a usar
attach
ydetach
, sin embargo, usaonline
yoffline
. Esto tiene la ventaja de realizar una recuperación delta frente a una recuperación completa, pero el inconveniente de que la agrupación siempre informa unDEGRADED
estado (la agrupación siempre tiene dos discos; los discos rotativos externos se marcanoffline
cuando están en almacenamiento remoto y recuperación y luego se conectan cuando están en el sitio).Entonces, un resumen rápido y una descripción general de mi configuración:
Tengo un servidor ZFS y cuatro discos idénticos. ZFS está configurado para usar un grupo reflejado. Dos de los cuatro discos son miembros permanentes de este grupo. Los otros dos discos giran; uno está siempre en almacenamiento externo, el otro es parte del grupo para actuar como una copia de seguridad lista para usar.
Cuando llegue el momento de rotar las copias de seguridad:
Espero
zfs scrub
a que se complete para asegurar razonablemente que el disco de copia de seguridad esté libre de erroresYo
zfs offline
el disco que se llevará a distancia. Después de que está fuera de línea, lo hicehdparm -Y /dev/id
girar. Después de un minuto, remuevo parcialmente el trineo del disco (lo suficiente como para asegurar que pierda energía) y luego le doy otro minuto antes de tirar completamente de la unidad para garantizar que ha dejado de girar. El disco va en una bolsa estática y luego en un estuche protector y sale del sitio.Traigo el otro disco externo. Se instala en la bandeja de hotswap y gira. Utilizo
zfs online
para restaurar el disco en el grupo y poner en marcha una recuperación parcial para que sea concurrente.Este sistema garantiza que en cualquier momento tenga dos
ONLINE
discos espejo y unOFFLINE
disco remoto (que ha sido borrado). El cuarto disco se está recuperando o está en línea, lo que tiene la ventaja de que, en caso de que falle una unidad en funcionamiento, es probable que el grupo siga siendo consistente con dos discos en línea.Ha funcionado bien durante las últimas dos semanas, pero todavía lo consideraría un enfoque hack. Haré un seguimiento si me encuentro con algún problema importante.
Actualización: después de ejecutar esto durante un par de meses, descubrí que en mi uso en el mundo real, la recuperación está tomando el mismo tiempo para desconectar / adjuntar y desconectar / en línea. En mis pruebas, no creo que estuviese ejecutando un exfoliante; mi presentimiento es que si una unidad está fuera de línea para un exfoliante, entonces requiere un resiliente completo.
fuente
¿Por qué no zfs envía sus instantáneas a una máquina remota ZFS? Utilizo un script bash simple para esto:
fuente
Creé una herramienta llamada snapdump que le permite crear volcados incrementales de sus conjuntos de datos zfs en un sistema de archivos extraño (no zfs). Snapdump también admite la restauración de una cadena de instantánea incremental con un solo comando.
fuente