ES2575155T3 - Suministro de programas de ejecución con acceso fiable al almacenamiento de datos a nivel de bloque no local - Google Patents

Suministro de programas de ejecución con acceso fiable al almacenamiento de datos a nivel de bloque no local Download PDF

Info

Publication number
ES2575155T3
ES2575155T3 ES11009559.3T ES11009559T ES2575155T3 ES 2575155 T3 ES2575155 T3 ES 2575155T3 ES 11009559 T ES11009559 T ES 11009559T ES 2575155 T3 ES2575155 T3 ES 2575155T3
Authority
ES
Spain
Prior art keywords
data storage
block
volume
copy
level
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
ES11009559.3T
Other languages
English (en)
Inventor
Peter N. Desantes
Matthew S. Garmen
Atle Normann Jorgensen
Roland Paterson-Jones
Tate Andrew Certain
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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
Priority claimed from US12/188,943 external-priority patent/US8015343B2/en
Priority claimed from US12/188,949 external-priority patent/US8019732B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Application granted granted Critical
Publication of ES2575155T3 publication Critical patent/ES2575155T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

Un método computarizado para gestionar mediante programas en ejecución el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque, dicho método comprendiendo: recibir una o más indicaciones de un primer grupo de peticiones de datos de acceso iniciadas por una primera copia de un primer programa (375) ejecutándose en un primer sistema informático (180, 300, 370, 390) para acceder a datos a nivel de bloque almacenados en un volumen de almacenamiento de datos a nivel de bloque no local (155), el volumen de almacenamiento de datos a nivel de bloque (155) siendo provisto por un segundo sistema de almacenamiento de datos distinto (165, 360) por medio de una o más redes (170, 185, 385) y estando conectado a un primer sistema informático (180, 300, 370, 390) de manera que la primera copia de programa en ejecución (375) inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos a nivel de bloque (155) por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque lógico local al primer sistema informático (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (155); responder automáticamente a las indicaciones recibidas del primer grupo de peticiones de acceso a datos por medio de la interacción con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la primera copia de programa en ejecución (375) como para iniciar la realización de la petición de acceso a datos del primer grupo en el volumen de almacenamiento de datos a nivel de bloque (155) provisto por el segundo sistema de almacenamiento de datos (165, 360); después de determinar que la primera copia de programa (375) ha dejado de estar disponible, identificar un tercer sistema informático (180, 300, 370, 390) en el que se está ejecutando una segunda copia del primer programa (375), siendo el tercer sistema informático distinto del primer sistema informático y del segundo sistema de almacenamiento de datos, la segunda copia del primer programa ya siendo ejecutada antes de que la primera copia del programa deje de estar disponible, y conectar el volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informático (180, 300, 370, 390) de manera que la segunda copia de programa (375) tenga acceso al segundo dispositivo de almacenamiento a nivel de bloque lógico local al tercer sistema informático (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (155), en el que identificar el tercer sistema informático (180, 300, 370, 390) en el que la segunda copia del primer programa (375) se está ejecutando y la conexión del volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informático (180, 300, 370, 390) se realiza automáticamente para mantener el acceso del primer programa (375) al volumen de almacenamiento de datos a nivel de bloque (155), el mantenimiento automático del acceso siendo realizado en respuesta a la definición automática de que la primera copia de programa (375) ha dejado de estar disponible; recibir una o más indicaciones de un segundo grupo de otras peticiones de acceso a datos iniciadas por la segunda copia de programa en ejecución (375) para el volumen de almacenamiento de datos a nivel de bloque (155) por medio de interacciones con el segundo dispositivo de almacenamiento de almacenamiento a nivel de bloque local y lógico en el tercer sistema informático (180, 300, 370, 390); y responder automáticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos mediante la interacción con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la segunda copia de programa en ejecución (375) para iniciar la realización de las peticiones de acceso a datos del segundo grupo en el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos (165, 360).

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Suministro de programas de ejecucion con acceso fiable al almacenamiento de datos a nivel de bloque no local ANTECEDENTES
Muchas companlas y otras organizaciones operan redes informaticas que interconectan numerosos sistemas informaticos para dar apoyo a sus operaciones como, por ejemplo, con los sistemas informaticos que estan co- localizados (Por ejemplo, como parte de una red local) o que, en cambio, estan situados en multiples ubicaciones geograficas diferentes (Por ejemplo, conectados mediante una o mas redes intermedias privadas o publicas). Por ejemplo, los centros de datos que alojan numeros significativos de sistemas informaticos interconectados co- localizados se han convertido en algo comun y ordinario como, por ejemplo, los centros de datos privados que son operados por y en nombre de una unica organizacion, y los centros de datos publicos que son operados por entidades como empresas. Algunos operadores de centros de datos publicos proporcionan acceso a la red, energla electrica, y servicios de instalacion seguros para el hardware que poseen varios clientes, mientras otros operadores de centros de datos publicos proporcionan "servicios completos" que incluyen tambien recursos de hardware disponibles para su uso por parte de sus clientes. Sin embargo, mientras la escala y el alcance de los centros de datos y de las redes informaticas tlpicas han aumentado, la tarea de proporcionar, administrar, y gestionar los recursos informaticos flsicos asociados se ha vuelto cada vez mas complicada.
El advenimiento de las tecnologlas de virtualizacion para hardware basico ha proporcionado algunos beneficios con respecto a la administracion de recursos informaticos a gran escala para muchos clientes con necesidades diferentes, permitiendo que varios recursos informaticos sean compartidos de forma eficiente y segura entre multiples clientes. Por ejemplo, las tecnologlas de virtualizacion tales como aquellas proporcionadas por XEN, VMWare, o User-Mode Linux pueden permitir que un unico sistema informatico flsico sea compartido entre multiples usuarios proporcionando a cada usuario una o mas maquinas virtuales hospedadas por el unico sistema informatico flsico, y cada una de dichas maquinas virtuales es una simulacion de software que actua como un sistema informatico logico diferente que proporciona a los usuarios la ilusion de que son los unicos operadores y administradores de determinado recurso informatico de hardware, mientras que tambien proporciona aislamiento de aplicacion y seguridad entre las diferentes maquinas virtuales. Ademas, algunas tecnologlas de virtualizacion proporcionan recursos virtuales que abarcan uno o mas recursos flsicos como, por ejemplo, una unica maquina virtual con multiples procesadores virtuales que en realidad abarca multiples sistemas informaticos flsicos diferentes.
El documento "Resumen de Red Hat Cluster Suite: Red Hat Cluster Suite para Red Hat Enterprise Linux 5", de fecha 1 de enero de 2007, paginas 1-67, Raleigh, NC 27606-2072 Estados Unidos, se refiere a un sistema y un metodo basados en clusteres de almacenamiento para proporcionar una imagen del sistema de ficheros coherente en todos los servidores de un cluster, y permitir que los servidores lean y escriban simultaneamente a un unico sistema de ficheros compartido. Un cluster de almacenamiento simplifica la administracion del almacenamiento limitando la instalacion y la aplicacion de parches de aplicaciones a un sistema de ficheros. Asimismo, con un sistema de ficheros a nivel cluster, un cluster de almacenamiento elimina la necesidad de copias redundantes de datos de aplicaciones y simplifica la copia de seguridad y la recuperacion de desastres. El Red Hat Cluster Suite proporciona el agrupamiento en cluster del almacenamiento a traves de Red Hat GFS. En particular, este documento de la tecnica anterior describe una administracion de servicio de alta disponibilidad que proporciona la capacidad de crear y administrar servicios de cluster de alta disponibilidad en un cluster Red Hat.
El presente documento describe una conmutacion por error ante el fallo de un servicio que se ejecuta en un nodo primario y que accede a un sistema de almacenamiento a nivel de bloque compartido remoto a un nodo secundario en el que se inicia una segunda instancia de servicio despues de detectar el fallo de la primera instancia de servicio.
El documento US 2008/189468 A1 se refiere a un sistema que incluye: (a) sistemas plurales de virtualizacion configurados en un cluster; (b) almacenamiento accesible para cada sistema de virtualizacion del cluster, en donde para cada maquina virtual operativa en un sistema de virtualizacion del cluster, el almacenamiento mantiene una representacion del estado de maquina virtual que incluye al menos una description de un sistema de hardware virtualizado y una imagen del estado de memoria virtualizada para la maquina virtual; y (c) un sistema de conmutacion por error que, en respuesta a una interruption de, o en, un sistema particular de los sistemas de virtualizacion, convierte al menos una maquina virtual afectada en otro sistema de virtualizacion del cluster y continua con los calculos de la maquina virtual convertida segun el estado codificado mediante un estado correspondiente de los estados de maquina virtual representados en el almacenamiento.
BREVE DESCRIPCION DE LOS DIBUJOS
La Figura 1 es un diagrama de red que ilustra una realization a modo de ejemplo en la cual multiples
sistemas informaticos ejecutan programas y acceden al almacenamiento de datos a nivel de bloque no local
fiable.
Las Figuras 2A-2F ilustran ejemplos del suministro de la funcionalidad de almacenamiento de datos a nivel de
bloque no local fiable a clientes.
La Figura 3 es un diagrama de bloques que ilustra sistemas informaticos a modo de ejemplo apropiados para
5
10
15
20
25
30
35
40
45
50
55
60
65
administrar el suministro a y el uso por parte de los clientes de la funcionalidad de almacenamiento de datos a nivel de bloque no local fiable.
La Figura 4 ilustra un diagrama de flujo de una realizacion a modo de ejemplo de una rutina de Administrador de Sistema de Almacenamiento de Datos a nivel de Bloque.
La Figura 5 ilustra un diagrama de flujo de una realizacion a modo de ejemplo de una rutina de Administrador de Nodo.
La Figura 6 ilustra un diagrama de flujo de una realizacion a modo de ejemplo de una rutina de Servidor de Almacenamiento de Datos a nivel de Bloque.
Las Figuras 7A-7B ilustran un diagrama de flujo de una realizacion a modo de ejemplo de una rutina de Administrador de Sistema de Servicios de Ejecucion de Programas.
La Figura 8 ilustra un diagrama de flujo de una realizacion a modo de ejemplo de una rutina de Administrador de Archivado de Almacenamiento de Datos a nivel de Bloque.
DESCRIPCION DETALLADA
El objeto de la presente invencion es proporcionar tecnicas para administrar el acceso de programas en ejecucion al almacenamiento de datos a nivel de bloque no local.
El presente objeto es resuelto por la invencion segun se reivindica en las reivindicaciones independientes.
Las realizaciones preferidas son definidas por las reivindicaciones dependientes.
Se describen tecnicas para administrar el acceso de programas en ejecucion al almacenamiento de datos a nivel de bloque no local. En al menos algunas realizaciones, las tecnicas incluyen proporcionar un servicio de almacenamiento de datos a nivel de bloque que usa multiples sistemas de almacenamiento en servidor para almacenar de modo fiable datos a nivel de bloque a los que se puede acceder y que pueden ser usados en una o mas redes por programas que se ejecutan en otros sistemas informaticos flsicos. Los usuarios del servicio de almacenamiento de datos a nivel de bloque pueden, cada uno, crear uno o mas volumenes de almacenamiento de datos a nivel de bloque que tengan, cada uno, una cantidad determinada de espacio de almacenamiento de datos a nivel de bloque, y pueden iniciar el uso de dicho volumen de almacenamiento de datos a nivel de bloque (al que tambien se hace referencia como un "volumen" en la presente) mediante uno o mas programas en ejecucion, teniendo al menos algunos de dichos volumenes copias almacenadas por dos o mas de los multiples sistemas de almacenamiento en servidor para mejorar la fiabilidad y disponibilidad del volumen para los programas en ejecucion. A modo de ejemplo, los multiples sistemas de almacenamiento de datos a nivel de bloque en servidor que almacenan datos a nivel de bloque pueden, en algunas realizaciones, estar organizados en uno o mas conjuntos u otros grupos que tienen, cada uno, multiples sistemas flsicos de almacenamiento en servidor co-localizados en una ubicacion geografica como, por ejemplo, en cada uno del unico o mas centros de datos distribuidos geograficamente, y el/los programa(s) que usa(n) un volumen almacenado en un sistema de almacenamiento de datos a nivel de bloque en servidor en un centro de datos puede(n) ejecutarse en uno o mas sistemas informaticos flsicos diferentes en dicho centro de datos. A continuacion se incluyen detalles adicionales relativos a las realizaciones de un servicio de almacenamiento de datos a nivel de bloque, y al menos algunas de las tecnicas descritas para proporcionar un servicio de almacenamiento de datos a nivel de bloque pueden ser realizadas automaticamente por las realizaciones de un modulo de Administrador de Sistema de Almacenamiento de Datos a nivel de Bloque ("BDS", por sus siglas en ingles).
Ademas, en al menos algunas realizaciones, los programas en ejecucion que acceden a y usan uno o mas de dichos volumenes de almacenamiento de datos a nivel de bloque no locales en una o mas redes pueden tener, cada uno, un administrador de nodo asociado que administra el acceso a dichos volumenes no locales por parte del programa como, por ejemplo, un modulo de administrador de nodo que es proporcionado por el servicio de almacenamiento de datos a nivel de bloque y/o que opera en conjunto con uno o mas modulos de Administrador de Sistema de BDS. Por ejemplo, un primer usuario que es un cliente del servicio de almacenamiento de datos a nivel de bloque puede crear un primer volumen de almacenamiento de datos a nivel de bloque, y ejecutar una o mas copias de programa en uno o mas nodos informaticos a los que se les ordena acceder a y usar el primer volumen (Por ejemplo, de una manera seriada, de manera simultanea o de otra manera superpuesta, etc.). Cuando un programa que se esta ejecutando en un nodo informatico inicia el uso de un volumen no local, el programa se puede montar o de otra forma se le puede proporcionar un dispositivo de almacenamiento de datos a nivel de bloque logico que es local al nodo informatico y que representa el volumen no local como, por ejemplo, para permitir que el programa en ejecucion interactue con el dispositivo de almacenamiento de datos a nivel de bloque logico local de la misma manera que cualquier otro disco duro local u otro dispositivo de almacenamiento de datos a nivel de bloque flsico que este conectado al nodo informatico (Por ejemplo, para realizar peticiones de acceso de lectura y escritura de datos, para implementar un sistema de ficheros o base de datos u otra estructura de datos de nivel superior en el volumen, etc.). Por ejemplo, en al menos algunas realizaciones, un dispositivo de almacenamiento de datos a nivel de bloque logico, local y representativo puede estar disponible para un programa en ejecucion mediante el uso de tecnologla GNBD ("Dispositivo de Bloque de Red Global"). Ademas, segun lo mencionado en mayor detalle mas abajo, cuando el programa en ejecucion interactua con el dispositivo de almacenamiento de datos a nivel de bloque logico, local y representativo, el administrador de nodo asociado puede administrar dichas interacciones
5
10
15
20
25
30
35
40
45
50
55
60
65
comunicandose en una o mas redes con al menos uno de los sistemas de almacenamiento de datos a nivel de bloque en servidor que almacena una copia del volumen no local asociado (Por ejemplo, de manera transparente para el programa en ejecucion y/o el nodo informatico) para realizar las interacciones en dicha copia de volumen almacenada en nombre del programa en ejecucion. Ademas, en al menos algunas realizaciones, al menos algunas de las tecnicas descritas para administrar el acceso de programas en ejecucion a volumenes de almacenamiento de datos a nivel de bloque no locales son realizadas automaticamente por realizaciones de un modulo de Administrador de Nodo.
Ademas, en al menos algunas realizaciones, al menos algunos volumenes de almacenamiento de datos a nivel de bloque (o porciones de dichos volumenes) pueden ademas almacenarse en uno o mas sistemas de almacenamiento de archivado remotos que son distintos de los sistemas de almacenamiento de datos a nivel de bloque en servidor usados para almacenar copias de volumen. En varias realizaciones, uno o mas sistemas de almacenamiento de archivado remoto pueden ser proporcionados por el servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, en un lugar remoto respecto de un centro de datos u otra ubicacion geografica que tiene un conjunto de sistemas de almacenamiento de datos a nivel de bloque en servidor co-localizados) o, en su lugar, pueden ser proporcionados por un servicio de almacenamiento a largo plazo remoto y usado por el almacenamiento de datos a nivel de bloque y, en al menos algunas realizaciones, el sistema de almacenamiento de archivado puede almacenar datos en un formato diferente a los datos a nivel de bloque (Por ejemplo, puede almacenar uno o mas fragmentos o porciones de un volumen como objetos distintos). Dichos sistemas de almacenamiento de archivado pueden usarse de varias maneras en varias realizaciones para proporcionar varios beneficios, segun lo mencionado en mayor detalle mas abajo. En algunas realizaciones en las que un servicio de almacenamiento a largo plazo remoto proporciona los sistemas de almacenamiento de archivado, los usuarios del servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, clientes del servicio de almacenamiento de datos a nivel de bloque que pagan tarifas para usar el servicio de almacenamiento de datos a nivel de bloque) que son tambien usuarios del servicio de almacenamiento a largo plazo remoto (Por ejemplo, clientes del servicio de almacenamiento a largo plazo remoto que pagan tarifas para usar el servicio de almacenamiento a largo plazo remoto) pueden tener al menos porciones de sus volumenes de almacenamiento de datos a nivel de bloque almacenadas por los sistemas de almacenamiento de archivado, como por ejemplo en respuesta a instrucciones de dichos clientes. En otras realizaciones, una unica organizacion puede proporcionar al menos algunas de las capacidades del servicio de almacenamiento de datos a nivel de bloque y de las capacidades del servicio de almacenamiento a largo plazo remoto (Por ejemplo, de manera integrada como, por ejemplo, parte de un unico servicio), mientras que en aun otras realizaciones el servicio de almacenamiento de datos a nivel de bloque se puede brindar en entornos que no incluyen el uso de sistemas de almacenamiento de datos de archivado. Ademas, en al menos algunas realizaciones, el uso de los sistemas de almacenamiento de archivado es realizado automaticamente bajo el control de uno o mas modulos de administrador de archivado como, por ejemplo, un modulo de administrador de archivado proporcionado por el servicio de almacenamiento de datos a nivel de bloque o de otra forma proporcionado para operar en conjunto con modulos de servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, proporcionado por el servicio de almacenamiento a largo plazo remoto para interactuar con el servicio de almacenamiento de datos a nivel de bloque).
En algunas realizaciones, al menos algunas de las tecnicas descritas son realizadas en nombre de un servicio de ejecucion de programas que administra la ejecucion de multiples programas en nombre de multiples usuarios del servicio de ejecucion de programas. En algunas realizaciones, el servicio de ejecucion de programas puede tener grupos de multiples sistemas informaticos anfitriones flsicos co-localizados en uno o mas ubicaciones geograficas como, por ejemplo, en uno o mas centros de datos distribuidos geograficamente, y puede ejecutar programas de usuarios en dichos sistemas informaticos anfitriones flsicos como, por ejemplo, bajo el control de un administrador de sistema de servicio de ejecucion de programas ("PES", por sus siglas en ingles), segun lo mencionado en mayor detalle mas abajo. En dichas realizaciones, los usuarios del servicio de ejecucion de programas (Por ejemplo, clientes del servicio de ejecucion de programas que pagan tarifas para usar el servicio de ejecucion de programas) que son tambien usuarios del servicio de almacenamiento de datos a nivel de bloque pueden ejecutar programas que acceden a y usan volumenes de almacenamiento de datos a nivel de bloque no locales proporcionados mediante el servicio de almacenamiento de datos a nivel de bloque. En otras realizaciones, una unica organizacion puede proporcionar al menos algunas de las capacidades del servicio de ejecucion de programas y de las capacidades del servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, de manera integrada como, por ejemplo, parte de un unico servicio), mientras que en aun otras realizaciones el servicio de almacenamiento de datos a nivel de bloque puede ser proporcionado en entornos que no incluyen un servicio de ejecucion de programas (Por ejemplo, internamente a un negocio u otra organizacion para dar apoyo a operaciones de la organizacion).
Ademas, los sistemas informaticos anfitriones en los que se ejecutan los programas pueden tener varias formas en varias realizaciones. Dichos multiples sistemas informaticos anfitriones pueden, por ejemplo, estar co-localizados en un lugar flsico (Por ejemplo, un centro de datos), y pueden ser administrados por multiples modulos de administrador de nodo que estan asociados, cada uno, a un subconjunto de uno o mas de los sistemas informaticos anfitriones. Al menos algunos de los sistemas informaticos anfitriones pueden, cada uno, incluir suficientes recursos informaticos (Por ejemplo, memoria no permanente, ciclos de CPU u otra medida de uso de CPU, ancho de banda de red, espacio de intercambio, etc.) para ejecutar multiples programas simultaneamente y, en al menos algunas
5
10
15
20
25
30
35
40
45
50
55
60
65
realizaciones, algunos o todos los sistemas informaticos pueden, cada uno, tener uno o mas dispositivos de almacenamiento de datos a nivel de bloque locales fisicamente conectados (Por ejemplo, discos duros, unidades de cinta magnetica, etc.) que se pueden usar para almacenar copias locales de programas que se ejecutaran y/o datos usados por dichos programas. Ademas, al menos algunos de los sistemas informaticos anfitriones en algunas de dichas realizaciones pueden, cada uno, alojar multiples nodos informaticos de maquina virtual que pueden, cada uno, ejecutar uno o mas programas en nombre de un usuario distinto, teniendo cada sistema informatico anfitrion un hipervisor en ejecucion u otro monitor de maquina virtual que administra las maquinas virtuales para dicho sistema informatico anfitrion. Para los sistemas informaticos anfitriones que ejecutan multiples maquinas virtuales, el modulo de administrador de nodo asociado para el sistema informatico anfitrion puede, en algunas realizaciones, ejecutarse en al menos una de multiples maquinas virtuales hospedadas (Por ejemplo, como parte de o en conjunto con el monitor de maquina virtual para el sistema informatico anfitrion), mientras que en otras situaciones un administrador de nodo puede ejecutarse en un sistema informatico fisico diferente de uno o mas sistemas informaticos anfitriones distintos que estan siendo administrados.
Los sistemas de almacenamiento de datos a nivel de bloque en servidor en los que se almacenan los volumenes pueden tener tambien varias formas en varias realizaciones. Segun lo mencionado previamente, multiples sistemas de almacenamiento de datos a nivel de bloque en servidor pueden, por ejemplo, estar co-localizados en un lugar fisico (Por ejemplo, un centro de datos), y pueden ser administrados por uno o mas modulos de Administrador de Sistema de BDS. En al menos algunas realizaciones, algunos o todos los sistemas de almacenamiento de datos a nivel de bloque en servidor pueden ser sistemas informaticos fisicos similares a los sistemas informaticos anfitriones que ejecutan programas, y en algunas de dichas realizaciones pueden, cada uno, ejecutar software del sistema de almacenamiento en servidor para colaborar en el suministro y el mantenimiento de volumenes en dichos sistemas de almacenamiento en servidor. Por ejemplo, en al menos algunas realizaciones, uno o mas de dichos sistemas informaticos de almacenamiento de datos a nivel de bloque en servidor pueden ejecutar al menos parte del Administrador de Sistema de BDS, como si, por ejemplo, uno o mas modulos de Administrador de Sistema de BDS fueran proporcionados de forma distribuida entre pares (peer-to-peer) por multiples sistemas informaticos de almacenamiento de datos a nivel de bloque en servidor que interactuan. En otras realizaciones, al menos algunos de los sistemas de almacenamiento de datos a nivel de bloque en servidor pueden ser dispositivos de almacenamiento en red que pueden carecer de algunos componentes E/S y/u otros componentes de sistemas informaticos fisicos, como si, por ejemplo, al menos parte del suministro y el mantenimiento de volumenes en dichos sistemas de almacenamiento en servidor fuera realizada por otros sistemas informaticos fisicos remotos (Por ejemplo, por un modulo de Administrador de Sistema de BDS que se ejecuta en uno o mas sistemas informaticos diferentes). Ademas, en algunas realizaciones, al menos algunos sistemas de almacenamiento de datos a nivel de bloque en servidor mantienen, cada uno, multiples discos duros locales, y crean bandas en al menos algunos volumenes a lo largo de una porcion de cada uno de algunos o todos los discos duros locales. Ademas, se pueden usar varios tipos de tecnicas para crear y usar volumenes, incluido, en algunas realizaciones, el uso de tecnologia LVM ("Administrador de Volumenes Logicos").
Segun lo mencionado previamente, en al menos algunas realizaciones, algunos o todos los volumenes de almacenamiento de datos a nivel de bloque tienen, cada uno, copias almacenadas en dos o mas sistemas de almacenamiento de datos a nivel de bloque en servidor distintos, como, por ejemplo, para mejorar la fiabilidad y disponibilidad de los volumenes. Mediante dicha accion, el fallo de un unico sistema de almacenamiento de datos a nivel de bloque en servidor puede no hacer que el acceso de programas en ejecucion a un volumen se pierda, ya que el uso de dicho volumen por dichos programas en ejecucion puede cambiar a otro sistema de almacenamiento de datos a nivel de bloque en servidor disponible que tenga una copia de dicho volumen. En dichas realizaciones, se puede mantener la coherencia entre las multiples copias de un volumen en los multiples sistemas de almacenamiento de datos a nivel de bloque en servidor de varias maneras. Por ejemplo, en algunas realizaciones, uno de los sistemas de almacenamiento de datos a nivel de bloque en servidor es designado como un sistema que almacena la copia primaria del volumen, y el otro o los otros sistemas de almacenamiento de datos a nivel de bloque en servidor son designados como sistemas que almacenan copias espejo del volumen - en dichas realizaciones, el sistema de almacenamiento de datos a nivel de bloque en servidor que tiene la copia primaria de volumen (al que se hace referencia como el "sistema de almacenamiento de datos a nivel de bloque en servidor primario" para el volumen) puede recibir y manejar peticiones de acceso a datos para el volumen, y en algunas de dichas realizaciones puede ademas actuar para mantener la coherencia de las otras copias espejo de volumen (Por ejemplo, mediante el envio de mensajes de actualizacion a los otros sistemas de almacenamiento de datos a nivel de bloque en servidor que proporcionan las copias espejo de volumen cuando los datos en la copia primaria de volumen son modificados, como, por ejemplo, en la forma de una relacion informatica patron-esclavo). Se pueden utilizar varios tipos de tecnicas de coherencia de volumenes, con detalles adicionales incluidos mas abajo.
En al menos algunas realizaciones, las tecnicas descritas incluyen brindar acceso fiable y disponible de un programa en ejecucion en un nodo informatico a un volumen de almacenamiento de datos a nivel de bloque mediante la administracion del uso de las copias primaria y espejo del volumen. Por ejemplo, el administrador de nodo para el programa en ejecucion puede, en algunas realizaciones, interactuar solamente con la copia primaria de volumen mediante el sistema de almacenamiento de datos a nivel de bloque en servidor primario como, por ejemplo, si la copia primaria de volumen fuera responsable de mantener las copias espejo de volumen o si se utilizara otro
5
10
15
20
25
30
35
40
45
50
55
60
65
mecanismo de replicacion. En dichas realizaciones, si el sistema de almacenamiento de datos a nivel de bloque en servidor primario falla al responder a una peticion enviada por el administrador de nodo (Por ejemplo, una peticion de acceso a datos iniciada por el programa en ejecucion, un mensaje ping u otra peticion iniciada por el administrador de nodo para corroborar periodicamente que el sistema de almacenamiento de datos a nivel de bloque en servidor primario esta disponible, etc.) dentro de un perlodo de tiempo predeterminado, o si el administrador de nodo es de otra forma alertado de que la copia primaria de volumen no esta disponible (Por ejemplo, mediante un mensaje del Administrador de Sistema de BDS), el administrador de nodo puede cambiar automaticamente sus interacciones a una de las copias espejo de volumen en un sistema de almacenamiento de datos a nivel de bloque en servidor espejo (Por ejemplo, el programa en ejecucion ignora dicho cambio, aparte de esperar posiblemente un tiempo ligeramente mayor para obtener una respuesta a una peticion de acceso a datos realizada por el programa en ejecucion si fuera dicha peticion de acceso a datos la que hubiera caducado e iniciado el cambio a la copia espejo de volumen). La copia espejo de volumen puede ser seleccionada de varias maneras, como, por ejemplo, si fuera la unica, si una orden en la que acceder a multiples copias espejo de volumen fuera previamente indicada, interactuando con el Administrador de Sistema de BDS para solicitar una indicacion de que copia espejo de volumen se promueve para actuar como la copia primaria de volumen, etc. En otras realizaciones, al menos algunos volumenes pueden tener multiples copias primarias, como si, por ejemplo, un volumen esta disponible para el acceso de lectura simultanea por multiples programas en ejecucion y la carga de acceso de datos resultante es distribuida a lo largo de multiples copias primarias del volumen - en dichas realizaciones, un administrador de nodo puede seleccionar una de las multiples copias primarias de volumen con la que interactuar de varias formas (Por ejemplo, de manera aleatoria, segun una instruccion de un modulo de Administrador de Sistema de BDS, etc.).
Ademas, el Administrador de Sistema de BDS puede llevar a cabo varias acciones en varias realizaciones para mantener el acceso fiable y disponible de un programa en ejecucion en un nodo informatico a un volumen de almacenamiento de datos a nivel de bloque. En particular, si el Administrador de Sistema de BDS se da cuenta de que un sistema de almacenamiento de datos a nivel de bloque en servidor particular (o un volumen particular en un sistema de almacenamiento de datos a nivel de bloque en servidor particular) deja de estar disponible, el Administrador de Sistema de BDS puede llevar a cabo varias acciones para algunos o todos los volumenes almacenados por dicho sistema de almacenamiento de datos a nivel de bloque en servidor (o para el volumen no disponible particular) para mantener su disponibilidad. Por ejemplo, para cada copia primaria de volumen almacenada en el sistema de almacenamiento de datos a nivel de bloque en servidor no disponible, el Administrador de Sistema de BDS puede promover una de las copias espejo de volumen existentes para que sea la nueva copia primaria de volumen, y notificar opcionalmente a uno o mas administradores de nodo del cambio (Por ejemplo, los administradores de nodo para cualquier programa en ejecucion que esta usando actualmente el volumen). Ademas, para cada copia de volumen almacenada, el Administrador de Sistema de BDS puede iniciar la creacion de al menos otra copia espejo nueva del volumen en un sistema de almacenamiento de datos a nivel de bloque en servidor diferente como, por ejemplo, mediante la replicacion de una copia existente del volumen en otro sistema de almacenamiento de datos a nivel de bloque en servidor disponible que tiene una copia existente (Por ejemplo, mediante la replicacion de la copia primaria de volumen). Ademas, en al menos algunas realizaciones, se pueden alcanzar otros beneficios en al menos algunas situaciones usando al menos porciones de un volumen que estan almacenadas en sistemas de almacenamiento de archivado remotos para colaborar en la replicacion de una nueva copia espejo del volumen (Por ejemplo, mayor fiabilidad de datos, capacidad de minimizar una cantidad de almacenamiento usado para copias espejo de volumen y/o poder de procesamiento continuo para mantener copias espejo completas de volumenes, etc.), segun lo mencionado en mayor detalle mas abajo.
El Administrador de Sistema de BDS puede darse cuenta de la no disponibilidad de un sistema de almacenamiento de datos a nivel de bloque en servidor de varias maneras como, por ejemplo segun un mensaje de un administrador de nodo que no puede contactar al sistema de almacenamiento de datos a nivel de bloque en servidor, segun un mensaje del sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, para indicar que ha sufrido una condition de error, ha iniciado una operation de modo apagado o fallo, etc.), segun una incapacidad para contactar al sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, segun un monitoreo periodico o constante de algunos o todos los sistemas de almacenamiento de datos a nivel de bloque en servidor), etc. Ademas, la no disponibilidad de un sistema de almacenamiento de datos a nivel de bloque en servidor puede ser causada por varios episodios en varias realizaciones, tales como el fallo de uno o mas discos duros u otros medios de almacenamiento en los que el sistema de almacenamiento de datos a nivel de bloque en servidor almacena al menos una portion de uno o mas volumenes, el fallo de uno o mas componentes diferentes del sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, la memoria de la CPU, un ventilador, etc.), un fallo de energla electrica en el sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, un fallo de energla en un unico sistema de almacenamiento de datos a nivel de bloque en servidor, en un bastidor de multiples sistemas de almacenamiento de datos a nivel de bloque en servidor, en todo un centro de datos, etc.), un fallo de red u otra comunicacion que evita que el sistema de almacenamiento de datos a nivel de bloque en servidor se comunique con un administrador de nodo y/o con el Administrador de Sistema de BDS, etc. En algunas realizaciones, el fallo de o los problemas con cualquier componente de un sistema de almacenamiento de datos a nivel de bloque en servidor pueden ser considerados una condicion de no disponibilidad para todo el sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, en realizaciones en las que un sistema de almacenamiento de datos a nivel de bloque en servidor mantiene multiples discos duros locales, el fallo de o los
5
10
15
20
25
30
35
40
45
50
55
60
65
problemas con cualquiera de los discos duros locales pueden ser considerados una condicion de no disponibilidad para todo el sistema de almacenamiento de datos a nivel de bloque en servidor), mientras que en otras realizaciones un sistema de almacenamiento de datos a nivel de bloque en servidor no sera considerado no disponible siempre que pueda responder a peticiones de acceso a datos.
Ademas, aparte de mover uno o mas volumenes desde un sistema de almacenamiento de datos a nivel de bloque en servidor existente cuando dicho sistema de almacenamiento de datos a nivel de bloque en servidor deja de estar disponible, el Administrador de Sistema de BDS puede, en algunas realizaciones, decidir mover uno o mas volumenes de un sistema de almacenamiento de datos a nivel de bloque en servidor existente a un sistema de almacenamiento de datos a nivel de bloque en servidor diferente y/o decidir crear una copia nueva de uno o mas volumenes en varios momentos diferentes y por distintas razones. Dicho movimiento o creacion de una copia nueva de un volumen puede realizarse de manera similar a la mencionada en mayor detalle en otra parte de este documento (Por ejemplo, mediante la replicacion de la copia primaria del volumen para crear una copia nueva, y mediante la eliminacion opcional de la copia anterior del volumen en al menos algunas situaciones como, por ejemplo, cuando la copia de volumen se esta moviendo). Las situaciones que pueden provocar un movimiento de volumen o la creacion de una nueva copia de volumen incluyen, por ejemplo, la siguiente lista no excluyente: un sistema de almacenamiento de datos a nivel de bloque en servidor particular puede volverse sobreutilizado (Por ejemplo, segun el uso de la CPU, el ancho de banda de red, el acceso E/S, la capacidad de almacenamiento, etc.) como, por ejemplo, para desencadenar el movimiento de uno o mas volumenes desde dicho sistema de almacenamiento de datos a nivel de bloque en servidor; un sistema de almacenamiento de datos a nivel de bloque en servidor particular puede carecer de suficientes recursos para una modificacion deseada de un volumen existente (Por ejemplo, puede carecer de suficiente espacio de almacenamiento disponible si se requiere que el tamano de un volumen existente sea ampliado) como, por ejemplo, para desencadenar el movimiento de uno o mas volumenes desde dicho sistema de almacenamiento de datos a nivel de bloque en servidor; un sistema de almacenamiento de datos a nivel de bloque en servidor particular puede requerir mantenimiento o actualizaciones que haran que este no este disponible por un perlodo de tiempo como, por ejemplo, para desencadenar el movimiento temporal o permanente de uno o mas volumenes desde dicho sistema de almacenamiento de datos a nivel de bloque en servidor; segun el reconocimiento de que los patrones de uso para un volumen particular u otras caracterlsticas de un volumen pueden estar mejor alojados en otros sistemas de almacenamiento de datos a nivel de bloque en servidor como, por ejemplo, otro sistema de almacenamiento de datos a nivel de bloque en servidor con capacidades adicionales (Por ejemplo, para volumenes que tienen modificaciones de datos frecuentes, usar un sistema de almacenamiento de datos a nivel de bloque en servidor primario con capacidades de escritura de disco superiores a las capacidades promedio, y/o para volumenes que son muy grandes de tamano, usar un sistema de almacenamiento de datos a nivel de bloque en servidor primario con una capacidad de almacenamiento superior a la capacidad promedio); en respuesta a una peticion de un usuario que ha creado o que de otra forma esta asociado a un volumen (Por ejemplo, en respuesta a la compra del usuario de acceso premium a un sistema de almacenamiento de datos a nivel de bloque en servidor que tiene capacidades mejoradas); para proporcionar al menos una copia nueva de un volumen en una ubicacion geografica diferente (Por ejemplo, otro centro de datos) en el cual los programas se ejecutan como, por ejemplo, para desencadenar el movimiento y/o el copiado del volumen desde un sistema de almacenamiento de datos a nivel de bloque en servidor en una primera ubicacion geografica cuando se solicita el uso de un volumen por un programa en ejecucion en otra ubicacion geografica; etc.
Ademas, despues de que se ha movido un volumen o se ha creado una nueva copia, el Administrador de Sistema de BDS puede, en algunas realizaciones y situaciones, actualizar uno o mas administradores de nodo, segun corresponda (Por ejemplo, solo administradores de nodo para programas en ejecucion que estan usando actualmente el volumen, todos los administradores de nodo, etc.). En otras realizaciones, se puede mantener informacion distinta sobre los volumenes de otra manera como, por ejemplo, mediante una o mas copias de una base de datos de informacion de volumen que es accesible en red para administradores de nodo y/o para el Administrador de Sistema de BDS. Una lista no excluyente de tipos de information sobre volumenes que pueden mantenerse incluye lo siguiente: un identificador para un volumen como, por ejemplo, un identificador que es unico para los sistemas de almacenamiento de datos a nivel de bloque en servidor que almacenan copias del volumen o que es universalmente unico para el servicio de almacenamiento de datos a nivel de bloque; informacion de acceso restringido para un volumen como, por ejemplo, contrasenas o claves de cifrado, o listas u otras indicaciones de usuarios autorizados para el volumen; informacion sobre el sistema de almacenamiento de datos a nivel de bloque en servidor primario para el volumen como, por ejemplo, una direction de red y/u otra informacion de acceso; informacion sobre uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor espejo para el volumen como, por ejemplo, informacion sobre una orden que indica que sistema de almacenamiento de datos a nivel de bloque en servidor espejo sera promovido para ser el sistema primario si el sistema de almacenamiento en servidor primario existente deja de estar disponible, una direccion de red y/u otra informacion de acceso, etc.; informacion sobre cualquier copia instantanea de volumen que hubiera sido creada para el volumen, segun lo descrito en mayor detalle mas abajo; informacion sobre si el volumen estara o no disponible para los usuarios diferentes al creador del volumen, y, en dicho caso, bajo que circunstancias (Por ejemplo, para acceso de solo lectura, para que otros usuarios realicen sus propios volumenes que son copias de este volumen, informacion de precios para que otros usuarios reciban varios tipos de acceso al volumen); etc.
5
10
15
20
25
30
35
40
45
50
55
60
65
Ademas de mantener el acceso fiable y disponible de los programas en ejecucion para los volumenes de almacenamiento de datos a nivel de bloque mediante el movimiento o la replicacion de copias de volumen cuando los sistemas de almacenamiento de datos a nivel de bloque en servidor dejan de estar disponibles, el servicio de almacenamiento de datos a nivel de bloque puede realizar otras acciones en otras situaciones para mantener el acceso de los programas en ejecucion a los volumenes de almacenamiento de datos a nivel de bloque. Por ejemplo, si un primer programa en ejecucion deja de estar disponible inesperadamente, en algunas realizaciones el servicio de almacenamiento de datos a nivel de bloque y/o el servicio de ejecucion de programas pueden llevar a cabo acciones para que un segundo programa en ejecucion diferente (Por ejemplo, una segunda copia del mismo programa que se esta ejecutando en un sistema informatico anfitrion diferente) se conecte a algunos o todos los volumenes de almacenamiento de datos a nivel de bloque que estaban en uso por parte del primer programa no disponible, de modo que el segundo programa pueda rapidamente asumir al menos algunas operaciones del primer programa no disponible. El segundo programa puede, en algunas situaciones, ser un nuevo programa cuya ejecucion se inicia a ralz de la no disponibilidad del primer programa existente, mientras que en otras situaciones el segundo programa puede ya estar ejecutandose (Por ejemplo, si multiples copias del programa son ejecutadas simultaneamente para compartir una carga total de trabajo como, por ejemplo, multiples programas en servidor Web que reciben diferentes peticiones entrantes de clientes con mediacion de un equilibrador de carga, con una de las multiples copias de programa seleccionada para ser el segundo programa; si el segundo programa es una copia en espera del programa que se esta ejecutando para permitir un intercambio "en caliente" desde el primer programa existente en caso de no disponibilidad como, por ejemplo, sin que la copia en espera del programa se este utilizando activamente hasta que ocurra la no disponibilidad del primer programa existente; etc.). Ademas, en algunas realizaciones, un segundo programa en el cual la conexion y el uso continuado de un volumen existente estan cambiados puede estar en otro sistema informatico flsico anfitrion en la misma ubicacion geografica (Por ejemplo, el mismo centro de datos) como primer programa, mientras que en otras realizaciones el segundo programa puede estar en una ubicacion geografica diferente (Por ejemplo, un centro de datos diferente como, por ejemplo, en conjunto con una copia del volumen que se ha movido previamente o simultaneamente a dicho otro centro de datos y que sera utilizada por dicho segundo programa). Ademas, en algunas realizaciones, se pueden llevar a cabo otras acciones relacionadas para facilitar ademas el cambio al segundo programa como, por ejemplo, la redirection de algunas comunicaciones dirigidas al primer programa no disponible hacia el segundo programa.
Ademas, en al menos algunas realizaciones, se pueden utilizar otras tecnicas para proporcionar acceso fiable y disponible a volumenes de almacenamiento de datos a nivel de bloque, as! como otros beneficios como, por ejemplo, para permitir que una copia de un volumen indicado sea guardada para uno o mas sistemas de almacenamiento de archivado remoto (Por ejemplo, en una segunda ubicacion geografica que es remota respecto de una primera ubicacion geografica en la que los sistemas de almacenamiento de datos a nivel de bloque en servidor almacenan las copias primaria y espejo activas del volumen y/o que es remota respecto de los sistemas informaticos flsicos anfitriones que ejecutan los programas que usan el volumen) como, por ejemplo, para copias de seguridad a largo plazo y/u otros propositos. Por ejemplo, en algunas realizaciones, los sistemas de almacenamiento de archivado pueden ser proporcionados por un servicio de almacenamiento remoto accesible en red. Ademas, las copias de un volumen que son guardadas para los sistemas de almacenamiento de archivado pueden, en al menos algunas situaciones, ser copias instantaneas del volumen en un punto particular en el tiempo, pero no actualizadas automaticamente ya que el uso continuado del volumen hace que sus contenidos de datos a nivel de bloque almacenados cambien, y/o que no esten disponibles para ser conectados a y usados por programas en ejecucion de la misma manera que los volumenes. De esta manera, a modo de ejemplo, una copia instantanea a largo plazo de un volumen puede ser usada, por ejemplo, como una copia de seguridad de un volumen, y puede ademas, en algunas realizaciones, servir como la base de uno o mas volumenes nuevos que son creados a partir de la copia instantanea (Por ejemplo, de modo que los nuevos volumenes comiencen con los mismos contenidos de almacenamiento de datos a nivel de bloque que la copia instantanea).
Ademas, las copias instantaneas de un volumen en los sistemas de almacenamiento de archivado pueden ser almacenadas de varias maneras como, por ejemplo, para representar fragmentos mas pequenos de un volumen (Por ejemplo, si los sistemas de almacenamiento de archivado almacenan datos como objetos mas pequenos en lugar de un bloque de datos secuencial, lineal y de gran tamano). Por ejemplo, un volumen puede estar representado como una serie de multiples fragmentos mas pequenos (con un volumen que tiene un tamano de, por ejemplo, un gigabyte o un terabyte, y con un fragmento que tiene un tamano que es, por ejemplo, de unos pocos megabytes), y la information sobre algunos o todos los fragmentos (Por ejemplo, cada fragmento que es modificado) puede ser almacenada de modo separado en los sistemas de almacenamiento de archivado como, por ejemplo, tratando a cada fragmento como un objeto almacenado distinto. Ademas, en al menos algunas realizaciones, una segunda copia instantanea posterior de un volumen particular puede ser creada de forma tal que se almacenen solamente los cambios incrementales a partir de una copia instantanea anterior del volumen como, por ejemplo, mediante la inclusion de copias almacenadas de nuevos fragmentos de almacenamiento que han sido creados o modificados desde la copia instantanea anterior, pero compartiendo copias almacenadas de algunos fragmentos previamente existentes con la copia instantanea anterior si dichos fragmentos no han cambiado. En dichas realizaciones, si una copia instantanea anterior es borrada posteriormente, los fragmentos previamente existentes almacenados por dicha copia instantanea anterior que sean compartidos por copias instantaneas posteriores pueden retenerse para ser utilizados por parte de dichas copias instantaneas posteriores, mientras que los fragmentos
5
10
15
20
25
30
35
40
45
50
55
60
65
previamente existentes no compartidos almacenados por dicha copia instantanea anterior pueden borrarse.
Ademas, en al menos algunas realizaciones, cuando se crea una copia instantanea de un volumen en un punto en el tiempo, se puede permitir que el acceso a la copia primaria de volumen por programas en ejecucion continue, incluido el permiso de modificaciones a los datos almacenados en la copia primaria de volumen, pero sin que dichas modificaciones de datos continuos sean reflejadas en la copia instantanea como, por ejemplo, si la copia instantanea se basara en fragmentos de volumen almacenados en los sistemas de almacenamiento de archivado que no son actualizados una vez que la creacion de la copia instantanea hubiera comenzado hasta que la creacion de la copia instantanea hubiera finalizado. Por ejemplo, en al menos algunas realizaciones, las tecnicas de copia en escritura se usan cuando se inicia la creacion de una copia instantanea de un volumen y un fragmento del volumen se modifica posteriormente como, por ejemplo, para mantener inicialmente copias almacenadas del fragmento no modificado y del fragmento modificado en el sistema de almacenamiento de datos a nivel de bloque en servidor primario que almacena la copia primaria de volumen (y, opcionalmente, tambien en los sistemas de almacenamiento de datos a nivel de bloque en servidor espejo que almacenan una o mas copias espejo del volumen). Cuando se recibe confirmacion de que los sistemas de almacenamiento de archivado han almacenado con exito la copia instantanea del volumen (incluida una copia del fragmento no modificado), la copia del fragmento no modificado en el sistema de almacenamiento de datos a nivel de bloque en servidor primario (y, opcionalmente, en los sistemas de almacenamiento de datos a nivel de bloque en servidor espejo) puede borrarse.
Ademas, dichos fragmentos de volumen u otros datos de volumen almacenados en los sistemas de almacenamiento de archivado se pueden usar de otras formas en al menos algunas realizaciones como, por ejemplo, para usar los sistemas de almacenamiento de archivado como un almacen de respaldo para las copias primaria y/o espejo de algunos o todos los volumenes. Por ejemplo, los datos de volumen almacenados en los sistemas de almacenamiento de archivado se pueden usar para ayudar a mantener la coherencia entre multiples copias de un volumen en multiples sistemas de almacenamiento de datos a nivel de bloque en servidor en al menos algunas situaciones. A modo de ejemplo, una o mas copias espejo de un volumen pueden ser creadas o actualizadas segun, al menos parcialmente, fragmentos de volumen almacenados en los sistemas de almacenamiento de archivado como, por ejemplo, para minimizar o eliminar una necesidad de acceder a la copia primaria de volumen para obtener al menos algunos de los fragmentos de volumen. Por ejemplo, si la copia primaria de volumen es actualizada mas rapidamente o mas fiablemente que los fragmentos modificados en los sistemas de almacenamiento de archivado, una nueva copia espejo de volumen puede ser creada usando al menos algunos fragmentos de volumen almacenados en los sistemas de almacenamiento de archivado que se conocen por ser precisos (Por ejemplo, a partir de una copia instantanea de volumen reciente), y accediendo a la copia primaria de volumen unicamente para obtener porciones del volumen que correspondan a fragmentos que pueden haber sido modificados despues de la creacion de la copia instantanea de volumen. De manera similar, si los fragmentos modificados en los sistemas de almacenamiento de archivado reflejan, de modo fiable, un estado actual de una copia primaria de volumen, una copia espejo de volumen puede ser actualizada usando aquellos fragmentos modificados en lugar de mediante interacciones por parte de o con la copia primaria de volumen.
Ademas, en algunas realizaciones, la cantidad de datos que es almacenada en una copia espejo de volumen (y el tamano resultante de la copia espejo de volumen) puede ser mucho menor que la de la copia primaria del volumen como, por ejemplo, si la informacion de volumen en los sistemas de almacenamiento de archivado fuera usada en lugar de al menos algunos datos que de otra forma serlan almacenados en dicha copia espejo minima de volumen. A modo de ejemplo, una vez que una copia instantanea de un volumen es creada en uno o mas sistemas de almacenamiento de archivado, una copia espejo minima de un volumen no necesita, en dichas realizaciones, almacenar los datos de volumen que estan presentes en la copia instantanea de volumen. Mientras las modificaciones se realizan en la copia primaria de volumen despues de la creacion de la copia instantanea, algunas o todas las modificaciones en los datos tambien pueden realizarse en la copia espejo minima de volumen (Por ejemplo, todas las modificaciones de datos, solamente las modificaciones de datos que no estan reflejadas en fragmentos de volumen modificados almacenados en los sistemas de almacenamiento de archivado, etc.); entonces, si el acceso a la copia espejo minima de volumen es luego necesario como, por ejemplo, si la copia espejo minima de volumen se promueve para ser la copia primaria de volumen, los otros datos que faltan de la copia espejo minima de volumen (Por ejemplo, las porciones no modificadas del volumen) pueden ser almacenados recuperandolos desde los sistemas de almacenamiento de archivado (Por ejemplo, a partir de la copia instantanea de volumen anterior). De esta manera, la fiabilidad del volumen puede ser mejorada, mientras tambien se minimiza la cantidad de espacio de almacenamiento usado en los sistemas de almacenamiento de datos a nivel de bloque en servidor para las copias espejo de volumen.
Incluso en otras realizaciones, la copia definitiva o maestra de un volumen puede ser mantenida en los sistemas de almacenamiento de archivado, y las copias primaria y espejo del volumen pueden reflejar un cache u otro subconjunto del volumen (Por ejemplo, un subconjunto al que se ha accedido recientemente y/o al que se espera acceder pronto); en dichas realizaciones, el volumen de almacenamiento de datos a nivel de bloque no local del servicio de almacenamiento de datos a nivel de bloque puede ser usado para proporcionar una fuente de datos de volumen mas proxima para el acceso por parte de los programas en ejecucion que los sistemas de almacenamiento de archivado remotos. Ademas, en al menos algunas de dichas realizaciones, un volumen se puede describir de
5
10
15
20
25
30
35
40
45
50
55
60
65
cara a los usuarios como que tiene un tamano particular que corresponde a la copia maestra mantenida en los sistemas de almacenamiento de archivado, pero con las copias primaria y espejo de un tamano mas pequeno. Ademas, en al menos algunas de dichas realizaciones, las tecnicas de actualizacion diferida pueden ser usadas para actualizar de manera inmediata una copia de datos en un primer almacen de datos (Por ejemplo, una copia primaria de volumen en un sistema de almacenamiento de datos a nivel de bloque en servidor) pero para actualizar la copia de los mismos datos en un segundo almacen de datos distinto (Por ejemplo, los sistemas de almacenamiento de archivado) mas tarde como, por ejemplo, para mantener una estricta coherencia de datos en el segundo almacen de datos asegurando que las operaciones de escritura u otras modificaciones de datos en una porcion de un volumen sean actualizadas en el segundo almacen de datos antes de realizar cualquier operacion de lectura posterior u otro acceso de dicha porcion del volumen desde el segundo almacen de datos (Por ejemplo, mediante el uso de tecnicas de actualizacion de cache de escritura diferida). Dichas tecnicas de actualizacion diferida se pueden usar, por ejemplo, cuando se actualizan fragmentos modificados de un volumen en sistemas de almacenamiento de archivado, o cuando se actualiza una copia espejo de volumen a partir de fragmentos modificados del volumen que estan almacenados en sistemas de almacenamiento de archivado. En otras realizaciones, se pueden usar otras tecnicas cuando se actualizan fragmentos modificados de un volumen en sistemas de almacenamiento de archivado como, por ejemplo, usar tecnicas de cache de escritura inmediata para actualizar inmediatamente la copia de datos en el segundo almacen de datos (Por ejemplo, en los sistemas de almacenamiento de archivado) cuando se modifica la copia de los datos en el primer almacen de datos.
Dichas copias instantaneas de volumen almacenadas en sistemas de almacenamiento de archivado tambien ofrecen varios beneficios. Por ejemplo, si todas las copias primaria y espejo de un volumen estan almacenadas en multiples sistemas de almacenamiento de datos a nivel de bloque en servidor en una unica ubicacion geografica (Por ejemplo, un centro de datos), y los sistemas informatico y de almacenamiento en dicha ubicacion geografica dejan de estar disponibles (Por ejemplo, se corta la electricidad en todo un centro de datos), la existencia de una copia instantanea reciente del volumen en un lugar de almacenamiento remoto diferente puede asegurar que una version reciente del volumen este disponible cuando los sistemas informatico y de almacenamiento en la ubicacion geografica esten disponibles nuevamente mas tarde (Por ejemplo, cuando la electricidad se restablezca) como, por ejemplo, si se pierden los datos de uno o mas sistemas de almacenamiento en servidor en la ubicacion geografica. Ademas, en dicha situacion, se pueden crear una o mas copias nuevas del volumen en una o mas ubicaciones geograficas nuevas segun una copia instantanea reciente a largo plazo del volumen a partir de los sistemas de almacenamiento de archivado remotos como, por ejemplo, para permitir que una o mas copias del programa en ejecucion fuera de una ubicacion geografica no disponible accedan a y usen dichas copias nuevas de volumen. Mas abajo se incluyen detalles adicionales relativos a los sistemas de almacenamiento de archivado y su uso.
Segun lo mencionado previamente, en al menos algunas realizaciones, algunos o todos los volumenes de almacenamiento de datos a nivel de bloque tienen, cada uno, copias almacenadas en dos o mas sistemas de almacenamiento de datos a nivel de bloque en servidor distintos en una unica ubicacion geografica como, por ejemplo, dentro del mismo centro de datos en el que los programas en ejecucion accederan al volumen; localizando todas las copias de volumen y programas en ejecucion en el mismo centro de datos u otra ubicacion geografica, se pueden mantener varias caracterlsticas deseadas de acceso a datos (Por ejemplo, segun una o mas redes internas en dicho centro de datos u otra ubicacion geografica) como, por ejemplo, latencia y rendimiento. Por ejemplo, en al menos algunas realizaciones, las tecnicas descritas pueden proporcionar acceso al almacenamiento de datos a nivel de bloque no local que tiene caracterlsticas de acceso similares a, o mejores que, las caracterlsticas de acceso de dispositivos de almacenamiento de datos a nivel de bloque flsicos locales, pero con mucha mas fiabilidad similar a, o que excede, las caracterlsticas de fiabilidad de los sistemas RAID ("Conjunto Redundante de Discos Independientes/Economicos") y/o SANs ("Redes de Area de Almacenamiento") dedicados y a un coste mucho mas bajo. En otras realizaciones, las copias primaria y espejo para al menos algunos volumenes pueden, en cambio, estar almacenadas de otra manera como, por ejemplo, en diferentes ubicaciones geograficas (Por ejemplo, diferentes centros de datos) como, por ejemplo, para mantener ademas la disponibilidad de un volumen aun cuando todo un centro de datos deje de estar disponible. En realizaciones en las que las copias de volumen se pueden almacenar en ubicaciones geograficas diferentes, un usuario puede, en algunas situaciones, solicitar que un programa particular sea ejecutado proximo a un volumen particular (Por ejemplo, en el mismo centro de datos en donde se ubica la copia primaria de volumen), o que un volumen particular se ubique proximo a un programa en ejecucion particular como, por ejemplo, para proporcionar un ancho de banda de red relativamente alto y baja latencia para las comunicaciones entre el programa en ejecucion y la copia primaria de volumen.
Ademas, para al menos algunos usuarios, se puede proporcionar acceso a algunas o todas las tecnicas descritas, en algunas realizaciones, segun una tarifa u otra forma de pago. Por ejemplo, los usuarios pueden pagar tarifas por una unica vez, tarifas periodicas (Por ejemplo, de forma mensual) y/o uno o mas tipos de tarifas basadas en el uso para utilizar el servicio de almacenamiento de datos a nivel de bloque con el fin de almacenar y acceder a volumenes, usar el servicio de ejecucion de programas para ejecutar programas, y/o usar sistemas de almacenamiento de archivado (Por ejemplo, proporcionados por un servicio de almacenamiento a largo plazo remoto) para almacenar copias de seguridad a largo plazo u otras copias instantaneas de volumenes. Las tarifas pueden determinarse segun uno o mas factores y actividades como, por ejemplo, segun se indica en el siguiente listado no excluyente: segun el tamano de un volumen como, por ejemplo, para crear el volumen (Por ejemplo, como
5
10
15
20
25
30
35
40
45
50
55
60
65
una tarifa por una unica vez), para tener almacenamiento y/o uso continuado del volumen (Por ejemplo, una tarifa mensual), etc.; segun caracterlsticas diferentes al tamano de un volumen, tales como un numero de copias espejo, caracterlsticas de sistemas de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, tarifas de acceso a datos, tamanos de almacenamiento, etc.) en los que las copias primaria y/o espejo de volumen se almacenan; y/o una manera en la que se crea el volumen (Por ejemplo, un nuevo volumen que esta vaclo, un nuevo volumen que es una copia de un volumen existente, un nuevo volumen que es una copia de una copia instantanea de volumen, etc.); segun el tamano de una copia instantanea de volumen como, por ejemplo, para crear la copia instantanea de volumen (Por ejemplo, como una tarifa por una unica vez) y/o tener almacenamiento regular del volumen (Por ejemplo, una tarifa mensual); segun las caracterlsticas diferentes al tamano de una o mas copias instantaneas de volumen como, por ejemplo, un numero de instantaneas de un unico volumen, si una copia instantanea es o no incremental con respecto a una o mas copias instantaneas anteriores, etc.; segun el uso de un volumen, tales como la cantidad de datos transferidos a y/o desde un volumen (Por ejemplo, para reflejar una cantidad de ancho de banda de red usado), un numero de peticiones de acceso a datos enviadas a un volumen, un numero de programas en ejecucion que se conectan a y usan un volumen (ya sea secuencial o concurrentemente), etc.; segun la cantidad de datos transferidos a y/o desde una instantanea como, por ejemplo, de manera similar a aquella para los volumenes; etc. Ademas, el acceso proporcionado puede tener varias formas en varias realizaciones, tales como una tarifa de compra por una unica vez, una tarifa de renta regular, y/o segun otra suscripcion regular. Ademas, en al menos algunas realizaciones y situaciones, un primer grupo de uno o mas usuarios puede proporcionar datos a otros usuarios segun una tarifa como, por ejemplo, cobrar a los otros usuarios por recibir acceso a volumenes actuales y/o copias instantaneas historicas de volumen creadas por uno o mas usuarios del primer grupo (Por ejemplo, permitiendo que ellos realicen nuevos volumenes que sean copias de volumenes y/o de copias instantaneas de volumen; permitiendo que ellos usen uno o mas volumenes creados; etc.), ya sea segun una tarifa de compra por una unica vez, una tarifa de renta regular, u otra suscripcion regular.
En algunas realizaciones, el servicio de almacenamiento de datos a nivel de bloque, el servicio de ejecucion de programas y/o el servicio de almacenamiento a largo plazo remoto pueden proporcionar una o mas API ("interfaces de programacion de aplicaciones") como, por ejemplo, para permitir que otros programas inicien, de manera programatica, varios tipos de operaciones que se realizaran (Por ejemplo, segun lo indicado por los usuarios de los otros programas). Dichas operaciones pueden permitir que algunos o todos los tipos de funcionalidad descritos anteriormente sean invocados, incluidos, pero sin limitation, los siguientes tipos de operaciones: crear, borrar, conectar, desconectar, o describir volumenes; crear, borrar, copiar o describir instantaneas; especificar derechos de acceso u otros metadatos para volumenes y/o instantaneas; administrar la ejecucion de programas; realizar el pago para obtener otros tipos de funcionalidad; obtener informes y otra information acerca del uso de las capacidades de uno o mas de los servicios y/o acerca de las tarifas pagadas o debidas por dicho uso; etc. Las operaciones proporcionadas por la API pueden ser invocadas por, por ejemplo, programas en ejecucion en sistemas informaticos anfitriones del servicio de ejecucion de programas y/o por sistemas informaticos de clientes u otros usuarios que son externos a la unica o mas ubicaciones geograficas utilizadas por el servicio de almacenamiento de datos a nivel de bloque y/o el servicio de ejecucion de programas.
A los fines ilustrativos, se describen mas abajo algunas realizaciones en las que se proporcionan tipos especlficos de almacenamiento de datos a nivel de bloque de maneras especlficas para tipos especlficos de programas que se ejecutan en tipos especlficos de sistemas informaticos. Estos ejemplos se proporcionan a fines ilustrativos y estan simplificados en aras de la brevedad, y las tecnicas inventivas se pueden usar en una amplia variedad de situaciones diferentes, algunas de las cuales se describen mas abajo, y las tecnicas no se limitan al uso con maquinas virtuales, centros de datos u otros tipos especlficos de sistemas de almacenamiento de datos, sistemas informaticos o disposiciones de sistemas informaticos. Ademas, mientras algunas realizaciones se describen como realizaciones que proporcionan y usan almacenamiento de datos a nivel de bloque no local fiable, en otras realizaciones, los tipos de almacenamiento de datos diferentes al almacenamiento de datos a nivel de bloque pueden proporcionarse de manera similar.
La Figura 1 es un diagrama de red que ilustra una realization a modo de ejemplo en la que multiples sistemas informaticos ejecutan programas y acceden al almacenamiento de datos a nivel de bloque no local fiable como, por ejemplo, bajo el control de un servicio de almacenamiento de datos a nivel de bloque y/o un servicio de ejecucion de programas. En particular, en el presente ejemplo, un servicio de ejecucion de programas administra la ejecucion de programas en varios sistemas informaticos anfitriones ubicados dentro de un centro de datos 100 y un servicio de almacenamiento de datos a nivel de bloque usa multiples sistemas de almacenamiento de datos a nivel de bloque en servidor diferentes en el centro de datos para proporcionar almacenamiento de datos a nivel de bloque no local fiable a dichos programas en ejecucion. Tambien se pueden utilizar multiples sistemas de almacenamiento de archivado remotos externos al centro de datos para almacenar copias adicionales de al menos algunas porciones de al menos algunos volumenes de almacenamiento de datos a nivel de bloque.
En el presente ejemplo, el centro de datos 100 incluye un numero de bastidores 105, y cada bastidor incluye un numero de sistemas informaticos anfitriones, as! como un sistema informatico de apoyo de bastidor opcional 122 en la presente realizacion a modo de ejemplo. Los sistemas informaticos anfitriones 110a-c en el bastidor ilustrado 105 alojan, cada uno, una o mas maquinas virtuales 120 en el presente ejemplo, as! como un modulo de Administrador
5
10
15
20
25
30
35
40
45
50
55
60
65
de Nodo diferente 115 asociado a las maquinas virtuales en dicho sistema informatico anfitrion para administrar dichas maquinas virtuales. Uno o mas sistemas informaticos anfitriones diferentes 135 alojan tambien, cada uno, una o mas maquinas virtuales 120 en el presente ejemplo. Cada maquina virtual 120 puede actuar como un nodo informatico independiente para ejecutar una o mas copias de programa (no se muestran) para un usuario (no se muestra) como, por ejemplo, un cliente del servicio de ejecucion de programas. Ademas, el presente centro de datos 100 a modo de ejemplo incluye ademas sistemas informaticos anfitriones adicionales 130a-b que no incluyen maquinas virtuales distintas, pero pueden, sin embargo, cada uno, actuar como un nodo informatico para uno o mas programas (no se muestran) que estan siendo ejecutados para un usuario. En el presente ejemplo, un modulo de Administrador de Nodo 125 que se esta ejecutando en un sistema informatico (no se muestra) diferente a los sistemas informaticos anfitriones 130a- b y 135 es asociado a dichos sistemas informaticos anfitriones para administrar los nodos informaticos proporcionados por dichos sistemas informaticos anfitriones como, por ejemplo, de una manera similar a los modulos de Administrador de Nodo 115 para los sistemas informaticos anfitriones 110. El sistema informatico de apoyo de bastidor 122 puede proporcionar varios servicios de utilidad para otros sistemas informaticos locales a su bastidor 105 (Por ejemplo, almacenamiento de programa a largo plazo, medicion y otro monitoreo de la ejecucion de programas y/o de acceso al almacenamiento de datos a nivel de bloque no local realizados por otros sistemas informaticos locales al bastidor, etc.), as! como, posiblemente, a otros sistemas informaticos ubicados en el centro de datos. Cada sistema informatico 110, 130 y 135 puede tener tambien uno o mas dispositivos de almacenamiento locales conectados (no se muestran) como, por ejemplo, para almacenar copias locales de programas y/o datos creados por o de otra forma usados por los programas en ejecucion, as! como varios componentes diferentes.
En el presente ejemplo, un sistema informatico opcional 140 es tambien ilustrado, el cual ejecuta un modulo de Administrador de Sistema de PES para el servicio de ejecucion de programas para ayudar en la administracion de la ejecucion de programas en los nodos informaticos proporcionados por los sistemas informaticos anfitriones ubicados dentro del centro de datos (u, opcionalmente, en sistemas informaticos ubicados en uno o mas centros de datos diferentes 160, u otros sistemas informaticos remotos 180 externos al centro de datos). Segun lo descrito en mayor detalle en otra parte del presente documento, un modulo de Administrador de Sistema de PES puede proporcionar una variedad de servicios ademas de administrar la ejecucion de programas, incluidos la administracion de cuentas de usuario (Por ejemplo, creacion, eliminacion, facturacion, etc.); el registro, el almacenamiento, y la distribucion de programas que se ejecutaran; la recopilacion y el procesamiento de datos de rendimiento y auditorla relativos a la ejecucion de programas; la obtencion de pago por parte de clientes u otros usuarios para la ejecucion de programas; etc. En algunas realizaciones, el modulo de Administrador de Sistema de PES puede coordinarse con los modulos de Administrador de Nodo 115 y 125 para administrar la ejecucion de programas en nodos informaticos asociados a los modulos de Administrador de Nodo, mientras que en otras realizaciones los modulos de Administrador de Nodo 115 y 125 pueden no colaborar en la administracion de dicha ejecucion de programas.
El presente centro de datos 100 a modo de ejemplo incluye tambien un sistema informatico 175 que ejecuta un modulo de Administrador de Sistema de Almacenamiento de Datos a nivel de Bloque ("BDS, por sus siglas en ingles") para el servicio de almacenamiento de datos a nivel de bloque para ayudar a administrar la disponibilidad del almacenamiento de datos a nivel de bloque no local a programas que se ejecutan en nodos informaticos proporcionados por los sistemas informaticos anfitriones ubicados dentro del centro de datos (u, opcionalmente, en sistemas informaticos ubicados en uno o mas centros de datos diferentes 160, u otros sistemas informaticos remotos 180 externos al centro de datos). En particular, en el presente ejemplo, el centro de datos 100 incluye un grupo de multiples sistemas de almacenamiento de datos a nivel de bloque en servidor 165, los cuales tienen, cada uno, un almacenamiento a nivel de bloque local para su uso al almacenar una o mas copias de volumen 155. El acceso a las copias de volumen 155 es proporcionado en la(s) red(es) interna(s) 185 a programas que se ejecutan en nodos informaticos 120 y 130. Segun lo descrito en mayor detalle en otra parte de este documento, un modulo de Administrador de Sistema de BDS puede proporcionar una variedad de servicios relativos a suministrar una funcionalidad de almacenamiento de datos a nivel de bloque no local, que incluyen la administracion de cuentas de usuario (Por ejemplo, creacion, eliminacion, facturacion, etc.); la creacion, el uso y la eliminacion de volumenes de almacenamiento de datos a nivel de bloque y copias instantaneas de dichos volumenes; la recopilacion y el procesamiento de datos de rendimiento y auditorla relativos al uso de volumenes de almacenamiento de datos a nivel de bloque y copias instantaneas de dichos volumenes; la obtencion de pagos por parte de clientes u otros usuarios por el uso de volumenes de almacenamiento de datos a nivel de bloque y copias instantaneas de dichos volumenes; etc. En algunas realizaciones, el modulo de Administrador de Sistema de BDS puede coordinarse con los modulos de Administrador de Nodo 115 y 125 para administrar el uso de volumenes por programas que se ejecutan en nodos informaticos asociados, mientras que en otras realizaciones los modulos de Administrador de Nodo 115 y125 pueden no ser usados para administrar dicho uso de volumenes. Ademas, en otras realizaciones, uno o mas modulos de Administrador de Sistema de BDS pueden estar estructurados de otra manera como, por ejemplo, para tener multiples instancias del Administrador de Sistema de BDS ejecutandose en un unico centro de datos (Por ejemplo, para compartir la administracion del almacenamiento de datos a nivel de bloque no local por programas que se ejecutan en los nodos informaticos proporcionados por los sistemas informaticos anfitriones ubicados dentro del centro de datos), y/o para tener al menos parte de la funcionalidad de un modulo de Administrador de Sistema de BDS proporcionada de manera distribuida por el software que se ejecuta en algunos o todos los sistemas de almacenamiento de datos a nivel de bloque en servidor 165 (Por ejemplo, entre pares (peer-
5
10
15
20
25
30
35
40
45
50
55
60
65
to-peer), sin modulos de Administrador de Sistema de BDS centralizados separados en un sistema informatico 175).
En el presente ejemplo, los diferentes sistemas informaticos anfitriones 110, 130 y 135, los sistemas de almacenamiento de datos a nivel de bloque en servidor 165, y los sistemas informaticos 125, 140 y 175 estan interconectados mediante una o mas redes internas 185 del centro de datos, las cuales pueden incluir varios dispositivos en red (Por ejemplo, enrutadores, interruptores, puertas de enlace, etc.) que no se muestran. Ademas, las redes internas 185 estan conectadas a una red externa 170 (Por ejemplo, Internet u otra red publica) en el presente ejemplo, y el centro de datos 100 puede incluir ademas uno o mas dispositivos opcionales (no se muestran) en la interconexion entre el centro de datos 100 y una red externa 170 (Por ejemplo, proxys de red, equilibradores de carga, dispositivos de traduccion de direcciones de red, etc.). En el presente ejemplo, el centro de datos 100 esta conectado mediante la red externa 170 a uno o mas centros de datos diferentes 160 que pueden incluir, cada uno, algunos o todos los sistemas informaticos y sistemas de almacenamiento ilustrados con respecto al centro de datos 100, as! como otros sistemas informaticos remotos 180 externos al centro de datos. Los otros sistemas informaticos 180 pueden ser operados por varias partes para varios propositos como, por ejemplo, por el operador del centro de datos 100 o terceros (Por ejemplo, clientes del servicio de ejecucion de programas y/o del servicio de almacenamiento de datos a nivel de bloque). Ademas, uno o mas de los otros sistemas informaticos 180 pueden ser sistemas de almacenamiento de archivado (Por ejemplo, como parte de un servicio de almacenamiento accesible en red remoto) con el cual el servicio de almacenamiento de datos a nivel de bloque puede interactuar como, por ejemplo, bajo el control de uno o mas modulos de administrador de archivado (no se muestran) que se ejecutan en el unico o mas sistemas informaticos diferentes 180 o, en su lugar, en uno o mas sistemas informaticos del centro de datos 100, segun lo descrito en mayor detalle en otra parte de este documento. Ademas, mientras no se ilustran en la presente, en al menos algunas realizaciones, al menos algunos de los sistemas de almacenamiento de datos a nivel de bloque en servidor 165 pueden estar ademas interconectados con una o mas redes diferentes u otros medios de conexion como, por ejemplo, una conexion con ancho de banda alto en la cual los sistemas de almacenamiento en servidor 165 pueden compartir datos de volumen (Por ejemplo, a fines de replicar copias de volumenes y/o mantener la consistencia entre las copias primaria y espejo de volumenes), dicha conexion con ancho de banda alto no encontrandose disponible para los diferentes sistemas informaticos anfitriones 110, 130 y 135 en al menos algunas de dichas realizaciones.
Se apreciara que el ejemplo de la Figura 1 ha sido simplificado a los fines de su explicacion, y que el numero y la organizacion de los sistemas informaticos anfitriones, los sistemas de almacenamiento de datos a nivel de bloque en servidor y otros dispositivos pueden ser mucho mas grandes que lo ilustrado en la Figura 1. Por ejemplo, segun una realizacion ilustrativa, puede haber aproximadamente 4.000 sistemas informaticos por centro de datos, al menos algunos de dichos sistemas informaticos son sistemas informaticos anfitriones que pueden, cada uno, alojar 15 maquinas virtuales, y/o algunos de dichos sistemas informaticos son sistemas de almacenamiento de datos a nivel de bloque en servidor que pueden, cada uno, almacenar varias copias de volumen. Si cada maquina virtual hospedada ejecuta un programa, entonces dicho centro de datos puede ejecutar hasta sesenta mil copias de programa al mismo tiempo. Ademas, cientos o miles (o mas) de volumenes pueden almacenarse en los sistemas de almacenamiento de datos a nivel de bloque en servidor, segun el numero de sistemas de almacenamiento en servidor, el tamano de los volumenes, y el numero de copias espejo por volumen. Se apreciara que en otras realizaciones pueden usarse otros numeros de sistemas informaticos, programas y volumenes.
Las Figuras 2A-2F ilustran ejemplos de proporcionar la funcionalidad de almacenamiento de datos a nivel de bloque no local fiable a clientes. En particular, las Figuras 2A y 2B ilustran ejemplos de sistemas informaticos de almacenamiento de datos a nivel de bloque en servidor que pueden ser usados para proporcionar la funcionalidad de almacenamiento de datos a nivel de bloque no local fiable a clientes (Por ejemplo, programas en ejecucion) como, por ejemplo, en nombre de un servicio de almacenamiento de datos a nivel de bloque, y las Figuras 2C-2F ilustran ejemplos del uso de sistemas de almacenamiento de archivado para almacenar al menos algunas porciones de algunos volumenes de almacenamiento de datos a nivel de bloque. En el presente ejemplo, la Figura 2A ilustra varios sistemas de almacenamiento de datos a nivel de bloque en servidor 165 que almacenan, cada uno, una o mas copias de volumen 155 como, por ejemplo, cada volumen con una copia primaria y al menos una copia espejo. En otras realizaciones, otras disposiciones pueden usarse, segun lo mencionado en mayor detalle en otra parte de este documento como, por ejemplo, mediante multiples copias primarias de volumen (Por ejemplo, todas las copias primarias de volumen encontrandose disponibles para el acceso de lectura simultanea por uno o mas programas) y/o mediante multiples copias espejo de volumen. Los sistemas de almacenamiento de datos a nivel de bloque en servidor a modo de ejemplo 165 y las copias de volumen 155 pueden, por ejemplo, corresponder a un subconjunto de los sistemas de almacenamiento de datos a nivel de bloque en servidor 165 y copias de volumen 155 de la Figura 1.
En el presente ejemplo, el sistema de almacenamiento en servidor 165a almacena al menos tres copias de volumen, incluidas la copia primaria 155A-a para el volumen A, una copia espejo 155B-a para el volumen B, y una copia espejo 155C-a para el volumen C. Una o mas copias de volumen no ilustradas en el presente ejemplo pueden ademas ser almacenadas por el sistema de almacenamiento en servidor 165a, as! como por los otros sistemas de almacenamiento en servidor 165. Otro sistema de almacenamiento de datos a nivel de bloque en servidor a modo de ejemplo 165b almacena la copia primaria 155B-b para el volumen B en el presente ejemplo, as! como una copia
5
10
15
20
25
30
35
40
45
50
55
60
65
espejo 155D-b para el volumen D. Ademas, el sistema de almacenamiento de datos a nivel de bloque en servidor a modo de ejemplo 165n incluye una copia espejo 155A-n del volumen A y una copia primaria 155D-n del volumen D. De este modo, si un programa en ejecucion (no se muestra) esta conectado a y usa el volumen A, el administrador de nodo para dicho programa en ejecucion interactuara con el sistema de almacenamiento de datos a nivel de bloque en servidor 165a para acceder a la copia primaria 155A-a para el volumen A como, por ejemplo, mediante un software del sistema de almacenamiento en servidor (no se muestra) que se ejecuta en el sistema de almacenamiento de datos a nivel de bloque en servidor 165a. De manera similar, para uno o mas programas en ejecucion (no se muestran) conectados a y que usan los volumenes B y D, el /los administrador(es) de nodo para el/los programa(s) en ejecucion interactuara(n) con los sistemas de almacenamiento de datos a nivel de bloque en servidor 165b y165n, respectivamente, para acceder a las copias primarias 155B-b para el volumen B y 155D-n para el volumen D, respectivamente. Ademas, tambien pueden estar presentes otros sistemas de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, sistemas de almacenamiento de datos a nivel de bloque en servidor 165c-165m y/o 165o y otros), y pueden almacenar la copia primaria de volumen para el volumen C y/u otras copias primaria y espejo de volumen, pero no se muestran en el presente ejemplo. De este modo, en el presente ejemplo, cada sistema de almacenamiento de datos a nivel de bloque en servidor puede almacenar mas de una copia de volumen, y puede almacenar una combinacion de copias primaria y espejo de volumen, aunque en otras realizaciones los volumenes pueden ser almacenados de otras maneras.
La Figura 2B ilustra sistemas de almacenamiento de datos a nivel de bloque en servidor 165 similares a los de la Figura 2A, pero en un punto posterior en el tiempo despues de que el sistema de almacenamiento en servidor 165b de la Figura 2A falle o deje de estar disponible de otra forma. En respuesta a la no disponibilidad del sistema de almacenamiento en servidor 165b, y sus copia primaria del volumen B y copia espejo del volumen D almacenadas, las copias de volumen almacenadas de los sistemas de almacenamiento en servidor 165 de la Figura 2B han sido modificadas para mantener la disponibilidad de los volumenes B y D. En particular, debido a la no disponibilidad de la copia primaria 155B-b del volumen B, la copia espejo anterior 155B-a del volumen B en el sistema de almacenamiento en servidor 165a ha sido promovida para ser la nueva copia primaria para el volumen B. De este modo, si uno o mas programas han estado previamente conectados a o de otra forma interactuando con la copia primaria anterior 155B-b del volumen B cuando esta dejo de estar disponible, dichos programas pueden haber sido cambiados automaticamente (Por ejemplo, por administradores de nodo asociados a dichos programas) para continuar las interacciones en curso con el sistema de almacenamiento de datos a nivel de bloque en servidor 165a para acceder a la nueva copia primaria 155B-a para el volumen B. Ademas, una nueva copia espejo 155B-c para el volumen B ha sido creada en el sistema de almacenamiento en servidor 165c.
Aunque la copia espejo 155A-n del volumen A del sistema de almacenamiento en servidor 165n de la Figura 2A no se ilustra en la Figura 2B en aras de la brevedad, continua estando disponible en el sistema de almacenamiento en servidor 165n junto con la copia primaria 155D-n del volumen D, y de este modo cualquier programa que ha estado previamente conectado a o de otra forma interactuando con la copia primaria 155D-n del volumen D cuando el sistema de almacenamiento en servidor 165b dejo de estar disponible continuara interactuando con dicha misma copia primaria 155D-n del volumen D en el sistema de almacenamiento en servidor en el sistema de almacenamiento en servidor 165n sin modification. Sin embargo, debido a la no disponibilidad de la copia espejo 155D-b del volumen D en el sistema de almacenamiento en servidor no disponible 165b, al menos una copia espejo adicional del volumen D ha sido creada en la Figura 2B como, por ejemplo, la copia espejo 155D-o del volumen D del sistema de almacenamiento en servidor 165o. Ademas, la Figura 2B ilustra que al menos algunos volumenes pueden tener multiples copias espejo como, por ejemplo, el volumen D que incluye tambien una copia espejo 155D-c del volumen D previamente existente (pero que no se muestra en la Figura 2A) en el sistema de almacenamiento en servidor 165c.
Las Figuras 2C-2F ilustran ejemplos del uso de sistemas de almacenamiento de archivado para almacenar al menos algunas porciones de algunos volumenes de almacenamiento de datos a nivel de bloque. En el presente ejemplo, la Figura 2C ilustra multiples sistemas de almacenamiento de datos a nivel de bloque en servidor 165 que almacenan, cada uno, una o mas copias de volumen 155 como, por ejemplo, para corresponderse con los sistemas de almacenamiento de datos 165 a nivel de bloque en servidor a modo de ejemplo ilustrados en la Figura 2A antes de que el sistema de almacenamiento de datos a nivel de bloque en servidor 165b deje de estar disponible. La Figura 2C ilustra ademas multiples sistemas de almacenamiento de archivado 180, los cuales pueden, por ejemplo, corresponder a un subconjunto de los sistemas informaticos 180 de la Figura 1. En particular, en el presente ejemplo, la Figura 2C ilustra sistemas de almacenamiento de datos a nivel de bloque en servidor 165a y165b de la Figura 2A, aunque en el presente ejemplo solo las copias primaria y espejo del volumen B se ilustran para dichos sistemas de almacenamiento de datos a nivel de bloque en servidor. Segun lo descrito con respecto a la Figura 2A, el sistema de almacenamiento en servidor 165b almacena la copia primaria 155B-b del volumen B, y el sistema de almacenamiento en servidor 165a almacena la copia espejo 155B-a del volumen B.
En el ejemplo de la Figura 2C, un usuario asociado al volumen B ha solicitado que una nueva copia instantanea inicial del volumen B sea almacenada en los sistemas de almacenamiento de archivado remotos como, por ejemplo, para ser una copia de seguridad a largo plazo. Por consiguiente, el volumen B ha sido separado en multiples porciones de fragmentos que seran, cada una, almacenadas de forma separada por los sistemas de
5
10
15
20
25
30
35
40
45
50
55
60
65
almacenamiento de archivado como, por ejemplo, para corresponder a un tamano de almacenamiento tlpico o maximo para los sistemas de almacenamiento de archivado, o, en su lugar, de otra forma, segun lo determinado por el servicio de almacenamiento de datos a nivel de bloque. En el presente ejemplo, la copia primaria 155B-b del volumen B ha sido separada en N fragmentos 155B-b1 hasta 155B-bN, y la copia espejo 155B-a del volumen B almacena, de forma similar, los mismos datos usando los fragmentos 155B-a1 hasta 155BaN. Cada uno de los fragmentos N del volumen B es almacenado como un objeto de datos separado en uno de dos sistemas de almacenamiento de archivado a modo de ejemplo 180a y 180b, y, de este modo, dichos objetos de datos almacenados multiples correspondientes en total forman la copia de volumen instantanea inicial para el volumen B. En particular, el fragmento 1 155B-b1 de la copia primaria del volumen B es almacenado como objeto de datos 180B1 en el sistema de almacenamiento de archivado 180a, el fragmento 2 155B-b2 es almacenado como objeto de datos 180B2 en el sistema de almacenamiento de archivado 180b, el fragmento 3 155B-b3 es almacenado como objeto de datos 180B3 en el sistema de almacenamiento de archivado 180a, y el fragmento N 155B-bN es almacenado como objeto de datos 180BN en el sistema de almacenamiento de archivado 180a. En el presente ejemplo, la separation del volumen B en multiples fragmentos es realizada por el servicio de almacenamiento de datos a nivel de bloque, de modo que se pueden transferir fragmentos individuales del volumen B individualmente a los sistemas de almacenamiento de archivado, aunque en otras realizaciones todo el volumen B puede, en su lugar, ser enviado a los sistemas de almacenamiento de archivado, los cuales pueden entonces separar el volumen en multiples fragmentos o de otra forma procesar los datos de volumen si as! se desea.
Ademas, en el presente ejemplo, el sistema de almacenamiento de archivado 180b es un sistema informatico de almacenamiento de archivado que ejecuta un modulo de Administrador de Archivado 190 para administrar operaciones de los sistemas de almacenamiento de archivado como, por ejemplo, para administrar el almacenamiento y la recuperation de objetos de datos, para rastrear que objetos de datos almacenados corresponden a que volumenes, para separar datos de volumen transferidos en multiples objetos de datos, para medir y de otra forma rastrear el uso de los sistemas de almacenamiento de archivado, etc. El modulo de Administrador de Archivado 190 puede, por ejemplo, mantener una variedad de information sobre los diferentes objetos de datos que corresponden a un volumen particular como, por ejemplo, para cada copia instantanea del volumen, segun lo mencionado en mayor detalle con referencia a la Figura 2F, mientras que en otras realizaciones dicha informacion de copia instantanea de volumen puede, en cambio, mantenerse de otras maneras (Por ejemplo, por los sistemas de almacenamiento de datos a nivel de bloque en servidor u otros modulos del servicio de almacenamiento de datos a nivel de bloque). En otras realizaciones solo puede utilizarse un unico sistema de almacenamiento de archivado, o, en su lugar, los objetos de datos correspondientes a fragmentos del volumen B se pueden almacenar a lo largo de muchos mas sistemas de almacenamiento de archivado (no se muestran). Ademas, en otras realizaciones, cada sistema de almacenamiento de archivado puede ejecutar al menos parte de un modulo de administrador de archivado como, por ejemplo, para que cada sistema de almacenamiento de archivado tenga un modulo de administrador de archivado distinto, o para que todos los sistemas de almacenamiento de archivado proporcionen la funcionalidad del modulo de administrador de archivado de forma distribuida entre pares (peer-to- peer). En otras realizaciones uno o mas modulos de administrador de archivado pueden, en cambio, ejecutarse en uno o mas sistemas informaticos que son locales a los otros modulos de servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, en el mismo sistema informatico o en un sistema informatico proximo a uno que ejecuta un modulo de Administrador de Sistema de BDS), o las operaciones de los sistemas de almacenamiento de archivado pueden, en cambio, ser administradas directamente por uno o mas modulos diferentes del servicio de almacenamiento de datos a nivel de bloque sin usar un modulo de administrador de archivado (Por ejemplo, por un modulo de Administrador de Sistema de BDS).
Ademas, en al menos algunas realizaciones, los sistemas de almacenamiento de archivado pueden realizar varias operaciones para mejorar la fiabilidad de los objetos de datos almacenados como, por ejemplo, replicar algunos o todos los objetos de datos en multiples sistemas de almacenamiento de archivado. De este modo, por ejemplo, los otros objetos de datos 182b del sistema de almacenamiento de archivado 180b pueden incluir copias espejo de uno o mas de los objetos de datos 180B1, 180B3, y 180BN del sistema de almacenamiento de archivado 180a, y los otros objetos de datos 182a del sistema de almacenamiento de archivado 180a pueden almacenar, de forma similar, una copia espejo del objeto de datos 180B2 del sistema de almacenamiento de archivado 180b. Ademas, segun lo descrito en mayor detalle en otra parte de este documento, en algunas realizaciones al menos algunos fragmentos del volumen B pueden ya estar almacenados en los sistemas de almacenamiento de archivado antes de la reception de la petition para crear la copia instantanea inicial del volumen B como, por ejemplo, si los objetos de datos almacenados en los sistemas de almacenamiento de archivado para representar los fragmentos del volumen B fueran usados como un almacen de respaldo u otra copia de seguridad a largo plazo remota para el volumen B. Si este es el caso, la copia instantanea en los sistemas de almacenamiento de archivado puede, en cambio, ser creada sin transferir datos de volumen adicionales en dicho momento como, por ejemplo, si los objetos de datos en los sistemas de almacenamiento de archivado representaran un estado actual de los fragmentos del volumen B, mientras que en otras realizaciones se pueden tomar medidas adicionales para asegurar que los objetos de datos ya almacenados esten actualizados con respecto a los fragmentos del volumen B.
La Figura 2D continua el ejemplo de la Figura 2C, y refleja modificaciones al volumen B que son realizadas despues de que la copia instantanea inicial sea almacenada con respecto a la Figura 2C. En particular, en el presente
5
10
15
20
25
30
35
40
45
50
55
60
65
ejemplo, despues de que se ha creado la copia instantanea inicial de volumen, el volumen B se modifica como, por ejemplo, mediante uno o mas programas (no se muestran) que estan conectados al volumen. En el presente ejemplo, los datos son modificados en al menos dos porciones del volumen B que corresponden al fragmento 3 155B-b3 y al fragmento N 155B-bN de la copia primaria del volumen B, con los datos de fragmentos modificados ilustrados como datos 3a y Na, respectivamente. En el presente ejemplo, despues de que se modifica la copia primaria 155B-b del volumen B, el sistema de almacenamiento en servidor 165b inicia las actualizaciones correspondientes de la copia espejo 155B-a del volumen B en el sistema de almacenamiento en servidor 165a, de modo que el fragmento 3 155B-a3 de la copia espejo se modifica para incluir los datos modificados 3a, y el fragmento N 155B-aN de la copia espejo se modifica para incluir los datos modificados Na. De este modo, la copia espejo del volumen B se mantiene en el mismo estado que la copia primaria del volumen B en el presente ejemplo.
Ademas, en algunas realizaciones, los datos en los sistemas de almacenamiento de archivado pueden ademas ser modificados para reflejar los cambios en el volumen B, aunque dichas nuevas modificaciones de datos del volumen B no son actualmente parte de una copia instantanea de volumen para el volumen B. En particular, dado que la version anterior de los datos del fragmento 3 y el fragmento N es parte de la copia instantanea inicial de volumen almacenada en los sistemas de almacenamiento de archivado, los correspondientes objetos de datos 180B3 y 180BN no se modifican para reflejar los cambios en los datos del volumen B que ocurren despues de la creacion de la copia instantanea inicial de volumen. En cambio, si las copias son opcionalmente realizadas a partir de los datos del volumen B modificado, son almacenadas en el presente ejemplo como objetos de datos adicionales como, por ejemplo, el objeto de datos opcional 180B3a para corresponderse con los datos modificados 3a del fragmento 3 155B-b3, y como, por ejemplo, objeto de datos opcional 180BNa para corresponderse con los datos modificados Na
50 del fragmento N 155B-bN. De esta manera, los datos para la copia instantanea inicial de volumen se mantienen incluso mientras se realizan cambios en las copias primaria y espejo del volumen B. Si se crean los objetos de datos opcionales 180B3a y 180BNa, dicha creacion puede ser iniciada de varias formas como, por ejemplo, mediante el sistema de almacenamiento de datos a nivel de bloque en servidor 165b de manera similar a las actualizaciones que son iniciadas para la copia espejo 155B-a del volumen B.
La Figura 2E ilustra una realizacion alternativa con respecto a la realizacion descrita previamente con referencia a la Figura 2D. En particular, en el ejemplo de la Figura 2E, el volumen B se modifica otra vez despues de que la copia instantanea inicial del volumen se almacena en los sistemas de almacenamiento de archivado de manera similar a la descrita con respecto a la Figura 2D y, por consiguiente, la copia primaria 155B-b del volumen B en el sistema de almacenamiento en servidor 165b se actualiza de modo que el fragmento 3 155B-b3 y el fragmento N 155B-bN se actualizan para incluir los datos modificados 3a y Na, respectivamente. Sin embargo, en la presente realizacion, la copia espejo 155B-a del volumen B en el sistema de almacenamiento en servidor 165a no se mantiene como una copia total de volumen B. En cambio, la copia instantanea de volumen del volumen B en los sistemas de almacenamiento de archivado se utiliza en conjunto con la copia espejo 155B-a para mantener una copia del volumen B. De este modo, en el presente ejemplo, mientras las modificaciones se realizan a la copia primaria 155B- b del volumen B despues de la creacion de la copia instantanea inicial de volumen, dichas modificaciones se realizan tambien para la copia espejo 155B-a en el sistema de almacenamiento en servidor 165a, de modo que la copia espejo almacena los datos modificados 3a para el fragmento 3 155B-a3 y los datos modificados Na para el fragmento N 155B-aN. Sin embargo, la copia espejo del volumen B no almacena inicialmente copias de los otros fragmentos del volumen B que no se han modificado desde que se creo la copia instantanea inicial de volumen, ya que la copia instantanea inicial de volumen del volumen B en los sistemas de almacenamiento de archivado incluye copias de dichos datos. Por consiguiente, si a continuacion el sistema de almacenamiento en servidor 165b deja de estar disponible, tal y como se ha descrito anteriormente con referencia a la Figura 2B, la copia espejo 155B-a del volumen B en el sistema de almacenamiento en servidor 165a puede ser promovida para ser la nueva copia primaria del volumen B. Con el proposito de lograr esta promocion en la presente realizacion a modo de ejemplo, las restantes porciones de la copia espejo 155B-a del volumen B se restauran usando la copia instantanea inicial de volumen del volumen B en los sistemas de almacenamiento de archivado como, por ejemplo, con el fin de usar el objeto de datos almacenado 180B1 para restaurar el fragmento 155B-a1, con el fin de usar el objeto de datos almacenado 180B2 para restaurar el fragmento 155B-a2, etc. Ademas, en el presente ejemplo, los objetos de datos 180B3a y 180BNa pueden ser, de manera similar y opcional, almacenados en los sistemas de almacenamiento de archivado para representar los datos modificados 3a y Na. Si este es el caso, en algunas realizaciones, los datos modificados 3a y Na no seran inicialmente almacenados en el sistema de almacenamiento de datos a nivel de bloque en servidor 165a para la copia espejo 155B-a, y, en cambio, los fragmentos de la copia espejo 155B-a3 y 155B-aN se pueden restaurar, de manera similar, a partir de los objetos de datos del sistema de almacenamiento de archivado 180B3a y 180BNa de forma similar a la descrita anteriormente para los otros fragmentos de la copia espejo.
51 bien la copia instantanea de volumen del volumen B se utiliza en el ejemplo anterior para restaurar la copia espejo del volumen B cuando la copia espejo se promueve para ser la nueva copia primaria de volumen, la copia instantanea de volumen en los sistemas de almacenamiento de archivado se puede utilizar de otras maneras en otras realizaciones. Por ejemplo, se puede crear una nueva copia del volumen B que coincide con la copia instantanea inicial de volumen utilizando la copia instantanea de volumen en los sistemas de almacenamiento de archivado de manera similar a la descrita anteriormente para restaurar la copia espejo de volumen como, por
5
10
15
20
25
30
35
40
45
50
55
60
65
ejemplo, para crear una nueva copia espejo del volumen B del momento en que se produce la copia instantanea de volumen, para crear un volumen totalmente nuevo que se base en la copia instantanea de volumen del volumen B, con el fin de ayudar a mover el volumen B desde un sistema de almacenamiento a nivel de bloque en servidor a otro, etc. Ademas, cuando los sistemas de almacenamiento de datos a nivel de bloque en servidor del servicio de datos a nivel de bloque estan disponibles en multiples centros de datos distintos o en otras ubicaciones geograficas, los sistemas de almacenamiento de archivado remotos pueden estar disponibles para todos los sistemas de almacenamiento de datos a nivel de bloque en servidor, y de este modo se pueden utilizar para crear una nueva copia de volumen basada en una copia instantanea de volumen en cualquiera de dichas ubicaciones geograficas.
La Figura 2F da continuidad a los ejemplos de las Figuras 2C y 2D, partiendo de un punto posterior en el tiempo despues de que se realizan modificaciones adicionales al volumen B. En particular, despues de que se realizan las modificaciones al fragmento 3 y al fragmento N segun se describe con referencia a las Figuras 2C o 2D, se crea una segunda copia instantanea de volumen del volumen B en los sistemas de almacenamiento de archivado. Posteriormente, se realizan modificaciones adicionales a los datos en el volumen B que son almacenadas en los fragmentos 2 y 3. Por consiguiente, la copia primaria del volumen B 155B-b segun lo ilustrado en la Figura 2F incluye datos originales 1 en el fragmento 1 155B-b1, datos 2a en el fragmento 2 155B-b2 que son modificados despues de la creacion de la segunda copia instantanea de volumen, datos 3b en el fragmento 3 155B-b3 que tambien son modificados despues de la creacion de la segunda copia instantanea de volumen, y datos Na en el fragmento N 155B-bN que fueron modificados despues de la creacion de la primera copia instantanea inicial de volumen pero despues de la creacion de la segunda copia instantanea de volumen. Por consiguiente, despues de que se indique que debe crearse una tercera copia instantanea de volumen del volumen B, se crean objetos de datos adicionales en los sistemas de almacenamiento de archivado para corresponderse con los dos fragmentos modificados desde la creacion de la segunda copia instantanea de volumen, el objeto de datos 180B2a correspondiendose con el fragmento 155B-b2 e incluyendo los datos modificados 2a, y el fragmento 180B3b correspondiendose con el fragmento 155B-b3 e incluyendo los datos modificados 3b.
Ademas, en el presente ejemplo no se muestra el sistema de almacenamiento de datos a nivel de bloque en servidor 165a, pero se muestra una copia de la informacion 250 mantenida por el modulo de Administrador de Archivado 190 (Por ejemplo, almacenada en el sistema de almacenamiento de archivado 180b o en otra parte) para proporcionar informacion sobre las copias instantaneas de volumen almacenadas en los sistemas de almacenamiento de archivado. En particular, en el presente ejemplo, la informacion 250 incluye multiples filas 250a-250d, la cuales corresponden, cada una, a una copia instantanea de volumen diferente. Cada una de las filas de informacion en el presente ejemplo incluye un identificador unico para la copia de volumen, una indicacion del volumen al que corresponde la copia instantanea de volumen, y una indicacion de un listado ordenado de los objetos de datos almacenados en los sistemas de almacenamiento de archivado que comprenden la copia instantanea de volumen. De este modo, por ejemplo, la fila 250a corresponde a la copia instantanea inicial de volumen del volumen B descrita con referencia a la Figura 2C, e indica que la copia instantanea inicial de volumen incluye los objetos de datos almacenados 180B1, 180B2, 180B3, y as! sucesivamente hasta 180BN. La fila 250b corresponde a una copia instantanea de volumen a modo de ejemplo para un volumen diferente A que incluye varios objetos de datos almacenados que no se muestran en el presente ejemplo. La fila 250c corresponde a la segunda copia instantanea de volumen del volumen B, y la fila 250d corresponde a la tercera copia instantanea de volumen del volumen B. En el presente ejemplo, la segunda y la tercera copias de volumen para el volumen B son copias incrementales y no copias globales, de modo que los fragmentos del volumen B que no cambien respecto de una copia instantanea de volumen anterior continuaran estando representados utilizando los mismos objetos de datos almacenados. De este modo, por ejemplo, la segunda copia instantanea del volumen B en la fila 250c indica que la segunda copia instantanea de volumen comparte los objetos de datos 180B1 y 180B2 con los de la copia instantanea inicial de volumen del volumen B (y, posiblemente, algunos o todos los objetos de datos para los fragmentos 4 hasta los fragmentos N-1, no ilustrados). De manera similar, la tercera copia instantanea del volumen B en la fila 250d continua tambien utilizando el mismo objeto de datos 180B1 como las copias instantaneas inicial y segunda de volumen.
Al compartir objetos de datos comunes entre multiples copias instantaneas de volumen, se minimiza la cantidad de almacenamiento en los sistemas de almacenamiento de archivado, puesto que una nueva copia de un fragmento de volumen invariable como, por ejemplo, el fragmento 1 no tiene copias separadas en los sistemas de almacenamiento de archivado para cada copia instantanea de volumen. En otras realizaciones, sin embargo, algunas o todas las copias instantaneas de volumen pueden no ser incrementales y, en cambio, cada una puede incluir una copia separada de cada fragmento de volumen independientemente de si los datos en el fragmento han cambiado o no. Ademas, cuando se utilizan copias instantaneas incrementales de volumen que pueden compartir uno o mas objetos de datos superpuestos con una o mas copias instantaneas de volumen diferentes, los objetos de datos superpuestos se administran cuando se llevan a cabo tipos adicionales de operaciones con respecto a las copias instantaneas de volumen. Por ejemplo, si posteriormente se recibe una peticion para borrar la copia instantanea inicial de volumen para el volumen B que se indica en la fila 250a y para, en consecuencia, liberar espacio de almacenamiento que ya no es necesario en los sistemas de almacenamiento de archivado, se pueden borrar solo algunos de los objetos de datos indicados para dicha copia instantanea inicial de volumen en los sistemas de almacenamiento de archivado. Por ejemplo, el fragmento 3 y el fragmento N fueron modificados despues de que se creo la copia instantanea inicial
5
10
15
20
25
30
35
40
45
50
55
60
65
de volumen, y, de este modo, los correspondientes objetos de datos almacenados 180B3 y 180BN para la copia instantanea inicial de volumen son utilizados unicamente por dicha copia instantanea inicial de volumen. De este modo, dichos dos objetos de datos se pueden borrar permanentemente del sistema de almacenamiento de archivado 180a si se borra la copia instantanea inicial de volumen del volumen B. Sin embargo, los objetos de datos 180B1 y 180B2 se mantendran aun cuando se borre dicha copia instantanea inicial de volumen del volumen B, puesto que siguen siendo parte de al menos la segunda copia instantanea de volumen del volumen B.
Si bien no se ilustra en el presente ejemplo, la informacion 250 puede incluir una variedad de otros tipos de informacion sobre las copias instantaneas de volumen, incluida la informacion sobre que sistema de almacenamiento de archivado almacena cada uno de los objetos de datos, informacion sobre quien tiene permiso para acceder a la informacion de la copia instantanea de volumen y bajo que circunstancias, etc. A modo de ejemplo, en algunas realizaciones, algunos usuarios pueden crear copias instantaneas de volumen y hacer que el acceso a dichas copias instantaneas de volumen este disponible a al menos algunos usuarios en al menos algunas circunstancias como, por ejemplo, cobrando una tarifa para permitir que los otros usuarios creen copias de una o mas copias instantaneas de volumen particulares. En este caso, dicha informacion relativa al acceso puede ser almacenada en la informacion 250 o en otra parte, y el modulo de administrador de archivado 190 puede usar dicha informacion para determinar si satisfacer o no las peticiones de informacion realizadas correspondientes a las copias instantaneas de volumen particulares. De manera alternativa, en otras realizaciones, el acceso a las copias instantaneas de volumen puede, en cambio, ser administrado por otros modulos del servicio de almacenamiento de datos a nivel de bloque (Por ejemplo, un modulo de Administrador de Sistema de BDS) como, por ejemplo, para evitar que las peticiones se envlen a los sistemas de almacenamiento de archivado a menos que dichas peticiones esten autorizadas.
Se apreciara que los ejemplos de las Figuras 2A-2F han sido simplificados para facilitar su explicacion, y que el numero y la organizacion de los sistemas de almacenamiento de datos a nivel de bloque en servidor, los sistemas de almacenamiento de archivado, y otros dispositivos pueden ser de un tamano muy superior al representado. De manera similar, en otras realizaciones, las copias primarias de volumen, copias espejo de volumen, y/o copias instantaneas de volumen pueden ser almacenadas y administradas de otras formas.
La Figura 3 es un diagrama de bloque que ilustra sistemas informaticos a modo de ejemplo apropiados para administrar el suministro y el uso de la funcionalidad de almacenamiento de datos a nivel de bloque no local fiable a los clientes. En el presente ejemplo, un sistema informatico en servidor 300 ejecuta una realizacion de un modulo de Administrador de Sistema de BDS 340 para administrar el suministro de la funcionalidad de almacenamiento de datos a nivel de bloque no local a programas que se ejecutan en sistemas informaticos anfitriones 370 y/o en al menos algunos sistemas informaticos diferentes 390 como, por ejemplo, para bloquear volumenes de almacenamiento de datos a nivel de bloque (no ilustrados) proporcionados por los sistemas de almacenamiento de datos a nivel de bloque en servidor 360. Cada uno de los sistemas informaticos anfitriones 370 en el presente ejemplo ejecuta tambien una realizacion de un modulo de Administrador de Nodo 380 para administrar el acceso de los programas 375 que se ejecutan en el sistema informatico anfitrion a al menos algunos de los volumenes de almacenamiento de datos a nivel de bloque no local como, por ejemplo, de manera coordinada con el modulo de Administrador de Sistema de BDS 340 en una red 385 (Por ejemplo, una red interna de un centro de datos, que no se muestra, que incluye los sistemas informaticos 300, 360, 370 y, opcionalmente, al menos algunos de los otros sistemas informaticos 390). En otras realizaciones, algunos o todos los modulos de Administrador de Nodo 380 pueden, en cambio, administrar uno o mas sistemas informaticos diferentes (Por ejemplo, otros sistemas informaticos 390).
Ademas, se ilustran multiples sistemas de almacenamiento de datos a nivel de bloque en servidor 360 y cada uno de ellos almacena al menos algunos de los volumenes de almacenamiento de datos a nivel de bloque no local (no ilustrados) utilizados por los programas en ejecucion 375 con acceso a dichos volumenes tambien proporcionados en la red 385 en el presente ejemplo. Uno o mas de los sistemas de almacenamiento de datos a nivel de bloque en servidor 360 pueden tambien, cada uno, almacenar un componente de software en servidor (no ilustrado) que administra el funcionamiento de uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor 360 as! como diferente informacion (no mostrada) sobre los datos que son almacenados por los sistemas de almacenamiento de datos a nivel de bloque en servidor 360. De este modo, en al menos algunas realizaciones, el sistema informatico en servidor 300 de la Figura 3 puede corresponder al sistema informatico 175 de la Figura 1, uno o mas modulos de Administrador de Nodo 115 y 125 de la Figura 1 pueden corresponder a los modulos de Administrador de Nodo 380 de la Figura 3, y/o uno o mas de los sistemas informaticos de almacenamiento de datos a nivel de bloque en servidor 360 de la Figura 3 pueden corresponder a sistemas de almacenamiento de datos a nivel de bloque en servidor 165 de la Figura 1. Ademas, en la presente realizacion a modo de ejemplo, se ilustran multiples sistemas de almacenamiento de archivado 350, los cuales pueden almacenar copias instantaneas y/u otras copias de al menos porciones de al menos algunos volumenes de almacenamiento de datos a nivel de bloque almacenados en los sistemas de almacenamiento de datos a nivel de bloque en servidor 360. Los sistemas de almacenamiento de archivado 350 pueden interactuar tambien con algunos o todos los sistemas informaticos 300, 360 y 370, y en algunas realizaciones pueden ser sistemas de almacenamiento de archivado remotos (Por ejemplo, de un servicio de almacenamiento remoto, no ilustrado) que interactuan con los sistemas informaticos 300, 360 y
5
10
15
20
25
30
35
40
45
50
55
60
65
370 en una o mas redes externas diferentes (no ilustradas).
Los otros sistemas informaticos 390 pueden tambien incluir otros sistemas informaticos proximos o remotos de varios tipos en al menos algunas realizaciones, incluidos los sistemas informaticos mediante los cuales los clientes u otros usuarios del servicio de almacenamiento de datos a nivel de bloque interaction con los sistemas informaticos 300 y/o 370. Asimismo, uno o mas de los otros sistemas informaticos 390 pueden ademas ejecutar un modulo de Administrador de Sistema de PES para coordinar la ejecucion de programas en los sistemas informaticos anfitriones 370 y/u otros sistemas informaticos anfitriones 390, o el sistema informatico 300 o uno de los otros sistemas informaticos ilustrados pueden, en cambio, ejecutar dicho modulo de Administrador de Sistema de PES, aunque no se ilustra un modulo de Administrador de Sistema de PES en el presente ejemplo.
En la presente realizacion a modo de ejemplo, el sistema informatico 300 incluye una CPU ("unidad central de procesamiento") 305, un almacenamiento local 320, una memoria 330, y varios componentes E/S ("entrada/salida") 310, los componentes E/S ilustrados en el presente ejemplo incluyendo un visualizador 311, una conexion de red 312, una unidad de medio legible por ordenador 313, y otros dispositivos E/S 315 (Por ejemplo, un teclado, un raton, altavoces, microfono, etc.). En la realizacion ilustrada, el modulo de Administrador de Sistema de BDS 340 se esta ejecutando en la memoria 330 y uno o mas programas diferentes (no mostrados) tambien se pueden ejecutar, opcionalmente, en la memoria 330.
Cada sistema informatico 370 incluye, de forma similar, una CPU 371, un almacenamiento local 377, una memoria 374, y varios componentes E/S 372 (Por ejemplo, componentes E/S similares a los componentes E/S 310 del sistema informatico en servidor 300). En la realizacion ilustrada, un modulo de Administrador de Nodo 380 se esta ejecutando en la memoria 374 para administrar uno o mas programas diferentes 375 que se ejecutan en la memoria 374 en el sistema informatico como, por ejemplo, en nombre de clientes del servicio de ejecucion de programas y/o del servicio de almacenamiento de datos a nivel de bloque. En algunas realizaciones, algunos o todos los sistemas informaticos 370 pueden alojar multiples maquinas virtuales, y, en este caso, cada uno de los programas en ejecucion 375 puede ser una imagen de maquina virtual total (Por ejemplo, con un sistema operativo y uno o mas programas de aplicaciones) ejecutandose en un nodo informatico de maquina virtual alojada diferente. El modulo de Administrador de Nodo 380 puede estar, de forma similar, ejecutandose en otra maquina virtual alojada como, por ejemplo, en un monitor de maquina virtual privilegiada que administra las otras maquinas virtuales alojadas. En otras realizaciones, las copias del programa en ejecucion 375 y el modulo de Administrador de Nodo 380 pueden ejecutarse como procesos distintos en un unico sistema operativo (no mostrado) ejecutado en el sistema informatico 370.
Cada sistema de almacenamiento de archivado 350 en el presente ejemplo es un sistema informatico que incluye una CPU 351, un almacenamiento local 357, una memoria 354, y varios componentes E/S 352 (Por ejemplo, componentes E/S similares a los componentes E/S 310 del sistema informatico en servidor 300). En la realizacion ilustrada, un modulo de Administrador de Archivado 355 esta ejecutandose en la memoria 354 para administrar la operacion de uno o mas sistemas de almacenamiento de archivado 350 como, por ejemplo, en nombre de clientes del servicio de almacenamiento de datos a nivel de bloque y/o de un servicio de almacenamiento distinto que proporciona los sistemas de almacenamiento de archivado. En otras realizaciones, el modulo de Administrador de Archivado 355 puede, en cambio, estar ejecutandose en otro sistema informatico como, por ejemplo, en uno de los otros sistemas informaticos 390 o en el sistema informatico 300 en conjunto con el modulo de Administrador de Sistema de BDS 340. Ademas, si bien no se ilustra en la presente, en algunas realizaciones se puede mantener distinta informacion sobre los datos que son almacenados por los sistemas de almacenamiento de archivado 350 en el almacenamiento 357 o en otra parte, segun se ha descrito anteriormente con referencia a la Figura 2F. Ademas, si bien no se ilustra en la presente, cada uno de los sistemas de almacenamiento de datos a nivel de bloque en servidor 360 y/u otros sistemas informaticos 390 pueden incluir, de forma similar, algunos o todos los tipos de componentes ilustrados con respecto a los sistemas de almacenamiento de archivado 350 como, por ejemplo, una CPU, un almacenamiento local, una memoria, y varios componentes E/S.
El modulo de Administrador de Sistema de BDS 340 y los modulos de Administrador de Nodo 380 pueden llevar a cabo varias acciones para administrar el suministro y el uso de la funcionalidad de almacenamiento de datos a nivel de bloque no local fiable a los clientes (Por ejemplo, programas en ejecucion), segun lo descrito en mayor detalle en otra parte de este documento. En el presente ejemplo, el modulo de Administrador de Sistema de BDS 340 puede mantener una base de datos 325 en el almacenamiento 320 que incluye informacion sobre volumenes almacenados en los sistemas de almacenamiento de datos a nivel de bloque en servidor 360 y/o en los sistemas de almacenamiento de archivado 350 (Por ejemplo, para su uso en la administracion de volumenes), y puede ademas almacenar otra informacion (no mostrada) sobre usuarios u otros aspectos del servicio de almacenamiento de datos a nivel de bloque. En otras realizaciones, la informacion sobre los volumenes puede ser almacenada de otras formas como, por ejemplo, de manera distribuida por modulos de Administrador de Nodo 380 en sus sistemas informaticos y/o por otros sistemas informaticos. Ademas, en el presente ejemplo, cada modulo de Administrador de Nodo 380 en un sistema informatico anfitrion 370 puede almacenar informacion 378 en el almacenamiento local 377 sobre los volumenes actuales conectados al sistema informatico anfitrion y utilizados por los programas en ejecucion 375 en el sistema informatico anfitrion como, por ejemplo, para coordinar interacciones con los sistemas de almacenamiento
5
10
15
20
25
30
35
40
45
50
55
60
65
de datos a nivel de bloque en servidor 360 que proporcionan las copias primarias del volumen, y para determinar como cambiar a una copia espejo de un volumen si la copia primaria de volumen deja de estar disponible. Si bien no se ilustra en la presente, cada sistema informatico anfitrion puede incluir ademas una interfaz de dispositivo de almacenamiento de datos a nivel de bloque local, logica y diferente para cada volumen conectado al sistema informatico anfitrion y utilizado por un programa que se ejecuta en el sistema informatico, que ademas, para los programas en ejecucion, puede no distinguirse de uno o mas dispositivos de almacenamiento local flsicamente conectados que proporcionan almacenamiento local 377.
Segun se observa, los sistemas informaticos 300, 350, 360, 370, y 390 son meramente ilustrativos y no pretenden limitar el alcance de la presente invention. Por ejemplo, los sistemas informaticos 300, 350, 360, 370 y/o 390 pueden estar conectados a otros dispositivos no ilustrados, incluso a traves de la red 385 y/o una o mas redes diferentes como, por ejemplo, Internet o mediante la World Wide Web ("Web"). De manera mas general, un nodo informatico u otro sistema informatico o sistema de almacenamiento de datos pueden comprender cualquier combination de hardware o software que pueda interactuar y realizar los tipos de funcionalidad descritos, incluidos, pero sin caracter restrictivo, ordenadores de sobremesa u otros, servidores de bases de datos, dispositivos de almacenamiento en red y otros dispositivos de red, PDA (asistentes digitales personales), telefonos moviles, telefonos inalambricos, localizadores personales, organizadores electronicos, aparatos de Internet, sistemas
basados en television (Por ejemplo, mediante el uso de codificadores y/o grabadoras de video personales/digitales), y otros productos de consumidor que incluyen capacidades de comunicacion apropiadas. Ademas, la funcionalidad proporcionada por los modulos ilustrados puede, en algunas realizaciones, combinarse en menos modulos o
distribuirse en modulos adicionales. De manera similar, en algunas realizaciones, es posible que no se proporcione
la funcionalidad de algunos de los modulos ilustrados y/o que haya otra funcionalidad adicional disponible.
Tambien se apreciara que, si bien se ilustran varios Items como almacenados en la memoria o en el
almacenamiento mientras estan en uso, dichos Items o porciones de ellos pueden ser transferidos desde la memoria y otros dispositivos de almacenamiento a los fines de la administracion de la memoria e integridad de los datos. De manera alternativa, en otras realizaciones, algunos o todos los modulos y/o sistemas de software pueden ejecutarse en la memoria en otro dispositivo y comunicarse con los sistemas informaticos ilustrados mediante la comunicacion entre ordenadores. Ademas, en algunas realizaciones, algunos o todos los sistemas y/o modulos pueden ser implementados o proporcionados de otras formas como, por ejemplo, al menos parcialmente en firmware y/o hardware, incluidos, pero sin caracter restrictivo, uno o mas circuitos integrados para aplicaciones especificas (ASIC, por sus siglas en ingles), circuitos integrados estandar, controladores (Por ejemplo, ejecutando instrucciones apropiadas, e incluyendo microcontroladores y/o controladores incorporados), matrices de puertas programables in situ (FPGA, por sus siglas en ingles), dispositivos logicos programables complejos (CPLD, por sus siglas en ingles), etc. Algunos o todos los modulos, sistemas y estructuras de datos tambien pueden almacenarse (Por ejemplo, como instrucciones de software o datos estructurados) en un medio legible por ordenador como, por ejemplo, un disco duro, una memoria, una red, o un articulo de medio portatil que sera leido por una unidad apropiada o mediante una conexion apropiada. Los sistemas, los modulos y las estructuras de datos pueden tambien ser transmitidos como senales de datos generadas (Por ejemplo, como parte de una onda portadora u otra senal propagada analogica o digital) en una variedad de medios de transmision legibles por ordenador, incluidos los medios de base inalambrica y medios basados en cable/cableados, y pueden adoptar distintas formas (Por ejemplo, como parte de una senal unica o multiplex analogica, o como paquetes o marcos digitales discretos multiples). Dichos productos de programas informaticos pueden tambien adoptar otras formas en otras realizaciones. Por consiguiente, es posible practicar la presente invencion con otras configuraciones de sistema informatico.
La Figura 4 es un diagrama de flujo de una realization a modo de ejemplo de una rutina de Administrador de Sistema de Almacenamiento de Datos a nivel de Bloque 400. La rutina puede ser proporcionada, por ejemplo, mediante la ejecucion del modulo de Administrador de Sistema de Almacenamiento de Datos a nivel de Bloque 175 de la Figura 1 y/o el modulo de Administrador de Sistema de BDS 340 de la Figura 3 como, por ejemplo, para proporcionar un servicio de almacenamiento de datos a nivel de bloque para ser utilizado por programas en ejecucion. En la realizacion ilustrada, la rutina puede interactuar con multiples sistemas de almacenamiento de datos a nivel de bloque en servidor en un unico centro de datos u otra ubicacion geografica (Por ejemplo, si cada centro de datos u otra ubicacion geografica tiene una realizacion distinta de la rutina que se ejecuta en la ubicacion geografica), aunque en otras realizaciones una unica rutina 400 puede dar apoyo a multiples centros de datos distintos u otras ubicaciones geograficas.
La realizacion ilustrada de la rutina comienza en el bloque 405, donde se recibe una petition u otra information. La rutina continua hacia el bloque 410 para determinar si la peticion recibida fue para crear un nuevo volumen de
almacenamiento de datos a nivel de bloque como, por ejemplo, de un usuario del servicio de almacenamiento de
datos a nivel de bloque y/o de un programa en ejecucion que quiere acceder al nuevo volumen y, si este es el caso, continua hacia el bloque 415 para llevar a cabo la creation del volumen. En la realizacion ilustrada, la rutina en el bloque 415 selecciona uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor en los que las copias del volumen se almacenaran (Por ejemplo, segun, al menos en parte, el lugar y/o las capacidades de los
sistemas de almacenamiento en servidor seleccionados), inicializa las copias de volumen en dichos sistemas de
almacenamiento en servidor seleccionados, y actualiza la informacion almacenada sobre volumenes para reflejar el
5
10
15
20
25
30
35
40
45
50
55
60
65
nuevo volumen. Por ejemplo, en algunas realizaciones, la creacion de un nuevo volumen puede incluir inicializar un tamano determinado de almacenamiento lineal en cada uno de los servidores seleccionados en una forma especlfica como, por ejemplo, para que este vaclo, para incluir una copia de otro volumen indicado (Por ejemplo, otro volumen en el mismo centro de datos u otra ubicacion geografica, o, en cambio, un volumen almacenado en un lugar remoto), para incluir una copia de una copia instantanea indicada de volumen (Por ejemplo, una copia instantanea de volumen almacenada por uno o mas sistemas de almacenamiento de archivado como, por ejemplo, interactuando con los sistemas de almacenamiento de archivado para obtener la copia instantanea de volumen), etc. En otras realizaciones, se puede crear un bloque logico de almacenamiento lineal de un tamano determinado para un volumen en uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor como, por ejemplo, mediante el uso de multiples areas de almacenamiento no contiguas que son presentadas como un unico bloque logico y/o mediante la creacion de bandas en un bloque logico de almacenamiento lineal en multiples discos duros flsicos locales. Con el proposito de crear una copia de un volumen que ya existe en otro centro de datos u otra ubicacion geografica, la rutina puede, por ejemplo, coordinarse con otra instancia de la rutina 400 que da apoyo a operaciones de servicio de almacenamiento de datos a nivel de bloque en dicho lugar. Ademas, en algunas realizaciones, al menos algunos volumenes tendran, cada uno, multiples copias que incluyen al menos una copia primaria de volumen y una o mas copias espejo en multiples sistemas de almacenamiento en servidor diferentes, y, si este es el caso, se pueden seleccionar e inicializar multiples sistemas de almacenamiento en servidor.
Si, en cambio, se determina en el bloque 410 que la peticion recibida no es para crear un volumen, la rutina continua hacia el bloque 420 para determinar si la peticion recibida es para conectar un volumen existente a una copia del programa en ejecucion como, por ejemplo, una peticion recibida de la copia de programa en ejecucion o de otro sistema informatico operado en nombre de un usuario asociado a la copia del programa en ejecucion y/o al volumen indicado. Si este es el caso, la rutina continua hacia el bloque 425 para identificar al menos uno de los sistemas de almacenamiento de datos a nivel de bloque en servidor que almacena una copia del volumen, y para asociar al menos uno de los sistemas de almacenamiento en servidor identificados al programa en ejecucion (Por ejemplo, asociar el sistema de almacenamiento en servidor primario para el volumen al nodo informatico en el que el programa se ejecuta como, por ejemplo, haciendo que un dispositivo de almacenamiento a nivel de bloque local logico sea montado en el nodo informatico que representa la copia primaria de volumen). El volumen que se conectara puede ser identificado de varias maneras como, por ejemplo, mediante un identificador unico para el volumen y/o un identificador para un usuario que ha creado o esta de otra forma asociado al volumen. Despues de conectar el volumen a la copia del programa en ejecucion, la rutina puede ademas actualizar informacion almacenada sobre el volumen para indicar la conexion del programa en ejecucion como, por ejemplo, si solo un unico programa pudiera conectarse al volumen por vez, o si solo un unico programa pudiera tener acceso de escritura u otro acceso de modificacion al volumen por vez. Ademas, en la realizacion indicada, la informacion sobre al menos uno de los sistemas de almacenamiento en servidor identificados se puede proporcionar a un administrador de nodo asociado al programa en ejecucion como, por ejemplo, para facilitar la conexion real del volumen al programa en ejecucion, aunque en otras realizaciones el administrador de nodo puede tener otro acceso a dicha informacion.
Si se determina, en cambio, en el bloque 420 que la peticion recibida no es para conectar un volumen a un programa en ejecucion, la rutina continua hacia el bloque 430 para determinar si la peticion recibida es para crear una copia instantanea para un volumen indicado como, por ejemplo, una peticion recibida de un programa en ejecucion que esta conectado al volumen o, en su lugar, otro sistema informatico (Por ejemplo un sistema informatico operado por un usuario asociado al volumen y/o un usuario que ha adquirido acceso para crear una copia instantanea del volumen de otro usuario). En algunas realizaciones, se puede crear una copia instantanea de volumen a partir de un volumen independientemente de si el volumen esta o no conectado o en uso por cualquier programa en ejecucion, y/o independientemente de si el volumen es o no almacenado en el mismo centro de datos o en otra ubicacion geografica en la que se ejecuta la rutina 400. Si se determina que es asl, la rutina continua hacia el bloque 435 para iniciar la creacion de una copia instantanea de volumen del volumen indicado como, por ejemplo, interactuando con uno o mas modulos de administrador de archivado que coordinan operaciones de uno o mas sistemas de almacenamiento de archivado (Por ejemplo, sistemas de almacenamiento de archivado en un lugar de almacenamiento remoto como, por ejemplo, en conjunto con un servicio de almacenamiento a largo plazo remoto que es accesible en una o mas redes). En algunas realizaciones, la creacion de la copia instantanea de volumen se puede llevar a cabo a traves de un servicio de almacenamiento remoto de tercero en respuesta a una instruccion de la rutina 400 como, por ejemplo, si el servicio de almacenamiento remoto ya almacenara al menos algunos fragmentos del volumen. Ademas, se pueden especificar otros parametros diferentes en al menos algunas realizaciones como, por ejemplo, si la copia instantanea de volumen sera incremental con respecto a una o mas copias instantaneas de volumen diferentes, etc.
Si, en cambio, se determina en el bloque 430 que la peticion recibida no es para crear una copia instantanea de volumen, la rutina continua, en su lugar, hacia el bloque 440 para determinar si la informacion recibida en el bloque 405 es una indicacion de fallo u otra situacion de no disponibilidad de uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor (o de uno o mas volumenes, en otras realizaciones). Por ejemplo, segun lo descrito abajo con respecto al bloque 485, la rutina puede, en algunas realizaciones, monitorear el estado de algunos o todos los sistemas de almacenamiento de datos a nivel de bloque en servidor y determinar la no
5
10
15
20
25
30
35
40
45
50
55
60
65
disponibilidad sobre dicha base como, por ejemplo, enviando de manera periodica o constante mensajes ping u otros mensajes a sistemas de almacenamiento de datos a nivel de bloque en servidor para determinar si una respuesta es recibida, u obteniendo informacion acerca del estado de los sistemas de almacenamiento en servidor. Si se determina en el bloque 440 que la informacion recibida indica el posible fallo de uno o mas sistemas de almacenamiento en servidor, la rutina continua hacia el bloque 445 para llevar a cabo acciones con el fin de mantener la disponibilidad del unico o mas volumenes almacenados en el o los sistemas de almacenamiento en servidor indicados. En particular, la rutina en el bloque 445 determina si cualquiera de dichos volumenes almacenados en el o los sistemas de almacenamiento en servidor indicados son copias primarias de volumen, y para cada copia primaria de volumen, promueve una de las copias espejo para dicho volumen en otro sistema de almacenamiento en servidor para que sea la nueva copia primaria para dicho volumen. En el bloque 450, la rutina hace que al menos una nueva copia de cada volumen se replique en uno o mas sistemas de almacenamiento en servidor diferentes como, por ejemplo, mediante el uso de una copia existente del volumen que esta disponible en un sistema de almacenamiento en servidor distinto de aquellos indicados como no disponibles. En otras realizaciones, la promocion de copias espejo a copias primarias y/o la creacion de nuevas copias espejo puede, en cambio, llevarse a cabo de otras formas como, por ejemplo, de manera distribuida por los sistemas de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, usando un protocolo de eleccion entre las copias espejo de un volumen). Ademas, en algunas realizaciones las copias espejo de volumen pueden ser copias mlnimas que incluyen solo porciones de una copia primaria de un volumen (Por ejemplo, solo porciones que han sido modificadas desde que se creo una copia instantanea del volumen), y la promocion de una copia espejo a una copia primaria puede incluir ademas la recopilacion de informacion para la nueva copia primaria con el fin de completarla (Por ejemplo, desde la copia instantanea mas reciente).
En el bloque 455, la rutina entonces inicia, de forma opcional, conexiones de uno o mas programas en ejecucion a nuevas copias primarias de volumen que fueron promovidas desde copias espejo como, por ejemplo, para los programas en ejecucion que han sido previamente conectados a copias primarias de volumen en el o los sistemas de almacenamiento en servidor no disponibles, aunque en otras realizaciones dicha re-conexion a nuevas copias primarias de volumen se realizara, en cambio, de otras formas (Por ejemplo, mediante un administrador de nodo asociado al programa en ejecucion por el cual ocurrira la re-conexion). En el bloque 458, la rutina actualiza la informacion sobre los volumenes en los sistemas de almacenamiento en servidor no disponibles como, por ejemplo, para indicar las nuevas copias de volumen creadas en el bloque 450 y las nuevas copias primarias de volumen promovidas en el bloque 445. En otras realizaciones, se pueden crear nuevas copias primarias de volumen de otras formas como, por ejemplo, mediante la creacion de una nueva copia de volumen como una copia primaria de volumen y no mediante la promocion de una copia espejo de volumen existente, aunque ello puede llevar mas tiempo que la promocion de una copia espejo de volumen existente. Ademas, si no hay copias de volumen disponibles desde las cuales replicar nuevas copias de volumen en el bloque 450 como, por ejemplo, si multiples sistemas de almacenamiento en servidor que almacenan las copias primaria y espejo para un volumen fallan todas sustancialmente de forma simultanea, la rutina puede, en algunas realizaciones, intentar obtener informacion para el volumen para utilizarla en dicha replicacion de otras formas como, por ejemplo, desde una o mas copias instantaneas de volumen recientes para el volumen que esten disponibles en los sistemas de almacenamiento de archivado, desde una copia del volumen en otro centro de datos u otra ubicacion geografica, etc.
Si, en cambio, se determina en el bloque 440 que la informacion recibida no es una indicacion de fallo u otra situacion de no disponibilidad de uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor, la rutina continua, en su lugar, hacia el bloque 460 para determinar si la informacion recibida en el bloque 405 indica o no mover uno o mas volumenes a uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor nuevos. Dicho movimiento de volumen puede llevarse a cabo por varias razones, segun lo mencionado en mayor detalle en otra parte de este documento, incluido a otros sistemas de almacenamiento de datos a nivel de bloque en servidor en la misma ubicacion geografica (Por ejemplo, mover volumenes existentes a sistemas de almacenamiento que estan mejor equipados para soportar los volumenes) y/o a uno o mas sistemas de almacenamiento de datos en servidor en uno o mas centros de datos diferentes u otras ubicaciones geograficas. Ademas, el movimiento de un volumen puede iniciarse de varias formas como, por ejemplo, a ralz a una peticion de un usuario del sistema de almacenamiento de datos a nivel de bloque que esta asociado al volumen, una peticion de un operador humano del servicio de almacenamiento de datos a nivel de bloque, segun una deteccion automatica de un mejor sistema de almacenamiento en servidor para un volumen que el sistema de almacenamiento en servidor usado en ese momento (Por ejemplo, debido a una sobreutilizacion del sistema de almacenamiento en servidor en ese momento y/o a una infrautilizacion del nuevo sistema de almacenamiento en servidor), etc. Si se determina en el bloque 460 que la informacion recibida es para mover una o mas copias de volumen, la rutina continua hacia el bloque 465 y crea una copia de cada volumen indicado en uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor nuevos como, por ejemplo, de forma similar a la previamente descrita con respecto al bloque 415 (Por ejemplo, utilizando una copia de volumen existente en un sistema de almacenamiento de datos a nivel de bloque en servidor, utilizando una copia instantanea u otra copia del volumen en uno o mas sistemas de almacenamiento de archivado, etc.), y ademas actualiza la informacion almacenada para el volumen en el bloque 465. Ademas, en algunas realizaciones, la rutina puede llevar a cabo acciones adicionales para dar apoyo al movimiento como, por ejemplo, borrar la copia de volumen anterior de un sistema de almacenamiento de datos a nivel de bloque en servidor despues de que se crea la nueva copia de volumen. Ademas, en situaciones en las que uno o mas
5
10
15
20
25
30
35
40
45
50
55
60
65
programas en ejecucion han sido conectados a la copia de volumen anterior que se esta moviendo, la rutina puede iniciar la desconexion de la copia de volumen anterior que se esta moviendo para un programa en ejecucion y/o puede iniciar una re-conexion de dicho programa en ejecucion a la nueva copia de volumen que se esta creando como, por ejemplo, mediante el envlo de instrucciones asociadas a un administrador de nodo para el programa en ejecucion, aunque en otras realizaciones el administrador de nodo puede, en cambio, llevar a cabo dichas acciones.
Si, en cambio, se determina en el bloque 460 que la information recibida no es una instruction para mover uno o mas volumenes, la rutina continua, en su lugar, hacia el bloque 485 para realizar una o mas operaciones indicadas diferentes segun corresponda. Otras operaciones pueden tener varias formas en varias realizaciones como, por ejemplo, una o mas del siguiente listado no excluyente: realizar el monitoreo de algunos o todos los sistemas de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo, enviando mensajes ping u otros mensajes de estado a los sistemas de almacenamiento de datos a nivel de bloque en servidor y esperando una respuesta); dar inicio a la creation de una copia primaria de volumen y/o una copia espejo de volumen de reemplazo en respuesta a la determination de que una copia primara o espejo de un volumen no esta disponible como, por ejemplo, segun el monitoreo que se realiza, en un mensaje recibido de un sistema de almacenamiento de datos a nivel de bloque en servidor primario que almacena una copia primaria de un volumen pero que no es capaz de actualizar una o mas copias espejo de dicho volumen, en un mensaje recibido de un modulo de administrador de nodo, etc.; desconectar, borrar, y/o describir uno o mas volumenes; borrar, describir y/o copiar una o mas copias instantaneas de volumen; rastrear el uso de volumenes y/o copias instantaneas de volumen por parte de los usuarios como, por ejemplo, para medir dicho uso a los efectos del pago; etc. Despues de los bloques 415, 425, 435, 458, 465, o 485, la rutina continua hacia el bloque 495 para determinar si continuar o no como, por ejemplo, hasta que se recibe una instruccion de finalization expllcita. Si este es el caso, la rutina regresa al bloque 405, y, de lo contrario, la rutina continua hacia el bloque 499 y finaliza.
Ademas, para al menos algunos tipos de peticiones, la rutina puede, en algunas realizaciones, verificar ademas que el solicitante este autorizado a realizar la petition como, por ejemplo, segun derechos de acceso especificados para el solicitante y/o un destino asociado de la peticion (Por ejemplo, un volumen indicado). En algunas de dichas realizaciones, la verification de autorizacion puede ademas incluir obtener el pago por parte del solicitante para la funcionalidad solicitada (o verificar que dicho pago ya se ha realizado) como, por ejemplo, para no realizar la peticion si el pago no se ha realizado. Por ejemplo, los tipos de peticion que pueden tener pago asociado en al menos algunas realizaciones y situaciones incluyen peticiones para crear un volumen, conectar un volumen, crear una copia instantanea, mover un volumen indicado (Por ejemplo, a un sistema de almacenamiento en servidor premium), y otros tipos de operaciones indicadas. Ademas, algunos o todos los tipos de acciones llevadas a cabo en nombre de los usuarios pueden ser monitoreadas y medidas como, por ejemplo, para un uso posterior al determinar las correspondientes tarifas basadas en el uso para al menos algunas de dichas acciones.
La Figura 5 es un diagrama de flujo de una realization ejemplar de una rutina de Administrador de Nodo 500. La rutina puede estar provista, por ejemplo, por ejecucion del modulo de Administrador de Nodo 115 y/o 125 de la Figura 1, y/o ejecucion de un modulo de Administrador de Nodo 380 de la Figura 3, como para administrar el uso de uno o mas programas en ejecucion del almacenamiento de datos a nivel de bloque no local. En la realizacion ilustrada, el servicio de almacenamiento de datos a nivel de bloque ofrece funcionalidad mediante una combination de uno o mas modulos de Administrador de Sistema de ADB y multiples modulos de Administrador de Nodo y opcionalmente uno o mas modulos de Administrador de Archivado, aunque en otras realizaciones se pueden utilizar otras configuraciones (Por ejemplo un unico modulo de Administrador de Sistema de ADB sin ningun modulo Administrador de Nodo y/o modulos de Administrador de Archivado, modulos de Administrador de Nodo multiples ejecutandose juntos en un administrador coordinado sin un modulo Administrador de Sistema ADB, etc.).
La realizacion ilustrada de la rutina comienza en el bloque 505 donde se recibe una peticion relacionada con la ejecucion de programa en un nodo informatico asociado. La rutina continua al bloque 510 para determinar si la peticion esta relacionada con la ejecucion de uno o mas de los programas indicados en un nodo informatico asociado indicado, como, por ejemplo, una peticion de un servicio de ejecucion de programa y/o de un usuario asociado con dichos programas. De ser asl, la rutina continua hacia el bloque 515 para obtener una copia de los programa/s indicado/s y para iniciar la ejecucion del/los programa/s en un nodo informatico asociado. En algunas realizaciones, uno o mas de los programas indicados pueden obtenerse en el bloque 515 basado en los programas indicados enviados a la rutina 500 como parte de la peticion recibida en el bloque 505, mientras que en otras realizaciones los programas indicados pueden ser recuperados de un almacenamiento local o no local (por ejemplo, desde un servicio de almacenamiento remoto). En otras realizaciones, la rutina 500 puede en cambio no realizar operaciones relacionadas con programas en ejecucion como, por ejemplo, si otra rutina que da apoyo al servicio de ejecucion de programa realizara, en cambio, aquellas operaciones en nombre de los nodos informaticos asociados.
Si, en cambio, se determina en el bloque 510 que la peticion recibida no es para ejecutar uno o mas del/de los programas indicados, la rutina continua en cambio hacia el bloque 520 para definir si se recibe una peticion para conectar un volumen indicado a un programa en ejecucion indicado, como, por ejemplo, del programa en ejecucion, de la rutina 400 de la Figura 4, y/o de un usuario asociado al volumen indicado y/o el programa en ejecucion indicado. De ser asl, la rutina continua hacia el bloque 525 para obtener una indication de una copia primaria del
5
10
15
20
25
30
35
40
45
50
55
60
65
volumen, y para asociar aquella copia de volumen primaria con un dispositivo de almacenamiento de datos a nivel de bloque local, logico y representativo para el nodo informatico. En algunas realizaciones, el dispositivo de almacenamiento de datos a nivel de bloque local, logico y representativo puede estar indicado para el programa en ejecucion y/o para el nodo informatico por la rutina 500, mientras que en otras realizaciones, el programa en ejecucion puede en cambio iniciar la creacion del dispositivo de almacenamiento de datos a nivel de bloque logico local. Por ejemplo, en algunas realizaciones, la rutina 500 puede utilizar tecnologlas GNBD (dispositivo de bloque de red global) para poner a disposition de un nodo informatico de maquina virtual un dispositivo de almacenamiento de datos a nivel de bloque local y logico mediante la importation de un dispositivo a nivel de bloque en una maquina virtual especlfica y el montaje de dicho dispositivo de almacenamiento de datos a nivel de bloque local y logico. En algunas realizaciones, la rutina puede realizar acciones adicionales en el bloque 525 como para obtener y almacenar indicaciones de una o mas copias de volumen espejo para el volumen, como para permitir que la rutina se conecte dinamicamente a una copia de volumen espejo si la copia de volumen primaria mas tarde deja de estar disponible.
Si, en cambio, se determina en el bloque 520 que la petition recibida del bloque 505 no es para conectar un volumen indicado, la rutina continua en cambio hacia el bloque 530 para definir si la peticion recibida es una peticion de acceso a datos de un programa en ejecucion para un volumen conectado, como, por ejemplo, una peticion de lectura o una peticion de escritura. De ser asl, la rutina continua al bloque 535, donde la rutina identifica la copia de volumen primaria asociada que corresponde a la peticion de acceso a datos (Por ejemplo, basada en el dispositivo de almacenamiento de datos a nivel de bloque logico, local y representativo utilizado por el programa ejecutado para la peticion de acceso a datos) e inicia el acceso a datos solicitado a la copia de volumen primaria. Tal y como se analiza en mayor detalle en otras partes de este documento, en algunas realizaciones se puede utilizar un esquema de escritura deferido como, por ejemplo, para modificar inmediatamente las copias de volumen primarias reales y/o espejo con el fin de reflejar una peticion de acceso a datos de escritura (Por ejemplo, para actualizar siempre la copia de volumen espejo, para actualizar una copia de volumen espejo solo si la copia de volumen espejo se promueve a copia de volumen primaria, etc.), pero no para modificar inmediatamente un segmento correspondiente almacenado en uno o mas sistemas de almacenamiento de archivado para reflejar la peticion de acceso a datos de escritura (Por ejemplo, para actualizar eventualmente la copia almacenada en los sistemas de almacenamiento de archivado cuando se han realizado suficientes modificaciones y/o cuando se solicita acceso de lectura a information correspondiente, etc.). En la realization ilustrada, el mantenimiento de las copias de volumen espejo se realiza mediante una rutina distinta a la rutina 500 (Por ejemplo mediante el servidor primario del sistema de almacenamiento de datos a nivel de bloque que almacena la copia de volumen primaria) a pesar de que en otras realizaciones la rutina 500 puede ademas colaborar en el bloque 535 para mantener una o mas copias de volumen espejo al enviar peticiones de acceso a datos similares o identicos a esas copias de volumen espejo. Ademas, en algunas realizaciones, un volumen puede no almacenarse en los sistemas de almacenamiento de archivado hasta que lo solicite expresamente un usuario correspondiente (Por ejemplo, como parte de una peticion para crear una copia instantanea del volumen), mientras que en otras realizaciones se puede mantener una copia en los sistemas de almacenamiento de archivado de al menos algunas porciones de al menos algunos volumenes (Por ejemplo si la copia de los sistemas de almacenamiento de archivado se utiliza como un almacen de respaldo para las copias de volumen primarias y/o espejo).
Despues del bloque 535, la rutina continua hacia el bloque 540 para definir si se ha recibido una respuesta del servidor primario de sistema de almacenamiento de datos a nivel de bloque para la peticion enviada en el bloque 535 dentro de un tiempo llmite predefinido, como para indicar el exito de la operation. De no ser asl, la rutina define que el servidor primario del sistema de almacenamiento de datos a nivel de bloque no esta disponible, y continua hacia el bloque 545 para iniciar una modification para conectar una de las copias de volumen espejo como la nueva copia de volumen primaria, y para asociar el sistema de almacenamiento de datos a nivel de bloque en servidor para dicha copia de volumen espejo como el nuevo sistema de almacenamiento de datos a nivel de bloque en servidor primario para el volumen. Ademas, de forma similar, la rutina envla la peticion de acceso a datos a la nueva copia de volumen primaria de una manera similar a la que se indica anteriormente respecto del bloque 535, y puede ademas, en algunas realizaciones, controlar si se recibe una respuesta apropiada y proceder nuevamente al bloque 545 si no fuese el caso (Por ejemplo para promover otra copia de volumen espejo y repetir el proceso). En algunas realizaciones, la initiation del cambio de una copia de volumen espejo como una nueva copia de volumen primaria se puede realizar en coordination con la rutina 400, por ejemplo iniciando contacto con la rutina 400 para definir que copia de volumen espejo debe convertirse en la nueva copia de volumen primaria, al recibir instrucciones de la rutina 400 cuando una copia de volumen se promueve para convertirse en copia de volumen primaria mediante la rutina 500 (Por ejemplo como se muestra en la indication enviada por la rutina 500 en el bloque 545 de que la copia de volumen primaria no esta disponible), etc.
Si, en cambio, se determina en el bloque 530 que la peticion recibida no es una peticion de acceso a datos para un volumen conectado, la rutina continua en cambio hacia el bloque 585 para realizar una o mas operaciones diferentes indicadas, segun sea apropiado. Las otras operaciones pueden tener varias formas en varias realizaciones como, por ejemplo, instrucciones de la rutina 400 de nueva informacion de volumen (Por ejemplo una nueva copia de volumen primaria promovida para un volumen al cual se conectan uno o mas programas en ejecucion que estan siendo manejados), para desconectar un volumen de un programa en ejecucion en un nodo informatico asociado
5
10
15
20
25
30
35
40
45
50
55
60
65
con la rutina 500, etc. Ademas, en al menos algunas realizaciones, la rutina 500 puede ademas realizar una o mas acciones diferentes de un monitor de maquina virtual como, por ejemplo, si la rutina 500 opera como parte o, de otra manera, en conjunto con un monitor de maquina virtual que administra uno o mas nodos informaticos de maquina virtual asociados.
Despues de los bloques 515, 525, 545, o 585, o si en cambio se determina en el bloque 540 que una respuesta se recibe dentro de un llmite de tiempo predefinido, la rutina continua hacia el bloque 595 para definir si continua, por ejemplo, hasta recibir una instruccion de finalizacion expllcita. De ser asl, la rutina regresa al bloque 505, de lo contrario continua al bloque 599 y finaliza.
Ademas, en al menos algunos tipos de peticiones, la rutina puede ademas verificar en algunas realizaciones que el solicitante esta autorizado para realizar la peticion, basada, por ejemplo, en derechos de acceso especlficos para el solicitante y/o para un destino asociado de la peticion (Por ejemplo un volumen indicado). En algunas de dichas realizaciones, la verification de la autorizacion puede ademas incluir obtener el pago por parte del solicitante para la funcionalidad solicitada (o verificar que dicho pago ya se ha realizado), para no llevar a cabo la peticion si el pago no se ha realizado. Por ejemplo, los tipos de peticion que pueden tener un pago asociado en al menos algunas realizaciones y situaciones incluyen peticiones para ejecutar programas indicados, conectar un volumen, realizar alguna o cualquier tipo de peticion de acceso a datos, y otros tipos de operaciones indicadas. Ademas, algunos o todos los tipos de acciones llevadas a cabo en nombre de usuarios pueden ser monitoreadas y medidas como, por ejemplo, para un uso posterior al determinar las correspondientes tarifas basadas en el uso para al menos algunas de dichas acciones.
La Figura 6 es un diagrama de flujo de una realization ejemplar de una rutina de Sistema de Almacenamiento de Datos a nivel de Bloque en Servidor 600. Esta rutina puede estar provista, por ejemplo, por ejecucion de un componente de software en un sistema de almacenamiento de datos a nivel de bloque en servidor, como para administrar el almacenamiento de datos a nivel de bloque en uno mas volumenes de almacenamiento de datos a nivel de bloque en dicho sistema de almacenamiento en servidor (Por ejemplo para sistemas de almacenamiento de datos a nivel de bloque en servidor 165 de la Figura 1 y/o de la Figura 2). En otras realizaciones, alguna o todas las funcionalidades de la rutina pueden ser provistas de otras maneras como, por ejemplo, mediante la ejecucion de un software en uno o mas sistemas informaticos para administrar uno o mas sistemas de almacenamiento de datos a nivel de bloque en servidor.
La realizacion ilustrada de la rutina comienza en el bloque 605, donde se recibe una peticion. La rutina continua hacia el bloque 610 para determinar si la peticion recibida esta relacionada con la creation de un nuevo volumen como, por ejemplo, asociando un bloque de espacio de almacenamiento disponible para el sistema de almacenamiento en servidor (Por ejemplo espacio de almacenamiento en uno o mas discos duros locales) con un nuevo volumen indicado. La peticion puede, por ejemplo, ser de la rutina 400 y/o de un usuario asociado con el nuevo volumen que se esta creando. De ser asl, la rutina continua al bloque 615 para almacenar information acerca del nuevo volumen, y en el bloque 620 inicia un espacio de almacenamiento para el nuevo volumen (Por ejemplo bloque lineal logico de espacio de almacenamiento de un tamano indicado). Tal y como se analiza en mayor detalle en otra parte de este documento, en algunas realizaciones se pueden crear nuevos volumenes basados en otro volumen existente o copia de volumen instantanea y, de ser asl, la rutina en el bloque 620 puede iniciar el espacio de almacenamiento para el nuevo volumen, copiando datos apropiados para el espacio de almacenamiento, mientras que en otras realizaciones puede iniciar un nuevo espacio de almacenamiento de volumen de otras maneras (Por ejemplo para inicializar el espacio de almacenamiento a un valor por defecto, por ejemplo a todos ceros).
Si, en cambio, se determina en el bloque 610que la peticion recibida no es para crear un nuevo volumen, la rutina continua en cambio hacia el bloque 625 para definir si una peticion de acceso a datos ha sido recibida para un volumen existente almacenado en el sistema de almacenamiento en servidor como, por ejemplo, desde un administrador de nodo asociado con un programa en ejecucion que inicio la peticion de acceso a datos. De ser asl, la rutina continua al bloque 630 para realizar la peticion de acceso a datos en el volumen indicado. La rutina entonces continua hacia el bloque 635 para, en la realizacion ilustrada, iniciar de manera opcional las actualizaciones correspondientes para una o mas copias espejo del volumen como, por ejemplo, si el volumen indicado en el sistema de almacenamiento en servidor actual es la copia de volumen primaria para el volumen. En otras realizaciones, se puede mantener la coherencia entre una copia de volumen primaria y las copias de volumen espejo de otras formas. Tal y como se describe en mayor detalle en otra parte de este documento, en algunas realizaciones, al menos algunas modificaciones de los contenidos de datos almacenados de al menos algunos volumenes tambien se pueden realizar a uno o mas sistemas de almacenamiento de archivado (Por ejemplo a un servicio de almacenamiento remoto), como para mantener una copia de respaldo u otra copia de dichos volumenes y, de ser asl, la rutina puede ademas iniciar actualizaciones de los sistemas de almacenamiento de archivado para iniciar las actualizaciones correspondientes para una o mas copias del volumen en los sistemas de almacenamiento de archivado. Ademas, si la rutina en el bloque 635 o en cualquier otro sitio define que no hay una copia espejo del volumen disponible (por ejemplo, segun una falta de respuesta a una peticion de acceso a datos enviada en el bloque 635 dentro de un tiempo predefinido o a un mensaje ping o a otro mensaje de estado iniciado por la rutina
5
10
15
20
25
30
35
40
45
50
55
60
65
600 para verificar periodicamente que esten disponibles la copia de volumen espejo y su sistema de almacenamiento de datos a nivel de bloque en servidor espejo; segun un mensaje del sistema de almacenamiento de datos a nivel de bloque en servidor espejo que ha sufrido una condicion de error o que ha comenzado el apagado o el funcionamiento en modo de fallo; etc.), la rutina puede iniciar acciones para crear una nueva copia espejo de un volumen como, por ejemplo, enviando un mensaje correspondiente a la rutina 400 de la Figura 4 o, en cambio, iniciando directamente la creacion de una copia de volumen espejo.
Si, en cambio, se determina en el bloque 625 que la peticion recibida no es una peticion de acceso a datos para un volumen, la rutina continua hacia el bloque 685 para realizar una o mas de operaciones diferentes indicadas, segun sea apropiado. Dichas otras operaciones pueden presentar diversas formas en diversas realizaciones como, por ejemplo, una o mas del siguiente listado no restrictivo: para eliminar un volumen (Por ejemplo para tener el espacio de almacenamiento asociado disponible para otros usos); para copiar un volumen en un destino indicado (Por ejemplo en otro nuevo volumen en otro sistema de almacenamiento de datos a nivel de bloque en servidor, en uno o mas sistemas de almacenamiento de archivado para utilizar como copia de volumen instantanea, etc.); para brindar informacion acerca del uso de los volumenes (Por ejemplo para medir el uso del volumen, para los clientes que tienen una tarifa basada en el uso del volumen; para realizar mantenimientos o diagnosticos continuos en el sistema de almacenamiento de datos a nivel de bloque en servidor (Por ejemplo desfragmentar los discos duros locales); etc. Despues de los bloques 620, 635 o 685, la rutina continua hacia el bloque 695 para definir si continua, por ejemplo hasta recibir una instruccion de finalizacion expllcita. De ser asl, la rutina regresa al bloque 605, de lo contrario continua al bloque 699 y finaliza.
Ademas, para al menos algunos tipos de peticiones, la rutina puede en algunas realizaciones verificar ademas que el solicitante este autorizado a realizar dicha peticion, basado por ejemplo en derechos de acceso especificados por el solicitante y/o un destino asociado de la peticion (Por ejemplo un volumen indicado), mientras que en otras realizaciones la rutina puede suponer que las peticiones han sido previamente autorizadas por una rutina de la cual recibe peticiones (Por ejemplo una rutina de Administrador de Nodo y/o una rutina de Administrador de Sistema ADB). Ademas, alguno o todos los tipos de acciones tomadas en nombre de usuarios pueden ser monitoreadas y medidas, para su uso posterior al determinar las tarifas basadas en uso para al menos algunas de dichas acciones.
Las Figuras 7A y 7B son un diagrama de flujo de una realizacion ejemplar de una rutina de Administrador de Sistema PES 700. La rutina puede ser provista, por ejemplo, mediante la ejecucion de un modulo de Administrador de Sistema PES 140 de la Figura 1. En otras realizaciones, una o todas las funcionalidades de la rutina 700 pueden en cambio ser provistas de otras maneras como, por ejemplo, mediante la rutina 400 como parte del servicio de almacenamiento de datos a nivel de bloque.
En la realizacion ilustrada, la rutina comienza en el bloque 705, donde se recibe un mensaje de estado u otra peticion relacionada con la ejecucion de un programa. La rutina continua hacia el bloque 710 para determinar el tipo de mensaje o peticion recibida. Si en el bloque 710 se determina que el tipo es una peticion para ejecutar un programa como, por ejemplo, de un usuario o programa en ejecucion, la rutina continua hacia el bloque 720 para seleccionar uno o mas sistemas informaticos anfitriones donde ejecutar el programa indicado como, por ejemplo, un grupo de posibles sistemas informaticos anfitriones para la ejecucion de programas. En algunas realizaciones, se pueden seleccionar uno o mas sistemas de informaticos anfitriones segun las instrucciones del usuario u otros criterios de interes indicados. La rutina entonces continua hacia el bloque 725 para iniciar la ejecucion del programa por cada uno de los sistemas informaticos anfitriones seleccionados, por ejemplo, mediante la interaccion con un Administrador de Nodo asociado al sistema informatico anfitrion seleccionado. En el bloque 730, la rutina entonces realiza opcionalmente una o mas tareas de limpieza (Por ejemplo ejecucion de programas de monitoreo por parte de usuarios como, por ejemplo, para mediciones y/u otros propositos de facturacion).
Si, en cambio, se determina en el bloque 710 que la peticion recibida es para registrar un nuevo programa como disponible para su posterior ejecucion, la rutina continua en cambio hacia el bloque 740 para almacenar una indicacion del programa y la informacion administrativa asociada para su utilization (Por ejemplo informacion de control de acceso relacionado con usuarios que estan autorizados para utilizar el programa y/o tipos de usos autorizados) y ademas puede almacenar al menos una copia centralizada del programa en algunas situaciones. La rutina luego continua hacia el bloque 745 para iniciar de manera opcional la distribution de copias del programa indicado a uno o mas sistemas informaticos anfitriones para su uso posterior, de modo que permita un inicio rapido del programa mediante estos sistemas informaticos anfitriones al recuperar la copia almacenada del almacenamiento local de estos sistemas informaticos anfitriones. En otras realizaciones, una o mas copias del programa indicado pueden estar almacenadas de otras formas como, por ejemplo, en uno o mas sistemas de almacenamiento de archivado remoto.
Si, en cambio, se determina en el bloque 710 que se ha recibido un mensaje de estado en el bloque 705 relacionado con uno o mas sistemas informaticos anfitriones, la rutina continua en cambio al bloque 750 para actualizar la informacion relacionada con dichos sistemas informaticos anfitriones como para rastrear el uso de los programas en ejecucion y/u otra informacion de estado acerca de los sistemas informaticos anfitriones (Por ejemplo uso de los volumenes de almacenamiento de datos a nivel de bloque no locales). En algunas realizaciones, los modulos de
5
10
15
20
25
30
35
40
45
50
55
60
65
administrador de nodo enviaran periodicamente mensajes de estado, mientras que en otras realizaciones, los mensajes de estados se pueden enviar en otros momentos (Por ejemplo cuando hubiese modificaciones significativas). En incluso otras realizaciones, la rutina 700 puede en cambio solicitar informacion de modulos de administrador de nodos y/o sistemas informaticos anfitriones segun se desee. Los mensajes de estado pueden incluir una variedad de tipos de informacion como, por ejemplo, el numero e identidad de los programas ejecutandose actualmente en un sistema informatico especlfico, el numero e identidad de las copias de programas actualmente almacenadas en el repositorio de programas local en un sistema informatico especlfico, adjuntos y/u otro uso de volumenes de almacenamiento de datos a nivel de bloque no locales, informacion relacionada con el rendimiento y los recursos (Por ejemplo utilizacion de la CPU, red, disco, memoria, etc.) para un sistema informatico, informacion de configuracion para un sistema informatico, e informes de error o condiciones de fallo relacionados con hardware o software en un sistema informatico especlfico.
Si la rutina en el bloque 705, en cambio, define que se recibe otro tipo de peticion o mensaje, la rutina continua, en cambio, hacia el bloque 785 para realizar una o mas de otras operaciones indicadas, segun sea apropiado. Dichas otras operaciones pueden incluir, por ejemplo, suspender o finalizar la ejecucion de programas actualmente en ejecucion, y de otra forma gestionar los aspectos administrativos del servicio de ejecucion de programa (registro de nuevos usuarios, determinar y obtener el pago por el uso del servicio de ejecucion de programa, etc.). Despues de los bloques 745, 750 o 785, la rutina continua hacia el bloque 730 para realizar una o mas tareas de limpieza de manera opcional. La rutina luego continua hacia el bloque 795 para determinar si continua o no, por ejemplo, hasta recibir una instruccion de finalizacion expllcita. De ser asl, la rutina regresa al bloque 705, de lo contrario continua al bloque 799 y finaliza.
Si bien no se ilustra en la presente, en al menos algunas realizaciones, se pueden proveer una variedad de tipos adicionales de funcionalidades para ejecutar programas mediante un servicio de ejecucion de programa como, por ejemplo, en conjunto con un servicio de almacenamiento de datos a nivel de bloque. En al menos algunas realizaciones, la ejecucion de una o mas copias o instancias de un programa en uno o mas sistemas informaticos pueden iniciarse en respuesta a una peticion de ejecucion actual para la ejecucion inmediata de aquellas instancias de programa. De manera alternativa, la iniciacion puede estar basada en una peticion de ejecucion de programa recibida previamente que preve o de otra manera reserva la futura ejecucion de esas instancias de programa para el momento actual. Las peticiones de ejecucion de programa pueden recibirse de diferentes maneras, directamente de un usuario (Por ejemplo, mediante una consola interactiva u otra GUI (interfaz grafica del usuario) provista por el servicio de ejecucion del programa), o de un programa en ejecucion de un usuario que inicia automaticamente la ejecucion de una o mas instancias de otros programas o de si mismo (Por ejemplo mediante una API (interfaz de programacion de aplicaciones) provista por el servicio de ejecucion de programa, tal y como una API que utiliza servicios web). Las peticiones de ejecucion de programa pueden incluir diferentes informaciones que se utilizaran en la iniciacion de la ejecucion de una o mas instancias de un programa, tal y como una indicacion de un programa previamente registrado o provisto de otra manera para su futura ejecucion, y una cantidad de instancias del programa que se ejecutaran simultaneamente (Por ejemplo expresada como un unico numero de instancias deseadas, como un numero mlnimo y maximo de instancias deseadas, etc.). Ademas, en algunas realizaciones, las peticiones de ejecucion de programa pueden incluir varios tipos de informacion diferentes, tal y como los siguientes: una indicacion de una cuenta de usuario u otra indicacion de un usuario previamente registrado (Por ejemplo para utilizar en la identification de un programa previamente almacenado y/o para determinar si la ejecucion de la instancia de programa solicitada esta autorizada); una indicacion de una fuente de pago con la cual hacer el pago del servicio de ejecucion de programa para la ejecucion de instancias de programa; una indicacion de un pago previo o de otra autorizacion para la ejecucion de instancias de programa (Por ejemplo, una suscripcion comprada previamente valida por un determinado perlodo, para un numero de instancias de ejecucion de programa, para una determinada cantidad de usos de un recurso, etc.); y/o un ejecutable u otra copia de un programa que sera ejecutado inmediatamente y/o almacenado para su posterior ejecucion. Ademas, en algunas realizaciones, las peticiones de ejecucion de programa pueden ademas incluir una variedad de otros tipos de preferencias y/o requerimientos para la ejecucion de una o mas instancias de programa. Dichas preferencias y/o requerimientos pueden incluir indicaciones para que algunas o todas las instancias de programa sean ejecutadas en una ubicacion geografica y/o logica indicada, tal y como en uno de los centros de datos multiples que alojan sistemas informaticos disponibles para su uso, en sistemas informaticos multiples que esten proximos entre si y/o en uno o mas sistemas informaticos que esten proximos a sistemas informaticos que presenten otras caracterlsticas indicadas (por ejemplo, que provean una copia de un volumen de almacenamiento de datos a nivel de bloque indicados).
La Figura 8 es un diagrama de flujo de una realization ejemplar de una rutina de Administrador de archivado 800. La rutina puede estar provista, por ejemplo, por ejecucion de uno de los modulos de Administrador de archivado 355 de la Figura 4, del modulo de Administrador de archivado 190 de las Figuras 2C-2F y/o de uno o mas modulos de administrador de archivado (no ilustrados) en los sistemas informaticos 180 de la Figura 1. En otras realizaciones, algunas o todas las funcionalidades de la rutina 800 pueden, en cambio, ser provistas de otras maneras, tal y como mediante la rutina 400 como parte de un servicio de almacenamiento de datos a nivel de bloque. En la realizacion ilustrada, los sistemas de almacenamiento de archivado almacenan datos en fragmentos, cada uno de los cuales corresponde a una portion de un volumen de almacenamiento de datos a nivel de bloque, pero en otras realizaciones los datos se pueden almacenar de otras formas.
5
10
15
20
25
30
35
40
45
50
55
60
65
La realizacion ilustrada de la rutina 800 comienza en el bloque 805, donde se recibe information o una petition. La rutina luego continua hacia el bloque 810 para definir si se autoriza la peticion o informacion como, por ejemplo, si el solicitante ha pagado para obtener acceso segun una tarifa, o si en cambio tiene derechos de acceso para indicar que se lleve a cabo una peticion. Si en el bloque 815 se define que se autoriza la peticion o informacion, la rutina continua hacia el bloque 820 y, de no ser asl, regresa al bloque 805. En el bloque 820, la rutina define si la peticion recibida es para almacenar una nueva copia de instantanea para un volumen indicado. De ser asl, la rutina continua hacia el bloque 825 para obtener fragmentos de volumen multiples para el volumen, almacenar cada fragmento como un objeto de datos de sistema de almacenamiento de archivado, y luego almacenar informacion acerca de los objetos de datos para los fragmentos que estan asociados con la copia de volumen instantanea. Tal y como se analiza en mayor detalle en otra parte de este documento, los fragmentos de volumen se pueden obtener de varias maneras, por ejemplo al recibirse en el bloque 805 como bloques distintivos multiples, recibidos en el bloque 805 como un unico gran grupo de datos a nivel de bloque que esta dividido en fragmentos en el bloque 825, recuperados en el bloque 825 como fragmentos individuales o como un unico gran grupo de datos a nivel de bloque que sera dividido en fragmentos, previamente almacenados en los sistemas de almacenamiento de archivado, etc.
Si, en cambio, se determina en el bloque 820 que la peticion recibida no es para almacenar una nueva copia de volumen instantanea, la rutina continua, en cambio, hacia el bloque 830 para definir si la peticion recibida es para almacenar una copia instantanea incremental de un volumen que refleja cambios de una copia de volumen instantanea previa. De ser asl, la rutina continua hacia el bloque 835 para identificar fragmentos instantaneos que han cambiado desde una copia instantanea previa del volumen, y para obtener copias de los fragmentos instantaneos modificados de una forma similar a la analizada anteriormente con referencia al bloque 825. La rutina luego continua hacia el bloque 840 para almacenar copias de los fragmentos modificados, y para almacenar informacion acerca de los nuevos fragmentos modificados y los otros fragmentos previos no modificados, cuyos objetos de datos correspondientes estan asociados con la nueva copia de volumen instantanea. Los fragmentos que se han modificado desde una copia de volumen instantanea previa pueden identificarse de varias maneras, por ejemplo mediante sistemas de almacenamiento de datos a nivel de bloque en servidor que almacenan copias primarias y/o espejo del volumen (Por ejemplo, rastreando cualquier peticion de acceso a datos de escritura u otras peticiones de modification para el volumen).
Si, en cambio, se determina en el bloque 830 que las peticiones recibidas no son para almacenar una copia de volumen instantanea incremental, la rutina continua, en cambio, hacia el bloque 845 para determinar si la peticion recibida es para proveer uno o mas fragmentos de una copia de volumen instantanea, por ejemplo desde objetos de datos almacenados correspondientes. De ser asl, la rutina continua hacia el bloque 850 para recuperar los datos de el/los fragmento/s de copia de volumen instantanea indicado/s, y enviar los datos recuperados al solicitante. Dichas peticiones pueden ser, por ejemplo, parte de la creation de un nuevo volumen basado en una copia de volumen instantanea existente al recuperar todos los fragmentos para la copia de volumen instantanea, parte de la recuperation de un subconjunto de unos fragmentos de copia de volumen instantanea para restaurar una copia de volumen en espejo minima, etc.
Si, en cambio, se determina en el bloque 845 que la peticion recibida no es para proveer uno o mas fragmentos de copia de volumen instantanea, la rutina continua hacia el bloque 855 para definir si la peticion recibida es para realizar una o mas peticiones de acceso a datos para uno o mas fragmentos de volumen que no son parte de una copia de volumen instantanea, como para realizar peticiones de accesos a datos de lectura y/o peticiones de acceso a datos de escritura para uno o mas objetos de datos que representan fragmentos de volumen especificos (Por ejemplo si aquellos objetos de datos almacenados sirven de almacen de respaldo para dichos fragmentos de volumen). De ser asi, la rutina continua hacia el bloque 860 para llevar a cabo la/s peticion o peticiones de acceso a datos para el/los objeto/s de datos almacenados correspondientes para el/los fragmento/s de volumen indicados. Tal y como se describe en mayor detalle en otra parte de este documento, en al menos algunas realizaciones, se pueden utilizar tecnicas de actualization diferida cuando se modifican objetos de datos almacenados, de modo que una peticion de acceso a datos de escritura puede no llevarse a cabo inmediatamente. De ser asi, antes de que se finalice una peticion de acceso a datos de lectura posterior para el mismo objeto, una o mas peticiones de acceso a datos de escritura previas pueden llevarse a cabo para garantizar una estricta coherencia de datos.
Si, en cambio, se determina en el bloque 855 que la peticion recibida no es para llevar a cabo peticiones de acceso a datos para uno o mas fragmentos de volumen, la rutina continua, en cambio, hacia el bloque 885 para realizar una o mas otras operaciones indicadas, segun sea apropiado. Dichas operaciones pueden incluir, por ejemplo, recibir informacion de forma repetida que corresponde con las modificaciones que se realizan en un volumen para actualizar los correspondientes objetos de datos almacenados que representan el volumen (Por ejemplo como un almacen de respaldo o para otros propositos) y llevar a cabo las acciones apropiadas correspondientes, responder a las peticiones para eliminar o de otra manera modificar las copias de volumen instantaneas almacenadas, responder a las peticiones de un usuario para administrar una cuenta con un servicio de almacenamiento que provee los sistemas de almacenamiento de archivado, etc. Despues de los bloques 825, 840, 850, 860 u 885, la rutina continua hacia el bloque 895 para definir si continua, por ejemplo hasta recibir una instruction de finalization explicita. De ser asi, la rutina regresa al bloque 805, de lo contrario continua al bloque 899 y finaliza.
5
10
15
20
25
30
35
40
45
50
55
60
65
Tal y como se describe anteriormente, para al menos algunos tipos de peticiones, la rutina puede en algunas realizaciones verificar ademas que el solicitante esta autorizado a realizar dicha peticion, segun, por ejemplo, derechos de acceso especificados por el solicitante y/o un destino asociado de la peticion (Por ejemplo un volumen indicado o copia de volumen instantanea), mientras que en otras realizaciones, la rutina puede suponer que las peticiones han sido previamente autorizadas por una rutina de la cual recibe peticiones (Por ejemplo una rutina de Administrador de Nodo y/o una rutina de Administrador de Sistema ADB). Ademas, algunas o todos los tipos de acciones tomadas en nombre de usuarios pueden ser monitoreadas y medidas en al menos algunas realizaciones, por ejemplo para utilizar posteriormente en la determinacion de las tarifas basadas en uso correspondientes para al menos algunas de dichas acciones.
Ademas, tal y como se indica anteriormente, algunas realizaciones pueden utilizar maquinas virtuales y, de ser asl, los programas que se ejecutaran mediante el servicio de ejecucion de programa pueden incluir imagenes de maquinas virtuales completas. En algunas realizaciones, un programa que sera ejecutado puede comprender un sistema operativo completo, un sistema de archivos y/u otros datos, y posiblemente uno o mas procesos a nivel usuario. En otras realizaciones, un programa que sera ejecutado puede comprender uno o mas tipos de ejecutables que interoperan para ofrecer alguna funcionalidad. Incluso en otras realizaciones, un programa que sera ejecutado puede comprender una recopilacion flsica o logica de instrucciones y datos que pueden ser ejecutados de forma nativa en el sistema informatico provisto o indirectamente mediante interpretes u otras abstracciones de hardware implementadas mediante software. Mas generalmente, en algunas realizaciones, un programa que sera ejecutado puede incluir uno o mas programas de aplicacion, marcos de aplicacion, bibliotecas, archivos, ficheros de clase, secuencias de comandos, ficheros de configuracion, ficheros de datos, etc.
Ademas, como se indica anteriormente, en al menos algunas realizaciones y situaciones, los volumenes pueden migrarse o de otro modo trasladarse de un sistema de almacenamiento en servidor a otro. Se pueden utilizar varias tecnicas para trasladar volumenes, y dicho movimiento se puede iniciar de varias maneras. En algunas situaciones, el movimiento puede reflejar problemas relacionados con los sistemas de almacenamiento en servidor en los que los volumenes estan almacenados (Por ejemplo fallos en los sistemas de almacenamiento en servidor y/o en el acceso de red a los sistemas de almacenamiento en servidor). En otras situaciones, el movimiento se puede realizar para albergar otras copias de volumen que seran almacenadas en sistemas de almacenamiento en servidor existentes, tal y como volumenes de mayor prioridad, o para consolidar el almacenamiento de copias de volumen en un numero limitado de sistemas de almacenamiento en servidor, como para habilitar los sistemas de almacenamiento en servidor originales que almacenan las copias de volumen para que se apaguen por motivos tal y como mantenimiento, conservacion de energla, etc. En un ejemplo especlfico, si una o mas copias de volumen almacenados en un sistema de almacenamiento en servidor necesitan mas recursos de los disponibles en dicho sistema de almacenamiento en servidor, se puede migrar una o mas copias de volumen a uno o mas sistemas de almacenamiento en servidor con recursos adicionales. El uso excesivo de los recursos disponibles puede ocurrir por varias razones, por ejemplo cuando uno o mas sistemas de almacenamiento en servidor presenta menos recursos que los esperados, uno o mas de los sistemas de almacenamiento en servidor utiliza mas recursos que los esperados (o permitidos) o, en algunas realizaciones en las que los recursos disponibles de uno o mas sistemas de almacenamiento en servidor estan intencionalmente comprometidos en exceso respecto de las posibles necesidades de recursos de una o mas copias de volumen reservadas o almacenadas. Por ejemplo, si las necesidades de recursos esperadas de las copias de volumen estan dentro de los recursos disponibles, las necesidades de recursos maximas pueden superar los recursos disponibles. Un uso excesivo de los recursos disponibles tambien puede ocurrir si los recursos reales necesarios para el almacenamiento o uso del volumen superan los recursos disponibles.
Se podra apreciar que en algunas realizaciones la funcionalidad provista por las rutinas mencionadas anteriormente puede proveerse de maneras alternativas, por ejemplo, dividiendose entre mas rutinas o consolidandose en menos rutinas. De manera similar, en algunas realizaciones, las rutinas ilustradas pueden proveer mas o menos funcionalidades que las descritas, por ejemplo cuando otras rutinas ilustradas en cambio excluyen o incluyen dicha funcionalidad respectivamente, o cuando la cantidad de funcionalidad que se provee se ve alterada. Ademas, si bien varias operaciones pueden ilustrarse como si se realizaran de una determinada manera (Por ejemplo en serie o en paralelo) y/o en un orden particular, en otras realizaciones las operaciones se pueden realizar en ordenes diferentes o de maneras diferentes. De manera similar, las estructuras de datos indicadas anteriormente pueden estar estructuradas de diferentes maneras en otras realizaciones como, por ejemplo, presentando una estructura de datos unica dividida en estructuras de datos multiples consolidadas en una estructura de datos unica, y pueden almacenar mas o menos informacion que la descrita (Por ejemplo cuando otras estructuras de datos ilustradas en cambio excluyen o incluyen dicha informacion respectivamente, o cuando la cantidad o los tipos de informacion que esta almacenada se ve alterada).
Por lo que antecede, se podra apreciar que, a pesar de que en la presente se han descrito realizaciones especlficas a efectos ilustrativos, se pueden realizar varias modificaciones sin desviarse del alcance de la invencion. De manera acorde, la invencion no esta limitada excepto por las reivindicaciones adjuntas y los elementos descritos en las mismas. Ademas, mientras que ciertos aspectos de la invencion se presentan a continuacion en ciertas formas de
5
10
15
20
25
30
35
40
45
50
55
60
65
reivindicaciones, los inventores contemplaron los distintos aspectos de la invention en cualquier forma de revindication disponible. Por ejemplo, mientras solo algunos aspectos de la invencion actualmente pueden ser enumerados como reivindicados en un medio legible por ordenador, otros aspectos pueden realizarse de igual manera.
Las siguientes clausulas describen conceptos tecnicos relacionados con la invencion, pero no constituyen realizaciones enmarcadas dentro del alcance de las reivindicaciones.
Clausula 1. Un metodo para un sistema informatico de un servicio de almacenamiento de datos a nivel de bloque para proveer capacidades de almacenamiento de datos a nivel de bloque en remoto para programas en ejecucion, dicho metodo comprendiendo:
recibir una petition para iniciar el acceso de un primer programa en ejecucion a un almacenamiento de datos a nivel de bloque no local provisto por un servicio de almacenamiento de datos a nivel de bloque, ejecutandose el primer programa en el primero de una pluralidad de sistemas informaticos que estan co-localizados en una ubicacion geografica y que comparten una o mas redes internas, utilizando el servicio de almacenamiento de datos a nivel de bloque un primer grupo de otra multiple pluralidad de sistemas informaticos como sistemas de almacenamiento de datos a nivel de bloque que proveen almacenamiento de datos a nivel de bloque a multiples programas en ejecucion, no siendo el primer sistema informatico parte del primer grupo; y estando bajo el control de un primer modulo de administrador de nodo del servicio de almacenamiento de datos a nivel de bloque que administra el acceso del primer sistema informatico a las redes internas,
recibir una o mas peticiones de acceso a datos iniciadas por el primer programa en ejecucion a un dispositivo de almacenamiento local logico del primer sistema informatico que representa el almacenamiento de datos a nivel de bloque no local provisto por el servicio de almacenamiento de datos a nivel de bloque;
responder automaticamente a las peticiones de acceso a datos recibidas interactuando sobre las redes internas con un segundo sistema informatico en nombre del primer programa en ejecucion para llevar a cabo las peticiones de acceso a datos recibidas en un primer volumen de almacenamiento de datos a nivel de bloque que tiene una copia primaria almacenada en el segundo sistema informatico y que tiene una copia espejo almacenada en un tercer sistema informatico, siendo el segundo y tercer sistema informatico cada uno parte del primer grupo de sistemas de almacenamiento de datos a nivel de bloque, la interaction sobre las redes internas llevandose a cabo de una manera que es transparente para el primer programa en ejecucion;
despues de llevar a cabo las peticiones de acceso a datos recibidas en el primer volumen de almacenamiento de datos a nivel de bloque, definir automaticamente que la copia primaria del primer volumen de almacenamiento de datos a nivel de bloque en el segundo sistema informatico no esta disponible; y
despues de recibir una o mas diferentes peticiones de acceso a datos iniciadas por el primer programa en ejecucion al primer dispositivo de almacenamiento a nivel de bloque local y logico del primer sistema informatico, responder automaticamente a las diferentes peticiones de acceso a datos recibidas por medio de la interaccion mediante las redes internas con el tercer sistema informatico interno en nombre del primer programa en ejecucion para llevar a cabo las otras peticiones de acceso a datos en la primera copia espejo del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema informatico.
Clausula 2. El metodo de la clausula 1, que comprende, ademas, bajo el control de un modulo de administrador de sistema para el servicio de almacenamiento de datos a nivel de bloque, administrar el suministro, por parte del servicio de almacenamiento de datos a nivel de bloque del almacenamiento de datos a nivel de bloque a los multiples programas en ejecucion, incluyendo dicha administration:
crear multiples volumenes de almacenamiento de datos a nivel de bloque para ser cada uno de ellos utilizado por uno o mas de los multiples programas en ejecucion, la creation de cada uno de los volumenes de almacenamiento de datos a nivel de bloque incluyendo el almacenamiento de una copia primaria del volumen de almacenamiento de datos a nivel de bloque en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque e incluyendo el almacenamiento de una copia espejo del volumen de almacenamiento de datos a nivel de bloque en otro de los multiples sistemas de almacenamiento de datos a nivel de bloque, ejecutandose los multiples programas en multiples sistemas informaticos que presentan modulos de administrador de nodos asociados multiples; mantener las copias espejo de los volumenes de almacenamiento de datos a nivel de bloque llevando a cabo dicha modification a los datos a nivel de bloque almacenados en la copia espejo del volumen de almacenamiento de datos a nivel de bloque, cuando un sistema de almacenamiento de datos a nivel de bloque que almacena la copia primaria de uno de los volumenes de almacenamiento de datos a nivel de bloque creados realiza una modificacion de los datos a nivel de bloque almacenados en dicha copia primaria segun una peticion de acceso a datos de escritura recibida de un programa en
5
10
15
20
25
30
35
40
45
50
55
60
65
ejecucion; y
mantener acceso a los volumenes de almacenamiento de datos a nivel de bloque al promover la copia espejo de un volumen de almacenamiento de datos a nivel de bloque para convertirla en una nueva copia primaria de un volumen de almacenamiento de datos a nivel de bloque, cuando la copia primaria de uno de los volumenes de almacenamiento de datos a nivel de bloque creados no esta disponible.
Clausula 3. El metodo de la clausula 2 en el que los programas multiples son ejecutados por un servicio de ejecuciOn de programa en un segundo grupo de multiples sistemas informaticos de la pluralidad de sistemas informaticos, en el que los sistemas informaticos del segundo grupo son distintos de los sistemas informaticos del primer grupo, en el que el primer sistema informatico anfitriOn alberga multiples maquinas virtuales cada una de las cuales es capaz de ejecutar al menos un programa, en el que el primer programa en ejecuciOn es uno de los multiples programas y es una imagen de maquina virtual siendo ejecutada por al menos una de las multiples maquinas virtuales albergadas por el primer sistema informatico, y en el que se ejecuta el primer mOdulo de administrador de nodo como parte de un monitor de maquina virtual para el primer sistema informatico.
Clausula 4. Un metodo implementado por ordenador para proveer la funcionalidad de almacenamiento de datos a nivel de bloque a un programa en ejecuciOn, comprendiendo el metodo:
recibir una o mas indicaciones de un primer grupo de una o mas peticiones de acceso a datos iniciadas por un primer programa en ejecuciOn a un dispositivo de almacenamiento a nivel de bloque local a un primer sistema informatico en el que se ejecuta el primer programa, siendo el dispositivo de almacenamiento a nivel de bloque local un dispositivo lOgico que representa un volumen de almacenamiento de datos a nivel de bloque no local provisto por un segundo sistema distinto de almacenamiento de datos sobre una o mas redes;
responder automaticamente a las indicaciones recibidas del primer grupo de peticiones de acceso a datos interactuando con el segundo sistema de almacenamiento de datos mediante sobre una o mas redes en nombre del primer programa en ejecuciOn para provocar la realizaciOn de las peticiones de acceso a datos del primer grupo sobre datos a nivel de bloque almacenados por el volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos;
determinar que el volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos ha dejado de estar disponible e identificar automaticamente un tercer sistema de almacenamiento que contenga una copia espejo del volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos, siendo el tercer sistema de almacenamiento de datos distinto del primer sistema informatico y del segundo sistema de almacenamiento de datos;
recibir una o mas indicaciones de un segundo grupo de una o mas peticiones de acceso a datos iniciadas por el primer programa en ejecuciOn al dispositivo de almacenamiento a nivel de bloque en el primer sistema informatico; y
responder automaticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos interactuando con el tercer sistema de almacenamiento de datos por medio de una o mas redes en nombre del primer programa en ejecuciOn para provocar la realizaciOn de las peticiones de acceso a datos del segundo grupo sobre la copia espejo del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema de almacenamiento de datos identificado.
Clausula 5. El metodo de la clausula 4 que comprende, ademas, antes de recibir las indicaciones del primer grupo de una o mas peticiones de acceso a datos, conectar el volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico para que el primer programa en ejecuciOn lo utilice, la conexiOn del volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico, incluyendo asociar el dispositivo de almacenamiento a nivel de bloque local y lOgico para el primer sistema informatico al volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos.
Clausula 6. El metodo de la clausula 5 que comprende, ademas, , antes de conectar el volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico, crear el volumen de almacenamiento de datos a nivel de bloque mediante el almacenamiento de una copia primaria del volumen de almacenamiento de datos a nivel de bloque creado en el segundo sistema de almacenamiento de datos y el almacenamiento de la copia espejo del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema de almacenamiento de datos, de modo que la realizaciOn de las peticiones de acceso a datos del primer grupo en el volumen de almacenamiento de datos a nivel de bloque provistos por el segundo sistema de almacenamiento de datos se lleven a cabo en la copia primaria almacenada del volumen de almacenamiento de datos a nivel de bloque.
Clausula 7. El metodo de la clausula 6 en el que el volumen de almacenamiento de datos a nivel de bloque esta provisto por un servicio de almacenamiento de datos a nivel de bloque, en el que la creaciOn del volumen
5
10
15
20
25
30
35
40
45
50
55
60
65
de almacenamiento de datos a nivel de bloque es realizada por un modulo de administrador de sistema del servicio de almacenamiento de datos a nivel de bloque en respuesta a una peticion de un usuario que esta asociado con el primer programa en ejecucion, y en el que la conexion del volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico es realizada por un modulo de administrador de nodo del servicio de almacenamiento de datos a nivel de bloque que administra el acceso del primer sistema informatico a una o mas de las redes.
Clausula 8. El metodo de la clausula 4 que comprende, ademas, despues de determinar que el volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos ha dejado de estar disponible, iniciar automaticamente la creacion de otra copia del volumen de almacenamiento de datos a nivel de bloque en un cuarto sistema de almacenamiento de datos que es distinto del primer sistema informatico y del segundo y tercer sistema de almacenamiento de datos.
Clausula 9. El metodo de la clausula 8 en el que el volumen de almacenamiento de datos a nivel de bloque provisto por un segundo sistema de almacenamiento de datos ha dejado de estar disponible segun al menos un falo del segundo sistema de almacenamiento de datos, en una fallo en la conectividad al segundo sistema de almacenamiento de datos, y en una incapacidad del segundo sistema de almacenamiento de datos de acceder de manera fiable al volumen de almacenamiento de datos a nivel de bloque almacenado.
Clausula 10. El metodo de la clausula 4 en el que la realizacion de al menos una de las peticiones de acceso a datos del primer grupo incluye modificar los datos a nivel de bloque almacenados en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos, y ademas incluye mantener la copia espejo del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema de almacenamiento de datos mediante la modification de los datos a nivel de bloque almacenados en la copia espejo del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema de almacenamiento de datos.
Clausula 11. El metodo de la clausula 4 en el que el primer sistema informatico y el segundo sistema de almacenamiento de datos son un subconjunto de una pluralidad de sistemas informaticos co-localizados en una unica ubicacion geografica, en el que la pluralidad de sistemas informaticos incluye multiples sistemas de almacenamiento de datos a nivel de bloque que estan provistos por un servicio de almacenamiento de datos a nivel de bloque, y en el que cada uno del segundo y tercer sistema de almacenamiento de datos es distinto de los multiples sistemas de almacenamientos de datos a nivel de bloque.
Clausula 12. El metodo de la clausula 11 en el que la unica ubicacion geografica en la que la pluralidad de sistemas informaticos estan co-localizados es un centro de datos, y en el que el metodo ademas comprende crear al menos una copia del volumen de almacenamiento de datos a nivel de bloque en uno o mas sistemas de almacenamiento de datos de archivado de un servicio de almacenamiento remoto que estan ubicados externos al centro de datos.
Clausula 13. El metodo de la clausula 11 en el que el primer programa es ejecutado por un servicio de ejecucion de programa que ejecuta multiples programas para multiples usuarios en multiples sistemas informaticos de la pluralidad de sistemas informaticos, en el que el primer sistema informatico anfitrion alberga multiples maquinas virtuales, cada una de las cuales es capaz de ejecutar al menos un programa, en el que el primer programa en ejecucion es uno de los multiples programas y es una imagen de maquina virtual que esta siendo ejecutada por al menos por una de las multiples maquinas virtuales albergadas por el primer sistema informatico, en el que la reception de las indicaciones del primer grupo de peticiones de acceso a datos y la recepcion de las indicaciones del segundo grupo de las otras peticiones de acceso a datos y la respuesta automatica a las indicaciones recibidas del primer y segundo grupo de peticiones de acceso a datos se realizan como parte de la ejecucion de un monitor de maquina virtual para el primer sistema informatico, y en el que el primer sistema informatico incluye uno o mas distintos dispositivos de almacenamiento locales reales que estan disponibles para que los utilice el primer programa en ejecucion.
Clausula 14. Un medio legible por ordenador cuyos contenidos permiten a uno o mas sistemas informaticos ofrecer una funcionalidad de almacenamiento de datos a nivel de bloque a un programa en ejecucion, mediante la realizacion de un metodo que comprende:
recibir una o mas indicaciones de una o mas peticiones de acceso a datos iniciadas por un primer programa en ejecucion en un primer sistema informatico de un volumen de almacenamiento de datos a nivel de bloque, siendo el volumen de almacenamiento de datos a nivel de bloque provisto por un segundo sistema de almacenamiento de datos a nivel de bloque que esta separado del primer sistema informatico por una o mas redes;
responder automaticamente a las indicaciones recibidas de las peticiones de acceso a datos al iniciar la realizacion de peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque;
5
10
15
20
25
30
35
40
45
50
55
60
65
crear automaticamente una copia espejo del volumen de almacenamiento de datos a nivel de bloque en cada uno o mas de los terceros sistemas de almacenamiento de datos a nivel de bloque que son distintos del primer sistema informatico y del segundo sistema de almacenamiento de datos a nivel de bloque; y
despues de que el volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos ha dejado de estar disponible, responder automaticamente a una o mas indicaciones recibidas de una o mas distintas peticiones de acceso a datos iniciadas mediante el primer programa al volumen de almacenamiento de datos a nivel de bloque al llevar a cabo otras peticiones de acceso a datos en la copia espejo del volumen de almacenamiento de datos a nivel de bloque creadas en al menos uno de los terceros sistemas de almacenamiento de datos a nivel de bloque.
Clausula 15. El medio legible por ordenador de la clausula 14, en la que la realizacion de las peticiones de acceso a datos del primer grupo, la creacion automatica de la copia en espejo del volumen de almacenamiento de datos a nivel de bloque, y la realizacion de otras peticiones de acceso a datos del segundo grupo se realizan automaticamente por un modulo de administrador de sistema de un servicio de almacenamiento de datos a nivel de bloque, en el que el primer programa inicia las peticiones de acceso a datos al volumen de almacenamiento de datos a nivel de bloque al interactuar con un dispositivo de almacenamiento de datos a nivel de bloque logico que es local al primer sistema informatico y que representa el volumen de almacenamiento de datos provisto por el sistema de almacenamiento de datos a nivel de bloque, en el que la recepcion de las peticiones de acceso a datos iniciados por un primer modulo de administrador de nodo del servicio de almacenamiento de datos a nivel de bloque que esta asociado con el primer sistema informatico despues de interacciones del primer programa con el dispositivo, y en el que la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos se realiza en parte bajo el control del modulo de administrador de nodo al iniciar el envlo de las peticiones de acceso a datos recibidos sobre una o mas redes.
Clausula 16. El medio legible por ordenador de la clausula 14 en el que el segundo sistema de almacenamiento de datos a nivel de bloque almacena una copia primaria del volumen de almacenamiento de datos a nivel de bloque en un momento de la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos, y en el que el metodo ademas comprende, antes de responder automaticamente a las indicaciones recibidas de otras peticiones de acceso a datos, definir automaticamente que la copia primaria del volumen de almacenamiento de datos a nivel de bloque ha dejado de estar disponible, seleccionar la copia espejo del volumen de almacenamiento de datos a nivel de bloque en uno de los terceros sistemas de almacenamiento de datos a nivel de bloque, y promover la copia espejo seleccionada del volumen de almacenamiento de datos a nivel de bloque en el tercer sistema de almacenamiento de datos a nivel de bloque para que sea una copia primaria actual del volumen de almacenamiento de datos a nivel de bloque.
Clausula 17. El medio legible por ordenador de la clausula 16 en el que la creacion automatica de la copia espejo del volumen de almacenamiento de datos a nivel de bloque en cada uno o mas de los terceros sistemas de almacenamiento de datos a nivel de bloque incluye crear una primera copia espejo del volumen de almacenamiento de datos a nivel de bloque en uno de los terceros sistemas de almacenamiento de datos a nivel de bloque antes de responder automaticamente a las indicaciones recibidas de las peticiones de acceso a datos, en donde la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos ademas incluye llevar a cabo las peticiones de acceso a datos en la primera copia espejo del volumen de almacenamiento de datos a nivel de bloque, en donde la primera copia espejo del volumen de almacenamiento de datos a nivel de bloque es la copia espejo seleccionada, y en donde la creacion automatica de la copia espejo del volumen de almacenamiento de datos a nivel de bloque en cada uno o mas de los terceros sistemas de almacenamiento de datos a nivel de bloque ademas incluye, despues de definir que la copia primaria del volumen de almacenamiento de datos a nivel de bloque ha dejado de estar disponible, crear una segunda copia espejo del volumen de almacenamiento de datos a nivel de bloque en otro de los terceros sistemas de almacenamiento de datos a nivel de bloque.
Clausula 18. El medio legible por ordenador de la clausula 14, en el que el segundo sistema de almacenamiento de datos a nivel de bloque almacena una copia primaria del volumen de almacenamiento de datos a nivel de bloque en un momento de la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos, en donde la/s indicada/s peticiones de acceso a datos iniciadas por el primer programa son un segundo grupo de peticiones de acceso a datos iniciadas por el primer programa, y en el que el metodo ademas comprende, antes de recibir las indicaciones de las peticiones de acceso a datos del segundo grupo:
crear una copia primaria inicial del volumen de almacenamiento de datos a nivel de bloque en un cuarto sistema de almacenamiento de datos a nivel de bloque distinto del primer sistema informatico y del segundo sistema de almacenamiento de datos a nivel de bloque y de uno o mas de los terceros
5
10
15
20
25
30
35
40
45
50
55
60
65
sistemas de almacenamiento de datos a nivel de bloque;
responder automaticamente a una o mas de las indicaciones recibidas de un primer grupo de una o mas peticiones de acceso a datos iniciadas por el primer programa para el volumen de almacenamiento de datos a nivel de bloque mediante la realizacion de peticiones de acceso a datos del primer grupo en la copia primaria creada en el cuarto sistema de almacenamiento de datos a nivel de bloque, siendo el primer grupo de peticiones de acceso a datos iniciado por el primer programa antes del segundo grupo de peticiones de acceso a datos; y
despues de responder a las indicaciones del primer grupo de peticiones de acceso a datos, determinar el traslado de la copia primaria del volumen de almacenamiento de datos a nivel de bloque del cuarto sistema de almacenamiento de datos a nivel de bloque al segundo sistema de almacenamiento de datos a nivel de bloque, de manera que las peticiones de acceso a datos iniciadas por el primer programa al volumen de almacenamiento de datos a nivel de bloque despues de trasladar la copia primaria del volumen de almacenamiento de datos al segundo sistema de almacenamiento de datos a nivel de bloque se realizan en la copia primaria trasladada del volumen de almacenamiento de datos a nivel de bloque sobre el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 19. El medio legible por ordenador de la clausula 18, en el que la definicion de trasladar la copia primaria del volumen de almacenamiento de datos a nivel de bloque del cuarto sistema de almacenamiento de datos a nivel de bloque al segundo sistema de almacenamiento de datos a nivel de bloque esta basado en al menos una definicion automatica de que el segundo sistema de almacenamiento de datos a nivel de bloque esta mas capacitado que el cuarto sistema de almacenamiento de datos a nivel de bloque para proveer la copia primaria del volumen de almacenamiento de datos a nivel de bloque y una peticion recibida de un usuario del servicio de almacenamiento de datos a nivel de bloque que esta asociado con el volumen de almacenamiento de datos a nivel de bloque.
Clausula 20. El medio legible por ordenador de la clausula 14, en el que el primer programa es uno de multiples programas ejecutados por un servicio de ejecucion de programa en multiples sistemas informaticos anfitriones en nombre de los usuarios del servicio de ejecucion de programa a cambio de tarifas pagadas por los usuarios, en el que el primer sistema informatico es uno de los multiples sistemas informaticos anfitriones, y en el que el uso del volumen de almacenamiento de datos a nivel de bloque por parte del primer programa es realizado a cambio de una tarifa abonada por el usuario del servicio de ejecucion de programa en cuyo nombre se ejecuta el primer programa.
Clausula 21. El medio legible por ordenador de la clausula 14 en el que el medio legible por ordenador es al menos uno de una memoria de un sistema informatico que almacena los contenidos y un medio de transmision de datos que incluye una senal de datos generada y almacenada que contiene los contenidos.
Clausula 22. El medio legible por ordenador de la clausula 14 en el que los contenidos son instrucciones que al ejecutarse hacen que uno o mas sistemas informaticos lleven a cabo el metodo.
Clausula 23. Un sistema configurado para proveer la funcionalidad de almacenamiento de datos a nivel de bloque para programas en ejecucion, que comprende:
una o mas memorias; y
un modulo administrador de sistema de almacenamiento de datos a nivel de bloque configurado para proveer un servicio de almacenamiento de datos a nivel de bloque que utiliza multiples sistemas de almacenamiento de datos a nivel de bloque para almacenar volumenes de almacenamiento de datos a nivel de bloque creados por usuarios del servicio de almacenamiento de datos a nivel de bloque y a los que se acceden mediante una o mas redes en nombre de uno o mas programas en ejecucion asociados con los usuarios, incluyendo la provision del servicio de almacenamiento de datos a nivel de bloque:
crear uno o mas volumenes de almacenamiento de datos a nivel de bloque para ser utilizados por uno o mas programas en ejecucion, la creacion de cada uno de los volumenes de almacenamiento de datos a nivel de bloque incluyendo la creacion de una copia primaria del volumen de almacenamiento de datos a nivel de bloque que esta almacenado en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque;
responder a las peticiones de acceso a datos cada una de las cuales es iniciada por uno de los programas en ejecucion para uno de los volumenes de almacenamiento de datos a nivel de bloque creados mediante, para cada una de las peticiones de acceso a datos, si la copia primaria de uno del volumen de almacenamiento de datos a nivel de bloque para la peticion de acceso a datos esta disponible, el inicio de la realizacion de la peticion de acceso a datos en la copia primaria disponible; y en respuesta a la indicacion recibida, crear una nueva copia del primero de los volumenes de almacenamiento de datos a nivel de bloque, estando la copia primaria del sistema de almacenamiento de datos a nivel de bloque almacenada en uno de los primeros de los sistemas de almacenamiento de datos a nivel de bloque, estando la nueva copia creada almacenada en uno o mas de los otros
5
10
15
20
25
30
35
40
45
50
55
60
65
sistemas de almacenamiento del primer sistema de almacenamiento de datos a nivel de bloque.
Clausula 24. El sistema de la clausula 23 en el que la creacion del primer volumen de almacenamiento de datos a nivel de bloque ademas incluye crear una copia espejo del primer volumen de almacenamiento de datos a nivel de bloque que esta almacenada en un segundo de los multiples sistemas de almacenamiento de datos a nivel de bloque distinto del primer sistema de almacenamiento de datos a nivel de bloque y de uno o mas de los otros sistemas de almacenamiento de datos, y en el que la respuesta a las peticiones de acceso a datos ademas incluye, para cada peticion de acceso a datos que es iniciada por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque, si la copia primaria del primer volumen de almacenamiento de datos en bloque no esta disponible, iniciar la realizacion de la peticion de acceso a datos en la copia espejo del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 25. El sistema de la clausula 24 en el que la respuesta a las peticiones de acceso a datos ademas incluye, por cada peticion de acceso a datos que se inicia por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque, si la copia primaria del volumen esta disponible, iniciar la realizacion de la peticion de acceso a datos en la copia espejo del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 26. El sistema de la clausula 24 en el que la respuesta a las peticiones de acceso a datos ademas incluye, para una peticion de acceso a datos inicial iniciada por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque para el cual no esta disponible la copia primaria del primer volumen de almacenamiento de datos a nivel de bloque en el primer sistema de almacenamiento de datos a nivel de bloque, promover la copia espejo del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque para que se convierta en la nueva copia primaria del primer volumen de almacenamiento de datos en el primer sistema de almacenamiento de datos a nivel de bloque, de modo que el inicio de la realizacion de dicha peticion de acceso a datos iniciales en la copia espejo del primer volumen de almacenamiento de datos almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque se lleva a cabo en la nueva copia primaria promovida del primer volumen de almacenamiento de datos a nivel de bloque, y de modo que las peticiones de acceso de datos iniciados por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque posterior a dicha peticion de acceso a datos inicial sean llevadas a cabo en la nueva copia primaria promovida del primer volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 27. El sistema de la clausula 26 en el que la promocion de la copia espejo del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque que se convertira en la nueva copia primaria del primer volumen de almacenamiento de datos a nivel de bloque ademas incluye crear una segunda copia espejo del primer volumen de almacenamiento de datos a nivel de bloque que esta almacenado en un tercero de los multiples sistemas de almacenamiento de datos a nivel de bloque distinto del primero y segundo sistema de almacenamiento de datos a nivel de bloque, y en el que la respuesta a cada una de las peticiones de acceso a datos posterior a la peticion de acceso de datos inicial que son iniciadas por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque ademas incluye iniciar la realizacion de la peticion de la segunda copia espejo del primer del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el tercer sistema de almacenamiento de datos a nivel de bloque.
Clausula 28. El sistema de la clausula 23 en el que la indication recibida en respuesta a la cual se crea la nueva copia del primer volumen de almacenamiento de datos a nivel de bloque esta basada en una definition de trasladar la copia primaria del primer volumen de almacenamiento de datos a nivel de bloque desde el primer sistema de almacenamiento de datos a nivel de bloque a un segundo sistema de almacenamiento distinto, en el que uno o mas de los otros sistemas almacenamiento de datos a nivel de bloque son el segundo sistema de almacenamiento de datos a nivel de bloque, en el que crear la nueva copia del primer volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque incluye designar la nueva copia creada en el segundo sistema de almacenamiento de datos a nivel de bloque como una nueva copia primaria del primer volumen de almacenamiento de datos a nivel de bloque, y en el que la provision del servicio de almacenamiento de datos a nivel de bloque llevada a cabo por el modulo de administrador de sistema de almacenamiento de datos ademas incluye, despues de crear la nueva copia del primer volumen de almacenamiento de datos a nivel de bloque, responder a una o mas peticiones de acceso a datos adicionales cada una de las cuales es iniciada por uno de los programas en ejecucion para el primer volumen de almacenamiento de datos a nivel de bloque al iniciar la realizacion de las peticiones de acceso a datos adicionales en la nueva copia primaria del primer volumen de almacenamiento de datos a nivel de bloque almacenado en el segundo sistema de almacenamiento de datos a nivel de bloque.
5
10
15
20
25
30
35
40
45
50
55
60
65
Clausula 29. El sistema de la clausula 28, en el que la decision de trasladar la copia primaria del volumen de almacenamiento de datos a nivel de bloque del primer sistema de almacenamiento de datos a nivel de bloque al segundo sistema de almacenamiento de datos a nivel de bloque se basa en al menos una decision automatica de que el segundo sistema de almacenamiento de datos a nivel de bloque esta mas capacitado que el primer sistema de almacenamiento de datos a nivel de bloque para proveer a uno o mas programas en ejecucion acceso a la copia primaria del primer volumen de almacenamiento de datos a nivel de bloque y de una peticion recibida de un usuario del servicio de almacenamiento de datos a nivel de bloque que esta asociado con el primer volumen de almacenamiento de datos a nivel de bloque.
Clausula 30. El sistema de la clausula 23 en el que la indicacion recibida en respuesta a la cual se crea la nueva copia del primer volumen de almacenamiento de datos a nivel de bloque es una peticion para crear una copia instantanea del primer volumen de almacenamiento de datos a nivel de bloque, utilizando un servicio de almacenamiento remoto del primer volumen de almacenamiento de datos a nivel de bloque, en el que uno o mas sistemas de almacenamiento de datos distintos son sistemas de almacenamiento de datos de archivado que son parte del servicio de almacenamiento remoto, y en el que la creacion de la nueva copia del volumen de almacenamiento de datos a nivel de bloque incluye la interaccion con el servicio de almacenamiento remoto para crear la nueva copia de volumen de almacenamiento de datos a nivel de bloque como una copia instantanea del primer volumen de almacenamiento de datos a nivel de bloque.
Clausula 31. El sistema de la clausula 23 que comprende, ademas, los multiples sistemas de almacenamiento de datos a nivel de bloque, estando los multiples sistemas de almacenamiento de datos a nivel de bloque co- localizados en una unica ubicacion geografica, y que ademas comprende un servicio de almacenamiento remoto que utiliza multiples sistemas de almacenamiento de datos diferentes en una ubicacion distinta a la unica ubicacion geografica, almacenando los sistemas de almacenamiento de datos diferentes en un formato distinto a los datos a nivel de bloque, y en el que el suministro del servicio de almacenamiento de datos a nivel de bloque mediante el modulo de administrador de sistema de servicio de almacenamiento de datos a nivel de bloque ademas incluye, por cada uno o mas de los volumenes de almacenamiento de datos a nivel de bloque creados, el almacenamiento de multiples porciones de volumen de almacenamiento de datos a nivel de bloque en uno o mas de los multiples sistemas de almacenamiento de datos diferentes del servicio de almacenamiento remoto, representando cada una de las porciones multiples almacenadas una porcion del volumen de almacenamiento de datos a nivel de bloque que ha sido modificada por una o mas peticiones de acceso a datos.
Clausula 32. El sistema de la clausula 23 que comprende ademas multiples modulos de administrador de nodos cada uno asociado con uno o mas de los programas en ejecucion, gestionando cada uno de los modulos de administrador de nodos las peticiones de acceso a datos iniciadas por uno o mas programas en ejecucion asociados para uno o mas de los volumenes de almacenamiento de datos a nivel de bloque creados al reenviar dichas peticiones de acceso a datos al servicio de almacenamiento de datos a nivel de bloque sobre una o mas redes.
Clausula 33. El sistema de la clausula 23 que comprende, ademas, un modulo de administrador de sistema de servicio de ejecucion de programa configurado para proveer un servicio de ejecucion de programa que utiliza multiples sistemas informaticos anfitriones para ejecutar multiples programas para usuarios del servicio de ejecucion de programa, incluyendo los multiples programas ejecutados por el servicio de ejecucion de programa uno o mas programas en ejecucion que utilizan uno o mas volumenes de almacenamiento de datos a nivel de bloque creados.
Clausula 34. El sistema de la clausula 23 en el que sistema incluye un primer sistema informatico que incluye al menos una de las memorias, y en el que el administrador de sistema de almacenamiento de datos a nivel de bloque incluye instrucciones de software para su ejecucion por parte del primer sistema informatico que utiliza la al menos una memoria.
Clausula 35. El sistema de la clausula 23 en el que el modulo de administrador de sistema de almacenamiento de datos a nivel de bloque consiste en uno o mas medios para proveer un servicio de almacenamiento de datos a nivel de bloque que utiliza multiples sistemas de almacenamiento de datos a nivel de bloque para almacenar volumenes de almacenamiento de datos a nivel de bloque que son creados por los usuarios del servicio de almacenamiento de datos a nivel de bloque y a los que se accede por medio de una o mas redes en nombre de uno o mas programas en ejecucion asociados con los usuarios, incluyendo el suministro del servicio de almacenamiento de datos a nivel de bloque:
crear uno o mas volumenes de almacenamiento de datos a nivel de bloque para ser utilizados por uno o mas programas en ejecucion, crear cada uno de los volumenes de almacenamiento de datos a nivel de bloque incluyendo crear una copia primaria del volumen de almacenamiento de datos a nivel de bloque que esta almacenado en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque;
responder a peticiones de acceso a datos cada una iniciada por uno de los programas en ejecucion
5
10
15
20
25
30
35
40
45
50
55
60
65
para uno de los volumenes de almacenamiento de datos a nivel de bloque creados, para cada una de las peticiones de acceso a datos, si la primera copia del volumen de almacenamiento de datos a nivel de bloque para la peticion de acceso a datos esta disponible, iniciando la realizacion de la peticion de acceso a datos en la copia primaria disponible; y
en respuesta a una indicacion recibida, crear una nueva copia de un primero de los volumenes de almacenamiento de datos a nivel de bloque, estando la copia primaria del primer sistema de almacenamiento de datos a nivel de bloque almacenada en un primer sistema de almacenamiento de datos a nivel de bloque, estando la nueva copia creada almacenada en uno o mas de los otros sistemas de almacenamiento de datos distintos del primer sistema de almacenamiento de datos a nivel de bloque.
Clausula 36. Un metodo para un sistema informatico de un servicio de almacenamiento de datos a nivel de bloque para administrar el acceso de programas en ejecucion a datos a nivel de bloque almacenados en remoto, comprendiendo el metodo:
recibir una peticion para iniciar el acceso de una primera copia de un programa indicado a un almacenamiento de datos a nivel de bloque no local provisto por un servicio de almacenamiento de datos a nivel de bloque, la primera copia de programa ejecutandose en el primero de una pluralidad de sistemas informaticos que estan co-localizados en una primera ubicacion geografica y que comparten una o mas redes internas, utilizando el servicio de almacenamiento de datos a nivel de bloque un primer grupo de otros multiples sistemas informaticos de la pluralidad de sistemas informaticos como sistemas de almacenamiento de datos a nivel de bloque que proveen almacenamiento de datos a nivel de bloque a multiples programas en ejecucion, no siendo el primer sistema informatico parte del primer grupo;
en respuesta a la peticion recibida, conectar un primer volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico para ser utilizado por la primera copia de programa en ejecucion, presentando el primer volumen de almacenamiento de datos a nivel de bloque una copia primaria almacenada en un segundo sistema informatico y presentando una copia espejo almacenada en un tercer sistema informatico, siendo cada primer y segundo sistema informatico parte del primer grupo de sistemas de almacenamiento de datos a nivel de bloque, incluyendo la conexion del primer volumen de almacenamiento de datos a nivel de bloque la asociacion de un primer dispositivo de almacenamiento en bloque local y logico del primer sistema informatico al primer volumen de almacenamiento de datos a nivel de bloque; y bajo el control de un modulo de administrador de sistema del servicio de almacenamiento de datos a nivel de bloque, gestionando la provision del almacenamiento de datos a nivel de bloque a los multiples programas en ejecucion, mediante:
despues de recibir indicaciones de una o mas peticiones de acceso a datos iniciadas por la primera copia de programa en ejecucion al primer dispositivo de almacenamiento en bloque local y logico, respuesta automatica llevando a cabo las peticiones de acceso a datos en la copia primaria y espejo del primer volumen de almacenamiento de datos a nivel de bloque, provocando la realizacion de las peticiones de acceso a datos una o mas modificaciones en los datos a nivel de bloque almacenados en el primer volumen de almacenamiento de datos a nivel de bloque de manera tal que los mismos datos a nivel de bloque almacenados se mantengan en cada una de las copias primarias y espejo del primer volumen de almacenamiento de datos a nivel de bloque;
despues de llevar a cabo las peticiones de acceso a datos, la determinacion automatica de que la ejecucion de la primera copia de programa ha finalizado, y en respuesta a dicha determinacion, mantener automaticamente el acceso del programa indicado al primer volumen de almacenamiento de datos a nivel de bloque, incluyendo el mantenimiento del acceso iniciar la ejecucion de una segunda copia del programa indicado en un cuarto sistema informatico distinto y conectando el primer volumen de almacenamiento de datos a nivel de bloque al cuarto sistema informatico para que lo utilice la segunda copia de programa en ejecucion, incluyendo la conexion asociar un segundo dispositivo de almacenamiento en bloque local y logico del cuarto sistema informatico al primer volumen de almacenamiento de datos a nivel de bloque; y
despues de recibir indicaciones de otra/s peticion o peticiones de acceso a datos al segundo dispositivo de almacenamiento en bloque local y logico iniciada/s por la segunda copia de programa en ejecucion, respuesta automatica llevando a cabo las peticiones de acceso a datos en la copia primaria y en la copia espejo del primer volumen de almacenamiento de datos a nivel de bloque, provocando la realizacion de las peticiones de acceso a datos una o mas modificaciones adicionales en los datos a nivel de bloque almacenados en el primer volumen de almacenamiento de datos a nivel de bloque de manera tal que cada una de las copias primarias y espejo del primer volumen de almacenamiento de datos a nivel de bloque almacenen los mismos de datos a nivel de bloque.
Clausula 37. El metodo de la clausula 36 en el que la conexion del primer volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico es llevada a cabo por un modulo de administrador de sistema del servicio de almacenamiento de datos a nivel de bloque que gestiona el acceso del primer sistema informatico a las redes internas, y en el que el metodo ademas comprende, bajo el control del modulo de
5
10
15
20
25
30
35
40
45
50
55
60
65
administrador de nodo:
recibir las peticiones de acceso a datos del primer dispositivo de almacenamiento local y logico iniciadas por la primera copia de programa en ejecucion; y
facilitar la realizacion de las peticiones de acceso a datos al interactuar sobre redes internas con el modulo de administrador de sistema para brindar indicaciones de las peticiones de acceso a datos, siendo la interaccion sobre redes internas llevada a cabo de una manera que es transparente para la primera copia de programa en ejecucion.
Clausula 38. El metodo de la clausula 37 en el que los multiples programas son ejecutados por un servicio de ejecucion de programa en un segundo grupo de multiples sistemas informaticos de la pluralidad de sistemas informaticos, en el que los sistemas informaticos del segundo grupo son distintos de los sistemas informaticos del primer grupo, en el que el primer sistema informatico alberga multiples maquinas virtuales cada una de las cuales es capaz de ejecutar al menos un programa, en el que el programa indicado es uno de los multiples programas y es una imagen de maquina virtual que esta siendo ejecutada por al menos una de las multiples maquinas virtuales albergadas por el primer sistema informatico, y en el que se ejecuta el modulo de administrador de nodo como parte de un monitor de maquina virtual para el primer sistema informatico.
Clausula 39. Un metodo implementado por ordenador para gestionar mediante programas en ejecucion el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque, comprendiendo el metodo:
recibir una o mas indicaciones de un primer grupo de una o mas peticiones de datos de acceso iniciadas por una primera copia de un primer programa ejecutandose en un primer sistema informatico para acceder a datos a nivel de bloque almacenados en un volumen de almacenamiento de datos a nivel de bloque no local, siendo el volumen de almacenamiento de datos a nivel de bloque provisto por un segundo sistema de almacenamiento de datos distinto mediante una o mas redes y estando conectado a un primer sistema informatico de manera que la primera copia de programa en ejecucion inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos a nivel de bloque por medio de interacciones con un primer dispositivo de almacenamiento nivel bloque logico local al primer sistema informatico que representa el volumen de almacenamiento de datos a nivel de bloque; responder automaticamente a las indicaciones recibidas del primer grupo de peticiones de acceso a datos mediante la interaccion con el segundo sistema de almacenamiento de datos en nombre de la primera copia de programa en ejecucion para iniciar la realizacion de las peticiones de acceso a datos del primer grupo en el volumen de almacenamiento de datos a nivel de bloque provisto por un segundo sistema de almacenamiento de datos;
despues de determinar que la primera copia de programa ha dejado de estar disponible, identificar un tercer sistema informatico en el que se esta ejecutando una segunda copia del primer programa, siendo el tercer sistema informatico distinto del primer sistema informatico y del segundo sistema de almacenamiento de datos, y conectar el volumen de almacenamiento de datos a nivel de bloque al tercer sistema informatico de manera que la segunda copia de programa tenga acceso a un segundo dispositivo de almacenamiento en bloque logico local al tercer sistema informatico que representa el volumen de almacenamiento de datos a nivel de bloque;
recibir una o mas indicaciones de un segundo grupo de una o mas peticiones de acceso a datos distintas iniciadas por la segunda copia de programa en ejecucion para el volumen de almacenamiento de datos a nivel de bloque por medio de interacciones con el segundo dispositivo de almacenamiento en bloque local y logico en el tercer sistema informatico; y
responder automaticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos por medio de la interaccion con el segundo sistema de almacenamiento de datos en nombre de la segunda copia de programa en ejecucion como para iniciar la realizacion de las peticiones de acceso a datos del segundo grupo en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos.
Clausula 40. El metodo de la clausula 39 ademas comprende definir automaticamente que la primera copia de programa ha dejado de estar disponible, estando la no disponibilidad de la primera copia de programa basada en al menos un fallo del primer sistema informatico, en un fallo en la conectividad con el primer sistema informatico, y en una incapacidad del primer sistema informatico de continuar con la ejecucion de la primera copia de programa.
Clausula 41. El metodo de la clausula 40 en el que la identificacion del tercer sistema informatico en el que se esta ejecutando la segunda copia del primer programa y la conexion del volumen de almacenamiento de datos a nivel de bloque al tercer sistema informatico se llevan a cabo automaticamente para mantener el acceso del primer programa al volumen de almacenamiento de datos a nivel de bloque, siendo el mantenimiento automatico del acceso realizado en respuesta a la determinacion automatica de que la primera copia de programa ha dejado de estar disponible.
5
10
15
20
25
30
35
40
45
50
55
60
65
Clausula 42. El metodo de la clausula 39 en el que al menos una de las acciones de determinacion de que la primera copia de programa ha dejado de estar disponible, identificacion del tercer sistema informatico en el cual se esta ejecutando la segunda copia del primer programa, y conexion del volumen de almacenamiento de datos a nivel de bloque al tercer sistema informatico se realiza en respuesta a una o mas indicaciones recibidas de un usuario asociado al primer programa y al volumen de almacenamiento de datos a nivel de bloque.
Clausula 43. El metodo de la clausula 39 en el que la identificacion del tercer sistema informatico en el cual se esta ejecutando la segunda copia del primer programa incluye, despues de determinar que la primera copia de programa ha dejado de estar disponible, iniciar la ejecucion de la segunda copia de programa en el tercer sistema informatico.
Clausula 44. El metodo de la clausula 39 en el que la primera copia del primer programa es una de las multiples copias del primer programa que se ejecutan en multiples sistemas informaticos distintos, en el que al menos una de las multiples copias es una copia alternativa de una o mas de las otras multiples copias, y en el que la identificacion del tercer sistema informatico en el que se esta ejecutando la segunda copia del primer programa incluye seleccionar la segunda copia del primer programa segun el hecho de que la segunda copia es una de las copias alternativas.
Clausula 45. El metodo de la clausula 39 que comprende, ademas, antes de conectar el volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico, crear el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos y crear una copia espejo del volumen de almacenamiento de datos a nivel de bloque en un cuarto sistema de almacenamiento de datos a nivel de bloque distinto, y en el que responder a las peticiones de acceso a datos del primer grupo y del segundo grupo ademas incluye iniciar la realizacion de las peticiones de acceso a datos del primer grupo y del segundo grupo en la copia espejo creada.
Clausula 46. El metodo de la clausula 39 que comprende, ademas, antes de recibir las indicaciones de una o mas peticiones de acceso a datos, conectar el volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico para que lo utilice la primera copia de programa en ejecucion, la conexion del almacenamiento de datos a nivel de bloque incluyendo asociar el primer dispositivo de almacenamiento a nivel de bloque logico al volumen de almacenamiento de datos a nivel de bloque provisto por el segundo sistema de almacenamiento de datos y siendo realizado por un modulo de administrador de nodo que gestiona el acceso del primer sistema informatico a una o mas redes, siendo el modulo de administrador de nodo parte de un servicio de almacenamiento de datos a nivel de bloque que crea previamente el volumen de almacenamiento de datos a nivel de bloque en respuesta a una peticion de un usuario que esta asociado al primer programa en ejecucion.
Clausula 47. El metodo de la clausula 39 en el que el primer y tercer sistema informatico y el segundo sistema de almacenamiento de datos son un subconjunto de una pluralidad de sistemas informaticos co-localizados en una primera ubicacion geografica, en el que la pluralidad de sistemas informaticos incluye multiples sistemas de almacenamiento de datos a nivel de bloque que estan provistos por un servicio de almacenamiento de datos a nivel de bloque, en el que el segundo y tercer sistema de almacenamiento de datos son cada uno distintos de los multiples sistemas de almacenamiento de datos a nivel de bloque.
Clausula 48. El metodo de la clausula 47 en el que la primera ubicacion geografica es un centro de datos, en el que el primer programa es ejecutado por un servicio de ejecucion de programa que ejecuta multiples programas para multiples usuarios en multiples pluralidades de sistemas informaticos en el centro de datos, en el que el primer sistema informatico alberga multiples maquinas virtuales, cada una de las cuales es capaz de ejecutar al menos un programa, en el que el primer programa en ejecucion es uno de los multiples programas y es una imagen de maquina virtual ejecutada al menos por una de las maquinas virtuales multiples albergadas por el primer sistema informatico, en el que la recepcion de la indicaciones del primer grupo de peticiones de acceso a datos y la recepcion de las indicaciones del segundo grupo de las otras peticiones de acceso datos y la respuesta automatica a las indicaciones recibidas del primer y segundo grupo de peticiones de acceso a datos son realizadas como parte de la ejecucion de un monitor de maquina virtual para el primer sistema informatico, y en el que el primer sistema informatico incluye uno o mas dispositivos de almacenamiento locales reales que estan disponibles para que los utilice el primer programa en ejecucion.
Clausula 49. Un medio legible por ordenador cuyos contenidos permiten a uno o mas sistemas informaticos gestionar el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque mediante programas en ejecucion, al llevar a cabo un metodo que comprende:
brindar acceso a un volumen de almacenamiento de datos a nivel de bloque no local para un primer programa ejecutandose en un primer sistema informatico, permitiendo el acceso concedido que el primer programa inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos
5
10
15
20
25
30
35
40
45
50
55
60
65
a nivel de bloque, siendo el volumen de almacenamiento de datos provisto por un segundo sistema de almacenamiento de datos que esta separado del primer sistema informatico mediante una o mas redes;
responder automaticamente a una o mas indicaciones recibidas de una o mas peticiones de acceso a datos iniciadas por el primer programa para el volumen de almacenamiento de datos a nivel de bloque, incluyendo la respuesta el inicio de la realization de las peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque;
despues de que el primer programa ejecutandose en el primer sistema informatico deja de estar disponible, conceder acceso al volumen de almacenamiento de datos a nivel de bloque para un segundo programa ejecutandose en un tercer sistema informatico en lugar del acceso concedido al primer programa; y
responder automaticamente a una o mas indicaciones recibidas de una o mas peticiones de acceso a datos distintas iniciadas por el segundo programa para el volumen de almacenamiento de datos a nivel de bloque, incluyendo la respuesta el inicio de la realizacion de las otras peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 50. El medio legible por ordenador de la clausula 49 en el que el primer programa y el segundo programa son copias en ejecucion de un unico programa, en el que conceder el acceso para el primer programa incluye la conexion del volumen de almacenamiento de datos a nivel de bloque al primer sistema informatico de manera que el primer programa en ejecucion inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos a nivel de bloque por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque logico local al primer sistema informatico que representa el volumen de almacenamiento de datos a nivel de bloque, en el que conceder el acceso al segundo programa incluye identificar el tercer sistema informatico en el que se ejecuta el segundo programa y conectar el volumen de almacenamiento de datos a nivel de bloque al tercer sistema informatico de manera que el segundo programa tenga acceso al segundo dispositivo de almacenamiento en bloque logico local al tercer sistema informatico que representa el volumen de almacenamiento de datos a nivel de bloque, y en el que las peticiones de acceso a datos del volumen de almacenamiento de datos a nivel de bloque mediante el primer y segundo programa son para acceder a datos a nivel de bloque almacenados en el volumen de almacenamiento de datos a nivel de bloque.
Clausula 51. El medio legible por ordenador de la clausula 50 en el que el primer y tercer sistema informatico y el segundo sistema de almacenamiento de datos a nivel de bloque estan ubicados en una unica ubicacion geografica, en el que el primer sistema informatico y el segundo sistema de almacenamiento de datos a nivel de bloque estan separados por una o mas redes, en el que la realizacion de las peticiones de acceso a datos y de las otras peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque en el segundo sistema de almacenamiento de datos a nivel de bloque se realizan automaticamente mediante un modulo de administrador de sistema de un servicio de almacenamiento de datos a nivel de bloque, en el que al primer programa en ejecucion se le concede acceso al volumen de almacenamiento de datos a nivel de bloque mediante un modulo de administrador de nodo del servicio de almacenamiento de datos a nivel de bloque que esta asociado al primer sistema informatico y que gestiona el acceso del primer programa en ejecucion a una o mas redes, y en el que la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos se realiza en parte bajo el control del modulo de administrador de nodo al iniciar el envlo de las peticiones de acceso a datos recibidas por medio de una o mas redes hacia el segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 52. El medio legible por ordenador de la clausula 51 en el que al segundo programa en ejecucion se le concede acceso al volumen de almacenamiento de datos a nivel de bloque mediante un modulo de administrador de nodo que ademas administra el acceso del segundo programa en ejecucion a una o mas redes, en el que el tercer y primer sistema informatico son parte de un unico sistema informatico flsico, y en el que la respuesta automatica a las indicaciones recibidas de las peticiones de acceso a datos se lleva en cabo en parte bajo el control del modulo de administrador de nodo al iniciar el envlo de las peticiones de acceso a otros datos recibidas por medio de una o mas redes al segundo sistema de almacenamiento de datos a nivel de bloque.
Clausula 53. El medio legible por ordenador de la clausula 49 en el que el medio legible por ordenador es al menos uno de una memoria de un sistema informatico que almacena los contenidos y un medio de transmision de datos que incluye una senal de datos generada y almacenada que contiene los contenidos.
Clausula 54. El medio legible por ordenador de la clausula 49 en el que los contenidos son instrucciones que al ejecutarse hacen que uno o mas sistemas informaticos lleven a cabo el metodo.
Clausula 55. Un sistema configurado para gestionar el acceso a la funcionalidad de almacenamiento de datos
5
10
15
20
25
30
35
40
45
50
55
60
65
a nivel de bloque mediante programas en ejecucion, que comprende: una o mas memorias;
y un sistema de almacenamiento de datos a nivel de bloque configurado para proveer un servicio de almacenamiento de datos a nivel de bloque que utiliza multiples sistemas de almacenamiento de datos a nivel de bloque para almacenar volumenes de almacenamiento de datos a nivel de bloque creados por usuarios del servicio de almacenamiento de datos a nivel de bloque y a los que se accede mediante una o mas redes en nombre de uno o mas programas en ejecucion asociados con los usuarios, incluyendo la provision del servicio de almacenamiento de datos a nivel de bloque:
crear uno o mas volumenes de almacenamiento de datos a nivel de bloque para ser utilizados por uno o mas programas en ejecucion, estando cada uno de los volumenes de almacenamiento de datos a nivel de bloque almacenados en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque;
despues de que el acceso al primero de los volumenes de almacenamiento de datos a nivel de bloque se concede al primero de uno o mas programas en ejecucion, responder a una o mas peticiones de acceso a datos iniciadas por el primer programa para el primer volumen de almacenamiento de datos a nivel de bloque creado mediante la iniciacion de la realizacion de una o mas peticiones de acceso a datos en el primer volumen de almacenamiento de datos a nivel de bloque creado; y
despues de que el primer programa deja de estar disponible y de que el acceso al primer volumen de almacenamiento de datos creado en bloque se concede a un segundo programa en ejecucion para reemplazar el acceso concedido al primer programa no disponible, responder a una o mas peticiones de acceso a datos distintas iniciadas por el segundo programa para el primer volumen de almacenamiento de datos a nivel de bloque creado al iniciar la realizacion de una o mas peticiones de acceso a datos distintas en el primer volumen de almacenamiento de datos a nivel de bloque creado.
Clausula 56. El sistema de la clausula 55 en el que el primer programa y el segundo programa son copias en ejecucion de un unico programa, en el que conceder el acceso al primer programa incluye la conexion del primer volumen de almacenamiento de datos a nivel de bloque a un primer sistema informatico que ejecuta el primer programa de manera tal que el primer programa en ejecucion inicie las peticiones de acceso a datos para el primer volumen de almacenamiento de datos por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque logico local al primer sistema informatico que representa el primer volumen de almacenamiento de datos a nivel de bloque, en el que conceder acceso al segundo programa incluye identificar un tercer sistema informatico en el que se ejecuta el segundo programa y conectar el primer volumen de almacenamiento de datos a nivel de bloque al tercer sistema informatico de manera que el segundo programa tenga acceso al segundo dispositivo de almacenamiento a nivel de bloque logico local al tercer sistema informatico que representa al primer volumen de almacenamiento de datos a nivel de bloque, y en el que las peticiones de acceso a datos para el primer volumen de almacenamiento de datos a nivel de bloque mediante el primer y segundo programa son para acceder a datos a nivel de bloque almacenados en el volumen de almacenamiento de datos a nivel de bloque.
Clausula 57. El sistema de la clausula 56 en el que el primer volumen de almacenamiento de datos a nivel de bloque esta almacenado en un primer sistema de almacenamiento de datos a nivel de bloque, en el que el primer y tercer sistema informatico y el primer sistema de almacenamiento de datos a nivel de bloque estan ubicados en una unica ubicacion geografica y separados por una o mas redes, y en el que sistema ademas comprende uno mas modulos de administradores de nodo del servicio de almacenamiento de datos a nivel de bloque asociado con el primer y segundo programa para gestionar el acceso del primer y segundo programa a una o mas redes, de modo que la respuesta a las peticiones de acceso a datos se lleva a cabo en parte bajo el control de uno o mas modulos administradores de sistema al iniciar el envlo de las peticiones de acceso a datos por medio de una o mas redes al primer sistema de almacenamiento de datos a nivel de bloque.
Clausula 58. El sistema de la clausula 55 en el que una primera copia del primer volumen de almacenamiento de datos a nivel de bloque esta almacenada en un primer sistema de almacenamiento de datos a nivel de bloque, en el que la realizacion de las peticiones de acceso a datos iniciadas por el primer programa se realizan en la primera copia del primer volumen de almacenamiento de datos a nivel de bloque, en el que el primer programa se ejecuta en un primer sistema informatico que esta co-localizado con el primer sistema de almacenamiento de datos a nivel de bloque en una primera ubicacion geografica, en el que el segundo programa se ejecuta en un segundo sistema informatico en una segunda ubicacion geografica distinta, y en el que conceder acceso al primer volumen de almacenamiento de datos a nivel de bloque creado al segundo programa en ejecucion incluye iniciar la conexion del segundo sistema informatico a un segundo sistema de almacenamiento de datos a nivel de bloque en la segunda ubicacion geografica que almacena una segunda copia del primer volumen de almacenamiento de datos a nivel de bloque.
5
10
15
20
25
30
Clausula 59. El sistema de la clausula 55 en el que sistema incluye un primer sistema informatico que incluye al menos una de las memorias, y en el que el administrador de sistema de almacenamiento de datos a nivel de bloque incluye instrucciones de software para su ejecucion por el primer sistema informatico que utiliza al menos una memoria.
Clausula 60. El sistema de la clausula 55 en el que el modulo de administrador de sistema de almacenamiento de datos a nivel de bloque consiste en uno o mas medios para proveer un servicio de almacenamiento de datos a nivel de bloque que utiliza multiples sistemas de almacenamiento de datos a nivel de bloque para almacenar volumenes de almacenamiento de datos a nivel de bloque que son creados por usuarios del servicio de almacenamiento de datos a nivel de bloque y a los que se accede por medio de una o mas redes en nombre de uno o mas programas en ejecucion asociados con los usuarios, incluyendo el suministro del servicio de almacenamiento de datos a nivel de bloque:
crear uno o mas volumenes de almacenamiento de datos a nivel de bloque para ser utilizados por uno o mas programas en ejecucion, estando cada uno de los volumenes de almacenamiento de datos a nivel de bloque almacenados en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque;
despues de que el acceso al primero de los volumenes de almacenamiento de datos a nivel de bloque se concede a un primero de uno o mas programas en ejecucion, responder a una o mas peticiones de acceso a datos iniciadas por el primer programa para el primer volumen de almacenamiento de datos a nivel de bloque creado al iniciar la realizacion de una o mas de las peticiones de acceso a datos en el primer volumen de almacenamiento de datos a nivel de bloque creado; y
despues de que el primer programa deja de estar disponible y de que el acceso al primer volumen de almacenamiento de datos creado en bloque se concede a un segundo programa en ejecucion distinto para reemplazar el acceso concedido al primer programa no disponible, responder a una o mas peticiones de acceso a datos distintas iniciadas por el segundo programa al primer volumen de almacenamiento de datos a nivel de bloque creado al iniciar la realizacion de una o mas peticiones de acceso a datos distintas en el primer volumen de almacenamiento de datos a nivel de bloque creado.

Claims (15)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    REIVINDICACIONES
    1. Un metodo computarizado para gestionar mediante programas en ejecucion el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque, dicho metodo comprendiendo:
    recibir una o mas indicaciones de un primer grupo de peticiones de datos de acceso iniciadas por una primera copia de un primer programa (375) ejecutandose en un primer sistema informatico (180, 300, 370, 390) para acceder a datos a nivel de bloque almacenados en un volumen de almacenamiento de datos a nivel de bloque no local (155), el volumen de almacenamiento de datos a nivel de bloque (155) siendo provisto por un segundo sistema de almacenamiento de datos distinto (165, 360) por medio de una o mas redes (170, 185, 385) y estando conectado a un primer sistema informatico (180, 300, 370, 390) de manera que la primera copia de programa en ejecucion (375) inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos a nivel de bloque (155) por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque logico local al primer sistema informatico (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (155);
    responder automaticamente a las indicaciones recibidas del primer grupo de peticiones de acceso a datos por medio de la interaction con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la primera copia de programa en ejecucion (375) como para iniciar la realization de la petition de acceso a datos del primer grupo en el volumen de almacenamiento de datos a nivel de bloque (155) provisto por el segundo sistema de almacenamiento de datos (165, 360); despues de determinar que la primera copia de programa (375) ha dejado de estar disponible, identificar un tercer sistema informatico (180, 300, 370, 390) en el que se esta ejecutando una segunda copia del primer programa (375), siendo el tercer sistema informatico distinto del primer sistema informatico y del segundo sistema de almacenamiento de datos, la segunda copia del primer programa ya siendo ejecutada antes de que la primera copia del programa deje de estar disponible, y conectar el volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informatico (180, 300, 370, 390) de manera que la segunda copia de programa (375) tenga acceso al segundo dispositivo de almacenamiento a nivel de bloque logico local al tercer sistema informatico (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (155), en el que identificar el tercer sistema informatico (180, 300, 370, 390) en el que la segunda copia del primer programa (375) se esta ejecutando y la conexion del volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informatico (180, 300, 370, 390) se realiza automaticamente para mantener el acceso del primer programa (375) al volumen de almacenamiento de datos a nivel de bloque (155), el mantenimiento automatico del acceso siendo realizado en respuesta a la definition automatica de que la primera copia de programa (375) ha dejado de estar disponible;
    recibir una o mas indicaciones de un segundo grupo de otras peticiones de acceso a datos iniciadas por la segunda copia de programa en ejecucion (375) para el volumen de almacenamiento de datos a nivel de bloque (155) por medio de interacciones con el segundo dispositivo de almacenamiento de almacenamiento a nivel de bloque local y logico en el tercer sistema informatico (180, 300, 370, 390); y
    responder automaticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos mediante la interaccion con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la segunda copia de programa en ejecucion (375) para iniciar la realizacion de las peticiones de acceso a datos del segundo grupo en el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos (165, 360).
  2. 2. El metodo de la reivindicacion 1 que ademas comprende definir automaticamente que la primera copia de programa (375) ha dejado de estar disponible, estando la no disponibilidad de la primera copia de programa (375) basada en al menos un fallo del primer sistema informatico (180, 300, 370, 390), en un fallo en la conectividad con el primer sistema informatico (180, 300, 370, 390), y en una incapacidad del primer sistema informatico (180, 300, 370, 390) de continuar con la ejecucion de la primera copia de programa (375).
  3. 3. El metodo de la reivindicacion 1 en el que al menos una de las acciones de determinar que la primera copia de programa (375) ha dejado de estar disponible, identificar el tercer sistema informatico (180, 300, 370, 390) en el cual se esta ejecutando la segunda copia del primer programa (375), y conectar el volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informatico (180, 300, 370, 390) se lleva a cabo en respuesta a una o mas indicaciones recibidas de un usuario asociado al primer programa (375) y al volumen de almacenamiento de datos a nivel de bloque (155).
  4. 4. El metodo de la clausula 1 en el que la primera copia del primer programa (375) es una de las multiples copias del primer programa (375) que se ejecutan en multiples sistemas informaticos distintos (180, 300, 370, 390), en el que al menos una de las multiples copias (375) es una copia alternativa para una o mas de las otras multiples copias (375), y en el que la identification del tercer sistema informatico en el que se esta ejecutando la segunda copia del primer programa incluye seleccionar la segunda copia del primer programa basada en la segunda copia siendo al menos una de las copias alternativas.
  5. 5. El metodo de la reivindicacion 1 que ademas comprende, antes de conectar el volumen de almacenamiento de
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    datos a nivel de bloque (155) al primer sistema informatico (180, 300, 370, 390), crear el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos (165, 360) y crear una copia espejo del volumen de almacenamiento de datos a nivel de bloque (155) en un cuarto sistema de almacenamiento de datos a nivel de bloque (165, 360) distinto.
  6. 6. El metodo de la reivindicacion 1 que ademas comprende, antes de recibir las indicaciones del primer grupo de una o mas peticiones de acceso a datos, conectar (420) el volumen de almacenamiento de datos a nivel de bloque (155) al primer sistema informatico (180, 300, 370, 390) para que lo utilice la primera copia de programa en ejecucion (375), incluyendo la conexion del volumen de almacenamiento de datos a nivel de bloque (155) la asociacion del primer dispositivo de almacenamiento a nivel de bloque logico al volumen de almacenamiento de datos a nivel de bloque (155) provisto por el segundo sistema de almacenamiento de datos (165, 360).
  7. 7. El metodo de la reivindicacion 1 en el que el primer y tercer sistema informatico (180, 300, 370, 390) y el segundo sistema de almacenamiento de datos (165, 360) son un subconjunto de una pluralidad de sistemas informaticos (180, 300, 370, 390) co-localizados en una primera ubicacion geografica, en donde la pluralidad de sistemas informaticos (180, 300, 370, 390) incluye multiples sistemas de almacenamiento de datos a nivel de bloque (165, 360) que estan provistos por un servicio de almacenamiento de datos a nivel de bloque, en el que el segundo y tercer sistema de almacenamiento de datos (165, 360) son cada uno distintos de los multiples sistemas de almacenamientos de datos a nivel de bloque (165, 360), y la primera ubicacion geografica es un centro de datos.
  8. 8. Un medio legible por ordenador cuyos contenidos permiten a uno o mas sistemas informaticos gestionar el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque mediante programas en ejecucion, al llevar a cabo un metodo que comprende:
    recibir una o mas indicaciones de un primer grupo de peticiones de acceso a datos iniciadas por una primera copia de un primer programa (375) ejecutandose en un primer sistema informatico (180, 300, 370, 390) para acceder a datos a nivel de bloque almacenados en un volumen de almacenamiento de datos a nivel de bloque no local (155), el volumen de almacenamiento de datos a nivel de bloque (155) estando provisto por un segundo sistema de almacenamiento de datos distinto (165, 360) por medio de una o mas redes (170, 185, 385) y estando conectado al primer sistema informatico (180, 300, 370, 390) de manera que la primera copia de programa en ejecucion (375) inicie las peticiones de acceso a datos para el volumen de almacenamiento de datos (155) por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque logico local al primer sistema informatico (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (155);
    responder automaticamente a una o mas de las indicaciones recibidas del primer grupo de peticiones de acceso a datos por medio de la interaccion con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la primera copia de programa en ejecucion (375), incluyendo la respuesta iniciar la realizacion de las peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos a nivel de bloque (165, 360);
    despues de determinar que la primera copia de programa (155) ha dejado de estar disponible, identificar un tercer sistema informatico (180, 300, 370, 390) en el que se esta ejecutando una segunda copia del primer programa (375), siendo el tercer sistema informatico distinto del primer sistema informatico y del segundo sistema de almacenamiento de datos, la segunda copia del primer programa ya siendo ejecutada antes de que la primera copia del programa deje de estar disponible, y conectar el volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informatico (180, 300, 370, 390) de manera que la segunda copia de programa (375) tenga acceso al segundo dispositivo de almacenamiento a nivel de bloque logico local al tercer sistema informatico (180, 300, 370, 390) que representa el volumen de almacenamiento de datos a nivel de bloque (165, 360), en el que la identification del tercer sistema informatico (180, 300, 370, 390) en el que la segunda copia del primer programa (375) se esta ejecutando y en el que la conexion del volumen de almacenamiento de datos a nivel de bloque (155) al tercer sistema informatico (180, 300, 370, 390) se realiza automaticamente para mantener el acceso del primer programa (375) al volumen de almacenamiento de datos a nivel de bloque (165, 360), llevandose a cabo el mantenimiento automatico del acceso en respuesta a la determination automatica de que la primera copia de programa (155) ha dejado de estar disponible;
    recibir una o mas indicaciones de un segundo grupo de otras peticiones de acceso a datos iniciadas por la segunda copia de programa en ejecucion (155) para el volumen de almacenamiento de datos a nivel de bloque (155) por medio de interacciones con el segundo dispositivo de almacenamiento a nivel de bloque local y logico en el tercer sistema informatico (180, 300, 370, 390); y
    responder automaticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos mediante la interaccion con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la segunda copia de programa en ejecucion (375) para iniciar la realizacion de las peticiones de acceso a datos del segundo grupo en el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos (165, 360).
  9. 9. El medio legible por ordenador de la reivindicacion 8 en el que la primera copia de programa (375) y la segunda
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
    copia de programa (375) son copias en ejecucion de un unico programa (375), las peticiones de acceso a datos para el volumen de datos a nivel de bloque (155) mediante la primera y segunda copia de programa (375) son para acceder a los datos a nivel de bloque almacenados en el volumen de almacenamiento de datos a nivel de bloque (155), el primer y tercer sistema informatico (180, 300, 370, 390) y el segundo sistema de almacenamiento de datos a nivel de bloque (165, 360) estan ubicados en una unica ubicacion geografica, el primer y segundo sistema informatico (180, 300, 370, 390) y el segundo sistema de almacenamiento de datos a nivel de bloque (165, 360) estan separados por una o mas redes (170, 185, 385), la realization de las peticiones de acceso a datos y las otras peticiones de acceso a datos en el volumen de almacenamiento de datos a nivel de bloque (155) en el segundo sistema de almacenamiento de datos a nivel de bloque (165, 360) se realizan automaticamente mediante un modulo de administrador de sistema (340) de un servicio de almacenamiento de datos a nivel de bloque, un modulo de administrador de nodo (380) del servicio de almacenamiento de datos a nivel de bloque esta asociado al primer sistema informatico (180, 300, 370, 390) y gestiona el acceso de la primera copia de programa en ejecucion (375) a una o mas redes (170, 185, 385), y la respuesta automatica a las indicaciones recibidas del primer grupo de peticiones de acceso a datos se realiza en parte bajo el control del modulo de administrador de nodo (380) al iniciar el envlo de las peticiones de acceso a datos recibidas por medio de una o mas redes (170, 185, 385) hacia el segundo sistema de almacenamiento de datos a nivel de bloque (165, 360).
  10. 10. El medio legible por ordenador de la reivindicacion 9 en el que el modulo de administrador de nodo (380) ademas gestiona el acceso de la segunda copia de programa en ejecucion (375) a una o mas de las redes (170, 185, 385), el tercer y primer sistema informatico (180, 300, 370, 390) son parte de un unico sistema informatico flsico, y la respuesta automatica a las indicaciones recibidas del segundo grupo de otras peticiones de acceso a datos se realiza en parte bajo el control del modulo de administrador de nodo (380) al iniciar el envlo de las otras peticiones de acceso a datos por medio de una o mas redes (170, 185, 385) hacia el sistema de almacenamiento de datos a nivel de bloque (165, 360).
  11. 11. El medio legible por ordenador de la reivindicacion 8 en el que el medio legible por ordenador es al menos una de las memorias (330, 354, 374) de un sistema informatico (180, 300, 370, 390) que almacena los contenidos y un medio de transmision de datos que incluye una senal de datos almacenada y generada que contiene los contenidos, o en el que los contenidos son instrucciones que al ejecutarse hacen que uno o mas sistemas informaticos (180, 300, 370, 390) lleven a cabo el metodo.
  12. 12. Un sistema configurado para gestionar el acceso a la funcionalidad de almacenamiento de datos a nivel de bloque mediante programas en ejecucion, que comprende:
    una o mas memorias (330, 354, 374); y un sistema de almacenamiento de datos a nivel de bloque (340) configurado para proveer un servicio de almacenamiento de datos a nivel de bloque que utiliza multiples sistemas de almacenamiento de datos a nivel de bloque (165, 360) para almacenar volumenes de almacenamiento de datos a nivel de bloque (155) creados por usuarios del servicio de almacenamiento de datos a nivel de bloque y a los que se accede en nombre de uno o mas programas en ejecucion (375) asociados a los usuarios, el suministro del servicio de almacenamiento de datos a nivel de bloque incluyendo:
    crear uno o mas volumenes de almacenamiento de datos a nivel de bloque (155) para ser utilizados por uno o mas programas en ejecucion (375), estando cada uno de los volumenes de almacenamiento de datos a nivel de bloque (155) almacenados en uno de los multiples sistemas de almacenamiento de datos a nivel de bloque (165, 360);
    recibir una o mas indicaciones de un primer grupo de peticiones de acceso a datos iniciadas por una primera copia de un primer programa (375) ejecutandose en un primer sistema informatico (180, 300, 370, 390) para acceder a datos a nivel de bloque almacenados en un volumen de almacenamiento de datos a nivel de bloque no local (155) creado de uno o mas de los volumenes de almacenamiento de datos a nivel de bloque, estando el primer volumen de almacenamiento de datos a nivel de bloque (155) creado provisto por un segundo sistema de almacenamiento de datos distinto (165, 360) por medio de una o mas redes (170, 185, 385) y estando conectado a un primer sistema informatico (180, 300, 370, 390) de manera que la primera copia de programa en ejecucion (375) inicie las peticiones de acceso a datos para el primer volumen de almacenamiento de datos a nivel de bloque (155) creado por medio de interacciones con un primer dispositivo de almacenamiento a nivel de bloque logico local al primer sistema informatico (180, 300, 370, 390) que representa al primer volumen de almacenamiento de datos a nivel de bloque (155) creado;
    responder automaticamente a las indicaciones recibidas del primer grupo de peticiones de acceso a datos mediante la interaction con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la segunda copia de programa en ejecucion (375) para iniciar la realizacion de las peticiones de acceso a datos del primer grupo en el primer volumen de almacenamiento de datos a nivel de bloque (155) creado provisto por el segundo sistema de almacenamiento de datos (165, 360); despues de determinar que la primera copia de programa (375) ha dejado de estar disponible, identificar un tercer sistema informatico (180, 300, 370, 390) en el que se esta ejecutando una segunda copia del primer programa (375), siendo el tercer sistema informatico distinto del primer sistema
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    informatico y del segundo sistema de almacenamiento de datos, la segunda copia del primer programa ya siendo ejecutada antes de que la primera copia del programa deje de estar disponible, y conectar el primer volumen de almacenamiento de datos a nivel de bloque creado (155) al tercer sistema informatico (180, 300, 370, 390) de manera que la segunda copia de programa (375) tenga acceso a un segundo dispositivo de almacenamiento a nivel de bloque logico local al tercer sistema informatico (180, 300, 370, 390) que representa el primer volumen de almacenamiento de datos a nivel de bloque (155) creado, en el la identification del tercer sistema informatico (180, 300, 370, 390) en el que la segunda copia del primer programa (375) se esta ejecutando y la conexion del primer volumen de almacenamiento de datos a nivel de bloque (155) creado para el tercer sistema informatico (180, 300, 370, 390) se realizan automaticamente para mantener el acceso del primer programa (375) al primer volumen de almacenamiento de datos a nivel de bloque creado (155), llevandose a cabo el mantenimiento automatico del acceso en respuesta a la determination automatica de que la primera copia de programa (375) ha dejado de estar disponible;
    recibir una o mas indicaciones de un segundo grupo de otras peticiones de acceso a datos iniciadas por la segunda copia de programa en ejecucion (375) para el primer volumen de almacenamiento de datos a nivel de bloque (155) creado por medio de interacciones con el segundo dispositivo de almacenamiento de almacenamiento a nivel de bloque local y logico en el tercer sistema informatico (180, 300, 370, 390); y
    responder automaticamente a las indicaciones recibidas del segundo grupo de peticiones de acceso a datos mediante la interaction con el segundo sistema de almacenamiento de datos (165, 360) en nombre de la segunda copia de programa en ejecucion (375) para iniciar la realization de las peticiones de acceso a datos del segundo grupo en el primer volumen de almacenamiento de datos a nivel de bloque (155) creado en un segundo sistema de almacenamiento de datos (165, 360).
  13. 13. El sistema de la reivindicacion 12 en el que la primera copia de programa (375) y la segunda copia de programa (375) son copias en ejecucion de un unico programa (375), las peticiones de acceso a datos para el primer volumen de almacenamiento de datos a nivel de bloque (155) creado por la primera y segunda copia de programa (375) son para acceder a los datos a nivel de bloque almacenados en el primer volumen de almacenamiento de datos a nivel de bloque (155) creado, el primer volumen de almacenamiento de datos a nivel de bloque (155) creado esta almacenado en un primero de los sistemas de almacenamiento de datos (165, 360), el primer y tercer sistema informatico (180, 300, 370, 390) y el primer sistema de almacenamiento de datos a nivel de bloque (165, 360) estan ubicados en una unica ubicacion geografica y separados por una o mas redes (170, 185, 385), y el sistema ademas comprende uno o mas modulos de administradores de nodo (380) del servicio de almacenamiento de datos a nivel de bloque asociado a la primera y segunda copia de programa (375), estando uno o mas de los modulos de administrador de nodo (380) configurados para gestionar el acceso de la primera y segunda copia de programa (375) a una o mas redes (170, 185, 385), de manera que la respuesta a las peticiones de acceso a datos y a otras peticiones de acceso a datos se lleven a cabo en parte bajo el control de uno o mas de los modulos de administrador de nodo (380) al iniciar el envlo de las peticiones de acceso a datos y de las otras peticiones de acceso a datos por medio de una o mas redes (170, 185, 385) hacia el primer sistema de almacenamiento de datos a nivel de bloque (165, 360).
  14. 14. El sistema de la reivindicacion 12 en el que una primera copia del primer volumen de almacenamiento de datos a nivel de bloque (155) creado esta almacenado en un primer sistema de almacenamiento de datos a nivel de bloque (165, 360), y el primer sistema informatico (180, 300, 370, 390) esta co-localizado con el primer sistema de almacenamiento de datos a nivel de bloque (165, 360) en una primera ubicacion geografica.
  15. 15. El sistema de la reivindicacion 12 en el que el primer sistema informatico (180, 300, 370, 390) incluye al menos una de una o mas memorias (330, 354, 374), y el modulo de administrador de sistema de almacenamiento de datos a nivel de bloque (340) incluye instrucciones de software para su ejecucion mediante el primer sistema informatico (180, 300, 370, 390) que utiliza al menos una de una o mas de las memorias (330, 354, 374).
ES11009559.3T 2008-08-08 2009-08-07 Suministro de programas de ejecución con acceso fiable al almacenamiento de datos a nivel de bloque no local Active ES2575155T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US188949 1988-05-02
US12/188,943 US8015343B2 (en) 2008-08-08 2008-08-08 Providing executing programs with reliable access to non-local block data storage
US12/188,949 US8019732B2 (en) 2008-08-08 2008-08-08 Managing access of multiple executing programs to non-local block data storage
US188943 2008-08-08

Publications (1)

Publication Number Publication Date
ES2575155T3 true ES2575155T3 (es) 2016-06-24

Family

ID=41663996

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11009559.3T Active ES2575155T3 (es) 2008-08-08 2009-08-07 Suministro de programas de ejecución con acceso fiable al almacenamiento de datos a nivel de bloque no local

Country Status (5)

Country Link
EP (4) EP2324429B1 (es)
JP (2) JP5015351B2 (es)
CN (3) CN103645953B (es)
ES (1) ES2575155T3 (es)
WO (1) WO2010017492A1 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255587B2 (en) * 2012-01-18 2019-04-09 Microsoft Technology Licensing, Llc System and method for blended presentation of locally and remotely stored electronic messages
CN102710763B (zh) * 2012-05-29 2015-11-25 新华网股份有限公司 一种分布式缓存池化、分片及故障转移的方法及系统
CA2868247C (en) 2013-07-26 2017-04-04 Ji Ouyang Data sending method, data receiving method, and storage device
CN103546724A (zh) * 2013-10-22 2014-01-29 杭州爱浦多数码技术有限公司 一种网络摄像机集散式冗余存储系统及其存储方法
US10866768B2 (en) * 2014-12-12 2020-12-15 Advanced Micro Devices, Inc. Storage location assignment at a cluster compute server
US20160277498A1 (en) * 2015-03-20 2016-09-22 Intel Corporation Location and boundary controls for storage volumes
US9900386B2 (en) 2015-04-09 2018-02-20 International Business Machines Corporation Provisioning data to distributed computing systems
US10747624B2 (en) 2015-10-14 2020-08-18 Hitachi, Ltd. Storage system and control method of storage system using asynchronous remote copying to backup volume at specific time points
CN107025151A (zh) * 2016-01-30 2017-08-08 鸿富锦精密工业(深圳)有限公司 电子装置连接系统
JP6720357B2 (ja) * 2016-06-29 2020-07-08 アマゾン テクノロジーズ インコーポレイテッド ネットワークアクセス可能なデータボリューム変更
US10509738B2 (en) * 2016-07-01 2019-12-17 Intel Corporation Remote memory operations
CN106844140B (zh) * 2016-12-21 2020-05-26 南京富士通南大软件技术有限公司 一种基于scom的监控方法
TWI659306B (zh) * 2018-01-10 2019-05-11 英屬開曼群島商捷鼎創新股份有限公司 卷搬移中執行資料讀寫的方法及電子裝置
KR102547126B1 (ko) * 2018-04-30 2023-06-23 아마존 테크놀로지스, 인크. 블록 스토리지 시스템들을 위한 분산된 복제본
CN113849137B (zh) * 2021-10-13 2023-08-01 上海威固信息技术股份有限公司 一种面向申威容器平台的可视化块存储方法和系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
JP2002123406A (ja) * 2000-10-17 2002-04-26 Pfu Ltd 高信頼性システム
US6938122B2 (en) * 2001-01-23 2005-08-30 Emc Corporation Remote mirroring in a switched environment
WO2003021484A2 (en) * 2001-08-30 2003-03-13 Bea Systems, Inc Cluster caching with concurrency checking
US20070094465A1 (en) * 2001-12-26 2007-04-26 Cisco Technology, Inc., A Corporation Of California Mirroring mechanisms for storage area networks and network based virtualization
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
US7139885B2 (en) * 2001-12-27 2006-11-21 Hitachi, Ltd. Method and apparatus for managing storage based replication
KR100464350B1 (ko) * 2001-12-31 2005-01-03 삼성전자주식회사 통신 시스템에서 로드 공유 그룹을 이용한 분산된 호 처리및 업그레이드 시스템 및 방법
US7043665B2 (en) * 2003-06-18 2006-05-09 International Business Machines Corporation Method, system, and program for handling a failover to a remote storage location
JP4307202B2 (ja) * 2003-09-29 2009-08-05 株式会社日立製作所 記憶システム及び記憶制御装置
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US7131027B2 (en) * 2004-07-09 2006-10-31 Hitachi, Ltd. Method and apparatus for disk array based I/O routing and multi-layered external storage linkage
US7058731B2 (en) * 2004-08-03 2006-06-06 Hitachi, Ltd. Failover and data migration using data replication
JP4786248B2 (ja) * 2005-08-09 2011-10-05 株式会社日立製作所 ストレージシステムの構成管理装置及び構成管理方法
JP4710518B2 (ja) * 2005-09-28 2011-06-29 株式会社日立製作所 計算機システムとそのブート制御方法
JP4736783B2 (ja) * 2005-12-19 2011-07-27 株式会社日立製作所 ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8046545B2 (en) * 2006-01-03 2011-10-25 Emc Corporation Continuous backup
JP2007226400A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd 計算機管理方法、計算機管理プログラム、実行サーバの構成を管理する待機サーバ及び計算機システム
JP4611922B2 (ja) * 2006-03-28 2011-01-12 富士通株式会社 制御プログラム、制御方法および制御装置
US7792944B2 (en) * 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US7627729B2 (en) * 2006-09-07 2009-12-01 International Business Machines Corporation Apparatus, system, and method for an improved synchronous mirror swap
US7594072B2 (en) * 2006-09-15 2009-09-22 Hitachi, Ltd. Method and apparatus incorporating virtualization for data storage and protection
JP4902403B2 (ja) * 2006-10-30 2012-03-21 株式会社日立製作所 情報システム及びデータ転送方法
JP5244332B2 (ja) * 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
US8554981B2 (en) * 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US8296398B2 (en) * 2008-04-29 2012-10-23 Overland Storage, Inc. Peer-to-peer redundant file server system and methods

Also Published As

Publication number Publication date
EP3037970A1 (en) 2016-06-29
CN103645953B (zh) 2017-01-18
CN105138435A (zh) 2015-12-09
EP2324429A4 (en) 2012-06-06
JP5118243B2 (ja) 2013-01-16
CN102177508B (zh) 2015-08-05
EP2426605A1 (en) 2012-03-07
JP2012053878A (ja) 2012-03-15
JP5015351B2 (ja) 2012-08-29
JP2011530748A (ja) 2011-12-22
EP2324429A1 (en) 2011-05-25
EP3699765A1 (en) 2020-08-26
CN103645953A (zh) 2014-03-19
CN105138435B (zh) 2019-06-04
EP2324429B1 (en) 2020-10-14
WO2010017492A1 (en) 2010-02-11
EP2426605B1 (en) 2016-03-02
CN102177508A (zh) 2011-09-07

Similar Documents

Publication Publication Date Title
ES2575155T3 (es) Suministro de programas de ejecución con acceso fiable al almacenamiento de datos a nivel de bloque no local
US11526407B2 (en) Providing executing programs with access to stored block data of others
US11768609B2 (en) Managing access of multiple executing programs to nonlocal block data storage
US9262273B2 (en) Providing executing programs with reliable access to non-local block data storage
US7831682B2 (en) Providing a reliable backing store for block data storage
US9747179B2 (en) Data management agent for selective storage re-caching
US20180217766A1 (en) Optimizing off-loaded input/output (i/o) requests
US11461156B2 (en) Block-storage service supporting multi-attach and health check failover mechanism
US20220317912A1 (en) Non-Disruptively Moving A Storage Fleet Control Plane
US10929041B1 (en) Block-storage service supporting multi-attach
WO2023239701A1 (en) Converting storage resources to distributed persistent storage for containerized applications