Articulo de referencia

Eliminación de datos duplicados

Ejemplo de deduplicación de bloques de datos En informática , la deduplicación de datos es una técnica para eliminar copias duplicadas de datos repetidos. Su implementación exit...

Ejemplo de deduplicación de bloques de datos
Ejemplo de deduplicación de bloques de datos

En informática , la deduplicación de datos es una técnica para eliminar copias duplicadas de datos repetidos. Su implementación exitosa puede mejorar la utilización del almacenamiento, lo que a su vez puede reducir la inversión inicial al disminuir la cantidad total de soportes de almacenamiento necesarios para satisfacer las necesidades de capacidad. También se puede aplicar a las transferencias de datos en red para reducir la cantidad de bytes que deben enviarse.

El proceso de deduplicación requiere la comparación de fragmentos de datos (también conocidos como patrones de bytes), que son bloques de datos únicos y contiguos. Estos fragmentos se identifican y almacenan durante un proceso de análisis, y se comparan con otros fragmentos dentro de los datos existentes. Cuando se encuentra una coincidencia, el fragmento redundante se reemplaza con una pequeña referencia que apunta al fragmento almacenado. Dado que el mismo patrón de bytes puede aparecer docenas, cientos o incluso miles de veces (la frecuencia de coincidencia depende del tamaño del fragmento), la cantidad de datos que deben almacenarse o transferirse puede reducirse considerablemente. [ 1 ] [ 2 ]

Una técnica relacionada es el almacenamiento de instancia única (de datos) , que reemplaza las múltiples copias de contenido a nivel de archivo completo con una única copia compartida. Si bien es posible combinarla con otras formas de compresión y deduplicación de datos, se distingue de los enfoques más recientes para la deduplicación de datos (que pueden operar a nivel de segmento o subbloque).

La deduplicación es diferente de los algoritmos de compresión de datos, como LZ77 y LZ78 . Mientras que los algoritmos de compresión identifican datos redundantes dentro de archivos individuales y los codifican de manera más eficiente, el objetivo de la deduplicación es inspeccionar grandes volúmenes de datos e identificar secciones extensas, como archivos completos o grandes secciones de archivos, que sean idénticas, y reemplazarlas con una copia compartida.

Principio de funcionamiento

Por ejemplo, un sistema de correo electrónico típico podría contener 100 copias del mismo archivo adjunto de 1 MB ( megabyte ). Cada vez que se realiza una copia de seguridad de la plataforma de correo electrónico , se guardan las 100 copias del archivo adjunto, lo que requiere 100 MB de espacio de almacenamiento. Con la deduplicación de datos, solo se almacena una copia del archivo adjunto; las copias subsiguientes se referencian a la copia guardada para lograr una relación de deduplicación de aproximadamente 100 a 1. La deduplicación suele combinarse con la compresión de datos para ahorrar aún más espacio de almacenamiento: primero se utiliza la deduplicación para eliminar grandes bloques de datos repetitivos, y luego se utiliza la compresión para codificar de forma eficiente cada uno de los bloques almacenados. [ 3 ]

En el código informático , la deduplicación se realiza, por ejemplo, almacenando la información en variables para que no sea necesario escribirlas individualmente, sino que se puedan modificar todas a la vez en una ubicación central de referencia . Ejemplos de ello son las clases CSS y las referencias con nombre en MediaWiki .

Beneficios

La deduplicación de datos basada en almacenamiento reduce la cantidad de almacenamiento necesaria para un conjunto de archivos determinado. Es más eficaz en aplicaciones donde se almacenan muchas copias de datos muy similares o incluso idénticos en un solo disco. En el caso de las copias de seguridad de datos, que se realizan de forma rutinaria para protegerse contra la pérdida de datos, la mayoría de los datos en una copia de seguridad determinada permanecen sin cambios con respecto a la copia de seguridad anterior. Los sistemas de copia de seguridad comunes intentan aprovechar esto omitiendo (o creando enlaces duros ) a los archivos que no han cambiado o almacenando las diferencias entre archivos. Sin embargo, ninguno de los dos enfoques captura todas las redundancias. Los enlaces duros no ayudan con archivos grandes que solo han cambiado de forma mínima, como una base de datos de correo electrónico; las diferencias solo encuentran redundancias en versiones adyacentes de un mismo archivo (por ejemplo, una sección que se eliminó y luego se volvió a agregar, o una imagen de logotipo incluida en muchos documentos).

La deduplicación de datos de red en línea se utiliza para reducir la cantidad de bytes que deben transferirse entre los puntos finales, lo que puede disminuir el ancho de banda necesario. Consulte la sección de optimización de WAN para obtener más información.

Los servidores y escritorios virtuales se benefician de la deduplicación, ya que permite consolidar archivos de sistema, normalmente separados para cada máquina virtual, en un único espacio de almacenamiento. Además, si una máquina virtual personaliza un archivo, la deduplicación no modificará los archivos de las demás máquinas virtuales, algo que no ofrecen alternativas como los enlaces duros o los discos compartidos. De igual forma, se mejora la realización de copias de seguridad o la creación de duplicados de entornos virtuales.

Clasificación

Deduplicación posterior al procesamiento frente a deduplicación en línea

La eliminación de duplicados puede producirse "en línea", a medida que fluyen los datos, o "en posprocesamiento", después de que se hayan escrito.

Con la deduplicación posterior al procesamiento, los datos nuevos se almacenan primero en el dispositivo de almacenamiento y, posteriormente, un proceso los analiza en busca de duplicados. La ventaja es que no es necesario esperar a que finalicen los cálculos de hash y la búsqueda antes de almacenar los datos, lo que garantiza que el rendimiento del almacenamiento no se vea afectado. Las implementaciones que ofrecen un funcionamiento basado en políticas permiten a los usuarios aplazar la optimización de los archivos "activos" o procesarlos según su tipo y ubicación. Un posible inconveniente es que los datos duplicados pueden almacenarse innecesariamente durante un breve periodo, lo que puede resultar problemático si el sistema está cerca de alcanzar su capacidad máxima.

Como alternativa, los cálculos de hash de deduplicación pueden realizarse en línea: sincronizados a medida que los datos ingresan al dispositivo de destino. Si el sistema de almacenamiento identifica un bloque que ya ha almacenado, solo se almacena una referencia al bloque existente, en lugar del bloque nuevo completo.

La ventaja de la deduplicación en línea sobre la deduplicación posterior al procesamiento radica en que requiere menos almacenamiento y tráfico de red, ya que los datos duplicados nunca se almacenan ni se transfieren. Como desventaja, los cálculos de hash pueden ser computacionalmente costosos, lo que reduce el rendimiento del almacenamiento. Sin embargo, algunos proveedores de deduplicación en línea han demostrado que sus equipos realizan esta deduplicación a altas velocidades.

Los métodos de deduplicación en postprocesamiento y en línea suelen ser objeto de intensos debates. [ 4 ] [ 5 ]

Formatos de datos

El Diccionario SNIA identifica dos métodos: [ 2 ]

  • Desduplicación de datos independiente del contenido : un método de desduplicación de datos que no requiere conocer formatos de datos específicos de la aplicación. 
  • Deduplicación de datos con reconocimiento de contenido : un método de deduplicación de datos que aprovecha el conocimiento de formatos de datos específicos de la aplicación. 

Deduplicación de origen frente a desduplicación de destino

Otra forma de clasificar los métodos de deduplicación de datos es según su ubicación. La deduplicación que ocurre cerca del lugar donde se crean los datos se denomina "deduplicación de origen". Cuando ocurre cerca del lugar donde se almacenan los datos, se denomina "deduplicación de destino".

La deduplicación de origen garantiza que los datos en la fuente de datos estén deduplicados. Esto generalmente se lleva a cabo directamente dentro de un sistema de archivos. El sistema de archivos escanea periódicamente los archivos nuevos, crea hashes y los compara con los hashes de los archivos existentes. Cuando se encuentran archivos con los mismos hashes, se elimina la copia del archivo y el nuevo archivo apunta al archivo antiguo. Sin embargo, a diferencia de los enlaces duros , los archivos duplicados se consideran entidades separadas y, si uno de los archivos duplicados se modifica posteriormente, mediante un sistema llamado copia en escritura , se crea una copia de ese archivo o bloque modificado. El proceso de deduplicación es transparente para los usuarios y las aplicaciones de copia de seguridad. Al realizar copias de seguridad de un sistema de archivos deduplicado, a menudo se producen duplicaciones, lo que resulta en copias de seguridad más grandes que los datos de origen. [ 6 ] [ 7 ]

La deduplicación de origen se puede declarar explícitamente para operaciones de copia, ya que no se necesita ningún cálculo para saber que los datos copiados necesitan deduplicación. Esto da lugar a una nueva forma de enlace en los sistemas de archivos, denominada enlace con conteo de referencias o reflink en algunos sistemas (por ejemplo, Linux), [ 8 ] o un archivo clonado en macOS, donde uno o más inodos (entradas de información de archivo) comparten parte o la totalidad de sus datos. Su nombre es análogo al de los enlaces duros , que funcionan a nivel de inodo, y los enlaces simbólicos , que funcionan a nivel de nombre de archivo. Las entradas individuales tienen un comportamiento de copia en escritura que no es de alias, es decir, cambiar una copia posteriormente no afectará a las demás copias. [ 9 ] ReFS de Microsoft también admite esta operación. [ 10 ]

La deduplicación de destino es el proceso de eliminar duplicados cuando los datos no se generaron en esa ubicación. Un ejemplo sería un servidor conectado a una SAN/NAS. La SAN/NAS sería el destino del servidor (deduplicación de destino). El servidor no tiene conocimiento de ninguna deduplicación, ya que también es el punto de generación de datos. Un segundo ejemplo sería la copia de seguridad. Generalmente, se trata de un almacenamiento de copias de seguridad, como un repositorio de datos o una biblioteca de cintas virtuales .

Métodos de deduplicación

Una de las formas más comunes de implementación de deduplicación de datos funciona comparando fragmentos de datos para detectar duplicados. Para ello, a cada fragmento de datos se le asigna una identificación, calculada por el software, generalmente mediante funciones hash criptográficas. En muchas implementaciones, se asume que si la identificación es idéntica, los datos son idénticos, aunque esto no siempre es cierto debido al principio del palomar ; otras implementaciones no asumen que dos bloques de datos con el mismo identificador sean idénticos, sino que verifican que los datos con la misma identificación sean idénticos. [ 11 ] Si el software asume que una identificación determinada ya existe en el espacio de nombres de deduplicación o verifica la identidad de los dos bloques de datos, según la implementación, entonces reemplazará ese fragmento duplicado con un enlace.

Una vez eliminados los datos duplicados, al leer el archivo, el sistema simplemente reemplaza cualquier enlace con el fragmento de datos referenciado. El proceso de eliminación de duplicados está diseñado para ser transparente para los usuarios finales y las aplicaciones.

Las implementaciones comerciales de deduplicación difieren en sus métodos de segmentación y arquitecturas.

  • Fragmentación: En algunos sistemas, los fragmentos se definen mediante restricciones de la capa física (por ejemplo,  un tamaño de bloque de 4 KB en WAFL ). En otros, solo se comparan archivos completos, lo que se conoce como almacenamiento de instancia única o SIS. El método más inteligente (aunque intensivo en CPU) para la fragmentación se considera generalmente el de bloques deslizantes, también llamado fragmentación definida por contenido . En el método de bloques deslizantes, se recorre una ventana a lo largo del flujo de archivos para buscar límites internos de archivos que se produzcan de forma más natural.
  • Deduplicación de copias de seguridad del cliente: Este proceso consiste en la creación inicial de los cálculos de hash de deduplicación en las máquinas de origen (cliente). Los archivos con hashes idénticos a los que ya se encuentran en el dispositivo de destino no se envían; este último simplemente crea los enlaces internos correspondientes para referenciar los datos duplicados. La ventaja de este método es que evita el envío innecesario de datos a través de la red, reduciendo así la carga de tráfico.
  • Almacenamiento primario y secundario: Por definición, los sistemas de almacenamiento primario están diseñados para un rendimiento óptimo, en lugar de para el menor coste posible. El criterio de diseño para estos sistemas es aumentar el rendimiento, a expensas de otras consideraciones. Además, los sistemas de almacenamiento primario son mucho menos tolerantes a cualquier operación que pueda afectar negativamente al rendimiento. Asimismo, por definición, los sistemas de almacenamiento secundario contienen principalmente duplicados o copias secundarias de datos. Estas copias de datos normalmente no se utilizan para las operaciones de producción reales y, por lo tanto, toleran mejor cierta degradación del rendimiento, a cambio de una mayor eficiencia.

Hasta la fecha, la deduplicación de datos se ha utilizado principalmente en sistemas de almacenamiento secundario. Esto se debe a dos razones: en primer lugar, la deduplicación de datos requiere un procesamiento adicional para detectar y eliminar los datos duplicados. En los sistemas de almacenamiento primario, este procesamiento adicional puede afectar el rendimiento. En segundo lugar, la deduplicación se aplica a los datos secundarios porque estos tienden a contener más datos duplicados. Las aplicaciones de copia de seguridad, en particular, suelen generar cantidades significativas de datos duplicados con el tiempo.

La deduplicación de datos se ha implementado con éxito en el almacenamiento primario en algunos casos donde el diseño del sistema no requiere una sobrecarga significativa ni afecta al rendimiento.

Almacenamiento de instancia única

El almacenamiento de instancia única (SIS) es la capacidad de un sistema para tomar múltiples copias de objetos de contenido y reemplazarlas por una única copia compartida. Es un medio para eliminar la duplicación de datos y aumentar la eficiencia. El SIS se implementa frecuentemente en sistemas de archivos , software de servidor de correo electrónico , copias de seguridad de datos y otros programas informáticos relacionados con el almacenamiento. El almacenamiento de instancia única es una variante simple de la deduplicación de datos. Mientras que la deduplicación de datos puede funcionar a nivel de segmento o subbloque, el almacenamiento de instancia única funciona a nivel de objeto, eliminando copias redundantes de objetos como archivos completos o mensajes de correo electrónico. [ 12 ]

El almacenamiento de instancia única se puede utilizar junto con (o superpuesto a) otros métodos de duplicación o compresión de datos para mejorar el rendimiento a cambio de un aumento de la complejidad y (en algunos casos) un ligero aumento en los requisitos de espacio de almacenamiento.

Inconvenientes y preocupaciones

Un método para eliminar duplicados de datos se basa en el uso de funciones hash criptográficas para identificar segmentos de datos duplicados. Si dos datos diferentes generan el mismo valor hash, se produce una colisión . La probabilidad de una colisión depende principalmente de la longitud del hash (véase el ataque de cumpleaños ). Por lo tanto, surge la preocupación de que se produzca corrupción de datos si ocurre una colisión de hash y no se utilizan medios de verificación adicionales para comprobar si existe o no una diferencia en los datos. Tanto las arquitecturas en línea como las de posprocesamiento pueden ofrecer una validación bit a bit de los datos originales para garantizar la integridad de los datos. Las funciones hash utilizadas incluyen estándares como SHA-1 , SHA-256 y otros.

La intensidad de los recursos computacionales del proceso puede ser una desventaja de la deduplicación de datos. Para mejorar el rendimiento, algunos sistemas utilizan tanto hashes débiles como fuertes. Los hashes débiles se calculan mucho más rápido, pero existe un mayor riesgo de colisión de hash. Los sistemas que utilizan hashes débiles calculan posteriormente un hash fuerte y lo utilizan como factor determinante para saber si se trata realmente de los mismos datos o no. Cabe destacar que la sobrecarga del sistema asociada al cálculo y la búsqueda de valores hash depende principalmente del flujo de trabajo de deduplicación. La reconstrucción de archivos no requiere este procesamiento, y es improbable que cualquier penalización de rendimiento incremental asociada al reensamblaje de fragmentos de datos afecte al rendimiento de la aplicación.

Otra preocupación reside en la interacción entre la compresión y el cifrado. El objetivo del cifrado es eliminar cualquier patrón discernible en los datos. Por lo tanto, los datos cifrados no pueden desduplicarse, aunque los datos subyacentes sean redundantes.

Si bien no se trata de una deficiencia de la deduplicación de datos, se han producido filtraciones de datos cuando se utilizan procedimientos insuficientes de seguridad y validación de acceso en grandes repositorios de datos deduplicados. En algunos sistemas, como suele ocurrir con el almacenamiento en la nube, un atacante puede recuperar datos que pertenecen a otros conociendo o adivinando el valor hash de los datos deseados. [ 13 ]

Implementaciones

La deduplicación se implementa en algunos sistemas de archivos, como ZFS o Write Anywhere File Layout , y en diferentes modelos de matrices de discos . Es un servicio disponible tanto en NTFS como en ReFS en servidores Windows.

Véase también

Referencias

  1. "Entendiendo la deduplicación de datos" . Druva . ​​9 de enero de 2009. Archivado del original el 6 de agosto de 2019. Consultado el 6 de agosto de 2019 .
  2. 1 2 "Diccionario SNIA » Diccionario D" . Archivado del original el 24-12-2018 . Recuperado el 06-12-2023 . 
  3. Compresión, deduplicación y cifrado: ¿Cuál es la diferencia? Archivado el 23/12/2018 en Wayback Machine , Stephen Bigelow y Paul Crocetti
  4. "¿Desduplicación en línea o posterior al procesamiento? (actualizado el 6-08)" . Backup Central. Archivado del original el 6 de diciembre de 2009. Consultado el 6 de diciembre de 2023 .
  5. "Dispositivos de deduplicación en línea frente a dispositivos de posprocesamiento" . techtarget.com. Archivado del original el 9 de junio de 2009. Consultado el 6 de diciembre de 2023 .
  6. "Windows Server 2008: Windows Storage Server 2008" . Microsoft.com. Archivado del original el 4 de octubre de 2009. Consultado el 16 de octubre de 2009 .
  7. "Productos - Plataforma OS" . NetApp. Archivado del original el 6 de febrero de 2010. Consultado el 16 de octubre de 2009 .
  8. "La llamada al sistema reflink(2) v5" . lwn.net . Archivado del original el 2 de octubre de 2015. Consultado el 4 de octubre de 2019 .
  9. "ioctl_ficlonerange(2)" . Página del manual de Linux . Archivado del original el 7 de octubre de 2019. Consultado el 4 de octubre de 2019 .
  10. Kazuki MATSUDA. "Agregar clonefile en Windows con soporte para ReFS" . GitHub . Archivado del original el 13 de enero de 2021. Consultado el 23 de febrero de 2020 .
  11. Un ejemplo de una implementación que verifica la identidad en lugar de asumirla se describe en "Solicitud de patente estadounidense n.° 20090307251" Archivada el 15 de enero de 2017 en Wayback Machine .
  12. Explicación de las tasas de deduplicación y el almacenamiento de instancia única a los clientes . Archivado el 23/12/2018 en Wayback Machine . George Crump, Storage Switzerland.
  13. CHRISTIAN CACHIN; MATTHIAS SCHUNTER (diciembre de 2011). "Una nube en la que puedes confiar" . IEEE Spectrum . IEEE . Archivado del original el 2 de enero de 2012. Consultado el 21 de diciembre de 2011 .
  • Biggar, Heidi (11 de diciembre de 2007). Webcast: El efecto de la deduplicación de datos.
  • Uso de la indexación semántica latente para la deduplicación de datos .
  • Una mejor manera de almacenar datos .
  • ¿Cuál es la diferencia entre la deduplicación de datos, la deduplicación de archivos y la compresión de datos? - Base de datos de eWeek
  • SNIA DDSR SIG
    • Comprensión de los índices de deduplicación de datos
  • Hacer más con menos, por Jatinder Singh
  • Demostración de deduplicación