BR112014005623B1 - Método de gravar escritas pendentes em um conjunto de armazenamento e meio de armazenamento legível por computador - Google Patents

Método de gravar escritas pendentes em um conjunto de armazenamento e meio de armazenamento legível por computador Download PDF

Info

Publication number
BR112014005623B1
BR112014005623B1 BR112014005623-4A BR112014005623A BR112014005623B1 BR 112014005623 B1 BR112014005623 B1 BR 112014005623B1 BR 112014005623 A BR112014005623 A BR 112014005623A BR 112014005623 B1 BR112014005623 B1 BR 112014005623B1
Authority
BR
Brazil
Prior art keywords
region
storage
regions
descriptor
storage pool
Prior art date
Application number
BR112014005623-4A
Other languages
English (en)
Other versions
BR112014005623A8 (pt
BR112014005623A2 (pt
Inventor
Emanuel Paleologu
Karan Mehra
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112014005623A2 publication Critical patent/BR112014005623A2/pt
Publication of BR112014005623A8 publication Critical patent/BR112014005623A8/pt
Publication of BR112014005623B1 publication Critical patent/BR112014005623B1/pt

Links

Images

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

método de gravar escritas pendentes em um conjunto de armazenamento método de limpeza de um conjunto de armazenamento e meio de armazenamento legível por computador.a presente invenção refere-se a um conjunto de armazenamento (por exemplo, uma série de drivers de disco rígido) pode experimentar uma falha, tal como uma perda de energia, uma pane de software, ou uma desconexão de um dispositivo de armazenamento, enquanto escritas no conjunto de armazenamento estão em andamento. a recuperação a partir de falha pode envolver varredura no conjunto de armazenamento para detectar e corrigir as inconsistências (por exemplo, espelhos de comparação de um conjunto de dados ou somas de verificação). no entanto, faltando informação sobre os locais de escritas pendentes para o conjunto de armazenamento durante a falha, este processo de "limpeza" pode envolver varredura de todo o conjunto de armazenamento, resultando em processos de recuperação prolongados. no presente documento, são apresentadas técnicas para rastrear escritas para o conjunto de armazenamento repartindo o conjunto de armazenamento em regiões de um tamanho de região (por exemplo, gigabyte), e para armazenamento na descrição de meio de armazenamento não volátil de regiões "sujas" compreendendo as escritas em andamento. o processo de recuperação pós-falha pode então ser limitado às regiões identificadas como sujas.

Description

ANTECEDENTES
[001] No campo de computação, muitos cenários envolvem um conjunto de armazenamento provido por um conjunto de dispositivos de armazenamento (por exemplo, uma série de drivers de disco rígido interoperando de acordo com uma série de Arranjo Redundante de Discos Baratos (RAID), e que pode ser acessado por vários dispositivos e processos para armazenar e recuperar vários tipos de dados. Em muitos cenários, os dados armazenados em porções diferentes do conjunto de armazenamento podem ter uma relação. Como um primeiro exemplo, um primeiro conjunto de dados e um segundo conjunto de dados armazenados no conjunto de armazenamento podem fazer referência um ao outro, tal como gravações relacionadas em um sistema de base de dados. Como um segundo exemplo, duas ou mais versões idênticas dos dados podem ser retidas a fim de prover várias vantagens. Por exemplo, dois dispositivos de armazenamento podem armazenar e prover acesso ao mesmo conjunto de dados, deste modo dobrando efetivamente a taxa de acesso aos dados. Cópias idênticas dos dados também podem ser retidas a fim de proteger a integridade dos dados; por exemplo, se uma primeira cópia dos dados é perdida devido a uma falha, tal como corrupção de dados ou uma falha de hardware por exemplo, (uma pane de disco rígido), uma segunda cópia idêntica do conjunto de dados pode ser acessada e replicada para recuperação a partir da falha.
[002] Como um terceiro de tais exemplos, os dados podem ser associados a fim de detectar e/ou salvaguardar contra erros ou trocas não pretendidas dos dados. Por exemplo, um erro na leitura ou lógica de armazenagem do dispositivo, uma insuficiência ou saturação de armazenamento temporária, ou uma interrupção externa (tal como um raio cósmico) podem ocasionalmente causar uma troca inadvertida nos dados armazenados no meio de armazenamento ou na leitura de dados a partir do meio de armazenamento. Portanto, em muitos de tais cenários, para as respectivas porções de dados armazenados nos dispositivos de armazenamento, um verificador, tal como uma soma de verificação, pode ser calculado e armazenado, e pode ser utilizado para confirmar que os conteúdos do conjunto de dados foram validamente armazenados em e/ou lidos a partir do dispositivo de armazenamento. Como tal exemplo, no contexto de armazenar um conjunto de dados compreendendo um conjunto de bits, uma operação de OP exclusiva (XOR) pode ser aplicada aos bits, resultando em uma soma de verificação de um bit que pode ser armazenada e associada com este conjunto de dados. Quando o conjunto de dados é lido posteriormente, outra operação XOR pode ser aplicada ao mesmo, e o resultado pode ser comparado com a soma de verificação de um bit. Uma troca de qualquer um bit resulta em uma má combinação destas computações de XOR, indicando que os dados estão armazenados incorretamente, alterados, ou lidos incorretamente a partir do dispositivo de armazenamento. Muitos tipos de verificadores podem ser identificados, que podem variar em algumas características (por exemplo, facilidade de computação, uma capacidade de identificar qual bit do conjunto de dados foi trocado, e uma capacidade de correção de erro pelo que uma porção de dados lida incorretamente pode ser corrigida).
[003] Várias formas de replicação de dados são frequentemente obtidas através do uso de séries de Arranjo Redundante de Discos Baratos (RAID), tal como um conjunto de drivers de disco rígido que são reunidos juntos para obter várias propriedades agregadas, tais como produtividade melhorada e espelhamento de dados de automático. Como um primeiro de tal exemplo, em uma série de RAID 1, um conjunto de dois ou mais drivers de disco rígido do mesmo tamanho armazenam cópias idênticas de conjunto de armazenamento, e qualquer atualização para o conjunto de armazenamento é identicamente propagada através de todos os drivers de disco rígido. O conjunto de armazenamento, portanto, permanece acessível no caso de falhas de unidade de disco rígido, até múltiplas de tais falhas, contanto que até uma unidade de disco rígido permaneça funcional e acessível. Como um segundo de tal exemplo, uma série de RAID 4 envolve um conjunto de dois ou mais discos, onde um disco é incluído na série não para armazenar dados de usuário, mas para armazenar verificadores dos dados armazenados nos outros discos. Por exemplo, para uma série de RAID 4 envolvendo quatro discos, cada um armazenando um terabyte de dados, a capacidade dos primeiros três discos é reunida para formar um espaço de armazenamento de três terabytes para dados de usuário, enquanto o quarto disco é incluído na série para reter os verificadores para conjuntos de dados armazenados nos primeiros três discos (por exemplo, para cada três palavras de 64 bits armazenadas, respectivamente, nos outros três discos, o quarto disco inclui um verificador de 64 bits que verifica a integridade das três palavras de 64 bits). O controlador da série de RAID compreende circuito que é configurado para implementar os detalhes de um nível de RAID selecionado para um conjunto provido de unidades de disco rígido (por exemplo, ao receber um conjunto de dados, repartir automaticamente os dados através dos três discos de dados de usuário, calcular o verificador do conjunto de dados e armazenar o verificador no quarto disco). As técnicas de RAID usadas também podem possibilitar proteções ou características adicionais; por exemplo, se qualquer dispositivo de armazenamento único em uma série de RAID 4 falha, os dados armazenados no dispositivo que falhou podem ser inteiramente reconstruídos através do uso dos dispositivos de armazenamento restantes.
SUMÁRIO
[004] Este Sumário é proporcionado para introduzir uma seleção de conceitos em uma forma simplificada, que são ainda descritos abaixo na Descrição Detalhada. Este Sumário não se destina a identificar fatores chaves ou características essenciais do assunto reivindicado, nem é destinada a ser utilizada para limitar o escopo do assunto reivindicado.
[005] Enquanto escrevendo os conjuntos de dados associados em um sistema de armazenamento, podem surgir problemas durante a escrita que causam uma inconsistência entre os conjuntos de dados associados. Como um primeiro exemplo, em um conjunto de dados espelhados, um erro pode ocorrer enquanto escrevendo a um dos espelhos, tal como uma troca inadvertida dos dados devido a um raio cósmico, uma falha na mídia física, ou um erro lógico no processo de leitura/escrita. Como um resultado, os espelhos de cada conjunto de dados podem não combinar, e pode ser difícil escolher uma versão correta dos dados. Como um segundo exemplo, problemas podem surgir devido ao retardo entre o armazenamento de um conjunto de dados e seu verificador (ou vice-versa). Por exemplo, muitos dispositivos de armazenamento suportam somente uma escrita em um local de uma vez (por exemplo, o local debaixo do cabeçalho de escrita de uma unidade de disco rígido, ou o local especificado por um registro de endereço em um dispositivo de armazenamento no estado sólido), e o armazenamento sequencial de dados envolve escrever o conjunto de dados antes do verificador, ou vice-versa. Como outro exemplo, se o conjunto de dados e o verificador são armazenados em dispositivos de armazenamento diferentes, pode ser difícil sincronizar o momento em que o primeiro dispositivo de armazenamento armazena o conjunto de dados com o momento em que o segundo dispositivo de armazenamento armazena o verificador do conjunto de dados. Como um resultado, o armazenamento de um conjunto de dados e um de verificador correspondente não ocorre de modo síncrono, mas em um modo sequencial. Muitas fontes de falhas podem interromper o processo de armazenamento, tais como perda de energia, uma falha de hardware, uma pane de software, ou uma remoção não antecipada de um dispositivo de armazenamento a partir da série. Se tais falhas surgem no momento após armazenar um conjunto de dados e antes de armazenar o verificador, então um erro de verificador pode surgir posteriormente durante uma leitura que ameace a confiança na precisão dos dados. Além dos dados serem escritos ativamente pelo(s) dispositivo(s) de armazenamento, uma falha também pode interromper outras escritas que não foram concluídas, tais como dados armazenados em uma memória de armazenamento de escrita temporária e programados para escrita iminente.
[006] Nestes e em outros cenários, a consistência do conjunto de dados pode ser detectada através de um processo de verificação, por exemplo, comparando conjuntos de dados idênticos ou comparando os verificadores com os dados correspondentes. Consequentemente, ao detectar uma falha catastrófica, os dados em um ou mais dispositivos de armazenamento podem ser "limpos" verificando os dados e possivelmente corrigindo inconsistências. No entanto, embora a ocorrência de uma falha possa ser facilmente detectada (por exemplo, uma desativação incorreta ou uma substituição de um dispositivo de armazenamento que falhou), pode não ser possível determinar quais porções do conjunto de armazenamento estavam sendo escritas no momento da escrita e podem ter sido comprometidas pela falha. Sem tal informação, todo o conjunto de armazenamento pode ter que ser limpo verificando cada conjunto de dados no conjunto de armazenamento (por exemplo, comparando a totalidade de cada cópia de um conjunto de dados espelhados para detectar inconsistências, e testar os verificadores de cada conjunto de dados no conjunto de armazenamento). A limpeza de todo o conjunto de dados pode ser demorada, particularmente em vista do crescimento das capacidades do conjunto de armazenamento na faixa de pentabytes, resultando em um período de recuperação prolongado mesmo depois de um breve período de falha catastrófica; e embora o processo de limpeza extensivo possa assegurar a integridade do conjunto de armazenamento, a extensão do processo de limpeza de todo o volume (frequentemente envolvendo conjuntos de dados e mesmo dispositivos de armazenamento que não foram escritos em um período longo) pode ser desproporcional para o pequeno número de escritas comparativamente que estavam em processo no momento da falha.
[007] Apresentadas no presente documento estão técnicas para focalizar a limpeza de um conjunto de armazenamento sobre os dados que podem ser comprometidos por uma falha. De acordo com estas técnicas, antes de escrever em um local no conjunto de armazenamento, um dispositivo de armazenamento pode armazenar na mesma mídia física não volátil um descritor indicando o local onde a escrita deve ocorrer, e pode depois apagar o descritor depois da escrita estar concluída. Deste modo, os dispositivos de armazenamento podem rastrear as áreas "sujas" do conjunto de armazenamento, e ao se recuperar de uma falha pode iniciar uma limpeza somente das áreas "sujas" do conjunto de armazenamento. No entanto, pode ser apreciado que gravar (e liberar) o endereço na mídia física não volátil de cada escrita, e apagar (e liberar) o endereço após confirmar o término da escrita à mídia física, pode aumentar significativamente (por exemplo, triplicar) o número de buscas e escritas envolvidas em escrever cada conjunto de dados, deste modo reduzindo o desempenho (por exemplo, a latência e produtividade) do conjunto de armazenamento. No outro extremo, o rastreamento de informação "suja" somente em um alto nível, tal como por dispositivo de armazenamento, divisão, ou volume, pode focalizar insuficientemente o processo de limpeza. Por exemplo, se a informação "suja" é rastreada por volume, o processo de limpeza pode focalizar sobre um volume particular que estava em uso no momento de escrever, mas o volume pode compreender múltiplos terabytes de dados que resultam em um processo de limpeza extensivo, mesmo se somente alguns megabytes de dados estivessem sendo escritos. Consequentemente, de acordo com as técnicas apresentadas no presente documento, o conjunto de armazenamento pode ser repartido em regiões de um tamanho de região, e informação "suja" pode ser rastreada para cada região. Por exemplo, a divisão do conjunto de armazenamento em regiões de um gigabyte pode possibilitar um rastreamento comparativamente preciso de regiões, enquanto também reduzindo a informação de região "suja" (por exemplo, quando uma escrita é iniciada em uma região, ela é marcada como "suja" e pode permanecer assim marcada através de escritas sequenciais extensivas dentro da região). A seleção do tamanho de região pode, portanto, ser visualizada como uma troca entre precisão na informação de região suja, levando a processos de limpeza mais focalizados e mais curtos, e a redução nos custos de desempenho de implementar o processo de rastreamento de região suja.
[008] Técnicas adicionais podem ainda reduzir a frequência de atualizações para a informação de região suja. Como um primeiro exemplo, antes de escrever um descritor de região suja para uma região para a qual a escrita é solicitada, uma modalidade pode determinar se a região já está marcada como suja no meio de armazenamento, e pode evitar marcar redundantemente a região como suja. Como um segundo exemplo, uma região para a qual uma escrita é concluída recentemente pode apresentar uma alta probabilidade de uma escrita subsequente iminente para a mesma região. Portanto, em vez de marcar prontamente a região como limpa após o término da escrita, a remarcação "limpa" pode ser diferida em uma breve duração; e se uma escrita subsequente para a mesma região é recebida, a região pode permanecer marcada como suja, em vez de ter que marcar a região como suja pouco depois de ter marcado a região como limpa. Em tal modalidade, uma representação de memória volátil dos descritores de região suja pode ser gerada e utilizada para determinar quando marcar tais regiões como sujas ou limpas. Por exemplo, a representação na memória pode gravar os tempos da última solicitação de escrita a cada região, e pode marcar como limpas quaisquer regiões que não tiveram que ser escritas por uma duração definida. Além disso, a representação em memória pode possibilitar uma gravação em batelada de regiões "limpas", reduzindo ainda a quantidade de escritas do meio de armazenamento envolvidas no processo de rastreamento de região suja. Estes e outros usos do rastreamento em memória de um "conjunto de trabalho" de regiões sujas podem reduzir o número de acessos aos dispositivos de armazenamento, e, portanto, os custos de desempenho do rastreamento de região suja não volátil, sem reduzir significativamente a pressão do processo de limpeza. Estas e outras técnicas podem ainda reduzir os custos de desempenho de implementar o rastreamento de região suja sem prolongar significativamente o processo de limpeza durante uma recuperação a partir de uma falha do conjunto de armazenamento.
[009] Para a realização do acima e fins relacionados, a seguinte descrição e os desenhos anexos descrevem certos aspectos e implementações ilustrativos. Estes são indicativos de apenas alguns dos vários modos em que um ou mais aspectos podem ser empregados. Outros aspectos, vantagens e novas características da divulgação tornar-se-ão evidentes a partir da seguinte descrição detalhada quando considerados em conjunto com os desenhos anexos.
DESCRIÇÃO DOS DESENHOS
[0010] A Fig. 1 é uma ilustração de um cenário exemplar apresentando uma falha do conjunto de armazenamento que pode comprometer um conjunto de dados espelhados armazenados em vários dispositivos de armazenamento.
[0011] A Fig. 2 é uma ilustração de um cenário exemplar apresentando uma falha do conjunto de armazenamento que pode comprometer a consistência de conjunto de dados e um verificador (por exemplo, uma soma de verificação) do conjunto de dados.
[0012] A Fig. 3 é uma ilustração de duas técnicas que podem reduzir a incidência de dados comprometidos no conjunto de dados causados por uma falha, mas que podem assim fazer com custos significativos e/ou ineficácias.
[0013] A Fig. 4 é uma ilustração de um cenário exemplar apresentando o uso das técnicas apresentadas no presente documento para rastrear regiões sujas na mídia física de um conjunto de armazenamento.
[0014] A Fig. 5 é uma ilustração de fluxograma de um método exemplar de um rastreamento e gravação de mídia não volátil de regiões sujas de um conjunto de armazenamento de acordo com as técnicas apresentadas no presente documento.
[0015] A Fig. 6 é uma ilustração de fluxograma de um método de limpeza exemplar um conjunto de armazenamento de acordo com as regiões sujas indicadas no meio de armazenamento não volátil do conjunto de armazenamento de acordo com as técnicas apresentadas no presente documento.
[0016] A Fig. 7 é uma ilustração de um meio legível por computador exemplar compreendendo instruções executáveis por processador configuradas para incorporar uma ou mais das provisões descritas no presente documento.
[0017] A Fig. 8 é uma ilustração de um cenário exemplar apresentando um tipo de estrutura de dados que pode ser utilizada para rastrear regiões sujas na mídia física não volátil do conjunto de armazenamento de acordo com as técnicas apresentadas no presente documento.
[0018] A Fig. 9 é uma ilustração de um processo exemplar para atualizar uma tabela de regiões sujas em um dispositivo de armazenamento para rastrear regiões sujas de um conjunto de armazenamento de acordo com as técnicas apresentadas no presente documento.
[0019] A Fig. 11 é uma ilustração de uma máquina de estado exemplar incorporando o processo de rastrear regiões sujas de um conjunto de armazenamento de acordo com as técnicas apresentadas no presente documento.
[0020] A Fig. 11 ilustra um ambiente de computação exemplar em que uma ou mais das provisões descritas no presente documento pode ser implementada.
DESCRIÇÃO DETALHADA
[0021] O assunto reivindicado é agora descrito com referência aos desenhos, em que os números de referência são usados para se referir a elementos iguais completamente. Na seguinte descrição, para fins de explicação, numerosos detalhes específicos são descritos a fim de prover um entendimento completo do assunto reivindicado. Pode ser evidente, no entanto, que o assunto reivindicado pode ser praticado sem estes detalhes específicos. Em outras instâncias, estruturas e dispositivos são mostrados na forma de diagrama de bloco a fim de facilitar a descrição do assunto reivindicado.
A. Introdução
[0022] No campo de computação, muitos cenários envolvem o armazenamento de dados compreendendo um conjunto de armazenamento em um ou mais dispositivos de armazenamento não voláteis (por exemplo, unidades de disco rígido magnético e/ou ótico baseadas em disco, dispositivos de armazenamento no estado sólido, e circuitos de memória não voláteis). Muitos detalhes do armazenamento de dados podem variar, tal como o tamanho da palavra, o método de endereçamento, a repartição do espaço de armazenamento do dispositivo de armazenamento em uma ou mais posições, e a exposição de espaços alocados dentro do dispositivo de armazenamento como um ou mais volumes em um ambiente de computação. Além disso, os dispositivos de armazenamento podem operar independentemente ou com cooperação solta para prover um conjunto de armazenamento. Para análise, em uma série estruturada de acordo com um esquema de RAID 0, um conjunto de armazenamento pode simplesmente ser agregado a partir da capacidade provida por cada dispositivo de armazenamento, cada um dos quais pode operar independentemente dos outros discos. Alternativamente, os dispositivos de armazenamento podem ser configurados para prover várias características através de vários graus de coordenação firme. Por exemplo, em uma série estruturada como de acordo com um esquema de RAID 1, um conjunto de dispositivos de armazenamento pode, cada um, armazenar uma cópia idêntica de todo o conjunto de armazenamento; por exemplo, um conjunto de armazenamento de um terabyte pode ser armazenado como quatro cópias idênticas em quatro dispositivos de armazenamento de um terabyte, que podem interoperar para assegurar que qualquer solicitação para alterar o conjunto de armazenamento seja equivalentemente aplicada a todos os quatro dispositivos de armazenamento a fim de manter a sincronia. Um arquivo "espelhado" desta natureza pode apresentar taxas de acesso melhoradas; por exemplo, processos diferentes podem acessar o conjunto de armazenamento através de dispositivos de armazenamento diferentes, quadruplicando potencialmente a taxa de acesso para o conjunto de armazenamento que pode ser obtenível por qualquer dispositivo único. Além disso, este tipo de série demonstra durabilidade robusta, se uma ou mais unidades de disco rígido falha (por exemplo, devido à corrupção de dados, dano ou perda), o conjunto de armazenamento é ainda acessível através de outras unidades de disco rígido, e permanece intacto contanto que pelo menos uma unidade de disco rígido permaneça válida e acessível. No entanto, as vantagens destas características são desviadas em uma série de RAID 1 pela perda considerável de capacidade (por exemplo, o uso de quatro terabytes de espaço de unidades de disco rígido para armazenar um terabyte de dados). Outros esquemas de armazenamento podem prover algumas destas características de segurança e de desempenho com menos redução da capacidade (por exemplo, em um esquema de RAID 4, um conjunto de (n) unidades de espaço (s) expõe a capacidade de armazenamento total de apenas uma unidade de disco rígido que é reservada para armazenar informação de paridade, e pode recuperar a partir da falha de qualquer uma unidade de disco rígido na série).
[0023] Nestes e outros cenários, os conjuntos de dados podem ser armazenados no conjunto de armazenamento por vários dispositivos e processos. No entanto, muitas formas de falha podem ocorrer durante o uso do conjunto de armazenamento que podem comprometer o armazenamento de dados. Por exemplo, enquanto as escritas para o conjunto de armazenamento em benefício de vários processos estão acessando o conjunto de dados, uma falha de software pode ocorrer no processo de escrita, em um processo de gerenciamento de conjuntos de armazenamento, em um driver de dispositivo para o software ou no sistema operacional; o computador pode perder comunicação com o dispositivo de armazenamento (por exemplo, o dispositivo de armazenamento pode ser desconectado, ou uma rede com fio ou sem fio conectando o computador e o dispositivo de armazenamento pode falhar); ou o dispositivo de armazenamento pode experimentar uma falha de hardware (por exemplo, uma pane de cabeçalho em uma unidade de disco rígido ou uma interrupção de energia). Estas e outras formas de falha podem ocorrer repentinamente e sem aviso, e podem interromper o processo de dados de escrita do conjunto de armazenamento.
[0024] No caso de uma falha do conjunto de armazenamento durante uma ou mais escritas, alguns tipos de falha podem ser recuperáveis, ou podem resultar em uma perda insignificante de dados. Por exemplo, a falha pode ocorrer logo após os dados serem escritos para o conjunto de armazenamento e é recuperável; pode causar a perda de dados que podem ser regenerados ou que não estão disponíveis; ou podem causar a perda de uma pequena quantidade de dados em um conjunto de armazenamento comparativamente grande, tal como a perda de algumas mensagens de e-mail em um arquivo de mensagens de e-mail muito grande. No entanto, outros tipos de falha podem apresentar problemas significativos. Em particular, algumas associações podem existir ente dois ou mais conjuntos de dados que são escritos para o conjunto de armazenamento, e uma falha que ocorre enquanto escrevendo um primeiro conjunto de dados pode resultar em uma inconsistência no conjunto de dados associado. Tal inconsistência não somente pode comprometer a integridade do conjunto de dados que é escrito no momento da falha, mas também os conjuntos de dados associados. Naturalmente, em alguns cenários, uma falha completa da escrita e uma perda dos dados a serem escritos podem causar menos problemas do que uma escrita incompleta para o conjunto de armazenamento. Como um primeiro exemplo, se uma falha ocorre durante uma atualização de uma primeira cópia de um conjunto de dados espelhado, a inconsistência detectada entre esta cópia e outra cópia pode levantar uma questão sobre a integridade de ambas as cópias. Além do mais, se ambas as cópias estavam sendo atualizadas no momento da falha, e uma inconsistência é subsequentemente detectada, pode ser difícil determinar qual cópia completou com sucesso a escrita antes da falha e que cópia falhou para assim fazer. Como um segundo exemplo, se uma inconsistência é detectada entre um conjunto de dados e sua soma de verificação, pode ser difícil determinar se o conjunto de dados ou a soma de verificação está em erro. Além do mais, se uma soma de verificação é calculada a partir de vários conjuntos de dados, uma falha para concluir uma escrita para um conjunto de dados pode resultar em uma soma de verificação incorreta e uma redução de confiança não somente na integridade do conjunto de dados e da soma de verificação, mas em todos os outros conjuntos de dados representados pela soma de verificação. Nestes e outros cenários, a falha para concluir uma escrita para um conjunto de dados pode resultar em inconsistências que comprometem a confiabilidade de uma ampla faixa de dados no conjunto de armazenamento, incluindo até outros conjuntos de dados que são somente tangencialmente relacionados ao conjunto de dados incompletamente escrito.
[0025] As Figs. 1 e 2 apresentam dois cenários diferentes ilustrando as consequências de uma falha enquanto escrevendo a um conjunto de armazenamento. No cenário exemplar 100 da Fig. 1, um conjunto de armazenamento 102, compreendendo vários conjuntos de dados 104 (por exemplo, bits, bytes, palavras, setores, arquivos ou gravações) é armazenado em um conjunto de dispositivos de armazenamento 106, onde uma relação de espelhamento existe entre os conjuntos de dados 104. Em particular, os dispositivos de armazenamento 106 neste cenário exemplar 100 são configurados para armazenar cópias idênticas do conjunto de dados 104, tal como em um esquema de RAID 1. (O espelhamento pode ser realizado em um modo físico, por exemplo, escrevendo os mesmos dados para cada local físico em um conjunto de dispositivos de armazenamento 106 dimensionado identicamente, ou em um modo lógico, por exemplo, escrevendo dados para um local físico de cada dispositivo de armazenamento 106 correspondendo a um endereço lógico do conjunto de armazenamento 102.) De acordo com um primeiro ponto de tempo 112, quando uma escrita 110 é solicitada a um conjunto de dados 104 particular em um local particular 108 no conjunto de armazenamento 102, os dispositivos de armazenamento 106 podem, cada um, realizar a escrita 110 para o local 108 solicitado. No entanto, como ainda ilustrado no cenário exempl1r 100, problemas podem surgir devido à sincronia incompleta dos dispositivos de armazenamento 106; por exemplo, a escrita 110 para cada dispositivo de armazenamento 106 pode ser iniciada, realizada e concluída em tempos diferentes por dispositivos de armazenamento 106 diferentes. Tais diferenças de tempo podem surgir devido a diferenças de hardware por exemplo, um primeiro dispositivo de armazenamento 106 pode submeter prontamente o conjunto de dados 104 à mídia física, enquanto um segundo dispositivo de armazenamento 106 pode primeiramente armazenar o conjunto de dados 104 em uma memória de escrita temporária), mas pode surgir mesmo com dispositivos de armazenamento identicamente equipados (por exemplo, diferenças nas filas de entrada/saída de dispositivos de armazenamento 106 diferentes, ou diferenças na posição de setor inicial dos cabeçalhos de escrita de unidades de disco rígido diferentes no início de uma solicitação de escrita). Como um resultado, em um segundo ponto de tempo 114, as escritas 110 para dois dos dispositivos de armazenamento 106 podem ter sido completadas enquanto um terceiro dispositivo de armazenamento 106 continua a completar a escrita 110 (e pode, de fato, não ter ainda começado a submeter o conjunto de dados 104 ao conjunto de armazenamento 102).
[0026] Tais lapsos na sincronia de dispositivos de armazenamento 106 podem resultar em problemas significativos, por exemplo, se uma falha ocorre após o término de uma escrita 110 por um primeiro dispositivo de armazenamento 106 e antes do término da mesma escrita 110 por um segundo dispositivo de armazenamento 106. Por exemplo, em um terceiro ponto de tempo 116, enquanto uma terceira escrita 110 está sendo realizada para os dispositivos de armazenamento 106, uma falha 118 ocorre que interrompe a escrita 110 para todos os dispositivos de armazenamento 106. Mesmo se a falha 118 é temporária (por exemplo, uma perda momentânea de energia) e mesmo efêmera, a falha 118 pode resultar em uma inconsistência 122 devido às diferenças de tempo no dispositivo de armazenamento 106 (por exemplo, a escrita 110 pode ter sido concluída antes da falha 118 no primeiro e segundo dispositivos de armazenamento 106, mas não no terceiro dispositivo de armazenamento 106). Embora recuperando a partir da falha 118, ao identificar a inconsistência 122 entre os conjuntos de dados 104 esperados serem idênticos, pode ser difícil escolher a determinação de qual conjunto de dados 108 é exato. Neste cenário exemplar 100, pode ser lógico escolher a versão dos conjuntos de dados 108 armazenados na maioria dos dispositivos de armazenamento 106. No entanto, variações menores deste cenário exemplar 100 podem tornar tal escolha menos lógica; por exemplo, a inconsistência 122 pode surgir em cenários envolvendo um número igual de dispositivos de armazenamento 106, de modo que uma maior parte da escolha pode não estar disponível.
[0027] Nos cenários, tal como o cenário 100 exemplar da Fig. 1, a inconsistência 122 pode aplicar somente a conjuntos de dados 110 que foram escritos recentemente. No entanto, em outros cenários, falhas 118 similares também podem prejudicar a confiabilidade dos conjuntos de dados 104 que não foram escritos ou mesmo acessados em um longo tempo, e mesmo os armazenados em outros dispositivos de armazenamento 106 que não estavam em uso no momento da falha 118. No cenário 200 exemplar da Fig. 2, um conjunto de quatro dispositivos de armazenamento 106 é configurado no modo de um esquema de RAID 4, em que um conjunto de armazenamento 102 é alocado através de três dispositivos de armazenamento 106, e um quarto dispositivo de armazenamento 106 é configurado para armazenar um conjunto de verificadores 202 correspondendo a vários conjuntos de dados 104 armazenados nos primeiros três dispositivos de armazenamento 106. Os verificadores 202 pode compreender uma soma de verificação, tal como um bit de paridade que é computado por XORing junto com os bits armazenados em um local correspondente em cada um dos outros dispositivos de armazenamento 106. (Por exemplo, para um conjunto de dados 104 de um megabyte armazenado em um local físico ou lógico particular no conjunto de armazenamento 102 de cada dispositivo de armazenamento 106, cada um dos conjuntos de dados 104 de um megabyte pode ser XORed juntos para gerar um megabyte de dados de paridade que são armazenados no quarto dispositivo de armazenamento 106). Esta interoperação pode capacitar os dispositivos de armazenamento 106 a manter a integridade do conjunto de dados 102 através de algumas formas de perda de dados. Por exemplo, se qualquer um dos primeiros três dispositivos de armazenamento 106 é perdido, a porção do conjunto de armazenamento 120 armazenada no dispositivo de armazenamento 106 perdido pode ser reconstruída por XORing junto com os dados armazenados nos outros dois dispositivos de armazenamento 106 e os dados de paridade correspondentes armazenados no quarto dispositivo de armazenamento 106; e se o quarto dispositivo de armazenamento 106 é perdido, os dados de paridade podem simplesmente ser regenerados em um dispositivo de armazenamento 106 de substituição a partir dos conjuntos de dados 104 correspondentes armazenados nos primeiros três dispositivos de armazenamento.
[0028] Deste modo, a interoperação dos dispositivos de armazenamento 106 como ilustrado no cenário 200 exemplar da Fig. 2 possibilita a tolerância à falha mesmo no caso de uma perda súbita e permanente de qualquer um dispositivo de armazenamento 106. No entanto, os dispositivos de armazenamento 106 neste cenário 200 exemplar também demonstram a sincronia incompleta apresentada no cenário 100 exemplar da Fig. 1. Por exemplo, em um primeiro ponto de tempo 204, uma escrita 110 pode ser iniciada para um conjunto de dados 104 armazenado no segundo dispositivo de armazenamento 106,que envolve atualizar o verificador 202 para os conjuntos de dados 104 correspondentes armazenados no quarto dispositivo de armazenamento 106. No entanto, as escritas 110 não podem ser concluídas ao mesmo tempo; por exemplo, em um segundo ponto de tempo 206, a escrita 110 para o segundo dispositivo de armazenamento 106 pode ter concluída, mas a escrita 110 do verificador 202 no quarto dispositivo de armazenamento 106 não pode. Além do mais, uma falha 118 pode surgir antes da última escrita 110 ser concluída, e o quarto dispositivo de armazenamento 106 pode reter um verificador incorreto 118. Mesmo se limitada e breve, esta falha 118 pode prejudicar não somente o verificador 116 que foi escrito incompletamente para o quarto dispositivo de armazenamento 106 e o conjunto de dados 104 armazenado no segundo dispositivo de armazenamento 106 que foi recentemente apenas escrito completamente, apenas os conjuntos de dados 104 armazenados no primeiro e segundo dispositivos de armazenamento 106 que também são representados pelo verificador 122. Por exemplo, em um terceiro ponto de tempo 208, o terceiro dispositivo de armazenamento 106 pode experimentar uma falha 118; e em um quarto ponto de tempo 210, um processo de recuperação pode ser iniciado para reconstruir os conjuntos de dados 104 em um dispositivo de armazenamento 118 de substituição por XORing junto com os conjuntos de dados 104 correspondentes no primeiro e segundo dispositivos de armazenamento 106 e o correspondente verificador 202 no quarto dispositivo de armazenamento 106. No entanto, devido à inconsistência 122 causada pela falha 118 da escrita 110 ao quarto dispositivo de armazenamento 106 no segundo ponto de tempo 206.o XORing pode resultar em uma reconstrução de dados incorretos 212 no terceiro dispositivo de armazenamento 106. Estes dados incorretos 212 podem ser gerados ainda que este conjunto de dados 104 no terceiro dispositivo de armazenamento 106 não estivesse envolvido na falha 118 da escrita 110, mesmo se este conjunto de dados 104 não fosse escrito em um longo tempo, e mesmo se o terceiro dispositivo de armazenamento 106 não estivesse em uso ou mesmo acessível durante a falha 118 da escrita 110 para o quarto dispositivo de armazenamento 106. Assim, a única falha de uma escrita 202 pode compreender as capacidades tolerantes a falhas do conjunto de armazenamento 102 (isto é, a despeito da implementação de um esquema de RAID 4, o conjunto de armazenamento 102 perde a capacidade de recuperar a partir da falha 118 de um dispositivo de armazenamento 106 único). Mesmo consequências mais severas podem surgir em outros cenários; por exemplo, se a escrita 110 falhada ocorreu em um conjunto de dados 104 compreendendo um registro de inicialização mestre, um volume total dentro do conjunto de armazenamento 106, compreendendo possivelmente todo o conjunto de armazenamento 106, pode ser comprometido e inacessível.
[0029] Devido às consequências potencialmente catastróficas de falhas 118 de escritas 110, técnicas podem ser utilizadas para detectar e corrigir as inconsistências 122 resultantes. Como uma primeira de tais técnicas, vários tipos de processos de limpeza podem ser utilizados para detectar inconsistências no conjunto de armazenamento 102. Por exemplo, os conjuntos de dados 104 podem ser comparados com os verificadores 202 para detectar uma má combinação, ou cópias de conjuntos de dados 104 esperadas serem idênticas podem ser comparadas.
[0030] Mesmo conjuntos de dados 104 que não estão associados com outro conjunto de dados 104 ou o verificador 202 podem ser examinados para inconsistências, tal como corrupção de dados, e podem ocasionalmente ser automaticamente reparados. No entanto, uma varredura de um conjunto de armazenamento 102 total pode ser ineficaz e/ou proibitiva em muitos cenários. Por exemplo, a varredura pode ser demorada devido ao tamanho do conjunto de armazenamento 102, a produtividade do conjunto de armazenamento 102 (por exemplo, um conjunto de armazenamento 102 distribuído geograficamente pode ser acessível através de conexões de rede comparativamente de baixa produtividade), e/ou a complexidade da varredura (por exemplo, uma computação intensiva matemática de uma verificação de paridade sofisticada). Durante a varredura, o conjunto de armazenamento 102 permanece possivelmente inconsistente e vulnerável no caso de uma falha 118 de um dispositivo de armazenamento 106 como descrito no cenário exemplar 200 da Fig. 2, e pode ser imprudente permitir processos para acesso ao conjunto de armazenamento 102 devido à possibilidade de prover dados incorretos. Tais processos, portanto, podem ser bloqueados até a varredura ser concluída (ou pelo menos até os conjuntos de dados 104 utilizados pelo processo estarem limpos), resultando no período de inatividade de serviços ou pausa. Além disso, esta varredura demorada e cara de todo o conjunto de armazenamento 102 pode ser ativada por uma falha 118 potencialmente breve de até um único dispositivo de armazenamento 106 e pode ser desproporcional ao número de escritas pendentes 110 durante a falha 118. Naturalmente, mesmo se nenhuma escrita 110 estivesse em progresso no momento da falha 118, uma varredura de todo o conjunto de armazenamento 102 pode ter que ser invocada se o número de escritas pendentes 110 não puder ser determinado devido à possibilidade de uma inconsistência 122 que pode ter resultados catastróficos.
[0031] Em vista destas considerações, pode ser desejável prover mecanismos para armazenar informação sobre escritas pendentes 110 durante a operação comum do conjunto de armazenamento 102 no caso de uma falha 118 súbita de hardware e/ou software. Esta informação pode ser gravada como informação sobre o estado "sujo" do conjunto de armazenamento 102 que pode apresentar uma inconsistência 122 se uma falha ocorre. Além do mais, pode ser desejável gravar esta informação em uma memória não volátil a fim de reter a informação no caso de uma falha de energia. Este rastreamento pode possibilitar um processo de limpeza invocado após uma falha 118, de modo que o processo de limpeza pode ser limitado para varrer somente as áreas do conjunto de armazenamento 102 que estavam envolvidas em uma escrita pendente 110 em um momento de falha 118.
[0032] A Fig. 3 apresenta duas técnicas para gravar o estado "sujo" em uma memória não volátil para um conjunto de armazenamento 102 provido por um conjunto de dispositivos de armazenamento 106. Como uma primeira técnica exemplar 300, para cada bit de dados armazenados no conjunto de armazenamento 102, um indicador "sujo" 302 pode ser armazenado que indica uma escrita pendente 202 para o bit. O indicador "sujo" 302 para um bit pode ser fixado antes de iniciar a escrita 202 para o bit, e pode ser limpo após a escrita 202 estar concluída. A fim de limpar o conjunto de armazenamento 102, os indicadores "sujos" 302 dos bits podem ser examinados, e quaisquer indicadores "sujos" 302 que são fixados podem iniciar uma limpeza do bit associado (por exemplo, copiando sobre o bit inconsistente um bit correspondente a partir de uma cópia idêntica do conjunto de armazenamento 102 armazenado em um dispositivo de armazenamento 106 diferente).
[0033] A primeira técnica exemplar 300 pode apresentar algumas vantagens; por exemplo, pode ser obtido o armazenamento de informação sobre as escritas pendentes 104 em um meio de armazenamento não volátil, pode acarretar um processo de limpeza comparativamente simples envolvendo uma pequena quantidade de hardware ou software adicional, e pode reduzir a complexidade computacional da limpeza como comparado com outros métodos de detecção (por exemplo, realizando uma operação XOR em conjuntos de dados 104 grandes recuperados a partir de vários dispositivos de armazenamento 106). No entanto, esta primeira técnica exemplar 300 também apresenta muitas desvantagens. Como um primeiro exemplo, os indicadores "sujos" 302 consomem metade do espaço de armazenamento do conjunto de armazenamento 102. Como um segundo exemplo, o processo de varredura ainda envolve varrer todo o conjunto de armazenamento 102, e mesmo se a simplicidade relativa da detecção de varredura reduz a força computacional envolvida, o acesso de todo o conjunto de armazenamento 102 pode resultar ainda em um processo de limpeza demorado. Além do mais, se a taxa de acesso para o conjunto de armazenamento 102 é a área obstruída no processo de limpeza, a duração do processo de limpeza pode ser inalterada. Como um terceiro exemplo, se os indicadores "sujos" 302 são armazenados em proximidade física com os bits rastreados do dispositivo de armazenamento 106 (por exemplo, seguindo cada bit ou bytes na mídia física do dispositivo de armazenamento 106), uma falha 108 resultando na corrupção de um bit também pode resultar na corrupção do indicador "sujo" 302. Alternativamente, se os indicadores "sujos" 302 são armazenados em uma área diferente do mesmo dispositivo de armazenamento 106, então uma escrita 202 de qualquer bit único envolve três acessos a três partes diferentes do dispositivo de armazenamento 106 - por exemplo, uma primeira busca para e acesso da área armazenando os indicadores "sujos" 302 para marcar o bit como sujo; uma segunda busca para e acesso da área armazenando o bit para realizar a escrita 202, e um terceira busca para e acesso da área armazenando os indicadores "sujos" 302 para marcar o bit como limpo. Estes múltiplos acessos podem reduzir grandemente o desempenho (por exemplo, latência e produtividade) do dispositivo de armazenamento 106. Além do mais, o desgaste físico aumentado envolvido no uso regular do dispositivo de armazenamento 106 causado por esta variação de rastreamento de bits "sujos" pode acelerar inadvertidamente a falha física 118 do dispositivo de armazenamento 104.
[0034] A Fig. 3 também descreve uma segunda técnica exemplar 304 para rastrear informação "suja" para um conjunto de armazenamento 102 provido por um conjunto de dispositivos de armazenamento 106. Esta segunda técnica exemplar 304 envolve a inclusão de uma memória não volátil separada 306, por exemplo, um dispositivo de armazenamento no estado sólido compreendendo uma bateria 308 separada, onde indicadores "sujos" para os respectivos bytes do conjunto de armazenamento 102 podem ser gravados. Por exemplo, as solicitações para escritas 202 de respectivos conjuntos de dados 104 podem ser monitoradas, gravadas na memória não volátil separada 306, e limpos quando a escrita 202 está concluída.
[0035] Esta segunda técnica exemplar 304 apresenta várias vantagens, tanto em geral como com respeito à primeira técnica exemplar 304 ilustrada na Fig. 3. Como um primeiro exemplo, porque o acesso da memória não volátil separada 306 pode ocorrer simultaneamente com o desempenho da escrita 202 para o conjunto de armazenamento 102, o desempenho (por exemplo, latência e produtividade) do dispositivo de armazenamento 106 pode ser não diminuído pela inclusão desta técnica. Como um segundo exemplo, o armazenamento dos indicadores "sujos" 306 em uma parte separada da memória pode evitar a redução da capacidade do conjunto de armazenamento 102. Como uma terceira técnica, a separação do armazenamento dos indicadores "sujos" 302 a partir da mídia física dos dispositivos de armazenamento 106 pode preservar os indicadores "sujos" 302 no caso de uma falha 118 do conjunto de armazenamento 102; por exemplo, uma falha física em uma porção de um dispositivo de armazenamento 106 não pode afetar o armazenamento ou recuperação do indicador "sujo" 302 para os bytes armazenados na porção falhada, e no caso de uma falha de energia, a memória não volátil separada 306 pode continuar a operar utilizando a bateria 308. Como um quarto exemplo, o processo de limpeza pode ser consideravelmente demorado focalizando somente sobre os bytes indicados como sujos na memória não volátil separada 306.
[0036] No entanto, esta segunda técnica exemplar 304 também apresenta desvantagens distintas. Como um primeiro exemplo, a inclusão de hardware separado aumenta significativamente o custo e a complexidade do conjunto de armazenamento 102. Como um segundo exemplo, além da possibilidade de uma falha de um dispositivo de armazenamento 106, o gerenciamento do conjunto de armazenamento 102 também pode ter que competir com uma falha da memória não volátil separada 306. Além do mais, porque a memória não volátil separada 306 não é armazenada no conjunto de armazenamento 102, ela não é incluída nos mecanismos para promover a redundância e tolerância de falha do conjunto de armazenamento 102, e uma falha única da memória não volátil separada 306 pode resultar em uma perda de indicadores "sujos" 302 para todo o conjunto de armazenamento 102. Como um terceiro exemplo, o rastreamento dos indicadores "sujos" 302 para os respectivos bytes do conjunto de armazenamento 102 pode envolver um alto número e taxa de acessos à memória não volátil separada 306, que pode ter que prover alta produtividade e grande capacidade para satisfazer esta tarefa. Naturalmente, a memória não volátil separada 306 pode ter que prover produtividade suficiente para gravar atividades de escrita não apenas para o dispositivo de armazenamento 106 mais rápido no conjunto de armazenamento 102, mas para a taxa combinada de atividade de todos os dispositivos de armazenamento 106 servidos pela memória não volátil separada 306. Como um quarto exemplo, se a memória não volátil separada 306 não está integrada com um dispositivo de armazenamento 106 (por exemplo, se ela é implementada em um controlador de RAID), os indicadores "sujos" 302 podem ser menos portáveis do que os dispositivos de armazenamento 106. Por exemplo, no caso de uma falha não relacionada de um controlador de RAID, os dispositivos de armazenamento 106 podem ser relocalizados para e acessados por um controlador de RAID diferente, mas os indicadores "sujos" 302 podem permanecer dentro da memória não volátil separada 306 do controlador de RAID falhado completamente operacional. Naturalmente, pode não ser claro para o usuário porque os dispositivos de armazenamento 106 que não estavam envolvidos na falha do controlador de RAID podem ser inconsistentes, e podem, portanto, ter que ser limpos, quando inseridos em um controlador de RAID separado. Estas e outras desvantagens podem ser demonstradas por muitas técnicas assemelhando-se às na Fig. 3 para facilitar a recuperação do conjunto de armazenamento 102 a partir de uma falha 118 rastreando o estado das escritas 202 para o conjunto de armazenamento 102.
B. Técnicas Apresentadas
[0037] São apresentadas no presente documento técnicas para rastrear o estado de escritas 202 para um conjunto de armazenamento 102 provido por um conjunto de dispositivos de armazenamento 106 que podem possibilitar um processo de limpeza rápido em um modo tolerante a falhas, eficaz, e econômico. De acordo com estas técnicas, o conjunto de armazenamento 102 pode ser repartido em regiões de um tamanho de região particular (por exemplo, regiões de um gigabyte), e um descritor de região pode ser gerado para gravar a pendência de escritas 110 em um ou mais locais 106 dentro de cada região. O descritor de região pode ser armazenado no mesmo dispositivo de armazenamento 106 onde as regiões estão localizadas, ou em um dispositivo de armazenamento 106 diferente do conjunto de armazenamento 102. Quando uma solicitação para uma escrita 110 para um local particular 108 é recebida, uma modalidade destas técnicas pode primeiramente identificar a região compreendendo o local 108, e pode então determinar se o indicador de região da região compreendendo o local 108 já está marcado como sujo. Se não, a modalidade pode primeiramente atualizar o indicador de região para marcar a região como suja; mas se assim, então a modalidade pode prosseguir com a escrita 110 sem ter que atualizar o indicador de região. Após a escrita 110 estar concluída, a modalidade pode marcar o indicador de região da região como limpo. Notavelmente, a modalidade pode ser configurada não para atualizar a região como limpa em um modo imediato, mas pode esperar durante um breve período antes de fazer isso, no caso de solicitações subsequentes para escritas 110 para a mesma região (tanto uma sobrescrita do mesmo local 108, ou uma escrita 110 para um conjunto de dados 104 seguindo sequencialmente ou um conjunto de dados de outro modo próximo) segue prontamente a primeira escrita 110. Este retardo pode evitar uma reescrita do indicador de região para "limpo" seguida prontamente reescrevendo o indicador de região como "sujo", e pode, portanto, economizar acessos ao dispositivo de armazenamento 106 no avanço do desempenho e vida útil do dispositivo de armazenamento 106.
[0038] A Fig. 4 apresenta uma ilustração de um cenário exemplar apresentando o rastreamento de escritas 110 pendentes em um conjunto de armazenamento 102 provido por dois dispositivos de armazenamento 106 de acordo com as técnicas apresentadas no presente documento, onde os dispositivos de armazenamento 106 coordenam para armazenar cópias idênticas do conjunto de armazenamento 102 (por exemplo, um espelhamento do conjunto de armazenamento 102 de acordo com o esquema de RAID 1). Neste cenário exemplar 400, e de acordo com estas técnicas, o conjunto de armazenamento 102 provido pelos dispositivos de armazenamento 106 é repartido em regiões 402 de um tamanho de região (por exemplo, regiões de um gigabyte). Cada região 402 compreende os conjuntos de dados 104 armazenados dentro de um conjunto de locais 108 (por exemplo, uma faixa de endereços) dentro do conjunto de armazenamento 102. Em cada dispositivo de armazenamento 106, um descritor de região 404 pode ser gerado, onde regiões 402 podem ser marcadas como "sujas" ou "limpas" de acordo com o estado pendente ou concluído de escritas 110 realizado sobre os conjuntos de dados 104 compreendendo a região 402. Por exemplo, em um primeiro ponto de tempo 408, uma primeira escrita 110 é solicitada para um primeiro local 108 no conjunto de armazenamento 102, e os dispositivos de armazenamento 106 começam a realizar a primeira escrita 110 primeiramente identificando uma região 402 compreendendo o primeiro local 108, e então marcando 406 a região 402 como suja no descritor de região 404. Tendo marcado a região 402 como suja, os dispositivos de armazenamento 106 então iniciam a primeira escrita 110 para o local 108 no conjunto de armazenamento 102. Em um segundo ponto de tempo 410, o primeiro dispositivo de armazenamento 106 pode ter concluído a primeira escrita 110, mas não pode ainda ter marcado a região 402 como limpa no descritor de região 404. No entanto, devido à sincronia imperfeita dos dispositivos de armazenamento 106 no segundo ponto de tempo 410, o segundo dispositivo de armazenamento 106 pode não ter ainda concluído a primeira escrita 110.
[0039] Como ainda ilustrado no cenário exemplar 400 da Fig. 4, em um terceiro ponto de tempo 412, uma segunda escrita 110 pode ser solicitada para um local 108 diferente no conjunto de armazenamento 102. Os dispositivos de armazenamento 106, portanto, identificam a região 402 associada com o local 106 da segunda escrita 110, e determinam que este local 106 também está dentro da primeira região 402. Além do mais, devido à primeira região 402 já estar marcada como suja no descritor de região 404, os dispositivos de armazenamento 106 abstêm-se de atualizar redundantemente o descritor de região 404. Os dispositivos de armazenamento 106 então começam a realizar a escrita 110, e o segundo dispositivo de armazenamento 106 eventualmente conclui a escrita 110 e então (após um breve retardo, durante o qual nenhuma outra escrita 110 da primeira região 402 é solicitada) atualiza o descritor de região 404 para marcar a primeira região 402 como limpa. No entanto, a escrita 110 realizada pelo primeiro dispositivo de armazenamento 106 é interrompida por uma falha 118 (por exemplo, uma desconexão temporária, uma pane de software, ou uma falha de energia). Em um quarto ponto de tempo 414, o primeiro dispositivo de armazenamento 106 torna-se acessível novamente, e a tarefa de limpar 416 o primeiro dispositivo de armazenamento 106 é iniciada para assegurar a correção de escritas 110 que foram interrompidas pela falha 118 e que, se incorretas, podem apresentar uma inconsistência potencialmente catastrófica 122 no conjunto de armazenamento 102 (por exemplo, uma divergência das cópias idênticas do conjunto de armazenamento 102 armazenado no dispositivo de armazenamento 106). No entanto, em vez de comparar todos os conjuntos de dados 104 com o conjunto de dados 104 correspondente do segundo dispositivo de armazenamento 106, a limpeza 416 pode utilizar o descritor de região 404 e pode limpar somente as regiões 402 marcadas como sujas. Assim, no quarto ponto de tempo 414, porque somente a primeira região 402 é marcada como suja no descritor de região 404 do primeiro dispositivo de armazenamento 106, a limpeza 416 pode comparar os conjuntos de dados 102 da primeira região 402 com os conjuntos de dados 416 correspondentes do segundo dispositivo de armazenamento 106, e ao descobrir uma inconsistência, pode copiar o conjunto de dados 104 sobre o conjunto de dados 104 incorreto no primeiro dispositivo de armazenamento 106.
[0040] Deste modo, as técnicas apresentadas no presente documento, das quais um exemplo é descrito no cenário exemplar 404 da Fig. 4, podem possibilitar a limpeza 416 de um dispositivo de armazenamento 106 após uma falha 118. Além do mais, estas técnicas obtêm a limpeza 416 de um modo vantajoso como comparadas com outras técnicas, incluindo as ilustradas na Fig. 3. Como o primeiro exemplo ilustrativo, a limpeza 416 do primeiro dispositivo de armazenamento 106 é limitada aos conjuntos de dados 104 armazenados no subconjunto de regiões 402 onde pelo menos uma escrita 110 ocorreu recentemente no momento de uma pane 118; por exemplo, devido à segunda região 402 não ter experimentado uma escrita 110 em um espaço de tempo, a segunda região 402 não é incluída na limpeza 416. Como uma segunda vantagem exemplar, a marcação 406 de informação de suja e limpa para as regiões 406 compreendendo um conjunto de regiões 402, bem como a marcação diferida de tais regiões 402 como limpas após uma escrita 110, pode reduzir significativamente a perda de desempenho causada pelo rastreamento de regiões sujas. Por exemplo, deixando a marcação 406 da primeira região 402 como suja durante um breve período após a primeira escrita 110, os dispositivos de armazenamento 106 são capazes de omitir a marcação 406 da região 402 como suja, somente para marcar a mesma como suja novamente ao receber a segunda escrita 110 para outro local 106 dentro da mesma região 402, deste modo reduzindo os acessos por cada dispositivo de armazenamento 106 ao descritor de região 404 de três para um. Este ganho de eficácia não pode ter sido recebido se tanto a informação de região suja foi rastreada por local 108 ou se os dispositivos de armazenamento 106 atualizaram prontamente o descritor de região 404 após cada escrita 110 (por exemplo, como ilustrado na primeira técnica exemplar 300 da Fig. 3). Como uma terceira vantagem exemplar, o armazenamento do descritor de região 404 para regiões 406, em oposição a locais únicos 108, não reduz significativamente a capacidade disponível dos dispositivos de armazenamento 106 (em contraste com a primeira técnica exemplar 300 da Fig. 3, em que 50% da capacidade total do dispositivo de armazenamento 106 são usados para rastrear o estado de sujo ou limpo da capacidade disponível). Como uma quarta vantagem exemplar, o rastreamento de regiões sujas é obtido sem hardware adicional, e assim reduz a complexidade de custo, o consumo de energia e as oportunidades de falha das técnicas de rastreamento como comparado com a segunda técnica exemplar 304 da Fig. 3. Estas e outras vantagens exemplares podem ser obteníveis através do rastreamento de informação de região suja para os dispositivos de armazenamento 106 que provêm um conjunto de dados 102 de acordo com as técnicas apresentadas no presente documento.
C. Modalidades Exemplares
[0041] A Fig. 5 apresenta uma ilustração de uma primeira modalidade exemplar destas técnicas descrita como um método exemplar 500 de gravar escritas pendentes em um conjunto de dados 104. O método exemplar 500 pode ser implementado, por exemplo, como um conjunto de instruções armazenadas em um componente de memória de um dispositivo (por exemplo, um circuito de memória, um disco de uma unidade de disco rígido, um componente de memória no estado sólido, ou um disco magnético ou ótico) que, quando executadas por um processador de um dispositivo, fazem com que o dispositivo realize as técnicas apresentadas no presente documento. O método exemplar 500 começa em 502 e envolve executar 504 as instruções no processador. Especificamente, as instruções são configuradas para, em pelo menos um dispositivo de armazenamento 106, gerem 506 um descritor de região 404 repartindo o conjunto de armazenamento 502 armazenado no dispositivo de armazenamento 106 em pelo menos duas regiões 402 de acordo com um tamanho de região. As instruções também são configuradas para, ao receber 508 um conjunto de dados 104 a ser armazenado em um local 108 no conjunto de armazenamento 102, identificar 510 uma região 402 dentro do conjunto de armazenamento 102 compreendendo o local 108 do conjunto de dados 102, marcar 512 a região 402 como suja no descritor de região 404; e iniciar 514 o armazenamento do conjunto de dados 104 no local 108 no conjunto de armazenamento 102. As instruções também são configuradas para, depois de armazenar o conjunto de dados 104 no local 108 no conjunto de dados 102, marcar 516 a região 402 como limpa no descritor de região 404. Deste modo, as instruções obtêm a gravação de escritas 110 pendentes dentro do conjunto de dados 102 de acordo com as técnicas apresentadas no presente documento, e o método exemplar 500 assim termina em 518.
[0042] A Fig. 6 apresenta uma ilustração de uma segunda modalidade exemplar destas técnicas, descrita como um método exemplar 600 de limpar 416 um conjunto de armazenamento 102 armazenado por pelo menos um dispositivo de armazenamento 106 acessível a um computador tendo um processador. O método exemplar 600 pode ser implementado, por exemplo, como um conjunto de instruções armazenadas em um componente de memória de um dispositivo (por exemplo, um circuito de memória, um disco de uma unidade de disco rígido, um componente de memória no estado sólido ou um disco magnético ou ótico) que, quando executadas por um processador de um dispositivo, faz com que o dispositivo realize as técnicas apresentadas no presente documento. O método exemplar 600 começa em 602 e envolve executar 604 as instruções no processador. Especificamente, as instruções são configuradas para, a partir de pelo menos um dispositivo de armazenamento 106, recuperar 606 um descritor de região 404 repartindo o conjunto de dados 102 armazenado no dispositivo de armazenamento 106 em pelo menos duas regiões 402 de acordo com um tamanho de região. As instruções também são configuradas para, para as respectivas 608 regiões 402 marcadas como sujas no descritor de região 404, começar 610 a limpar 416 os conjuntos de dados 104 dentro da região 402; e ao concluir a limpeza de conjuntos de dados 104 dentro de uma região 402, marcar 612 a região 402 como limpa no descritor de região 404. Deste modo, as instruções obtêm a limpeza do conjunto de armazenamento 102 corrigindo as inconsistências 122 causadas pelas escritas 110 interrompidas por uma falha de acordo com as técnicas apresentadas no presente documento, e o método exemplar 600 assim termina em 518.
[0043] A Fig. 7 apresenta uma terceira modalidade exemplar destas técnicas ilustradas como um meio legível por computador exemplar 700 compreendendo instruções executáveis por processador 702 configuradas para aplicar as técnicas apresentadas no presente documento. Tais meios legíveis por computador podem incluir, por exemplo, mídias de armazenamento legíveis por computador envolvendo um dispositivo tangível, tais como um semicondutor de memória (por exemplo, um semicondutor utilizando tecnologias de memória de acesso aleatório estática (SRAM), memória de acesso aleatório dinâmica (DRAM), e/ou memória de acesso aleatório dinâmica síncrona (SDRAM)), um disco de uma unidade de disco rígido, um dispositivo de memória flash, ou um disco magnético ou ótico (tais como CD-R, DVD-R ou disquete) codificando um conjunto de instruções legíveis por computador que, quando executadas por um processador 712 de um dispositivo 710, faz com que o dispositivo 710 implemente as técnicas apresentadas no presente documento. Tais meios legíveis por computador também podem incluir (como uma classe de tecnologias que são distintas de mídias de armazenamento legíveis por computador) vários tipos de mídias de comunicação, tal como um sinal que pode ser propagado através de vários fenômenos físicos (por exemplo, um sinal eletromagnético, um sinal de onda sonoro, ou um sinal ótico) e em vários cenários com fio (por exemplo, através de uma Ethernet ou cabo de fibra ótica) e/ou cenários sem fio (por exemplo, uma rede de área local sem fio (WLAN) tal como WiFi, uma rede de área pessoal (PAN) tal como Bluetooth, ou uma rede de celular ou de rádio), e que codifica um conjunto de instruções legíveis por computador que, quando executadas por um processador de um dispositivo, faz com que o dispositivo implemente as técnicas apresentadas no presente documento. Em tal modalidade, as instruções executáveis por processador 702 podem ser configuradas para realizar um método de gravar escritas 110 pendentes em dispositivos de armazenamento 106 compreendendo um conjunto de armazenamento 102, tal como o método exemplar 500 da Fig. 5. Em outra modalidade, as instruções executáveis por processador 702 podem ser configuradas para realizar um método de limpar dispositivos de armazenamento 106 compreendendo um conjunto de armazenamento 102 utilizando um descritor de região 404 armazenado em pelo menos um dos dispositivos de armazenamento 106, tal como o método exemplar 600 da Fig. 6. Muitas de tais meios legíveis por computador podem ser idealizadas pelos peritos na técnica que são configuradas para operar de acordo com as técnicas apresentadas no presente documento.
D. Variações
[0044] As técnicas discutidas no presente documento podem ser idealizadas com variações em muitos aspectos, e algumas variações podem apresentar vantagens adicionais e/ou reduzir as desvantagens com respeito a outras variações destas e outras técnicas. Além do mais, algumas variações podem ser implementadas em combinação, e algumas combinações podem apresentar vantagens adicionais e/ou desvantagens reduzidas através de cooperação sinergísticas. As variações podem ser incorporadas em várias modalidades (por exemplo, o método exemplar 500 da Fig. 5 e o método exemplar 600 da Fig. 6) para conferir vantagens individuais e/ou sinergísticas em tais modalidades.
D1. Cenários
[0045] Um primeiro aspecto que pode variar entre as modalidades destas técnicas refere-se aos cenários em que tais técnicas podem ser utilizadas. Como uma primeira variação deste primeiro aspecto, estas técnicas podem ser usadas em conjunto com muitos tipos de conjuntos de armazenamento 102 compreendendo vários tipos de conjuntos de dados 104, incluindo sistemas de armazenamento binários armazenando vários tipos de objetos binários; sistemas de arquivos armazenando arquivos; bibliotecas de mídia armazenando objetos de mídia; sistemas de objetos armazenando muitos tipos de objetos; bases de dados armazenando gravações; e sistemas de email armazenando mensagens de e-mail. Como uma segunda variação deste primeiro aspecto, estas técnicas podem ser usadas com muitos tipos de dispositivos de armazenamento 106, incluindo unidades de disco rígido, dispositivos de armazenamento no estado sólido, circuitos de memória não voláteis, dispositivos de armazenamento baseados em fita, e discos magnéticos e óticos. Tais dispositivos de armazenamento 106 também podem ser diretamente conectados a um dispositivo 710 (tal como um computador) implementando estas técnicas; podem ser acessíveis através de uma rede de área local com fio ou sem fio (por exemplo, uma rede de WiFi 802.11 ou conexão ad-hoc, ou uma conexão de infravermelho); e/ou podem ser acessíveis através de uma rede de longa distância sem fio (por exemplo, uma rede de celular ou a Internet). Além do mais, estas técnicas podem ser usadas com dois ou mais dispositivos de armazenamento 106 operando independentemente (por exemplo, dispositivos de armazenamento 106 que são acessados independentemente através de um processo de software); operando com interoperação solta (por exemplo, dispositivos de armazenamento 106 que operam independentemente, mas que são informados de e podem se comunicar com outros dispositivos de armazenamento 106 compartilhando o conjunto de armazenamento 102); ou operando com um controlador de interoperação estanque (por exemplo, uma Série Redundante de Discos Baratos (RAID) gerenciando vários dispositivos de armazenamento 106 como componentes de um sistema de armazenamento). Como uma quarta variação deste primeiro aspecto, porções ou todas estas técnicas podem ser implementadas dentro de um ou mais componentes no ambiente de computação, tal como um conjunto de instruções de software armazenadas em um volátil ou não volátil de um computador ou dispositivo tendo acesso aos dispositivos de armazenamento 106 (por exemplo, um processo de sistema operacional ou um driver de hardware); por um sistema de armazenamento configurado para fazer interface com os dispositivos de armazenamento 106 (por exemplo, um controlador de RAID); ou nos respectivos dispositivos de armazenamento 106 do conjunto de armazenamento 102.
[0046] Como uma quinta variação deste primeiro aspecto, muitos tipos de técnicas de limpeza podem ser usados para limpar os conjuntos de dados 04 em uma região 102. Como um primeiro exemplo, e como ilustrado no cenário exemplar 100 da Fig. 1, o conjunto de armazenamento 102 pode armazenar (no mesmo dispositivo de armazenamento 106 e/ou em dispositivos de armazenamento 106 diferentes) cópias idênticas de um conjunto de dados 104. Nesta variação, uma técnica de limpeza com espelhamento pode ser utilizada para limpar uma cópia de um conjunto de dados 104 comparando a mesma com outra cópia do conjunto de dados 104 para detectar e corrigir inconsistências 122 (por exemplo, para respectivos conjuntos de dados 402 correspondendo com um conjunto de dados de espelho armazenado em uma segunda região 402 no conjunto de armazenamento 102, sincronizando o conjunto de dados 104 com o conjunto de dados de espelho). Como um segundo exemplo, e como ilustrado no cenário 200 exemplar da Fig. 2, o conjunto de armazenamento 102 pode armazenar (no mesmo dispositivo de armazenamento 106 e/ou em dispositivos de armazenamento 106 diferentes) verificadores 202 de respectivos conjuntos de dados 104, tal como uma soma de verificação ou código de Hash, que pode ser comparado com os conteúdos de um conjunto de dados 104 (e possivelmente outros conjuntos de dados 104 no conjunto de armazenamento 102) para detectar inconsistências 122. Muitos tipos de verificadores podem ser incluídos em tais cenários. Por exemplo, verificadores 202 mais simples, tal como um bit de paridade, podem ser eficazmente computados para um conjunto de dados 104, e podem levar a uma rápida detecção da presença ou ausência de uma inconsistência 122 em um conjunto de dados 104. Alternativamente, verificadores 202 complexos podem ser utilizados, que apresentam características adicionais, tais como confiabilidade aumentada, detalhe aumentado (por exemplo, indicando a porção de um conjunto de dados 104 que é inconsistente) e/ou capacidades de correção de erro. Nestas variações, uma técnica de limpar verificador pode ser utilizada para limpar um conjunto de dados 104 verificando o verificador do conjunto de dados 104 para identificar e possivelmente corrigir as inconsistências 122. Como um terceiro exemplo, um conjunto de dados 104 pode ser limpo simplesmente inspecionando os conteúdos, tal como corrupção de um conjunto de dados 104 que não existe em um tempo anterior. Quando as inconsistências 122 são detectadas, técnicas de reconstrução podem ser utilizadas para reparar os dados corrompidos e/ou salvar os dados restantes no conjunto de dados 104. Os peritos na técnica podem identificar muitos tipos de variações de cenários em que as técnicas apresentadas no presente documento podem ser úteis.
D2. Variações Estruturais de Descritos de Região
[0047] Um segundo aspecto que pode variar entre as modalidades destas técnicas refere-se à natureza do descritor de região 404. Como uma primeira variação deste segundo aspecto, o conjunto de armazenamento 102 pode ser repartido em regiões 402 identificadas dentro do descritor de região 404 de muitos modos. Como um primeiro exemplo desta primeira variação, a seleção de um tamanho de região pode afetar vários aspectos destas técnicas. Por exemplo, pode ser apreciado (particularmente em vista das técnicas exemplares ilustradas na Fig. 3) que o rastreamento do estado sujo ou limpo de cada local 108 no conjunto de armazenamento 102 pode resultar em uma perda considerável de capacidade do conjunto de armazenamento 102 - talvez tanto quanto 50% - e, naturalmente, pode não melhorar significativamente a duração do processo de limpeza, uma vez que varrer todo o conjunto de armazenamento 102 para ler os bits sujos e limpos para cada bit pode durar contanto que varrendo todo o conjunto de armazenamento 102 para detectar as inconsistências 122. Também pode ser apreciado que o rastreamento de estado limpo ou sujo para uma porção muito grande do conjunto de armazenamento 102, tal como armazenar uma marcação 406 "limpa" ou "suja" única para cada volume, cada divisão, ou cada dispositivo de armazenamento 106, pode não reduzir aceitavelmente a natureza altamente demorada da recuperação, uma vez que a escrita para um local único 206 em um volume grande ou dispositivo de armazenamento 106 pode levar a uma limpeza 416 de todo o volume ou dispositivo de armazenamento 106. Em vista destas considerações, pode ser apreciado que a seleção do tamanho de região pode afetar consideravelmente o desempenho das técnicas apresentadas no presente documento. No entanto, pode existir uma faixa de opções aceitáveis para o tamanho de região, cada uma das quais pode apresentar algumas trocas. Por exemplo, a seleção de um tamanho de região maior pode possibilitar o rastreamento de regiões "sujas" ou "limpas" em um nível mais grosseiro de granularidade que reduz o consumo da capacidade do conjunto de armazenamento 102 para o uso de rastreamento de escritas 110 pendentes, e também reduz a frequência com a qual o descritor de região 404 é atualizado para marcar as regiões 402 como limpas ou sujas, mas também pode acarretar uma limpeza 416 mais longa após uma falha 118, uma vez que a marcação 406 de uma região 402 como suja resulta na limpeza 416 de uma região maior 402. Inversamente, selecionar um tamanho de região menor pode resultar no rastreamento de escritas 110 pendentes com granularidade mais fina, possibilitando uma limpeza 416 comparativamente rápida após uma falha 118 devido a especificações mais limitadas e precisas dos conjuntos de dados 104 que devem ser limpos, mas pode resultar em consumo maior da capacidade do conjunto de armazenamento 102 (uma vez que o descritor de região 404 contém informação para mais regiões 402) e/ou um penalidade de desempenho maior na operação de rotina do conjunto de armazenamento 102 uma vez que um conjunto de escritas 110 para vários locais 108 é provável de estar associado com mais regiões 402, respectivamente, cobrindo porções menores do conjunto de armazenamento).
[0048] Em vista destas considerações, muitas técnicas podem ser usadas para selecionar ou especificar o(s) tamanho(s) de região das regiões 402 do conjunto de armazenamento 102. Por exemplo, um tamanho de região pode ser definido fixamente para um conjunto de armazenamento 102 particular ou dispositivo de armazenamento 106. Tamanhos de região diferentes também podem ser selecionados para dispositivos de armazenamento 106 diferentes (por exemplo, dispositivos de armazenamento 106 usados nas circunstâncias onde as características de desempenho não afetam significativamente o ambiente de computação, tal como arquivo, podem usar um tamanho de região menor que reduz mais significativamente o desempenho, mas provê limpeza 416 e recuperação de falhas 118 mais rápidas) e/ou para conjuntos de armazenamento 102 diferentes (por exemplo, dados para os quais acessibilidade é de grande valor podem ser rastreados utilizando um tamanho de região menor que possibilita limpeza 416 e recuperação de falhas 118 mais rápidas), e podem ainda utilizar tamanhos de região diferentes para regiões 402 diferentes no mesmo conjunto de dados 102. O tamanho de região também pode ser ajustado baseado nas características de desempenho dos dispositivos de armazenamento 106 e/ou conjuntos de armazenamento 102, e/ou baseado em preferências de usuário. Alternativamente, ou, além disso, pode ser permitido a um usuário escolher um tamanho de região; por exemplo, uma modalidade pode apresentar várias opções a um usuário para tamanhos de região, e pode prever um tempo de recuperação envolvido na recuperação de uma falha 118 em vista de cada tamanho de região. Como uma alternativa, o usuário pode especificar um período de recuperação máximo aceitável e uma modalidade destas técnicas pode selecionar um tamanho de região que provavelmente possibilita a recuperação de falhas 118 dentro de um período de recuperação máximo aceitável.
[0049] Como uma segunda variação deste segundo aspecto, o descritor de região 404 pode ser estruturado de várias formas, por exemplo, como uma série, lista de links, uma tabela, uma base de dados ou um mapa de bits. Várias estruturas de dados podem apresentar vantagens particulares. Como um exemplo, para os conjuntos de armazenamento 102 compreendendo endereços armazenados com um sistema de endereçamento tendo uma dimensão única (por exemplo, como uma sequência de endereços numérica única), o descritor de região 404 pode ser implementado como uma série de regiões sujas, compreendendo um conjunto de entradas de série que corresponde sequencialmente às regiões 402 do conjunto de armazenamento 102 e pode marcar uma região 402 como simplesmente suja ou limpa acessando a entrada de série da série de regiões sujas, deste modo obtendo o tempo de acesso O(1) para a marcação 406 para qualquer região 402. Alternativamente, o descritor de região 404 pode ser implementado como um jornal sequencial, onde cada marcação 406 é escrita em sequência seguindo a marcação 406 previamente submetida independente do local 108 no conjunto de armazenamento 102 do conjunto de dados 104 assim marcado. Este descritor de região 404 pode resultar em sucesso de leitura inferior à marcação 406 para uma região 402 particular (uma vez identificando a marcação 406 atual para uma entrada acarreta a varredura de uma porção significativa do jornal, e talvez de todo o jornal, a fim de encontrar uma entrada), mas pode possibilitar a vantagem de mais desempenho de escritas sequenciais para o descritor de região 402. Além disso, as semânticas dos conteúdos do descritor de região 404 podem conter informação em modos diferentes. Por exemplo, o descritor de região 404 pode marcar uma região 402 como "limpa" marcando especificamente 406 uma gravação ou bit representando a região 402, ou pode assim fazer expulsando a partir do descritor de região 404 as gravações para as regiões 402 que foram limpas. Estas variações representam uma diferença semântica sobre se uma região 402 que não tem uma gravação no descritor de região 404 foi marcada como limpa (talvez recentemente), ou simplesmente não foi marcada tanto como suja como limpa (por exemplo, não foi submetida a uma escrita 104 durante uma quantidade significativa de tempo).
[0050] Como uma terceira variação deste segundo aspecto, o descritor de região 404 pode indicar os locais 108 de regiões 402 dentro do conjunto de armazenamento 102 de várias formas. A Fig. 8 apresenta uma ilustração de um cenário exemplar 800 apresentando algumas técnicas diferentes para especificar os locais 106 dentro e um conjunto de armazenamento 102 que são representados pelas respectivas regiões 402. Neste cenário exemplar 800, um dispositivo de armazenamento 106, tal como uma unidade de disco rígido, é configurado para armazenar dados compreendendo pelo menos uma porção de um conjunto de armazenamento 102. O dispositivo de armazenamento 106 é configurado para armazenar dados em respectivos endereços físicos 802, e contém hardware que traduz os endereços em locais físicos no meio de armazenamento (por exemplo, um disco, setor e trilha). Os dados armazenados no dispositivo de armazenamento 106 também podem ser armazenados de acordo com um formado padronizado; por exemplo, os dados armazenados na mídia física podem começar com uma tabela de partição, especificando os locais e descrições de uma ou mais partições 804, cada uma das quais compreendendo um ou mais volumes lógicos 806 (por exemplo, as unidades apresentadas no ambiente operacional de um computador). O conjunto de armazenamento 102 pode ser armazenado em um ou mais volumes lógicos 806, e pode alocar conjuntos de dados 104 em um volume lógico 806 ou através de vários volumes lógicos 806. Consequentemente, um descritor de região 404 pode identificar as regiões 402 para vários locais 108 no conjunto de armazenamento 102 de várias formas. Por exemplo, o descritor de região 404 pode utilizar uma região física referenciando um esquema que identifica os locais físicos de respectivas regiões 402 nos dispositivos de armazenamento 106 do conjunto de armazenamento 102. Como um primeiro de tal exemplo, o descritor de região 404 pode ser implementado como uma primeira tabela de regiões 808 compreendendo gravações que indicam uma faixa de locais físicos 106 no meio de armazenamento do dispositivo de armazenamento 106 que são representados por cada região 402. Como um segundo de tal exemplo, um descritor de região 404 pode ser implementado como uma segunda tabela de regiões 810 compreendendo gravações indicando, para respectivas regiões 402, a partição 804 e o desvio dentro da partição 804 onde cada região 402 começa. O descritor de região 404 também pode armazenar e representar o(s) tamanho(s) de região de uma ou mais regiões 402 (por exemplo, como parte de uma gravação de região ou um descritor separado do conjunto de armazenamento 102). Como um terceiro exemplo, o descritor de região 404 pode ser implementado como um mapa de bits de região 812, onde as partições 804 podem ser repartidas em uma série de regiões 402 de um tamanho de região particular, e o mapa de bits pode armazenar um indicador de um bit do estado "sujo" ou "limpo" da região 402. Alternativamente, o descritor de região 404 pode utilizar um esquema de referência de região lógica que identifica os locais lógicos de respectivas regiões 402 dentro do arranjo lógico de dados no conjunto de armazenamento 102. Com tal exemplo, o descritor de região 404 pode ser implementado como uma terceira tabela de regiões 814 que identifica o local lógico em cada volume lógico 806 onde cada região 402 começa. Pode ser apreciado que as técnicas de endereçamento que são mais estreitamente identificadas com os locais físicos 106 no meio de armazenamento do dispositivo de armazenamento 106 podem envolver pouca computação para o dispositivo de armazenamento 106, mas mais computações para processos que acessam as regiões 402 logicamente, e vice-versa.
[0051] Como uma quarta variações deste segundo aspecto, as modalidades destas técnicas podem ser configuradas para armazenar o descritor de região 404 em vários locais no dispositivo de armazenamento 106. Como um primeiro exemplo desta quarta variação, o descritor de região 404 pode ser armazenado em um local particular no dispositivo de armazenamento 404 (por exemplo, no topo de uma partição 804 armazenando conjuntos de dados 104 do conjunto de armazenamento 102, ou em um local definido fora das partições 804 armazenando os conjuntos de dados 104). Como um segundo exemplo desta quarta variação, o descritor de região 404 pode ser armazenado em um primeiro dispositivo de armazenamento 106 para rastrear escritas 110 pendentes para regiões 402 de um segundo dispositivo de armazenamento 10.
[0052] Como uma quinta variação deste segundo exemplo, uma modalidade destas técnicas pode ser configurada para armazenar dois ou mais descritores de região 404 para o conjunto de armazenamento 102. Como um primeiro exemplo desta quinta variação, duas ou mais cópias idênticas de um descritor de região 404, representando o mesmo conjunto de regiões 402 do conjunto de armazenamento 102, podem ser armazenadas nos mesmos e/ou dispositivos de armazenamento 106 diferentes. O armazenamento de cópias idênticas pode melhorar a tolerância à falha do conjunto de armazenamento 102 (por exemplo, no evento de uma falha irrecuperável de um dispositivo de armazenamento 106, uma falha de uma porção de um dispositivo de armazenamento 106 armazenando o descritor de região 404, ou uma corrupção dos dados em um descritor de região 404, tal como a ocorrência de uma falha 118 enquanto realizando a escrita 110 para o descritor de região 404), a recuperação de uma falha 118 pode ser realizada através do uso de outra cópia do descritor de região 404. Pode ser apreciado que enquanto uma falha do descritor de região 404 é improvável de ser catastrófica, porque uma limpeza 416 completa do conjunto de armazenamento 102 pode ser realizada como uma medida de apoio pode, contudo, ser vantajoso armazenar uma segunda cópia do descritor de região 404 a fim de agilizar a recuperação mesmo se a primeira cópia se tornar corrompida ou indisponível. Além disso, pode ser vantajoso armazenar as cópias idênticas do descritor de região 404 em múltiplos dispositivos de armazenamento 106, e/ou em áreas diferentes do mesmo dispositivo de armazenamento 106 (por exemplo, no evento de dano a uma porção de um dispositivo de armazenamento 106 onde uma primeira cópia do descritor de região 404 é armazenada, tal como um primeiro setor físico ou uma primeira porção de um sistema de arquivo, uma segunda cópia idêntica do descritor de região 404 que foi armazenada em uma porção diferente do dispositivo de armazenamento 106 pode ser recuperável e utilizável).
[0053] Como um segundo exemplo desta quinta variação, múltiplas cópias do descritor de região 404 para um conjunto particular de regiões 402 podem ser armazenadas em um ou mais dispositivos de armazenamento 106, mas em vez de serem idênticas em todos os tempos, os descritores de região 404 podem ser atualizados sequencialmente para refletir o estado limpo e sujo do conjunto de armazenamento 102 em tempos diferentes. Esta atualização sequencial pode ser vantajosa, por exemplo, se uma falha 118 ocorre enquanto atualizando uma cópia do descritor de região 404 que deixa o descritor de região 404 em um estado inconsistente ou corrompido, porque a outra cópia pode estar disponível para uso na limpeza 416 e recuperação. Como um primeiro cenário para este segundo exemplo, duas cópias do descritor de região 404 podem ser retidas em um dispositivo de armazenamento 104 que representam ambas o mesmo conjunto de regiões 402, mas a fim de atualizar os descritores de região 404, uma primeira atualização pode ocorrer sobrescrevendo uma cópia do descritor de região 404 e a atualização seguinte podem ocorrer sobrescrevendo a outra cópia do descritor de região 404. Além do mais, quando uma modalidade destas técnicas sobrescrever um descritor de região 404, a modalidade também pode escrever um verificador 202 (por exemplo, uma soma de verificação) para o descritor de região 404, e um indicador de sequência (por exemplo, um número inteiro de incrementação ou o tempo de sobrescrita. Após uma falha 110, a modalidade pode examinar todos os descritores de região 404 disponíveis, e pode selecionar para uso na limpeza do descritor de região 404 que tem um indicador de sequência mais alto (por exemplo, o número inteiro de incrementação mais alto; ou o tempo mais recente de escrita) que também é válido de acordo com o verificador 202. Pode ser apreciado que a realização da limpeza 416 utilizando uma versão levemente obsoleta do conjunto de regiões pode não resultar na falha para limpar uma região 402 tendo uma inconsistência 118 (por exemplo, um falso negativo), porque uma escrita 110 para uma região 402 começa somente após a marcação 406 da região 402 ser totalmente submetida ao conjunto de armazenamento 102 na forma de um descritor de região 404 completamente escrito tendo um indicador de sequência mais alto e um verificador 202 válido, assim uma falha 118 enquanto escrevendo o descritor de região 406 não resulta na falha para a gravação de uma escrita 110 pendente. Inversamente, o uso de um descritor de região 402 obsoleto pode resultar em um falso positivo (por exemplo, uma falha 118 durante a escrita de um descritor de região 404 pode resultar na perda de uma marcação 404 de uma região anteriormente suja 404 como limpa, e a região 404 pode ser tratada incorretamente como suja durante a recuperação devido à marcação 406 encontrar-se no descritor de região 404 obsoleto), mas esta imprecisão simplesmente resulta em uma recuperação marginalmente demorada envolvendo a limpeza 416 de uma região 404 que se sabia estar limpa.
[0054] Alternativamente, ou, além disso, duas ou mais cópias de um descritor de região 404 para um conjunto de regiões 402 podem ser armazenadas redundantemente em cada um dos dispositivos de armazenamento 106 de um conjunto de armazenamento 102. A fim de atualizar o descritor de região 404 para o conjunto de armazenamento 102, uma modalidade pode iniciar uma sobrescrita do descritor de região 404 em paralelo em todos os dispositivos de armazenamento 106. Além disso, cada dispositivo de armazenamento 106 pode incluir um verificador 202 e um indicador de sequência com o descritor de região 404 no caso de uma falha 118 ocorrer enquanto um ou mais dos dispositivos de armazenamento 106 está atualizando o descritor de região 106. A recuperação de uma falha 118 de um ou mais dispositivos de armazenamento 106 do conjunto de armazenamento 102 pode envolver examinar primeiro todos os descritores de região 106 disponíveis para identificar, entre todas as cópias que são validadas pelos respectivos verificadores 202, a cópia que tem o indicador de sequência mais alto. Naturalmente, pode ser vantajoso configurar o conjunto de armazenamento 102 para armazenar duas cópias do descritor de região 494 em cada dispositivo de armazenamento 106; por exemplo, no evento em que uma falha 118 ocorre enquanto atualizando os descritores de região 404 em todos os dispositivos de armazenamento 106, a cópia levemente obsoleta em qualquer dispositivo de armazenamento 106 pode ser utilizável. Alternativamente, pode ser similarmente vantajoso não atualizar todos os descritores de região 404 ao mesmo tempo, mas realizar uma primeira atualização dos descritores de região 404 para as cópias armazenadas em um primeiro subconjunto dos dispositivos de armazenamento 106, e realizar uma atualização seguinte dos descritores de região 404 para as cópias armazenadas em um segundo subconjunto de dispositivos de armazenamento 106.
[0055] Como um terceiro exemplo desta quinta variação, um conjunto de armazenamento 102 pode incluir dois ou mais descritores de região 404 que gravam, respectivamente, atualizações para regiões 402 diferentes do conjunto de armazenamento 102. Como um primeiro de tal exemplo, um primeiro descritor de região 404 pode gravar informação de região suja e limpa para regiões 402 do conjunto de armazenamento 102 armazenado no primeiro dispositivo de armazenamento 104, e um segundo descritor de região 404 pode gravar informação de região suja e limpa para regiões 402 do conjunto de armazenamento 102 armazenado no segundo dispositivo de armazenamento 104. Como um segundo de tal exemplo, após repartir o conjunto de armazenamento 102 em regiões 402, uma modalidade destas técnicas pode gerar dois ou mais descritores de região 404 cada um armazenando a informação "suja" e "limpa" para um conjunto de regiões, compreendendo um subconjunto de regiões 402 (independente dos locais físicos destas regiões 402 entre os dispositivos de armazenamento 106 do conjunto de armazenamento 102), pode ser gerado e armazenado em um ou mais dispositivos de armazenamento 106. A repartição de regiões 402 em conjuntos de regiões pode ser selecionada, por exemplo, em vista das características dos respectivos conjuntos de dados 104 (por exemplo, um primeiro conjunto de regiões pode compreender regiões 402 armazenando dados mais valiosos ou sensíveis, enquanto um segundo conjunto de regiões pode compreender regiões 402 armazenando dados menos valiosos). Alternativamente, ou, além disso, tal distribuição das regiões sobre os dois ou mais descritores de região 404 pode ser obtida explicitamente (por exemplo, gerando dois ou mais descritores de região 404 independentes cada um representando um conjunto de regiões 402 projetado) ou implicitamente (por exemplo, distribuindo o espaço de armazenamento para o descritor de região 404 através de duas ou mais alocações de espaço, tais como dois ou mais dispositivos de armazenamento 106). Além do mais, em alguns cenários, pode ser desejável rastrear informação de suja e limpa somente para um subconjunto de regiões 402 do conjunto de armazenamento 102; por exemplo, regiões 402 compreendendo dados que são descartáveis tal como um cache ou índice que, se corrompidos, podem ser regenerados a partir de outros dados do conjunto de armazenamento 102, não podem ser rastreadas no todo.
[0056] Como uma sexta variação deste segundo aspecto, o(s) descritor(es) de região 404 pode(m) ser armazenado(s) de um modo compatível com as técnicas de sincronização do conjunto de armazenamento 102 pode prover vários aspectos e vantagens aos descritores de região 404, tal como desempenho aumentado através da capacidade de acessar qualquer cópia idêntica do descritor de região 404 em dispositivos de armazenamento 106 diferentes, e/ou tolerância à falha como o conjunto de armazenamento 102 (por exemplo, se o conjunto de armazenamento 102 implementa uma técnica de armazenamento tolerante à falha, tal como uma capacidade de recuperação a partir de uma falha de dispositivos de armazenamento 106 dentro de uma tolerância à falha do dispositivo de armazenamento, o descritor de região 404 pode ser armazenado utilizando a mesma técnica de armazenamento tolerante à falha). Alternativamente, um descritor de região 404 pode ser armazenado de um modo que possibilite um conjunto de técnicas separado, por exemplo, respectivos descritores de região 404 podem ser armazenados com um verificador de descritores de região do descritor de região 404 e atualizados quando uma região 402 é marcada como "limpa" ou "suja" no descritor de região 404, e podem, portanto, possibilitar uma verificação da integridade do descritor de região 404. Os peritos na técnica podem conceber muitos tipos e formatos de descritores de região 404 que podem ser gerados e utilizados de acordo com as técnicas apresentadas no presente documento.
D3. Variações de Uso de Descritores de região
[0057] Um terceiro aspecto que pode variar entre as modalidades destas técnicas refere-se ao uso do descritor de região 404 para marcar as regiões 402 do conjunto de armazenamento 102 como limpas ou sujas. Como uma primeira variação deste terceiro aspecto, o uso do descritor de região 404 pode ser projetado para facilitar o gerenciamento da capacidade do descritor de região 404. Em alguns tipos de descritores de região 404, a capacidade não pode trocas as regiões que são marcadas, tal como o mapa de bits de região 814 no cenário exemplar 800 da Fig. 8; no entanto, em outros cenários, a marcação 406 de regiões 402 pode afetar a capacidade dos descritores de região 404 tais como tabelas de regiões descritas no cenário exemplar 800 da Fig. 8, Por exemplo, se o descritor de região 404 armazena gravações para as respectivas regiões 402, o descritor de região 404 pode marcar uma região 402 como "limpa" expulsando simplesmente a gravação. Alternativamente, o descritor de região 404 pode continuar a armazenar gravações para as regiões 402 marcadas como "limpas" e pode expulsar as gravações para regiões 402 "limpas" em um tempo posterior (por exemplo, depois de um período de tempo especificado ter passado sem outra escrita 110 para a região 402, ou quando a capacidade do descritor de região 404 é esgotada). Como um segundo exemplo deste terceiro aspecto, a capacidade do descritor de região 404 pode ser alocada estaticamente (por exemplo, um descritor de região 404 de região de tamanho fixo) ou dinamicamente (por exemplo, um descritor de região 404 redimensionável que é inicialmente alocado com um espaço de descritor de região, mas que pode ser expandido ao preencher o descritor de região 404 com gravações para as regiões 402 que juntas esgotam a capacidade do descritor de região 404).
[0058] Como uma segunda variação do terceiro aspecto, o uso do descritor de região 404 pode ser selecionado para reduzir o número e frequência de escritas 110 para o descritor de região 404. Por exemplo, devido ao descritor de região 404 ser armazenado na mídia física de um ou mais dispositivos de armazenamento 106, a atualização do descritor de região 404 pode adicionar uma busca e escrita 110 ao descritor de região 404, além da busca e escrita 110 para o local 108 do conjunto de dados 104. Assim, se o descritor de região 404 é prontamente e automaticamente atualizado para refletir trocas para a marcação 406 de "sujas" ou "limpas" de várias regiões 402, a inclusão do descritor de região 404 pode diminuir consideravelmente o desempenho do dispositivo de armazenamento 106 e do conjunto de armazenamento 102, possivelmente aumentando o custo de cada acesso em até três vezes. Ainda, além disso, a degradação de desempenho pode ocorrer se uma modalidade destas técnicas acessa o descritor de região 404 para ler o estado "limpo" e "sujo" das respectivas regiões 402 (por exemplo, a fim de primeiro determinar se uma região 402 está marcada como "limpa" antes da marcação 406 da mesma como "suja"). Consequentemente, pode ser desejável reduzir os acessos ao descritor de região 404.
[0059] Como um primeiro exemplo desta segunda variação, pode ser apreciado que as semânticas de marcar 406 uma região 402 como "limpa" ou "suja" são um pouco assimétricas. Por exemplo, pode ser aceitável diferir um acesso ao descritor de região 404 para marcar o mesmo como "sujo", uma vez que o retardo pode listar incorretamente a região 402 como limpa se uma falha ocorre durante o adiamento (deste modo apresentando a situação de falso negativo onde uma região 402 que pode ser inconsistente devido a uma escrita 110 incompleta durante uma falha 18 é marcada como limpa, e, portanto, é excluída de uma limpeza 416 durante uma recuperação a partir da falha 118). No entanto, pode ser aceitável diferir a marcação 406 de uma região 402 como "limpa" após as escritas serem complementadas. Este cenário simplesmente leva a um resultado falso negativo, onde uma região 402 que era conhecida como limpa (por exemplo, nenhuma escrita 110 pendente) no momento da falha 118 é incluída em uma limpeza 416 durante a recuperação - mas, esta varredura pode somente aumentar marginalmente a duração da limpeza 416 (particularmente se o tamanho da região é pequeno) e não compromete a integridade do conjunto de armazenamento 102. Além do mais, uma modalidade que marca prontamente uma região 402 como "limpa" após o término de uma escrita 110 pode logo depois receber outra solicitação para uma escrita 110 para um conjunto de dados 104 na mesma região 402 (por exemplo, um conjunto de dados 104 seguindo sequencialmente ou um uma sobrescrita do mesmo conjunto de dados 104), e pode ter que remarcar a região 402 como "suja". Ambas as marcações 406, cada uma envolvendo um acesso ao descritor de região 404, podem ser evitadas diferindo a marcação 406 de regiões 402 como "limpa" durante um breve período, enquanto a possibilidade de uma segunda escrita 110 iminente para a região 402 pode ser elevada.
[0060] Em vista destas considerações, uma modalidade destas técnicas pode ser configurada para diferir a marcação 406 de regiões 402 como "limpa" após o término das escritas 110 para os conjuntos de dados 104 na região 402. A implementação de compromisso diferido de marcações 406 "limpas" ao descritor de região 404 pode ser obtida de vários modos. Como um primeiro de tal exemplo, este adiamento pode ser implementado provendo a uma memória volátil uma memória temporária de escrita que armazena somente marcações 406 "limpas" e (periodicamente ou mediante solicitação) comprometendo todas tais escritas como uma batelada. Por exemplo, a modalidade pode ser configurada para, ao concluir o armazenamento de um dispositivo de armazenamento 106 em um local 108 em uma região 402, identificar a região 402 como limpa; e pode marcar as regiões 402 limpas como limpas no descritor de região 404 no dispositivo de armazenamento 106 ao receber uma solicitação para marcar as regiões limpas 402 como limpas no descritor de região 404. Esta solicitação pode compreender, por exemplo, uma solicitação específica por um processo (incluindo o sistema operacional do dispositivo) para nivelar as marcações 406, ou pode ser ativado por vários critérios, tal como um critério de duração limpo (por exemplo, comprometendo as marcações 406 de regiões 402 periodicamente) ou um critério de capacidade do descritor de região envolvendo a capacidade do descritor de região 404 (por exemplo, comprometendo as marcações 406 de regiões 402 quando o descritor de região 404 alcança uma capacidade particular, tal como um número projetado de marcações 406 "limpas" ou um limiar de capacidade disponível total do descritor de região 404, que pode motivar a expulsão de gravações 406 "limpas"). Como um segundo de tal exemplo, o adiamento pode envolver reter uma marcação 406 "limpa" durante uma breve duração, e somente comprometer a marcação 406 "limpa" para o descritor de região 404 após uma breve duração quando nenhuma escrita 110 subsequente é solicitada para a mesma região 402. Assim, uma modalidade pode, ao receber uma solicitação para escrita 110 para um local 108 em uma região 402, primeiramente determinar se a região 402 já está marcada como limpa no descritor de região 404, e então marcar a região 402 como suja somente ao determinar que a região 492 esteja presentemente marcada como limpa no descritor de região 404.
[0061] Como um terceiro exemplo desta segunda variação, uma modalidade destas técnicas pode reduzir o número de acessos a um descritor de região 404 implementando uma representação de memória volátil do descritor de região 404. Por exemplo, além de armazenar as marcações 406 de respectivas regiões 402 na mídia física de um dispositivo de armazenamento 106, uma modalidade destas técnicas operando em um dispositivo também pode armazenar as marcações 406 na memória volátil do dispositivo. O uso desta representação pode facilitar a escrita diferida de bateladas de marcações 406 "limpas" e a determinação de se uma região 406 que não é marcada como "limpa" é atualmente marcada como "limpa" ou "suja" no descritor de região 404 na mídia. Assim, a representação pode indicar que, além das regiões 402 marcadas como limpas no descritor de região 404 no dispositivo de armazenamento 106 e na representação de memória volátil, e regiões 402 marcadas como sujas no descritor de região 404 no dispositivo de armazenamento 106 e na representação de memória volátil, algumas regiões 402 podem ser marcadas como sujas no descritor de região 404, mas podem ser (temporariamente) marcadas como limpas na representação de memória volátil, e tais marcações 406 limpas podem depois ser comprometidas com o descritor de região 404 na mídia.
[0062] A Fig. 9 apresenta uma ilustração de um cenário exemplar 900 apresentando a implementação e uso de uma representação de memória volátil 902 do descritor de região 404. Neste cenário exemplar 900, dois dispositivos de armazenamento 106 são configurados para espelhar um conjunto de armazenamento 102 armazenando cópias idênticas dos conjuntos de dados 104 do mesmo (por exemplo, na forma de um esquema de RAID 1), e a fim de superar os problemas potenciais causados pela sincronia imperfeita dos dispositivos de armazenamento 106,um descritor de região 404 pode ser gerado em um dispositivo de armazenamento 902 (por exemplo, um ou ambos os dispositivos de armazenamento 106 armazenando o conjunto de armazenamento 102, e/ou outro dispositivo de armazenamento 106) e utilizado para rastrear escritas 110 pendentes para várias regiões 402 do conjunto de armazenamento 102 de acordo com as técnicas apresentadas no presente documento. No entanto, além disso, em uma memória volátil 904, uma representação 906 do descritor de região 404 pode ser gerada e pode interoperar com o descritor de região 404 armazenado no dispositivo de armazenamento 902. Por exemplo, em um primeiro ponto de tempo 908, as escritas 110 podem estar pendentes para os conjuntos de dados 104 repartidos nas segunda e quarta regiões 402 do conjunto de armazenamento 102. Ao receber as solicitações para as escritas 110, uma modalidade destas técnicas pode marcar as regiões 402 como sujas no descritor de região 404 armazenado nos dispositivos de armazenamento 902, bem como na representação 906 na memória volátil 904, e também pode marcar prontamente as regiões 402 como sujas. No entanto, em um segundo ponto de tempo 910, quando as escritas 110 para a quarta região 402 foram concluídas em ambos os dispositivos de armazenamento 104, a quarta região 402 pode ser marcada como limpa na representação 906 na memória volátil 904, mas não pode ainda ser marcada como limpa no descritor de região 404 no dispositivo de armazenamento 902. Similarmente, em um terceiro ponto de tempo 912, as escritas 110 para a segunda região 402 foram completadas em ambos os dispositivos de armazenamento 105, e a segunda região 402 pode ser marcada como limpa na representação 906 na memória volátil 904, mas não no descritor de região 404 no dispositivo de armazenamento 902 até um quarto ponto de tempo 914, quando ambas as regiões 402 podem ser marcadas juntas como limpas no descritor de região 404 no dispositivo de armazenamento 902. Este uso da representação 906 na memória volátil 904 pode apresentar várias melhoras de desempenho (por exemplo, possibilitando determinação mais rápida de que regiões 402 são marcadas como limpas ou sujas do que as determinações que acessam o descritor de região 404 armazenado no dispositivo de armazenamento 902; possibilitando um comprometimento em batelada das marcações 406 limpas para o descritor de região 404 armazenado no dispositivo de armazenamento 902; e reduzindo o número de acessos ao dispositivo de armazenamento 902, tal como, no evento em que uma escrita 110 adicional para a segunda região 420 é recebida no terceiro ponto de tempo 912, a região 402 pode simplesmente ser marcada como suja na representação 906 na memória volátil 904 em vez da marcação 406 da região 402 como limpa e então suja novamente no descritor de região 404 armazenado no dispositivo de armazenamento 902).
[0063] A Fig. 10 apresenta uma ilustração de um diagrama de estado exemplar 1000 que pode ser utilizado por uma modalidade destas técnicas para atualizar um descritor de região 404 em um modo determinista. Inicialmente, uma modalidade destas técnicas pode estar em um estado limpo 1002 onde uma região limpa 402 é marcada como limpa no descritor de região 404, até uma solicitação ser recebida para realizar uma escrita 110 para um conjunto de dados 102 em um local 108 dentro da região 402, e uma modalidade destas técnicas pode fazer transição para um estado de marcação 1004 enquanto marcando 406 a região 402 como suja (por exemplo, enquanto escrevendo para o descritor de região 404 armazenado em um dispositivo de armazenamento 106). Quando a marcação 406 está concluída, a modalidade pode fazer transição para o estado sujo 1004 onde a região 402 foi marcada como suja, e outras solicitações de escrita 110 para mais locais dentro da região 402 podem fazer com que a modalidade permaneça no estado sujo 1004. Quando uma solicitação é recebida para nivelar as regiões 402 sujas, uma determinação é feita como para se o dispositivo de armazenamento 106 seja lido para nivelar (por exemplo, se o dispositivo de armazenamento 106 está atualmente realizando uma sincronização do conjunto de armazenamento, ou se o dispositivo de armazenamento 106 está temporariamente inacessível, então solicitações para nivelar as escritas sujas são retidas até o dispositivo de armazenamento 106 ser lido). Se o dispositivo de armazenamento 106 é lido para um nivelamento, a modalidade pode introduzir um estado de nivelamento 1008 enquanto começando a operação de nivelamento. Se a operação de nivelamento termina sem receber outra solicitação para uma escrita 110 para a região 104, a modalidade pode introduzir um estado marcado como limpo 1010, onde a região 102 é nivelada (por exemplo, as escritas 110 para a região 402 estão concluídas), mas a região 402 ainda está marcada como suja no descritor de região 404 no dispositivo de armazenamento 106 (mas pode ser marcada como limpa em uma representação de memória volátil 906 na memória 904 do dispositivo). Finalmente, quando uma solicitação é recebida para marcar as regiões 402 limpas como limpadas no descritor de região 404, a modalidade pode começar com esta marcação 406, e ao concluir esta marcação 406 pode retornar ao estado limpo 1002. No entanto, se quaisquer solicitações de escrita 110 para a região 402 são recebidas durante o estado de nivelamento 1008 ou o estado marcado como estado limpo 1010, a modalidade pode retornar ao estado sujo 1006. Deste modo, uma modalidade destas técnicas pode atualizar o descritor de região 404 em um modo permanente, determinista e comparativamente simples. Muitas variações na atualização do descritor de região 402 podem ser idealizadas pelos peritos na técnica, as quais podem ser compatíveis com as técnicas apresentadas no presente documento.
D4. Variações de Recuperação
[0064] Um quarto aspecto que pode variar entre as modalidades destas técnicas refere-se ao modo de usar um descritor de região 404 para realizar uma recuperação (incluindo uma limpeza 416) de um conjunto de armazenamento 102 no evento de uma falha 118. Como uma primeira variação, a recuperação pode envolver muitos tipos de técnicas para limpar 416 o conjunto de armazenamento 102 para detectar e remover inconsistências 122 no conjunto de armazenamento 102 surgindo a partir da falha 118. Como um primeiro exemplo, para um conjunto de dados 104 do conjunto de armazenamento 102 que é armazenado como duas ou mais cópias esperadas ser idênticas, a limpeza 416 pode envolver comparar as cópias para detectar inconsistências 122 (por exemplo, uma comparação bit a bit do conteúdo atual; uma comparação lógica do conteúdo, tal como uma detecção de equivalência entre os conjuntos de dados 104 mesmo no caso de diferentes estruturais não substanciais, tais como dois sistemas de arquivo que compreendem o mesmo conjunto de arquivos, mas representam o sistema de arquivo com estruturas bit a bit diferentes; ou uma comparação de marcas dos conjuntos de dados 104, tal como a comparação de um código de Hash calculado contra os conteúdos de cada cópia). Como um segundo exemplo, a limpeza 416 pode envolver verificar um ou mais conjuntos de dados 104 contra um verificador 202 representando os conjuntos de dados 104, tal como uma soma de verificação, para verificar a consistência dos conteúdos dos conjuntos de dados 104. Como um terceiro exemplo, a limpeza 416 pode simplesmente envolver examinar um conjunto de dados 104 para erros, tal como verificar que os conteúdos binários de um conjunto de dados 104 de um tipo padronizado apresenta uma estrutura válida de acordo com uma definição formal. Além disso, a limpeza 416 pode possibilitar uma simples detecção da presença de uma inconsistência 112; pode possibilitar uma identificação do local de uma inconsistência 122 dentro e/ou entre o pelo menos um conjunto de dados 104 comparado (por exemplo, não somente detectando que existe um erro, mas que uma porção particular do conjunto de dados 104 é inconsistente ou não como esperado); e/ou pode possibilitar uma correção da inconsistência 122 (por exemplo, uma soma de verificação de correção de erro, tal como um código de Hamming, que possibilita uma determinação dos dados corretos, ou uma técnica de reparo aplicada a um objeto binário que possibilita uma correção das inconsistências de formatação e pode restaurar ou reduzir perda de dados). Tipos diferentes de limpeza 416 podem ser aplicados a conjuntos de dados 104 diferentes em um conjunto de armazenamento 102 (por exemplo, conjuntos de dados 102 mais valiosos podem ser armazenados em um modo compatível com técnicas de correção de erro mais complicadas, mas sofisticadas, enquanto conjuntos de dados 102 menos valiosos podem ser armazenados em um moco que é simples e comparativamente não complicado). Além disso, o tipo de limpeza 416 invocado pode depender do número de cópias disponíveis dos respectivos conjuntos de dados 104, do tipo de falha 118 detectado, dos tipos de dispositivos de armazenamento 106 (por exemplo, o esquema de RAID implementado nos dispositivos), e os interesses de um usuário (por exemplo, pode ser permitido ao usuário selecionar entre várias opções de limpeza que variam em termos de complexidade, confiabilidade e duração da limpeza 416). Em alguns cenários, múltiplos tipos de limpeza 416 podem ser realizados (por exemplo, uma limpeza 416 rápida envolvendo uma identificação rápida de inconsistências 122 detectadas facilmente e a restauração pronta de acesso ao conjunto de dados 102, seguida por uma limpeza 416 complexa que verifica a integridade do conjunto de dados 102 para endereçar as inconsistências 122 que são mais difíceis de corrigir e reparar).
[0065] Como uma segunda variação deste terceiro aspecto, a recuperação do conjunto de armazenamento 102 pode ser realizada em ordem particular. Por exemplo, o conjunto de armazenamento 102 pode compreender muitos tipos de conjunto de dados 104 armazenados em muitos dispositivos de armazenamento. Em alguns cenários, uma recuperação simples pode aplicar a limpeza 416 ao conjunto de armazenamento 102 em uma ordem arbitrária, enquanto uma recuperação ordenada pode aplicar a limpeza 416 primeiramente a algumas porções do conjunto de armazenamento 102 que compreendem conjuntos de dados valiosos ou mais excessivamente utilizados antes de aplicar a limpeza 416 (por exemplo, dados em uso) a outras porções do conjunto de armazenamento 102 que compreendem conjuntos de dados menos valiosos ou não frequentemente solicitados (por exemplo, dados de arquivo). Como tal exemplo, as respectivas regiões 402 do conjunto de armazenamento 102 podem ser repartidas em um ou mais conjuntos de regiões, cada um tendo um descritor de região 404, e a recuperação pode envolver a limpeza 416 das regiões 402 de um primeiro conjunto de regiões representado por um primeiro descritor de região 404 antes de limpar as regiões 402 de um segundo conjunto de regiões representado por um segundo descritor de região 404.
[0066] Como uma terceira variação deste terceiro aspecto, a recuperação pode compreender, antes de iniciar uma limpeza 416 baseada em um descritor de região 404, verificar a integridade do descritor de região 404 (por exemplo, de acordo com um verificador 202 armazenado com o descritor de região 404). Se for verificado que parte do descritor de região 404 é não verificável (por exemplo, inconsistente ou corrupta devido a uma falha 118 enquanto escrevendo para uma porção do descritor de região 404), a recuperação pode envolver o uso de porções verificáveis do descritor de região 404, e realizar uma limpeza 416 completa das regiões 402 representadas na porção corrompida do descritor de região 404. Alternativamente, a recuperação pode envolver localizar e usar outra cópia do descritor de região 404 (por exemplo, uma cópia idêntica ou levemente obsoleta, mas verificável do descritor de região 404 armazenado em algum lugar no mesmo dispositivo de armazenamento 106,ou em outro dispositivo de armazenamento 106 do conjunto de armazenamento 102). Naturalmente, se é verificado que dois ou mais descritores de região 404 são, cada um, parcialmente corruptos, a recuperação pode ser totalmente obtida utilizando as porções válidas de cada descritor de região 404. Alternativamente, se nenhuma cópia verificável do descritor de região 404 está disponível, a recuperação pode iniciar uma limpeza completa do conjunto de armazenamento 102 (por exemplo, uma varredura e sincrozinação completas de todo o conjunto de armazenamento 102). Nestes modos, uma modalidade destas técnicas pode ser configurada para recuperação de tipos diferentes de falhas 118 do conjunto de armazenamento 102. Os peritos na técnica podem idealizar muitos modos de recuperação de falhas 118 do conjunto de armazenamento 102 de acordo com as técnicas apresentadas no presente documento.
E. Ambiente de Computação
[0067] A Fig. 11 apresenta uma ilustração de um ambiente de computação exemplar em um dispositivo de computação 1102 em que as técnicas apresentadas no presente documento podem ser implementadas. Os dispositivos de computação exemplares incluem, mas não estão limitados a, computadores pessoais, computadores de servidor, dispositivos portáteis e laptop, dispositivos móveis (tais como telefones móveis, Assistentes Digitais Pessoais (PDAs), media players, e semelhantes), sistemas de multiprocessadores, eletrônicas de consumo, minicomputadores, computadores mainframe, e ambientes de computação distribuídos que incluem qualquer um dos sistemas ou dispositivos acima.
[0068] A Fig. 11 ilustra um exemplo de um sistema 1100 compreendendo um dispositivo de computação 1102 configurado para implementar uma ou mais modalidades providas no presente documento. Em alguma configuração, o dispositivo de computação 1102 inclui pelo menos um processador 1106 e pelo menos um componente de memória 1108. Dependendo da configuração e do tipo exatos de dispositivo de computação, o componente de memória 1108 pode ser volátil (tal como RAM, por exemplo), não volátil (tais como ROM, memória flash, etc., por exemplo) ou um tipo intermediário ou híbrido de componente de memória. Esta configuração é ilustrada na Fig. 11 pela linha tracejada 1104.
[0069] Em algumas modalidades, o dispositivo 1102 pode incluir características e/ou funcionalidade adicionais. Por exemplo, o dispositivo 1102 pode incluir um ou mais componentes de armazenamento adicionais 1110, incluindo, mas não limitados a, unidade de disco rígido, um dispositivo de armazenamento no estado sólido, e/ou outras mídias magnéticas ou ótica, removíveis ou não removíveis. Em uma modalidade, instruções legíveis por computador e executáveis por processador implementando uma ou mais modalidades providas no presente documento são armazenadas no componente de armazenamento 1110. O componente de armazenamento 1110 também pode armazenar outros objetos de dados, tais como componentes de um sistema operacional, binários executáveis compreendendo um ou mais aplicativos, bibliotecas de programação (por exemplo, interfaces de programação de aplicativo (APIs), objetos de mídia e documentação. As instruções legíveis por computador podem ser carregadas no componente de memória 1108 para execução pelo processador 1106.
[0070] O dispositivo de computação 1102 também pode incluir um ou mais componentes de comunicação 1116 que permite que o dispositivo de computação 1102 comunique-se com outros dispositivos. O um ou mais componentes de comunicação 1116 pode compreender (por exemplo) um modem, um Cartão de Interface de Rede (NIC), um transmissor/receptor de radiofrequência, uma porta de infravermelho, e uma conexão USB de barramento em série universal (USB). Tais componentes de comunicação 1116 podem compreender uma conexão com fio (conectando a uma rede através de um cordão físico, cabo ou fio) ou uma conexão sem fio (comunicação sem fio com um dispositivo de rede, tais como através de luz visível, infravermelho ou uma ou mais radiofrequências.
[0071] O dispositivo de computação 1102 pode incluir um ou mais componentes de entrada 1114, tais como teclado, mouse, caneta, dispositivo de entrada de voz, dispositivo de entrada de toque, câmeras de infravermelho, ou dispositivos de entrada de vídeo, e/ou um ou mais componentes de saída 1112, tais como um ou mais monitores, alto-falantes e impressoras. Os componentes de entrada 1114 e/ou os componentes de saída 1112 podem ser conectados ao dispositivo de computação 1102 através de uma conexão com fio, uma conexão sem fio, ou qualquer combinação das mesmas. Em uma modalidade, um componente de entrada 1114 ou um componente de saída 1112 de outro dispositivo de computação pode ser utilizado como componentes de entrada 1114 e/ou componentes de saída 1112 para o dispositivo de computação 1102.
[0072] Os componentes do dispositivo de computação 1102 podem ser conectados por várias interconexões, tal como um barramento. Tais interconexões podem incluir uma Interconexão de Componente Periférico (PCI), tais como PCI Express, um Barramento em Série Universal (USB), firewire (IEEE 1394), uma estrutura de barramento ótica, e semelhante. Em outra modalidade, os componentes do dispositivo de computação 1102 podem ser interconectados por uma rede. Por exemplo, o componente de memória 1108 pode ser compreendido de múltiplas unidades de memória física localizadas em locais físicos diferentes interconectados por uma rede.
[0073] Os peritos na técnica irão conceber que os dispositivos de armazenamento utilizados para armazenas instruções legíveis por computador podem ser distribuídos através de uma rede. Por exemplo, um dispositivo de computação 1120 acessível através de uma rede 1118 pode armazenar instruções legíveis por computador para implementar uma ou mais modalidades providas no presente documento. O dispositivo de computação 1102 pode acessar o dispositivo de computação 1120 e fazer download de uma parte ou todas as instruções legíveis por computador para execução. Alternativamente, o dispositivo de computação 1102 pode fazer download de partes das instruções legíveis por computador, como necessário, ou algumas instruções podem ser executadas no dispositivo de computação 1102 e algumas no dispositivo de computação 1120.
F. Uso de Termos
[0074] Como utilizado neste pedido, os termos "componente", "módulo", "sistema", "interface", e semelhantes, são geralmente destinados a se referir a uma entidade relacionada a computador, tanto hardware, uma combinação de hardware e software, software ou software em execução. Por exemplo, um componente pode ser, mas não está limitado a ser, um processo funcionando em um processador, um processador, um objeto, um executável, um segmento de execução, um programa e/ou um computador. A título de ilustração, tanto um aplicativo funcionando em um controlador como o controlador podem ser um componente. Um ou mais componentes pode residir em um processo e/ou segmento de execução e um componente pode estar localizado em um computador e/ou distribuído entre dois ou mais computadores.
[0075] Além disso, o assunto reivindicado pode ser implementado como um método, aparelho, ou artigo de fabricação utilizando programação padrão e/ou técnicas de engenharia para produzir software, firmware, hardware ou qualquer combinação dos mesmos para controlar um computador para implementar o assunto divulgado. O termo "artigo de fabricação" como utilizado no presente documento é destinado a englobar um programa de computador acessível a partir de qualquer dispositivo, veículo ou meio legível por computador. Naturalmente, os peritos na técnica reconhecerão que muitas modificações podem ser feitas para esta configuração sem sair do escopo ou espírito do assunto reivindicado.
[0076] Várias operações de modalidades são providas no presente documento. Em uma modalidade, uma ou mais das operações descritas pode constituir instruções legíveis por computador armazenadas em uma ou mais meios legíveis por computador, que se executados por um dispositivo de computação, farão com que o dispositivo de computação realize as operações descritas. A ordem em que algumas ou todas as operações são descritas não deve ser interpretada como implicar em que estas operações dependem necessariamente da ordem. Ordenamento alternativo será apreciado por um perito na técnica tendo o benefício desta descrição. Além disso, será entendido que nem todas as operações estão necessariamente presentes em cada modalidade provida no presente documento.
[0077] Embora o assunto tenha sido descrito na linguagem específica para as características estruturais e/ou atos metodológicos, deve ser entendido que o assunto definido nas concretizações não está necessariamente limitado às características específicas ou atos descritos acima. De preferência, as características específicas e os atos descritos acima são divulgados como formas exemplares de implementar as concretizações. Além do mais, a palavra "exemplar" é utilizada no presente documento para significar servir como um exemplo, instância ou ilustração. Qualquer aspecto ou projeto descrito no presente documento como "exemplar" não deve ser necessariamente interpretado como vantajoso sobre outros aspectos ou projetos. De preferência, o uso da palavra exemplar é pretendido para apresentar conceitos em uma forma concreta. Como utilizado neste pedido, o termo "ou" é pretendido significar um "ou" inclusivo em vez de um "ou" exclusivo. Isto é, a menos que de outro modo especificado, ou claro a partir do contexto, "X emprega A ou B" pretende significar qualquer uma das permutas inclusivas naturais. Isto é, se X emprega A, X emprega B; ou X emprega tanto A como B, então "X emprega A ou B" é satisfeito sob qualquer uma das instâncias acima. Além disso, os artigos "um" e "uma" como usados neste pedido e nas concretizações geralmente podem ser interpretados significar "um ou mais" a menos que de outro modo especificado ou claro a partir do contexto para ser direcionado a uma forma no singular.
[0078] Também, embora a divulgação tenha sido mostrada e descrita com respeito a uma ou mais implementações, alterações equivalentes e modificações ocorrerão a outros peritos na técnica baseadas em uma leitura e no entendimento deste relatório e nos desenhos anexos. A divulgação inclui todas estas modificações e alterações e está limitada pelo escopo das concretizações. Em relação particular às várias funções realizadas pelos componentes acima descritos (por exemplo, elementos, recursos, etc.), os termos usados para descrever tais componentes são destinados a corresponder, a menos que de outro modo indicado, a qualquer componente que realize a função especificada do componente descrito (por exemplo, que seja funcionalmente equivalente), ainda que não estruturalmente equivalente à estrutura divulgada que realiza a função nas implementações exemplares da divulgação ilustrada no presente documento. Além disso, embora uma característica particular da divulgação possa ter sido descrita com respeito somente a uma de várias implementações, tal característica pode ser combinada com uma ou mais outras características das outras implementações como pode ser desejado e vantajoso para qualquer aplicação determinada ou particular. Além disso, na medida em que os termos "inclui", "tendo", "tem", "com", ou variantes dos mesmos são usados tanto na descrição detalhada como nas concretizações, tais termos são destinados a ser inclusivos em um modo similar ao termo "compreendendo".

Claims (6)

1. Método de gravar, em um computador tendo um processador, escritas pendentes em um conjunto de armazenamento provido por pelo menos um dispositivo de armazenamento (106), compreendendo as etapas de: em pelo menos um dispositivo de armazenamento (106), gerar um descritor de região (404) repartindo o conjunto de armazenamento armazenado no dispositivo de armazenamento (106) em pelo menos duas regiões (402) de acordo com um tamanho de região; ao receber um conjunto de dados em um local no conjunto de armazenamento: identificar uma região (402) dentro do conjunto de armazenamento compreendendo o local do conjunto de dados; marcar a região (402) como suja no descritor de região (404); e iniciar o armazenamento do conjunto de dados no local no conjunto de armazenamento; após armazenar o conjunto de dados no local no conjunto de armazenamento, marcar a região (402) como limpa no descritor de região (404), caracterizado pelo fato de que uma integridade do descritor de região (404) é verificada de acordo com um verificador (202) armazenado com o descritor de região (404) antes de iniciar uma tarefa de limpar (416) com base no descritor de região (404) e, se parte do descritor de região (404) for considerada como sendo inverificável, uma recuperação é realizada usando as porções verificáveis do descritor de região (404), e realizando uma limpeza (416) completa das regiões (402) representadas na porção inverificável do descritor de região (404).
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as respectivas regiões sujas identificando as respectivas regiões (402) no dispositivo de armazenamento (106) de acordo com um esquema de referência de região selecionado a partir de um conjunto de esquemas de referência de região compreende: um esquema de referência de região física identificando um local físico de uma região em um dispositivo de armazenamento (106) do conjunto de armazenamento; e um esquema de referência de região lógico identificando um local lógico de uma região (402) em um dispositivo lógico do conjunto de armazenamento.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o conjunto de armazenamento compreende pelo menos dois conjuntos de regiões; e os respectivos conjuntos de regiões compreendem pelo menos um descritor de região (404) representando as regiões do conjunto de regiões.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de gerar o descritor de região (404) em um dispositivo de armazenamento (106) compreende a etapa de alocar espaço de descritor de região (404) no dispositivo de armazenamento (106) para o descritor de região (404); e o método ainda compreende, mediante o preenchimento do espaço de descritor de região (404) com regiões sujas, expandir o espaço de descritor de região (404).
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de marcar uma região como limpa em pelo menos um descritor de região (404) compreende as etapas de: ao concluir o armazenamento de um conjunto de dados em um local dentro da região, identificar a região como limpa; e ao receber uma solicitação para marcar as regiões limpas como limpas no descritor de região (404), marcar pelo menos uma região limpa como limpa no descritor de região (404).
6. Meio de armazenamento legível por computador caracterizado pelo fato de que possui o método conforme definido em qualquer uma das reivindicações 1 a 5.
BR112014005623-4A 2011-09-12 2011-10-10 Método de gravar escritas pendentes em um conjunto de armazenamento e meio de armazenamento legível por computador BR112014005623B1 (pt)

Applications Claiming Priority (3)

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

Publications (3)

Publication Number Publication Date
BR112014005623A2 BR112014005623A2 (pt) 2017-03-21
BR112014005623A8 BR112014005623A8 (pt) 2018-02-06
BR112014005623B1 true BR112014005623B1 (pt) 2021-10-05

Family

ID=47644555

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014005623-4A BR112014005623B1 (pt) 2011-09-12 2011-10-10 Método de gravar escritas pendentes em um conjunto de armazenamento e meio de armazenamento legível por computador

Country Status (11)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756643B2 (en) * 2020-10-05 2023-09-12 SK Hynix Inc. Apparatus and method for correcting an error in data transmission of a data processing system

Families Citing this family (28)

* 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
US9836358B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Ephemeral remote data store for dual-queue systems
US9838467B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Dynamically instantiating dual-queue systems
US9753818B2 (en) * 2014-09-19 2017-09-05 Splunk Inc. Data forwarding using multiple data pipelines
US9660930B2 (en) 2014-03-17 2017-05-23 Splunk Inc. Dynamic data server nodes
US9838346B2 (en) 2014-03-17 2017-12-05 Splunk Inc. Alerting on 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 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
CN109074301B (zh) * 2017-03-13 2021-10-08 荣耀终端有限公司 一种数据处理方法及装置
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 株式会社日立製作所 計算機システム及び記憶デバイスの制御方法
CN113127386A (zh) * 2019-12-30 2021-07-16 美光科技公司 存储器器件中的受损存储部分恢复
US11755226B2 (en) * 2020-09-18 2023-09-12 Hewlett Packard Enterprise Development Lp Tracking changes of storage volumes during data transfers

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 株式会社日立製作所 ディスクアレイ制御装置
EP0968468B1 (en) * 1997-03-21 2003-02-26 Canal+ Technologies Computer memory organization and method therefor
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11756643B2 (en) * 2020-10-05 2023-09-12 SK Hynix Inc. Apparatus and method for correcting an error in data transmission of a data processing system

Also Published As

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

Similar Documents

Publication Publication Date Title
AU2017228544B2 (en) Nonvolatile media dirty region tracking
JP6026538B2 (ja) 検証されたデータセットの不揮発性媒体ジャーナリング
US9916116B2 (en) Memory access and detecting memory failures using dynamically replicated memory based on a replication policy
US8255742B2 (en) Dynamically replicated memory
KR101870521B1 (ko) 스토리지 저널링을 개선하는 방법 및 시스템
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
JP2015201204A (ja) データ記憶装置におけるデータ保全性管理
US20120198287A1 (en) File system error detection and recovery framework
TW201337563A (zh) 資料可得性之掛接時間重新調整
US20150169668A1 (en) Single Pass File System Repair With Copy On Write
US10740189B2 (en) Distributed storage system
CN110308861B (zh) 存储数据保存方法、装置、电子设备和可读存储介质
WO2018076954A1 (zh) 一种数据存储方法、装置及系统
CN114840364A (zh) 对内存中的存储数据进行备份的方法、装置及电子设备
US10956052B1 (en) Online address to hash (A2H) metadata scanner
CN110659152B (zh) 一种数据处理方法及设备
CN114780020A (zh) 数据校验方法、装置、计算机设备及存储介质
JPWO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 10/10/2011, OBSERVADAS AS CONDICOES LEGAIS.