Pasos para lograr el mejor ratio de eficiencia en la deduplicación de datos
(Guía paso a paso para implementar la deduplicación de datos en tu organización: 2ª parte)
Este post constituye la segunda parte de una Guía para implementar la deduplicación de datos en tu organización.
Si no has tenido la oportunidad, te recomiendo echar un vistazo al artículo Claves para escoger el enfoque de deduplicación en el backup según el sistema a respaldar en el cual te intento orientar acerca de aquellos parámetros que, desde mi punto de vista, debes tener en cuenta a la hora de adoptar el mejor enfoque previo a su implantación.
Ahora bien, con independencia de la herramienta o solución escogida, hay una serie de pasos que resultan fundamentales y, prácticamente, universales.
En este artículo, voy a compartir contigo estos 4 pasos:
- Identificación de la unidad de comparación.
- Creación de un identificador único para las unidades a comparar.
- Comparación para la identificación de los duplicados.
- Conservación de los bloques de datos originales comprimidos.
Por supuesto, todos estos pasos tienen como objetivo:
- Lograr el máximo ratio de deduplicación posible.
- Maximizar el rendimiento de la deduplicación de datos en cuanto a megabytes de datos deduplicados por segundo.
- Minimizar la utilización de recursos del sistema.
Identificación de la unidad de comparación
Cualquier proceso de deduplicación requiere determinar previamente la unidad de datos que va a ser utilizada para identificar aquella información que está duplicada.
Deduplicación a nivel de fichero
En el primer caso, son los ficheros los que son comparados entre sí, con el objetivo de encontrar duplicados. Aunque se trata de una opción muy rápida, tiene el inconveniente de que la duplicidad dentro de los propios ficheros pasa inadvertida, por lo que dos ficheros que apenas difieren en un 1% seguirán existiendo como entes separados después del proceso de deduplicación.
Deduplicación a nivel de bloques
En el caso de la deduplicación por bloques, se distingue entre la metodología con bloques fijos o variables. En el primer caso, el flujo de datos es agrupado en paquetes o bloques (chunks en terminología de deduplicación) de un tamaño fijo predefinido: 1Kb, 8Kb, 16Kb, etc. Se consigue un rendimiento considerablemente bueno, al no existir procesos comparativos sobre cada flujo de entrada de datos. A medida que se reciben los datos, se construyen bloques del tamaño establecido sin realizar cálculos intermedios. Después, se compara cada bloque construido con el contenido de las tablas de deduplicación para saber si se deben escribir los datos de nuevo o si se puede añadir un simple puntero.
No obstante, la deduplicación a nivel de bloques fijos no logra detectar duplicados cuando se producen cambios menores que pueden afectar solamente a una parte de un paquete de datos dado. De forma similar a lo que ocurre con la deduplicación a nivel de archivos, cambios menores a la unidad de deduplicación (en este caso el chunk o paquete predefinido), provocan que el contenido completo no se deduplique.
Se podría pensar que la solución a esto es definir el menor tamaño posible para la unidad de deduplicación. De esta forma la deduplicación se maximizaría. Sin embargo, esto supone un gran inconveniente, y es que se generarían unas tablas de deduplicación muy grandes, para datos que podrían ser agrupados en bloques mayores en muchos casos, penalizando el rendimiento del sistema de deduplicación de forma muy importante.
En el caso de la deduplicación con bloques variables, el flujo de datos es dividido según el patrón que sigan los datos comparados.
Por supuesto, se establecen ciertos límites máximos para la creación de un bloque pero se trata de un método más flexible, el cual permite identificar duplicación de datos sin que por ello todo el flujo se vea afectado; es decir, el resto de la información sí se considerará contenido duplicado.
Se trata del método más eficaz en cuanto a identificación de duplicados, pero también el que más recursos exige debido a la aplicación de un algoritmo para la fragmentación de los datos.
En la mayoría de sistemas, la clave para maximizar el rendimiento reside en el alineamiento de los datos entre todos los actores: sistema escritor, motor de deduplicación y sectores de disco. Si el sistema o proceso escritor de datos (normalmente será un sistema de ficheros) es capaz de generar la mayoría de los datos en bloques de un tamaño conocido por el motor de deduplicación, el proceso de deduplicación resultará mucho más sencillo, dejando los cálculos más complejos solamente para las tramas finales de cada flujo de entrada de datos. De la misma manera, un buen alineamiento de tamaños de bloques entre el motor de deduplicación y los discos implicados resultará en escrituras y lecturas con mayor rendimiento, pues no será necesario un proceso previo para pasar de un nivel a otro.
Si quieres más información al respecto, te recomiendo la lectura del post ¿Por qué elegir un modelo de deduplicación de datos a nivel de bloque?
Creación de identificadores únicos para la comparación de unidades
Cuando se utiliza un fichero como unidad de comparación, el emparejamiento se realiza mediante una comparación a nivel binario o técnicas de hash.
Sin embargo, los chunks de datos existentes en discos requieren necesariamente de un proceso de indexación.
Dado que el tamaño de los chunks está en kilobytes, la comparación de cada chunk con los chunk en disco resulta totalmente inoperativa.
¿La solución?
Es por ello que se requiere de la creación de un identificador único para cada uno de los chunk a comparar.
Esto se realiza mediante la técnica de hash, la cual crea representaciones a escala de una gran cantidad de datos. Existen un buen número de algoritmos hash –también conocidos como algoritmos de autenticación-, tales como los SHA (Secure Hash Algorithm), MD (Message Digest Algorithm), etc.
Comparación para la identificación duplicados
Obviamente, la comparación de los datos constituye el momento crítico de todo proceso de deduplicación.
Conforme los datos a procesar se incrementan, también lo hace la tabla de indexación o tabla de deduplicación, por lo que los sucesivos procesos de búsqueda y comparación se vuelven cada vez más lentos. Esto puede volverse un problema en el caso de organizaciones con enormes fuentes de datos.
La solución a esta dificultad reside en el uso de sistemas que ofrecen altas prestaciones en cuanto a I/Os. Por supuesto, la mejor opción es la carga de las tablas de deduplicación en memoria, esta es la opción más rápida. Cuando esto no es posible por el tamaño de dichas tablas, los discos de estado sólido son una gran alternativa. Podemos utilizar estos discos como unidad principal de almacenamiento, o como una memoria caché de nivel 2 en la cual se apoye la memoria RAM, y maximizar así el rendimiento global del motor de deduplicación.
Conservación de los bloques de datos originales comprimidos
Con el fin de optimizar la deduplicación, la utilización de procesos de compresión contribuirá a reducir aún más el tamaño de la información antes de proceder a su almacenamiento definitivo en disco.
En este sentido, resulta conveniente tener en cuenta que:
- Algunas alternativas ofrecen un mejor rendimiento cuando son utilizadas sobre un volumen elevado de datos, mientras que otras responden mejor con escalas menores.
- Determinadas alternativas de compresión tienen unos umbrales predeterminados pero se ejecutan con mayor rapidez.
De entre los múltiples algoritmos de compresión que existen en el mercado, podemos recomendar LZ4 como algoritmo óptimo, a día de hoy, en cuanto a su uso con deduplicación. Sus cortos tiempos de procesado y sus ratios de ahorro asociados pueden ofrecer una combinación óptima en cuanto a reducción de espacio utilizado y rendimiento.
Conclusiones finales y mi recomendación
La deduplicación de datos garantiza que cualquier cambio que afecte a la información almacenada en tu compañía sea conservado de la forma más eficiente en todos los niveles de almacenamiento y backup de datos.
No obstante, la deduplicación sólo resultará beneficiosa si la reducción de costes de almacenamiento y backup justifica la inversión en la herramienta escogida y los recursos del sistema utilizados durante el proceso.
Mi recomendación es que examines nuestra herramienta WBSAirback.
WBSAirback® ofrece deduplicación in-line, de bloque variable. Todas las tecnologías implicadas están optimizadas y preparadas para alinear sus bloques y conseguir el máximo ahorro y rendimiento posible. Soporta deduplicación en origen, es capaz de comprimir simultáneamente usando LZ4 y, además, es capaz de deduplicar datos sobre diversos dispositivos heterogéneos. Todo ello basado en estándares y open source, que permiten un gran ahorro de TCO (Total Cost Ownership) y la eliminación de barrreras de entrada a la hora de desplegar una solución de almacenamiento y backup Enterprise en tu organización.