ES2827974T3 - Sistema de almacenamiento masivo jerárquico basado en servidor - Google Patents

Sistema de almacenamiento masivo jerárquico basado en servidor Download PDF

Info

Publication number
ES2827974T3
ES2827974T3 ES13793195T ES13793195T ES2827974T3 ES 2827974 T3 ES2827974 T3 ES 2827974T3 ES 13793195 T ES13793195 T ES 13793195T ES 13793195 T ES13793195 T ES 13793195T ES 2827974 T3 ES2827974 T3 ES 2827974T3
Authority
ES
Spain
Prior art keywords
data
storage
hierarchical
layer
data storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES13793195T
Other languages
English (en)
Inventor
Maurilio Cometto
Gururaj Pangal
Ady Degany
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2827974T3 publication Critical patent/ES2827974T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Radio Relay Systems (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Un procedimiento de implementación de un sistema de almacenamiento de datos jerárquico (500), comprendiendo dicho procedimiento: instalar un controlador de dispositivo de almacenamiento virtual en un sistema operativo que se ejecuta en un sistema informático, dicho controlador de dispositivo de almacenamiento virtual para recibir solicitudes de almacenamiento de datos, pareciendo que el controlador de dispositivo de almacenamiento virtual pone a disposición volúmenes de disco virtuales (1451, 1452, 1453), donde las solicitudes de almacenamiento de datos para los volúmenes de disco virtuales se pasan al sistema de almacenamiento de datos jerárquico; ejecutar una pila de almacenamiento jerárquico en dicho sistema informático para almacenar datos, teniendo dicha pila de almacenamiento jerárquico una capa de administración (510) que permite la configuración remota y el control de dicha pila de almacenamiento jerárquico, incluyendo dicho sistema de almacenamiento jerárquico una capa de abstracción de volúmenes (531) adaptada para mantener un seguimiento de los diferentes volúmenes almacenados por el sistema de almacenamiento jerárquico (500), teniendo la pila de almacenamiento jerárquico por lo menos tres capas de almacenamiento local de datos para almacenar localmente datos en dicho sistema informático, donde el sistema de almacenamiento de datos jerárquico incluye una capa de almacenamiento lineal (540, 640) que mantiene un mapa de almacenamiento lineal (541) que especifica dónde reside cada porción de datos, estando adaptada una capa de almacenamiento sin copias duplicadas (550, 650) para eliminar datos duplicados de los datos almacenados, y una capa de almacenamiento transitorio (560, 660) adaptada para comprimir los segmentos de datos, y teniendo dicha pila de almacenamiento jerárquico una capa de almacenamiento remoto de datos (580) que almacena datos con un servicio de almacenamiento de datos remoto (591); y dirigir todas las solicitudes de almacenamiento de datos recibidas por dicho controlador de dispositivo de almacenamiento virtual a dicha pila de almacenamiento jerárquico; comprendiendo además el procedimiento: recibir una solicitud para crear un nuevo volumen de datos en dicha capa de administración de dicho sistema de almacenamiento de datos jerárquico; crear dicho nuevo volumen de datos en dicha pila de almacenamiento jerárquico que almacenará inicialmente datos en dicha capa de almacenamiento local de datos y verterá posteriormente datos a dicha capa de almacenamiento remoto de datos que almacena datos con un servicio de almacenamiento de datos remoto, donde la creación de dicho nuevo volumen de datos se realiza desalojando datos inactivos de la capa de almacenamiento local de datos para crear espacio para dicho nuevo volumen de datos, donde los datos desalojados se vierten a la pila de almacenamiento jerárquico.

Description

DESCRIPCIÓN
Sistema de almacenamiento masivo jerárquico basado en servidor
Solicitudes relacionadas
La presente solicitud de patente reivindica el beneficio de la solicitud de patente provisional presentada anteriormente, titulada "System And Methods For Implementing A Server-Based Hierarchical Mass Storage System", presentada el 20 de mayo de 2012, con número de serie 61/649,305.
Campo técnico
La presente invención se refiere al campo de los sistemas de almacenamiento masivo digital. En particular, pero no a modo de limitación, la presente invención muestra varias técnicas para implementar un sistema de almacenamiento masivo jerárquico dentro de un sistema de servidor o en una máquina virtual basada en la nube. Estado de la técnica anterior
Los sistemas informáticos se han convertido en una herramienta indispensable utilizada en la vida moderna. Casi toda entidad de negocio y administrativa depende actualmente de sistemas informáticos para comunicación digital, planificación de proyectos, creación de documentos, almacenamiento de información, procesamiento de transacciones, gestión de proyectos, gestión de inventario, operaciones financieras y muchos otros servicios críticos para la misión.
Debido a la importancia crítica de la tecnología de la información para la mayor parte de las organizaciones, es crítico poder reparar o sustituir cualquier parte de la infraestructura de tecnología de la información que falle. Aunque los elementos individuales de hardware informático y software informático pueden ser sustituidos fácilmente por una entidad comprando nuevo equipo informático o software informático, el almacenamiento acumulado de información digital de la entidad no puede ser sustituido fácilmente. Por lo tanto, el almacenamiento de información digital y la protección de información digital es una de las partes más críticas de cualquier sistema moderno de infraestructura de tecnologías de la información.
Las organizaciones modernas tienen que ser capaces de soportar una amplia gama de diferentes entornos informáticos para sus usuarios informáticos. Un departamento de tecnologías de la información puede tener que proporcionar servicios de almacenamiento de información digital a una gran instalación central de la sede principal, a otras instalaciones remotas geográficamente, delegaciones remotas, oficinas de desarrollo regionales, pequeñas oficinas remotas de ventas e incluso a personas que trabajan solas. Idealmente, todos estos entornos de oficina de diferentes tamaños podrían recibir el mismo nivel de servicios y soporte de tecnologías de la información. Además, el departamento de tecnologías de la información tiene que hacer frente al hecho de que se abren nuevas oficinas, oficinas existentes cierran, y las oficinas se pueden desplazar durante la vida útil de una organización. Proporcionar servicios de almacenamiento de información digital a semejante amplia gama de entornos de oficina que puede incluir oficinas remotas geográficamente es un desafío significativo para cualquier departamento de tecnologías de la información. Por lo tanto, seria deseable desarrollar un sistema de almacenamiento de información digital escalable que pueda proporcionar servicios de almacenamiento de información digital fácilmente gestionables y de alta calidad, para gestionar cualquier tipo de entorno informático.
La patente US 2011/167221, que es del mismo solicitante, da a conocer la escritura de datos en varios dispositivos de almacenamiento pertenecientes a un sistema de almacenamiento jerárquico distribuido, con una pila y capas de almacenamiento similares.
La patente US 2005/289218 se refiere a un sistema y un procedimiento para crear eficientemente copias de respaldo de volúmenes de datos externas. Un sistema de almacenamiento híbrido combina las ventajas y flexibilidad de una red de área de almacenamiento local con la fiabilidad y la capacidad infinita de un sistema de almacenamiento de datos basado en la nube, externalizado. El conjunto de almacenamiento en la nube intenta mantener todos los datos de acceso frecuente dentro del sistema de almacenamiento local de datos, de tal modo que la gran mayoría de las operaciones de lectura se pueden gestionar localmente. Sin embargo, solamente un subconjunto de todos los datos disponibles residirán en el sistema de almacenamiento local de datos, debido a limitaciones de tamaño. El resto de los datos son almacenados con un proveedor de almacenamiento de datos basado en la nube, disponible en internet. El componente de administración no es parte de la pila de gestión de solicitudes de almacenamiento sino que, en su lugar, es un sistema para configurar, controlar y monitorizar un conjunto de almacenamiento en la nube. Un administrador puede acceder al componente de administración del conjunto de almacenamiento en la nube a través de una interfaz acoplada a una red de área local.
Breve descripción de los dibujos
El objetivo de la presente invención es mejorar el aumento de la capacidad de almacenamiento de un sistema de almacenamiento de datos jerárquico.
Este objetivo se consigue mediante la materia de las reivindicaciones independientes.
Las reivindicaciones dependientes definen realizaciones preferidas.
En los dibujos, que no están necesariamente dibujados a escala, los numerales semejantes describen componentes sustancialmente similares en todas las diversas vistas. Los numerales semejantes que tienen sufijos de letra diferentes representan instancias diferentes de componentes sustancialmente similares. Los dibujos muestran generalmente, a modo de ejemplo pero no de limitación, varias realizaciones explicadas en el presente documento. La figura 1 muestra una representación esquemática de una máquina en la forma de ejemplo de un sistema informático dentro del cual se puede ejecutar un conjunto de instrucciones, para hacer que la máquina lleve a cabo cualesquiera una o varias de las metodologías explicadas en la presente memoria.
La figura 2 ilustra un diagrama de bloques que muestra la diferencia entre un sistema de almacenamiento de acceso directo tradicional y una red de área de almacenamiento (SAN, storage area network).
La figura 3 muestra una lista conceptual de un sistema de almacenamiento jerárquico en el que los datos de acceso frecuente se almacenan cerca de la parte superior y los datos de acceso menos frecuente se almacenan cerca de la parte inferior.
La figura 4 muestra un sistema de almacenamiento masivo jerárquico utilizado dentro del sistema de red informático de un entorno de oficina.
La figura 5 muestra un diagrama de bloques conceptual de una realización de una arquitectura utilizada para construir un sistema de almacenamiento masivo jerárquico.
La figura 6 muestra conceptualmente un conjunto de capas de almacenamiento de datos en una realización de un sistema de almacenamiento masivo jerárquico.
La figura 7 muestra un diagrama de flujo que describe cómo un sistema de almacenamiento masivo jerárquico puede responder a una solicitud de lectura recibida desde un sistema cliente.
La figura 8 muestra un diagrama de flujo que describe cómo un sistema de almacenamiento masivo jerárquico puede responder a una solicitud de escritura recibida desde un sistema cliente.
La figura 9 muestra un diagrama de flujo que describe cómo un sistema de almacenamiento masivo jerárquico puede dividir una porción de datos en segmentos de datos y eliminar duplicados.
La figura 10 es un diagrama conceptual que muestra cómo una porción de datos se puede dividir en segmentos de datos utilizando una huella digital progresiva, calculada sobre una ventana móvil.
La figura 11A muestra un diagrama de bloques de un segmento de datos que se ha comprimido con un sistema de compresión extensible.
La figura 11B muestra un diagrama de bloques de un segmento de datos comprimido de la figura 11A, que se ha cifrado con un sistema de cifrado extensible.
La figura 12 muestra la infraestructura informática de un entorno de oficina pequeña con solamente tres empleados locales que utilizan estaciones de trabajo.
La figura 13 muestra un entorno informático de oficina pequeña similar a la figura 12, en el que el sistema de servidor pequeño incluye un sistema de almacenamiento jerárquico integrado.
La figura 14 muestra un diagrama de bloques detallado de una realización de sistema de servidor con un sistema de almacenamiento jerárquico integrado.
La figura 15A muestra un diagrama de bloques de una compañía con una sede principal y dos oficinas satélite en Londres y Zúrich, que desea abrir una oficina en Tokio.
La figura 15B muestra el diagrama de bloques de la figura 15A después de configurar un servidor en Tokio para almacenamiento en la nube regional.
La figura 15C muestra el diagrama de bloques de la figura 15B después de configurar el servidor en Tokio para acceder a un servidor en la sede principal.
La figura 15D muestra el diagrama de bloques de la figura 15C después de configurar el restablecimiento de un servidor de volumen de plantillas de oficina satélite en el servidor de Tokio.
La figura 15E muestra el diagrama de la figura 15D con la oficina de Tokio funcionando.
La figura 15F muestra el diagrama de la figura 15E después de respaldar el volumen de datos importantes de la oficina satélite de Tokio.
La figura 15G muestra el diagrama de la figura 15F después de cerrar la oficina de Tokio.
La figura 15H muestra el diagrama de bloques de la figura 15G después de abrir una nueva oficina en Singapur con todos los datos procedentes de la oficina satélite de Tokio cerrada.
La oficina 15I muestra el diagrama de bloques de la figura 15H, en el que se distribuye un volumen de biblioteca a todas las diferentes oficinas satélite.
La figura 16 muestra un sistema de servidor virtual con un sistema de almacenamiento jerárquico integrado que se está ejecutando en un proveedor de servicios en la nube.
La figura 17 muestra dos sistemas de servidor virtuales con un sistema de almacenamiento jerárquico integrado, que se están ejecutando en un proveedor de servicios en la nube.
La figura 18 muestra un sistema de almacenamiento jerárquico virtual con una interfaz de almacenamiento de red que se está ejecutando en un proveedor de servicios en la nube.
Descripción detallada
La siguiente descripción detallada incluye referencias a los dibujos adjuntos, que forman parte de la descripción detallada. Los dibujos muestran ilustraciones acordes con las realizaciones de ejemplo. Estas realizaciones, que se denominan asimismo "ejemplos" en la presente memoria, se describen en detalle suficiente para permitir a los expertos en la materia practicar la invención. Resultará evidente para un experto en la materia que los detalles específicos
La siguiente descripción detallada incluye referencias a los dibujos adjuntos, que forman parte de la descripción detallada. Los dibujos muestran ilustraciones acordes con las realizaciones de ejemplo. Estas realizaciones, que se denominan asimismo "ejemplos" en la presente memoria, se describen en detalle suficiente para permitir a los expertos en la materia practicar la invención. Resultará evidente para un experto en la materia que no se requieren detalles específicos en las realizaciones de ejemplo para practicar la presente invención. Por ejemplo, aunque algunas de las realizaciones de ejemplo se dan a conocer haciendo referencia a un sistema de almacenamiento de datos jerárquico implementado dentro de un sistema de servidor basado en Microsoft Windows, las mismas técnicas se pueden implementar con otro. Las realizaciones de ejemplo se pueden combinar, se pueden utilizar otras realizaciones, o se pueden realizar cambios estructurales, lógicos y eléctricos sin apartarse del alcance de lo reivindicado. Por lo tanto, la siguiente descripción detallada no se debe tomar en sentido limitativo, y el alcance está definido por las reivindicaciones adjuntas y sus equivalentes.
En este documento, los términos "un" o "una" se utilizan, tal como es común en los documentos de patente, para incluir uno o más de uno. En este documento, el término "o" se utiliza para hacer referencia a una o no exclusiva, de tal modo que "A o B" incluye "A pero no B", "B pero no A" y "A y B", salvo que se indique otra cosa. Además, todas las publicaciones, patentes y documentos de patente a los que se hace referencia en este documento se incorporan en su integridad como referencia a la presente memoria, como si se incorporaran como referencia individualmente. En el caso de utilizaciones inconsistentes entre este documento y dichos documentos así incorporados como referencia, la utilización de la referencia o referencias incorporadas se deberá considerar complementaria a la de este documento; para inconsistencias irreconciliables, manda la utilización de este documento.
Sistemas informáticos
La presente invención concierne a sistemas informáticos digitales. La figura 1 muestra una representación esquemática de una máquina en la forma de ejemplo de un sistema informático 100 que se puede utilizar para implementar partes de la presente invención. Dentro del sistema informático 100 de la figura 1, existe un conjunto de instrucciones 124 que se pueden ejecutar para hacer que la máquina lleve a cabo cualesquiera una o varias de las metodologías explicadas en este documento.
En un despliegue en red, la máquina de la figura 1 puede funcionar en la capacidad de una máquina de servidor o de una máquina cliente en un entorno de red cliente-servidor, o como una máquina par en un entorno de red entre pares (o distribuido). La máquina puede ser un ordenador personal (PC, personal computer), un PC de tableta, un asistente digital personal (PDA, Personal Digital Assistant), un teléfono móvil, una aplicación web, un servidor de red, un enrutador de red, un conmutador de red, un puente de red o cualquier máquina que pueda ejecutar un conjunto de instrucciones informáticas (secuenciales u otras) que especifican acciones a adoptar por dicha máquina. Además, aunque se muestra solamente una máquina, se deberá considerar que el término "máquina" incluye asimismo cualquier colección de máquinas que ejecutan de manera individual o conjunta un conjunto (o múltiples conjuntos) de instrucciones para llevar a cabo cualesquiera una o varias de las metodologías explicadas en la presente memoria.
El sistema informático de ejemplo 100 de la figura 1 incluye un procesador 102 (por ejemplo, una unidad central de proceso (CPU, central processing unit), una unidad de procesamiento de gráficos (GPU, graphics processing unit) o ambas) y una memoria principal 104 y una memoria no volátil 106, que comunican entre sí a través de un bus 108. La memoria no volátil 106 puede comprender memoria flash y puede ser utilizada como una memoria de sistema informático, como una unidad de almacenamiento de archivos o como ambas. El sistema informático 100 puede incluir además un adaptador de visualización de video 110 que controla un sistema de visualización de video 115, tal como una pantalla de cristal líquido (LCD, Liquid Crystal Display) o un tubo de rayos catódicos (CRT, Cathode Ray Tube). El sistema informático 100 incluye asimismo un dispositivo de entrada alfanumérica 112 (por ejemplo, un teclado), un dispositivo de control del cursor 114 (por ejemplo, un ratón o una rueda de desplazamiento), una unidad de disco 116, un dispositivo de generación de señales 118 (por ejemplo, un altavoz) y un dispositivo de interfaz de red 120. Se debe observar que no todas estas partes mostradas en la figura 1 estarán presentes en todas las realizaciones. Por ejemplo, un sistema de servidor informático puede no tener un adaptador de visualización de video 110 o un sistema de visualización de video 115 si dicho servidor está controlado por medio de un dispositivo de interfaz de red 120.
La unidad de disco 116 incluye un medio legible a máquina 122 en el que están almacenados uno o varios conjuntos de instrucciones informáticas y estructuras de datos (por ejemplo, instrucciones 124 conocidas asimismo como 'software') que incorporan, o son utilizadas por cualesquiera una o varias de las metodologías o funciones descritas en la presente memoria. Las instrucciones 124 pueden asimismo residir, completa o por lo menos parcialmente, dentro de la memoria principal 104 y/o dentro de una memoria caché 103 asociada con el procesador 102. La memoria principal 104 y la memoria caché 103 asociadas con el procesador 102 constituyen asimismo medios legibles a máquina.
Las instrucciones 124 pueden además ser transmitidas o recibidas sobre una red informática 126 a través de un dispositivo de interfaz de red 120. Dichas transmisiones pueden ocurrir utilizando cualquiera de una serie de protocolos de transferencia bien conocidos, tal como el muy conocido protocolo de transferencia de archivos (FTP, File Transport Protocol).
Aunque el medio legible a máquina 122 se muestra en la realización de ejemplo siendo un único medio, se deberá considerar que el término "medio legible a máquina" incluye un único medio o múltiples medios (por ejemplo, una base de datos centralizada o distribuida, y/o servidores y memorias caché asociadas) que almacenan uno o varios conjuntos de instrucciones. Se deberá considerar que el término "medio legible a máquina" incluye cualquier medio que pueda almacenar, codificar o transportar un conjunto de instrucciones para su ejecución por la máquina, y que pueda hacer que la máquina lleve a cabo cualesquiera una o varias de las metodologías descritas en la presente memoria, o que pueda almacenar, codificar o transportar estructuras de datos utilizadas por semejante conjunto de instrucciones, o asociadas con el mismo. Por consiguiente, se deberá considerar que la expresión "medio legible a máquina" incluye, de forma no limitativa, memorias de estado sólido, medios ópticos, RAM respaldada con batería y medios magnéticos.
Para los propósitos de esta memoria descriptiva, el término "módulo" incluye una parte identificable de código, instrucciones computacionales o ejecutables, datos o un objeto computacional para conseguir una función, operación, proceso o procedimiento particular. No es necesario que un módulo se implemente en software; un módulo se puede implementar en software, hardware/circuitos o una combinación de software y hardware.
Redes de área de almacenamiento
Para hacer más eficientes los centros de datos de negocio, se introdujo el concepto de una red de área de almacenamiento (SAN). Una SAN permite que las aplicaciones informáticas accedan a dispositivos de almacenamiento informático remoto (tales como conjuntos de discos duros, librerías de cintas magnéticas y dispositivos de almacenamiento óptico) de una manera en la que los dispositivos de almacenamiento remoto no parecen diferentes de los dispositivos de almacenamiento acoplados localmente. La utilización de una SAN permite que múltiples aplicaciones y servidores compartan sistemas de almacenamiento. La utilización de almacenamiento compartido simplifica la administración de sistemas de almacenamiento dado que es necesario mantener menos sistemas de almacenamiento. Las SAN simplifican asimismo la tarea de crear sistemas de recuperación de desastres para sistemas informáticos, dado que un sistema de almacenamiento secundario independiente ubicado en una ubicación distante puede ser utilizado para replicar los datos que están siendo almacenados en un sistema de almacenamiento principal en una ubicación principal.
Una red de área de almacenamiento funciona generalmente como una parte integrada del sistema operativo en un dispositivo informático. Específicamente, el sistema operativo proporciona el sistema de archivos básico para gestionar archivos y la SAN funciona por debajo del sistema de archivos y proporciona solamente servicios de almacenamiento de bloques lógicos en bruto al sistema de archivos. La diferencia entre un sistema de almacenamiento de acceso directo tradicional y una SAN se muestra en la figura 2.
Haciendo referencia a la figura 2, varias aplicaciones de servidor (201, 202 y 203) se están ejecutando en un sistema de servidor 210. Las aplicaciones de servidor (201, 202 y 203) funcionarán generalmente sobre archivos de datos utilizando el sistema de archivos 211 del sistema de servidor 210. Las aplicaciones de servidor pueden asimismo puentear el sistema de archivos 211 para leer y escribir bloques de datos en bruto directamente en el almacenamiento. En un sistema informático con un sistema de almacenamiento acoplado directo tradicional 240, el sistema de archivos 211 accede a un controlador de almacenamiento acoplado directo 220 para acceder al sistema de almacenamiento local 230. Para utilizar un sistema de red de área de almacenamiento (SAN) 280, el sistema de archivos 211 accede a un controlador de red de área de almacenamiento 250 en lugar de acceder a un dispositivo de almacenamiento local. El controlador de red de área de almacenamiento 250 emite solicitudes de almacenamiento en la red de área de almacenamiento 260 para dispositivos de almacenamiento (271, 272, 273 y 274). Las aplicaciones de servidor que han puenteado el sistema de archivos 211 para utilizar directamente el sistema de almacenamiento acoplado directo 240 pueden pasar de manera similar por el sistema de archivos 211 para acceder directamente al controlador SAN 250.
Con el sistema de red de área de almacenamiento 280, se pueden añadir fácilmente dispositivos de almacenamiento adicionales a la red de área de almacenamiento 260, según sea necesario. Al desacoplar los sistemas de servidor de sus componentes de almacenamiento, un sistema de servidor estropeado (tal como el servidor 210) puede ser reemplazado rápidamente con un sistema de servidor nuevo que puede acceder inmediatamente a los datos para dicho servidor, que están disponibles en el sistema de red de área de almacenamiento 280. Análogamente, si un dispositivo de almacenamiento en la red de área de almacenamiento 260 falla, dicho dispositivo de almacenamiento individual puede ser sustituido.
Visión general de un sistema de almacenamiento masivo jerárquico
Se han creado muchas tecnologías diferentes de almacenamiento digital para almacenar datos digitales. Cada diferente tecnología de almacenamiento digital tiende a tener sus propias ventajas e inconvenientes en términos de métrica de rendimiento, costes, consumo de energía, ruido, fiabilidad. Etc. Un sistema de almacenamiento digital ideal proporcionaría un rendimiento extremadamente alto a un coste extremadamente bajo. Sin embargo, las tecnologías de almacenamiento de alto rendimiento tienden a ser costosas y a consumir energía. Por lo tanto, para almacenar cantidades muy grandes de datos, es necesario utilizar tecnologías de almacenamiento de datos de menor coste.
Los usuarios no utilizan igualmente el acceso a todos los datos almacenados. Generalmente, se accede frecuentemente a una pequeña cantidad de datos almacenados "activos", mientras que casi nunca se accede a la mayor parte de los datos almacenados. Se puede aprovechar este patrón de utilización del acceso a los datos construyendo sistemas de almacenamiento híbridos que utilizan varias tecnologías diferentes de almacenamiento de datos de manera jerárquica. Por ejemplo, la figura 3 muestra una vista conceptual de una posible realización de sistema de almacenamiento jerárquico, en la que los datos de acceso frecuente se almacenan cerca de la parte superior y los datos de acceso menos frecuente se almacenan cerca de la parte inferior.
En la parte superior del sistema de almacenamiento jerárquico hay una pequeña cantidad de memoria de acceso aleatorio respaldada con batería 320 que puede gestionar muy rápidamente solicitudes de almacenamiento de datos pero es muy costosa y consume energía. La mayor parte de los datos de acceso frecuente de un usuario se pueden almacenar en el área de memoria de acceso aleatorio respaldada con batería 320 que tiene el tiempo de respuesta con la mínima latencia. El siguiente nivel es una capa de memoria de estado sólido no volátil 340, tal como memoria flash. La capa de memoria de estado sólido no volátil 340 puede utilizar menos energía que la memoria de acceso aleatorio respaldada con batería 320, pero tiende a funcionar a una velocidad más lenta. Bajo la capa de memoria de estado sólido no volátil 340 hay una capa de almacenamiento de disco duro magnético 360. La capa de almacenamiento de disco duro magnético 360 se puede utilizar para almacenar cantidades masivas de datos en un medio magnético de almacenamiento de datos, económico, pero el comportamiento de latencia es generalmente más lento que las anteriores dos capas 320 y 340. Finalmente, se puede utilizar una capa de almacenamiento expansible basado en la nube 380 para proporcionar cantidades siempre crecientes de almacenamiento de datos. Sin embargo, dado que es necesario utilizar una red externa para acceder al almacenamiento basado en la nube, la capa de almacenamiento basada en la nube 380 no proporcionará un servicio de acceso rápido a los datos.
El presente documento da a conocer varias técnicas para implementar varios tipos diferentes de sistemas de almacenamiento masivo jerárquico que proporcionan servicios de almacenamiento de datos en varios tipos de entornos diferentes. El sistema de almacenamiento masivo jerárquico combina conjuntamente varias tecnologías de almacenamiento de datos, de manera que aprovecha las fortalezas y debilidades de cada diferente tecnología de almacenamiento de datos. La figura 4 muestra un ejemplo de un sistema de almacenamiento masivo jerárquico 460 para utilizar dentro de un entorno de oficina. El sistema de almacenamiento masivo jerárquico 460 combina conjuntamente almacenamiento de estado sólido, almacenamiento de disco duro e incluso un sistema de almacenamiento de datos basado en la nube 491 para crear un sistema de almacenamiento de datos sinérgico para una red de área de almacenamiento local 450.
El sistema de almacenamiento masivo jerárquico 460 se puede utilizar para proporcionar servicios de almacenamiento masivo de datos a un típico entorno informático en red. Haciendo referencia a la figura 4, un típico entorno informático en red tiene múltiples estaciones de trabajo de usuario (421 a 427) acopladas a una red de área local (LAN, local area network) 430. La LAN 430 tiene asimismo múltiples sistemas de servidor (441, 442 y 443) que proporcionan varios servicios a los usuarios en las estaciones de trabajo (421 a 427). Aplicaciones típicas de sistema de servidor incluyen un servidor de correo electrónico para enviar y recibir mensajes de correo electrónico, un servidor de bases de datos para almacenar datos estructurados específicos y un servidor de archivos para almacenar archivos de usuario generales. Los diversos sistemas de servidor (441, 442 y 443) están acoplados a la aplicación de almacenamiento masivo jerárquico 460 sobre una red de área de almacenamiento 450. La interfaz de red de almacenamiento 461 en la aplicación de almacenamiento masivo jerárquico 460 utiliza protocolos de red de área de almacenamiento estándar para proporcionar servicios de almacenamiento de datos a los sistemas de servidor locales (441, 442 y 443).
El sistema de almacenamiento masivo jerárquico 460 utiliza tecnologías de almacenamiento, tales como memoria de estado sólido (471 y 481) y almacenamiento de disco duro (472 y 482) de manera jerárquica para almacenar datos localmente. En una realización, la memoria de estado sólido (471 y 481) se puede implementar con una tecnología de memoria no volátil, tal como memoria flash. Los sistemas de memoria flash son generalmente más rápidos, utilizan menos energía, producen menos ruido y son más fiables que los sistemas de almacenamiento de unidad de disco duro (HDD, hard disk drive). El almacenamiento HDD (472 y 482) puede proporcionar cantidades muy grandes de almacenamiento local para un precio bajo por bit almacenado. El sistema de almacenamiento masivo jerárquico 460 puede asimismo estar acoplado a un sistema de almacenamiento basado en la nube 491 por medio de una segunda interfaz que utiliza una conexión de internet 465, para aprovechar los beneficios de un servicio de almacenamiento de datos remoto basado en la nube 491.
La utilización de una interfaz de red de área de almacenamiento (SAN) 461 en el sistema de almacenamiento masivo jerárquico 460 permite a los administradores utilizar el sistema de almacenamiento masivo jerárquico 460 como un dispositivo de almacenamiento SAN convencional. Múltiples sistemas de servidor pueden compartir el sistema de almacenamiento masivo jerárquico 460 utilizando la red de área de almacenamiento estándar 450. La utilización de la segunda interfaz 465 acoplada a un proveedor de almacenamiento en la nube 491 permite que el sistema de almacenamiento masivo jerárquico 460 proporcione recursos de almacenamiento adicionales, que se pueden utilizar según se requiera. Tal como se ha expuesto en la sección anterior, las redes de área de almacenamiento permiten a los administradores desvincular la función de almacenamiento de datos respecto de los sistemas de servidor, de tal modo que solamente es necesario mantener un único sistema de almacenamiento de datos unificado. Por lo tanto, todos los sistemas de servidor (441, 442 y 443) pueden estar acoplados a una red de área de almacenamiento 450 que se utiliza para gestionar lecturas y escrituras de almacenamiento de datos en bruto. Un único sistema de almacenamiento masivo jerárquico 460 acoplado a una red de área de almacenamiento 450 puede gestionar operaciones de almacenamiento de datos para toda la red de área de almacenamiento 450. (Cabe señalar que se pueden acoplar asimismo sistemas de almacenamiento masivo jerárquico adicionales o dispositivos de almacenamiento convencionales a una red de área de almacenamiento 450 para una capacidad adicional de almacenamiento.)
En una realización particular de la figura 4, el sistema de almacenamiento masivo jerárquico 460 incluye dos diferentes unidades de controlador: controlador A 470 y controlador B 480. Estas dos diferentes unidades de controlador se pueden utilizar para proporcionar un sistema de almacenamiento reflejado, tolerante a fallos, en el que cada controlador puede tomar el control si falla el otro. Alternativamente, los dos controladores (470 y 480) se pueden utilizar para "equilibrar estáticamente la carga" de los volúmenes de datos, de tal modo que cada uno de los controladores da servicio a la mitad de las solicitudes de almacenamiento de datos cuando ambos controladores están en buen estado, mejorando de ese modo el rendimiento. Cuando algún controlador falla en dicha configuración, el controlador restante en funcionamiento asume el doble de carga de trabajo, ralentizándose en alguna medida pero proporcionando un servicio de almacenamiento continuo para todos los volúmenes de datos.
La unidad de controlador A 470 y la unidad de controlador B 480 pueden tener, cada una, sistemas de almacenamiento local de datos. En la realización de la figura 4, cada controlador tiene almacenamiento de memoria de estado sólido (471 y 481) y almacenamiento basado en disco duro (472 y 482). Los sistemas de almacenamiento local de datos gestionan todas las solicitudes de escritura de datos procedentes de los sistemas de servidor (441, 442 y 443). Los sistemas de almacenamiento local de datos gestionan asimismo operaciones de lectura de datos para todos los datos que están almacenados actualmente en los sistemas de almacenamiento local de datos.
Para complementar los sistemas de almacenamiento local de datos, el sistema de almacenamiento masivo jerárquico 460 puede utilizar asimismo almacenamiento de datos proporcionado por un sistema de almacenamiento de datos basado en la nube 491 disponible en internet 490. En los sistemas de almacenamiento masivo jerárquico que aprovechan el sistema de almacenamiento basado en la nube 491, el sistema de almacenamiento masivo jerárquico 460 intenta mantener todos los datos de acceso frecuente dentro de los sistemas de almacenamiento local de datos, de tal modo que la gran mayoría de las operaciones de lectura se gestionan localmente dentro del sistemas de almacenamiento masivo jerárquico 460. Sin embargo, cuando la cantidad de datos almacenados supere la capacidad de los sistemas de almacenamiento local de datos, el sistema de almacenamiento masivo jerárquico 460 comenzará a almacenar menos datos de acceso frecuente en el sistema de almacenamiento de datos basado en la nube 491. Esto permite que el sistema de almacenamiento masivo jerárquico 460 aproveche un sistema de almacenamiento infinitamente grande que es mantenido por expertos que hacen funcionar el sistema de almacenamiento de datos basado en la nube 491, teniendo al mismo tiempo el rendimiento de almacenamiento local para datos de acceso frecuente (los datos almacenados en el sistema de almacenamiento local de datos).
Tal como se muestra en la figura 4, un sistema de almacenamiento masivo jerárquico 460 que utiliza almacenamiento de datos basado en la nube actúa como un intermediario entre una SAN interna 450 y un proveedor de almacenamiento de datos externo basado en la nube 491. De este modo, el sistema de almacenamiento masivo jerárquico 460 tiene que reconciliar las diferencias significativas entre la interfaz delantera 461 con una SAN 450 y la interfaz trasera 465 con el sistema de almacenamiento de datos basado en la nube 491. Una diferencia significativa es la diferencia de velocidades, dado que una SAN 450 funciona generalmente a velocidades muy rápidas (tal como un gigabit por segundo) y una conexión de internet 465 puede funcionar solamente a diez megabits por segundo.
Para compensar la diferencia de velocidades, el sistema de almacenamiento masivo jerárquico 460 explota la manera en la que se utilizan generalmente los sistemas de almacenamiento de datos. La mayor parte de los sistemas de almacenamiento masivo de datos necesitan solamente gestionar una cantidad relativamente pequeña de datos dinámicos a los que se accede con frecuencia, tal como se explica haciendo referencia a la figura 3. Por ejemplo, un servidor de correo electrónico tiene que almacenar nuevos mensajes de correo electrónico cada día y un servidor de archivos tiene que gestionar un número limitado de archivos a los que los usuarios están accediendo activamente. Sin embargo, la gran mayoría de los datos almacenados en un sistema de almacenamiento masivo son generalmente estáticos y casi nunca se accede a los mismos. Por ejemplo, los servidores de archivos pueden almacenar archivos de documentos antiguos a los que ya no se va acceder con regularidad. De este modo, dado que solamente se utiliza activamente una cantidad relativamente pequeña de datos almacenados en el sistema de almacenamiento masivo de datos, dicha pequeña cantidad de datos activos se pueden almacenar en los sistemas de almacenamiento local de datos (almacenamiento de estado sólido 471 y 481, y HDD local 472 y 482) a los que se puede acceder repetidamente a una velocidad de datos alta y con una baja latencia. Los datos a los que se accede muy poco se pueden almacenar en el proveedor de almacenamiento de datos basado en la nube 491 y recuperar solamente cuando sea necesario. Acceder a datos del proveedor de almacenamiento de datos basado en la nube 491 tendrá a menudo como resultado una mayor latencia; sin embargo, dicha latencia puede ser aceptable en determinadas aplicaciones o patrones de uso. Además, dicha latencia no se encontrará casi nunca dado que en el proveedor de almacenamiento de datos basado en la nube 491 se almacenarán solamente datos muy poco utilizados.
Un concepto central del sistema de almacenamiento masivo jerárquico 460 es la utilización eficiente del almacenamiento de datos local disponible en el sistema de almacenamiento masivo jerárquico 460. En la medida en que el sistema de almacenamiento masivo jerárquico 460 identifica con precisión los datos a los que se accede con mayor frecuencia y mantiene dichos datos de acceso frecuente en el almacenamiento local de datos (471, 481,472 y 482), la gran mayoría de las solicitudes de almacenamiento (tanto operaciones de lectura como operaciones de escritura) recibidas en la interfaz SAN 461 pueden entonces servirse utilizando solamente los sistemas de almacenamiento local de datos (471, 481, 472 y 482). Esto reducirá enormemente la cantidad de tráfico de datos en la interfaz 465 con el almacenamiento de datos basado en la nube 491, ocultando de ese modo la diferencia de velocidades entre las dos interfaces respecto de los usuarios del sistema de almacenamiento masivo jerárquico 460.
Para utilizar de la manera más eficiente el almacenamiento local, el sistema de almacenamiento masivo jerárquico 460 utiliza tanto algoritmos inteligentes de gradación de los datos como técnicas de optimización del espacio de almacenamiento. Los algoritmos de gradación de los datos se utilizan para identificar los datos a los que se accede con mayor frecuencia y mantener dichos datos de acceso frecuente en el sistema de almacenamiento local. Los algoritmos de gradación de los datos pueden utilizar asimismo sistemas inteligentes de almacenamiento en memoria tampón, tal como almacenamiento en memoria caché previo a la lectura, para impedir pérdidas de memoria caché. Por ejemplo, utilizando heurística para identificar datos que es probable se requieran en breve, el sistema de almacenamiento masivo jerárquico 460 puede emitir solicitudes predictivas para datos almacenados actualmente en el almacenamiento de datos basado en la nube 491 antes de recibir una solicitud entrante real para dichos datos. Se pueden utilizar diversas técnicas de optimización del espacio de almacenamiento para almacenar todos los datos posibles en el espacio de almacenamiento local. Las técnicas que se pueden utilizar incluyen la identificación y eliminación de datos duplicados, y la compresión de datos.
En una realización se puede permitir al administrador del sistema de almacenamiento masivo jerárquico 460 asignar y configurar almacenamiento de datos de manera dependiente de la aplicación. Por ejemplo, si una aplicación particular utiliza un determinado conjunto de datos infrecuentemente pero se requiere una respuesta de baja latencia cuando se accede a dichos datos, se puede entonces permitir a un administrador especificar esta limitación para dicha aplicación o para dicho conjunto específico de datos. De este modo, el sistema de almacenamiento masivo jerárquico 460 garantizará que existe una copia local o la traerá proactivamente de la nube y la moverá al almacenamiento local si previamente estaba vinculada al almacenamiento basado en la nube 491. Otros conjuntos de datos se pueden marcar explícitamente como datos de 'archivo', de tal modo que los datos de archivo indicados se despachen rápidamente al proveedor de almacenamiento basado en la nube 491. Esto impide que dichos datos de archivo utilicen valioso espacio de almacenamiento local hasta que el sistema de gradación de datos determina finalmente que no se está accediendo con frecuencia a dichos datos de archivo. En una realización, el sistema de almacenamiento masivo jerárquico puede permitir a un administrador designar un volumen de datos como un volumen 100 % local. El sistema de almacenamiento masivo jerárquico 460 garantizará que dicho volumen 100 % local designado se almacenará en alguna combinación de almacenamiento local.
Arquitectura de sistema de almacenamiento masivo jerárquico
Se pueden utilizar varias arquitecturas diferentes para construir el sistema de almacenamiento masivo jerárquico 460 de la figura 4. La figura 5 muestra un diagrama de bloques conceptual de una arquitectura particular que se puede utilizar para construir un sistema de almacenamiento masivo jerárquico 500. En la parte superior del diagrama de bloques del sistema de almacenamiento masivo jerárquico 500 hay un componente de administración 510 que se utiliza para configurar, controlar y monitorizar un sistema de almacenamiento masivo jerárquico 500. Un administrador puede acceder al componente de administración 510 a través de una interfaz acoplada a una red de área local 505.
Un administrador utiliza el componente de administración 510 para configurar inicialmente el sistema de almacenamiento masivo jerárquico 500. Para la configuración inicial, un administrador especifica qué almacenamiento virtual expone a los anfitriones en la red de área de almacenamiento (SAN) 501. Esto es similar a los sistemas heredados, donde el administrador específica que LUN en un conjunto de almacenamiento expone a los anfitriones. El administrador específica asimismo las direcciones y la información de acceso para el proveedor o proveedores de almacenamiento en la nube 591 que se utilizarán. El administrador puede especificar un límite de almacenamiento, pero esto no es generalmente aconsejable dado que se debería permitir que el sistema de almacenamiento jerárquico 500 crezca según sea necesario.
El administrador puede asimismo especificar limitaciones de ancho de banda del enlace de comunicación 596 al proveedor de almacenamiento de datos en la nube 591 y limitaciones de ancho de banda del proveedor de almacenamiento de datos en la nube específico 591 (la velocidad máxima a la que el proveedor de almacenamiento en la nube gestionará solicitudes de acceso de datos). Las limitaciones de ancho de banda del enlace de comunicación 596 se pueden utilizar para garantizar que el sistema de almacenamiento masivo jerárquico 500 no intenta enviar datos más rápido de como puede gestionar los datos el enlace de comunicación 596. Además, si el enlace de comunicación 596 es compartido por otros usuarios (tal como una conexión de internet compartida con usuarios humanos, servidores de correo y otros usuarios de internet), el sistema de almacenamiento masivo jerárquico 500 se puede configurar para utilizar menos de todo el ancho de banda disponible en el enlace de comunicación 596.
Después de la configuración inicial, un administrador puede utilizar el componente de administración 510 para diversas operaciones diferentes de mantenimiento. Por ejemplo, el componente de administración 510 se puede utilizar para planificar instantáneas periódicas de los volúmenes de datos en el sistema de almacenamiento masivo jerárquico 500 y realizar copias de respaldo de dichos volúmenes de instantáneas en el almacenamiento basado en la nube. Se pueden añadir volúmenes de datos adicionales al sistema de almacenamiento jerárquico 500 o se pueden eliminar volúmenes de datos existentes.
El componente de administración 510 reunirá estadísticas de funcionamiento 511 que se pueden utilizar para medir el rendimiento del sistema de almacenamiento masivo jerárquico 500. Las estadísticas de funcionamiento 511 pueden ser analizadas y utilizadas para variar la configuración del sistema de almacenamiento masivo jerárquico 500 con el fin de mejorar el rendimiento. Cada capa inferior en la pila de solicitudes de almacenamiento de datos 515 puede generar sus propias estadísticas individuales. El componente de administración 510 puede sondear periódicamente las capas inferiores y algunas otras partes del sistema de almacenamiento masivo jerárquico 500 para crear una colección centralizada de todas las estadísticas del sistema de almacenamiento masivo jerárquico.
El componente principal del sistema de almacenamiento masivo jerárquico 500 es una pila de solicitudes de almacenamiento de datos de múltiples capas 515 que gestiona todas las solicitudes de almacenamiento de datos emitidas al sistema de almacenamiento masivo jerárquico 500. Las solicitudes de almacenamiento de datos son recibidas en la parte superior de la pila de solicitudes de almacenamiento de datos 515 y las diversas capas de almacenamiento de datos intentan resolver las solicitudes de datos. Cuando una capa no puede resolver completamente una solicitud, entonces la capa hace llegar la solicitud a una capa inferior, hasta que la solicitud de datos se resuelve finalmente. Los detalles de la pila de gestión de solicitudes de almacenamiento de datos 515 se darán a conocer capa a capa en las secciones posteriores de este documento.
La capa superior de la pila de solicitudes de almacenamiento de datos 515 es una capa de interfaz de red de área de almacenamiento (SAN) 520 que está acoplada por medio de una interfaz delantera 502 a una SAN 501. La capa de interfaz SAN 520 recibe solicitudes de almacenamiento desde sistemas locales, tales como servidores 507 y 508. La interfaz delantera 502 del sistema de almacenamiento masivo jerárquico 500 utilizará generalmente protocolos SAN bien conocidos. Ejemplos de protocolos SAN bien conocidos incluyen el protocolo estándar en la industria de interfaz de sistemas informáticos pequeños de internet (iSCSI, Internet Small Computer System Interface) y el protocolo de canal de fibra (FCP, Fiber Channel Protocol). Estos protocolos SAN permiten que los clientes de almacenamiento lleven a cabo operaciones tales como iniciar, detener, leer, escribir y formatear, sobre unidades de almacenamiento de datos direccionadas por números de unidad lógica (LUN, logical unit numbers).
Las capas superiores (520, 531 y 532) de la pila de gestión de solicitudes de almacenamiento de datos 515 gestionan algunas formalidades en el procesamiento de solicitudes de almacenamiento. Debajo de las capas de formalidades hay un conjunto de capas de almacenamiento de datos jerárquico. Una primera capa de almacenamiento de datos, la capa de almacenamiento lineal 540, está optimizada para gestionar rápidamente solicitudes de datos almacenando localmente datos en un formato relativamente en bruto. Una segunda capa de almacenamiento de datos, la capa de almacenamiento sin copias duplicadas 550, almacena localmente datos de manera más eficiente identificando y eliminando datos duplicados. Una tercera capa de almacenamiento de datos, la capa de almacenamiento transitorio 560, está optimizada para almacenar localmente grandes cantidades de datos en una forma comprimida muy densa. Una cuarta capa de almacenamiento de datos utiliza almacenamiento basado en la nube para almacenar una cantidad ¡limitada de datos almacenando datos externos en un proveedor de almacenamiento de datos basado en la nube 591. Se debe observar que la figura 5 muestra solamente un posible sistema de almacenamiento jerárquico, y que otros sistemas de almacenamiento jerárquico pueden utilizar menos o más capas de almacenamiento de datos. Para describir completamente la pila de gestión de solicitudes de almacenamiento de datos 515 de la figura 5, cada una de las capas en la pila de gestión de solicitudes de almacenamiento se describirá individualmente en mayor detalle.
Interfaz delantera y capas iniciales
En la parte superior de la pila de solicitudes de almacenamiento de datos 515 está la interfaz de red de área de almacenamiento (SAN) 520. En una implementación particular que se considerará en detalle, la interfaz de red de área de almacenamiento 520 implementa el bien conocido protocolo iSCSI, que se utiliza para aceptar comandos SCSI transportados sobre una red TCP/IP. Sin embargo, se puede implementar cualquier otro protocolo de almacenamiento de datos en la parte superior de la pila de gestión de solicitudes de almacenamiento 515.
En una realización iSCSI, la interfaz SAN 520 expone volúmenes iSCSI anfitriones en una SAN 501. La interfaz SAN 520 recibe a continuación solicitudes de almacenamiento de datos iSCSI desde los anfitriones y responde a dichas solicitudes de almacenamiento de datos. La interfaz SAN 520 analiza sintácticamente los comandos iSCSI y determina cómo se deberían gestionar los comandos. Muchas de las solicitudes iSCSI administrativas que no están relacionadas directamente con lectura y escritura de datos pueden ser gestionadas completamente por la capa de interfaz SAN 520. La capa de interfaz SAN 520 pasa solicitudes de almacenamiento de datos bajo la pila de solicitudes de almacenamiento de datos 515 a la siguiente capa para gestionar dichas solicitudes de almacenamiento de datos.
Bajo la capa de interfaz de red de área de almacenamiento 520 hay una capa de abstracción de volúmenes 531. La capa de abstracción de volúmenes 531 gestiona muchas de las formalidades para mantener un seguimiento de los diferentes volúmenes almacenados por el sistema de almacenamiento masivo jerárquico 500. Por ejemplo, la capa de abstracción de volúmenes 531 mantiene un seguimiento de los volúmenes de datos que existen, del tamaño de cada volumen, listas de control de acceso (ACL, access control lists) y otra información administrativa. Por lo tanto, la capa de abstracción de volúmenes 531 gestiona algunas de las tareas de gestión de volúmenes, de manera que las capas inferiores de la pila de gestión de solicitudes de almacenamiento 515 se pueden concentrar en el propio almacenamiento de datos.
Capa de instantáneas
Debajo de la capa de abstracción de volúmenes 531 hay una capa de instantáneas 532. La capa de instantáneas 532 se utiliza para tomar "instantáneas" de volúmenes de datos especificados, en el sistema de almacenamiento masivo jerárquico 500, tras recibir una solicitud de instantánea. En la presente invención, una instantánea es el estado de un volumen de datos en un instante de tiempo particular. Sin embargo, es impráctico (cuando no imposible) copiar instantáneamente un volumen de datos entero. En lugar de esto, la capa de instantáneas 532 crea un nuevo volumen que inicialmente consiste solamente en un mapa de tiempo para el volumen de instantáneas, que especifica cuándo se ha tomado la instantánea, y un puntero al volumen padre. Si no hay escrituras en el volumen padre, entonces los datos actuales de dicho volumen padre se pueden utilizar como los datos para el volumen de instantáneas. Sin embargo, cuando se recibe una nueva operación de escritura que cambia datos en el volumen padre al que hace referencia el volumen de instantáneas, hay que extraer del volumen padre los datos existentes antiguos y colocarlos en el volumen de instantáneas antes de que se produzca la escritura, para guardar los datos que existían cuando se creó el volumen de instantáneas. Se puede encontrar información detallada sobre la capa de instantáneas 532 en la solicitud de patente de EE.UU. titulada "System and Method for Efficiently Creating Off-site Data volume Back-ups", presentada el 1 de abril de 2010 con número de serie 12/798,321, que se incorpora como referencia al presente documento.
Capa de almacenamiento lineal de alta velocidad
Después de realizar cualesquiera operaciones necesarias de instantánea en la capa de instantáneas 532, se pasa a continuación una solicitud de almacenamiento de datos a la capa de almacenamiento lineal 540 que es el primer nivel de datos de almacenamiento en el sistema de almacenamiento masivo jerárquico 500. La capa de almacenamiento lineal 540 es una capa de almacenamiento de datos de alto rendimiento diseñada para gestionar datos "calientes". Los datos calientes se definen como datos que se leen y/o escriben frecuentemente.
La capa de almacenamiento lineal 540 recibirá generalmente solicitudes de almacenamiento de datos direccionadas con términos semánticos tradicionales de almacenamiento de datos, tales como volúmenes lógicos, direcciones de bloque lógico (LBA, logical block addresses) y longitudes de transferencia de bloque (BTL, block transfer lengths). Como se ha explicado anteriormente, el extremo delantero del sistema de almacenamiento masivo jerárquico 500 puede implementar muchos posibles protocolos diferentes de almacenamiento de datos que utilizan diferentes sistemas de direccionamiento de almacenamiento de datos. Sin embargo, siempre que el sistema de almacenamiento masivo jerárquico 500 responda adecuadamente a todas las solicitudes de almacenamiento de datos recibidas, el sistema de almacenamiento masivo jerárquico 500 puede utilizar libremente cualquier tipo de sistema de direccionamiento internamente.
En una realización, el sistema de almacenamiento masivo jerárquico 500 utiliza un sistema de direccionamiento lineal plano para cada volumen de datos, donde cada volumen lógico se divide en "porciones" de tamaño fijo, que son un múltiplo par de los bloques lógicos (los bloques lógicos SCSI tienen habitualmente 512 octetos de longitud) utilizados por la mayor parte de los sistemas de almacenamiento basados en disco. Se puede utilizar un sistema de traducción muy simple para traducir solicitudes de datos realizadas en términos de intervalos de dirección de bloque lógico (LBA) en un disco (o en cualquier otro sistema de direccionamiento de almacenamiento de datos) al sistema de direccionamiento lineal basado en porciones utilizando dentro de la capa de almacenamiento lineal 540. En una realización específica, cada porción de tamaño fijo tiene 256 kilobytes de longitud (que puede contener 512 bloques lógicos que tienen 512 octetos de longitud cada uno). Sin embargo, esto es tan sólo una opción particular de diseño, y se pueden utilizar otros tamaños.
La capa de almacenamiento lineal 540 almacena datos en una área de almacenamiento lineal asignada 547 de almacenamiento local de datos. En una realización, se utiliza memoria de estado sólido, tal como memoria flash, para almacenar todos los datos para la capa de almacenamiento lineal 540. La memoria flash puede gestionar rápidamente solicitudes de almacenamiento y no es volátil, de tal modo que los datos permanecerán almacenados incluso si existe un corte de alimentación.
La capa de almacenamiento lineal 540 mantiene un mapa de almacenamiento lineal 541 para realizar un seguimiento de dónde están almacenados todos los datos. Específicamente, para cada volumen de datos almacenado en el sistema de almacenamiento masivo jerárquico 500, el mapa de almacenamiento lineal 541 específica dónde reside cada porción de datos (y, por lo tanto, cómo se pueden obtener los datos). Para porciones de datos que están actualmente almacenadas dentro de la capa de almacenamiento lineal 540, el mapa de almacenamiento lineal 541 puede especificar una dirección específica de memoria física en el área de almacenamiento de datos lineal 547. Para todos los datos que no están almacenados actualmente dentro de la capa de almacenamiento lineal 540, el mapa de almacenamiento lineal 541 puede especificar un conjunto de huellas digitales de datos utilizadas para identificar de manera única segmentos de datos almacenados dentro de niveles de almacenamiento de datos inferiores de la pila de solicitudes de almacenamiento de datos 515. En una realización particular, se utiliza una huella digital SHA-256 de treinta y dos octetos de longitud para identificar de manera única segmentos de datos almacenados en las capas inferiores de almacenamiento de datos.
La figura 6 muestra conceptualmente cómo las tres primeras capas de almacenamiento de datos distintas utilizan el almacenamiento local de datos. Se debe observar que la figura 6 es solamente conceptual y que muchos detalles se omiten por claridad. La capa de almacenamiento lineal 640 utiliza un mapa de almacenamiento lineal 641 que mapea cada porción de datos a una localización en el almacenamiento lineal 647 o a un conjunto de identificadores de huellas digitales que representan la porción de datos. Los identificadores de huellas digitales se utilizan para localizar los datos solicitados en capas de datos inferiores de la pila de gestión de solicitudes de almacenamiento. En el ejemplo de la figura 6, la porción 0 se almacena en el área de almacenamiento lineal 647 tal como se indica por un puntero. La porción 1 se almacena en una o varias capas inferiores de almacenamiento de datos dado que el mapa de almacenamiento lineal 641 especifica un conjunto de identificadores de huellas digitales. Cada uno de los identificadores de huellas digitales especifica de manera única un segmento de datos de la porción de datos. El conjunto de segmentos de datos es igual al tamaño de una porción de datos (que es de 256K en una realización particular).
El mapa de almacenamiento lineal 641 se puede implementar con una lista enlazada ordenada que enlaza conjuntamente entradas que contienen, cada una, un puntero a una porción de datos en el área de almacenamiento lineal 647 o un conjunto de identificadores de huellas digitales para segmentos de datos almacenados en capas inferiores de almacenamiento de datos. Para los datos almacenados en las capas inferiores de almacenamiento de datos, las entradas de la lista enlazada contendrán una serie de entradas con huellas digitales de datos, donde el tamaño total de los segmentos de datos a los que hacen referencia los identificadores de huellas digitales es igual al tamaño de una porción. Para mejorar el rendimiento, la lista enlazada se puede complementar con estructuras de datos adicionales utilizadas para mejorar la búsqueda de la lista enlazada. Por ejemplo, un árbol rojo-negro, una tabla de función resumen u otra estructura de datos similar que contenga punteros a los nodos de la lista enlazada, se puede utilizar para mejorar la velocidad de búsqueda de la lista enlazada.
Se dará a conocer una descripción de cómo la capa de almacenamiento lineal 640 gestiona solicitudes de lectura, haciendo referencia a un diagrama de flujo presentado en la figura 7 y al diagrama conceptual de la figura 6. Haciendo referencia a la figura 7, una solicitud de lectura recibida de un cliente anfitrión es procesada primero por la capa de interfaz SAN, la capa de abstracción de volúmenes, la capa de instantáneas y cualquier otra capa inicial en la etapa 705. La solicitud de lectura se pasa a continuación a la capa de almacenamiento lineal 640 para obtener los datos.
La capa de almacenamiento lineal 640 examina primero el mapa de almacenamiento lineal 641 en busca de los datos solicitados, en las etapas 710 y 715, para determinar cómo responder a la solicitud de lectura. Si los datos solicitados están disponibles en el almacenamiento lineal 647, entonces la capa de almacenamiento lineal 640 lee simplemente los datos del área de almacenamiento lineal 647 y responde a la solicitud de lectura, en la etapa 720. El sistema puede actualizar a continuación algunas estadísticas (tal como estadísticas utilizadas para determinar si los datos son calientes, templados o fríos) en la etapa 780, y a continuación ha terminado con la gestión de la solicitud de lectura.
Si no se han encontrado los datos solicitados en el almacenamiento lineal 647 en la etapa 715, entonces la capa de almacenamiento lineal 640 solicita los datos necesarios a las capas inferiores de la pila de solicitudes de almacenamiento de datos en la etapa 730. La solicitud se realiza solicitando las huellas digitales de los segmentos de datos requeridos. Se debe observar que una solicitud de lectura puede necesitar solamente unos pocos segmentos de datos de datos si la solicitud de lectura solicita solamente una cantidad pequeña de datos dentro de una porción particular de datos. En esta realización particular, la siguiente capa inferior es la capa de almacenamiento sin copias duplicadas 650 en la figura 6. Este documento puede utilizar el término 'dedup' cuando se refiere a aspectos de la capa sin copias duplicadas.
En la etapa 735, la capa de almacenamiento sin copias duplicadas 650 examina el mapa de almacenamiento sin copias duplicadas 651 para determinar si todos los segmentos de datos solicitados están en el área de almacenamiento sin copias duplicadas 657. Si la capa de almacenamiento sin copias duplicadas 650 tiene todos los segmentos de datos requeridos, entonces la capa de almacenamiento sin copias duplicadas 650 puede responder a los datos solicitados en la etapa 750. Si la capa de almacenamiento sin copias duplicadas 650 no tiene todos los segmentos de datos solicitados, entonces la capa de almacenamiento sin copias duplicadas 650 solicitará los segmentos de datos requeridos a las capas inferiores de almacenamiento de datos, en la etapa 740. En esta realización particular, la solicitud se realizará a la siguiente capa inferior de la pila de gestión de solicitudes de almacenamiento, la capa de almacenamiento transitorio 660.
En la etapa 743, la capa de almacenamiento transitorio 660 gestiona la solicitud de datos. De este modo, la capa de almacenamiento transitorio 660 examina el mapa de almacenamiento transitorio 661. Si la capa de almacenamiento transitorio 660 tiene los datos solicitados, entonces devuelve dichos datos. Si la capa de almacenamiento transitorio 660 no tiene los datos solicitados, entonces la capa de almacenamiento transitorio 660 puede solicitar y recibir los datos faltantes de las capas de datos inferiores. El sistema procede de esta manera por capas, hasta que en la etapa 745 la capa de almacenamiento sin copias duplicadas 650 recibe de las capas inferiores todos los datos solicitados y pone los datos solicitados en el área de almacenamiento sin copias duplicadas 657. La capa de almacenamiento sin copias duplicadas 650 puede responder a continuación a la capa de almacenamiento lineal 640 con los datos solicitados, en la etapa 750.
Tras la recepción de los segmentos de datos solicitados desde la capa de almacenamiento sin copias duplicadas 650, la capa de almacenamiento lineal 640 montará los datos solicitados a partir de los segmentos de datos recibidos, en la etapa 760. Finalmente, la capa de almacenamiento lineal 640 puede a continuación responder a la solicitud de lectura con los datos solicitados, en la etapa 770. Los contadores de estadísticas pueden a continuación ser actualizados, en la etapa 780.
Se puede ver que dar servicio a la solicitud de lectura en la etapa 720 será más rápido que dar servicio a la solicitud de lectura cuando sea necesario extraer datos de las capas inferiores de almacenamiento de datos. Además, cuanto más baja sea la capa de datos a la que hay que acceder, más tiempo será necesario para gestionar la solicitud de lectura.
La solicitudes de escritura se gestionan de manera similar. Todas las operaciones de escritura en el sistema de almacenamiento masivo jerárquico se escriben inicialmente en el almacenamiento lineal 647 asociado a la capa de almacenamiento lineal 640. La gestión de la solicitudes de escritura se dará a conocer haciendo referencia al diagrama de flujo de la figura 8 y al diagrama conceptual de la figura 6. El ejemplo de la figura 8 describe la escritura en una sola porción de datos. No obstante, las mismas etapas se pueden llevar a cabo múltiples veces para gestionar escrituras en múltiples porciones de datos.
Haciendo referencia a la figura 8, una solicitud de escritura recibida de un cliente anfitrión es procesada primero por las capas de formalidades iniciales, tales como la capa de interfaz SAN, la capa de abstracción de volúmenes y la capa de instantáneas, en la etapa 805. La solicitud de escritura se pasa a continuación a la capa de almacenamiento lineal 640, donde la capa de almacenamiento lineal 640 examina primero el mapa de almacenamiento lineal 641 en las etapas 810 y 815 para determinar cómo gestionar la solicitud de escritura. Si la escritura es detectada en una porción de datos que está ya disponible en el área de almacenamiento lineal 647, entonces la solicitud de escritura se gestiona avanzando a la etapa 850 y escribiendo los datos nuevos en la porción de datos apropiada dentro del área de almacenamiento lineal 647, en la etapa 850. El sistema puede a continuación actualizar asimismo algunas estadísticas, en la etapa 860. En este momento, la solicitud de escritura ha sido gestionada completamente utilizando solamente la capa de almacenamiento lineal 640.
Si la porción de datos a la que está dirigida la solicitud de escritura no se ha encontrado en el área de almacenamiento lineal 647 en la etapa 815, entonces la capa de almacenamiento lineal 640 traerá primero generalmente los datos para la porción de datos objetivo a la capa de almacenamiento lineal 640 para sobrescribir los datos existentes. La razón por la que los datos se traen a la capa de almacenamiento lineal 640 antes de que se sobrescriban es que si se produce un fallo durante una operación de escritura, el fallo dejará por lo menos los datos antiguos que han sido parcialmente sobrescritos por datos nuevos. Esta es la manera en que funciona un sistema tradicional de almacenamiento basado en disco, de tal modo que los programas de aplicación están ya preparados para gestionar datos corruptos debido a dicho fallo producido durante una operación de escritura.
Para traer los datos al área de almacenamiento lineal 647, la capa de almacenamiento lineal 640 puede tener primero que asignar una nueva porción de memoria en el área de almacenamiento lineal 647, en la etapa 820. (Generalmente, el sistema mantendrá siempre unas pocas porciones de memoria disponibles para gestionar nuevas opciones de escritura entrantes.) Asignar una nueva porción de memoria se puede llevar a cabo vertiendo datos desde una porción existente en el área de almacenamiento lineal 647 a una capa inferior de almacenamiento de datos. Verter una porción de datos a una capa inferior de almacenamiento de datos se describirá en una sección posterior de este documento.
Con una porción de memoria disponible en el área de almacenamiento de datos lineal 647, la capa de almacenamiento lineal 640 solicita entonces todos los segmentos de datos para dicha porción de datos a las capas inferiores de almacenamiento de datos de la pila de solicitudes de almacenamiento de datos, en la etapa 830. La solicitud para los segmentos de datos se realiza proporcionando los identificadores de huellas digitales de los segmentos de datos necesarios. Se debe observar que todos los segmentos de datos para la porción de datos que se sobrescribe son necesarios, dado que toda la porción de datos se representará a continuación en el área de almacenamiento lineal 647 como una única porción de datos. Si la capa de almacenamiento sin copias duplicadas 650 no tiene todos los segmentos de datos necesarios para la porción en el almacenamiento sin copias duplicadas 657, entonces la capa de almacenamiento sin copias duplicadas 650 solicitará los segmentos de datos faltantes a la siguiente capa inferior de almacenamiento de datos de la pila de solicitudes de almacenamiento de datos (la capa transitoria 660 en esta realización).
Después de recibir los segmentos de datos solicitados desde las capas inferiores de almacenamiento de datos, la capa de almacenamiento lineal 640 ensambla a continuación los segmentos de datos en una memoria tampón, en la etapa 840. La porción de datos completamente montada se copia a continuación en la porción de memoria libre en el área de almacenamiento lineal 647, de tal modo que la capa de almacenamiento lineal 640 es ahora totalmente responsable de dicha porción de datos particular. De este modo, la capa de almacenamiento lineal 640 actualiza el mapa de almacenamiento lineal 641 para reflejar que la capa de almacenamiento lineal 640 tiene a continuación dicha porción particular de memoria representada dentro del área de almacenamiento lineal 647.
Se debe observar que generalmente se permitirá que los segmentos de datos recuperados permanezcan asimismo en el área de almacenamiento sin copias duplicadas 657. La razón principal para que estos segmentos de datos continúen estando en el área de almacenamiento sin copias duplicadas 657 es que otras áreas del volumen de datos (o de otros volúmenes de datos) se pueden referir a los mismos segmentos de datos recuperados. Si ninguna porción de datos hace referencia a un segmento de datos, entonces un mecanismo de recogida de basura puede finalmente desechar dicho segmentos de datos sin referencias.
Se puede permitir que los segmentos de datos sin referencias permanezcan en el área de almacenamiento sin copias duplicadas 657 durante algún tiempo. Existe de hecho un beneficio en mantener segmentos de datos no utilizados en el área de almacenamiento sin copias duplicadas 657 durante un periodo de tiempo. Específicamente, una porción de datos que se ha traído desde la capa de almacenamiento sin copias duplicadas 650 (o desde capas inferiores) a la capa de almacenamiento lineal 640 puede rápidamente verterse de nuevo a la capa de almacenamiento sin copias duplicadas 650. Cuando esto ocurre, el segmento de datos preexistente en el área de almacenamiento sin copias duplicadas 657 se puede utilizar de nuevo si el segmento de datos sigue representando una parte de la porción de datos.
Haciendo referencia de nuevo a la figura 8, después de que la porción de datos se ha movido completamente de nuevo al área de almacenamiento lineal 647 y se ha ensamblado en la etapa 840, la capa de almacenamiento lineal 640 puede a continuación sobrescribir la porción de datos, en la etapa 850. En el caso improbable de un fallo durante la escritura, la porción de datos contendrá una mezcla de datos nuevos sobrescritos en datos antiguos. Tal como se ha explicado anteriormente, esta es una situación que los programas de aplicación existentes están ya preparados para tratar. Finalmente, en la etapa 860 el sistema puede actualizar algunas estadísticas. Por ejemplo, se puede aumentar un contador asociado con la porción de datos para indicar que se ha accedido recientemente a la porción de datos. Este valor de contador puede ser utilizado por el algoritmo de gradación de los datos para determinar si la porción de datos se debería mantener en la capa de almacenamiento lineal.
En la mayor parte de las circunstancias, el sistema de almacenamiento masivo jerárquico verterá datos a la capa inferior de almacenamiento de datos de la pila de solicitudes de almacenamiento solamente cuando una capa de almacenamiento particular tenga que desalojar datos antiguos para hacer sitio para datos nuevos. Por ejemplo, la capa de almacenamiento lineal 640 puede desalojar una porción de datos para hacer sitio para datos nuevos en el área de almacenamiento lineal 647. La política de desalojo puede utilizar políticas de desalojo similares a estrategias comunes de sustitución de memoria caché. Por ejemplo, el sistema puede utilizar las políticas de sustitución de memoria caché bien conocidas de utilizado menos recientemente (LRU, least-recently used), asignado menos recientemente (LRA, least-recently allocated) o utilizado menos frecuentemente (LFU, least-frequently used) para determinar cuándo se puede desalojar una porción de datos de la capa de almacenamiento lineal 640. Una sección posterior de este documento describirá detalles adicionales sobre el desalojo de datos.
Capa sin copias duplicadas eficiente en memoria
Haciendo referencia de nuevo a la figura 5, cuando la capa de almacenamiento lineal 540 determina que una porción de datos particular no está siendo accedida con frecuencia, la capa de almacenamiento lineal 540 vierte entonces dicha porción de datos a capas inferiores de almacenamiento de datos para un almacenamiento más eficiente de la porción de datos. En una realización, la capa de almacenamiento lineal 540 envía la porción de datos a la capa de almacenamiento sin copias duplicadas 550 para almacenamiento en el área de almacenamiento sin copias duplicadas 557. La capa de almacenamiento sin copias duplicadas 550 actúa como un repositorio para datos "templados" a los que no se accede con tanta frecuencia como a los datos "calientes" en la capa de almacenamiento lineal 540 pero a los que no obstante se accede con regularidad y habitualmente se leen con mayor frecuencia de aquella con la que se escriben. Tal como el nombre implica, la capa de almacenamiento sin copias duplicadas 550 intenta eliminar datos duplicados de los datos almacenados, de tal modo que la capa de almacenamiento sin copias duplicadas 550 almacena datos más eficientemente que la capa de almacenamiento lineal 540.
En la capa de almacenamiento sin copias duplicadas 550 (y en todas las capas inferiores de almacenamiento de datos de esta realización) los datos se almacenan como segmentos de datos. Cada segmento de datos se identifica de manera única con una huella digital de datos (tal como una huella digital SHA-256). La capa de almacenamiento sin copias duplicadas 550 puede utilizar un mapa de almacenamiento sin copias duplicadas 651 para mantener un seguimiento de cada segmento de datos que está almacenado en el área de almacenamiento sin copias duplicadas 557 del sistema de almacenamiento local de datos. La figura 6 muestra un diagrama conceptual del mapa de almacenamiento sin copias duplicadas 651 y del área de almacenamiento sin copias duplicadas 657.
Tal como se muestra en la figura 6, el mapa de almacenamiento sin copias duplicadas 651 se puede implementar como una tabla que lista, para cada segmento de datos, la huella digital de datos y la localización de almacenamiento de cada segmento de datos dentro del área de almacenamiento sin copias duplicadas 657. En la práctica, el mapa de almacenamiento sin copias duplicadas 651 se puede implementar como una tabla de función resumen (por ejemplo u otra estructura de datos similar) para optimizar el rendimiento de búsqueda. Si un segmento de datos solicitados no está almacenado en el área de almacenamiento sin copias duplicadas 657, entonces se puede presumir que dicho segmento de datos está almacenado en capas inferiores de almacenamiento de datos.
Cuando el área de almacenamiento lineal 647 está llena, la capa de almacenamiento lineal 640 tiene que seleccionar una o varias porciones de datos lineales para vertido. En una realización, la capa de almacenamiento lineal 640 utiliza la política de "asignado menos recientemente" (LRA) para determinar cuándo una porción de datos particular se deberá verter a una capa inferior de almacenamiento de datos. El vertido de porciones de datos se puede llevar a cabo mediante un proceso de vertido en segundo plano, que intenta mantener el área de almacenamiento lineal 647 llena aproximadamente al 85 %, en una realización particular. Esto permite que se almacene una gran cantidad de datos pero mantiene la capa de almacenamiento lineal 640 preparada para aceptar una nueva ráfaga de escrituras de datos.
La figura 9 muestra un diagrama de flujo que describe cómo se puede verter un segmento de datos desde la capa de almacenamiento lineal 640 a la capa de almacenamiento sin copias duplicadas 650. En la etapa 920, la capa de almacenamiento lineal 640 divide la porción de datos en un conjunto de segmentos de datos individuales, en la etapa 920. Se pueden utilizar muchas técnicas diferentes para segmentar una porción de datos (tal como se utiliza en la capa de almacenamiento lineal) en un conjunto de segmentos de datos (tal como se utilizan en las capas inferiores de almacenamiento de datos). El objetivo es segmentar cada porción de datos en segmentos de datos individuales, de manera que se tenga como resultado una alta probabilidad de identificar segmentos de datos duplicados. En una realización particular, cada porción de datos es segmentada utilizando huellas digitales de Rabin. Una huella digital de Rabin es un polinomio progresivo que se calcula sobre una ventana definida. Es progresivo dado que se pueden calcular huellas digitales de Rabin sucesivas soltando un octeto desde un extremo de la ventana definida y añadiendo otro octeto al otro extremo de la ventana definida. Esto permite que una huella digital de Rabin realice un barrido a través de una porción de datos, dividiéndola en porciones de datos.
La figura 10 muestra conceptualmente cómo una ventana calculadora de huellas digitales de Rabin 1050 puede realizar un barrido a través de la porción de datos 1010 calculando progresivamente huellas digitales de Rabin. El sistema de huellas digitales de Rabin se puede utilizar para realizar un barrido a través de la porción de datos 1010 y soltar periódicamente anclas para definir segmentos de datos. Se puede soltar un ancla cuando la huella digital de Rabin es igual a algún valor arbitrario. En una realización particular, el sistema crea segmentos de datos que comienzan en una primera ancla definida por el comienzo de la porción de datos o por el ancla anterior, de por lo menos 8K octetos de longitud, y finaliza cuando se genera el valor de huella digital de Rabin arbitraria especificada o cuando se alcanza límite de 64K (lo que ocurra primero). La implementación creará segmentos de datos que tienen todos entre 8K y 64K de longitud. Si el valor arbitrario se selecciona como un valor con 16 ceros en los bits menos significativos de la huella digital de Rabin, el promedio de los segmentos de datos estará en torno a 16K de tamaño.
Haciendo referencia de nuevo a la figura 9, en la etapa 930 el sistema puede tener que asignar espacio en el área de almacenamiento sin copias duplicadas 657 si no hay espacio disponible. Esto se puede realizar seleccionando la porción de espacio menos recientemente asignada en el área de almacenamiento sin copias duplicadas 657 y vertiendo los segmentos de datos en dicha área a una capa de datos inferior. Se debe observar que, igual que la capa de almacenamiento lineal 640, la capa de almacenamiento sin copias duplicadas 650 puede tener asimismo una ejecución de proceso en segundo plano que intenta siempre mantener el área de almacenamiento sin copias duplicadas 657 llena aproximadamente al 85 %, de tal modo que la capa de almacenamiento sin copias duplicadas 650 almacena una gran cantidad de datos pero puede siempre seguir aceptando datos nuevos.
Después de dividir la porción de datos en segmentos de datos y garantizar que existe espacio en la capa de almacenamiento sin copias duplicadas 650, la capa de almacenamiento lineal 640 comienza entonces a verter segmentos de datos individuales desde la porción de datos. En la etapa 940, la capa de almacenamiento lineal 640 calcula primero una huella digital de datos para un segmento de datos. Esta huella digital es una huella digital de identificador estadísticamente única, tal como una huella digital SHA-256. La capa de almacenamiento lineal 640 proporciona a continuación el segmento de datos y la huella digital para el segmento de datos, a la capa de almacenamiento sin copias duplicadas 650, en la etapa 950. (Los datos se pueden proporcionar simplemente pasando un puntero al segmento de datos.)
A continuación, en la etapa 970, la capa de almacenamiento sin copias duplicadas 650 examina el identificador de huella digital que recibe, y busca el mapa de almacenamiento sin copias duplicadas 651 para comprobar si hay ya un segmento de datos existente idéntico, ya almacenado en el área de almacenamiento sin copias duplicadas 657. Con identificadores de huellas digitales suficientemente fuertes que tengan una probabilidad extremadamente baja de solapamiento, simplemente comparar los identificadores de huellas digitales puede ser suficiente para identificar datos duplicados. En un sistema alternativo, la eliminación de copias duplicadas se puede llevar a cabo en dos etapas. Una primera etapa puede utilizar procedimientos probabilísticos para localizar potenciales candidatos de duplicación. Después de identificar candidatos para eliminación de copias duplicadas, algoritmos exhaustivos verifican los datos duplicados y posiblemente ajustan los límites de los segmentos de datos para obtener más segmentos de datos duplicados.
Si la capa de almacenamiento sin copias duplicadas 650 identifica datos redundantes, la capa de almacenamiento sin copias duplicadas 650 puede desechar los datos en la etapa 980. En realizaciones en las que el sistema mantiene un contador de referencias para mantener un seguimiento de cuántas porciones de datos diferentes hacen referencia a un segmento de datos particular, el sistema puede incrementar dicho contador de referencias. Cuando un segmento de datos recibido no está todavía representado en la capa de almacenamiento sin copias duplicadas 650 (no se ha encontrado la misma huella digital en el mapa de almacenamiento sin copias duplicadas 651, en la etapa 975), entonces la capa de almacenamiento sin copias duplicadas 650 añade dicho segmento de datos al mapa de almacenamiento sin copias duplicadas 651, en la etapa 990. Específicamente, la capa de almacenamiento sin copias duplicadas 650 almacena el propio segmento de datos en el área de almacenamiento sin copias duplicadas 657 y crea una nueva entrada en el mapa de almacenamiento sin copias duplicadas 651 (que puede ser una tabla de función resumen) que incluye el identificador de huella digital de datos y un puntero que apunta al segmento de datos refiere añadido.
En la etapa 995, la capa de almacenamiento lineal 640 determina si este era el último segmento de datos de la porción de datos a verter. Sino, la capa de almacenamiento lineal de 640 vuelve a la etapa 940 para verter otro segmento de datos. Si este era el segmento de datos final de la porción de datos, entonces la capa de almacenamiento lineal 640 puede actualizar a continuación el mapa de almacenamiento lineal 641 eliminando el puntero a la porción de datos en el área de almacenamiento lineal 647 y añadiendo entradas de identificador de huella digital de datos para todos los segmentos de datos que constituyen la porción de datos en el mapa de almacenamiento lineal 641. Por lo tanto, cuando se recibe una subsiguiente solicitud de memoria que se refiere a dicha porción de memoria particular, el sistema tendrá que acceder a segmentos de datos que están ahora almacenados en el área de almacenamiento sin copias duplicadas 657 (o en capas inferiores de almacenamiento de datos) utilizando los identificadores de huellas digitales.
Al eliminar datos duplicados en las etapas 975 y 980, la capa de almacenamiento sin copias duplicadas 650 aumenta sensiblemente la eficiencia de almacenamiento. Esto permite almacenar muchos más volúmenes lógicos de datos en las capas de almacenamiento local bajo la capa de almacenamiento lineal 540 que almacena solamente datos en forma no procesada en bruto. Sin embargo, esta mayor eficiencia de almacenamiento de datos tiene un costo. La capa de almacenamiento lineal 540 tiene que segmentar cada porción de datos y calcular identificadores de huellas digitales para cada segmento de datos. La capa de almacenamiento sin copias duplicadas 550 tiene que gestionar la identificación y eliminación de segmentos de datos duplicados. Además, verter datos a la capa de almacenamiento sin copias duplicadas 550 involucra significativas actualizaciones de metadatos para mantener el mapa de almacenamiento de datos sin copias duplicadas 651. Sin embargo, dado que la energía de procesamiento es ahora muy barata y el ancho de banda de la capa de almacenamiento local es mucho mayor que el ancho de banda del almacenamiento de datos en la nube, este es un compromiso interesante.
Otro coste para la eficiencia mejorada de la memoria es que cuando se recibe una solicitud de lectura para una porción de datos en la capa de almacenamiento sin copias duplicadas 650, dicha solicitud de lectura tiene entonces que satisfacerse con datos desensamblados procedentes del área de almacenamiento sin copias duplicadas 657. De este modo, la capa de almacenamiento lineal 640 tiene que recuperar cada segmento de datos requerido de la capa de almacenamiento sin copias duplicadas 650 (o desde capas inferiores de almacenamiento de datos) y a continuación volver a ensamblar los segmentos de datos para obtener la porción de datos solicitados. Esto significa que el tiempo de latencia para solicitudes de lectura que son servidas por la capa de almacenamiento sin copias duplicadas 650 será mayor que el tiempo de latencia para solicitudes de lectura que son servidas por la capa de almacenamiento lineal 640. Sin embargo, esta diferencia de latencia es relativamente pequeña y merece la pena el compromiso dado que la eliminación de datos duplicados permite que se almacenen muchos más datos dentro del área de almacenamiento sin copias duplicadas de alta velocidad 657. Almacenar más datos en el área de almacenamiento sin copias duplicadas de alta velocidad 657 significará menos accesos a las capas de almacenamiento de datos inferiores (más lentas) que almacenan datos en el disco duro o con el proveedor de almacenamiento de datos en la nube externo que tendrá un tiempo de latencia mucho mayor.
Haciendo referencia de nuevo a la figura 5, la capa de almacenamiento sin copias duplicadas 550 actúa como un nivel local de almacenamiento de datos relativamente rápido. Los datos "templados" en la capa de almacenamiento sin copias duplicadas 550 no reciben acceso con tanta frecuencia como los datos en la capa de almacenamiento lineal 540, pero los datos en la capa de almacenamiento sin copias duplicadas 550 siguen recibiendo acceso de manera bastante regular. Aunque la capa de almacenamiento sin copias duplicadas 550 almacena datos de manera más eficiente, la capa de almacenamiento sin copias duplicadas 550 se quedará finalmente sin espacio de almacenamiento. Cuando la capa de almacenamiento sin copias duplicadas 550 se quede sin espacio de almacenamiento, la capa de almacenamiento sin copias duplicadas 550 tiene que comenzar a desalojar segmentos de datos existentes para hacer sitio para nuevos segmentos de datos. La capa de almacenamiento sin copias duplicadas 550 verterá más abajo en la pila de gestión de solicitudes de almacenamiento 515 los segmentos de datos desalojados.
Se debe observar que las políticas de desalojo de datos utilizadas por la capa de almacenamiento sin copias duplicadas 550 pueden ser iguales, similares o diferentes de las políticas de desalojo de datos utilizadas por la capa de almacenamiento lineal 540. Haciendo referencia a la figura 6, algunas implementaciones de la capa de almacenamiento sin copias duplicadas 650 pueden mantener un valor de 'contador de referencias' en el mapa de almacenamiento de datos sin copias duplicadas 651, que mantiene un contador del número de veces que se hace referencia a cada segmento de datos mediante una porción de datos. En realizaciones que implementan dicho contador de referencias, el contador de referencias puede ser utilizado por el algoritmo de desalojo de datos, de tal modo que es menos probable que se desalojen de la capa de almacenamiento sin copias duplicadas 650 los segmentos de datos a los que se hace referencia muchas veces.
Además de verter datos para conseguir más espacio de almacenamiento disponible en el área de almacenamiento sin copias duplicadas 557, la capa de almacenamiento sin copias duplicadas 550 puede verter proactivamente segmentos de datos a las capas inferiores de almacenamiento de datos antes de que sea necesario hacerlo. En particular, puede ser muy ventajoso verter datos de manera proactiva fuera del proveedor de almacenamiento en la nube 591 antes de que se solicite. Esto permite utilizar más eficientemente el ancho de banda del enlace de comunicación con el proveedor de almacenamiento de datos en la nube 591, dado que se pueden enviar los segmentos de datos cuando hay ancho de banda inactivo. Sin embargo, los segmentos de datos pueden asimismo permanecer localmente dentro del sistema de almacenamiento masivo jerárquico 500, de tal modo que las solicitudes de lectura para dichos segmentos de datos se pueden atender rápidamente.
Capa de almacenamiento transitorio
Haciendo referencia a la figura 5, las solicitudes de lectura para segmentos de datos que no pueden ser atendidas completamente por las dos capas de almacenamiento de datos anteriores se pasan a la capa de almacenamiento transitorio 560. La capa de almacenamiento transitorio 560 se puede utilizar para almacenar datos "templados" a los que se accede de manera relativamente infrecuente. La capa de almacenamiento transitorio 560 puede almacenar datos en unidades de disco duro que pueden ofrecer cantidades muy grandes de almacenamiento de datos a muy bajo coste. Sin embargo, almacenar datos en una unidad de disco duro en lugar de en memoria de estado sólido (SSM, solid state memory) significa que habrá un tiempo de latencia algo más largo cuando se responde a solicitudes de lectura.
Cuando la capa de almacenamiento sin copias duplicadas 550 está llena, verterá segmentos de datos a la capa de almacenamiento transitorio 560. Haciendo referencia a la realización de la figura 6, la capa de almacenamiento transitorio 660 puede mantener su propio mapa de almacenamiento transitorio 661 que identifica localizaciones de segmentos de datos almacenados en el área de almacenamiento transitorio 667.
Haciendo referencia de nuevo a la realización de la figura 5, todos los segmentos de datos vertidos a la capa transitoria 560 atraviesen una capa de compresión 559 que comprime los segmentos de datos para almacenar los datos de manera más compacta en la capa de almacenamiento transitorio 560. La capa de compresión 559 puede permitir que se utilicen múltiples sistemas de compresión diferentes. Para permitir esto, la capa de compresión 559 puede prefijar información de compresión 1115 al segmento de datos comprimidos 1110, tal como se muestra en la figura 11A. La información de compresión 1115 puede incluir un código que especifica el algoritmo de compresión particular y la versión utilizada para comprimir los segmentos de datos comprimidos 1110. Esto permite que la capa de compresión 559 seleccione el sistema de descompresión adecuado cuándo se están utilizando múltiples sistemas de compresión diferentes. Dicho sistema extensible puede ser capaz de seleccionar el sistema de compresión óptimo para un segmento de datos particular. Además, esto permite añadir nuevos algoritmos de compresión al sistema con el tiempo.
La compresión de los segmentos de datos consigue dos objetivos. En primer lugar, la compresión reduce la cantidad de datos que se tienen que almacenar en el almacenamiento transitorio 567, de manera que se incrementa la cantidad de datos que se pueden almacenar localmente en el sistema de almacenamiento masivo jerárquico 500. Y en segundo lugar, la compresión reduce la utilización de ancho de banda en la conexión de internet 596 si los segmentos de datos se envían finalmente al proveedor de almacenamiento de datos 591. Reducir la utilización de ancho de banda es muy importante, dado que esto reduce la gran disparidad entre el ancho de banda de alta velocidad en la conexión de red de área de almacenamiento delantera 502 y esta conexión de internet trasera 596 al proveedor de almacenamiento de datos en la nube 591.
Capa de almacenamiento en la nube
Haciendo referencia a la figura 5, bajo la capa de almacenamiento transitorio 560 hay una capa de almacenamiento en la nube 580 que se puede utilizar para almacenar datos de un proveedor de almacenamiento en la nube externo 591. Los datos almacenados externamente introducirán generalmente alguna latencia cuándo se vuelven a leer dichos datos. La capa de almacenamiento en la nube 580 se puede utilizar de varias maneras diferentes en función de cómo está configurado el sistema de almacenamiento masivo jerárquico 500. Por ejemplo, se puede instruir a un sistema de almacenamiento masivo jerárquico 500 para que utilice la capa de almacenamiento en la nube 580 solamente para operaciones de respaldo, para almacenamiento de datos normal solamente cuando es absolutamente necesario o como otra capa más del sistema de almacenamiento masivo de datos jerárquico 500.
En una configuración de "solamente respaldo", el sistema de almacenamiento masivo jerárquico 500 está diseñado para utilizar solamente las capas de almacenamiento local (lineal, sin copias duplicadas y transitoria), almacenamiento de datos principal. En dicha configuración, la capa de almacenamiento en la nube 580 se activa solamente cuando un administrador solicita específicamente que se cree un volumen externo de respaldo. Si el dispositivo de sistema de almacenamiento masivo jerárquico 500 funciona despacio en el espacio de almacenamiento en las capas de almacenamiento local, un administrador del sistema será entonces avisado, de tal modo que el administrador puede añadir más capacidad de almacenamiento local, borrar datos para crear más espacio local o cambiar la configuración para comenzar a utilizar la capa de almacenamiento en la nube 580 para almacenamiento de datos normal. Utilizar la configuración de "solamente respaldo" garantiza que todos los datos estarán siempre disponibles localmente, de tal modo que si la conexión de datos 596 al proveedor de almacenamiento en la nube 591 fallara, seguirían estando disponibles localmente todos los volúmenes de datos. Además, utilizar la configuración de "solamente respaldo" garantizará que nunca haya un tiempo de latencia largo para solicitudes de datos, debido a que todos los datos estarán disponibles localmente en el sistema de almacenamiento masivo jerárquico 500.
En una configuración de "solamente cuando sea necesario", el sistema de almacenamiento masivo jerárquico 500 intentará siempre mantener localmente la totalidad de los datos. Sin embargo, si queda insuficiente espacio de almacenamiento en las capas de almacenamiento local (lineal, sin copias duplicadas y transitoria), entonces el sistema de almacenamiento masivo jerárquico 500 comenzará a almacenar datos en el proveedor de almacenamiento en la nube externo 591. Se notificará al administrador de que se están produciendo datos externos, de tal modo que el administrador puede adoptar varias acciones en respuesta. Tal como se ha expuesto anteriormente, el administrador puede añadir más capacidad de almacenamiento local, borrar datos para crear más espacio de almacenamiento local o comenzar a utilizar la capa de almacenamiento en la nube 580 para almacenamiento de datos normal.
Finalmente, en una configuración de "almacenamiento en la nube" normal, el sistema de almacenamiento masivo jerárquico 500 utiliza la capa de almacenamiento en la nube 580 como otro nivel más de almacenamiento de datos sucesivo. En una realización de ese tipo, existen tres capas diferentes de almacenamiento local (lineal, sin copias duplicadas y transitorio) y una cuarta capa de almacenamiento en la nube extensible infinitamente. Estando en modo de almacenamiento en la nube normal, el sistema de almacenamiento masivo jerárquico 500 nunca se quedaría sin espacio de almacenamiento debido a la utilización del almacenamiento en la nube extensible. En modo de almacenamiento en la nube normal, la capa de almacenamiento en la nube 580 almacena datos "fríos", datos a los que casi nunca se accede, en el proveedor de datos de almacenamiento en la nube 591. Dado que lleva tiempo recuperar datos del proveedor de almacenamiento de datos externo 591, existirá generalmente un periodo de latencia mayor para cualquier solicitud de almacenamiento de datos que requiera acceso al proveedor de almacenamiento de datos en la nube externo 591. Idealmente, dicha latencia debería ocurrir en muy raras ocasiones cuando se accede a archivos de datos antiguos, dado que la gran mayoría de los datos utilizados frecuentemente deberían estar representados en las capas de almacenamiento local del sistema de almacenamiento masivo jerárquico 500.
Cuando una capa de almacenamiento de datos superior vierte un segmento de datos hacia la capa de almacenamiento en la nube 580, una capa de barrera 570 almacena primero una copia del segmento de datos en un área de almacenamiento de barrera 547. El área de almacenamiento de barrera 547 se utiliza para almacenar temporalmente una copia de datos que la capa de almacenamiento en la nube 580 transmitirá al proveedor de almacenamiento de datos 591. La figura 5 muestra el área de almacenamiento de barrera 547 en SSM, pero el almacenamiento de barrera puede ser en SSM o en una unidad de disco duro. La capa de barrera 570 almacena segmentos de datos en el almacenamiento de barrera 577 durante un 'periodo de asentamiento' que permite al proveedor de almacenamiento de datos 591 completar totalmente sus propias tareas de almacenamiento de datos. Si los datos enviados al proveedor de almacenamiento de datos 591 se solicitaran demasiado pronto, el proveedor de almacenamiento de datos 591 puede fallar en la provisión de los datos dado que el proveedor de almacenamiento de datos 591 puede no estar preparado para responder todavía a consultas de datos. Por lo tanto, cuando la capa de almacenamiento transitorio 560 vierte una solicitud de lectura, la capa de barrera 570 comprueba primero el área de almacenamiento de barrera 547 para ver si los datos solicitados están disponibles allí. Si los datos solicitados están localizados en el área de almacenamiento de barrera 547, la capa de barrera 570 responderá entonces a la solicitud de datos utilizando dicho segmento de datos situado en el área de almacenamiento de barrera 547. Si el segmento de datos solicitados no está localizado en el área de almacenamiento de barrera 547, la capa de barrera 570 pasará entonces la solicitud de lectura a la capa de almacenamiento en la nube 580, de tal modo que la capa de almacenamiento en la nube 580 puede solicitar el segmento de datos al proveedor de almacenamiento de datos en la nube 591.
Además de permitir que los segmentos de datos transmitidos se asienten en el proveedor de almacenamiento de datos 591, la capa de barrera 570 sirve a propósitos adicionales. Un propósito importante es gestionar la serialización de solicitudes de almacenamiento. Muchos proveedores de almacenamiento de datos en la nube llevarán a cabo solicitudes de almacenamiento de datos recibidas en estrecha proximidad de tiempo, fuera del orden original en que se recibieron las solicitudes de almacenamiento de datos. Por lo tanto, si se transmite una solicitud de purga y a continuación está seguida por una solicitud de escritura para la misma localización de datos, el proveedor de almacenamiento de datos en la nube 591 puede invertir el orden de estas solicitudes, de tal modo que el sistema escriba los datos y a continuación purgue los datos, destruyendo de ese modo datos! Para impedir este evento potencialmente desastroso, la capa de barrera 570 situará un periodo de espera largo entre solicitudes de almacenamiento de datos que hacen referencia al mismo segmento de datos.
Antes de que la capa de almacenamiento en la nube 580 transmita datos al proveedor de almacenamiento de datos 591, la capa de almacenamiento en la nube 580 prepara primero los segmentos de datos a enviar. Específicamente, los segmentos de datos pueden primero ser cifrados mediante la capa de cifrado 583. Al cifrar los datos, el usuario del sistema de almacenamiento masivo jerárquico 500 no tiene que temer por la seguridad de sus datos. El cifrado impide que cualquier persona que espíe la conexión de internet 596 o examine los datos almacenados en el proveedor de almacenamiento 591 pueda comprender el significado real de los datos.
Se pueden utilizar muchos sistemas diferentes de cifrado de datos dentro de la capa de cifrado 583. En una realización particular, el sistema de cifrado AES-256 se implementó dentro de la capa de cifrado 583. Igual que con la etapa de compresión, la capa de cifrado 583 puede permitir que se utilicen múltiples sistemas diferentes de cifrado mediante prefijar información de cifrado 1125 al segmento de datos cifrado 1120, tal como se muestra en la figura 11B. La información de cifrado 1125 permite a la capa de cifrado 583 seleccionar el sistema y la versión de descifrado adecuados cuando se pueden utilizar múltiples sistemas diferentes de cifrado de datos. La información de cifrado prefijada 1125 puede especificar asimismo el tamaño de los segmentos de datos contenidos, dado que algunos sistemas de cifrado funcionan solamente sobre datos de tamaño fijo y, por lo tanto, requieren relleno de octetos. Se debe observar que la utilización de compresión prefijada 1115 e información de cifrado 1125 permite que se añadan en cualquier momento nuevos sistemas de compresión y cifrado al sistema de almacenamiento masivo jerárquico 500.
La utilización de información de cifrado prefijada 1125 se puede utilizar asimismo para contribuir a la gestión de claves de cifrado. Las claves de cifrado se pueden modificar de manera regular para mejorar la seguridad de los datos. Se puede situar un código en la información de cifrado prefijada 1125 para ayudar a seleccionar la clave apropiada para el descifrado de los datos. En una realización, el sistema permite a un administrador utilizar una frase de contraseña para generar una clave de cifrado. Se pueden utilizar múltiples niveles de autoría para proteger la pérdida de claves. Además, un sistema incorporado puede permitir a un cliente contactar con el fabricante del sistema de almacenamiento masivo jerárquico 500 si se ha perdido la frase de contraseña para una clave de cifrado.
Después de almacenar una copia en el almacenamiento de barrera 577 y de que sea cifrada por la capa de cifrado 583, los segmentos de datos comprimidos y cifrados se proporcionan a la capa de almacenamiento en la nube 580, que es responsable de transmitir el segmento de datos al proveedor de almacenamiento de datos 591. La capa de almacenamiento en la nube 580 crea primero un objeto de datos nuevos dentro del proveedor de almacenamiento de datos en la nube 591 para almacenar el segmento de datos. En una realización, la capa de almacenamiento en la nube 580 utiliza el mismo identificador de huella digital de las capas de almacenamiento anteriores como el nombre para el objeto de datos. La capa de almacenamiento en la nube 580 escribe (transmite) a continuación los datos al objeto de datos recién creado. La capa de almacenamiento en la nube 580 permite a continuación el periodo de asentamiento, en el que espera una cantidad específica de tiempo antes de que los datos se puedan leer de vuelta desde el proveedor de almacenamiento de datos 591. Este periodo de asentamiento es un valor de tiempo que se puede configurar en base al proveedor de almacenamiento de datos particular 591 que se está utilizando. Una vez que el periodo de asentamiento expira, la capa de almacenamiento en la nube 580 informa a la capa de barrera 570 de que la capa de barrera 570 puede eliminar la copia del segmento de datos que se colocó en el almacenamiento de barrera 577. Por lo tanto, las subsiguientes operaciones de lectura para dicho segmento de datos tienen que ser atendidas solicitando el retorno del segmento de datos desde el proveedor de almacenamiento de datos en la nube 591.
Para garantizar que los datos se han almacenado adecuadamente con el proveedor de almacenamiento de datos 591, la capa de almacenamiento en la nube 580 puede calcular un valor de suma de verificación de datos utilizando el mismo tipo de suma de verificación utilizada por el proveedor de almacenamiento de datos 591. Después de recibir datos para almacenar, el proveedor de almacenamiento de datos 591 puede transmitir de vuelta un valor de suma de verificación en un mensaje de acuse de recibo. Si los dos valores de suma de verificación no coinciden, la capa de almacenamiento en la nube 580 puede retransmitir el segmento de datos. Cuando se utiliza dicha suma de verificación, la copia de los datos en el almacenamiento de barrera 577 no se debería eliminar hasta que se hayan conseguido sumas de verificación coincidentes y haya expirado el periodo de asentamiento.
A diferencia de las capas de almacenamiento superiores, la capa de almacenamiento en la nube 580 no tiene que mantener un mapa de los segmentos de datos. El proveedor de almacenamiento de datos 591 es responsable de mantener un sistema que vincula identificadores de huellas digitales de segmentos de datos a los objetos de segmentos de datos, de manera que la capa de almacenamiento en la nube 580 puede solicitar y obtener segmentos de datos de vuelta desde el proveedor de almacenamiento de datos 591.
Las solicitudes de lectura de datos pasadas hacia abajo por la capa de almacenamiento transitorio 560 se gestionan básicamente del mismo modo que la solicitudes de escritura pero en el orden inverso. Tal como se ha expuesto anteriormente, la capa de barrera 570 intentará primero dar servicio a una solicitud de datos utilizando datos almacenados en el almacenamiento de barrera 577. Si la solicitud de datos no se puede servir a partir de datos en el almacenamiento de barrera 577, la capa de almacenamiento en la nube 580 enviará una solicitud de lectura al proveedor de almacenamiento de datos en la nube 591 utilizando el identificador de huella digital de segmento de datos como el nombre del objeto de datos solicitados. Después de recibir una respuesta del proveedor de almacenamiento de datos en la nube 591, la capa de almacenamiento en la nube 580 puede llevar a cabo la verificación de la integridad de los datos sobre el segmento de datos recibido, calculando una suma de verificación de los datos recibidos. Si la suma de verificación calculada no se corresponde con la suma de verificación recibida desde la capa de almacenamiento sin copias duplicadas 550, el proveedor de almacenamiento de datos en la nube 591 puede entonces haber corrompido los datos. Se puede intentar reintentos para obtener los datos adecuados del proveedor de almacenamiento de datos en la nube 591. Si no se pueden recuperar los datos adecuados, se puede propagar un mensaje de 'error del medio' de vuelta a la pila de almacenamiento de datos 515.
Cuando se han recibido datos verificados, los datos verificados se proporcionan a continuación a la capa de cifrado 583 para su descifrado. Los datos descifrados se pasan a continuación a la capa de almacenamiento transitorio 560, donde el segmento de datos se puede almacenar en almacenamiento transitorio 567. Sin embargo, para gestionar la solicitud de lectura de datos, el segmento de datos es descomprimido por la capa de compresión 559 y el segmento de datos solicitados se pasa más arriba a la pila de gestión de solicitudes 515. La capa de almacenamiento sin copias duplicadas 550 recibirá el segmento de datos que se extrajo de la nube y puede volver a colocar dichos datos en su área de almacenamiento duplicada 557. La capa de almacenamiento sin copias duplicadas 550 pasa los datos solicitados hacia arriba a la capa de almacenamiento lineal 540 y finalmente la capa de almacenamiento lineal completa la solicitud de lectura montando los datos solicitados tal como se expone en la etapa 760 de la figura 7.
Se debe observar que cuando un segmento de datos se pasa de vuelta a la pila de gestión de solicitudes de datos 515, el segmento de datos se puede almacenar en varias capas de almacenamiento diferentes de la pila de gestión de solicitudes de datos 515 y seguirá permaneciendo en el proveedor de almacenamiento de datos en la nube 591. Si la capa de almacenamiento sin copias duplicadas 550 desaloja de nuevo un segmento de datos que estaba asimismo almacenado en la capa de almacenamiento transitorio 560 (y dicho segmento de datos no ha cambiado), el segmento de datos no tiene entonces que ser almacenado de nuevo en la capa de almacenamiento transitorio 560, dado que ya existe allí. De este modo, la capa de almacenamiento sin copias duplicadas 550 puede simplemente eliminar su copia del segmento de datos.
La pila de gestión de solicitudes de datos 515 y sus diversas capas de almacenamiento de datos se pueden implementar de varias maneras diferentes, dependiendo de las necesidades de una aplicación específica. Se debe observar que las diversas técnicas diferentes se pueden utilizar independientemente, o en un sistema de almacenamiento masivo jerárquico combinado 500.
Escalamiento del sistema de almacenamiento de datos jerárquico
El sistema de almacenamiento masivo jerárquico 500 de la figura 5 se puede implementar como una aplicación de almacenamiento masivo 460 para un entorno de oficina tal como se muestra en la figura 4, donde la aplicación almacenamiento masivo 460 proporciona servicios de almacenamiento de datos a varios sistemas de servidor (441, 442 y 443). Los sistemas de servidor (441, 442 y 443) proporcionan varios servicios a una colección de estaciones de trabajo de usuario (421 a 427) Sin embargo, el entorno de oficina representado en la figura 4 requerirá generalmente un departamento de tecnologías de la información local para configurar y mantener la red de área local 430, los diversos sistemas de servidor (441, 442 y 443), la red de área de almacenamiento 450, el sistema de almacenamiento masivo jerárquico 460 y la cuenta con el proveedor de almacenamiento en la nube 491.
Para una oficina pequeña o una sucursal remota, generalmente no es factible utilizar un empleado de tecnologías de la información dedicado. Por ejemplo, la figura 12 muestra la infraestructura informática para un entorno de oficina pequeña con tan solo tres empleados locales que utilizan estaciones de trabajo 1221, 1222 y 1223. Además de las tres estaciones de trabajo (1221, 1222 y 1223), la oficina pequeña de la figura 12 consiste en una red de área local 1230, un servidor local pequeño 1250 y un dispositivo de pasarela de internet 1271 que proporciona servicios de internet. El servidor local pequeño 1250 ejecuta unas pocas aplicaciones de servidor, tal como una aplicación de servidor A 1256 y una aplicación de servidor B 1257, que proporcionan algunos servicios locales a la oficina, tales como compartición de archivos, impresión de archivos, correo electrónico, etc.
Aunque la infraestructura informática de la figura 12 es mucho más simple que la infraestructura más sofisticada de la figura 4, seguirá siendo necesario algún mantenimiento de tecnologías de la información. Por ejemplo, el almacenamiento acoplado directo (DAS, direct attached storage) 1251 del sistema de servidor 1250 se tiene que mantener y es necesario realizar copias de respaldo periódicas del almacenamiento acoplado directo (DAS) del servidor 1251 utilizando el sistema de respaldo 1259. De este modo, para mantener incluso una infraestructura muy limitada de la figura 12, una persona de tecnologías de la información (IT, information technology) de una oficina grande tiene que visitar periódicamente esta oficina, es necesario emplear a una persona de IT externa en base a un contrato, o uno de los empleados de la oficina tiene que gastar parte de su tiempo trabajando en asuntos de IT para la oficina pequeña.
En lugar de requerir que una persona de tecnologías de la información visite la oficina pequeña de la figura 12, seria deseable que todos los servicios de almacenamiento de datos para la oficina se pudieran gestionar remotamente. Para proporcionar una solución de este tipo, la presente invención propone integrar un sistema de almacenamiento jerárquico controlable remotamente en el sistema de servidor 1250. Específicamente, la figura 13 muestra un entorno informático de oficina pequeña muy similar a la figura 12, en el que el sistema de servidor pequeño 1350 incluye un sistema de almacenamiento jerárquico integrado 1355. El sistema de almacenamiento jerárquico integrado 1355 proporciona servicios de almacenamiento de datos a las aplicaciones que se ejecutan en el sistema de servidor 1350 (aplicación A 1356 y aplicación B 1357).
El entorno de oficina pequeña de la figura 13 con un sistema de servidor 1350 que incluye un sistema de almacenamiento jerárquico integrado 1355 proporciona varias ventajas sobre el entorno de oficina pequeña tradicional de la figura 12. Por ejemplo, el sistema de almacenamiento jerárquico integrado 1355 utiliza un servicio de almacenamiento de datos basado en la nube 1391 para proporcionar capacidad de almacenamiento infinitamente expansible al sistema de servidor 1350. Además, el sistema de almacenamiento jerárquico integrado 1355 utiliza técnicas de eliminación de copiad duplicadas de datos y de compresión para usar muy eficientemente la capacidad de almacenamiento local dentro del almacenamiento acoplado directo 1351. Pero uno de los aspectos más importantes del sistema de almacenamiento jerárquico integrado 1355 son las capacidades de administración remota.
Tal como se ha expuesto haciendo referencia la figura 5, un sistema de almacenamiento jerárquico 500 incluye un componente de administración 510. El componente de administración 510 permite que el sistema de almacenamiento jerárquico 500 sea configurado y mantenido remotamente a través de una interfaz de red. Haciendo referencia de nuevo a la figura 13, esto significa que un administrador 1311 en el departamento IT de una sede principal de la compañía 1310 (o una agencia contratada) puede remotamente acceder a, configurar y mantener todas las funciones de almacenamiento de datos del sistema de servidor 1350. Las tareas de mantenimiento relacionadas con almacenamiento de datos requieren generalmente que una persona esté presente físicamente, dado que a menudo el administrador tiene que tratar con hardware de almacenamiento físico. Por ejemplo, un administrador puede tener que sustituir físicamente unidades de disco duro existentes con unidades de disco duro mayores cuando una oficina ha superado la capacidad actual de almacenamiento de datos. Sin embargo, dado que el sistema de almacenamiento jerárquico 1355 virtualiza volúmenes de disco y utiliza almacenamiento basado en la nube infinitamente expansible, el sistema de almacenamiento jerárquico 1355 permite que la mayor parte de las tareas de mantenimiento de almacenamiento de datos se gestionen remotamente.
Por ejemplo, con un servidor de oficina pequeña tradicional 1250 como el mostrado en la figura 12, un administrador local tiene normalmente que estar presente para gestionar los medios de respaldo físico cuando respalda el almacenamiento acoplado directamente 1251 con un sistema de respaldo 1259. Pero en el sistema de servidor 1350 de la figura 13 con un sistema de almacenamiento jerárquico integrado 1355, un administrador remoto 1311 puede instruir al sistema de almacenamiento jerárquico 1355 para crear respaldos de volúmenes de datos en el almacenamiento de datos basado en la nube 1391. Análogamente, cuando se necesita un nuevo volumen de datos para almacenar más datos, el administrador remoto 1311 puede instruir al sistema de almacenamiento jerárquico 1355 para crear un nuevo volumen de datos. La creación de un nuevo volumen de datos no requerirá la adición física de un nuevo disco, dado que el sistema de almacenamiento jerárquico 1355 desalojará en cambio datos antiguos inactivos del almacenamiento acoplado dirigido local 1251, según sea necesario para generar espacio para el nuevo volumen de datos. De este modo, siempre que haya disponibles sistemas de almacenamiento local para gestionar los datos que se utilizan activamente en el sistema de servidor 1350, no se requiere nuevo almacenamiento local. Por el contrario, el almacenamiento de datos basado en la nube 1391 actúa como un sistema de almacenamiento de expansión infinita.
Detalles del sistema de almacenamiento de datos jerárquico integrado
El sistema de almacenamiento jerárquico integrado 1355 se puede implementar de varias maneras diferentes. La figura 14 muestra un diagrama de bloques detallado de una realización de sistema de servidor 1400 con un sistema de almacenamiento jerárquico integrado 1404. El sistema de almacenamiento jerárquico 1404 se puede implementar en Microsoft Windows, Linux y otros sistemas operativos.
En el sistema de servidor 1400, el entorno de software está dividido en espacio de usuario y espacio de sistema operativo (o núcleo). El sistema operativo, diversas bibliotecas y controladores de dispositivo se ejecutan en el espacio del sistema operativo. Los programas que se ejecutan en el espacio del sistema operativo tienen concedidos más privilegios y pueden acceder directamente a características del hardware. Por razones de seguridad, los programas de aplicación se ejecutan en un espacio de usuario que tiene concedidos menos privilegios y al que no se permite acceder directamente a características del hardware. Por ejemplo, la aplicación A 1456 y la aplicación B 1457 se ejecutan en el espacio de usuario. Esta disposición permite que los sistemas informáticos funcionen de manera más robusta dado que se impide que los programas de aplicación, ya sean maliciosos intencionadamente o simplemente estén mal escritos, lleven a cabo operaciones que provocarían el colapso del sistema de servidor.
Para acceder a recursos de almacenamiento (que requieren acceder a algún hardware de almacenamiento de datos), los programas de aplicación tienen que emitir solicitudes al sistema operativo 1479. Por ejemplo, la aplicación A 1456 y la aplicación B 1457 tienen que emitir solicitudes de almacenamiento por medio del sistema operativo 1479, que se proporcionan a un controlador de almacenamiento virtual 1480 que gestiona las solicitudes de almacenamiento de datos. En un típico sistema informático, un controlador de almacenamiento normal satisfaría las solicitudes de almacenamiento almacenando datos en un dispositivo de almacenamiento de datos, tal como el almacenamiento acoplado directo 1475. Sin embargo, en la realización de la figura 14, parece en cambio que el controlador de almacenamiento virtual 1480 pone a disposición los volúmenes de disco virtuales 1451, 1452 y 1453, pero gestiona las solicitudes de almacenamiento para estos volúmenes de disco virtuales pasando las solicitudes al sistema de almacenamiento jerárquico 1404. En el entorno de Windows Server, el controlador de almacenamiento virtual 1480 se puede implementar como un controlador Storport. En un entorno Linux, el controlador de almacenamiento virtual 1480 se puede implementar como un controlador de dispositivo SCSI virtual.
Cabe señalar que implementando el sistema en el controlador de dispositivo de almacenamiento virtual, el sistema dado a conocer gestiona todos los tipos de solicitudes de almacenamiento. Específicamente, haciendo referencia de nuevo a la figura 2, un programa de aplicación puede realizar una solicitud de almacenamiento por medio del sistema de archivos 211 de un sistema operativo o puede realizar una solicitud de almacenamiento directa a un sistema de control de almacenamiento para almacenar un bloque de datos en bruto. Al implementar un controlador de almacenamiento virtual 1480 dentro del espacio del sistema operativo, el sistema dado a conocer puede gestionar solicitudes de almacenamiento avanzadas procedentes de aplicaciones tales como bases de datos, que utilizan solicitudes de almacenamiento de bloques en bruto en lugar de solicitudes de archivo simples a través del sistema de archivos.
En la realización particular dada a conocer en la figura 14, la pila de gestión de almacenamiento de datos del sistema de almacenamiento jerárquico 1404 se implementa en espacio de usuario. Esto se puede realizar dado que existen más herramientas de soporte de programación para desarrollo en el espacio de usuario, y las aplicaciones del espacio de usuario no requieren la aprobación de la entidad que crea el sistema operativo. Sin embargo, en otras realizaciones, la pila de gestión de almacenamiento de datos se puede implementar en el espacio del sistema operativo. El controlador de almacenamiento virtual 1480 pasa todas las solicitudes de almacenamiento a una interfaz del controlador 1420 en la parte superior de la pila de gestión de almacenamiento de datos. La solicitud de almacenamiento de datos es procesada continuación por las diferentes capas de la pila de gestión de almacenamiento de datos hasta que la solicitud se ha resuelto completamente. Para gestionar almacenamiento local de datos, las diversas capas de almacenamiento de datos (almacenamiento lineal 1440, almacenamiento sin copias duplicadas 1450, almacenamiento transitorio 1460, etc.) acceden a un controlador de almacenamiento real 1474 que gestiona solicitudes de almacenamiento para un dispositivo de almacenamiento acoplado directo real 1475 en el sistema de servidor.
Diversas realizaciones diferentes pueden utilizar diversos tipos diferentes de almacenamiento de datos para niveles diferentes. Por ejemplo, para implementar un sistema de alto rendimiento, la capa de almacenamiento lineal 1440 puede utilizar almacenamiento de estado sólido para reducir la latencia y tener un caudal elevado. Sin embargo, en un entorno de oficina pequeña como el mostrado en la figura 13, el rendimiento de baja latencia puede no ser un rendimiento fundamental dado que todos los niveles de almacenamiento local de datos pueden utilizar simplemente un sistema de unidad de disco duro local. Aunque dicha realización de sistema de almacenamiento jerárquico integrado basado en disco no proporcionará una latencia muy baja o un caudal elevado, el sistema de almacenamiento jerárquico integrado 1404 se seguirá beneficiando de la mayor eficiencia de almacenamiento proporcionada al llevar a cabo duplicación de datos en la capa de almacenamiento con eliminación de copias duplicadas 1450 y compresión de datos en la capa de almacenamiento transitorio 1460. Lo que es más importante, el sistema de almacenamiento jerárquico basado en servidor 1404 se beneficiará de la bondad de las características de gestión de almacenamiento, tales como creación de volúmenes remota, respaldos basados en la nube, tamaño de almacenamiento expansible infinitamente sin actualizaciones de hardware, duplicación de volúmenes remota, gestión de almacenamiento centralizada a través de múltiples sitios, etc. La importancia de estas características se describirá en mayor detalle en la siguiente sección.
La capa de almacenamiento en la nube 1481 de la pila de gestión de almacenamiento de datos interactúa con un proveedor de almacenamiento de datos en la nube 1491 para permitir al sistema de servidor 1400 gestionar muchos más datos de los que pueden ser almacenados solamente en el dispositivo de almacenamiento acoplado directo 1475. Específicamente, la capacidad de la capa de almacenamiento en la nube para almacenar datos en el proveedor de almacenamiento de datos en la nube 1491 permite que el sistema de almacenamiento jerárquico 1404 proporcione almacenamiento de datos de expansión infinita en el sistema de servidor 1400.
Características del servidor de almacenamiento de datos jerárquico integrado
Tener un sistema de servidor con un sistema de almacenamiento jerárquico integrado simplifica enormemente la creación y el soporte de oficinas satélite pequeñas. Para mostrar la facilidad con la que se pueden soportar las oficinas satélite, se presentará un conjunto de ejemplos haciendo referencia a las figuras 15A a 15H.
La figura 15A muestra un diagrama de bloques de la compañía con una sede principal 1510 y dos oficinas satélite en Londres y Zúrich. Un administrador 1511 en la sede principal 1510 mantiene dos sistemas de servidor 1560 y 1550 en las oficinas satélite en Londres y Zúrich, respectivamente, que tienen un sistema de almacenamiento de datos jerárquico integrado. Cada uno de los sistemas de servidor de oficina satélite (1560 y 1550) utiliza un proveedor regional de almacenamiento en la nube para proporcionar servicio de almacenamiento en la nube de alta velocidad (1569 y 1559, respectivamente). Cabe señalar que muchos países tienen reglas de privacidad de los datos, que describen como se tienen que gestionar los datos, de manera que almacenar datos con un proveedor regional de almacenamiento en la nube ayudará a cumplir dichas aplicaciones legales.
La compañía decide abrir una nueva oficina satélite en Tokio. Para configurar una oficina satélite en Tokio, un nuevo sistema de servidor 1570 con un sistema de almacenamiento jerárquico integrado es construido y enviado a la oficina de Tokio. Una vez el sistema de servidor 1570 llega la nueva oficina de Tokio, es acoplado a una conexión de internet y arrancado.
Después de arrancar el sistema de servidor 1570, el administrador 1511 se puede registrar en el sistema de servidor 1570 y configurar el sistema de servidor 1570 para que funcione, tal como se muestra en la figura 15B. Una de las primeras tareas que realiza administrador 1511 es abrir una cuenta con un proveedor de almacenamiento en la nube local 1579 y configurar el sistema de servidor 1570 para utilizar un proveedor de almacenamiento en la nube local 1579 como nivel inferior del sistema de almacenamiento de datos jerárquico. En este momento, el sistema de servidor de Tokio 1570 está preparado para gestionar una cantidad infinitamente expandible de almacenamiento de datos.
A continuación, el administrador 1511 puede desear crear algunos volúmenes de datos virtuales y poblar el sistema de servidor de toque 1570 con aplicaciones y datos a utilizar por la oficina de Tokio. Para ello, el administrador 1511 puede configurar la capa de almacenamiento en la nube en el sistema de servidor de Tokio 1570 para utilizar un sistema de servidor 1507 en la sede principal 1510 como fuente de datos, tal como se muestra en la figura 15C. A continuación, el administrador 1511 puede 'restaurar' un volumen de plantillas de oficina satélite 1551 en la sede principal 1510 dentro del sistema de servidor de Tokio 1570.
La figura 15D muestra el estado del sistema de servidor de Tokio 1570 después de restaurar el volumen de plantillas de oficina satélite en el sistema de servidor de Tokio 1570 y de crear otros volúmenes de datos necesarios. Se debe observar que el volumen de plantillas de la oficina satélite 1551 en la sede principal 1510 es utilizado solamente como volumen de fuente de respaldo. Y que cualesquiera cambios realizados en el volumen restaurado afectarán solamente a la unidad local en el sistema de servidor de Tokio 1570 y al servicio de almacenamiento en la nube 1579 utilizado por el sistema de servidor de Tokio 1570. Utilizando sistemas convencionales de administración remota, el administrador 1511 puede instalar y configurar cualesquiera aplicaciones de servidor que se necesiten en el sistema de servidor de Tokio 1570.
En este momento, el sistema de servidor de Tokio 1570 ha sido configurado y cargado con aplicaciones preparadas para utilizar. Por lo tanto, los usuarios en las estaciones de trabajo 1571 y 1572 pueden comenzar a utilizar el sistema de servidor de Tokio 1570, tal como se muestra en la figura 15E. Se debe observar que todo el proceso de configuración se ha podido llevar a cabo remotamente por un administrador 1511 en la sede principal de la compañía 1510.
Después de un año, la compañía puede decidir que Tokio no es la ubicación más apropiada para su oficina satélite de extremo oriente, y puede desear mover la oficina a Singapur. El sistema de servidor 1570 con un sistema de almacenamiento jerárquico puede facilitar enormemente esta tarea de desplazar la infraestructura informática de la oficina. La primera tarea es hacer que el administrador 1511 cree un respaldo de los volúmenes de datos necesarios desde el sistema de servidor de Tokio 1570. Esto se puede realizar tomando una instantánea de los volúmenes necesarios, y creando a continuación respaldos basados en la nube de los volúmenes de instantáneas, ya sea en el almacenamiento en la nube 1579 o en la sede principal de la compañía 1510. La figura 15F muestra un respaldo 1552 del sistema de servidor 1570 a partir de la oficina de Tokio cerrada, en el sistema de servidor 1507 en la sede principal de la compañía 1510.
Se debe observar que durante el proceso de respaldo, todos los datos necesarios del sistema regional de almacenamiento en la nube 1579 serán extraídos y copiados al respaldo 1552. Una vez se han completado todos los respaldos, la oficina de Tokio se puede cerrar y el contrato con el sistema regional de almacenamiento en la nube 1579 puede finalizar, tal como se muestra en la figura 15G. Se debe observar que la temporización de dicho cambio de proveedor en la nube se puede determinar independientemente de la transición del sitio, y puede ocurrir en una etapa posterior después de que se ha completado la transición. Esto permite una transición sin incidencias de manera permanente, o en caso de una transición temporal (por ejemplo, en una situación de tolerancia a fallos de recuperación de desastre) permite el restablecimiento de los servicios originales en el sitio de Tokio, como parte de la recuperación del fallo.
Una nueva oficina en Singapur puede a continuación abrirse rápidamente siguiendo las mismas etapas expuestas haciendo referencia a las figuras 15A a 15E excepto que, en lugar de restablecer el volumen de plantillas de oficina satélite 1551, el administrador restablece en cambio el volumen de respaldo de la oficina de Tokio 1552 en la nueva oficina de Singapur. El resultado final se muestra en la figura 15H. Se debe observar que si un sistema de servidor no configurado 1580 se configura y se prepara para funcionar en la nueva oficina de Singapur antes de que la oficina de Tokio se cierre, entonces el sistema de servidor de Tokio 1570 puede ser respaldado inmediatamente después de que cierre la oficina de Tokio por último día, y restablecido inmediatamente en la oficina de Singapur. De este modo, la nueva oficina de Singapur puede abrir el día después de que haya cerrado la oficina de Tokio, con todos los datos de la oficina de Tokio recién cerrada disponibles inmediatamente en la nueva oficina de Singapur!
Los sistemas de almacenamiento jerárquico se pueden utilizar para distribuir fácilmente volúmenes de información a todas las diferentes oficinas satélite. Haciendo referencia a la figura 15I, la sede principal de la compañía 1510 ha creado un volumen de bibliotecas 1553 como un volumen de respaldo en el sistema de servidor 1507. El volumen de bibliotecas 1553 contiene información que la sede principal de la compañía desearía distribuir a todas las diferentes oficinas satélite, tal como políticas de la compañía, información de seguro médico, videos de entrenamiento, software con licencia de uso para todos los empleados, etc. Para distribuir el volumen de bibliotecas 1553 a todas las oficinas satélite, el administrador contacta con cada uno de los sistemas de servidor 1550, 1560 y 1580 e instruye a estos servidores para restaurar el volumen de bibliotecas 1553 como un volumen local. Cada servidor satélite 1550, 1560 y 1580 creará a continuación un volumen local que contiene toda la información del volumen de bibliotecas 1553.
Cabe señalar que pueden no transmitirse inmediatamente todos los datos del volumen de bibliotecas 1553 a todos los servidores satélite (1550, 1560 y 1580). Por el contrario, inicialmente se transmite tan sólo un índice de información necesaria para crear el aspecto de un volumen de bibliotecas local 1553. A continuación, a medida que los usuarios de las diversas oficinas satélite solicitan documentos de la instancia local de volumen de bibliotecas, se transmitirán a petición varios elementos del volumen de bibliotecas 1553. Esta técnica reduce la utilización innecesaria de ancho de banda de red y no derrocha espacio de almacenamiento local para documentos a los que no accederá ningún usuario.
Almacenamiento de datos jerárquico integrado en la nube
Hay ocasiones en las que gestionar un único servidor físico pequeño 1350 como el mostrado en la figura 13 puede no ser ideal. Por ejemplo, si existen una serie de personas de ventas individuales que trabajan en regiones geográficas distantes, entonces no hay ninguna oficina central adecuada para alojar un servidor para dicho personal de ventas remoto. Alternativamente, una compañía puede decidir externalizar el mantenimiento físico de todo el hardware de servidor, sencillamente moviendo todas las aplicaciones basadas en servidor a un proveedor de servicios informático basado en la nube. Para conseguir este objetivo, el sistema de servidor 1400 con un sistema de almacenamiento jerárquico integrado 1404 se puede mover a un servidor virtual basado en la nube. En el caso ideal, el proveedor de servicios informático basado en la nube estará situado en un emplazamiento geográfico relativamente próximo a los usuarios, de manera que se optimicen los tiempos de respuesta.
La figura 16 muestra un sistema de servidor virtual 1600 con un sistema de almacenamiento jerárquico integrado 1604 que se está ejecutando en un proveedor de servicios en la nube 1699. Al mover el sistema de servidor a un proveedor de servicios basado en la nube, una entidad puede eliminar y externalizar todas las tareas de mantenimiento físico del hardware del servidor. Los usuarios individuales, tales como un usuario en un sistema de cliente ligero 1698, pueden acceder a aplicaciones de servidor desde el sistema de servidor virtual 1600 a través de internet 1690. Por lo tanto, muchos usuarios individuales geográficamente remotos (tales como personal de ventas disperso geográficamente) pueden todos compartir aplicaciones de servidor 1656 y 1656.
Cabe señalar que dentro de un entorno basado en la nube, las ventajas de las diferentes capas del sistema de almacenamiento jerárquico 1404 pueden no apreciarse tanto. Por ejemplo, cuando se ejecuta en un entorno basado en la nube, la capa de almacenamiento lineal 1640 puede no tener una respuesta de latencia muy baja dado que el entorno basado en la nube puede no soportar la asignación de determinadas zonas de almacenamiento como memoria de estado sólido sino que utilizará en su lugar almacenamiento de disco, tal como se muestra en la figura 16. Por lo tanto, las políticas de asignaciones de tamaño de almacenamiento y de desalojo utilizadas para las diversas capas de almacenamiento se pueden ajustar para adaptarse al entorno de la nube.
La implementación de sistema de servidor virtual 1600 de la figura 16 utiliza el controlador de almacenamiento virtual especializado 1680 para proporcionar servicios de almacenamiento a programas de aplicación. Debido a esta arquitectura, cualesquiera aplicaciones de servidor que deseen utilizar el sistema de almacenamiento jerárquico 1604 se tienen que ejecutar en el mismo sistema de servidor virtual 1600. Por ejemplo, las aplicaciones de servidor A 1656 y B 1657 se ejecutan en el sistema de servidor virtual 1600 y, por lo tanto, pueden acceder al controlador de almacenamiento virtual 1680 en dicho sistema de servidor virtual 1600. Para mejorar el rendimiento, se puede asignar a cada programa de aplicación su propia máquina virtual individual.
La figura 17 muestra un proveedor de servicios en la nube 1799 que está ejecutando dos sistemas de servidor virtuales independientes (1700 y 1701), donde cada sistema de servidor está ejecutando una única aplicación de servidor (1756 y 1757, respectivamente). Se pueden generar servidores virtuales adicionales para gestionar aplicaciones adicionales, donde cada servidor virtual tiene su propia instancia de sistema de almacenamiento jerárquico. Esta disposición permite que el sistema aproveche el aspecto de computación en la nube de tender a añadir más que a reforzar. Específicamente, se pueden asignar a múltiples instancias informáticas diferentes gestionar tareas individuales en lugar de utilizar una única instancia informática grande que ejecute múltiples aplicaciones diferentes. De este modo, para tareas similares, un sistema puede utilizar un grupo de nodos menores que pueden crecer o contraerse en número de miembros, en lugar de un gran nodo informático que consume un conjunto predefinido de recursos.
En una realización alternativa, el sistema de almacenamiento jerárquico se puede generalizar para permitir que otras aplicaciones se ejecuten en otras máquinas (reales o virtuales) para acceder más fácilmente al sistema de almacenamiento jerárquico basado en la nube. La figura 18 muestra un sistema de almacenamiento jerárquico virtual 1804 que se está ejecutando en un proveedor de servicios en la nube 1899. Sin embargo, el sistema de almacenamiento jerárquico virtual 1804 expone una interfaz de almacenamiento de red 1880, tal como una interfaz iSCSI, al mundo exterior. De este modo, las aplicaciones de servidor A 1871, B 1872 y C 1873 se pueden ejecutar en sus propios sistemas virtuales (o en un sistema físico en una oficina) y acceder a los servicios de almacenamiento a través de la interfaz de almacenamiento de red 1880. Se muestra un usuario individual en el sistema de cliente ligero 1898, accediendo a la aplicación de servidor C 1873 a través de internet 1890.
Cabe señalar que la realización de la figura 18 facilita un refuerzo más rápido de servicios de aplicaciones. Específicamente, dado que son necesarias muchas instancias de aplicaciones, se pueden crear en sus propios servidores virtuales y permitírseles acceder a la misma interfaz de almacenamiento de red 1880, de tal modo que cuando se requiere potencia de procesamiento para gestionar simultáneamente numerosos usuarios, la potencia de procesamiento de aplicaciones se puede reforzar rápidamente.
Recuperación de desastres utilizando almacenamiento de datos en la nube
La capacidad de alojar un sistema de almacenamiento jerárquico virtual 1804 dentro del proveedor de servicios basado en la nube 1899 ofrece la posibilidad de crear un sistema de recuperación de desastres de bajo coste para cualquier entidad que utilice un sistema de almacenamiento jerárquico. Con cualquiera de la aplicación de almacenamiento jerárquico 460 de la figura 4 o el servidor de almacenamiento jerárquico integrado 1350 de la figura 13, un administrador puede crear fácilmente volúmenes de respaldo diarios almacenados en el proveedor de almacenamiento en la nube, utilizados por el sistema de almacenamiento jerárquico. De este modo, si se produce un desastre (tal como que un edificio de oficinas que aloja la aplicación de almacenamiento jerárquico 460 o el servidor de almacenamiento jerárquico integrado 1350 se incendia), el volumen de respaldo más reciente se puede restablecer en el sistema de almacenamiento jerárquico virtual basado en la nube 1804 en el proveedor de servicios de la nube 1899. Una vez los volúmenes de datos de respaldo se restablecen en un sistema de almacenamiento jerárquico virtual 1804, los programas de aplicación basados en la nube, tales como las aplicaciones 1871, 1872 y 1873, pueden comenzar a funcionar utilizando los volúmenes de datos restablecidos
Por lo tanto, simplemente creando volúmenes regulares de respaldo basados en la nube, cualquier organización que utilice un sistema de almacenamiento jerárquico tiene la capacidad de restablecer rápidamente una infraestructura íntegra de la parte administrativa en un proveedor de servicios en la nube 1899. La recuperación de desastres de apoyo no cuesta en la práctica nada de mantener, dado que cuando ocurre un desastre una cuenta con un proveedor de servicios en la nube 1899 se puede abrir inmediatamente.
La anterior descripción técnica pretende ser ilustrativa, y no restrictiva. Por ejemplo, las realizaciones descritas anteriormente (o uno o varios aspectos de las mismas) se pueden utilizar en combinación entre sí. Otras realizaciones resultarán evidentes a los expertos en la materia tras la inspección de la descripción anterior. Por lo tanto, el objetivo de las reivindicaciones se deberá determinar haciendo referencia a las reivindicaciones adjuntas, junto con el pleno alcance de equivalentes a que facultan dichas reivindicaciones. En las reivindicaciones adjuntas, los términos "incluye" y "en el que" se utilizan como los equivalentes en inglés sencillo de los respectivos términos "comprende" y "donde". Asimismo, en las siguientes reivindicaciones, los términos "incluye" y "comprende" son abiertos, es decir, se sigue considerando que un sistema, dispositivo, artículo o proceso que incluya elementos además de aquellos enumerados después de dicho término en una reivindicación, queda dentro del alcance de dicha reivindicación. Además, en las siguientes reivindicaciones, los términos "primero", "segundo" y "tercero", etc., se utilizan tan sólo como etiquetas, y no pretenden imponer requisitos numéricos a sus objetos.
El resumen se proporciona para cumplir con 37 C.F.R. §1.72(b), que requiere que este permita al lector determinar rápidamente la naturaleza de la descripción técnica. El resumen se presenta en el bien entendido de que no será utilizado para interpretar o limitar el alcance o significado de las reivindicaciones. Asimismo, en la descripción detallada anterior, varias características pueden estar agrupadas entre sí para simplificar la descripción. No se deberá interpretar que esto pretende que una característica dada a conocer no reivindicada es esencial para alguna reivindicación. Por el contrario, la materia inventiva puede residir en menos de todas las características de una realización particular dada a conocer. Por lo tanto, las siguientes reivindicaciones se incorporan por la presente memoria a la descripción detallada, valiendo por su cuenta cada reivindicación como una realización independiente.

Claims (11)

REIVINDICACIONES
1. Un procedimiento de implementación de un sistema de almacenamiento de datos jerárquico (500), comprendiendo dicho procedimiento:
instalar un controlador de dispositivo de almacenamiento virtual en un sistema operativo que se ejecuta en un sistema informático, dicho controlador de dispositivo de almacenamiento virtual para recibir solicitudes de almacenamiento de datos, pareciendo que el controlador de dispositivo de almacenamiento virtual pone a disposición volúmenes de disco virtuales (1451, 1452, 1453), donde las solicitudes de almacenamiento de datos para los volúmenes de disco virtuales se pasan al sistema de almacenamiento de datos jerárquico;
ejecutar una pila de almacenamiento jerárquico en dicho sistema informático para almacenar datos, teniendo dicha pila de almacenamiento jerárquico una capa de administración (510) que permite la configuración remota y el control de dicha pila de almacenamiento jerárquico, incluyendo dicho sistema de almacenamiento jerárquico una capa de abstracción de volúmenes (531) adaptada para mantener un seguimiento de los diferentes volúmenes almacenados por el sistema de almacenamiento jerárquico (500), teniendo la pila de almacenamiento jerárquico por lo menos tres capas de almacenamiento local de datos para almacenar localmente datos en dicho sistema informático, donde el sistema de almacenamiento de datos jerárquico incluye una capa de almacenamiento lineal (540, 640) que mantiene un mapa de almacenamiento lineal (541) que especifica dónde reside cada porción de datos, estando adaptada una capa de almacenamiento sin copias duplicadas (550, 650) para eliminar datos duplicados de los datos almacenados, y una capa de almacenamiento transitorio (560, 660) adaptada para comprimir los segmentos de datos, y teniendo dicha pila de almacenamiento jerárquico una capa de almacenamiento remoto de datos (580) que almacena datos con un servicio de almacenamiento de datos remoto (591); y
dirigir todas las solicitudes de almacenamiento de datos recibidas por dicho controlador de dispositivo de almacenamiento virtual a dicha pila de almacenamiento jerárquico;
comprendiendo además el procedimiento:
recibir una solicitud para crear un nuevo volumen de datos en dicha capa de administración de dicho sistema de almacenamiento de datos jerárquico;
crear dicho nuevo volumen de datos en dicha pila de almacenamiento jerárquico que almacenará inicialmente datos en dicha capa de almacenamiento local de datos y verterá posteriormente datos a dicha capa de almacenamiento remoto de datos que almacena datos con un servicio de almacenamiento de datos remoto, donde la creación de dicho nuevo volumen de datos se realiza desalojando datos inactivos de la capa de almacenamiento local de datos para crear espacio para dicho nuevo volumen de datos, donde los datos desalojados se vierten a la pila de almacenamiento jerárquico.
2. El procedimiento de implementación de un sistema de almacenamiento de datos jerárquico según se expone en la reivindicación 1, comprendiendo además dicho procedimiento:
ejecutar un programa de aplicación, accediendo directamente dicho programa de aplicación a dicho controlador de dispositivo de almacenamiento virtual.
3. El procedimiento de implementación de un sistema de almacenamiento de datos jerárquico según se expone en la reivindicación 1, en el que dicho sistema informático comprende un servidor virtual basado en la nube; y/o en el que dicho sistema de almacenamiento de datos jerárquico expone una interfaz de almacenamiento de red para que accedan las aplicaciones.
4. El procedimiento de implementación de un sistema de almacenamiento de datos jerárquico según se expone en cualquiera de las reivindicaciones 1 a 3, en el que dicha por lo menos una capa de almacenamiento local de datos comprende una primera capa de almacenamiento local de datos que almacena datos en un formato en bruto y una segunda capa de almacenamiento local de datos que almacena datos en un formato con datos duplicados eliminados; o
un sistema de almacenamiento de datos jerárquico según se expone en la reivindicación 1, en el que dicha por lo menos una capa de almacenamiento local de datos comprende una primera capa de almacenamiento local de datos que almacena datos en un sistema de memoria de estado sólido y una segunda capa de almacenamiento local de datos que almacena datos en una unidad de disco duro.
5. El procedimiento de implementación de un sistema de almacenamiento de datos jerárquico según se expone en cualquiera de las reivindicaciones 1 a 4, comprendiendo además dicho procedimiento:
recibir una solicitud para crear un respaldo de un volumen de datos almacenado en dicho sistema de almacenamiento de datos jerárquico;
crear un volumen de instantáneas de dicho volumen de datos en dicho sistema de almacenamiento de datos jerárquico; y
copiar datos de dicho volumen de instantáneas almacenado en dicha por lo menos una capa de almacenamiento local de datos, a dicho servicio de almacenamiento de datos remoto.
6. Un sistema de almacenamiento de datos jerárquico (500), comprendiendo dicho sistema:
un controlador de dispositivo de almacenamiento virtual que está instalado en un sistema operativo que se ejecuta en un sistema informático, estando adaptado dicho controlador de dispositivo de almacenamiento virtual para recibir solicitudes de almacenamiento de datos, estando adaptado el controlador de dispositivo de almacenamiento virtual para que parezca que pone a disposición volúmenes de disco virtuales (1451, 1452, 1453), donde las solicitudes de almacenamiento de datos para los volúmenes de disco virtuales se pasan al sistema de almacenamiento de datos jerárquico, comprendiendo dicho sistema de almacenamiento de datos jerárquico una pila de almacenamiento jerárquico para almacenar datos, teniendo dicha pila de almacenamiento jerárquico una capa de administración (510) que permite configuración remota y control de dicha pila de almacenamiento jerárquico, dicho sistema de almacenamiento jerárquico incluye una capa de abstracción de volúmenes (531) adaptada para mantener un seguimiento de los diferentes volúmenes almacenados por el sistema de almacenamiento jerárquico (500), teniendo la pila de almacenamiento jerárquico por lo menos tres capas de almacenamiento local de datos para almacenar datos localmente en dicho sistema informático, donde el sistema de almacenamiento de datos jerárquico incluye una capa de almacenamiento lineal (540, 640) que mantiene un mapa de almacenamiento lineal (541) que específica dónde reside cada porción de datos, estando adaptada una capa de almacenamiento sin copias duplicadas (550, 650) para eliminar datos duplicados de los datos almacenados, y una capa de almacenamiento transitorio (560, 660) adaptada para comprimir los segmentos de datos, y teniendo dicha pila de almacenamiento jerárquico una capa de almacenamiento remoto de datos (580) que almacena datos con un servicio de almacenamiento de datos remoto (591);
estando adaptada dicha capa de administración de dicho sistema de almacenamiento de datos jerárquico para recibir una solicitud para crear un nuevo volumen de datos;
en el que dicha capa de administración de dicho sistema de almacenamiento de datos jerárquico está adaptada para asignar dicho nuevo volumen de datos en dicha pila de almacenamiento jerárquico, en el que dicha pila de almacenamiento jerárquico está adaptada para crear espacio de almacenamiento para dicho nuevo volumen de datos transfiriendo datos de dicha por lo menos una capa de almacenamiento local de datos a dicha capa de almacenamiento remoto de datos que almacena datos con dicho servicio de almacenamiento de datos remoto, en el que los datos desalojados se vierten a la pila de almacenamiento jerárquico.
7. El sistema de almacenamiento de datos jerárquico según se expone en la reivindicación 6, estando adaptado además para:
recibir en dicha capa de administración una solicitud para restablecer un volumen de datos;
copiar un índice de instantáneas de volumen de datos en dicha pila de almacenamiento jerárquico para crear un volumen de datos restablecido, dicho índice de instantáneas de volumen de datos referenciando datos en un servidor remoto; y
copiar datos de dicho servidor remoto cuando los usuarios locales de dicho sistema de almacenamiento de datos jerárquico solicitan datos de dicho volumen de datos restablecido .
8. El sistema de almacenamiento de datos jerárquico según se expone en cualquiera de las reivindicaciones 6 a 7, que está además adaptado para:
recibir en dicha capa de administración una solicitud para respaldar un volumen de datos en dicho sistema de almacenamiento de datos jerárquico;
crear un volumen de instantáneas de dicho volumen de datos en dicho sistema de almacenamiento de datos jerárquico; y
copiar datos de dicho volumen de instantáneas almacenado en dicha por lo menos una capa de almacenamiento local de datos, a dicho servicio de almacenamiento de datos remoto.
9. Un medio legible por ordenador, almacenando dicho medio legible por ordenador un conjunto de instrucciones informáticas para implementar un sistema de almacenamiento de datos jerárquico (500), llevando a cabo dicho conjunto de instrucciones informáticas las operaciones de:
instalar un controlador de dispositivo de almacenamiento virtual en un sistema operativo que se ejecuta en un sistema informático, dicho controlador de dispositivo de almacenamiento virtual para recibir solicitudes de almacenamiento de datos, pareciendo que el controlador de dispositivo de almacenamiento virtual pone a disposición volúmenes de disco virtuales (1451, 1452, 1453), donde las solicitudes de almacenamiento de datos para los volúmenes de disco virtuales se pasan al sistema de almacenamiento de datos jerárquico;
ejecutar una pila de almacenamiento jerárquico en dicho sistema informático para almacenar datos, teniendo dicha pila de almacenamiento jerárquico una capa de administración (510) que permite la configuración remota y el control de dicha pila de almacenamiento jerárquico, incluyendo dicho sistema de almacenamiento jerárquico una capa de abstracción de volúmenes (531) adaptada para mantener un seguimiento de los diferentes volúmenes almacenados por el sistema de almacenamiento jerárquico (500), teniendo la pila de almacenamiento jerárquico por lo menos tres capas de almacenamiento local de datos para almacenar localmente datos en dicho sistema informático, donde el sistema de almacenamiento de datos jerárquico incluye una capa de almacenamiento lineal (540, 640) que mantiene un mapa de almacenamiento lineal (541) que especifica dónde reside cada porción de datos, estando adaptada una capa de almacenamiento sin copias duplicadas (550, 650) para eliminar datos duplicados de los datos almacenados, y una capa de almacenamiento transitorio (560, 660) adaptada para comprimir los segmentos de datos, y teniendo dicha pila de almacenamiento jerárquico una capa de almacenamiento remoto de datos (580) que almacena datos con un servicio de almacenamiento de datos remoto (591); y
dirigir todas las solicitudes de almacenamiento de datos recibidas por dicho controlador de dispositivo de almacenamiento virtual a dicha pila de almacenamiento jerárquico;
comprendiendo además el procedimiento:
recibir una solicitud para crear un nuevo volumen de datos en dicha capa de administración de dicho sistema de almacenamiento de datos jerárquico;
crear dicho nuevo volumen de datos en dicha pila de almacenamiento jerárquico que almacenará inicialmente datos en dicha capa de almacenamiento local de datos y verterá posteriormente datos a dicha capa de almacenamiento remoto de datos que almacena datos con un servicio de almacenamiento de datos remoto, donde la creación de dicho nuevo volumen de datos se realiza desalojando datos inactivos de la capa de almacenamiento local de datos para crear espacio para dicho nuevo volumen de datos, donde los datos desalojados se vierten a la pila de almacenamiento jerárquico.
10. El medio legible por ordenador según se expone en la reivindicación 9, en el que dicho sistema informático comprende un servidor virtual basado en la nube.
11. El medio legible por ordenador según se expone en cualquiera de las reivindicaciones 9 o 10, en el que dicha por lo menos una capa de almacenamiento local de datos comprende una primera capa de almacenamiento local de datos que almacena datos en un formato en bruto y una segunda capa de almacenamiento local de datos que almacena datos en un formato con datos duplicados eliminados; o
en el que dicha por lo menos una capa de almacenamiento local de datos comprende una primera capa de almacenamiento local de datos que almacena datos en un sistema de memoria de estado sólido y una segunda capa de almacenamiento local de datos que almacena datos en una unidad de disco duro; o
en el que dicho conjunto de instrucciones informáticas lleva a cabo además las operaciones de:
recibir una solicitud para crear un respaldo de un volumen de datos almacenado en dicho sistema de almacenamiento de datos jerárquico;
crear un volumen de instantáneas de dicho volumen de datos en dicho sistema de almacenamiento de datos jerárquico; y
copiar datos de dicho volumen de instantáneas almacenado en dicha por lo menos una capa de almacenamiento local de datos, a dicho servicio de almacenamiento de datos remoto.
ES13793195T 2012-05-20 2013-05-20 Sistema de almacenamiento masivo jerárquico basado en servidor Active ES2827974T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261649305P 2012-05-20 2012-05-20
PCT/US2013/041871 WO2013177065A2 (en) 2012-05-20 2013-05-20 System and methods for implementing a server-based hierarchical mass storage system

Publications (1)

Publication Number Publication Date
ES2827974T3 true ES2827974T3 (es) 2021-05-25

Family

ID=49624488

Family Applications (1)

Application Number Title Priority Date Filing Date
ES13793195T Active ES2827974T3 (es) 2012-05-20 2013-05-20 Sistema de almacenamiento masivo jerárquico basado en servidor

Country Status (5)

Country Link
US (4) US10552385B2 (es)
EP (1) EP2852897B1 (es)
CN (1) CN104541252B (es)
ES (1) ES2827974T3 (es)
WO (1) WO2013177065A2 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6446995B2 (ja) * 2013-10-29 2019-01-09 株式会社リコー 情報処理システム及び情報処理方法
US9672165B1 (en) * 2014-05-21 2017-06-06 Veritas Technologies Llc Data management tier coupling primary storage and secondary storage
US9292327B1 (en) * 2014-05-29 2016-03-22 Emc Corporation Optimization for incremental backup of VMS
US9189342B1 (en) * 2014-05-29 2015-11-17 Emc Corporation Generic process for determining child to parent inheritance for fast provisioned or linked clone virtual machines
KR101653092B1 (ko) * 2015-02-06 2016-09-01 한국과학기술원 메시 네트워크 환경을 위한 생체 모방 알고리즘 기반 p2p 콘텐츠 캐싱 방법 및 시스템
CN104994069B (zh) * 2015-05-25 2019-01-01 南京信息工程大学 基于数据重复性验证的云存储数据完整性证明方法
US9817865B2 (en) * 2015-12-07 2017-11-14 International Business Machines Corporation Direct lookup for identifying duplicate data in a data deduplication system
CN105426781A (zh) * 2015-12-11 2016-03-23 芜湖乐锐思信息咨询有限公司 一种基于数据库的数据保护系统
US9959054B1 (en) 2015-12-30 2018-05-01 EMC IP Holding Company LLC Log cleaning and tiering in a log-based data storage system
US10944823B2 (en) * 2016-06-28 2021-03-09 At&T Intellectual Property I, L.P. Highly redundant and scalable storage area network architecture
US10846441B2 (en) * 2016-07-07 2020-11-24 Hitachi, Ltd. Computer system
US10884984B2 (en) 2017-01-06 2021-01-05 Oracle International Corporation Low-latency direct cloud access with file system hierarchies and semantics
US10795859B1 (en) * 2017-04-13 2020-10-06 EMC IP Holding Company LLC Micro-service based deduplication
US10795860B1 (en) 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
US10524022B2 (en) * 2017-05-02 2019-12-31 Seagate Technology Llc Data storage system with adaptive data path routing
US11113312B2 (en) 2017-06-29 2021-09-07 Microsoft Technology Licensing, Llc Reliable hierarchical storage management with data synchronization
US10949088B1 (en) 2017-07-21 2021-03-16 EMC IP Holding Company LLC Method or an apparatus for having perfect deduplication, adapted for saving space in a deduplication file system
US10936543B1 (en) 2017-07-21 2021-03-02 EMC IP Holding Company LLC Metadata protected sparse block set for SSD cache space management
US11461269B2 (en) 2017-07-21 2022-10-04 EMC IP Holding Company Metadata separated container format
US10860212B1 (en) 2017-07-21 2020-12-08 EMC IP Holding Company LLC Method or an apparatus to move perfect de-duplicated unique data from a source to destination storage tier
CN109309694A (zh) * 2017-07-27 2019-02-05 杭州海康威视数字技术股份有限公司 一种数据存储的方法和系统
US11113153B2 (en) 2017-07-27 2021-09-07 EMC IP Holding Company LLC Method and system for sharing pre-calculated fingerprints and data chunks amongst storage systems on a cloud local area network
US10929382B1 (en) 2017-07-31 2021-02-23 EMC IP Holding Company LLC Method and system to verify integrity of a portion of replicated data
CN107479971B (zh) * 2017-07-31 2021-01-01 努比亚技术有限公司 一种数据处理方法、终端及计算机可读存储介质
US10635632B2 (en) 2017-08-29 2020-04-28 Cohesity, Inc. Snapshot archive management
US11093453B1 (en) 2017-08-31 2021-08-17 EMC IP Holding Company LLC System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication
US11321192B2 (en) 2017-09-07 2022-05-03 Cohesity, Inc. Restoration of specified content from an archive
US11874805B2 (en) 2017-09-07 2024-01-16 Cohesity, Inc. Remotely mounted file system with stubs
US10884868B2 (en) * 2017-10-05 2021-01-05 Zadara Storage, Inc. Dedupe as an infrastructure to avoid data movement for snapshot copy-on-writes
US11263087B2 (en) * 2018-07-05 2022-03-01 EMC IP Holding Company LLC Methods and systems for serverless data deduplication
US11055187B2 (en) * 2019-01-03 2021-07-06 Bank Of America Corporation Resource allocation tool
TWI692955B (zh) * 2019-01-16 2020-05-01 香港商希瑞科技股份有限公司 伺服器及相關的電腦程式產品
US11151093B2 (en) * 2019-03-29 2021-10-19 International Business Machines Corporation Distributed system control for on-demand data access in complex, heterogenous data storage
CN110059018B (zh) * 2019-04-02 2021-04-13 北京空间飞行器总体设计部 一种航天器的数据存储系统及访问方法
CN112306372A (zh) * 2019-07-31 2021-02-02 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和程序产品
US11487701B2 (en) 2020-09-24 2022-11-01 Cohesity, Inc. Incremental access requests for portions of files from a cloud archival storage tier
CN114662160B (zh) * 2022-05-25 2022-08-23 成都易我科技开发有限责任公司 数字摘要方法、系统及网络传输中的数字摘要方法
CN115878204B (zh) * 2023-01-20 2023-07-04 北京国科环宇科技股份有限公司 一种操作系统的处理方法、装置、计算机设备和介质

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04165541A (ja) * 1990-10-30 1992-06-11 Hitachi Ltd ファイル再配置方法
US5155835A (en) * 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US5313631A (en) * 1991-05-21 1994-05-17 Hewlett-Packard Company Dual threshold system for immediate or delayed scheduled migration of computer data files
JP3181446B2 (ja) * 1993-09-24 2001-07-03 株式会社東芝 情報記憶装置
JP3086773B2 (ja) * 1994-03-16 2000-09-11 株式会社東芝 光ディスク装置
JPH0944381A (ja) * 1995-07-31 1997-02-14 Toshiba Corp データ格納方法およびデータ格納装置
US6601091B1 (en) * 1996-03-28 2003-07-29 Networks Associates Technology, Inc. Method for improving the perceived performance of a computer system
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US5978815A (en) * 1997-06-13 1999-11-02 Microsoft Corporation File system primitive providing native file system support for remote storage
IE20000203A1 (en) * 1999-03-25 2001-02-21 Converge Net Technologies Inc Storage domain management system
US6640278B1 (en) * 1999-03-25 2003-10-28 Dell Products L.P. Method for configuration and management of storage resources in a storage network
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6434682B1 (en) * 2000-09-28 2002-08-13 International Business Machines Corporation Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy
US6539460B2 (en) * 2001-01-19 2003-03-25 International Business Machines Corporation System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression
US20040233910A1 (en) * 2001-02-23 2004-11-25 Wen-Shyen Chen Storage area network using a data communication protocol
US20030004922A1 (en) 2001-06-27 2003-01-02 Ontrack Data International, Inc. System and method for data management
US20070094466A1 (en) * 2001-12-26 2007-04-26 Cisco Technology, Inc., A Corporation Of California Techniques for improving mirroring operations implemented in storage area networks and network based virtualization
GB2387684A (en) * 2002-04-19 2003-10-22 Hewlett Packard Co Management of a long term digital document storage system
CA2497306A1 (en) * 2002-09-10 2004-03-25 Exagrid Systems, Inc. Method and apparatus for integrating primary data storage with local and remote data protection
US7752294B2 (en) * 2002-10-28 2010-07-06 Netapp, Inc. Method and system for dynamic expansion and contraction of nodes in a storage area network
US7633955B1 (en) * 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
US20050289218A1 (en) 2004-06-28 2005-12-29 Rothman Michael A Method to enable remote storage utilization
US7441096B2 (en) * 2004-07-07 2008-10-21 Hitachi, Ltd. Hierarchical storage management system
US7472105B2 (en) * 2004-10-19 2008-12-30 Palo Alto Research Center Incorporated System and method for providing private inference control
US8055622B1 (en) * 2004-11-30 2011-11-08 Symantec Operating Corporation Immutable data containers in tiered storage hierarchies
US7546431B2 (en) * 2005-03-21 2009-06-09 Emc Corporation Distributed open writable snapshot copy facility using file migration policies
US7610285B1 (en) * 2005-09-21 2009-10-27 Stored IQ System and method for classifying objects
US8464238B1 (en) * 2006-01-31 2013-06-11 Qlogic, Corporation Method and system for managing storage area networks
US20080229046A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US8560691B2 (en) * 2007-06-19 2013-10-15 Microsoft Corporation Relocating item in distributed storage system
US8862689B2 (en) * 2007-10-24 2014-10-14 International Business Machines Corporation Local flash memory and remote server hybrid continuous data protection
US8375190B2 (en) * 2007-12-11 2013-02-12 Microsoft Corporation Dynamtic storage hierarachy management
JP5141234B2 (ja) * 2007-12-19 2013-02-13 日本電気株式会社 階層記憶制御装置、階層記憶制御システム及びそれらに用いる階層記憶制御方法及びそのプログラム
JP4674608B2 (ja) 2008-02-15 2011-04-20 ブラザー工業株式会社 ノード装置及び情報処理方法並びにノード装置用プログラム
US8392370B1 (en) * 2008-03-28 2013-03-05 Emc Corporation Managing data on data storage systems
US7831682B2 (en) * 2008-08-08 2010-11-09 Amazon Technologies, Inc. Providing a reliable backing store for block data storage
US8019732B2 (en) * 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US8359444B2 (en) * 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
US8370302B2 (en) 2009-06-02 2013-02-05 Hitachi, Ltd. Method and apparatus for block based volume backup
US9594759B2 (en) * 2009-06-16 2017-03-14 Microsoft Technology Licensing, Llc Backup and archival of selected items as a composite object
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
WO2011014167A1 (en) * 2009-07-29 2011-02-03 Hewlett-Packard Development Company, L.P. Making a physical copy of data at a remote storage device
JP5422298B2 (ja) * 2009-08-12 2014-02-19 株式会社日立製作所 階層管理ストレージシステムおよびストレージシステムの運用方法
US8595191B2 (en) * 2009-12-31 2013-11-26 Commvault Systems, Inc. Systems and methods for performing data management operations using snapshots
US8498997B2 (en) * 2009-09-23 2013-07-30 Hitachi, Ltd. Server image migration
US8732217B2 (en) * 2009-10-30 2014-05-20 Symantec Corporation Using a per file activity ratio to optimally relocate data between volumes
US8452932B2 (en) * 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8826001B2 (en) * 2010-04-27 2014-09-02 International Business Machines Corporation Securing information within a cloud computing environment
EP2388726B1 (en) * 2010-05-18 2014-03-26 Kaspersky Lab, ZAO Detection of hidden objects in a computer system
JP5343166B2 (ja) * 2010-05-27 2013-11-13 株式会社日立製作所 通信ネットワークを介してリモートのファイルサーバにファイルを転送するローカルのファイルサーバ、及び、それらのファイルサーバを有するストレージシステム
US8954669B2 (en) * 2010-07-07 2015-02-10 Nexenta System, Inc Method and system for heterogeneous data volume
US8578108B2 (en) * 2010-08-03 2013-11-05 International Business Machines Corporation Dynamic look-ahead extent migration for tiered storage architectures
KR101578642B1 (ko) * 2010-11-16 2015-12-17 인텔 코포레이션 데이터 기억 시스템에 대한 엔드포인트 캐싱
WO2012116369A2 (en) * 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US20120272236A1 (en) * 2011-04-20 2012-10-25 Ayal Baron Mechanism for host machine level template caching in virtualization environments
US20120278553A1 (en) * 2011-04-28 2012-11-01 Mudhiganti Devender R System and method for migration of data clones
CN102204218B (zh) 2011-05-31 2015-01-21 华为技术有限公司 数据处理方法、缓存节点、协作控制器及系统
US8793343B1 (en) * 2011-08-18 2014-07-29 Amazon Technologies, Inc. Redundant storage gateways
WO2013030893A1 (en) * 2011-08-31 2013-03-07 Hitachi, Ltd. Computer system and data access control method
US8825605B2 (en) * 2011-10-11 2014-09-02 Netapp, Inc. Deduplication aware scheduling of requests to access data blocks
US8806111B2 (en) * 2011-12-20 2014-08-12 Fusion-Io, Inc. Apparatus, system, and method for backing data of a non-volatile storage device using a backing store

Also Published As

Publication number Publication date
US20190310969A1 (en) 2019-10-10
EP2852897B1 (en) 2020-10-07
CN104541252B (zh) 2021-02-26
US11030159B2 (en) 2021-06-08
US20140040205A1 (en) 2014-02-06
EP2852897A2 (en) 2015-04-01
US20210286770A1 (en) 2021-09-16
WO2013177065A3 (en) 2014-02-27
CN104541252A (zh) 2015-04-22
US10552385B2 (en) 2020-02-04
US20210286769A1 (en) 2021-09-16
WO2013177065A2 (en) 2013-11-28
EP2852897A4 (en) 2016-08-03

Similar Documents

Publication Publication Date Title
ES2827974T3 (es) Sistema de almacenamiento masivo jerárquico basado en servidor
US9189421B2 (en) System and method for implementing a hierarchical data storage system
US8799413B2 (en) Distributing data for a distributed filesystem across multiple cloud storage systems
ES2658993T3 (es) Sistemas y métodos para almacenamiento distribuido
US8799414B2 (en) Archiving data for a distributed filesystem
US8805968B2 (en) Accessing cached data from a peer cloud controller in a distributed filesystem
US8805967B2 (en) Providing disaster recovery for a distributed filesystem
US7752492B1 (en) Responding to a failure of a storage system
US9298723B1 (en) Deduplication architecture
US8204858B2 (en) Snapshot reset method and apparatus
JP6067863B2 (ja) 分散ストレージシステムの制御方法
US8205049B1 (en) Transmitting file system access requests to multiple file systems
US8010543B1 (en) Protecting a file system on an object addressable storage system
US20090060195A1 (en) Storage apparatus and data managament method
US10303395B2 (en) Storage apparatus
US20090172417A1 (en) Key management method for remote copying
US8095804B1 (en) Storing deleted data in a file system snapshot
KR20230172394A (ko) 캐시 일관된 상호 연결 저장 장치에서 raid 회로를 사용하는 중복 배열 독립 디스크 시스템 및 방법
US11762682B2 (en) Methods and systems for storing data in a distributed system using offload components with advanced data services
US20110320507A1 (en) System and Methods for Digest-Based Storage
EP1983462A2 (en) Storage apparatus and data management method