El método de la deduplicación de datos tiene como objetivo primordial evitar la redundancia de datos en un sistema de almacenamiento o disco. Para ello utiliza un motor de deduplicación con algoritmos que identifican y eliminan datos o bloques de datos repetidos.
Como software puede integrarse en un programa para realizar backups y como hardware puede implementarse dentro de la matriz (array) de almacenamiento o como appliance intermedia.
El objetivo de la deduplicación es, básicamente, escribir en un soporte de almacenamiento no volátil solo la información estrictamente necesaria para poder reconstruir un archivo sin pérdidas, porque cuantos más duplicados se eliminen, más pequeño será el volumen de datos que ha de ser guardado o transferido. La identificación de duplicados puede realizarse, como en Git o en Dropbox, en los mismos archivos, pero los algoritmos de deduplicación que trabajan en los subarchivos son más eficientes. En este proceso, los archivos se fragmentan en bloques de datos o chunks, a los que se asignan sumas de verificación inequívocas, los denominados valores hash. La base de datos de seguimiento (tracking database), que contiene todas las sumas de verificación, actúa de instancia de control.
Este método de deduplicación basado en bloques se subdivide en dos variantes:
- Deduplicación con longitud de bloques fija: en este tipo de deduplicación el algoritmo subdivide los archivos en porciones de igual longitud, la cual, generalmente, se orienta por el tamaño del clúster del sistema de archivos o de RAID (típicamente 4 KB), aunque en ocasiones se puede configurar manualmente. En este caso, esta longitud ajustada de forma individual se tomará como estándar para todos los bloques de datos.
- Deduplicación con longitud de bloques variable: por el contrario, en este caso no se define ninguna longitud estándar. En lugar de ello, el algoritmo divide a los datos en bloques diferentes, cuya longitud varía en función del tipo de datos que se tengan que procesar.
La forma de dividir los bloques tiene una influencia enorme en la eficiencia de la deduplicación de datos. Esto se entiende con más claridad cuando los archivos deduplicados se han de modificar posteriormente. Si un bloque de datos con límites fijos se quiere ampliar con información adicional, el contenido de los bloques consecutivos se desplaza también, por lo general, en relación con los límites ya fijados. Aunque esta modificación solo afecte a un bloque de datos, el algoritmo de deduplicación clasifica otra vez a todos los segmentos de un archivo que le siguen debido al desplazamiento de los límites del bloque, a no ser que los bytes modificados supongan un múltiplo exacto de la longitud de bloque definida. Como los bloques de datos reclasificados tienen que ser guardados otra vez, un backup en una deduplicación con longitud de bloques fija implica un aumento de los requerimientos de cálculo y de la carga en el ancho de banda.
Si, por el contrario, un algoritmo utiliza límites variables, los cambios en un único bloque de datos no tienen efectos en los segmentos adyacentes, sino que solo se amplía y se almacena el bloque de datos modificado. Este método descarga a la red, ya que supone transmitir menos datos en un backup. En cambio, esta flexibilidad en cuanto a los cambios dentro de los archivos requiere más potencia de cálculo, ya que el algoritmo ha de averiguar primero cómo están distribuidos los chucks.
La identificación de bloques redundantes se apoya en la suposición de que los bloques de datos con idénticos valores hash contienen información idéntica. Para filtrar chunks redundantes, el algoritmo de deduplicacion solo necesita equiparar los valores hash nuevos con la base de datos de seguimiento. Si encuentra sumas de verificación idénticas, los chunks redundantes se sustituyen por un puntero (pointer), que indica el lugar donde está almacenado el bloque idéntico y cuyas necesidades de espacio son mucho menores que las del bloque de datos en sí. Cuantos más chunks dentro de un archivo se sustituyan por estos indicadores, menos memoria necesita este archivo.
Sin embargo, no es posible predecir la eficiencia de la reducción de datos con algoritmos de deduplicación al depender en gran medida del archivo original y de su estructura. A esto se suma la imposibilidad de reconocer patrones en los datos cifrados, ya que los sistemas de cifrado tienen como objetivo reducir las redundancias. Esto hace que este método de reducción de datos solo sea aplicable a datos sin cifrar.
La deduplicación se puede realizar tanto en el destino como en el origen de los datos.