MX2014002960A - Rastreo de region sucia de medios de volatiles. - Google Patents

Rastreo de region sucia de medios de volatiles.

Info

Publication number
MX2014002960A
MX2014002960A MX2014002960A MX2014002960A MX2014002960A MX 2014002960 A MX2014002960 A MX 2014002960A MX 2014002960 A MX2014002960 A MX 2014002960A MX 2014002960 A MX2014002960 A MX 2014002960A MX 2014002960 A MX2014002960 A MX 2014002960A
Authority
MX
Mexico
Prior art keywords
region
storage
group
descriptor
data
Prior art date
Application number
MX2014002960A
Other languages
English (en)
Other versions
MX336226B (es
Inventor
Emanuel Peleologu
Karan Mehra
Darren Moss
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of MX2014002960A publication Critical patent/MX2014002960A/es
Publication of MX336226B publication Critical patent/MX336226B/es

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/2064Error 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 while ensuring consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1009Cache, i.e. caches used in RAID system with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1035Keeping track, i.e. keeping track of data and parity changes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1061Parity-single bit-RAID4, i.e. RAID 4 implementations

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)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un grupo de almacenamiento (por ejemplo, una disposición de unidades de disco duro) puede experimentar una falla, tal como una pérdida de e nergía, u n choque de software, una desconexión de un dispositivo de almacenamiento, mientras las escrituras para el grupo de almacenamiento están en progreso. La recuperación de la falla puede involucrar escanear el grupo de almacenamiento para detectar y corregir inconsistencias (por ejemplo, comparar reflejos de un grupo de datos o sumas de verificación de prueba). Sin embargo, al carecer de información sobre las ubicaciones de escrituras pendientes al grupo de almacenamiento durante la falla, este procedimiento de "limpieza" puede involucrar escanear todo el grupo de almacenamiento, que resulta en procedimientos de recuperación prolongada. Aquí se presentan técnicas para rastrear escrituras para el grupo de almacenamiento al distribuir el grupo de almacenamiento en regiones de un tamaño de región (por ejemplo, 1 gigabyte), y al almacenar en descriptores de medio de almacenamiento no volátil de regiones "sucias" que comprenden escrituras en progreso. El procedimiento de recuperación post-falla entonces puede limitarse a las regiones identificadas como sucias.

Description

RASTREO DE REGION SUCIA DE MEDIOS NO VOLATILES ANTECEDENTES Dentro del campo de cómputo, muchos escenarios involucran un grupo de almacenamiento proporcionado por un grupo de dispositivos de almacenamiento (por ejemplo, una disposición de unidades de disco duro que inter-operan de acuerdo con una Disposición Redundante de Discos Económicos (RAID)), y que puede accederse por varios dispositivos y procedimientos para almacenar y recuperar varios tipos de datos. En muchos de tales escenarios, los datos almacenados en diferentes porciones del grupo de almacenamiento pueden tener una relación. Como un primer ejemplo, un primer grupo de datos y un segundo grupo de datos almacenado en el grupo de almacenamiento pueden hacer referencia entre si, tal como registros relacionados en un sistema de base de datos. Como un segundo ejemplo, dos o más versiones idénticas de los datos pueden retenerse con el fin de proporcionar varias ventajas. Por ejemplo, dos dispositivos de almacenamiento pueden almacenar y proporcionar acceso al mismo grupo de datos, duplicando con ello efectivamente la velocidad de acceso a los datos. Copias idénticas de los datos también pueden retenerse con el fin de proteger la integridad de los datos; por ejemplo, si se pierde una primera copia de los datos debido a una falla, tal como corrupción de datos o una falla de hardware (por ejemplo, un choque de unidad dura), puede accederse a una segunda copia idéntica del grupo de datos y duplicarse para recuperarse de la falla.
Como un tercer ejemplo, pueden asociarse datos con el fin de detectar y/o protegerse contra errores o cambios no deseados a los datos. Por ejemplo, un error al leer o almacenar lógica del dispositivo, un subdesbordamiento o sobre-desbordamiento de memoria intermedia, un defecto en el medio de almacenamiento, o una perturbación externa (tal como un rayo cósmico) puede causar ocasionalmente un cambio accidental en los datos almacenados en el medio de almacenamiento o en la lectura de datos desde el medio de almacenamiento. Por lo tanto, en muchos escenarios, para porciones respectivas de datos almacenados en los dispositivos de almacenamiento, puede calcularse y almacenarse un verificador, tal como una suma de verificación, puede calcularse y almacenarse, y puede utilizarse para confirmar que los contenidos del grupo de datos han sido almacenados válidamente para y/o leídos desde el dispositivo de almacenamiento. Como un ejemplo, en el contexto de almacenar un grupo de datos que comprende un grupo de bits, puede aplicarse una operación OR exclusiva (XOR) a I os bits, que resulta en una suma de verificación de 1 bit que puede almacenarse y asociarse con este grupo de datos. Cuando el grupo de datos se lee posteriormente, puede aplicarse otra operación XOR a éste, y el resultado puede compararse con la suma de verificación de 1 bits. Un cambio de cualquier bit resulta en una diferencia de estos cálculos XOR, que indica que los datos han sido almacenados, alterados incorrectamente, o leídos incorrectamente del dispositivo de almacenamiento. Pueden identificarse muchos tipos de verificadores, que pueden variar en algunas características (por ejemplo, facilidad de cálculo, una capacidad de identificar que bit del grupo de datos ha cambiado, y una capacidad de corrección de error por lo cual puede corregirse una porción incorrectamente leída de datos).
Se logran frecuentemente varias formas de réplica de datos a través del uso de una Disposición Redundante de Discos Económicos (RAID), tal como un grupo de unidades de disco duro que se agrupan juntas para lograr varias propiedades agregadas, tal como resultado mejorado y reflejo de datos automático. Como un primer ejemplo, en una disposición RAID 1, un grupo de dos o más unidades de disco duro del mismo tamaño almacenan copias idénticas del grupo de almacenamiento, y cualquier actualización al grupo de almacenamiento se propaga idénticamente a través de todas las unidades de disco duro. El grupo de almacenamiento por lo tanto permanece accesible en el caso de fallas de unidad de disco duro, incluso múltiple de esas fallas, siempre y cuando una unidad de disco duro permanezca funcional y accesible. Como un segundo ejemplo, una disposición RAID 4 involucra un grupo de dos o más discos, en donde se incluye un disco en la disposición para no almacenar datos de usuario, sino para almacenar verificadores de los datos almacenados en los otros discos. Por ejemplo, para una disposición RAID 4 que involucra cuatro discos cada uno que almacena 1 terabyte de datos, la capacidad de los primeros tres discos se agrupa para formar un espacio de almacenamiento de 3 terabytes para datos del usuario, mientras el cuarto disco se incluye en la disposición para retener verificadores para grupos de datos almacenados en los primeros tres discos (por ejemplo, para cada tres palabras de 64 bits respectivamente almacenadas en los otros tres discos, el cuarto disco incluye un verificador de 64 bits que verificar la integridad de las tres palabras de 64 bits). El controlador de disposición RAID comprende un sistema de circuitos que está configurado para ¡mplementar los detalles de un nivel RAID seleccionado para un grupo proporcionado de unidades de disco duro (por ejemplo, al recibir un grupo de datos, distribuir automáticamente los datos a través de los tres discos de datos de usuario, calcular el verificador del grupo de datos, y almacenar el verificador en el cuarto disco). Las técnicas RAID utilizadas también pueden permitir protecciones o características adicionales; por ejemplo, si cualquier dispositivo de almacenamiento individual en una disposición RAID 4 falla, los datos almacenados en el dispositivo fallido pueden reconstruirse completamente a través del uso de los dispositivos de almacenamiento restantes.
BREVE DESCRIPCION DE LA INVENCION Esta Breve Descripción se proporciona para introducir una la selección de conceptos en una forma simplificada que además se describe a continuación en la Descripción Detallada. Esta Breve Descripción no pretende identificar factores clave o características esenciales del tema reclamado, ni pretende utilizarse para limitar el alcance del tema reclamado.
Mientras se escriben grupos asociados de datos en un sistema de almacenamiento, pueden surgir problemas durante la escritura que causan una inconsistencia entre los grupos de datos asociados. Como un primer ejemplo, en un grupo de datos reflejado, puede ocurrir un error mientras se escribe a uno de los espejos, tales como un cambio accidental de los datos debido a un rayo cósmico, un defecto en el medio físico, o un error lógico en el procedimiento de lectura/escritura. Como un resultado, los reflejos del grupo de datos pueden no coincidir, y puede ser difícil elegir una versión correcta de los datos. Como un segundo ejemplo, pueden surgir problemas debido al retraso entre almacenar un grupo de datos y su verificador (o viceversa). Por ejemplo, muchos dispositivos de almacenamiento pueden soportar únicamente una escritura o una ubicación en un momento (por ejemplo, la ubicación bajo la cabeza de escritura de una unidad de disco duro, o la ubicación especificada por un registrador de dirección en un dispositivo de almacenamiento de estado sólido), y el almacenamiento secuencial de datos involucra escribir el grupo de datos antes de verificador, o viceversa. Como otro ejemplo, si el grupo de datos y el verificador se almacenan en diferentes dispositivos de almacenamiento, puede ser difícil sincronizar el momento que el primer dispositivo de almacenamiento almacene el grupo de datos con el momento que el segundo dispositivo de almacenamiento almacena el verificador del grupo de datos. Como un resultado, el almacenamiento de un grupo de datos y un verificador correspondiente no ocurre en una forma sincrónica, sino en una forma secuencial. Muchas fuentes de falla pueden interrumpir el procedimiento de almacenamiento, tal como pérdida de energía, una falla de hardware, un choque de software, o una remoción no anticipada de un dispositivo de almacenamiento de la disposición. Si surgen tales fallas en el momento después de almacenar un grupo de datos y antes de almacenar el verificador, entonces un error de verificador puede surgir posteriormente durante una lectura que pone en riesgo la confianza en la precisión de los datos. Además de que los datos se escriben activamente por el dispositivo(s) de almacenamiento, una falla también puede alterar otras escrituras que no se han contemplado, tal como datos almacenados en una memoria intermedia de escrituras y programados para escritura inminente.
En estos y otros escenarios, la consistencia del grupo de datos puede detectarse a través de un procedimiento de verificación, por ejemplo, al comparar grupos de datos idénticos o al comparar verificadores con los datos correspondientes. Por consiguiente, al detectar una falla catastrófica, los datos en uno o más dispositivos de almacenamiento pueden "limpiarse" al verificar los datos y al corregir posiblemente inconsistencias. Sin embargo, aunque la ocurrencia de una falla puede detectarse fácilmente (por ejemplo, un apagado incorrecto o un reemplazo de un dispositivo de almacenamiento fallido), puede no ser posible determinar qué porciones del grupo de almacenamiento se están escribiendo al momento de escribir y pudo haberse comprometido por la falla. Sin tal información, todo el grupo de almacenamiento tiene que limpiarse al verificar cada grupo de datos en el grupo de almacenamiento (por ejemplo, al comparar la totalidad de cada copia de un grupo de datos reflejado para detectar inconsistencias, y probar los verificadores de cada grupo de datos en el grupo de almacenamiento). La limpieza del grupo de almacenamiento completo puede tomar mucho tiempo, particularmente en vista del crecimiento de capacidades de grupo de almacenamiento en el rango de petabytes, que resulta en un periodo de recuperación prolongado después de incluso un breve período de falla catastrófica; y aunque este procedimiento de limpieza extensivo puede asegurar la integridad del grupo de almacenamiento, la extensión del procedimiento de limpieza de todo el volumen (que frecuentemente involucra grupos de datos e incluso dispositivos de almacenamiento que no se han escrito en un tiempo prolongado) puede ser desproporcionada para el número comparativamente pequeño de escrituras que pudieron haber estado en el procedimiento al momento de la falla.
Se presentan aquí técnicas para el enfoque de limpieza de un grupo de almacenamiento en datos que pudieron haber sido comprometidos por una falla. De acuerdo con estas técnicas, antes de escribir una ubicación en el grupo de almacenamiento, un dispositivo de almacenamiento puede almacenar en el mismo medio físico no volátil un descriptor que indica la ubicación en donde va ha ocurrir la escritura, y después puede borrar el descriptor después que se completó la escritura. De esta forma, los dispositivos de almacenamiento pueden rastrear las áreas "sucias" del grupo de almacenamiento, y al recuperarse de una falla, pueden iniciar una limpieza únicamente de las áreas "sucias" del grupo de almacenamiento. Sin embargo, se puede apreciar que registrar (y nivelar) la dirección en el medio físico no volátil de cada escritura, y al borrar (y nivelar) la dirección después de confirmar la finalización de la escritura al medio físico, puede disminuir significativamente (por ejemplo, triplicar) el número de búsquedas y escrituras involucradas al escribir cada grupo de datos, por lo cual se reduce el desempeño (por ejemplo, latencia y resultado) del grupo de almacenamiento. En el otro extremo, arrastrar información "sucias" únicamente a un alto nivel, tal como por dispositivo de almacenamiento, división, o volumen, puede enfocarse de manera insuficiente en el procedimiento de limpieza. Por ejemplo, si se rastrea información "sucia" por volumen, el procedimiento de limpieza puede enfocarse en un volumen particular que estuvo en uso al momento de la escritura, pero el volumen puede comprender múltiples terabytes de datos que resultan en un procedimiento en inglés extensivo, incluso si se fuera a escribir únicamente pocos megabytes de datos. Consecuentemente, de acuerdo con las técnicas aquí presentadas, el grupo de almacenamiento puede distribuirse en regiones de un tamaño de región, y la información "sucia" puede rastrearse para cada región. Por ejemplo, distribuir el grupo de almacenamiento en regiones de un gigabyte puede permitir un rastreo comparativamente preciso de regiones, mientras también reduce la frecuencia de actualizar la información de región sucia (por ejemplo, cuando se inicia una escritura en una región, se marca como "sucia", y puede permanecer así marcada a través de escrituras secuenciales extensivas dentro de la región). La selección del tamaño de región por lo tanto puede observarse como una transferencia entre precisión en la información de región sucia, que lleva a procedimientos de limpieza más enfocados y más cortos, y reducción en los costos de desempeño para implementar el procedimiento de rastreo de región sucia.
Técnicas adicionales además pueden reducir la frecuencia de actualizaciones para la información de región sucia. Como un primer ejemplo, antes de escribir a un descriptor de región sucia para una región a la cual se ha solicitado una escritura, una modalidad puede determinar si la región no está marcada como sucia en el medio de almacenamiento, y puede evitar marcar de manera redundante la región como sucia. Como un segundo ejemplo, una región a la cual se ha completado una escritura recientemente, puede presentar una alta probabilidad de una escritura subsecuente inminente a la misma región. Por lo tanto, en lugar de marcar rápidamente la región como limpia siguiendo la finalización de la escritura, la reelaboración "limpia" puede diferirse por una breve duración; y si una escritura subsecuente a la misma región se recibe, la región puede permanecer marcada como sucia, en lugar de tener que marcar la región como sucia justo después de haber marcado la región como limpia. En tal modalidad, puede generarse una representación de memoria volátil de los descriptores de región sucia y utilizarse para determinar cuándo marcar tales regiones como sucias o limpias. Por ejemplo, la representación en memoria puede registrar los tiempos de la última solicitud de escritura para cada región, y puede marcar como limpia cualquiera de las regiones no se han escrito para una duración definida. Adicionalmente, la representación en memoria puede permitir un registro en lote de regiones "limpias", reduciendo además la cantidad de escrituras de medios de almacenamiento involucradas en el procedimiento de rastreo de región sucia. Estos y otros usos del rastreo en memoria de un "grupo operativo" de regiones sucias pueden reducir el número de accesos a los dispositivos de almacenamiento, y por lo tanto los costos de desempeño del rastreo de región sucia no volátil, sin reducir significativamente la precisión del procedimiento de limpieza. Estas y otras técnicas además pueden reducir los costos de desempeño para implementar el rastreo de región sucia sin prolongar significativamente el procedimiento de limpieza durante una recuperación de una falla del grupo de almacenamiento.
Para el logro de los fines anteriores y relacionados, la siguiente descripción y dibujos anexos describen ciertos aspectos e implementaciones ilustrativas. Estas son indicativas de algunas de las varias formas en las cuales pueden emplearse uno o más aspectos. Otros aspectos, ventajas, y características novedosas de la descripción se harán evidentes a partir de la siguiente descripción detallada cuando se consideran en conjunto con los dibujos anexos.
DESCRIPCION DE LOS DIBUJOS La Figura 1 e s una ilustración de un escenario ilustrativo que representa una falla del grupo de almacenamiento que puede comprender un grupo de datos reflejado almacenado en varios dispositivos de almacenamiento.
La Figura 2 e s una ilustración de un escenario ilustrativo que representa una falla del grupo de almacenamiento que puede comprometer la consistencia de un grupo de datos y en verificador (por ejemplo, una suma de verificación) del grupo de datos.
La Figura 3 es una ilustración de dos técnicas que pueden reducir la incidencia de datos comprometidos en el grupo de datos causada por una falla, pero que también puede hacerlo con costos significativos y/o ineficiencias.
La Figura 4 es una ilustración de un escenario ilustrativo que representa el uso de las técnicas aquí presentadas para rastrear regiones sucias en los medios físicos de un grupo de almacenamiento.
La Figura 5 es una ilustración de cuadro de flujo de un método ilustrativo de un registro de medios de rastreo y no volátiles de regiones sucias de un grupo de almacenamiento de acuerdo con las técnicas aquí presentadas.
La Figura 6 es una ilustración de cuadro de flujo de un método ilustrativo para limpiar un grupo de almacenamiento de acuerdo con las regiones sucias indicadas en el medio de almacenamiento no volátil del grupo de almacenamiento de acuerdo con las técnicas aquí presentadas.
La Figura 7 es una ilustración de un medio legible por computadora ilustrativo que comprende instrucciones ejecutables por procesador configuradas para representar una o más de las provisiones aquí establecidas.
La Figura 8 es una ilustración de un escenario ilustrativo que representa un tipo de estructuras de datos que puede utilizarse para rastrear regiones sucias en el medio físico no volátil del grupo de almacenamiento de acuerdo con las técnicas aquí presentadas.
La Figura 9 es una ilustración un procedimiento ilustrativo para actualizar un cuadro de región sucia en un dispositivo de almacenamiento para rastrear regiones sucias de un grupo de almacenamiento de acuerdo con las técnicas aquí presentadas.
La Figura 10 es una ilustración de una máquina de estado ilustrativa que representa el procedimiento para rastrear regiones sucias de un grupo de almacenamiento de acuerdo con las técnicas aquí presentadas.
La Figura 11 ilustra un ambiente de cómputo ilustrativo en donde pueden implementarse una o más de las provisiones aquí descritas.
DESCRIPCION DETALLADA El tema reclamado se describe ahora con referencia a los dibujos, en donde se utilizan números de referencia similares para hacer referencia a elementos similares de principio a fin. En la siguiente descripción, para propósitos de explicación, se describen numerosos detalles específicos con el fin de proporcionar un entendimiento completo del tema reclamado. Sin embargo, puede ser evidente que el tema reclamado puede practicarse sin estos detalles específicos. En otros casos, se muestran estructuras y dispositivos en forma de diagrama de bloques con el fin de facilitar describir el tema reclamado.
A. Introducción Dentro del campo de cómputo, muchos escenarios involucran el almacenamiento de datos que comprende un grupo de almacenamiento en uno o más dispositivos de almacenamiento no volátiles (por ejemplo, unidades de disco duro magnético y/u óptico basados en disco, dispositivos de almacenamiento de estado sólido, y circuito de memoria no volátiles). Muchos detalles del almacenamiento de datos pueden variar, tal como el tamaño de palabra, el método de dirección, la división del espacio de almacenamiento del dispositivo de almacenamiento en una o más divisiones, y la exposición de espacios distribuidos dentro del dispositivo de almacenamiento como uno o más volúmenes dentro de un ambiente de cómputo. Adicionalmente, los dispositivos de almacenamiento pueden operar independientemente o con cooperación floja para proporcionar el grupo de almacenamiento. Para examen, en una disposición estructurada de acuerdo con un esquema RAID 0, un grupo de almacenamiento puede simplemente ser agregado de la capacidad proporcionada por cada dispositivo de almacenamiento, cada uno de los cuales puede operar independientemente de los otros discos. Alternativamente, los dispositivos de almacenamiento pueden configurarse para proporcionar varias características a través de grados variables de coordinación justa. Por ejemplo, en una disposición estructurada como de acuerdo con un esquema RAID 1, un grupo de dispositivos de almacenamiento cada uno puede almacenar una copia idéntica de todo el grupo de almacenamiento; por ejemplo, un grupo de almacenamiento de 1 terabyte puede almacenarse como cuatro copias idénticas en cuatro dispositivos de almacenamiento de 1 terabyte, que pueden inter-operar para asegurar que cualquier solicitud para alterar el grupo de almacenamiento se aplique equivalentemente a los cuatro dispositivos de almacenamiento con el fin de mantener sincronía. Un archivo "reflejado" de esta naturaleza puede presentar velocidades de acceso mejoradas; por ejemplo, diferentes procedimientos pueden acceder al grupo de almacenamiento a través de diferentes dispositivos de almacenamiento, multiplicando por 4 potencialmente la velocidad de acceso al grupo de almacenamiento que se puede lograr por cualquier dispositivo individual. Adicionalmente, este tipo de disposición demuestra durabilidad resistente; y si una o más unidades de disco duro fallan (por ejemplo, debido a corrupción de datos, daño, o pérdida), el grupo de almacenamiento aún es accesible a través de otras unidades de disco duro, y permanece intacto siempre y cuando al menos una unidad de disco duro permanezca válida y accesible. Sin embargo, las ventajas de estas características se desplazan en una disposición RAID 1 por la pérdida considerable de capacidad (por ejemplo, el uso de 4 terabytes de espacio de unidad de disco duro para almacenar 1 terabyte de datos). Otros esquemas de almacenamiento pueden proporcionar algunas de estas características de seguridad y desempeño con menos reducción de la capacidad (por ejemplo, en un esquema RAID 4, un grupo de (n) unidades de espacio (s) expone toda la capacidad de almacenamiento de todos excepto una unidad de disco duro que se reserva para almacenar información de paridad, y puede recuperarse de la falla de una unidad de disco duro en la disposición).
En estos y otros escenarios, pueden almacenarse grupos de datos al grupo de almacenamiento por varios dispositivos y procedimientos. Sin embargo, muchas formas de falla pueden ocurrir durante el uso del grupo de almacenamiento que pueden comprender el almacenamiento de datos. Por ejemplo, mientras se acceden a escrituras para el grupo de almacenamiento a nombre de varios procedimientos al grupo de datos, puede ocurrir una falla de software en el procedimiento de escritura, en un procedimiento de manejo de grupo de almacenamiento, en un controlador de dispositivo para el hardware, o en el sistema operativo; la computadora puede perder comunicación con el dispositivo de almacenamiento (por ejemplo, puede desconectarse el dispositivo de almacenamiento, o puede fallar una red por cable o inalámbrica que conecta la computadora y el dispositivo de almacenamiento); o el dispositivo de almacenamiento puede experimentar una falla de hardware (por ejemplo, un choque de cabeza en una unidad de disco duro o una interrupción de energía). Estas y otras formas de falla pueden ocurrir repentinamente sin advertencia, y pueden interrumpir el procedimiento de escribir datos al grupo de almacenamiento.
En el caso de una falla del grupo de almacenamiento durante una o más escrituras, algunos tipos de falla se pueden recuperar, o pueden resultar en una pérdida insignificante de datos. Por ejemplo, la falla puede ocurrir justo después que se escribieron datos al grupo de almacenamiento y se puede recuperar; puede causar la pérdida de datos que puede regenerarse o que no es valiosa; puede causar la pérdida de una pequeña cantidad de datos en un grupo de datos comparativamente grande, tal como la pérdida de pocos mensajes de correo electrónico en un gran archivo de mensaje de correo electrónico. Sin embargo, otros tipos de falla pueden presentar problemas significativos. En particular, pueden existir algunas asociaciones entre dos o más grupos de datos que se escriben al grupo de almacenamiento, y una falla que ocurre mientras se escribe un primer grupo de datos puede resultar en una inconsistencia en el grupo de datos asociado. Tal inconsistencia puede comprender no solamente la integridad del grupo de datos que se escribe al momento de falla, sino también los grupos de datos asociados. De hecho, en algunos escenarios, una falla completa de la escritura y una pérdida de los datos que se van a escribir puede causar menos problemas que una escritura incompleta del grupo de almacenamiento. Como un primer ejemplo, si ocurre una falla durante una actualización de una primera copia de un grupo de datos reflejado, la inconsistencia detectada entre esta copia y otra copia puede poner en duda la integridad de ambas copias. Además, si ambas copias se están actualizando al momento de la falla, y se detecta subsecuentemente una inconsistencia, puede ser difícil determinar qué copia completó exitosamente la escritura antes de la falla y que copia falló al hacerlo. Como un segundo ejemplo, si se detecta una inconsistencia entre un grupo de datos y su suma de verificación, puede ser difícil determinar si el grupo de datos o la suma de verificación está en un error. Además, si se calcula una suma de verificación desde varios grupos de datos, una falla para completar una e scritura a un grupo de datos puede resultar en una suma de verificación incorrecta y una reducción de confianza no sólo en la integridad del grupo de datos y la suma de verificación, sino en todos los otros grupos de datos representados por la suma de verificación. En estos y otros escenarios, la falla para completar una escritura a un grupo de datos puede resultar en inconsistencia que comprometen la confiabilidad de un amplio rango de datos en el grupo de almacenamiento, e incluso incluyendo otros grupos de datos que están únicamente relacionados tangencialmente al grupo de datos escrito de manera incompleta.
Las Figuras 1 y 2 presentan dos escenarios diferentes que ilustran las consecuencias de una falla mientras se escribe a un grupo de almacenamiento. En el escenario ilustrativo 100 de la Figura 1, un grupo de almacenamiento 102, que comprende varios grupos de datos 104 (por ejemplo, bits, bytes, palabras, sectores, archivos, o registros) se almacenan en un grupo de dispositivos de almacenamiento 106, en donde existe una relación de reflejo entre los grupos de datos 104. En particular, los dispositivos de almacenamiento 106 en este escenario ilustrativo 100 se configuran para almacenar copias idénticas del grupo de datos 104, tal como en un esquema RAID 1. (El reflejo puede realizarse en una forma física, por ejemplo, escribiendo los mismos datos a cada ubicación física en un grupo idénticamente dimensionado de dispositivos de almacenamiento 106, o en una forma lógica, por ejemplo, escribir datos a una ubicación física de cada dispositivo de almacenamiento 106 que corresponde a una dirección lógica del grupo de almacenamiento 102). Por consiguiente, en un primer punto de tiempo 112, cuando se solicita una escritura 110 a un grupo de datos particular 104 en una ubicación particular 108 en el grupo de almacenamiento 102, cada uno de los dispositivos de almacenamiento 106 puede realizar la escritura 110 a la ubicación solicitada 108. Sin embargo, como se ilustra además en el escenario ilustrativo 100, pueden surgir problemas debido a la sincronía incompleta de los dispositivos de almacenamiento 106; por ejemplo, la escritura 110 a cada dispositivo de almacenamiento 106 se puede iniciar, realizar, y c ompletar en diferentes momentos por d ¡ferentes dispositivos de almacenamiento 106. Tales diferencias de tiempo pueden surgir debido a diferencias de hardware (por ejemplo, un primer dispositivo de almacenamiento 106 puede ejecutar rápidamente el grupo de datos 104 en medio físico, mientras un segundo dispositivo de almacenamiento 106 puede almacenar primer grupo de datos 106 en una memoria intermedia de escritura), pero puede surgir incluso con dispositivo de almacenamiento idénticamente equipados (por ejemplo, diferencias en las filas de entrada/salida de diferentes dispositivos de almacenamiento 106, o diferencias en la posición de sector inicial de las cabezas de escritura de diferentes unidades de disco duro al inicio de una solicitud de escritura). Como un resultado, en un segundo punto de tiempo 114, las escrituras 110 para dos de los dispositivos de almacenamiento 106 pueden completarse mientras un tercer dispositivo de almacenamiento 106 continua completando la escritura 110 (y puede, de hecho, incluso no haber iniciado la ejecución del grupo de datos 104 al grupo almacenamiento 102).
Tales lapsos en sincronía de dispositivos de almacenamiento 106 pueden resultar en problemas significativos, por ejemplo, se ocurre una falla después de la finalización de una escritura 110 por un primer dispositivo de almacenamiento 106 y antes de la finalización de la misma escritura 110 por un segundo dispositivo de almacenamiento 106. Por ejemplo, en un tercer punto de tiempo 116, mientras se está realizando una tercera escritura 110 a los dispositivos de almacenamiento 106, una falla 118 ocurre e interrumpe la escritura 110 a todos los dispositivos de almacenamiento 106. Incluso si la falla 118 implícita es temporal (por ejemplo, una pérdida momentánea de energía), e incluso efímera, la falla 118 puede resultar en una inconsistencia 122 debido a las diferencias de tiempo en el dispositivo de almacenamiento 106 (por ejemplo, la escritura 110 pudo haber sido completada antes de la falla 118 en los primeros y segundos dispositivos de almacenamiento 106, pero no en el tercer dispositivo de almacenamiento 106). Mientras se recupera de la falla 118, después de identificar la inconsistencia 122 entre grupos de datos 104 que se espera que sean idénticos, puede ser difícil elegir determinar qué grupo de datos 108 es preciso. En este escenario ilustrativo 100, puede ser lógico elegir la versión de los grupos de datos 108 almacenados en la mayoría de dispositivos de almacenamiento 106. Sin embargo, variaciones menores de este escenario ilustrativo 100 puede presentar tal elección menos lógica; por ejemplo, la inconsistencia 122 puede surgir en escenarios que involucran un número par de dispositivos de almacenamiento 106, tal como una elección de mayoría que pueden no estar disponible.
En escenarios tales como el escenario ilustrativo 100 de la Figura 1, la inconsistencia 122 puede aplicar únicamente grupos de datos 110 que se han escrito recientemente. Sin embargo, en otros escenarios, fallas similares 118 también pueden arriesgar la confiabilidad de grupos de datos 104 que no se han escrito u incluso accedido en un tiempo prolongado, e incluso aquellos almacenados en otros dispositivos de almacenamiento 106 que no estuvieron en uso al momento de la falla 118. En el escenario ilustrativo 200 de la Figura 2, se configura un grupo de cuatro dispositivos de almacenamiento 106 en la forma de un esquema RAID 4, en donde se distribuye un grupo de almacenamiento 102 a través de tres dispositivos de almacenamiento 106, y se configura un cuarto dispositivo de almacenamiento 106 para almacenar un grupo de verificadores 202 que corresponde a varios grupos de datos 104 almacenados en los primeros tres dispositivos de almacenamiento 106. Los verificadores 202 pueden comprender una suma de verificación, tal como una paridad que se calcula al XOR conjuntamente los bits almacenados en una ubicación correspondiente en cada uno de los otros dispositivos de almacenamiento 106. (Por ejemplo, para un grupo de datos de 1 MB 104 almacenado en una ubicación física o lógica particular en el grupo almacenamiento 102 de cada dispositivo de almacenamiento 106, cada uno de los grupos de datos de 1 megabyte 104 puede XOR conjuntamente para generar 1 megabyte de datos de paridad que se almacena en el cuarto dispositivo de almacenamiento 106). Esta interoperación puede permitir a los dispositivos de almacenamiento 106 mantener la integridad del grupo de almacenamiento 102 a través de algunas formas de pérdida de datos. Por ejemplo, si cualquiera de los primeros dispositivos de los primeros tres dispositivos de almacenamiento 106 se pierde, la porción del grupo de almacenamiento 120 almacenado en el dispositivo de almacenamiento perdido 106 pueda reconstruirse al XOR conjuntamente los datos almacenados en los otros dos dispositivos de almacenamiento 106 y los datos de paridad correspondientes almacenados en el cuarto dispositivo de almacenamiento 106; y si se pierde el cuarto dispositivo de almacenamiento 106, los datos de paridad pueden regenerarse simplemente sobre un dispositivo de almacenamiento de reemplazo 106 desde los grupos de datos correspondientes 104 almacenados en los primeros tres dispositivos de almacenamiento.
De esta forma, la interoperación de los dispositivos de almacenamiento 106 como se ilustra e n el escenario ilustrativo 200 de la Figura 2 permite la tolerancia a falla incluso en el caso de una pérdida repentina y permanente de cualquier dispositivo de almacenamiento 106. Sin embargo, los dispositivos de almacenamiento 106 en este escenario ilustrativo 200 también exhiben la sincronía incompleta presentada en el escenario ilustrativo 100 de la Figura 1. Por ejemplo, en un primer punto de tiempo 204, puede iniciarse una escritura 110 a un grupo de datos 104 almacenado en el segundo dispositivo de almacenamiento 106, que involucran actualizar el verificador 202 para los grupos de datos correspondientes 104 almacenados en el cuarto dispositivo de almacenamiento 106. Sin embargo, las escrituras 110 pueden no completarse al mismo tiempo; por ejemplo, en un segundo punto del tiempo 206, la escritura 110 al segundo dispositivo de almacenamiento 106 puede haberse completado, pero la escritura 110 del verificador 202 en el cuarto dispositivo de almacenamiento 106 no. Además, puede surgir una falla 118 antes que se complete la última escritura 110, y el cuarto dispositivo de almacenamiento 106 puede retener un verificador incorrecto 118. Incluso si está limitada y breve, esta falla 118 puede arriesgar no solamente el verificador 116 que ha sido escrito incompletamente al cuarto dispositivo de almacenamiento 106 y el grupo de datos 104 almacenado en el segundo dispositivo de almacenamiento 106 que se ha escrito reciente pero completamente, pero los grupos de datos 104 almacenados en el primer y tercer dispositivos de almacenamiento 106 que también son representados por el verificador 122. Por ejemplo, en un tercer punto de tiempo 208, el tercer dispositivo de almacenamiento 106 puede experimentar una falla 118; y en un cuarto punto de tiempo 210, puede iniciarse un procedimiento de recuperación para reconstruir los grupos de datos 104 en un dispositivo de almacenamiento de reemplazo 118 al XOR conjuntamente los grupos de datos correspondientes 104 en el primer y segundo dispositivos de almacenamiento 106 y el verificador 202 correspondiente en el cuarto dispositivo de almacenamiento 106. Sin embargo, debido a la inconsistencia 122 causada por la falla 118 de la escritura 110 al cuarto dispositivo de almacenamiento 106 en el segundo punto de tiempo 206, la acción XOR puede resultar en una reconstrucción de datos incorrectos 212 en el tercer dispositivo de almacenamiento 106. Estos datos incorrectos 212 pueden generarse incluso aunque este grupo de datos 104 en el tercer dispositivo almacenamiento 106 no estuvo involucrado en la falla 118 de la escritura 110, incluso si este grupo de datos 104 no se ha escrito en un tiempo prolongado, e incluso si el tercer dispositivo de almacenamiento 106 no estuvo en uso o incluso está accesible durante la falla 118 de la escritura 110 al cuarto dispositivo de almacenamiento 106. De esa forma, la falla individual de una escritura 202 puede comprender las capacidades tolerantes a falla del grupo de almacenamiento 102 (es decir, a pesar de la implementación de un esquema RAID 4, el grupo de almacenamiento 102 pierde la capacidad de recuperarse de la falla 118 de un dispositivo de almacenamiento individual 106). Incluso pueden surgir consecuencias más severas en otros escenarios; por ejemplo, si la escritura fallida 110 ocurrió a un grupo de datos 104 que comprende un registro de arranque maestro, un volumen completo dentro del grupo de almacenamiento 106, que posiblemente comprende todo el grupo de almacenamiento 106, puede comprometerse y ser inaccesible.
Debido a las consecuencias potencialmente catastróficas de fallas 118 de escritura 110, pueden utilizarse técnicas para detectar y corregir inconsistencias resultantes 122. Como la primera de tales técnicas, pueden utilizarse varios tipos de procedimientos de limpieza para detectar inconsistencias en el grupo de almacenamiento 102. Por ejemplo, pueden compararse grupos de datos 104 con verificadores 202 para detectar una inconsistencia, o se pueden comparar copias de grupos de datos 104 que se que sean idénticas. Incluso grupos de datos 104 que no están asociados con otro grupo de datos 104 o verificador 202 pueden examinarse para inconsistencias, tal como corrupción de datos, y ocasionalmente pueden repararse de manera automática. Sin embargo, un escaneo de un grupo de almacenamiento completo 102 puede ser ineficiente y/o prohibitivo en muchos escenarios. Por ejemplo, el escaneo puede prolongarse debido al tamaño del grupo de almacenamiento 102, el rendimiento del grupo de almacenamiento 102 (por ejemplo, un grupo de almacenamiento geográficamente distribuido 102 pues ser accesible a través de conexiones de red comparativamente de bajo rendimiento), y/o la complejidad del escaneo (por ejemplo, un cálculo intensivo de matemáticas de una revisión de paridad sofisticada). Durante el escaneo, el grupo de almacenamiento 102 permanece posiblemente inconsistente y vulnerable en el caso de una falla 118 de un dispositivo de almacenamiento 106 como se ilustra en el escenario ilustrativo 200 de la Figura 2, y puede ser poco aconsejable para permitir que los procedimientos accedan al grupo de almacenamiento 102 debido a la posibilidad de proporcionar datos incorrectos. Por lo tanto tales procedimientos deben tener que desbloquearse hasta que el escaneo está completo (o al menos hasta que los grupos de datos 104 utilizados por el procedimiento sean limpiados), resultando en un corte de servicios o tiempo de inactividad. Adicionalmente, este escaneo prolongado y costoso del grupo de almacenamiento completo 102 puede activarse por una falla potencialmente breve 118 de incluso un dispositivo de almacenamiento individual 106, y puede ser desproporciona! al número de escrituras pendientes 110 durante la falla 118. De hecho, incluso si ninguna de las escritura 110 estuvieron en progreso al momento de la falla 118, un escaneo del grupo de almacenamiento completo 102 puede tener que invocarse si el número de escrituras pendientes 110 no puede determinarse, debido a la posibilidad de una inconsistencia 122 que puede tener resultados catastróficos.
En vista de estas consideraciones, puede ser deseable proporcionar mecanismos para almacenar información sobre escrituras pendientes 110 durante la operación ordinaria del grupo de almacenamiento 102 en caso de una falla repentina 118 de hardware y/o software. Esta información puede registrarse como información sobre el estado "sucio" del grupo de almacenamiento 102 que puede presentar una inconsistencia 122 si ocurre una falla. Además, puede ser deseable registrar esta información en una memoria no volátil con el fin de retener la información en el caso de una falla de energía. Este rastreo puede permitir un procedimiento de limpieza invocado después de una falla 118, de manera que el procedimiento de limpieza puede estar limitado a escaneo únicamente de las áreas del grupo de almacenamiento 102 que se invocaron en una escritura pendiente 110 en un momento de falla 118.
La Figura 3 presenta dos técnicas para registrar el estado "sucio" en una memoria no volátil para un grupo de almacenamiento 102 proporcionado por un grupo de dispositivos de almacenamiento 106. Como una primera técnica ilustrativa 300, para cada bit de datos almacenado en el grupo de almacenamiento 102, un indicador "sucio" 302 puede almacenarse e indica una escritura pendiente 202 al bit. El indicador "sucio" 302 para un bit puede establecerse antes de iniciar la escritura 202 al bit, y puede limpiarse después que se completa la escritura 202. Con el fin de limpiar el grupo de almacenamiento 102, los indicadores "sucios" 302 de los bits pueden examinarse, y cualquiera de los indicadores "sucio" 302 que se establecen pueden iniciar una limpieza del bit asociado (por ejemplo, al copiar sobre el bit inconsistente un bit correspondiente de una copia idéntica del grupo de datos 102 almacenado en un dispositivo de almacenamiento diferentes 106).
La primera técnica ilustrativa 300 puede presentar algunas ventajas; por ejemplo, puede lograr el almacenamiento de información sobre escrituras pendientes 104 en un medio de almacenamiento no volátil, puede adaptar un procedimiento de limpieza comparativamente simple que involucra una pequeña cantidad de hardware o software adicional, y puede reducir la complejidad computacional de la limpieza cuando se compara con otros métodos de detección (por ejemplo, realizando una operación XOR en grandes grupos de datos 104 recuperados de varios dispositivos de almacenamiento 106). Sin embargo, esta primera técnica ilustrativa 300 también presenta muchas desventajas. Como un primer ejemplo, los indicadores "sucios" 302 consumen la mitad del espacio de almacenamiento del grupo de almacenamiento 102. Como un segundo ejemplo, el procedimiento de escaneo aún involucra escaneartodo el grupo de almacenamiento 102, e incluso si la simplicidad relativa de la detección de escaneo reduce la energía computacional involucrada, el acceso de todo el grupo de almacenamiento 102 aún puede resultar en un procedimiento de limpieza prolongado. Además, si la velocidad de acceso del grupo de almacenamiento 102 es el cuello de botella en el procedimiento de limpieza, puede no cambiarse la duración del procedimiento de limpieza. Como un tercer ejemplo, si los indicadores "sucios" 302 se almacenan en proximidad física con los bits rastreados del dispositivo de almacenamiento 106 (por ejemplo, siguiendo cada bit o bytes en el medio físico del dispositivo de almacenamiento 106), una falla 108 que resulta en I a corrupción de un b it también puede resultar en la corrupción del indicador "sucio" 302. Alternativamente, si se almacenan los indicadores "sucios" 302 en un área diferente del mismo dispositivo de almacenamiento 106, entonces una escritura 202 de cualquier bit individual involucra tres accesos a tres diferentes porciones del dispositivo de almacenamiento 106, por ejemplo, una primera búsqueda para y acceso del área que clasifica los indicadores "sucios" 302 para marcar el bit como sucio; una segunda búsqueda a y acceso del área que almacena el bit para realizar la escritura 202; y una tercera búsqueda a y acceso del área que almacena los indicadores "sucios" 302 para marcar el bit como limpio. Estos múltiples accesos pueden reducir ampliamente el desempeño (por ejemplo, latencia y rendimiento) del dispositivo de almacenamiento 106. Además, el uso y desgaste físico aumentado involucrar el uso regular del dispositivo de almacenamiento 106 causado por esta variación de rastreo de los bits "sucios" puede acelerar accidentalmente la falla física 118 del dispositivo de almacenamiento 104.
La Figura 3 también ilustra una segunda técnica ilustrativa 304 para rastrear información "sucia" para un grupo de almacenamiento 102 proporcionado por un grupo de dispositivos de almacenamiento 106. Esta segunda técnica ilustrativa 304 involucra la inclusión de una memoria no volátil separada 306, por ejemplo, un dispositivo de almacenamiento de estado sólido que comprende una batería separada 308, en donde los indicadores "sucios" para bytes respectivos del grupo de almacenamiento 102 pueden registrarse. Por ejemplo, solicitudes para escrituras 202 de grupos de datos respectivos 104 pueden verificarse, registrarse en la memoria no volátil separada 306 y limpiarse cuando la escritura 202 está completa.
Esta segunda técnica ilustrativa 304 p resenta varias ventajas, tanto en general como con respecto a la primera técnica ilustrativa 304 ilustrada en la Figura 3. Como un primer ejemplo, debido a que el acceso de memoria no volátil separada 306 puede ocurrir concurrentemente con el desempeño de la escritura 202 al grupo de almacenamiento 102, el desempeño (por ejemplo, latencia y rendimiento) del dispositivo de almacenamiento 106 puede no disminuirse por la inclusión de esta técnica. Como un segundo ejemplo, almacenar los indicadores "sucios" 306 en una porción separada de memoria puede evitar reducir la capacidad del grupo de almacenamiento 102. Como un tercer ejemplo, la separación del almacenamiento de los indicadores "sucios" 302 de los medios físicos de los dispositivos de almacenamiento 106 pueden puede conservar los indicadores "sucios" 302 en el caso de una falla 118 del grupo de almacenamiento 102; por ejemplo, un defecto físico en una porción de un dispositivo de almacenamiento 106 puede no afectar el almacenamiento o recuperación del indicador "sucio" 302 para los bytes almacenados en la porción defectuosa, y en el caso de una falla de energía, la memoria no volátil separada 306 puede continuar operando utilizando la batería 308. Como un cuarto ejemplo, el procedimiento de limpieza puede prolongarse considerablemente al enfocarse únicamente en los bytes indicados como sucios en la memoria no volátil separada 306.
Sin embargo, esta segunda técnica ilustrativa 304 también presenta desventajas distintas. Como un primer ejemplo, la inclusión de hardware separado aumenta significativamente el costo y complejidad del grupo de almacenamiento 102. Como un segundo ejemplo, además de la posibilidad de una falla de un dispositivo de almacenamiento 106, el manejo del grupo de almacenamiento 102 también puede tener que competir con una falla de la memoria no volátil separada 306. Además, debido a que la memoria no volátil separada 306 no es almacenada en el grupo almacenamiento 102, no está incluido en el mecanismo para promover la redundancia y tolerancia a falla del grupo de almacenamiento 102, y una falla individual de la memoria no volátil separada 306 puede resultar en una pérdida de indicadores de "suciedad" 302 para todo el grupo de almacenamiento 102. Como un tercer ejemplo, el rastreo de indicadores "sucios" 302 para bytes respectivos del grupo almacenamiento 102 puede involucrar un número alto y velocidad de accesos a la memoria no volátil separada 306, que puede tener que proporcionar alto rendimiento y gran capacidad para satisfacer esa tarea. De hecho, la memoria no volátil separada 306 puede tener que proporcionar suficiente rendimiento para registrar actividades de escritura no sólo para el dispositivo de almacenamiento más rápido 106 en el grupo almacenamiento 102, sino para la velocidad combinada de actividad de todos los dispositivos de almacenamiento 106 atendidos por la memoria no volátil separada 306. Como un cuarto ejemplo, si la memoria no volátil separada 306 no está integrada con un dispositivo de almacenamiento 106 (por ejemplo, si se implementa en un controlador RAID), los indicadores "sucios" 302 pueden ser menos portátiles que los dispositivos de almacenamiento 106. Por ejemplo, en el caso de una falla no relacionada de un controlador RAID, los dispositivos de almacenamiento 106 pueden ser reubicados a y accedidos por un controlador RAID diferente, pero los indicadores "sucios" 302 pueden permanecer dentro de la memoria no volátil separada 306 del controlador RAID fallido que es completamente operacional. De hecho, puede estar poco claro para el usuario que dispositivos de almacenamiento 106 que no estuvieron involucrados en la falla del controlador RAID pueden ser inconsistentes, y por lo tanto pueden tener que limpiarse, cuando se inserta en un controlador RAID separado. Estas y otras ventajas pueden exhibirse por muchas técnicas que se parecen aquellas en la Figura 3 para facilitar la recuperación del grupo de almacenamiento 102 de una falla 118 al rastrear el estado de escritura 202 al grupo de almacenamiento 102.
B. Técnicas Presentadas Aquí se presentan técnicas para rastrear el estado de escrituras 202 a un grupo de almacenamiento 102 proporcionado por un grupo de dispositivos de almacenamiento 106 que pueden permitir un procedimiento de limpieza rápido en una forma tolerante a falla, de alto rendimiento, y económica. De acuerdo con estas técnicas, el grupo de almacenamiento 102 puede distribuirse a regiones de un tamaño de región particular (por ejemplo, regiones de un gigabyte), y un descriptor de región puede generarse para registrar la espera de escrituras 110 para una o más ubicaciones 108 dentro de cada región. El descriptor de región puede almacenarse en el mismo dispositivo de almacenamiento 106 en donde están localizadas las regiones, o en un dispositivo de almacenamiento diferente 106 del grupo de almacenamiento 102. Cuando se recibe una solicitud para una escrituras 110 para una ubicación particular 108, una modalidad de estas técnicas puede identificar primero la región que comprende la ubicación 108, y entonces puede determinar si el indicador de región de la región que comprende la ubicación 108 ya está marcado como sucia. Si no es así, la modalidad puede actualizar primero el indicador de región para marcar la región como sucia; pero si es así, entonces la modalidad puede proceder con la escritura 110 sin tener que actualizar el indicador de región. Después que completa la escritura 110, la modalidad puede marcar el indicador de región de la región como limpio. Notablemente, la modalidad puede configurarse para actualizar la región como limpia en una forma rápida, sino puede esperar un periodo breve antes de hacerlo así, y en caso de solicitudes subsecuentes para escrituras 110 a la misma región (ya sea una sobre-escritura de la misma ubicación 108, o una escritura 110 para un grupo de datos 104 secuencialmente después o un grupo de datos 104 de otra forma cercano) rápidamente sigue la primera escritura 110. Este retraso puede evitar una reescritura del indicador de región para "limpiar" seguido rápidamente por reescribir el indicador de región como "sucio", y por lo tanto puede economizar accesos al dispositivo de almacenamiento 106 además del desempeño y vida del dispositivo de almacenamiento 106.
La Figura 4 presenta una ilustración de un escenario ilustrativo que representa el rastreo de escrituras 110 pendientes para un grupo de almacenamiento 102 proporcionado por dos dispositivos de almacenamiento 106 de acuerdo con las técnicas aquí presentadas, en donde los dispositivos de almacenamiento 106 se coordinan para almacenar copias idénticas del grupo de almacenamiento 102 (por ejemplo, un reflejo del grupo de almacenamiento 102 de acuerdo con un esquema RAID 1). En este escenario ilustrativo 400, y de acuerdo con estas técnicas, el grupo de almacenamiento 102 proporcionado por los dispositivos de almacenamiento 106 está distribuido a regiones 402 de un tamaño de región (por ejemplo, regiones de un gigabyte). Cada región 402 comprende los grupos de datos 104 almacenados dentro de un grupo de ubicaciones 108 (por ejemplo, un rango de direcciones) dentro del grupo de almacenamiento 102. En cada dispositivo de almacenamiento 106, puede generarse un descriptor de región 404, en donde pueden marcarse regiones 402 como "sucias" o "limpias" de acuerdo con el estado pendiente o completado de escrituras 110 realizadas en los grupos de datos 104 que comprenden la región 402. Por ejemplo, en un primer punto del tiempo 408, se solicita una primer escritura 110 para una primera ubicación 108 en el grupo de almacenamiento 102, y los dispositivos de almacenamiento 106 empiezan a realizar l a primer escritura 110 al identificar primero una región 402 que comprende la primera ubicación 108, y entonces marcando 406 la región 402 como sucia en el descriptor de región 404. Habiendo marcado la región 402 como sucia, los dispositivos de almacenamiento 106 entonces inician la primera escritura 110 a la ubicación 108 en el grupo de almacenamiento 102. En un segundo punto del tiempo 410, el primer dispositivo de almacenamiento 106 puede haber completado la primera escritura 110, pero pudo aún no marcar la región 402 como limpia en el descriptor de la región 404. Sin embargo, debido a la sincronía imperfecta de los dispositivos de almacenamiento 106, en el segundo punto de tiempo 410, el segundo dispositivo de almacenamiento 106 aún pudo no haber completado la primera escritura 110.
Como además se ilustra en el escenario ilustrativo 400 de la Figura 4, en un tercer punto de tiempo 412, puede solicitarse una segunda escritura 110 a una ubicación diferente 108 en el grupo de almacenamiento 102. Por lo tanto los dispositivos de almacenamiento 106 identifican la región 402 asociada con la ubicación 106 de la segunda escritura 110, y determinen que esta ubicación 106 también está dentro de la primera región 402. Además, debido que la primera región 402 ya está marcada como sucia en el descriptor de región 404, los dispositivos de almacenamiento 106 se detienen al actualizar redundantemente el descriptor de región 404. Los dispositivos de almacenamiento 106 entonces empiezan a realizar la escritura 110, y el segundo dispositivo de almacenamiento 106 eventualmente completa la escritura 110 y entonces (tal vez después de un breve retraso, durante el cual no se solicitan escrituras 110 adicionales a la primera región 402) actualiza el descriptor de región 404 para marcar la primera región 402 como limpia. Sin embargo, la escritura 110 realizada por el primer dispositivo de almacenamiento 106 se interrumpe por una falla 118 (por ejemplo, una desconexión temporal, un choque de software, o una falla de energía). En un cuarto punto de tiempo 414, el primer dispositivo de almacenamiento 106 se vuelve accesible de nuevo, y la tarea de limpieza 416 al primer dispositivo de almacenamiento 106 inicia para asegurar la corrección de escritura 110 que se interrumpieron por la falla 118 y que, si no se corrige, puede presentar una inconsistencia potencialmente catastrófica 122 en el grupo de almacenamiento 102 (por ejemplo, una divergencia de las copias idénticas del grupo de almacenamiento 102 almacenado en el dispositivo de almacenamiento 106). Sin embargo, en lugar de comparar todos los grupos de datos 104 con el grupo de datos correspondientes 104 del segundo dispositivo de almacenamiento 106, la limpieza 416 puede utilizar el descriptor de región 404 puede limpiar únicamente las regiones 402 marcadas como sucias. De esa forma, en el cuarto punto de tiempo 414, debido a que se marca únicamente la primera región 402 como sucia en el descriptor de región 404 del primer dispositivo de almacenamiento 106, la limpieza 416 puede comparar los grupos de datos 102 de la primera región 402 con los grupos de datos 416 correspondientes del segundo dispositivo de almacenamiento 106, y al encontrar una inconsistencia, puede copiar el grupo de datos 104 sobre el grupo de datos incorrectos 104 sobre el primer dispositivo de almacenamiento 106.
En esta forma, las técnicas aquí presentadas, un ejemplo de las cuales se ilustra en el escenario ilustrativo 400 de la Figura 4, puede permitir una limpieza 416 de un dispositivo de almacenamiento 106 siguiendo una falla 118. Además, estas técnicas no logran una limpieza 416 en una forma ventajosa cuando se compara con otras técnicas, incluyendo aquellas ilustradas en la Figura 3. Como un primer ejemplo ilustrativo, la limpieza 416 del p rimer dispositivo de almacenamiento 106 está limitada a los grupos de datos 104 almacenados en el subgrupo de regiones 402 en donde al menos una escritura 110 ha ocurrido recientemente en el tiempo de un choque 118; por ejemplo, debido que la segunda región 402 no ha experimentado una escritura 110 por un rato, la segunda región 402 no se incluyen la limpieza 416. Como una segunda ventaja ilustrativa, la marcación 406 de la información sucia y limpia para regiones 406 que comprenden un grupo de regiones 402, así como la marcación diferida de tales regiones 402 como limpia siguiendo una escritura 110, puede reducir significativamente la pérdida de desempeño causada por el rastreo de regiones sucias. Por ejemplo, al dejar la marcación 406 de la primera región 402 como sucia por un breve período después de la primera escritura 110, los dispositivos de almacenamiento 106 son capaces de omitir la marcación 406 de la región 402 como sucia, únicamente para marcarla como asociada de nuevo al recibir la segunda escritura 110 para otra ubicación 106 dentro de la misma región 402, reduciendo con ello los accesos por cada dispositivo de almacenamiento 106 al descriptor de región 404 de tres a uno. Esta ganancia de eficiencia pudo no haber sido lograda si la información de región sucia se rastreó por ubicación 108 o si los dispositivos de almacenamiento 106 actualizaron rápidamente el descriptor de región 404 después de cada escritura 110 (por ejemplo, como se ilustró en la primera técnica ilustrativa 300 de la Figura 3). Como una tercera ventaja ilustrativa, el almacenamiento del descriptor de región 404 para las regiones 406, como opuesto a ubicaciones individuales 108, no reduce significativamente la capacidad disponible de los dispositivos de almacenamiento 106 (en contraste con la primera técnica ilustrativa 300 de la Figura 3, en donde el 50% de la capacidad total del dispositivo de almacenamiento 106 se utiliza para rastrear el estado sucio o limpio de la capacidad disponible). Como una cuarta ventaja ilustrativa, el rastreo de regiones sucias se logra sin hardware adicional, y de esa forma reduce el costo, complejidad, consumo de energía, y oportunidades para falla de las técnicas de rastreo cuando se compara con la segunda técnica ilustrativa 304 de la Figura 3. Estas y otras ventajas ilustrativas se pueden lograr a través del rastreo de información de región sucia para dispositivos de almacenamiento 106 que proporcionan un grupo almacenamiento 102 de acuerdo con las técnicas aquí presentadas.
C. Modalidades Ilustrativas La Figura 5 presenta una ilustración de una la modalidad ilustrativa de estas técnicas, ilustrada como un método ilustrativo 500 para registrar escrituras pendientes a un grupo de almacenamiento 104. El método ilustrativo 500 puede implementarse, por ejemplo, como un grupo de instrucciones almacenado en un componente de memoria de un dispositivo (por ejemplo, un circuito de memoria, una placa de una unidad de disco duro, un componente de memoria de estado sólido, o un disco magnético u óptico) que, cuando se ejecuta por un procesador de un dispositivo, hace que el dispositivo realice las técnicas aquí presentadas. El método ilustrativo 500 comienza en 502 e involucra ejecutar 504 las instrucciones en el procesador. Específicamente, las instrucciones están configuradas para, al menos en un dispositivo de almacenamiento 106, generar 506 un descriptor de región 504 que distribuye el grupo de almacenamiento 102 almacenado en el dispositivo de almacenamiento 106 en al menos dos regiones 402 de acuerdo con un tamaño de región. Las instrucciones también están configuradas para, al recibir 508 un grupo de datos 104 para almacenarse en una ubicación 108 en el grupo de almacenamiento 102, identificar 510 una región 402 dentro del grupo de almacenamiento 102 que comprende la ubicación 108 del grupo de datos 102; marcar 502 a la región 402 como sucia en el descriptor de región 404; e iniciar 514 almacenando el g rupo de datos 104 en la ubicación 108 en el grupo almacenamiento 102. Las instrucciones también van a estar configuradas para, después de almacenar el grupo de datos 104 en la ubicación 108 en el grupo de almacenamiento 102, marcar 516 la región 402 como limpia en el descriptor de región 404. De esta forma, las instrucciones logran el registro de escrituras 110 pendientes dentro del grupo de almacenamiento 102 de acuerdo con las técnicas aquí presentadas, y el método ilustrativo 500 así termine en 518.
La Figura 6 presenta una ilustración de una segunda modalidad ilustrativa de estas técnicas, ilustradas como un método ilustrativo 600 de limpieza 416 de un grupo de almacenamiento 102 almacenado por al menos un dispositivo de almacenamiento 106 accesible para una computadora que tiene un procesador. El método ilustrativo 600 puede ímplementarse, por ejemplo, como u n g rupo de instrucciones almacenadas en un componente de memoria de un dispositivo (por ejemplo, un circuito de memoria, una placa de una unidad de disco duro, un componente memoria de estado sólido, o un disco magnético u óptico) que, cuando se ejecuta por un procesador de un dispositivo, hace que el dispositivo realice las técnicas aquí presentadas. El método ilustrativo 600 comienza en 602 e involucra ejecutar 604 las instrucciones en el procesador. Específicamente, las instrucciones están configuradas para, desde al menos un dispositivo de almacenamiento 106, recuperar 606 un descriptor de región 404 que distribuye el grupo de almacenamiento 102 almacenado en el dispositivo de almacenamiento 106 al menos en dos regiones 402 de acuerdo con un tamaño de región. Las instrucciones también están configuradas para, regiones 402 respectivas 608 marcadas como sucias en el descriptor de región 404, iniciar 610 limpieza 416 de los grupos de datos 104 dentro de la región 402; y al completar la limpieza los grupos de datos 104 dentro de una región 402, marcar 612 la región 402 como limpia en el descriptor la región 404. De esta forma, las instrucciones logran la limpieza del grupo de almacenamiento 102 al corregir inconsistencias 122 causadas por escrituras 110 interrumpidas por una falla de acuerdo con las técnicas aquí presentadas, y el método ilustrativo 600 así termina en 518.
La Figuras 7 presenta una tercera modalidad ilustrativa de estas técnicas, ilustradas como un medio legible por computadora ilustrativo 700 que comprende instrucciones ejecutables por procesador 702 configuradas para aplicar las técnicas aquí presentadas. Cada medio legible por computadora puede incluir, por ejemplo, medios de almacenamiento legibles por computadora que involucran un dispositivo tangible, tal como semiconductor de memoria (por ejemplo, un semiconductor que utiliza memoria de acceso aleatorio estática (SRAM), memoria de acceso aleatorio dinámica (DRAM), y/o tecnologías de memoria de acceso aleatorio dinámica sincrónica (SDRAM)), una placa de una unidad de disco duro, o dispositivo de memoria flash, o un disco magnético u óptico (tal como un CD-R, DVD-R, o disco flexible), que codifica un grupo de instrucciones legibles por computadora que, cuando se ejecutan por un procesador 712 de un dispositivo 710, hacen que el dispositivo 710 implemente las técnicas aquí presentadas. Tales medios legibles por computadora también pueden incluir (como una clase de tecnologías que son distintas de los medios de almacenamiento legibles por computadora) varios tipos de medios de comunicación, tales como una señal que puede propagarse a través de varios fenómenos físicos (por ejemplo, una señal electromagnética, una señal de onda de sonido, o una señal óptica) y en varios escenarios por cable (por ejemplo, a través de un Ethernet o cable de fibra óptica) y/o escenarios inalámbricos (por ejemplo, una red de área local inalámbrica (WLAN) tal como Wi-F¡, una red de área personal (PAN) tal como Bluetooth, o una red celular o de radio), y que codifica un grupo de instrucciones legibles por computadora que, cuando se ejecutan por un procesador de un dispositivo, hacen que el dispositivo implemente las técnicas aquí presentadas. En tal modalidad, las instrucciones ejecutables por procesador 702 pueden configurarse para realizar un método para registrar escrituras 110 pendientes para dispositivos de almacenamiento 106 que comprenden un grupo de almacenamiento 102, tal como el método ilustrativo 500 de la Figura 5. En otra modalidad, las instrucciones ejecutables por procesador 702 pueden configurarse para realizar un método para limpiar el dispositivo de almacenamiento 106 que comprende un grupo de almacenamiento 102 que utiliza un descriptor de región 404 almacenado al menos en uno de los dispositivos de almacenamiento 106, tal como el método ilustrativo 600 de la Figura 6. Pueden preverse muchos medios legibles por computadora por aquellos expertos en la técnica que están configurados para operar de acuerdo con las técnicas aquí presentadas.
D. Variaciones Las técnicas aquí discutidas pueden preverse con variaciones en muchos aspectos, y algunas variaciones pueden presentar ventajas adicionales y/o reducir desventajas con respecto a otras variaciones de estas y otras técnicas. Además, pueden implementarse algunas variaciones en combinación, y algunas combinaciones pueden representar ventajas adicionales y/o desventajas reducidas a través de cooperación sinergística. Las variaciones pueden incorporarse en varias modalidades (por ejemplo, el método ilustrativo 500 de la Figuras 5 y el método ilustrativo 600 de la Figura 6) para conferir ventajas individuales y/o sinergísticas en tales modalidades.
D1. Escenarios Un primer aspecto que puede variar entre modalidades de estas técnicas se refiere a los escenarios en donde pueden utilizarse tales técnicas. Como una primera variación de este primer aspecto, estas técnicas pueden utilizarse en conjunto con muchos tipos de grupos de almacenamiento 102 que comprenden varios tipos de grupos de datos 104, incluyendo sistemas de almacenamiento binario que almacenan varios tipos de objetos binarios; sistemas de archivo que almacenan archivos; bibliotecas de medios que almacenan objetos de medios; sistemas de objeto que almacenan muchos tipos de objetos; bases de datos que almacenan registros; y sistemas de correo electrónico que almacenan mensajes de correo electrónico. Como una segunda variación de este primer aspecto, estas técnicas pueden utilizarse con muchos tipos de dispositivos de almacenamiento 106, incluyendo unidades de disco duro, dispositivos de almacenamiento de estado sólido, circuitos de memoria no volátiles, dispositivos de almacenamiento basados en cinta, y discos magnéticos y ópticos. Tales dispositivos de almacenamiento 106 también puede conectarse directamente a un dispositivo 710 (tal como una computadora) que implemente estas técnicas; pueden ser accesibles a través de una red de área local por cable o inalámbrica (por ejemplo, una red Wi-Fi 802.11 o una conexión ad-hoc, una conexión infrarroja); y/o puede ser accesible a través de una red de área ancha por cable o inalámbrica (por ejemplo, una red celular o Internet). Además, pueden utilizarse estas técnicas con dos o más dispositivos de almacenamiento 106 que operan independientemente (por ejemplo, dispositivos de almacenamiento 106 que se acceden independientemente a través de un procedimiento de software); que operan con interoperación suelta (por ejemplo, dispositivos de almacenamiento 106 que operan independientemente pero que se informan de y pueden comunicarse con los otros dispositivos de almacenamiento 106 que comparten el grupo de almacenamiento 102); o que operan con interoperación justa (por ejemplo, un controlador de Disposición Redundante de Discos Económicos (RAID) que maneja varios dispositivos de almacenamiento 106 como componentes de un sistema almacenamiento). Como una cuarta variación de este primer aspecto, pueden implementarse porciones de todas estas técnicas dentro de un o más componentes dentro del ambiente de cómputo, tal como un grupo de instrucciones de software almacenadas en un medio volátil o no volátil de una computadora o dispositivo que tiene acceso a los dispositivos de almacenamiento 106 (por ejemplo, un procedimiento de sistema operativo o un controlador de hardware); a través de un sistema de almacenamiento configurado para interconectarse con los dispositivos de almacenamiento 106 (por ejemplo, un controlador RAID); o en dispositivos de almacenamiento 106 respectivos del grupo de almacenamiento 102.
Con una quinta variación de este primer aspecto, pueden utilizarse muchos tipos de técnicas de limpieza para limpiar los grupos de datos 104 dentro de una región 102. Como un primer ejemplo, y como se ilustra en el escenario ilustrativo 100 de la Figura 1, el grupo de almacenamiento 102 puede almacenar (en el mismo dispositivo de almacenamiento 106 y/o en diferentes dispositivos de almacenamiento 106) copias idénticas de un grupo de datos 104. En esta variación, puede utilizarse una técnica de limpieza de reflejo para limpiar una copia de un grupo de datos 104 al compararla con otra copia del grupo de datos 104 para detectar y corregir inconsistencias 122 (por ejemplo, para grupos de datos respectivos 104 de la región 402 que corresponde con un grupo de datos de reflejo almacenado en una segunda región 402 del grupo de almacenamiento 102, sincronizar el grupo de datos 104 con el grupo de datos de reflejo). Como un segundo ejemplo, y como se ilustra en el escenario ilustrativo 200 de la Figura 2, el grupo de almacenamiento 102 puede almacenar (en el mismo dispositivo de almacenamiento 106 y/o en dispositivos de almacenamiento diferentes 106) verificadores 202 de grupos de datos respectivos 104, tal como una suma de verificación o código hash, que puede compararse con los contenidos de un grupo de datos 104 (y posiblemente otros grupos de datos 104 en el grupo de almacenamiento 102) para detectar inconsistencias 122. Pueden incluirse muchos tipos de verificadores en tales escenarios. Por ejemplo, verificadores más simples 202, tal como un bit de paridad, pueden calcularse eficientemente para un grupo de datos 104, y puede llevar una detección rápida de la presencia o ausencia de una inconsistencia 122 en un grupo de datos 104. Alternativamente, pueden utilizarse verificadores complejos 202 que presentan características adicionales, tal como confiabilidad aumentada, detalla aumentado (por ejemplo, que indica la porción de un grupo de datos 104 que es inconsistente), y/o capacidades de corrección de error. En estas variaciones, puede utilizarse una técnica de limpieza de verificador para limpiar un grupo de datos 104 al verificar el verificador del grupo de datos 104 para identificar y corregir posiblemente inconsistencias 122. Como un tercer ejemplo, puede limpiarse un grupo de datos 104 simplemente al inspeccionar los contenidos, tales como corrupción de un grupo de datos 104 que no existen en un tiempo previo. Cuando se detectan inconsistencias 122, pueden utilizarse técnicas de reconstrucción para reparar los datos corruptos y/o salvar los datos restantes en el grupo de datos 104. Aquellos expertos en la técnica pueden identificar muchos tipos y variaciones de escenarios en donde las técnicas aquí presentadas pueden ser útiles.
D.2 Variaciones Estructurales de Descriptor de Región Un segundo aspecto que puede variar entre modalidades de estas técnicas se refiera a la naturaleza del descriptor de región 404. Como una primera variación de este segundo aspecto, el grupo de almacenamiento 102 puede distribuirse en regiones 402 identificadas dentro del descriptor de región 404 en muchas formas. Como un primer ejemplo de esta primera variación, la selección de un tamaño de región puede afectar varios aspectos de estas técnicas. Por ejemplo, se puede apreciar (particularmente en vista de las técnicas ilustrativas ilustradas en la Figura 3) que el rastreo del estado sucio o limpio de cada ubicación 108 en el grupo de almacenamiento 102 puede resultar en una pérdida considerable de capacidad del grupo de almacenamiento 102, tal vez tanto como 50%, y, de hecho, puede no mejorar significativamente la duración de procedimiento de limpieza, ya que escanear todo el grupo de almacenamiento 102 para leer los bits sucios y limpios para cada bit puede durar tanto como el escaneo del grupo de almacenamiento completo 102 para detectar inconsistencias 122. También se puede apreciar que rastrear los estados sucios o limpios para una porción muy grande del grupo de almacenamiento 102, tal como almacenar una marcación "limpia" o "sucia" individual 406 para cada volumen, cada partición, o cada dispositivo de almacenamiento 106, puede no reducir aceptablemente la naturaleza altamente prolongada de la recuperación, ya que una escritura a una ubicación individual 206 en un gran volumen o dispositivo de almacenamiento 106 puede llevar a una limpieza 416 de todo el volumen o dispositivo de almacenamiento 106. En vista de estas consideraciones, se puede apreciar que la selección del tamaño de región puede afectar considerablemente el desempeño de las técnicas aquí presentadas. Sin embargo, puede existir un rango de opciones aceptables para el tamaño de región, cada uno de los cuales puede presentar algunas transferencias. Por ejemplo, seleccionar un tamaño de región mayor puede permitir el rastreo de regiones "sucias" y "limpias" a un nivel más grueso de granularidad que reduce el consumo de la capacidad del grupo de almacenamiento 102 para el uso de rastrear escrituras pendientes 110, y también reduce la frecuencia con la cual se actualiza el descriptor de región 404 para marcar regiones 402 como limpias o sucias, pero también puede adaptar una limpieza más prolongada 416 después de una falla 118, ya que la marcación 406 de una región 402 como sucia resulta en la limpieza 416 de una región más grande 402. De manera inversa, seleccionar un tamaño de región más pequeño puede resultar en el rastreo de escrituras pendientes 110 con granularidad más fina, que permite una limpieza comparativamente rápida 416 después de una falla 118 debido a especificaciones más limitadas y precisas de los grupos de datos 104 que se van a limpiar, pero puede resultar en un mayor consumo de la capacidad del grupo de almacenamiento 102 (ya que el descriptor de región 404 contiene información para más regiones 402) y/o un castigo de desempeño mayor en la operación de rutina del grupo de almacenamiento 102 (ya que un grupo de escrituras 110 para varias ubicaciones 108 probablemente va a estar asociado con más regiones 402 que cubren respectivamente porciones más pequeñas de grupo de almacenamiento).
En vista de estas consideraciones, muchas técnicas pueden utilizarse para seleccionar o especificar el tamaño(s) de región de las regiones 402 del grupo de almacenamiento 102. Por ejemplo, un tamaño de región puede definirse fijamente para un grupo de almacenamiento particular 102 o dispositivo de almacenamiento 106. Diferentes tamaños de región también puede seleccionarse para diferentes dispositivos de almacenamiento 106 (por ejemplo, dispositivos de almacenamiento 106 utilizados en circunstancias en donde las características de desempeño no afectan significativamente el ambiente de cómputo, tal como archivando, que puede utilizar un tamaño de región más pequeño que reduce más significativamente el desempeño pero que proporciona limpieza más rápida 416 y recuperación de fallas 118) y/o para diferentes grupos de almacenamiento 102 (por ejemplo, datos para los cuales la accesibilidad es de gran valor pueden rastrearse utilizando un tamaño de región más pequeño que permite limpieza más rápida 416 y recuperación de fallas 118), y puede incluso utilizar diferentes tamaños de región para diferentes r egiones 402 en el mismo grupo de datos 102. El tamaño de región también puede ajustarse basándose en las características de desempeño de los dispositivos de almacenamiento 106, y/o grupos de almacenamiento 102, y/o basándose en preferencias de usuario. Alternativa o adicionalmente, puede permitirse que un usuario elija un tamaño de región; por ejemplo, una modalidad puede presentar varias opciones a un usuario para tamaños de región, y puede predecir un tiempo de recuperación involucrado en recuperarse de una falla 118 en vista de cada tamaño de región. Como otra alternativa, el usuario puede especificar un periodo de recuperación aceptable máximo, y una modalidad de estas técnicas puede seleccionar un tamaño de región que probablemente permite recuperación de fallas 118 dentro del periodo de recuperación aceptable máximo.
Como una segunda variación de este segundo aspecto, el descriptor de región 404 puede estructurarse en varias formas, por ejemplo, como una disposición, una lista enlazada, un cuadro, una base de datos, o un mapa de bits. Varias estructuras de datos pueden presentar ventajas particulares. Como tal ejemplo, para grupos de almacenamiento 102 que comprenden direcciones almacenadas con un sistema de dirección que tiene una dimensión individual (por ejemplo, como una secuencia individual, numérica de direcciones), el descriptor de región 404 puede implementarse como una disposición de región sucia que comprende un grupo de entradas de disposición que corresponden secuencialmente a las regiones 402 del grupo de almacenamiento 102, y pueden marcar una región 402 como sucia o limpia simplemente al acceder a la entrada de disposición de la disposición de región sucia, logrando con ello un tiempo de acceso 0(1) a la marcación 406 para cualquier región 402. Alternativamente, el descriptor de región 404 puede implementarse como un desplazamiento secuencial, en donde cada marcación 406 se escribe en secuencia siguiendo la marcación previamente ejecutada 406 sin importar la ubicación 108 en el grupo de almacenamiento 102 del grupo de datos 104 así marcado. Este descriptor de región 404 puede resultar en acceso de lectura más lento a la marcación 406 para una región particular 402 (ya que identificar la marcación actual 406 para una entrada adapta el escaneo a una porción significativa del desplazamiento, y tal vez el desplazamiento completo, con el fin de encontrar una entrada), pero puede permitir la ventaja de desempeño adicional de escrituras secuenciales al descriptor de región 402. Adicionalmente, la semántica de los contenidos del descriptor de región 404 puede contener información en diferentes formas. Por ejemplo, el descriptor de región 404 puede marcar una región 402 como "limpia" al marcar específicamente 406 un registro de bit que representa la región 402, o también puede hacerlo al desalojar del descriptor de región 404 registros para regiones 402 que se han I impiado. Estas variaciones representan una diferencia semántica sobre si una región 402 que no tiene un registro en el descriptor de región 404 ha sido marcada como limpia (tal vez recientemente), o simplemente no ha sido marcada ya sea sucia o limpia (por ejemplo, no ha sido sometido a la escritura 104 por una cantidad de tiempo significativa).
Como una tercera variación de este segundo aspecto, el descriptor de región 404 puede indicar las ubicaciones 108 de regiones 402 dentro del grupo de almacenamiento 102 en varias formas. La Figura 8 presenta una ilustración de un escenario ilustrativo 800 que representa algunas técnicas diferentes para especificar las ubicaciones 106 dentro de un grupo de almacenamiento 102 que se representan por regiones respectivas 402. En este escenario ilustrativo 800, un dispositivo de almacenamiento 106, tal como una unidad de disco duro, se configura para almacenar datos que comprenden al menos una porción de un grupo de almacenamiento 102. El dispositivo de almacenamiento 106 está configurado para almacenar datos en direcciones físicas respectivas 802, y contiene hardware que se traslada a las direcciones en ubicaciones físicas en el medio de almacenamiento (por ejemplo, placa, sector, pista). Los datos almacenados en el dispositivo de almacenamiento 106 también pueden almacenarse de acuerdo con un formato estandarizado; por ejemplo, los datos almacenados en el medio físico pueden comenzar con un cuadro de división, que específica las ubicaciones y descripciones de una o más divisiones 804, cada una de las cuales comprende uno o más volúmenes lógicos 806 (por ejemplo, las unidades presentadas en el ambiente operativo de una computadora). El grupo de almacenamiento 102 puede almacenarse dentro de uno o más volúmenes lógicos 806, y puede distribuir grupos de datos 104 en un volumen lógico 806 o a través de varios volúmenes lógicos 806. Por consiguiente, un descriptor de región 404 puede identificar regiones 402 para varias ubicaciones 108 dentro del grupo de almacenamiento 102 en varias formas. Por ejemplo, el descriptor de región 404 puede utilizar una región física que hace referencia al esquema que identifica ubicaciones físicas de regiones respectivas 402 en los dispositivos de almacenamiento 106 del grupo de almacenamiento 102. Como el primero de tales ejemplos, el descriptor de región 404 puede implementarse como un primer cuadro de región 808 que comprende registros que indica un rango de ubicaciones físicas 106 en el medio de almacenamiento del dispositivo de almacenamiento 106 que se representan por cada región 402. Como un segundo ejemplo, el descriptor de región 404 puede implementarse como un segundo cuadro de región 810 que comprende registros que indican, para regiones respectivas 402, la partición 804 y el desplazamiento dentro de la partición 804 en donde comienza cada región 402. El descriptor de región 404 también puede almacenar y representar el tamaño(s) de región de una o más regiones 402 (por ejemplo, como parte de un registro de región de un descriptor separado del grupo de almacenamiento 102). Como un tercer ejemplo, el descriptor de región 404 puede implementarse como un mapa de bits de región 812, en donde pueden distribuirse particiones 804 en una serie de regiones 402 de un tamaño de región particular, y el mapa de bits puede a Imacenar un indicador de un bit del estado "sucio o "limpio" de la región 402. Alternativamente, el descriptor de región 404 puede utilizar un esquema de referencia de región lógica que identifica ubicaciones lógicas de regiones respectivas 402 dentro de la disposición lógica de datos en el grupo de almacenamiento 102. Como un ejemplo, el descriptor de región 404 puede implementarse como un tercer cuadro de región 814 que identifica la ubicación lógica dentro de cada volumen lógico 806 en donde cada región 402 comienza. Se puede apreciar que técnicas de dirección que se identifican más cercanamente con las ubicaciones físicas 106 en el medio de almacenamiento del dispositivo de almacenamiento 106 pueden involucrar poco cálculo para el dispositivo de almacenamiento 106 pero más cálculo para procedimientos que acceden a las regiones 402 lógicamente, y viceversa.
Con una cuarta variación de este segundo aspecto, modalidades de estas técnicas pueden configurarse para almacenar el descriptor de región 404 en varias ubicaciones en el dispositivo de almacenamiento 106. Como un primer ejemplo de esta cuarta variación, el descriptor de región 404 puede almacenarse en una ubicación particular en el dispositivo de almacenamiento 404 (por ejemplo, en la parte superior de una partición 804 que almacena grupos de datos 104 del grupo de almacenamiento 102, o en una ubicación definida fuera de las particiones 804 que almacena los grupos de datos 104). Como un segundo ejemplo de esta cuarta variación, el descriptor de región 404 puede almacenarse en un primer dispositivo de almacenamiento 106 para rastrear escrituras pendientes 110 para regiones 402 de un segundo dispositivo de almacenamiento 10.
Como una variación de este segundo ejemplo, una modalidad de estas técnicas puede configurarse para almacenar dos o más descriptores de región 404 para el grupo de almacenamiento 102. Como un primer ejemplo de esta quinta variación, dos o más copias idénticas de un descriptor de región 404, que representan el mismo grupo de regiones 402 del grupo de almacenamiento 102, pueden almacenarse en el mismo y/o diferentes dispositivos de almacenamiento 106. El almacenamiento de copias idénticas puede mejorar la tolerancia a falla del grupo de almacenamiento 102 (por ejemplo, en el caso de una falla no recuperable de un dispositivo de almacenamiento 106, una falla de una porción de un dispositivo de almacenamiento 106 que almacena el descriptor de región 404, o una corrupción de los datos dentro de un descriptor de región 404, tal como la ocurrencia de una falla 118 mientras realiza una escritura 110 al descriptor de región 404), puede realizarse recuperación de una falla 118 a través del uso de otra copia del descriptor de región 404. Se puede apreciar que es poco probable que una falla del descriptor de región 404 se catastrófica, debido a que una limpieza completa 416 del grupo de almacenamiento 102 puede realizarse como medición de respaldo, sin embargo puede ser ventajoso almacenar una segunda copia del descriptor de región 404 con el fin de acelerar la recuperación incluso si la primera copia se vuelve corrupta o no disponible. Adicionalmente, puede ser ventajoso almacenar las copias idénticas del descriptor de región 404 en múltiples dispositivos de almacenamiento 106, y/o en diferentes áreas del mismo dispositivo de almacenamiento 106 (por ejemplo, en el caso de daño a una porción del dispositivo almacenamiento 106 en donde se almacena una primera copia del descriptor de región 404, tal como un primer sector físico o una primera porción de un sistema de archivo, una segunda copia idéntica del descriptor de región 404 que ha sido almacenada en una porción diferente al dispositivo de almacenamiento 106 puede ser recuperable y utilízable).
Como un segundo ejemplo de esta quinta variación, pueden almacenarse múltiples copias del descriptor de región 404 para un grupo particular de regiones 402 en uno o más dispositivos de almacenamiento 106, pero más bien que son idénticos en todo momento, los descriptores de región 404 pueden actualizarse secuencialmente para reflejar el estado limpio y sucio del grupo de almacenamiento 102 en diferentes momentos. Esta actualización secuencial puede ser ventajosa, por ejemplo, si ocurre una falla 118 mientras se actualiza una copia del descriptor de región 404 que deja al descriptor de región 404 en un estado inconsistente o corrupto, debido a que la otra copia puede estar disponible para usarse en la limpieza 416 y recuperación. Como un primer escenario de este segundo ejemplo, pueden retenerse dos copias del descriptor de región 404 en un dispositivo de almacenamiento 104 que representan ambos el mismo grupo de regiones 402; pero con el fin de actualizar los descriptores de región 404, puede ocurrir una primera actualización al sobrescribir una copia del descriptor de región 404, y la siguiente actualización puede ocurrir a sobrescribir la otra copia del descriptor de región 404. Además, cuando una modalidad de estas técnicas sobrescribe un descriptor de región 404, la modalidad también puede escribir un verificador 202 (por ejemplo, una suma de verificación) para el descriptor de región 404, y un indicador de secuencia (por ejemplo, un número entero creciente, o el tiempo de la sobre-escritura). Después de una falla 118, la modalidad puede examinar todos los descriptores de región disponibles 404, y puede seleccionar para usarse en la limpieza el descriptor de región 404 que tiene el indicador de secuencia más alta (por ejemplo, el número entero creciente más alto, o el último tiempo de escritura) que también es válido de acuerdo con su verificador 202. Se puede apreciar que realizar la limpieza 416 utilizando una versión ligeramente monótona del grupo de región puede no resultar en la falla para limpiar una región 402 que tiene una inconsistencia 118 (por ejemplo, un negativo falso), debido a que una escritura 110 a una región 402 únicamente comienza después que la marcación 406 de la región 402 se ejecuta completamente al grupo de almacenamiento 102 en la forma de un descriptor de región completamente escrito 404 que tiene un indicador de secuencia más alto y un verificador válido 202, así una falla 118 mientras escribe el descriptor de región 406 no resulta en la falla para registrar una escritura pendiente 110. De manera inversa, utilizar un descriptor de región monótona 402 puede resultar en un positivo falso (por ejemplo, una falla 118 durante la escritura de un descriptor de región 404 puede resultar en la pérdida de una marcación 404 de una región anteriormente sucia 404 como limpia, y la región 404 puede tratarse incorrectamente como sucia durante la recuperación debido a la marcación 406 encontrado en el descriptor de región monótona 404), pero esta imprecisión simplemente resulta en una recuperación marginalmente prolongada que involucra la limpieza 416 de una región 404 que se conoció por estar limpia.
Alternativa o adicionalmente, dos o más copias de un descriptor de región 404 para un grupo de regiones 402 pueden almacenarse redundante mente en cada uno de los dispositivos de almacenamiento 106 de un grupo de almacenamiento 102. Con el fin de actualizar el descriptor de región 404 para el grupo de almacenamiento 102, una modalidad puede iniciar una sobre-escritura del descriptor de región 404 en paralelo en todos los dispositivos de almacenamiento 106. Adicionalmente, cada dispositivo de almacenamiento 106 puede incluir un verificador 202 y un indicador de secuencia con el descriptor de región 404 en caso de que ocurra una falla 118 mientras uno o más de los dispositivos de almacenamiento 106 está actualizando el descriptor de región 106. La recuperación de una falla 118 de uno o más dispositivos de almacenamiento 106 del grupo de almacenamiento 102 puede involucrar examinar primero todos los descriptores de región disponibles 106 para identificar, entre todas las copias que se validan por los verificador respectivos 202, la copia que tiene el indicador de secuencia más alto. De hecho, pues ser ventajoso configurar el grupo de almacenamiento 102 para almacenar dos copias del descriptor de región 494 en cada dispositivo de almacenamiento 106; por ejemplo, en el caso que ocurra una falla 118 mientras se actualizan los descriptores de región 404 en todos los dispositivos de almacenamiento 106, la copia ligeramente monótona en cualquier dispositivo de almacenamiento 106 puede ser útil. Alternativamente, puede ser similarmente ventajoso no actualizar todos los descriptores de región 404 al mismo tiempo, sino realizar una primera actualización de los descriptores de región 404 a las copias almacenadas en un primer subgrupo de los dispositivos de almacenamiento 106, y realizar una siguiente actualización de los descriptores de región 404 a las copias almacenadas en un segundo subgrupo de dispositivos de almacenamiento 106.
Como un tercer ejemplo de esta quinta variación, un grupo de almacenamiento 102 puede incluir dos o más descriptores de región 404 que registran respectivamente actualizaciones para diferentes regiones 402 del grupo de almacenamiento 102. Como un primer ejemplo, un primer descriptor de región 404 puede registrar información de región sucia y limpia para regiones 402 del grupo de almacenamiento 102 almacenado en el primer dispositivo de almacenamiento 104, y un segundo descriptor de región 404 puede registrar información de región sucia y limpia para regiones 402 del grupo de almacenamiento 102 almacenado en el segundo dispositivo de almacenamiento 104. Como un segundo ejemplo, después de distribuir el grupo de almacenamiento 102 en regiones 402, una modalidad de estas técnicas puede generar dos o más descriptores de región 404 cada uno que almacena la información "sucia" y "limpia" para un grupo de región, que comprende un subgrupo de regiones 402 (sin importar las ubicaciones físicas de esas regiones 402 entre los dispositivos de almacenamiento 106 del grupo de almacenamiento 102), pueden generarse y almacenarse en uno o más dispositivos de almacenamiento 106. La distribución de regiones 402 en grupos de región puede seleccionarse, por ejemplo, en vista de las características de los grupos de datos 104 respectivos (por ejemplo, un primer grupo de región puede comprender regiones 402 que almacenan datos más valiosos o sensibles, mientras un segundo grupo de región puede comprender regiones 402 que almacenan datos menos valiosos). Alternativa o adicionalmente, tal distribución de las regiones sobre dos o más descriptores de región 404 puede lograrse explícitamente (por ejemplo, al generar dos o más descriptores de región independientes 404 que cada uno representa un grupo designado de regiones 402) o implícitamente (por ejemplo, al distribuir el espacio de almacenamiento para el descriptor de región 404 a través de dos o más distribuciones de espacio, tal como dos o más dispositivos de almacenamiento 106). Además, en algunos escenarios, puede ser deseable rastrear información sucia y limpia únicamente para un subgrupo de regiones 402 del grupo de almacenamiento 102; por ejemplo, las regiones 402 que comprenden datos que son desechables, tales como una memoria caché o índice que, si es corrupto, puede regenerarse de otros datos del grupo de almacenamiento 102, no se pueden rastrear en absoluto.
Como una sexta variación de este segundo aspecto, el descriptor(es) de región 404 puede almacenarse en una forma compatible con las técnicas de sincronización del grupo de almacenamiento 102 para proporcionar varias características y ventajas a los descriptores de región 404, tal como el desempeño aumentado a través de la capacidad de acceder a cualquier copia idéntica del descriptor de región 404 en diferentes dispositivos de almacenamiento 106, y/o tolerancia a falla similar como el grupo de almacenamiento 102 (por ejemplo, si el grupo de almacenamiento 102 implementa una técnica de almacenamiento tolerante a falla, tal como una capacidad para recuperarse de una falla de dispositivos de almacenamiento 106 dentro de una tolerancia a falla del dispositivo de almacenamiento, el descriptor de región 404 p uede almacenarse utilizando la misma técnica de almacenamiento tolerante a falla). Alternativamente, puede almacenarse un descriptor de región 404 en una forma que habilita un grupo separado de técnicas; por ejemplo, los descriptores de región respectivos 404 pueden almacenarse con un verificador del descriptor de región del descriptor de región 404 y actualizarse cuando una región 402 se marca como "limpia" o "sucia" en el descriptor de región 404, y por lo tanto puede permitir una verificación de la integridad del descriptor de región 404. Aquellos expertos en la técnica pueden concebir muchos tipos y formatos de descriptores de región 404 que pueden generarse y utilizarse de acuerdo con las técnicas aquí presentadas.
D3. Variaciones de Uso del Descriptor de Región Un tercer aspecto que puede variar entre modalidades de estas técnicas se refiere al uso del descriptor de región 404 p ara marcar regiones 402 del grupo de almacenamiento 102 como limpias o sucias. Como una primera variación de tercer aspecto, el uso del descriptor de región 404 puede diseñarse para facilitar el manejo de la capacidad del descriptor de región 404. En algunos tipos de descriptores de región 404, la capacidad puede no cambiar a medida que se marcan las regiones 402, tal como el mapa de bits de región 814 en el escenario ilustrativo 800 de la Figura 8; sin embargo, en otros escenarios, la marcación 406 de las regiones 402 puede afectar la capacidad del descriptor de región 404, tal como en los cuadros de región ilustrados en el escenario ilustrativo 800 de la Figura 8. Por ejemplo, si el descriptor de región 404 almacena registros para regiones respectivas 402, el descriptor de región 404 puede marcar una región 402 como "limpia" al desalojar simplemente el registro. Alternativamente, el descriptor de región 402 puede continuar almacenando registros para las regiones 402 marcadas como "limpias", y puede desalojar los registros para regiones "limpias" 402 en un tiempo posterior (por ejemplo, después que ha transcurrido un tiempo de periodo especificado sin otra escritura 110 a la región 402, o cuando se agota la capacidad del descriptor de región 404). Como un segundo ejemplo de este tercer aspecto, la capacidad del descriptor de región 404 puede distribuirse estáticamente (por ejemplo, un descriptor de región de tamaño fijo 404) o dinámicamente (por ejemplo, un descriptor de región reajustable 404 que está distribuido inicialmente con un espacio de descriptor de región, pero que puede expandirse con el llenado del descriptor de región 404 con registros para regiones 402 que juntos agotan la capacidad del descriptor de región 404).
Como una segunda variación de este tercer aspecto, el uso del descriptor de región 404 puede seleccionarse para reducir el número y frecuencia de escrituras 110 al descriptor de región 404. Por ejemplo, debido a que el descriptor de región 404 se almacena en el medio físico de uno o más dispositivos de almacenamiento 106, el actualizar el descriptor de región 404 puede agregar una búsqueda y la escritura 110 al descriptor de región 404 además de la búsqueda y escritura 110 a la ubicación 108 del grupo de datos 104. De esa forma, el descriptor de región 404 se actualiza rápida y automáticamente para reflejar cambios a la marcación "sucia" y "limpia" 406 de varias regiones 402, la inclusión del descriptor de región 404 puede disminuir considerablemente el desempeño del dispositivo de almacenamiento 106 y el grupo de almacenamiento 102, aumentando posiblemente el costo de cada acceso por hasta tres veces. Incluso puede ocurrir degradación de desempeño adicional si una modalidad de estas técnicas accede al descriptor de región 404 para leer el estado "limpio" y "sucio" de regiones respectivas 402 (por ejemplo, con el fin de determinar primero si se marca una región 402 como "limpia" antes de marcarla 406 como "sucia"). Por consiguiente, es deseable reducir los accesos al descriptor de región 404.
Como un primer ejemplo de esta segunda variación, se puede apreciar que la semántica de marca 406, una región 402 como "limpia" y "sucia" de alguna forma es asimétrica. Por ejemplo, puede no ser aceptable diferir un acceso al descriptor de región 404 para marcarlo como "sucio", ya que tal retraso puede enlistar incorrectamente la región 402 como limpia si ocurre una falla durante el retraso (presentando con ello la situación negativa falsa en donde una región 402 que puede ser inconsistente debido a una escritura incompleta 110 durante una falla 118 se marca como limpia, y por lo tanto se excluye de una limpieza 416 durante una recuperación de la falla 118). Sin embargo, puede ser aceptable diferir la marcación 406 de una región 402 como "limpia" después que se han completado las escrituras. Este escenario simplemente lleva un resultado positivo falso, en donde una región 402 que ha sido conocida por ser limpia (por ejemplo, sin escrituras pendientes 110) al momento de falla 118 se incluye en una limpieza 416 durante la recuperación, pero este escaneo únicamente puede aumentar marg inalmente la duración de la limpieza 416 (particularmente si el tamaño de región es pequeño), y no compromete la integridad del grupo de almacenamiento 102. Más aún, una modalidad que marca rápidamente una región 402 como "limpia" después del término de una escritura 110 puede recibir justo después otra solicitud para un escritura 110 para un grupo de datos 104 en la misma región 402 (por ejemplo, un grupo de datos secuencialmente después 104 o una sobre-escritura del mismo grupo de datos 104), y puede tener que volver a marcar la región 402 como "sucia". Ambas marcaciones 406, cada una involucrando un acceso al descriptor de región 404, puede evitarse al diferir la marcación 406 de regiones 402 como "limpia" por un periodo breve, mientras puede elevarse la posibilidad de una segunda escritura 110 inminente a la región 402.
En vista de estas consideraciones, puede configurarse una modalidad de estas técnicas para diferir la marcación 406 de las regiones 402 como "limpia" siguiendo la finalización de escrituras 110 a los grupos de datos 104 almacenados en la región 402. La implementación de ejecución diferida de marcaciones "limpias" 406 al descriptor de región 404 puede lograrse en varias formas. Como un primer ejemplo, este retraso puede ¡mplementarse al proporcionar a una memoria volátil una memoria intermedia de escritura que almacena únicamente marcaciones "limpias" 406 y (periódicamente o a petición) que ejecuta todas esas escrituras como un lote. Por ejemplo, la modalidad puede configurarse para, al terminar de almacenar un grupo de datos 106 en una ubicación 108 dentro de una región 402, identificar la región 402 como limpia; y puede marcar las regiones limpiadas 402 como limpias en el descriptor de región 404 en el dispositivo de almacenamiento 106 al recibir una solicitud para marcar regiones limpiadas 402 como limpias en el descriptor de región 404. Esta solicitud puede comprender, por ejemplo, una solicitud específica por un procedimiento (que incluye el sistema operativo del dispositivo) para nivelar las marcaciones 406, o puede activarse por varios criterios, tales como un criterio de duración de limpiado (por ejemplo, que ejecuta las marcaciones 406 de regiones 402 periódicamente) o un criterio de capacidad del descriptor de región que involucra la capacidad de región sucia del descriptor de región 404 (por ejemplo, ejecutando las marcaciones 406 de regiones 402 cuando el descriptor de región 404 alcanza una capacidad particular, tal como un número designado de marcaciones "limpias" 406 o un umbral de capacidad disponible total del descriptor de región 404, que puede incitar el desalojo de registros "limpios" 406). Como un segundo ejemplo, el retraso puede involucrar mantener una marcación "limpia" 406 por una duración breve, y únicamente ejecutar la marcación "limpia" 406 para el descriptor de región 404 después de una breve duración cuando no se solicitaron escrituras subsecuentes 110 a la misma región 402. De esa forma, una modalidad puede, al recibir una solicitud para escribir 110 a una ubicación 108 en una región 402, determinar primero si la región 402 ya está marcada como limpia en el descriptor de región 404, y entonces marcar la región 402 como sucia únicamente al determinar que la región 492 actualmente está marcada como limpia en el descriptor de región 404.
Como un tercer ejemplo de esta segunda variación, una modalidad de estas técnicas puede reducir el número de acceso a un descriptor de región 404 al implementar una representación de memoria volátil del descriptor de región 404. Por ejemplo, además de almacenar las marcaciones 406 de regiones respectivas 402 en el medio físico de un dispositivo de almacenamiento 106, una modalidad de estas técnicas que operan en un dispositivo también puede almacenar las marcaciones 406 en la memoria volátil del dispositivo. El uso de esta representación puede facilitar la escritura retrasada de lotes de marcaciones "limpias" 406, y la determinación de si una región 406 que se va marcar "limpia" se marque actualmente "limpia" o "sucia" en el descriptor de región en medios 404. De esa forma, la representación puede indicar que además de las regiones 402 marcadas como limpias en el descriptor de región 404 en el dispositivo de almacenamiento 106 y en la representación de memoria volátil, y regiones 402 marcadas como sucias en el descriptor de región 404 en el dispositivo de almacenamiento 106 y en la representación de memoria volátil, algunas regiones 402 pueden marcarse como sucias en el descriptor de región 404 pero pueden marcarse (temporalmente) como limpias en la representación de memoria volátil, y tales marcaciones limpias 406 posteriormente pueden ejecutarse para el descriptor de región de medio 404.
La Figura 9 representa una ilustración de un escenario ilustrativo 900 que representa la implementación y uso de una representación de memoria volátil 902 del descriptor de región 404. En este escenario ilustrativo 900, se configuran dos dispositivos de almacenamiento 106 para reflejar un grupo de almacenamiento 102 al almacenar copias idénticas de los grupos de datos 104 de los mismos (por ejemplo, en la forma de un esquema RAID 1), y con el fin de superar los problemas potenciales causados por la sincronía imperfecta de los dispositivos de almacenamiento 106, un descriptor de región 404 puede generarse en un dispositivo de almacenamiento 902 (por ejemplo, uno o ambos de los dispositivos de almacenamiento 106 que almacenan el grupo de almacenamiento 102, y/u otro dispositivo de almacenamiento 106) y utilizarse para rastrear escrituras 110 pendientes para varias regiones 402 del grupo de almacenamiento 102 de acuerdo con las técnicas aquí presentadas. Sin embargo, además, en una memoria volátil 904, una representación 906 del descriptor de región 404 puede generarse puede inter-operar con el descriptor de región 404 almacenado en el dispositivo de almacenamiento 902. Por ejemplo, en un primer punto de tiempo 908, las escrituras 110 pueden estar pendientes para grupos de datos 104 distribuidos dentro de la segunda y cuarta regiones 402 del grupo de almacenamiento 102. Al recibir las solicitudes para las escrituras 110, una modalidad de estas técnicas puede marcar las regiones 402 como sucias en el descriptor de región 404 almacenado en los dispositivos de almacenamiento 902, así como en la representación 906 en la memoria volátil 904, y también puede marcar rápidamente las regiones 402 como sucias. Sin embargo, en un segundo punto de tiempo 910, cuando las escrituras 110 para la cuarta región 402 se han completado en ambos dispositivos de almacenamiento 104, la cuarta región 402 puede marcarse como limpia en la representación 906 en la memoria volátil 904, pero incluso no marcarse como limpia en el descriptor de región 404 en el dispositivo de almacenamiento 902. Similarmente, en un tercer punto de tiempo 912, las escrituras 110 para la segunda región 402 se han completado en ambos dispositivos de almacenamiento 104, y la segunda región 402 puede marcarse como limpia en la representación 906 en la memoria volátil 904, pero no en el descriptor de región 404 en el dispositivo de almacenamiento 902 hasta un cuarto punto de tiempo 914, cuando ambas regiones 402 pueden marcarse juntas como limpias en el descriptor de región 404 en el dispositivo de almacenamiento 902. Este uso de la representación 906 en la memoria volátil 904 puede presentar varias mejoras de desempeño (por ejemplo, permitir la determinación más rápida de que regiones 402 se marcan como limpias o sucias que determinaciones que acceden al descriptor de región 404 almacenado en el dispositivo de almacenamiento 902; permitir una ejecución en lote de las marcaciones limpias 406 al descriptor de región 404 almacenado en el dispositivo de almacenamiento 902; y reducir el número de accesos al dispositivo de almacenamiento 902, tal como, en el caso que una escritura adicional 110 a la segunda región 420 se reciben en el tercer punto de tiempo 912, la región 402 puede marcarse simplemente como sucia en la representación 906 en la memoria volátil 904 en lugar de marcar 406 la región 402 como limpia y después sucia de nuevo en el descriptor de región 404 almacenado en el dispositivo de almacenamiento 902).
La Figura 10 representa una ilustración de un diagrama de estado ilustrativo 1000 que puede utilizarse por una modalidad de estas técnicas para actualizar un descriptor de región 404 en una forma determinista. I nicialmente, una modalidad de estas técnicas puede estar en un estado limpio 1002 en donde una región limpia 402 es marcada como limpia en el descriptor de región 404, hasta que se recibe una solicitud para realizar una escritura 110 para un grupo de datos 102 en una ubicación 108 dentro de la región 402, y una modalidad de estas técnicas puede cambiar a un estado de marcación 1004 mientras la marcación 406 de la región 402 como sucia (por ejemplo, mientras escribe al descriptor de región 404 almacenado en un dispositivo de almacenamiento 106). Cuando la marcación 406 está completa, la modalidad puede cambiar a un estado sucio 1004 en donde la región 402 ha sido marcada como sucia, y además solicita a la escritura 110 ubicaciones adicionales dentro la región 402 que pueden causar que la modalidad permanezca en su estado sucio 1004. Cuando se recibe una solicitud para nivelar las regiones sucias 402, se hace una determinación sobre si el dispositivo de almacenamiento 106 está listo para nivelación (por ejemplo, si el dispositivo de almacenamiento 106 está realizando actualmente una sincronización del grupo de almacenamiento, o si el dispositivo de almacenamiento 106 es temporalmente inaccesible, entonces se mantienen solicitudes para nivelar escrituras sucias hasta que el dispositivo de almacenamiento 106 está listo). Si el dispositivo de almacenamiento 106 está listo para un nivelado, la modalidad puede ingresar un estado de nivelado 1008 mientras comienza una operación de nivelado. Si la operación de nivelado se completa sin recibir otra solicitud para una escritura 110 a la región 104, la modalidad puede ingresar un estado marcado como limpio 1010, en donde la región 102 ha sido nivelada (por ejemplo, las escrituras 110 en la región 402 se han completado), pero la región 402 aún está marcada como sucia en el descriptor de región 404 en el dispositivo de almacenamiento 106 (pero puede marcarse como limpia en una representación de memoria volátil 906 en la memoria 904 del dispositivo). Finalmente, cuando se recibe una solicitud para marcar regiones limpiadas 402 como limpias en el descriptor de región 404, la modalidad puede comenzar con esta marcación 406, y al completar esta marcación 406 puede regresar al estado limpio 1002. Sin embargo, si se recibe cualquier solicitud para escribir 110 a la región 402 durante el estado nivelado 1008 o el estado marcado como limpio 1010, la modalidad puede regresar al estado sucio 1006. De esta forma, una modalidad de estas técnicas puede actualizar el descriptor de región 404 en una forma de estado, determinista, y comparativamente simple. Muchas variaciones en la actualización del descriptor de región 402 pueden preverse por aquellos expertos en la técnica que puede ser compatibles con las técnicas aquí presentadas.
D4. Variaciones de Recuperación Un cuarto aspecto que puede variar entre las modalidades de estas técnicas se refiere a la forma de utilizar un descriptor de región 404 para realizar una recuperación (incluyendo una limpieza 416) de un grupo de almacenamiento 102 en el caso de una falla 118. Como una primera variación, la recuperación puede involucrar muchos tipos de técnicas para limpieza 416 del grupo de almacenamiento 102 para detectar y remover inconsistencias 122 en el grupo de almacenamiento 102 que surgen de la falla 118. Como un primer ejemplo, para un grupo de datos 104 del grupo de almacenamiento 102 que está almacenado como dos o más copias que se espera que sean idénticas, la limpieza 416 puede involucrar comparar las copias para detectar inconsistencias 122 (por ejemplo, una comparación en forma de bit del contenido real; una comparación lógica del contenido, tal como una detección de equivalencia entre los grupos de datos 104 incluso en el caso de diferencias estructurales no sustanciales, tal como dos sistemas de archivo que comprenden el mismo grupo de archivos pero representan el sistema de archivo con diferentes estructuras como bit; o una comparación de sellos distintivos de los grupos de datos 104, tal como la comparación de un código hash calculado contra los contenidos de cada copia). Como un segundo ejemplo, la limpieza 416 puede involucrar verificar uno o más grupos de datos 104 contra un verificador 202 que representa los grupos de datos 104, tal como una suma de verificación, para verificar la consistencia de los contenidos de los grupos de datos 104. Como un tercer ejemplo, la limpieza 416 puede involucrar simplemente examinar un grupo de datos 104 por errores, tal como verificar que los contenidos binarios de un grupo de datos 104 de un tipo estandarizado presentan una estructura válida de acuerdo con una definición formal. Adicionalmente, la limpieza 416 puede permitir una simple detección de la presencia de un inconsistencias 112; puede permitir una identificación de la ubicación de una inconsistencia 122 dentro y/o entre el por lo menos un grupo de datos comparados 104 (por ejemplo, no solamente detecta que existe un error, sino que una porción particular del grupo de datos 104 es inconsistente o no es como se espera); y/o puede permitir una corrección de la inconsistencia 122 (por ejemplo, una suma de verificación de corrección de error, tal como un código de Hamming, que permite una determinación de los datos correctos, o una técnica de reparación aplicada a un objeto binario que permite una corrección de las inconsistencias de formateo y puede restaurar o reducir pérdida de datos). Pueden aplicarse diferentes tipos de limpieza 416 a diferentes grupos de datos 104 dentro del grupo de almacenamiento 102 (por ejemplo, grupos de datos más valiosos 102 pueden almacenarse en una forma compatible con técnicas de corrección de error más complicadas pero sofisticadas, mientras grupos de datos menos valiosos 102 pueden almacenarse en una forma que es simple y comparativamente no complicada). Adicionalmente, el tipo de limpieza 114 invocado puede depender del número de copias disponibles de los grupos de datos respectivos 104, el tipo de falla 118 detectada, los tipos de dispositivos de almacenamiento 106 (por ejemplo, el esquema RAID implementado en los dispositivos), y los intereses de un usuario (por ejemplo, puede permitirse que el usuario seleccione entre varias opciones de limpieza que varían en términos de complejidad, confiabilidad, y duración de limpieza 416). En algunos escenarios, pueden realizarse múltiples tipos de limpieza 416 (por ejemplo, una limpieza rápida 416 que involucra una identificación rápida de inconsistencias fácilmente detectadas 122 y la restauración rápida de acceso al grupo de datos 102, seguido por una limpieza compleja 416 que verifica la integridad del grupo de almacenamiento 102 para dirigir inconsistencias 122 que son más difíciles de corregir y reparar).
Como una segunda variación de este tercer aspecto, la recuperación del grupo de almacenamiento 102 puede realizarse en un orden particular. Por ejemplo, el grupo de almacenamiento 102 puede comprender muchos tipos de grupos de datos 104 almacenados en muchos dispositivos de almacenamiento. En algunos escenarios, una recuperación simple puede aplicar la limpieza 416 al grupo de almacenamiento 102 en un orden arbitrario, mientras una recuperación ordenada puede aplicar la limpieza 416 primero a algunas porciones del grupo almacenamiento 102 que comprenden grupos de datos valiosos o más utilizados 104 antes de aplicar la limpieza 416 (por ejemplo, datos en uso) a otras porciones del grupo de almacenamiento 102 que comprenden grupos de datos menos valiosos o solicitados menos frecuentemente 104 (por ejemplo, datos de archivo). En un ejemplo, regiones respectivas 402 del grupo de almacenamiento 102 pueden distribuirse en uno o más grupos de región, cada uno teniendo un descriptor de región 404, y la recuperación puede involucrar limpiar 416 las regiones 402 de un primer grupo de región representado por un primer descriptor de región 404 antes de limpiar las regiones 402 de un segundo grupo de región representado por un segundo descriptor de región 404.
Como una tercera variación de este tercer aspecto, la recuperación puede comprender, antes de iniciar una limpieza 416 basada en un descriptor de región 404, verificar la integridad del descriptor de región 404 (por ejemplo, de acuerdo con un verificador 202 almacenado con el descriptor de región 404). Si se encuentra que no es verificable parte del descriptor de región 404 (por ejemplo, inconsistente o corrupto debido a una falla 118 mientras escribe una porción del descriptor de región 404), la recuperación puede involucrar utilizar las porciones verificables del descriptor de región 404, y realizar una limpieza completa 416 de las regiones 402 representadas en la porción corrupta del descriptor de región 404. Alternativamente, la recuperación puede involucrar localizar y utilizar otra copia del descriptor de región 404 (por ejemplo, una copia idéntica o ligeramente monótona pero verificable del descriptor de región 404 almacenado en otra parte en el mismo dispositivo de almacenamiento 106, o en otro dispositivo de almacenamiento 106 del grupo de almacenamiento 102). De hecho, si cada uno de dos o más descriptores de región 404 se encuentra que es parcialmente corrupto, la recuperación puede lograrse completamente al utilizar las porciones válidas de cada descriptor de región 404.
Alternativamente, si no está disponible ninguna copia verificable del descriptor de región 404, la recuperación puede iniciar una limpieza completa del grupo de almacenamiento 102 (por ejemplo, un escaneo completo y resincronización de todo el grupo de almacenamiento 102). De esta forma, una modalidad de estas técnicas puede configurarse para recuperarse de diferentes tipos de fallas 118 del grupo de almacenamiento 102. Aquellos expertos en la técnica pueden prever muchas formas para recuperarse de fallas 118 del grupo de almacenamiento 102 de acuerdo con las técnicas aquí presentadas.
E. Ambiente de Cómputo La Figura 11 presenta una ilustración de un ambiente de cómputo ilustrativo dentro de un dispositivo de cómputo 1102 en donde pueden implementarse las técnicas aquí presentadas. Los dispositivos de cómputo ilustrativos incluyen, pero no están limitados a, computadoras personales, computadoras de servidor, dispositivos móviles o de laptop, dispositivos móviles (tales como teléfonos móviles, Asistentes Digitales Personales (PDA), reproductores de medios, y similares), sistemas de multiprocesador, electrónica de consumidor, minicomputadoras, macrocomputadoras, y ambientes de cómputo distribuidos que incluye cualquiera de los sistemas o dispositivos anteriores.
La Figura 11 ilustra un ejemplo de un sistema 1100 que comprende un dispositivo de cómputo 1102 configurado para implementar una o más modalidades aquí proporcionadas. En una configuración, el dispositivo de cómputo 1102 incluye al menos un procesador 1106 y al menos un componente de memoria 1108. Dependiendo de la configuración exacta y tipo de dispositivo de cómputo, el componente de memoria 1108 puede ser volátil (tal como RAM, por ejemplo), no volátil (tal como ROM, memoria flash, etc., por ejemplo) o un tipo intermedio o híbrido de componente de memoria. Esta configuración se ilustra en la Figura 11 por línea punteada 1104.
En algunas modalidades, el dispositivo 1102 puede incluir características y/o funcionalidad adicionales. Por ejemplo, el dispositivo 1102 puede incluir un o más componentes de almacenamiento adicionales 1110, que incluyen, pero no están limitados a, una unidad de disco duro, un dispositivo de almacenamiento de estado sólido, y/u otros medios magnéticos u ópticos removibles o no removibles. En una modalidad, las instrucciones legibles por computadora y ejecutables por procesador que implementan una o más modalidades aquí proporcionadas se almacenan en el componente de almacenamiento 1110. El componente de almacenamiento 1110 también puede almacenar otros objetos de datos, tales como componentes de un sistema operativo, binarios ejecutables que comprenden una o más aplicaciones, bibliotecas de programación (por ejemplo, interfases de programación de aplicación (API), objetos de medios y documentación. Las instrucciones legibles por computadora pueden cargarse en el componente de memoria 1108 para ejecución por el procesador 1106.
El dispositivo de cómputo 1102 también puede incluir uno o más componentes de comunicación 1116 que permiten al dispositivo de cómputo 1102 comunicarse con otros dispositivos. Uno o más componentes de comunicación 1116 pueden comprender (por ejemplo) un módem, una Tarjeta de Interfase de Red (NIC), un transmisor/receptor de radiofrecuencia, un puerto infrarrojo, y una conexión USB de conductor común en serie universal (USB). Tales componentes de comunicaciones 1116 pueden comprender una conexión por cable (conexión de una red a través de un cordón, cable, o alambre físico) o una conexión inalámbrica (que se comunica inalámbricamente con un dispositivo en red, tal como a través de luz visible, infrarroja, o una o más radiofrecuencia).
El dispositivo de cómputo 1102 puede incluir uno o más componentes de entrada 1114, tales como teclado, ratón, pluma, dispositivo de entrada de voz, dispositivo de entrada táctil, cámaras infrarrojas, o dispositivos de entrada de video, y/o uno o más componentes de salida 1112, tales como una o más pantallas, bocinas, e impresoras. Los componentes de entrada 1114 y/o componentes de salida 1112 pueden conectarse al dispositivo de cómputo 1102 a través una conexión por cable, una conexión inalámbrica, o cualquier combinación de los mismos. En una modalidad, un componente de entrada 1114 o un componente de salida 1112 de otro dispositivo de cómputo pueden utilizarse como componentes de entrada 1114 y/o componentes de salida 1112 para el dispositivo de cómputo 1102.
Los componentes del dispositivo de cómputo 1102 pueden conectarse por varias interconexiones, tales como un conductor común. Tales interconexiones pueden incluir una Interconexión de Componente Periférico (PCI), tal como PCI Express, un Conductor Común en Serie Universal (USB), muro contra fuegos (IEEE 1394), una estructura de conductor común óptica, y similares. En otra modalidad, los componentes del dispositivo de cómputo 1102 pueden interconectarse por una red. Por ejemplo, el componente de memoria 1108 puede estar compuesto de múltiples unidades de memoria físicas localizadas en diferentes ubicaciones físicas interconectadas a través de una red.
Aquellos expertos en la técnica notarán que los dispositivos de almacenamiento utilizados para almacenar instrucciones legibles por computadora pueden distribuirse a través de una red. Por ejemplo, un dispositivo de cómputo 1120 accesible a través de una red 1118 puede almacenar instrucciones legibles por computadora para implementar una o más modalidades aquí proporcionadas. El dispositivo de cómputo 1102 puede acceder al dispositivo de cómputo 1120 y descargar una parte o todas las instrucciones legibles por computadora para ejecución. Alternativamente, el dispositivo de cómputo 1102 puede descargar piezas de las instrucciones legibles por computadora, como sea necesario, o algunas instrucciones pueden ejecutarse en el dispositivo de cómputo 1102 y algunas en el dispositivo de cómputo 1120.
F. Uso de Términos Como se utiliza en esta solicitud, los términos "componente", "módulo", "sistema", "interfase", y similares pretenden hacer referencia generalmente a una entidad relacionada con computadora, ya sea hardware, una combinación de hardware y software, software, o software en ejecución. Por ejemplo, un componente puede ser, pero no está limitado a ser, un procedimiento que corre en un procesador, un procesador, un objeto común ejecutable, una secuencia de ejecución, un programa, y/o una computadora. A manera de ilustración, tanto una aplicación que corre en un controlador como el controlador puede ser un componente. Uno o más componentes pueden residir dentro de un procesador y/o secuencia de ejecución y un componente puede localizarse en una computadora y/o distribuirse entre dos o más computadoras.
Además, el tema reclamado puede im plementarse como un método, aparato, artículo de fabricación que utiliza programación estándar y/o técnicas de ingeniería para producir software, firmware, hardware, o cualquier combinación de los mismos para controlar una computadora para implementar el tema descrito. El término "artículo de fabricación" como se utiliza aquí pretende abarcar un programa de computadora accesible de cualquier dispositivo legible por computadora, portador, o medio. Por supuesto, aquellos expertos en la técnica reconocerán muchas modificaciones que pueden hacerse a esta configuración sin apartarse del alcance o espíritu del tema reclamado.
Aquí se proporcionan varias operaciones de modalidades. En una modalidad, una o más de las operaciones descritas pueden constituir instrucciones legibles por computadora almacenadas en uno o más medios legibles por computadora, que si se ejecutan por un dispositivo de cómputo, causarán que el dispositivo de cómputo realiza las operaciones descritas. En el orden en el cual se describen algunas o todas las operaciones no debe interpretarse para implicar que estas operaciones son necesariamente dependientes d e orden. Un orden alternativo será apreciado por un experto en la técnica que tiene el beneficio de esta descripción. Además, se entenderá que no todas las operaciones están presentes necesariamente en cada modalidad aquí proporcionada.
Aunque el tema ha sido descrito en un lenguaje específico a características estructurales y/o actos metodológicos, se entenderá que el tema definido en las reivindicaciones anexas no necesariamente está limitado a las características o actos específicos descritos anteriormente. Más bien, las características y actos específicos descritos anteriormente se describen como formas ilustrativas para implementar las reivindicaciones. Además, la palabra "ilustrativo" se utiliza aquí para significar que sirve como un ejemplo, caso, o ilustración. Cualquier aspecto o diseño aquí descrito como "ilustrativo" no necesariamente se va interpretar como ventajoso sobre otros aspectos o diseños. Más bien, el uso de la palabra ilustrativo pretende presentar conceptos en una forma completa. Como se utiliza en esta solicitud, el término "o" pretende significar un "o" inclusivo en lugar de un "o" exclusivo. Es decir, a menos que se especifique de otra forma, o esté claro a partir del contexto, "X emplea A o B" que pretende significar cualquiera de los cambios inclusivos naturales. Es decir, si X emplea A; X emplea B; o X emplea tanto A como B, entonces "X emplea A o B" se satisface bajo cualquiera de los casos anteriores. Además, los artículos "un" y "uno" como se utilizan en esta solicitud y las reivindicaciones anexas pueden interpretarse generalmente para significar "uno o más" al menos que se especifique de otra forma o esté claro a partir del contexto para dirigirse a una forma singular.
También, aunque la descripción ha sido mostrada y descrita con respecto a una o más implementaciones, ocurrirán alteraciones y modificaciones equivalentes para otros expertos en la técnica basándose en una lectura y entendimiento de esta especificación y los dibujos anexos. La descripción incluye todas esas modificaciones y alteraciones y no está limitada únicamente por el alcance de las siguientes reivindicaciones. Con respecto particular a las varias funciones realizadas por los componentes descritos anteriormente (por ejemplo, elementos, recursos, etc.), los términos utilizados para describir tales componentes pretenden corresponder, a menos que se indique de otra forma, a cualquier componente que realiza la función especificada del componente descrito (por ejemplo, que es funcionalmente equivalente), incluso aunque no es estructuralmente equivalente a la estructura descrita que realiza la función en las implementaciones ilustrativas aquí ilustradas de la descripción. Además, aunque se ha descrito una característica particular de la descripción con respecto únicamente a una de varias implementaciones, tal característica puede combinarse con una o más de otras características de las otras implementaciones como se puede desear y como es ventajoso para cualquier aplicación dada particular. Además, al grado que los términos "incluye", "que tiene", "tiene", "con" o variantes de los mismos se utilizan en cualquiera de la descripción detallada o las reivindicaciones, tales términos pretender ser inclusivos en una forma similar al término "que comprende".

Claims (10)

REIVINDICACIONES
1. - Un método para registrar, en una computadora que tiene un procesador, escrituras pendientes dentro de un grupo de almacenamiento proporcionado por al menos un dispositivo de almacenamiento, el método comprende: ejecutar en el procesador instrucciones configuradas para: en al menos un dispositivo de almacenamiento, generar un descriptor de región que distribuye el grupo de almacenamiento almacenado en el dispositivo de almacenamiento en al menos dos regiones de acuerdo con un tamaño de región; después de recibir un grupo de datos para almacenarse en un ubicación en el grupo de almacenamiento: identificar una región dentro del grupo de almacenamiento que comprende la ubicación del grupo de datos; marcar la región como sucia en el descriptor de región; y iniciar el almacenamiento del grupo de datos en la ubicación en el grupo de almacenamiento; después de almacenar el grupo de datos en la ubicación en el grupo de almacenamiento, marcar la región como limpia en el descriptor de región.
2. - El método acuerdo con la reivindicación 1, en donde regiones sucias respectivas que identifican regiones respectivas en el dispositivo de almacenamiento de acuerdo con un esquema de referencia de región seleccionado de un grupo de esquema de referencia de región comprenden: un esquema de referencia de región físico que identifica una ubicación física de una región en un dispositivo de almacenamiento del grupo de almacenamiento; y un esquema de referencia de región lógica que identifica una ubicación lógica de una región en un dispositivo lógico del grupo de almacenamiento.
3. - El método acuerdo con la reivindicación 1, en donde: el grupo de almacenamiento comprende al menos dos grupos de región de regiones; y grupos de región respectivos que comprenden al menos un descriptor de región que representan las regiones del grupo de región.
4. - El método de acuerdo con la reivindicación 1, en donde: el grupo de almacenamiento comprende al menos dos descriptores de región que respectivamente comprenden un indicador de secuencia de actualización; y las instrucciones configuradas para, después de almacenar un grupo de datos en un ubicación en el grupo de almacenamiento: seleccionar un descriptor de región monótona que no tiene un indicador de secuencia de última actualización entre los descriptores de región; marcar la región que comprende la ubicación del grupo de datos como actualizada en el descriptor de región monótona, y actualizar el indicador de secuencia de actualización a un indicador de secuencia de última actualización entre los descriptores de región.
5 - El método de acuerdo con la reivindicación 1, en donde: generar el descriptor de región en un dispositivo de almacenamiento comprende: distribuir espacio de descriptor de región en el dispositivo de almacenamiento para el descriptor de región; y las instrucciones configuradas para, después de llenar el espacio de descriptor de región con regiones sucias, expandir el espacio de descriptor de región.
6. - El método acuerdo con la reivindicación 1, en donde marcar una región como sucia en un descriptor de región comprende: determina si la región está marcada como limpia en el descriptor de región; y después de determinar que la región está marcada como limpia en el descriptor de región, marcar la región como sucia.
7. - El método acuerdo con la reivindicación 1, en donde marcar una región como limpia al menos en un descriptor de región comprende: después determinar el almacenamiento de un grupo de datos en una ubicación dentro de la región, identificar la región como limpia; y después de recibir una solicitud para marcar regiones limpiadas como limpias en el descriptor de región, marcar al menos un región limpiada como limpia en el descriptor de región.
8. - Un medio de almacenamiento legible por computadora que comprende instrucciones que, cuando se ejecutan en un procesador de una computadora que tiene acceso al menos a un dispositivo de almacenamiento, hacen que la computadora limpie un grupo de almacenamiento que comprende grupos de datos respectivos y almacenados por los dispositivos de almacenamiento al: de al menos un dispositivo de almacenamiento, recuperar un descriptor de región que distribuye el grupo de almacenamiento almacenado en el dispositivo de almacenamiento al menos a dos regiones de acuerdo con un tamaño de región; y para regiones respectivas marcadas como sucias en el descriptor de región: iniciar la limpieza de los grupos de datos dentro de la región; y después de terminar la limpieza de los grupos de datos dentro de la región, marcar la región como limpia en el descriptor de región.
9. - El método de acuerdo con la reivindicación 8, en donde: el grupo de almacenamiento comprende al menos dos descriptores de región que respectivamente comprenden un indicador de secuencia de actualización; y identificar al menos una región sucia en el grupo de almacenamiento que comprende: seleccionar un último descriptor de región que tiene un indicador de secuencia de última actualización entre los descriptores de región; y identificar la por lo menos una región sucia en el grupo de almacenamiento de acuerdo con el descriptor de región.
10.- El método de acuerdo con la reivindicación 8, en donde: descriptores de región respectivos que comprenden un verificador de descriptor de región del descriptor de región; identificar las regiones sucias que comprende: verificar el verificador de descriptor de región del descriptor de región; y las instrucciones configuradas para, después de fallar al verificar el verificador de descriptor de región de los descriptores de región, iniciar una limpieza completa de los dispositivos de almacenamiento del grupo de almacenamiento.
MX2014002960A 2011-09-12 2011-10-10 Rastreo de region sucia de medios de volatiles. MX336226B (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/229,871 US9003103B2 (en) 2011-09-12 2011-09-12 Nonvolatile media dirty region tracking
PCT/US2011/055590 WO2013039522A1 (en) 2011-09-12 2011-10-10 Nonvolatile media dirty region tracking

Publications (2)

Publication Number Publication Date
MX2014002960A true MX2014002960A (es) 2014-07-09
MX336226B MX336226B (es) 2016-01-07

Family

ID=47644555

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2014002960A MX336226B (es) 2011-09-12 2011-10-10 Rastreo de region sucia de medios de volatiles.

Country Status (11)

Country Link
US (1) US9003103B2 (es)
EP (1) EP2756405B1 (es)
JP (1) JP5932042B2 (es)
KR (1) KR101921365B1 (es)
CN (1) CN102929750B (es)
AU (2) AU2011376904A1 (es)
BR (1) BR112014005623B1 (es)
CA (1) CA2847841C (es)
MX (1) MX336226B (es)
RU (2) RU2014109361A (es)
WO (1) WO2013039522A1 (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003103B2 (en) 2011-09-12 2015-04-07 Microsoft Technology Licensing, Llc Nonvolatile media dirty region tracking
US8898408B2 (en) * 2011-12-12 2014-11-25 Dell Products L.P. Memory controller-independent memory mirroring
US9396110B2 (en) * 2012-12-21 2016-07-19 Advanced Micro Devices, Inc. Non-volatile hybrid memory
US9542306B2 (en) 2013-03-13 2017-01-10 Seagate Technology Llc Dynamic storage device provisioning
US9448896B2 (en) 2013-08-07 2016-09-20 Seagate Technology Llc Torn write mitigation
US9128972B2 (en) * 2013-09-21 2015-09-08 Oracle International Corporation Multi-version concurrency control on in-memory snapshot store of oracle in-memory database
US9141486B2 (en) 2014-01-15 2015-09-22 Avago Technologies General Ip (Singapore) Pte Ltd Intelligent I/O cache rebuild in a storage controller
US9838346B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Alerting on dual-queue systems
US9838467B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Dynamically instantiating dual-queue systems
US9660930B2 (en) 2014-03-17 2017-05-23 Splunk Inc. Dynamic data server nodes
US9753818B2 (en) * 2014-09-19 2017-09-05 Splunk Inc. Data forwarding using multiple data pipelines
US9836358B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Ephemeral remote data store for dual-queue systems
CN104123900A (zh) * 2014-07-25 2014-10-29 西安诺瓦电子科技有限公司 Led灯板校验系统及校验方法
US9430272B2 (en) 2014-12-17 2016-08-30 Microsoft Technology Licensing, Llc Efficiently providing virtual machine reference points
CN104484427B (zh) * 2014-12-19 2017-12-29 武汉长江通信智联技术有限公司 一种录像文件存储装置及方法
US9547555B2 (en) 2015-01-12 2017-01-17 Microsoft Technology Licensing, Llc Change tracking using redundancy in logical time
US9946607B2 (en) * 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9946496B2 (en) * 2015-07-27 2018-04-17 Elastifile Ltd. SSD with non-blocking flush command
US10684994B2 (en) * 2015-09-25 2020-06-16 Netapp Inc. Data synchronization
US10373665B2 (en) * 2016-03-10 2019-08-06 Micron Technology, Inc. Parallel access techniques within memory sections through section independence
KR20180062062A (ko) 2016-11-30 2018-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
WO2018166072A1 (zh) * 2017-03-13 2018-09-20 华为技术有限公司 一种数据处理方法及装置
US10459807B2 (en) * 2017-05-23 2019-10-29 International Business Machines Corporation Determining modified portions of a RAID storage array
US10331363B2 (en) 2017-11-22 2019-06-25 Seagate Technology Llc Monitoring modifications to data blocks
KR102410306B1 (ko) 2018-01-29 2022-06-20 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
JP2020086483A (ja) * 2018-11-15 2020-06-04 株式会社日立製作所 計算機システム及び記憶デバイスの制御方法
US20210200672A1 (en) * 2019-12-30 2021-07-01 Lalla Fatima Drissi Corrupted storage portion recovery in a memory device
US11755226B2 (en) * 2020-09-18 2023-09-12 Hewlett Packard Enterprise Development Lp Tracking changes of storage volumes during data transfers
KR20220045343A (ko) * 2020-10-05 2022-04-12 에스케이하이닉스 주식회사 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3058743B2 (ja) * 1992-01-21 2000-07-04 株式会社日立製作所 ディスクアレイ制御装置
ZA973609B (en) * 1997-03-21 1998-07-17 Canal Plus Sa Computer memory organization.
US7055058B2 (en) 2001-12-26 2006-05-30 Boon Storage Technologies, Inc. Self-healing log-structured RAID
JP2003288250A (ja) * 2002-03-28 2003-10-10 Sanyo Electric Co Ltd ファイル管理方法
US7103796B1 (en) 2002-09-03 2006-09-05 Veritas Operating Corporation Parallel data change tracking for maintaining mirrored data consistency
JP3798773B2 (ja) * 2003-07-24 2006-07-19 株式会社東芝 ディスク制御装置及び冗長化論理ディスクドライブの一貫性回復方法
US7904678B1 (en) 2004-02-27 2011-03-08 Symantec Operating Corporation Technique for recovering mirror consistency in cooperative virtual storage
US7526684B2 (en) * 2004-03-24 2009-04-28 Seagate Technology Llc Deterministic preventive recovery from a predicted failure in a distributed storage system
US8275951B2 (en) * 2004-06-10 2012-09-25 Hewlett-Packard Development Company, L.P. Local bitmaps for an array of redundant storage devices
US7415488B1 (en) 2004-12-31 2008-08-19 Symantec Operating Corporation System and method for redundant storage consistency recovery
US7395378B1 (en) 2005-01-04 2008-07-01 Symantec Operating Corporation System and method for updating a copy-on-write snapshot based on a dirty region log
CN100456253C (zh) 2005-12-28 2009-01-28 英业达股份有限公司 存储系统的高速缓存数据的保护方法
US8996826B2 (en) 2009-04-28 2015-03-31 Symantec Corporation Techniques for system recovery using change tracking
US9003103B2 (en) 2011-09-12 2015-04-07 Microsoft Technology Licensing, Llc Nonvolatile media dirty region tracking

Also Published As

Publication number Publication date
BR112014005623A2 (pt) 2017-03-21
RU2016138143A (ru) 2018-12-12
CN102929750B (zh) 2015-05-20
RU2016138143A3 (es) 2020-03-04
BR112014005623B1 (pt) 2021-10-05
JP2014530393A (ja) 2014-11-17
US20130067179A1 (en) 2013-03-14
EP2756405A4 (en) 2015-09-02
JP5932042B2 (ja) 2016-06-08
CN102929750A (zh) 2013-02-13
AU2011376904A1 (en) 2014-03-27
BR112014005623A8 (pt) 2018-02-06
CA2847841C (en) 2018-03-06
RU2014109361A (ru) 2015-09-20
MX336226B (es) 2016-01-07
AU2017228544A1 (en) 2017-10-05
CA2847841A1 (en) 2013-03-21
EP2756405A1 (en) 2014-07-23
WO2013039522A1 (en) 2013-03-21
KR20140062063A (ko) 2014-05-22
EP2756405B1 (en) 2021-07-14
RU2728816C2 (ru) 2020-07-31
AU2017228544B2 (en) 2019-05-16
KR101921365B1 (ko) 2018-11-22
US9003103B2 (en) 2015-04-07

Similar Documents

Publication Publication Date Title
AU2017228544B2 (en) Nonvolatile media dirty region tracking
KR101870521B1 (ko) 스토리지 저널링을 개선하는 방법 및 시스템
JP6026538B2 (ja) 検証されたデータセットの不揮発性媒体ジャーナリング
CN104978281B (zh) 数据存储设备中的数据完整性管理
US6629198B2 (en) Data storage system and method employing a write-ahead hash log
US10705918B1 (en) Online metadata backup consistency check
US10481988B2 (en) System and method for consistency verification of replicated data in a recovery system
WO2016115217A1 (en) Data backup method and apparatus
US9329799B2 (en) Background checking for lost writes and data corruption
US20180173438A1 (en) Efficient data consistency verification for flash storage
CN104077375A (zh) 一种cc-numa系统中节点的错误目录的处理方法和节点
US8938641B2 (en) Method and apparatus for synchronizing storage volumes
US20150347224A1 (en) Storage control apparatus and method therefor
US20150169668A1 (en) Single Pass File System Repair With Copy On Write
WO2022225557A1 (en) Snapshot-based data corruption detection
US20140380090A1 (en) Storage control device and storage control method
US10956052B1 (en) Online address to hash (A2H) metadata scanner

Legal Events

Date Code Title Description
GB Transfer or rights

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC