El almacenamiento direccionable por contenido ( CAS ), también conocido como almacenamiento de contenido fijo , es una forma de almacenar información para que pueda recuperarse en función de su contenido, no de su nombre o ubicación. Se ha utilizado para el almacenamiento y la recuperación de alta velocidad de contenido fijo, como documentos almacenados para el cumplimiento de normativas gubernamentales. El almacenamiento direccionable por contenido es similar a la memoria direccionable por contenido .
Los sistemas CAS funcionan procesando el contenido del archivo mediante una función hash criptográfica para generar una clave única: la "dirección del contenido". El directorio del sistema de archivos almacena estas direcciones y un puntero al almacenamiento físico del contenido. Dado que cualquier intento de almacenar el mismo archivo generará la misma clave, los sistemas CAS garantizan la unicidad de los archivos que contienen. Asimismo, como cualquier modificación del archivo dará como resultado una nueva clave, los sistemas CAS aseguran que el archivo permanezca inalterado.
Los sistemas de almacenamiento de contenido (CAS) se convirtieron en un mercado importante durante la década de 2000, especialmente tras la entrada en vigor de la Ley Sarbanes-Oxley de 2002 en Estados Unidos, que exigía el almacenamiento de enormes cantidades de documentos durante largos periodos y su recuperación poco frecuente. El rendimiento cada vez mayor de los sistemas de archivos tradicionales y los nuevos sistemas de software han mermado el valor de los sistemas CAS heredados, que se han vuelto cada vez más escasos desde aproximadamente 2018. Sin embargo, los principios de direccionamiento de contenido siguen siendo de gran interés para los informáticos y constituyen la base de numerosas tecnologías emergentes, como el intercambio de archivos entre pares , las criptomonedas y la computación distribuida .
Descripción
Enfoques basados en la ubicación
Los sistemas de archivos tradicionales generalmente rastrean los archivos según su nombre . En medios de acceso aleatorio como los disquetes , esto se logra mediante un directorio que consta de una lista de nombres de archivo y punteros a los datos. Los punteros hacen referencia a una ubicación física en el disco, normalmente utilizando sectores . En sistemas más modernos y formatos más grandes como los discos duros , el directorio se divide en muchos subdirectorios, cada uno de los cuales rastrea un subconjunto de la colección total de archivos. Los subdirectorios se representan a su vez como archivos en un directorio padre, lo que produce una jerarquía u organización en forma de árbol. La serie de directorios que conducen a un archivo en particular se conoce como "ruta". [ 1 ]
En el contexto de los sistemas de almacenamiento de acceso aleatorio (CAS), estos enfoques tradicionales se denominan "direccionados por ubicación", ya que cada archivo se representa mediante una lista de una o más ubicaciones, la ruta y el nombre del archivo, en el almacenamiento físico. En estos sistemas, el mismo archivo con dos nombres diferentes se almacenará como dos archivos en el disco y, por lo tanto, tendrá dos direcciones. Lo mismo ocurre si el mismo archivo, incluso con el mismo nombre, se almacena en más de una ubicación en la jerarquía de directorios. Esto los hace poco ideales para un archivo digital , donde cualquier información única debe almacenarse solo una vez. [ 2 ]
A medida que el concepto de directorio jerárquico se generalizó en los sistemas operativos , especialmente a finales de la década de 1980, este tipo de patrón de acceso comenzó a ser utilizado por sistemas completamente ajenos. Por ejemplo, la World Wide Web utiliza un sistema similar de ruta/nombre de archivo, conocido como URL , para apuntar a los documentos. El mismo documento en otro servidor web tiene una URL diferente a pesar de tener el mismo contenido. Del mismo modo, si una ubicación existente cambia de alguna manera, si cambia el nombre del archivo o el servidor cambia de nombre de dominio , el documento deja de ser accesible. Esto da lugar al problema común de la degradación de enlaces . [ 2 ]
CAS y FCS
Aunque el almacenamiento basado en la ubicación se utiliza ampliamente en muchos campos, no siempre fue así. Anteriormente, la forma más común de recuperar datos de una gran colección era mediante algún tipo de identificador basado en el contenido del documento. Por ejemplo, el sistema ISBN se utiliza para generar un número único para cada libro. Si se realiza una búsqueda web de "ISBN 0465048994", se mostrará una lista de ubicaciones del libro " Why Information Grows" sobre el tema del almacenamiento de información. Si bien se devolverán varias ubicaciones, todas se refieren a la misma obra, y el usuario puede elegir la que le resulte más apropiada. Además, si alguna de estas ubicaciones cambia o desaparece, el contenido se puede encontrar en cualquiera de las otras. [ 2 ]
Los sistemas CAS intentan generar automáticamente resultados similares a los ISBN en cualquier documento. Para ello, utilizan una función hash criptográfica aplicada a los datos del documento, lo que produce lo que a veces se conoce como una "clave" o "huella digital". Esta clave está estrechamente vinculada al contenido exacto del documento; por ejemplo, añadir un espacio al final del archivo generará una clave diferente. En un sistema CAS, el directorio no asigna nombres de archivo a ubicaciones, sino que utiliza las claves. [ 2 ]
Esto ofrece varias ventajas. Por un lado, cuando se envía un archivo al CAS para su almacenamiento, la función hash genera una clave y luego comprueba si esa clave ya existe en el directorio. Si existe, el archivo no se almacena, ya que el que ya está almacenado es idéntico. Esto permite a los sistemas CAS evitar fácilmente la duplicación de datos. Además, como la clave se basa en el contenido del archivo, recuperar un documento con una clave determinada garantiza que el archivo almacenado no se haya modificado. La desventaja de este enfoque es que cualquier cambio en el documento produce una clave diferente, lo que hace que los sistemas CAS no sean adecuados para archivos que se editan con frecuencia. Por todas estas razones, los sistemas CAS se utilizan normalmente para archivar documentos mayoritariamente estáticos [ 2 ] y a veces se les conoce como «almacenamiento de contenido fijo» (FCS) [ 3 ] .
Dado que las claves no son legibles para humanos, los sistemas CAS implementan un segundo tipo de directorio que almacena metadatos que ayudan a los usuarios a encontrar un documento. Estos casi siempre incluyen un nombre de archivo, lo que permite utilizar la recuperación clásica basada en el nombre. Pero el directorio también incluye campos para sistemas de identificación comunes como códigos ISBN o ISSN , palabras clave proporcionadas por el usuario, marcas de fecha y hora e índices de búsqueda de texto completo . Los usuarios pueden buscar en estos directorios y recuperar una clave, que luego pueden usar para recuperar el documento en sí. [ 2 ]
Utilizar un sistema de álgebra computacional (CAS) es muy similar a usar un motor de búsqueda web . La principal diferencia radica en que una búsqueda web generalmente se realiza por temas mediante un algoritmo interno que encuentra contenido relacionado y genera una lista de ubicaciones. Los resultados pueden mostrar el mismo contenido en varias ubicaciones. En un CAS, una búsqueda puede arrojar más de un documento, pero cada uno de ellos será único y se mostrará solo una vez.
Otra ventaja de CAS es que la ubicación física en el almacenamiento no forma parte del sistema de búsqueda. Si, por ejemplo, el catálogo de fichas de una biblioteca indica que un libro se encuentra en el estante 43, compartimento 10, si se reorganiza la biblioteca, es necesario actualizar todo el catálogo. En cambio, el ISBN no cambia y el libro se puede encontrar buscando el estante con esos números. En un ordenador, un archivo en el sistema de archivos DOS , en la ruta A:\myfiles\textfile.txt, apunta al almacenamiento físico del archivo en el subdirectorio myfiles. Este archivo desaparece si se mueve el disquete a la unidad B:, e incluso cambiar su ubicación dentro de la jerarquía del disco requiere actualizar los directorios visibles para el usuario. En CAS, solo cambia la asignación interna de clave a ubicación física, que existe en un único lugar y puede diseñarse para una actualización eficiente. Esto permite mover archivos entre dispositivos de almacenamiento, e incluso entre diferentes soportes, sin necesidad de modificar la recuperación.
Para datos que cambian con frecuencia, el CAS no es tan eficiente como el direccionamiento basado en la ubicación. En estos casos, el dispositivo CAS tendría que recalcular continuamente la dirección de los datos a medida que cambian. Esto resultaría en el almacenamiento de múltiples copias del documento casi idéntico, un problema que el CAS intenta evitar. Además, los directorios de acceso para el usuario tendrían que actualizarse continuamente con estos archivos "nuevos", lo que los saturaría con muchos documentos similares y dificultaría la búsqueda. En cambio, la actualización de un archivo en un sistema basado en la ubicación está altamente optimizada; solo es necesario cambiar la lista interna de sectores, y esta operación ha sido objeto de muchos años de optimización.
Dado que CAS se utiliza principalmente para archivar, la eliminación de archivos suele estar estrictamente controlada o incluso ser imposible bajo el control del usuario. En cambio, la eliminación automática es una función común que elimina todos los archivos con una antigüedad superior a un requisito legalmente definido, por ejemplo, diez años. [ 2 ]
En computación distribuida
La forma más sencilla de implementar un sistema CAS consiste en almacenar todos los archivos en una base de datos típica a la que los clientes se conectan para añadir, consultar y recuperar archivos. Sin embargo, las propiedades únicas de la direccionabilidad del contenido hacen que este paradigma sea idóneo para sistemas informáticos en los que múltiples hosts gestionan archivos de forma colaborativa sin una autoridad central, como los sistemas de intercambio de archivos distribuidos , donde la ubicación física de un archivo alojado puede cambiar rápidamente en respuesta a cambios en la topología de la red, y el contenido exacto de los archivos que se van a recuperar es más importante para los usuarios que su ubicación física actual. En un sistema distribuido, los hashes de contenido se utilizan a menudo para búsquedas rápidas de archivos específicos en toda la red, o para ver rápidamente qué datos de un archivo determinado se han modificado y deben propagarse a otros miembros de la red con un mínimo consumo de ancho de banda . En estos sistemas, la direccionabilidad del contenido permite abstraer la topología de red altamente variable de los usuarios que desean acceder a los datos, en comparación con sistemas como la World Wide Web , donde una ubicación consistente de un archivo o servicio es clave para facilitar su uso.
redes direccionables por contenido
La red direccionable por contenido (CAN) es una infraestructura P2P distribuida y descentralizada que proporciona funcionalidad de tabla hash a una escala similar a la de Internet . CAN fue una de las cuatro propuestas originales de tablas hash distribuidas , presentadas simultáneamente con Chord , Pastry y Tapestry .
Historia
Un dispositivo de hardware llamado Content Addressable File Store (CAFS) fue desarrollado por International Computers Limited (ICL) a finales de la década de 1960 y British Telecom lo implementó a principios de la década de 1970 para la búsqueda en directorios telefónicos . La funcionalidad de búsqueda, accesible para el usuario, era gestionada por el controlador de disco mediante una interfaz de programación de aplicaciones (API) de alto nivel , lo que permitía a los usuarios enviar consultas a lo que parecía ser una caja negra que devolvía documentos. La ventaja radicaba en que no era necesario intercambiar información con el ordenador anfitrión mientras el disco realizaba la búsqueda.
Paul Carpentier y Jan van Riel acuñaron el término CAS mientras trabajaban en una empresa llamada FilePool a finales de la década de 1990. FilePool fue adquirida por EMC Corporation en 2001 y se lanzó al año siguiente como Centera. [ 4 ] El momento fue perfecto; la entrada en vigor de la Ley Sarbanes-Oxley en 2002 obligaba a las empresas a almacenar grandes cantidades de documentación durante largos periodos y a hacerlo de forma que se garantizara que no se editara posteriormente. [ 5 ]
Pronto aparecieron varios productos similares de otros proveedores de sistemas grandes. A mediados de 2004, el grupo industrial SNIA comenzó a trabajar con varios proveedores de CAS para crear pautas de comportamiento estándar e interoperabilidad para los sistemas CAS. [ 6 ]
Además de CAS, surgieron varios productos similares que añadieron capacidades parecidas a las de CAS a los productos existentes; entre ellos destaca IBM Tivoli Storage Manager [ 7 ] . El auge de la computación en la nube y los sistemas de almacenamiento en la nube elásticos asociados , como Amazon S3, diluyeron aún más el valor de los sistemas CAS dedicados. Dell adquirió EMC en 2016 y dejó de vender el Centera original en 2018 en favor de su producto de almacenamiento elástico [ 8 ] .
CAS no se asoció con aplicaciones peer-to-peer hasta la década de 2000, cuando la rápida proliferación del acceso a Internet en hogares y empresas llevó a un gran número de usuarios de computadoras que querían intercambiar archivos, inicialmente a través de servicios administrados centralmente como Napster . Sin embargo, una orden judicial contra Napster impulsó el desarrollo independiente de servicios de intercambio de archivos como BitTorrent , que no podían ser cerrados centralmente. Para funcionar sin un servidor federado central, estos servicios dependen en gran medida de CAS para garantizar la copia fiel y la fácil consulta de archivos únicos. Al mismo tiempo, el crecimiento del movimiento de software de código abierto en la década de 2000 llevó a la rápida proliferación de servicios basados en CAS como Git , un sistema de control de versiones que utiliza numerosas funciones criptográficas, como árboles Merkle, para garantizar la integridad de los datos entre usuarios y permitir múltiples versiones de archivos con un uso mínimo de disco y red. Alrededor de esta época, los usuarios individuales de criptografía de clave pública usaban CAS para almacenar sus claves públicas en sistemas como servidores de claves .
El auge de la informática móvil y las redes de banda ancha móvil de alta capacidad en la década de 2010, junto con la creciente dependencia de las aplicaciones web para las tareas informáticas cotidianas, puso a prueba el modelo cliente-servidor basado en la ubicación , común entre los servicios de Internet, lo que provocó una mayor degradación de los enlaces y una mayor dependencia del alojamiento centralizado en la nube . Además, la creciente preocupación por la centralización del poder informático en manos de grandes empresas tecnológicas , los posibles abusos de poder monopólico y las preocupaciones sobre la privacidad dieron lugar a varios proyectos creados con el objetivo de crear sistemas más descentralizados . Bitcoin utiliza CAS y pares de claves públicas/privadas para gestionar las direcciones de las carteras, al igual que la mayoría de las demás criptomonedas . IPFS utiliza CAS para identificar y direccionar archivos alojados de forma comunitaria en su red. Numerosos otros sistemas peer-to-peer diseñados para ejecutarse en teléfonos inteligentes , que a menudo acceden a Internet desde diferentes ubicaciones, utilizan CAS para almacenar y acceder a los datos de los usuarios tanto por comodidad como por motivos de privacidad de datos, como la mensajería instantánea segura .
Implementaciones
Propiedad
El sistema Centera CAS consta de una serie de nodos en red (normalmente servidores grandes que ejecutan Linux ), divididos entre nodos de almacenamiento y nodos de acceso. Los nodos de acceso mantienen un directorio sincronizado de direcciones de contenido y el nodo de almacenamiento correspondiente donde se puede encontrar cada dirección. Cuando se agrega un nuevo elemento de datos, o blob , el dispositivo calcula un hash del contenido y devuelve este hash como la dirección de contenido del blob. [ 9 ] Como se mencionó anteriormente, se busca el hash para verificar que no exista contenido idéntico. Si el contenido ya existe, el dispositivo no necesita realizar ningún paso adicional; la dirección de contenido ya apunta al contenido correcto. De lo contrario, los datos se transfieren a un nodo de almacenamiento y se escriben en el medio físico.
Cuando se proporciona una dirección de contenido al dispositivo, este primero consulta el directorio para obtener la ubicación física de dicha dirección. A continuación, recupera la información de un nodo de almacenamiento y recalcula y verifica el hash de los datos. Una vez completado este proceso, el dispositivo puede proporcionar los datos solicitados al cliente. Dentro del sistema Centera, cada dirección de contenido representa varios bloques de datos distintos, así como metadatos opcionales . Cada vez que un cliente añade un bloque a un bloque de contenido existente, el sistema recalcula la dirección de contenido.
Para brindar mayor seguridad de datos, los nodos de acceso de Centera, cuando no se está realizando ninguna operación de lectura o escritura, se comunican constantemente con los nodos de almacenamiento, verificando la presencia de al menos dos copias de cada blob, así como su integridad. Además, pueden configurarse para intercambiar datos con un sistema Centera diferente, por ejemplo, ubicado fuera de las instalaciones, reforzando así las medidas de seguridad contra la pérdida accidental de datos.
IBM ofrece otra versión de CAS, que puede ser basada en software (Tivoli Storage Manager 5.3) o en hardware (IBM DR550). Su arquitectura se diferencia por basarse en un diseño de gestión de almacenamiento jerárquico (HSM), que proporciona mayor flexibilidad, como la compatibilidad con discos WORM y cintas WORM, así como la migración de datos entre discos y cintas WORM. Esto ofrece mayor flexibilidad en situaciones de recuperación ante desastres y permite reducir los costos de almacenamiento al transferir datos de disco a cinta.
Otra implementación típica es iCAS de iTernity. El concepto de iCAS se basa en contenedores. Cada contenedor se identifica mediante su valor hash. Un contenedor almacena un número variable de documentos con contenido fijo. El contenedor es inmutable y el valor hash se mantiene fijo tras el proceso de escritura.
Código abierto
- Venti : Uno de los primeros servidores de almacenamiento con direccionamiento de contenido, [ 10 ] desarrollado originalmente para Plan 9 de Bell Labs y ahora también disponible para sistemas tipo Unix como parte de Plan 9 de User Space . El primer paso hacia una implementación CAS+ de código abierto es Twisted Storage. [ 11 ]
- Tahoe Least-Authority File Store : una implementación de código abierto de CAS.
- Git : un sistema de archivos CAS en espacio de usuario . Git se utiliza principalmente como sistema de control de código fuente.
- git-annex : un sistema de sincronización de archivos distribuido que utiliza almacenamiento direccionable por contenido para los archivos que administra. Se basa en Git y enlaces simbólicos para indexar su ubicación en el sistema de archivos.
- Proyecto Honeycomb : una API de código abierto para sistemas CAS. [ 12 ]
- XAM : una interfaz desarrollada bajo los auspicios de la Storage Networking Industry Association . Proporciona una interfaz estándar para archivar productos y proyectos CAS (y similares). [ 13 ]
- Perkeep : un proyecto de 2011 para acercar las ventajas del almacenamiento direccionable por contenido a las masas. Está diseñado para una amplia variedad de casos de uso, incluyendo copias de seguridad distribuidas, instantáneas por defecto, un sistema de archivos con control de versiones y el intercambio de archivos descentralizado con control de permisos.
- Irmin: una "biblioteca OCaml para almacenes persistentes con mecanismos integrados de instantáneas, ramificación y reversión"; con los mismos principios de diseño que Git.
- Cassette: una implementación CAS de código abierto para C#/.NET. [ 14 ]
- Arvados Keep: un sistema de almacenamiento distribuido de código abierto con direccionamiento de contenido. [ 15 ] Está diseñado para trabajos de ciencia de datos a gran escala y computacionalmente intensivos, como el almacenamiento y procesamiento de datos genómicos.
- Infinit: una plataforma de almacenamiento descentralizada (peer-to-peer) con acceso al contenido, que fue adquirida por Docker Inc.
- Sistema de Archivos Interplanetario (IPFS): un protocolo de distribución de hipermedia entre pares con direccionamiento por contenido.
- casync : una utilidad de software para Linux creada por Lennart Poettering para distribuir imágenes de sistemas de archivos actualizadas frecuentemente a través de Internet. [ 16 ]
- Snix : un sistema de almacenamiento direccionable por contenido basado en los conceptos y el funcionamiento interno de Nix (gestor de paquetes) .
- Bazel : un sistema de compilación distribuido. Cuando se utiliza la ejecución remota, los archivos fuente y los artefactos se almacenan en un CAS [ 17 ] .
Véase también
Referencias
- ↑ Cheung, Shun Yan. "Almacenamiento y organización de archivos de datos en discos" . Universidad de Emory .
- 1 2 3 4 5 6 7 Zumwalt, Matt. "El poder del direccionamiento de contenido" .
- ↑ Connor, Deni (29 de mayo de 2003). "El almacenamiento de contenido fijo capta la atención de los usuarios" . ComputerWorld .
- ↑ Almacenamiento direccionable por contenido: El almacenamiento según mi perspectiva , por Mark Ferelli, octubre de 2002, BNET.com
- ↑ Conferencia Técnica Anual de USENIX 2003, Sesión General – Resumen
- ↑ Actividades de estandarización de la industria CAS – XAM: http://www.snia.org/forums/xam
- ↑ "Bloques, archivos y almacenamiento direccionable por contenido" . Soporte de IBM . Consultado el 30 de diciembre de 2025 .
- ↑ Sheldon, Robert. "Almacenamiento direccionado por contenido" .
- ↑ Generación de un hash del contenido de un archivo. El almacenamiento direccionable por contenido utiliza algoritmos hash. , Por Chris Mellor, Publicado: 9 de diciembre de 2003, Techworld. Archivado el 28 de septiembre de 2007 en Wayback Machine. Artículo trasladado a https://www.techworld.com/data/making-a-hash-of-file-content-235/
- ↑ "Venti: un nuevo enfoque para el almacenamiento de archivos" . doc.cat-v.org . Consultado el 30 de junio de 2019 .
- ↑ "Twisted Storage" . twistedstorage.sourceforge.net . Consultado el 30 de junio de 2019 .
- ↑ "Almacenamiento de contenido fijo HoneyComb en OpenSolaris.org" . Archivado del original el 12 de octubre de 2007. Consultado el 1 de octubre de 2007 .
- ↑ "Especificación de la interfaz XAM (eXtensible Access Method)" .
- ↑ Un sistema de almacenamiento direccionable por contenido simple para .NET 4.5 y .NET Core: point-platform/cassette , Point Platform, 6 de mayo de 2019 , consultado el 30 de junio de 2019.
- ↑ "Keep – Arvados" . dev.arvados.org . Consultado el 30 de junio de 2019 .
- ↑ "Lennart Poettering anuncia nuevo proyecto: casync – Phoronix" . Phoronix .
- ↑ "Bazel remote-apis" .
Enlaces externos
- Almacenamiento rápido y económico con direccionamiento por contenido en Foundation
- Venti: un nuevo enfoque para el almacenamiento de archivos
- Matrices asociativas
- Dispositivos de almacenamiento informático