2 votos

¿Hay alguna forma de replicar comparticiones de archivos muy grandes en tiempo real?

Tengo una tarea cron por hora que copia alrededor de 40 GB de datos de una carpeta de origen a una nueva carpeta con la hora agregada al final.

Cuando se completa, la tarea poda todo lo que tenga más de 24 horas de antigüedad. Estos datos cambian muy a menudo durante la jornada laboral y están en una compartición de archivos samba. Así es como se ve la estructura de carpetas:

\server\Versión.1
\server\Versión.2
\server\Versión.3
...
\server\Versión.24

El contenido de cada nueva carpeta en comparación con la anterior generalmente no cambia mucho, ya que esta es una tarea por hora.

Ahora podrías estar pensando que soy un idiota por haber soñado con esto. La verdad es que me acabo de enterar. En realidad, se ha utilizado durante años y es increíblemente simple, cualquiera podría borrar el COMPARTIR completo de 40 GB (imagina ese diálogo de borrado en ejecución... eliminando miles y miles de archivos) y realmente sería más rápido restaurarlo moviendo la copia más reciente de vuelta a la fuente de lo que tardó en eliminarlo.

¡Genial!

Ahora, para rematar esto, necesito replicar eficientemente estos 960 GB de datos "en su mayoría similares" a un servidor remoto a través de un enlace WAN, con la replicación ocurriendo lo más cerca posible del tiempo real. Piensa en un repuesto en caliente, recuperación ante desastres, etc.

Mi primera idea fue rsync.

Un fracaso total.

Rsync ve la eliminación de la carpeta que tiene 24 horas de antigüedad y la adición de una nueva carpeta con 30 GB de datos para sincronizar. También miré rdiff-backup y unison, ambos parecen usar algoritmos similares y no mantienen suficiente metadatos para hacerlo de manera inteligente.

Lo mejor que puedo encontrar "tal cual" para hacer esto es "Replicación de Sistema de Archivos Distribuido" de Windows Server que utiliza "Compresión Diferencial Remota" - Después de leer la información de fondo sobre cómo funciona esto, en realidad parece ser exactamente lo que necesito.

Problema: Ambos servidores están corriendo Linux. ¡Ay! Una aproximación que estoy considerando es la siguiente, digamos que son las 5 AM y la tarea cron finaliza:

  1. Llega la nueva carpeta Versión.5 al servidor local
  2. SSH al servidor remoto y copiar Versión.4 a Versión.5
  3. Ejecutar rsync en el servidor local enviando los cambios al servidor remoto. Rsync finalmente sabe hacer una copia diferencial entre Versión.4 y Versión.5

¿Hay una forma más inteligente de replicar comparticiones de Samba lo más cerca posible del tiempo real?

¿Hay algo que haga "Compresión Diferencial Remota" en Linux?

2voto

Antoine Benkemoun Puntos 5900

Deberías considerar seriamente DRBD. DRBD es un software RAID1 sobre TCP-IP. Replicará un dispositivo de bloques sobre cualquier enlace en tiempo real. Cada vez que modifiques un bloque de disco duro, lo replicará.

Es agnóstico al sistema de archivos, por lo tanto puedes poner cualquier sistema de archivos que desees encima. Además, funcionará mano a mano con heartbeat, lo que te permitirá iniciar el repuesto en caliente tan pronto como el nodo original muera.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X