BR112012031912B1 - método implementado por computador, sistema e meio de armazenamento de computador - Google Patents

método implementado por computador, sistema e meio de armazenamento de computador Download PDF

Info

Publication number
BR112012031912B1
BR112012031912B1 BR112012031912-4A BR112012031912A BR112012031912B1 BR 112012031912 B1 BR112012031912 B1 BR 112012031912B1 BR 112012031912 A BR112012031912 A BR 112012031912A BR 112012031912 B1 BR112012031912 B1 BR 112012031912B1
Authority
BR
Brazil
Prior art keywords
checkpoint
storage
data
updates
file system
Prior art date
Application number
BR112012031912-4A
Other languages
English (en)
Other versions
BR112012031912A2 (pt
Inventor
Jonathan M. Cargille
Thomas J. Miller
William R. Tipton
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 BR112012031912A2 publication Critical patent/BR112012031912A2/pt
Publication of BR112012031912B1 publication Critical patent/BR112012031912B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

PONTOS DE VERIFICAÇÃO PARA UM SISTEMA DE ARQUIVO. A presente invenção refere-se a pontos de verificação para um sistema de arquivos. Em aspectos, atualizações para o sistema de arquivos são organizadas em compartimentos de memória de pontos de verificação. Quando um ponto de verificação é desejado, atualizações subsequentes são direcionadas para outro compartimento de memória de ponto de verificação. Depois de tabelas globais terem sido atualizadas para atualizações no compartimento de memória de ponto de verificação atual, uma cópia lógica das tabelas globais é criada. Esta cópia lógica é armazenada como parte dos dados de pontos de verificação. Para ajudar na recuperação, um gerenciador de ponto de verificação pode esperar até que todas as atualizações do compartimento de memória de ponto de verificação atual tenham sido gravadas no armazenamento de pontos de verificação antes de gravar dados finais no armazenamento. Estes dados de ponto de verificação finais podem referir-se a cópia lógica das tabelas globais e inclui um código de validação para verificar que os dados do ponto de verificação estão corretos.

Description

Antecedentes
[001] A presente invenção refere-se a uma falha de energia ou falha de sistema pode ocorrer no meio de gravação de dados para um dispositivo de armazenamento. Quando isso acontece, os dados podem ser perdidos ou tornam-se inconsistentes. Por exemplo, se um sistema falhar no meio de uma transação onde o titular da conta retira dinheiro de um caixa eletrônico, a transação pode favorecer injustamente ao banco ou ao titular da conta. Como outro exemplo, se um sistema falhar durante um cálculo muito longo envolvendo acessos ao disco, pode demorar um tempo significativo para refazer o cálculo.
[002] A matéria reivindicada não se limita às modalidades que resolvam os inconvenientes ou que funcionem apenas em ambientes tais como os descritos acima. Em vez disso, este fundamento é fornecido apenas para ilustrar uma área de tecnologia exemplar onde algumas modalidades aqui descritas podem ser praticadas.
SUMÁRIO
[003] Em resumo, os aspectos da matéria aqui descrita referem- se a pontos de verificação para um sistema de arquivos. Em aspectos, atualizações para o sistema de arquivos são organizadas em compartimento de memória (compartimento de memória) de pontos de verificação. Quando um ponto de verificação é desejado, atualizações subsequentes são direcionadas para outro compartimento de memória de ponto de verificação. Depois de tabelas globais serem atualizadas para atualizações no atual compartimento de memória de ponto de verificação, uma cópia lógica das tabelas globais é criada. Esta cópia lógica é armazenada como parte dos dados de pontos de verificação. Para ajudar na recuperação, um gerenciador de ponto de verificação pode esperar até que todas as atualizações do compartimento de memória de ponto de verificação atuais tenham sido gravadas no armazenamento antes de gravar os dados de pontos de verificação finais no armazenamento. Estes dados de ponto de verificação finais podem referir-se a cópia lógica das tabelas globais e incluem um código de validação para verificar que os dados do ponto de verificação estão corretos.
[004] Este resumo é fornecido de uma forma breve para identificar alguns aspectos do objeto que está mais abaixo descritos na Descrição Detalhada. Este resumo não pretende identificar características chaves ou essenciais da matéria reivindicada, nem se destina a ser utilizado para limitar o âmbito de aplicativo da matéria reivindicada.
[005] A frase "a matéria descrita aqui" se refere à matéria descrita na Descrição Detalhada, a menos que o contexto indique claramente o contrário. O termo "aspectos" deve ser lido como "pelo menos um aspecto". Identificar os aspectos da matéria descrita na Descrição Detalhada não se destina a identificar as características chaves ou essenciais da matéria reivindicada.
[006] Os aspectos descritos anteriormente e outros aspectos da matéria aqui descrita estão ilustrados a título de exemplo e sem limitação aos desenhos anexos nos quais números de referência similares indicam elementos similares e em que:
BREVE DESCRIÇÃO DOS DESENHOS
[007] A figura 1 é um diagrama de blocos que representa um ambiente de computação de finalidade geral exemplar no qual aspectos da matéria descrita neste documento podem ser incorporados;
[008] FIGURA 2 é um diagrama de blocos que representa um arranjo exemplificative dos componentes de um sistema, no qual aspectos da matéria aqui descrita podem funcionar;
[009] FIGURA 3 é um diagrama de blocos que ilustra aspectos da matéria descrita neste documento;
[0010] FIGURA 4 é um diagrama que representa geralmente alterações para um sistema de arquivo de acordo com os aspectos da matéria descrita neste documento;
[0011] FIGURA 5 é um diagrama de blocos que ilustra compartimentos de memória de ponto de verificação exemplares de acordo com os aspectos da matéria aqui descrita; e
[0012] FIGURAS 6-8 são diagramas de fluxo que geralmente representam ações exemplares que podem ocorrer de acordo com os aspectos da matéria aqui descrita.
DESCRIÇÃO DETALHADAS DEFINIÇÕES
[0013] Tal como aqui utilizado, o termo "inclui" e as suas variantes devem ser lidos como termos abertos ao público que significam "inclui, mas não está limitado a". O termo "ou" deve ser lido como "e/ou" a menos que o contexto indique claramente o contrário. O termo "com base" deve ser entendido como "com base, pelo menos em parte". O termo "uma modalidade" deve ser lido como "pelo menos uma modalidade." O termo "outra variante" deve ser lido como "pelo menos, uma outra modalidade." Outras definições, explícitas e implícita, podem ser incluídas a seguir.
AMBIENTE DE OPERAÇÃO EXEMPLAR
[0014] A figura 1 ilustra um exemplo de um ambiente de sistema de computação apropriado 100 sobre a qual aspectos da matéria descrita neste documento podem ser implementados. O ambiente do sistema de computação 100 é somente um exemplo de um ambiente de computação apropriado e não se destina a sugerir qualquer limitação quanto ao âmbito de utilização ou funcionalidade de aspectos da matéria aqui descrita. Nem deve o ambiente de computação 100 ser interpretado como tendo qualquer dependência ou exigência relacionadas com qualquer um ou uma combinação de componentes ilustrados no ambiente operacional exemplificativo 100.
[0015] Aspectos da matéria aqui descrita são operacionais com vários outros ambientes de sistema de computação de finalidade geral ou finalidade especial ou configurações. Exemplos de sistemas computacionais bem conhecidos, ambientes ou configurações que podem ser adequados para utilização com os aspectos da matéria aqui descrita incluem computadores pessoais, computadores servidores, dispositivos portáteis ou laptop, sistemas de multiprocessadores, sistemas baseados em microcontroladores, caixas set-top, eletrônicos programáveis, PCs em rede, minicomputadores, computadores mainframe, assistentes digitais pessoais (PDAs), dispositivos de jogos, impressoras, aparelhos, incluindo set-top, centro de mídia, ou outros aparelhos, dispositivos de computação embutidos ou anexados em automóvel, outros dispositivos móveis, ambientes de computação distribuído, que incluem qualquer dos sistemas ou dispositivos acima, e outros semelhantes.
[0016] Os aspectos da matéria aqui descrita podem ser descritos no contexto geral de instruções executáveis por computador, tais como módulos de programas, sendo executados por um computador. Geralmente, os módulos do programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante, que realizam tarefas específicas ou implementam tipos de dados abstratos particulares. Aspectos da matéria aqui descrita também podem ser praticados em ambientes de computação distribuídos em que as tarefas são realizadas por dispositivos de processamento remotos que são ligados através de uma rede de comunicações. Em um ambiente de computação distribuída, os módulos do programa podem ser localizados na mídia de armazenamento de computador local e remoto, incluindo dispositivos de armazenamento de memória.
[0017] Com referência à figura 1, um sistema exemplar para implementar aspectos da matéria aqui descrita inclui um dispositivo de computação de finalidade geral, na forma de um computador 110. Um computador pode incluir qualquer dispositivo eletrônico que é capaz de executar uma instrução. Os componentes do computador 110 podem incluir uma unidade de processamento 120, uma memória de sistema 130, e um barramento de sistema 121 que se acopla a vários componentes do sistema, incluindo a memória de sistema à unidade de processamento 120. O barramento do sistema 121 pode ser qualquer um de vários tipos de estruturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local utilizando qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo, e não limitação, arquiteturas incluem barramento de Industry Standard Architecture (ISA), barramento de Micro Channel Architecture (MCA), barramento de Enhanced ISA (EISA), barramento local de Video Electronics Standards Association (VESA), barramento de Peripherical Component Interconnect (PCI) também conhecido como barramento de Mezanino, barramento de Peripherical Component Interconnect Extended (PCI-X), barramento de Advanced Graphics Port (AGP), e PCI Express (PCIe).
[0018] O computador 110 normalmente inclui uma variedade de meios legíveis por computador. Meios legíveis por computador podem ser quaisquer meios disponíveis que podem ser acessados pelo computador 110 e incluem tanto os meios voláteis e não voláteis e meios removíveis e não removíveis. A título de exemplo, e não limitação, meios legíveis por computador podem compreender meios de armazenamento em computador e meios de comunicação.
[0019] Meios de armazenamento em computador incluem ambos meios volátil e não volátil, removível e não removível implementados em qualquer método ou tecnologia no armazenamento de informa- ções, tais como instruções legíveis por computador, estruturas de dados, módulos de programas ou outros dados. Mídia de armazenamento em computador inclui RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos digitais versáteis (DVD) ou outro armazenamento de disco ótico, cassetes magnéticos, fitas magnéticas, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, ou qualquer outro meio que possa ser utilizado para armazenar a informação desejada e que pode ser acessado pelo computador 110.
[0020] Meios de comunicação tipicamente incorporam instruções legíveis por computador, estruturas de dados, módulos de programas ou outros dados em um sinal de dados modulado, tal como uma onda de portadora ou outro mecanismo de transporte e inclui qualquer meio de entrega de informação. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais das suas características estabelecidas ou alteradas de forma a codificar a informação no sinal. A título de exemplo, e não limitação, meios de comunicação incluem meios com fio, tal como uma rede com fio ou conexão direta com fio e meios sem fio, tais como acústico, RF, infravermelho e outros meios de comuni-cação sem fio. Combinações de qualquer um dos acima também devem ser incluídas dentro do âmbito de meios legíveis por computador.
[0021] A memória do sistema 130 inclui meios de armazenamento em computador na forma de memória volátil e/ou não-volátil, tais como memória somente de leitura (ROM) 131 e memória de acesso aleatório (RAM) 132. O sistema de Entrada / Saída Básico 133 (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre elementos dentro do computador 110, como durante a inicialização, é normalmente armazenado em ROM 131. RAM 132, tipicamente, contém módulos de dados e/ou de programa que são diretamente acessíveis a e/ou atualmente sendo operados pela unidade de processamen- to 120. A título de exemplo, e não limitação, a Figura 1 ilustra o sistema operacional 134, os programas de aplicativo 135, outros módulos de programas 136, e dados de programa 137.
[0022] O computador 110 pode também incluir outros meios de armazenamento em computador meios removíveis / não removíveis, volátil / não volátil. A título de exemplo apenas, a Figura 1 ilustra uma unidade de disco rígido 141 que lê ou grava em meios magnéticos não removíveis, e não voláteis, uma unidade de disco magnético 151, que lê a partir de ou grava em um disco magnético removível, não volátil 152, e uma unidade de disco óptico 155 que lê ou grava para um disco óptico removível, não volátil 156, como um CD-ROM ou outra mídia óptica. Outros meios de armazenamento em computador removíveis /não removíveis, voláteis / não voláteis que podem ser utilizados no ambiente operacional exemplar incluem cassetes de fita magnética, cartões de memória flash, discos digitais versáteis, outros discos ópticos, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido, e semelhantes. A unidade de disco rígido 141 está normalmente ligada ao barramento do sistema 121 através de uma interface de memória não-removível, tal como interface 140, e a unidade de disco magnético 151 e unidade de disco óptico 155 são normalmente conectadas ao barramento do sistema 121 por uma interface de memória removível, tal como interface 150.
[0023] As unidades e os seus meios de armazenamento de computador, associados discutidos acima e ilustrados na figura 1, proporcionam o armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programas e outros dados no computador 110. Na Figura 1, por exemplo, a unidade de disco rígido 141 é ilustrada como o armazenamento do sistema operacional 144, programas de aplicativos 145, outros módulos de programas 146, e dados de programa 147. Note-se que estes componentes podem ser os mesmos ou diferentes do sistema operacional 134, programas de aplicativos 135, outros módulos de programas 136, e dados de programa 137. Sistema operacional 144, programas de aplicativos 145, outros módulos de programas 146, e dados de programa 147 são dados números diferentes aqui para ilustrar que, no mínimo, eles são cópias diferentes.
[0024] Um usuário pode digitar comandos e informações no computador 110 através de dispositivos de entrada tais como teclado e 162 dispositivo apontador 161, comumente referido como um mouse, trackball ou touchpad. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, joystick, game pad, antena parabólica, scanner, uma tela sensível ao toque, um tablet de gravação, ou outros semelhantes. Estes e outros dispositivos de entrada são muitas vezes ligados à unidade de processamento 120 através de uma interface de usuário de entrada 160 que é acoplada ao barramento de sistema, mas pode ser ligada por outra interface e estruturas de barramento, tais como uma porta paralela, porta de jogos ou um barramento serial universal (USB).
[0025] Um monitor 191 ou outro tipo de dispositivo de exibição é igualmente ligado ao barramento de sistema 121 através de uma interface, tal como uma interface de vídeo 190. Em adição ao monitor, os computadores podem também incluir outros dispositivos de saída periféricos, tais como alto-falantes 197 e impressora 196, que podem ser ligados através de uma interface de saída periférica 195.
[0026] O computador 110 pode operar em um ambiente de rede utilizando conexões lógicas a um ou mais computadores remotos, tais como um computador remoto 180. O computador remoto 180 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo par a par ou outro nó de rede comum, e tipicamente inclui muitos ou todos os elementos descritos acima relativos ao compu- tador 110, embora apenas um dispositivo de armazenamento de memória 181 tenha sido ilustrado na Figura 1. As conexões lógicas descritas na Figura 1 incluem uma rede de área local (LAN) 171 e uma rede de área alargada (WAN) 173, mas pode também incluir outras redes. Tais ambientes de rede são comuns em M, redes de computador de toda a empresa, intranets e Internet.
[0027] Quando utilizado em um ambiente de rede LAN, o computador 110 é ligado à rede local 171 através de uma interface de rede ou adaptador 170. Quando utilizado em um ambiente de rede WAN, o computador 110 pode incluir um modem 172 ou outros meios para estabelecer a comunicação sobre a WAN 173, tal como a Internet. O modem 172, que pode ser interno ou externo, pode ser ligado ao barramento de sistema 121 através da interface de usuário de entrada 160 ou outro mecanismo apropriado. Em um ambiente de rede, os módulos de programa descritos relativos ao computador 110, ou partes destes, podem ser armazenados no dispositivo de armazenamento de memória remoto. A título de exemplo, e não limitação, a Figura 1 ilustra os programas de aplicativos remotos 185 como residindo no dispositivo de memória 181. Será apreciado que as conexões de rede mostradas são exemplificativas e outros meios de estabelecer um link de comunicação entre os computadores poderão ser utilizados.
Ponto de verificação
[0028] Como mencionado anteriormente, falha de energia e falhas no sistema podem ocorrer durante a gravação de dados em um dispositivo de armazenamento. Isto pode deixar os dados armazenados no dispositivo de armazenamento em estado inconsistente. Para resolver este e outros problemas, pontos de verificação podem ser gravados no dispositivo de armazenamento.
[0029] A FIGURA 2 é um diagrama de blocos que representa um arranjo exemplar dos componentes de um sistema, em que aspectos da matéria aqui descrita podem operar. Os componentes ilustrados na FIGURA 2 são exemplos e não pretendem ser inclusivos de componentes que possam ser necessários ou incluídos. Em outras modalidades, os componentes e/ou funções descritas em conjunto com a FIGURA 2 podem ser incluídos em outros componentes (mostrados ou não mostrados) colocados em subcomponentes sem se afastar do espírito ou âmbito de aspectos da matéria aqui descrita. Em algumas modalidades, os componentes e/ou funções descritas em conjunto com a FIGURA 2 podem ser distribuídos através de múltiplos dispositivos.
[0030] Quanto à FIGURA 2, o sistema 205 pode incluir um ou mais aplicativos 210, uma API 215, componentes de sistema de arquivo 220, um armazenamento 250, um mecanismo de comunicação 255, e outros componentes (não mostrados). O sistema 205 pode compreender um ou mais dispositivos de computação. Esses dispositivos podem incluir, por exemplo, computadores pessoais, servidores, dispositivos portáteis ou laptop, sistemas de multiprocessadores, sistemas baseados em microcontrolador, caixas set-top, eletrônicos de consumo programável, PCs em rede, minicomputadores, computadores mainframe, telefones celulares, assistentes digitais pessoais (PDAs), dispositivos de jogos, impressoras, aparelhos incluindo centro de mídia set-top, ou outros aparelhos, dispositivos de computação incorporados ou anexados em automóvel, outros dispositivos móveis, ambientes de computação distribuído que incluem qualquer um dos sistemas ou dispositivos acima, e outros semelhantes.
[0031] Se o sistema 205 compreende um único dispositivo, um dispositivo exemplar que pode ser configurado para atuar como o sistema 205 compreende o computador 110 da FIGURA 1. Onde o sistema 205 compreende vários dispositivos, cada um dos vários dispositivos pode compreender um computador 110 da FIGURA1 configurado de forma semelhante ou diferente
[0032] Os componentes do sistema de arquivo 220 podem incluir um gerenciador de recuperação 225, um gerenciador de ponto de verificação 230, um gerenciador de I / O 235, um gerenciador plano de gravação 237, e outros componentes (não mostrados). Como aqui utilizado, o termo componente é para ser lido de modo a incluir a totalidade ou uma parte de um dispositivo, um conjunto de um ou mais módulos de software ou porções dos mesmos, uma combinação de um ou mais módulos de software ou porções do mesmo, e um ou mais dispositivos ou porções dos mesmos, e semelhantes.
[0033] O mecanismo de comunicações 255 permite que o sistema 205 se comunique com outras entidades. Por exemplo, o mecanismo de comunicação 255 pode permitir que o sistema 205 se comunique com aplicativos em um hospedeiro remoto. O mecanismo de comunicações 255 pode ser uma interface de rede ou adaptador 170, modem 172, ou qualquer outro mecanismo para estabelecimento de comunicações, tal como descrito em conjunto com a FIGURA 1.
[0034] O armazenamento 250 é qualquer mídia de armazenamento capaz de fornecer acesso aos dados. O armazenamento pode incluir memória volátil (por exemplo, um cache) e uma memória não volátil (por exemplo, um dispositivo de armazenamento persistente). O termo dados é para ser lido de forma ampla para incluir tudo o que pode ser representado por um ou mais elementos de armazenamento de computador. Logicamente, os dados podem ser representados como uma série de Ts e 0’s na memória volátil ou não volátil. Em computadores que possuem um meio de armazenamento não-binário, os dados podem ser representados de acordo com as capacidades do meio de armazenamento. Os dados podem ser organizados em diferentes tipos de estruturas de dados, incluindo os tipos de dados simples, tais como números, letras e semelhantes, tipos de dados hierárquicos, ligados, ou outros relacionados, estruturas de dados, que incluem várias outras estruturas de dados ou tipos de dados simples, e semelhantes. Alguns exemplos de dados incluem informação, código de programa, estado de programa, dados de programa, outros dados, e outros semelhantes.
[0035] O armazenamento 250 pode incluir armazenamento de disco rígido, outro armazenamento não-volátil, memória volátil, tal como RAM, outro armazenamento, alguma combinação dos anteriores, e similares e pode ser distribuído entre vários dispositivos. O armazenamento 250 pode ser externo, interno, ou incluir componentes que são tanto internos como externos para o sistema 205.
[0036] O armazenamento 250 pode ser acessado através de um controlador de armazenamento 240. O acesso, como aqui utilizado pode incluir a leitura de dados, gravação de dados, eliminação de dados, atualização de dados, uma combinação incluindo dois ou mais dos anteriores, e similares. Os controladores de armazenamento 240 podem receber solicitações para acessar o armazenamento 250 e pode atender solicitações como apropriado. Os controladores de armazenamento 240 podem ser organizados de tal forma que ele não garanta que os dados serão gravados no armazenamento 250 na ordem em que eles foram recebidos. Além disso, os controladores de armazenamento 240 podem indicar que ele gravou dados solicitados antes de o controlador de armazenamento 240 ter, na verdade, gravado os dados na memória não-volátil do armazenamento 250.
[0037] Os um ou mais aplicativos 210 incluem quaisquer processos que podem estar envolvidos na criação, exclusão ou atualização de dados. Tais processos podem executar em modo de usuário ou modo de núcleo. O termo "processo" e suas variantes, tal como aqui utilizado pode incluir um ou mais processos tradicionais, sequências, componentes, bibliotecas de objetos, que executam tarefas, e seme- lhantes. Um processo pode ser implementado em hardware, software, ou uma combinação de hardware e software. Em uma modalidade, um processo é qualquer mecanismo, no entanto chamado, capaz de ou utilizado na realização de uma ação. Um processo pode ser distribuído por vários dispositivos ou um dispositivo único. Um ou mais aplicativos 210 podem fazer solicitações de sistema de arquivos (por exemplo, através de funções / métodos) através da API 215 para o gerenciador de I / O 235.
[0038] O gerenciador de I / O 235 pode determinar qual solicitação de I / O ou solicitações emitir ao controlador de armazenamento 240 (ou algum outro componente intermediário). O gerenciador de I / O 235 também pode retornar dados para um ou mais aplicativos 210 como operações associadas com continuação, conclusão, ou falha de solicitações do sistema. Quando uma solicitação de sistema de arquivos envolve uma transação, o gerenciador de I / O 235 pode informar a um gerenciador de transações (não mostrado) para que o gerenciador de transação possa gerenciar adequadamente a transação. Em algumas modalidades, as funções de gerenciador de transação podem ser in-cluídas no gerenciador de I / O 235.
[0039] Os componentes de sistema de arquivo 220 podem usar cópia na gravação, gravação no lugar, uma combinação das opções acima, e similares, ao gravar os objetos do sistema de arquivos ou me- tadados em relação a objetos do sistema de arquivos no armazenamento 250. O termo "arquivo" pode incluir um diretório, um objeto de sistema de arquivo que não tem filhos (por exemplo, que às vezes é pensado como um arquivo), outros objetos do sistema de arquivos, e afins.
[0040] Em cópia sobre gravação, antes que os dados de um arquivo sejam modificados, uma cópia dos dados que estão sendo modificados é copiada para outro local. Em uma gravação no local, os dados de um arquivo podem ser modificados no lugar sem copiar os dados originais para outro local. Um híbrido de cópia sobre gravação e gravação no local pode incluir a realização de cópia sobre gravação de metadados a respeito de um arquivo durante a execução de gravação no lugar dos dados incluídos no arquivo.
[0041] Objetos de um sistema de arquivo podem ser atualizados no contexto das transações. Uma transação é um conjunto de operações que podem ser descritas por várias propriedades, incluindo, por exemplo, atômica, consistente, isolada e durável. Tal como aqui utilizado, uma transação pode ser definida por, pelo menos, a propriedade consistente e também pode ser definida por uma ou mais das outras propriedades acima.
[0042] A propriedade consistente refere-se a um estado de permissão de dados com respeito a um ou mais arquivos. Antes de uma transação começar e depois de uma transação ser concluída, os arquivos de um sistema de arquivos devem estar em um estado permitido (embora possam passar através de estados não permitidos durante a operação). Por exemplo, uma transferência de banco pode ser implementada como conjunto de duas operações: um débito de uma conta e um crédito para outra conta. Consistência neste exemplo pode ser definida como tendo o saldo da conta combinado do banco e o titular da conta ser uma constante (por exemplo, T = A + B, onde T é uma constante, A = saldo bancário, B = saldo titular da conta). Para implementar consistência neste exemplo, as operações de débito e crédito simplesmente precisam ser para a mesma quantidade de dinheiro e quer tanto ser concluídas ou não concluídas em cada conta.
[0043] Um ponto de verificação pode ser gravado para indicar um estado de consistência do sistema de arquivos. Um ponto de verificação pode incluir um ou mais códigos de validação (por exemplo, uma ou mais somas de verificação, hashes, ou outros dados) que podem ser utilizados para determinar se o ponto de verificação e/ou dados associados com o ponto de verificação foram corretamente gravados em disco. Ao recuperar, o último ponto de verificação gravado pode ser localizado. O código de validação (s) do ponto de verificação pode então ser usado para determinar se o ponto de verificação e/ou dados associados com o ponto de verificação foram corretamente gravados no disco. Se não, um ponto de verificação anterior pode ser localizado e a validade verificada até um ponto de verificação válido ser encontrado. Uma vez que o ponto de verificação válido mais recente foi en-contrado, um último estado consistente do sistema de arquivos é conhecido. Operações de sistema de arquivo que ocorrem após este ponto podem ser descartadas ou ações de recuperação adicionais podem ser realizadas conforme desejado.
[0044] Em uma modalidade, um objeto em um sistema de arquivos pode ser denotado por Dn onde n identifica o objeto par um sistema. Objetos no sistema de arquivos são serializáveis (isto é, capazes de ser representados como dados sobre o armazenamento 250) e desse- rializáveis. Uma tabela de objeto associa cada identificador de objeto com a sua localização no armazenamento 250.
[0045] A primeira vez que Dn é atualizado em uma transação de modificação, Dn é localizado observando-se a sua localização na tabela de objeto usando n. Para o uso em um exemplo, o local de armazenamento de Dn no armazenamento 250 é chamado L1.
[0046] O conteúdo de L1 é então lido a partir do armazenamento 250, o objeto pode ser desserializado (por exemplo, convertido a partir do formato serializado em uma estrutura do objeto), e as partes do objeto que devem ser modificadas são copiadas para a memória principal do sistema. As atualizações são realizadas nas porções (ou cópias) na memória. Em conjunto com as porções de memória a ser modificadas, um ou mais novos locais (chamando este de L2) no armazenamento são designados para as porções modificadas.
[0047] Estas cópias na memória principal do sistema são chamadas aqui de "cópias lógicas" dos objetos. Uma cópia lógica de um objeto inclui uma ou mais estruturas de dados que podem ser utilizadas para representar o objeto. Logicamente, uma cópia lógica é uma duplicata de um objeto. Fisicamente, uma cópia lógica pode incluir dados (incluindo ponteiros para outros dados) que podem ser utilizados para criar uma duplicata do objeto. Por exemplo, em um aplicativo, uma cópia lógica pode ser uma cópia real (por exemplo, cópia bit-a-bit) do objeto ou de uma estrutura de dados que inclui os dados que podem ser usados para criar o objeto.
[0048] Em outra implementação, uma cópia lógica não modificada pode incluir um ou mais ponteiros que se referem ao objeto original. À medida que a cópia lógica é modificada, ponteiros na cópia lógica podem se referir a novas localizações de memória (por exemplo, para a porção alterada da cópia lógica), enquanto outros ponteiros podem se referir a porções do objeto original (por exemplo, para a porção não- modificada da cópia de lógica). Usando os ponteiros, a cópia modificada pode ser construída usando os dados modificados juntamente com os dados não modificados do objeto original. Criar uma cópia lógica pode ser realizado, por exemplo, para reduzir a memória necessária para criar uma cópia de um objeto.
[0049] Além disso, embora a serialização e desserialização sejam por vezes aqui referidas, não há a intenção de limitar os aspectos da matéria aqui descrita, ao que é habitualmente considerado como a serialização e desserialização. Em uma modalidade, a versão serializada pode ser bit-a-bit idêntica à versão desserializada. Em uma outra modalidade, os bits da versão serializada podem ser empacotados em um formato e ordem diferentes daqueles na versão desserializada. Na verdade, em uma modalidade, serialização e desserialização, devem ser entendidos como significando qualquer mecanismo de armazenamento e recuperação de dados, que representa os objetos a partir de um armazenamento. Os outros mecanismos, por exemplo, podem incluir propriedades de gravação dos objetos em formato de texto no armazenamento, que codifica as propriedades dos objetos em uma linguagem de marcação no armazenamento, outras formas de armazenamento de propriedades e outras características dos objetos no armazenamento, e semelhantes.
[0050] A critério do sistema (por exemplo, depois de um transação ou algum outro momento), o sistema pode serializar a cópia lógica modificada de volta para o meio estável, mas o faz na localização L2. A intenção de gravar a cópia lógica modificada de volta no novo local é chamada de plano de gravação. Um plano de gravação pode identificar um número arbitrário de atualizações para um ou mais objetos. Um plano de gravação pode fazer referência a mudanças que ocorrem em mais de uma operação. Planos de gravação múltiplos podem ser combinados em um plano de gravação único.
[0051] O gerenciador de plano de gravação 237 pode estar envolvido com a criação de planos de gravação para várias atualizações. Quando um plano de gravação envolve múltiplos objetos de sistema de arquivo (por exemplo, no contexto de uma transação), o gerenciador de plano de gravação 237 pode ser operável para gerar um plano de gravação que indica os locais no armazenamento de todos os objetos do sistema de arquivo envolvem na operação, a fim de manter um estado consistente para o sistema de arquivo.
[0052] Quando uma modificação ocorre logo após um ponto de verificação, um bloco denominado bloco de recuperação (o qual pode ser repetido em várias localizações) pode ser modificado para apontar para o início da cópia lógica modificada (isto é, L2). Um campo no objeto em L2 aponta para o local que será gravado para o próximo. Este campo representa um link em uma cadeia de planos de gravação que ocorrem entre pontos de verificação.
[0053] Em conjunto com o envio de uma solicitação para gravar uma cópia lógica, a modificação pode ser feita para a tabela de objetos. Em particular, o valor de posição indexado pelo identificador do objeto pode ser ajustado para o valor do local no qual a cópia lógica modificada deve ser armazenada (isto é, L2). Isto é feito de modo que uma busca subsequente da localização do objeto Dn seja referida a localização L2, a nova versão do objeto.
[0054] Se uma transação modifica mais de um objeto, por exemplo, Di e Dj, os objetos são considerados "atomicamente ligados" uns aos outros, e são gravados em um plano de gravação. Um plano de gravação pode especificar essa relação (por exemplo, em links para os objetos envolvidos).
[0055] Um número arbitrário de objetos pode ser persistente desta maneira. Periodicamente, a tabela do objeto pode também ser gravada no armazenamento 250 no mesmo modo que qualquer outro objeto.
[0056] Em conjunto com o envio de uma solicitação para gravar a tabela de objeto no armazenamento 250, um comando flush também pode ser enviado para os controladores de armazenamento 240. Um comando flush instrui os controladores de armazenamento 240 a gravar todos os dados de sua memória volátil que ainda não tenham sido gravados na memória não-volátil do armazenamento 250.
[0057] Periodicamente, um ponto de verificação pode ser gravado no armazenamento, como será descrito em maior detalhe abaixo. Um ponto de verificação pode ser indicado por um registrador do ponto a ser armazenado no armazenamento 250. Um ponto de verificação pode ser gravado em qualquer momento e pode tornar-se estável / duradouro após flush. Estável / durável refere-se ao ponto de verificação sendo armazenado na memória não volátil do armazenamento.
[0058] Depois de um ponto de verificação ser estável / durável, espaço usado para quaisquer cópias antigas e sem uso de objetos (ou partes dele) pode ser reutilizado. Após a conclusão do flush, o bloco de recuperação é então apontado para o início de uma cadeia dos planos de gravação posteriores. Em uma modalidade, o bloco de recuperação pode indicar o início da cadeia de planos de gravação para a nova localização da tabela de objetos.
[0059] Um exemplo mais concreto é descrito em conjunto com a FIGURA 3, que é um diagrama de blocos que ilustra aspectos da matéria aqui descrita. Conforme ilustrado, a FIGURA 3 mostra uma memória principal 305 e um armazenamento 250. A linha 307 representa uma divisão entre a memória principal 305 e o armazenamento 250. Objetos acima da linha 310 se encontram na memória principal, enquanto os objetos abaixo da linha 310 se encontram na memória volátil ou não-volátil do armazenamento 250.
[0060] Os objetos 314 - 316 são mostrados na memória principal 305. Na implementação, os objetos podem ser 314 - 316 cópias lógicas desserializados dos objetos 319 - 321, respectivamente. O objeto 319 está localizado na posição 1550 no armazenamento 250, o objeto 320 é localizado na posição 200 no armazenamento 250, e 321 o objeto está localizado na posição 800 no armazenamento 250.
[0061] A tabela de objeto inclui 310 pares de valores-chave que indicam locais dos objetos 314 - 316no armazenamento 250. Os pares de valores-chave são indexados usando os identificadores (n) dos objetos 314-316.
[0062] Quando uma transação modifica o objeto 316 (por exemplo, alterando o seu nome para foo.txt), os componentes de consistência (por exemplo, os componentes de consistência 220 da FIGURA 2) podem determinar um novo local de armazenamento para o objeto atualizado (por exemplo, localização 801). Se o objeto é um arquivo, atua- lizando o seu nome no contexto de uma transação pode também fazer com que o diretório que inclui o arquivo seja envolvido na transação. Por exemplo, quando um nome de arquivo for alterado, tanto o objeto que representa o arquivo quanto o objeto que representa o diretório que inclui o arquivo pode ter de ser envolvido na transação. Neste caso, o diretório que inclui o objeto é representado como objeto 314 e uma cópia lógica do diretório atualizado (por exemplo, objeto 318) é representada como objeto 323 no armazenamento 250. Além disso, a tabela 310 foi logicamente atualizada para a tabela 311 para indicar os novos locais de armazenamento (por exemplo, 801 e 1000) dos objetos modificados (isto é, os objetos 317 e 318).
[0063] Esta uma modificação de um objeto dentro do contexto de uma transação afeta também um outro objeto que pode ser explicitamente indicado ou determinado, por exemplo, pelo gerenciador de I / O 235 ou algum outro componente da FIGURA 2.
[0064] Quando dois ou mais objetos estão envolvidos em uma atualização de uma transação, os objetos são considerados "atomicamente ligados", como mencionado anteriormente. Em uma operação de recuperação, a não ser que as alterações sejam encontradas no armazenamento 250 para todos os objetos alterados no âmbito da transação, todas as mudanças detectadas são descartadas. Em outras palavras, se mudança para um dos objetos for encontrada, mas mudança para outro objeto não for encontrada, as mudanças para o um dos objetos são descartadas.
[0065] Para atomicamente ligar dois ou mais objetos, em uma modalidade, um ponteiro pode ser armazenado ou de outra forma associado com cada objeto no armazenamento 250. Um ponteiro pode indicar o local de armazenamento de outro objeto (ou parte dele) envolvido na transação. Se não houver outros objetos envolvidos na transação, o ponteiro pode apontar para um "bloco morto" ou indicar o local de armazenamento de um objeto "cabeça" de outro plano de gravação. Este objeto cabeça pode incluir um plano de gravação, um objeto modificado (ou parte do mesmo) do plano de gravação, ou semelhante.
[0066] Além de ponteiros para locais de armazenamento próximos, os dados podem também ser armazenados no armazenamento 250 para indicar o conteúdo correto do objeto "apontado". Por exemplo, um hash pode ser armazenado que indica o conteúdo correto de um ponteiro apontado para o objeto.
[0067] No exemplo apresentado na figura 3, um ponteiro associado ao objeto 322 pode apontar para um local de armazenamento associado com o objeto 323. O ponteiro liga os dois objetos. Se, durante a recuperação, quer um dos objetos não é encontrado ou não têm o conteúdo correto, as modificações representadas pelos objetos encontrados podem ser descartadas.
[0068] Em virtude da natureza do armazenamento 250, não pode haver nenhuma garantia quanto a qual o objeto será gravado primeiro na memória não-volátil do armazenamento 250. Se o objeto 322 é gravado em primeiro lugar e o objeto 323 não é gravado, o ponteiro do objeto 322 irá apontar para um local de armazenamento que pode ter dados espúrios. No entanto, ao calcular um hash dos dados no local de armazenamento e comparar este hash como o hash armazenado com o objeto 322, os dados de localização 1000 podem ser detectados como tendo dados inválidos. Neste caso, durante a recuperação, o gerenciador de recuperação (por exemplo, o gerenciador de recuperação 225 da FIGURA 2) pode descarregar as alterações representadas pelos objetos 322 e 323.
[0069] O bloco de recuperação 330 aponta para o primeiro local de armazenamento (neste caso localização 801) em que os dados deveriam ser armazenados depois de um ponto de verificação. O bloco de recuperação 330 pode também incluir ou ser associado a um hash que é calculado usando o conteúdo correto do objeto armazenado no primeiro local de armazenamento.
[0070] FIGURA 4 é um diagrama que geralmente representa alterações que ocorrem em um sistema de arquivo de acordo com os aspectos da matéria aqui descrita. As tabelas globais 405 incluem uma tabela de objeto que identifica os locais de objetos no armazenamento e dados de alocação em relação ao espaço no armazenamento 250 que foi alocado. Atualizações 410 que estão em andamento também estão ilustradas. Quando uma atualização toca o eixo de tempo 415, a atualização se completa e não precisa mais modificar qualquer uma das tabelas globais 405. Cada uma das linhas de atualização das atualizações 410 podem representar várias atualizações. Onde várias atualizações precisavam ser feitas em conjunto para manter a consistência, as atualizações podem ser feitas no contexto de transações.
[0071] Para um ponto de verificação ser eficaz, a verificação precisa ser gravada em um estado consistente. Com uma cópia no sistema de arquivos de gravação, quando um objeto é atualizado, uma cópia lógica do objeto como modificado é armazenada em um novo local do sistema de arquivos. Este novo local é refletido na tabela de objeto com uma atualização para a tabela de objeto. Para consistência, seria incorreto para a tabela de objeto refletir uma atualização que ainda não foi gravada em disco, pois a atualização pode não ser totalmente gravada em disco antes de uma falha do sistema. Da mesma forma, também seria incorreto para a atualização ser concluída e gravada no disco e outras atualizações transacionalmente relacionadas ser concluídas, mas para a tabela de objeto não mostrar a atualização.
[0072] Para assegurar a consistência, a verificação precisa ser selecionada em um momento em metadados para a atualização ser refletida na tabela global. Se cada uma das linhas que representam as atualizações 410 indicar um período em que as tabelas globais 405 podem ser atualizadas para a atualização, então, executar um ponto de verificação no tempo 520 pode produzir um estado inconsistente enquanto que a execução de um ponto de verificação no tempo 525 irá render um estado consistente.
[0073] FIGURA 5 é um diagrama de blocos que ilustra compartimentos de memória de ponto de verificação exemplares de acordo com os aspectos da matéria aqui descrita. Para tratar das questões mencionadas acima e outras questões, cada atualização pode ser associada a um compartimento de memória de ponto de verificação (por exemplo, uma dos compartimentos de memória 515). Um compartimento de memória de ponto de verificação é um conceito lógico que indica que as tabelas globais precisam ser atualizadas para levar em conta pelo menos planos de gravação de atualizações associadas com o compartimento de memória de ponto de verificação antes de dados de pontos de verificação do ponto de verificação serem gravados no disco. Em outras palavras, as tabelas globais necessitam de ser atualizadas para dar conta da informação de localização e alocação das atualizações de um compartimento de memória, embora as alterações possam ou não possam atualmente ser gravadas naqueles locais.
[0074] Periodicamente (por exemplo, na expiração de um temporizador de ponto de verificação baseado em uma janela de recuperação, depois de um certo número de gravações ter ocorrido, depois de algum outro limite é excedido, ou semelhante), a determinação pode ser feita para gerar um ponto de verificação. Quando isso acontece, um gerenciador de ponto de verificação pode atualizar dados (por exemplo, a estrutura de dados 510) que indica ao compartimento de memória de ponto de verificação para associar com as atualizações posteriores. Por exemplo, o gerenciador de ponto de verificação pode obter um bloqueio exclusivo (por exemplo, o bloqueio 505) sobre os dados (por exemplo, a estrutura de dados 510) que indica o compartimento de memória de ponto de verificação atual. Depois que o gerenciador de ponto de verificação obteve um bloqueio exclusivo sobre os dados, o gerenciador de ponto de verificação pode atualizar os dados para indicar um novo compartimento de memória de ponto de verificação para atualizações posteriores. Todas as atualizações subsequentes estão associadas com o novo compartimento de memória até que o ponto de verificação de dados seja alterado para indicar outro compartimento de memória de ponto de verificação em atualizações subsequentes.
[0075] Um compartimento de memória de ponto de verificação pode ser pensado como um conceito lógico e pode ser implementado em uma variedade de maneiras. Por exemplo, em um aplicativo, um compartimento de memória de ponto de verificação pode ser implementado como uma estrutura de dados, tal como uma lista que tem ponteiros para cada uma das alterações associadas com o compartimento de memória de ponto de verificação. Como outro exemplo, o compartimento de memória de ponto de verificação pode ser implementado como os dados mantidos por cada atualização onde os dados indicam o ponto de verificação associado com a atualização. Como outro exemplo, o compartimento de memória de ponto de verificação pode ser implementado como um semáforo de contagem. Neste exemplo, pode não ser conhecido, que as atualizações ainda precisam ser gravadas em disco, mas uma contagem das atualizações que ainda precisam ser gravadas no disco é conhecida. Um bloqueio de leitura / gravação pode ser utilizado neste exemplo.
[0076] Os exemplos acima não pretendem ser all-inclusive ou exaustivos das formas de implementação de um compartimento de memória de ponto de verificação. Com efeito, com base nos ensinamentos aqui descritos, os versados na técnica podem reconhecer muitos outros mecanismos para implementar compartimentos de memória de ponto de verificação.
[0077] Depois de indicar o compartimento de memória de ponto de verificação para atualizações subsequentes (por exemplo, mudando a estrutura de dados 510), o gerenciador de ponto de verificação pode esperar para planos de gravação para todas as atualizações no compartimento de memória de ponto de verificação atual a ser gerado. Depois de gravar, planos para todas as atualizações em um compartimento de memória de ponto de verificação atual são gerados (mas talvez não gravados no armazenamento), o gerenciador de ponto de verificação pode tirar um snapshot das tabelas globais 405 da FIGURA 4 e criar um plano de gravação para gravar o snapshot das tabelas globais 405 no armazenamento. Um snapshot pode ser criado como uma cópia lógica das tabelas globais 405 através de cópia na gravação ou outros mecanismos.
[0078] Voltando à FIGURA 4, planos de gravação para atualizações posteriores para o ponto de verificação podem ser gerados e gravados no disco, enquanto o gerenciador de ponto de verificação espera que todas as atualizações no compartimento de memória de ponto de verificação atual sejam geradas e também enquanto o gerenciador de ponto de verificação gera um plano de gravação para gravar um ponto de verificação. Quando o gerenciador ponto de verificação procura obter um snapshot das tabelas globais, porém, o gerenciador de ponto de verificação pode obter um bloqueio exclusivo sobre as tabelas globais 405 antes de criar o snapshot. Enquanto o gerenciador de ponto de verificação tem um bloqueio exclusivo, planos de gravação ainda podem ser gerados para outras atualizações e estes planos de gravação podem ainda ser armazenados em um armazenamento, mas as tabelas globais (por exemplo, a tabela de objeto) não podem ser atualizadas para apontar para esses planos de gravação até depois que o gerenciador de ponto de verificação lançou seu bloqueio exclusivo. Em conjunto com a liberação do bloqueio, o gerenciador de ponto de verificação pode enviar um sinal (por exemplo, elevar um evento), que indica que um ponto de verificação posterior foi habilitado e que as atualizações subsequentes podem atualizar as tabelas globais.
[0079] Para ajudar na recuperação, a verificação pode ser gravada no disco com um código de validação para validar o ponto de verificação de acordo com as seguintes regras: 1. Esperar por dados indicados pelos planos de gravação para ser gravados em disco (por exemplo, esperar que todas as atualizações associadas ao ponto de verificação sejam gravadas em disco); 2. Solicitar que todos os dados associados com o ponto de verificação sejam gravados no disco (por exemplo, solicitar que a cópia lógica dos metadados seja gravada no disco); 3. Emitir ou esperar por um flush e esperar por uma confirmação de que o flush foi concluído com êxito. 4. Gerar um código de validação para os dados de pontos de verificação que foram gravados no disco. Em uma modalidade, o código de validação pode ser um subconjunto dos dados gravados no disco. Por exemplo, se os dados de um arquivo forem armazenados em uma árvore onde cada nó da árvore inclui código de validação para seus filhos, então o código de validação pode ser para o nó raiz da árvore. Nesta modalidade, o código de validação pode ser gravado com o nó da raiz e pode também ser usado para verificar se o código de validação é correto.
[0080] 5. Solicitar que o código de validação (e todos os dados as sociados, tais como o nó raiz) seja gravado no disco. Note que o código de validação não pode realmente chegar ao disco antes de falha do sistema. Se não, então o ponto de verificação não é um ponto de verificação válido.
[0081] Com estas regras, durante a recuperação, se o ponto de verificação for encontrado no armazenamento, bem como o código de validação interno do ponto de verificação for válido, os outros dados associados com o ponto de verificação são também previstos para ser armazenados no armazenamento e ser válidos. Se o código de validação é incluído no nó raiz, os outros dados no nó raiz (por exemplo, os ponteiros para os outros nós na árvore) podem ser usados para localizar o resto dos dados correspondentes para o ponto de verificação.
[0082] Como uma alternativa, um código de validação para cada atualização associada a um ponto de verificação pode ser gravado no armazenamento. Por exemplo, a verificação pode indicar blocos de todas as atualizações que deveriam ocorrer antes do ponto de verificação e após o ponto de verificação anterior. Para cada bloco indicado, o ponto de verificação pode armazenar um código de validação que indica o conteúdo correto do bloco. Durante a recuperação nesta alternativa, para validar um ponto de verificação, cada bloco pode ser validado contra o seu código de validação associado do ponto de verificação.
[0083] Voltando à FIGURA 2, em uma modalidade, o gerenciador de ponto de verificação 230 pode ser operável para executar as seguintes ações, incluindo: 1. Determinar um primeiro ponto de verificação para associar com solicitações para atualizar os objetos do sistema de arquivos. Como mencionado anteriormente, o gerenciador de ponto de verificação 230 pode fazer isto mediante a atualização de uma estrutura de dados (por exemplo, a estrutura de dados 510 da FIGURA 5) para apontar para um novo compartimento de memória de ponto de verificação. Em seguida, conforme cada solicitação subsequente para atualizar for recebida, a solicitação pode ser atribuída ao novo compartimento de memória de ponto de verificação.
[0084] Note-se que o termo "primeiro", tal como aqui utilizado não significa o primeiro ponto de verificação; em vez disso, é utilizado para distinguir um “segundo” ponto de verificação. Em outras palavras, se houver N pontos de verificação, um primeiro ponto de verificação pode ser qualquer X onde 1 <= X <= N e um segundo ponto de verificação pode ser qualquer Y onde 1 <= Y <= N e X <> Y. 2. Determinar quando gravar dados de pontos de verificação associados ao ponto de verificação no armazenamento do sistema de arquivos. Por exemplo, um temporizador de ponto de verificação pode expirar, um certo número de alterações pode ser ultrapassado, ou algum outro limite pode ser utilizado para determinar que é tempo de gravar os dados de ponto de verificação. 3. Determinar um segundo ponto de verificação para solicitações subsequentes para atualizar objetos do sistema de arquivos. Como mencionado anteriormente, o gerenciador de ponto de verificação 230 pode fazer isto mediante a atualização da estrutura de dados (por exemplo, a estrutura de dados 510 da FIGURA 5) após a obtenção de um bloqueio exclusivo (por exemplo, o bloqueio 505) na estrutura de dados. 4. Esperar por um estado de consistência do sistema de arquivos, permitindo a preparação para gravar dados para solicitações subsequentes. Um estado consistente ocorre quando todas as atualizações associadas com o compartimento de memória de ponto de verificação atual estão representadas (por exemplo, foram gravadas com êxito) no armazenamento. Permitir a preparação para gravar dados para as solicitações subsequentes inclui que permitir planos de gravação sejam gerados e gravados no armazenamento para as solicitações subsequentes, mas não permitir que os metadados (por exemplo, as tabelas globais) sejam atualizadas até depois da cópia lógica dos metadados ser criada. 5. Criar uma cópia lógica de metadados do sistema de arquivos. Isto pode ser feito através de um snapshot das tabelas globais como mencionado anteriormente. 6. Gravar a cópia lógica dos metadados no armazenamento. Em uma modalidade, isto pode incluir solicitar que a cópia lógica seja gravada no armazenamento e esperar por confirmação de que a cópia lógica foi gravada no armazenamento. Em uma outra modalidade, isto pode incluir marcar a cópia no armazenamento como limpa de modo que as atualizações subsequentes para os metadados causem uma cópia na gravação antes de permitir que as atualizações. 7. Gravar pelo menos um código de validação no armazenamento. Como mencionado anteriormente, o código de validação pode ser utilizável para determinar se as atualizações antes do ponto de verificação foram gravadas no armazenamento, bem como se o próprio registrador de ponto de verificação é válido.
[0085] A API 215 pode receber uma solicitação para modificar um objeto envolvido em uma transação. Em resposta, o gerenciador de I / O 235 pode localizar o objeto em um local de armazenamento (por exemplo, L1) do armazenamento, criar uma cópia lógica do objeto, fazer alterações no objeto no contexto da transação, determinar um segundo local de armazenamento (por exemplo, L2) para armazenar a cópia lógica como alterada, enviar uma solicitação para gravar a cópia lógica como alterada para o controlador de armazenamento 240, e atualizar uma estrutura de dados volátil (por exemplo, a tabela de objeto 310) para indicar que a cópia lógica é armazenada no segundo local de armazenamento.
[0086] Se a API 215 recebe uma solicitação para modificar outro objeto envolvido na transação, o gerenciador de I / O 235 pode executar ações adicionais, incluindo a criação de uma associação (por exemplo, um plano de gravação) que liga o outro objeto e o primeiro objeto juntos. Então, em conjunto com o envio de uma solicitação para gravar as modificações dos objetos no armazenamento, o gerenciador de I / O 235 também pode enviar uma solicitação para gravar a associação para os controladores de armazenamento 240.
[0087] Figuras 6-8 são diagramas de fluxo que geralmente representam ações exemplares que podem ocorrer de acordo com os aspectos da matéria aqui descrita. Para simplicidade de explicação, a metodologia descrita em conjunção com as Figuras 6 - 8 é retratada e descrita como uma série de atos. Deve ser entendido e apreciado que os aspectos da matéria descrita neste documento não são limitados pelos atos ilustrados e/ou pela ordem de atos. Em uma modalidade, os atos ocorrem em uma ordem conforme descrito abaixo. Em outras modalidades, no entanto, os atos podem ocorrer em paralelo, com uma ordem diferente, e/ou com outros atos não apresentados e descritos aqui. Além disso, nem todos os atos ilustrados podem ser necessários para implementar a metodologia de acordo com os aspectos da matéria aqui descrita. Além disso, os versados na técnica compreenderão e apreciarão que a metodologia pode ser alternativamente representada como uma série de estados interligados por meio de um diagrama de estados ou como eventos.
[0088] Voltando à FIGURA 6, no bloco 605, as ações começam. No bloco 610, uma indicação é feita que um primeiro conjunto de atualizações deve ser associada com um primeiro ponto de verificação. Isto pode ser feito através da modificação de uma estrutura de dados para indicar que as atualizações subsequentes devem ser associadas com um primeiro ponto de verificação. Isto pode envolver, por exemplo, a obtenção e liberação de um bloqueio e atualização de um ponteiro ou outra estrutura de dados para se referir a um compartimento de memória de ponto de verificação, como mencionado anteriormente. Note-se que novamente "primeiro" pode significar qualquer ponto de verificação de um sistema de arquivo e é usado para distinguir este ponto de verificação a partir de um ponto de verificação subsequente. Por exemplo, referindo-se às Figuras 2 e 5, o gerenciador de ponto de verificação 230 pode obter o bloqueio 505 na estrutura de dados 510 e atualizar o ponteiro para apontar para um dos compartimentos de memória de ponto de verificação 515.
[0089] No bloco 615, atualizações são recebidas e associadas com o primeiro ponto de verificação. Por exemplo, se referindo à FIGURA 2, o gerenciador de I / O 235 pode receber solicitações de atualização do aplicativo (s) 210 através da API 215. Como as alterações são recebidas, elas podem ser associadas com um ponto de verificação.
[0090] No bloco 620, é feita uma determinação para gravar dados de ponto de verificação do primeiro ponto de verificação no armazenamento de um sistema de arquivos. Por exemplo, se referindo à FIGURA 2, o gerenciador de ponto de verificação 230 pode determinar que um temporizador de ponto de verificação expirou e pode determinar com base no mesmo que um ponto de verificação deve ser gravado no armazenamento 250.
[0091] No bloco 625, o bloqueio é obtido em uma estrutura de dado para a indicação de pontos de verificação para atualizações posteriores. Por exemplo, referindo-se às Figuras 2 e 5, o gerenciador de ponto de verificação 230 pode obter o bloqueio 505 na estrutura de dados 510.
[0092] No bloco 630, a estrutura de dados é atualizada para se referir a outro ponto de verificação. A modificação desta estrutura de dados indica que as alterações que ocorrem após a primeira série de alterações estão associadas com um ponto de verificação subsequente. Por exemplo, referindo-se às Figuras 2 e 5, o gerenciador de ponto de verificação 230 pode atualizar a estrutura de dados 510 para se re ferir a outro dos compartimentos de memória de ponto de verificação 515.
[0093] No bloco 635, o bloqueio será liberado. Por exemplo, refe- rindo-se às Figuras 2 e 5, o gerenciador de ponto de verificação 230 pode soltar o bloqueio 505.
[0094] No bloco 640, planos de gravação para as atualizações são gerados. Cada plano de gravação indica, pelo menos, um local planejado no armazenamento de dados que representam pelo menos um do primeiro conjunto de atualizações. Por exemplo, se referindo à FIGURA 2, o gerenciador de plano de gravação 237 pode estar envolvido na criação de planos de gravação para atualizações associadas a um ponto de verificação.
[0095] No bloco 645, metadados são atualizados para os planos de gravação. Esses metadados indicam locais de armazenamento para os planos de gravação (embora os planos de gravação possam ou não ter sido gravados no armazenamento até o momento). Por exemplo, se referindo à FIGURA 2, o gerenciador de plano de gravação 237 pode atualizar tabelas globais para indicar locais de armazenamento de objeto modificado pelos planos de gravação.
[0096] Após bloco 645, as ações continuam no bloco 705 da FIGURA 7. Passando à FIGURA 7, no bloco 705, um bloqueio é obtido para os metadados. Por exemplo, se referindo à FIGURA 2 e 4, o gerenciador de ponto de verificação 230 pode obter um bloqueio nas tabelas globais 405. O gerenciador de ponto de verificação 230 pode esperar até que os metadados reflitam os locais de armazenamento de todas as atualizações no primeiro conjunto de atualizações (apesar de todas essas atualizações poderem ou não ter sido gravadas nesses locais de armazenamento).
[0097] No bloco 710, uma cópia lógica dos metadados é criada. Como mencionado anteriormente, isso pode envolver a criação de uma nova cópia dos metadados, marcar os metadados como limpos para que as atualizações posteriores para o metadados causem uma cópia na gravação, ou algum outro mecanismo de cópia lógica. Por exemplo, fazendo referência às Figuras 2 e 4, o gerenciador de ponto de verificação 230 pode fazer uma cópia lógica das tabelas globais 405.
[0098] No bloco 715, o bloqueio será liberado. Por exemplo, refe- rindo-se às Figuras 2 e 4, o gerenciador de ponto de verificação 230 pode liberar um bloqueio sobre as tabelas globais 405.
[0099] No bloco 720, um plano de gravação para gravar os primeiros dados de ponto de verificação é criado. A criação deste plano de gravação pode ocorrer em paralelo com os planos de gravação sendo gerados (e gravados no disco) para atualizações posteriores ao ponto de verificação, bem como dados correspondente aos planos de gravação atual sendo gravados no disco. Por exemplo, se referindo à FIGURA 2, o gerenciador de ponto de verificação 230 pode usar o gerenciador de plano de gravação 237 para criar um plano de gravação de dados de pontos de verificação do primeiro ponto de verificação. Estes dados podem incluir uma cópia lógica das tabelas globais previamente mencionadas.
[00100] No bloco 725, em uma modalidade, o gerenciador de ponto de verificação pode esperar que todas as atualizações do primeiro conjunto de atualizações sejam gravadas com sucesso no armazenamento. Depois de todas as atualizações terem sido gravadas com sucesso no armazenamento, o gerenciador de atualização pode então gravar um registrador de ponto de verificação de verificação final que inclui um código de validação. Como mencionado anteriormente, isto permite a recuperação para simplesmente verificar o código de validação para determinar se todas as alterações correspondentes ao ponto de verificação que são esperadas foram gravadas no armazenamento.
[00101] Em outra modalidade, o gerenciador de ponto de verificação pode gravar vários códigos de validação em um registrador de ponto de verificação. Estes códigos de validação podem ser associados com os locais de armazenamento de atualizações do primeiro conjunto de atualizações. Nesta modalidade, o gerenciador de ponto de verificação pode esperar por essas atualizações para serem gravadas no armazenamento ou pode gravar o registrador de ponto de verificação sem esperar. Se a última opção for escolhida, encontrar um ponto de verificação adequado durante a recuperação pode ser mais envolvido do que verificar se um registrador de ponto de verificação válido está no disco.
[00102] No bloco 730, dados de pontos de verificação podem ser gravados no armazenamento. Isto pode envolver, por exemplo, gravar um plano de gravação associado com os dados de ponto de verificação no armazenamento. Como outro exemplo, isto pode envolver gravar um registrador de ponto de verificação no armazenamento que se refere à cópia lógica das tabelas globais. Por exemplo, se referindo à FIGURA 2, o gerenciador de ponto de verificação 230 pode solicitar que um plano de gravação correspondente aos dados de ponto de verificação seja gravado no armazenamento.
[00103] No bloco 735, pelo menos, um código de validação é gravado no armazenamento. Gravar pelo menos um código de validação no armazenamento pode ser combinado com gravar um registro de ponto de verificação no armazenamento que se refere às cópias lógicas das tabelas globais. Por exemplo, se referindo à FIGURA 2, o gerenciador de ponto de verificação 230 pode gravar um registrador de ponto de verificação de armazenamento que se refere às cópias lógicas das tabelas globais e que inclui um código de validação para verificar o conteúdo do registrador de ponto de verificação.
[00104] No bloco 740, a outras ações, se for o caso, podem ser rea- lizadas.
[00105] Voltando à FIGURA 8, no bloco 805, as ações começam. No bloco 810, uma solicitação de recuperação é recebida. Por exemplo, se referindo à FIGURA 2, o gerenciador de recuperação 225 pode receber uma solicitação de recuperação para executar a recuperação de dados armazenados no armazenamento 250.
[00106] No bloco 815, os dados de ponto de verificação estão localizados. Por exemplo, se referindo à FIGURA 2, o gerenciador de recuperação 225 pode localizar os dados mais recentes do ponto de verificação armazenados no armazenamento 250 (ou algum outro armazenamento).
[00107] No bloco 820, os dados do ponto de verificação são validados através de um código de validação. Por exemplo, se referindo à FIGURA 2, o gerenciador de recuperação 225 pode calcular uma soma de verificação dos dados de pontos de verificação e comparar esta soma com a soma de verificação armazenada com os dados de pontos de verificação. Se a soma de verificação casar, a verificação pode ser considerada válida. Se validação adicional é desejada, o gerenciador de recuperação pode tentar validar um ou mais objetos indicados pelas tabelas globais referidas pelos dados de pontos de verificação.
[00108] No bloco 825, a outras ações, se for o caso, podem ser realizadas.
[00109] Conforme pode ser visto a partir da descrição detalhada acima exposta, aspectos foram descritos relacionados com pontos de verificação para um sistema de arquivos. Embora os aspectos da matéria aqui descrita sejam suscetíveis a várias modificações e construções alternativas, certas modalidades ilustradas dos mesmos são mostradas nos desenhos e foram descritas acima em detalhes. Deve ser entendido, contudo, que não há intenção de limitar os aspectos da matéria reivindicada às formas específicas descritas, mas, pelo contrá- rio, a intenção é cobrir todas as modificações, construções alternativas e equivalentes que caem dentro do espírito e âmbito dos vários aspectos da matéria aqui descrita.

Claims (17)

1. Método implementado pelo menos em parte por um computador caracterizado pelo fato de que compreende as etapas de: indicar que um primeiro conjunto de atualizações está sendo associada com um primeiro ponto de verificação; determinar a gravação de dados de pontos de verificação em relação ao primeiro ponto de verificação para um armazenamento de um sistema de arquivos que usa cópia na gravação para atualização de dados do sistema de arquivos; indicar que as alterações que ocorrem após o primeiro conjunto de atualizações estão associadas com um ponto de verificação subsequente; gerar planos de gravação do primeiro conjunto de atualizações, cada plano de gravação indicando pelo menos um local planejado de armazenamento de dados que representa pelo menos um do primeiro conjunto de atualizações; atualizar metadados para indicar dados de alocação do sistema de arquivos, bem como locais de armazenamento para objetos do sistema de arquivos modificados pelos planos de gravação, criar uma cópia lógica dos metadados; criar um plano de gravação para gravar os dados do primeiro ponto de verificação enquanto permite que planos de gravação sejam gerados para as atualizações subsequentes em paralelo com a criação do plano de gravação, e gravar pelo menos um código de validação no armazenamento, a pelo menos uma parte do código de validação de dados de pontos de verificação, pelo menos um código de validação utilizável para determinar se o primeiro conjunto de alterações foi corretamente gravado no armazenamento.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende a etapa de esperar por dados que representam o primeiro conjunto de alterações a ser gravado no armazenamento antes de gravar pelo menos um código de validação, no armazenamento.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de gravar pelo menos um código de validação no armazenamento ainda compreende gravar um código de validação único no armazenamento em um bloco com outros dados que fazem referência aos nós raiz de pelo menos uma estrutura de dados de árvore, que representa a cópia lógica dos metadados, e ainda compreendendo o cálculo do código de validação único para validar o bloco.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende a etapa de ler pelo menos um código de validação, computar pelo menos um outro código de validação a partir dos dados no armazenamento, comparar pelo menos um código de validação com pelo menos um outro código de validação, e determinar com base no mesmo se todos os dados que representam o primeiro conjunto de atualizações foram gravados com êxito no armazenamento.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de indicar que um primeiro conjunto de atualizações está sendo associada com um primeiro ponto de verificação compreende atualizar uma estrutura de dados que indica que o primeiro ponto de verificação deve ser usado para qualquer atualização que ocorre antes da estrutura de dados ser atualizada para indicar um outro ponto de verificação.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que ainda compreende a etapa de obter um travamento exclusivo sobre a estrutura de dados antes de indicar que as atualiza ções que ocorrem após o primeiro conjunto de atualizações devem ser associadas a um ponto de verificação subsequente e liberar o trava- mento exclusivo após indicar que as atualizações que ocorrem após o primeiro conjunto de atualizações devem ser associadas a um ponto de verificação subsequente.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de determinar a gravação dos dados do ponto de verificação compreende determinar que a sincronização de um ponto de verificação expirou, a sincronização do ponto de verificação baseada em uma janela de recuperação.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de criar uma cópia lógica dos metadados compreende obter um travamento exclusivo sobre os metadados, indicando que qualquer parte dos metadados que é posteriormente modificada deve ser copiada antes de ser modificada, e liberar o travamento exclusivo sobre os metadados.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de criar uma cópia lógica dos metadados compreende criar a cópia lógica em paralelo com a gravação dos dados que representam pelo menos um do primeiro conjunto de atualizações no armazenamento.
10. Sistema compreende: um computador; uma interface implementada pelo menos em parte pelo computador e configurada para receber uma solicitação para atualizar um objeto do sistema de arquivos de um sistema de arquivos; um gerenciador de I/O implementado pelo menos em parte pelo computador e configurado para determinar uma ou mais solicitações de I/O para enviar para um armazenamento para atender a solicitação, e um gerenciador de ponto de verificação implementado pelo menos em parte pelo computador e configurado para executar ações caracterizado pelo fato de que compreende: determinar um primeiro ponto de verificação para associar com solicitações para atualizar os objetos do sistema de arquivos, em que o gerenciador de ponto de verificação é configurado para atribuir solicitações para pontos de verificação diferentes; determinar a gravação de dados de pontos de verificação associados com o ponto de verificação para um dispositivo de armazenamento do sistema de arquivos; determinar um segundo ponto de verificação para solicitações subsequentes para atualizar objetos do sistema de arquivos; esperar um estado de consistência do sistema de arquivos enquanto permite a preparação para gravar dados para as solicitações subsequentes; criar uma cópia lógica de metadados do sistema de arquivos; gravar a cópia lógica no armazenamento, e gravar pelo menos um código de validação no armazenamento, pelo menos um código de validação configurado para determinar se as atualizações anteriores ao ponto de verificação foram gravadas no armazenamento; em que o gerenciador de ponto de verificação é configurado para determinar um primeiro ponto de verificação para associar-se com as solicitações para atualizar objetos do sistema de arquivo é ainda configurado para atualizar uma estrutura de dados que indica que o primeiro ponto de verificação deve ser usado para atualizações que ocorrem antes de se determinar a gravação de dados de ponto de verificação associada com o ponto de verificação em um armazenamento sistema de arquivo e que o segundo ponto de verificação deve ser usado para atualizações que ocorrem depois.
11. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o gerenciador de ponto de verificação ainda configurado para atualizar a estrutura de dados é ainda configurada para obter um travamento exclusivo sobre a estrutura de dados antes de atualizar a estrutura de dados e liberar o travamento exclusivo depois de atualizar a estrutura de dados.
12. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o gerenciador de ponto de verificação ainda configurado para determinar a gravação dos dados de pontos de verificação associados com o ponto de verificação para um dispositivo de armazenamento do sistema de arquivo é ainda configurado para determinar que um tempo de ponto de verificação expirou, o tempo do ponto de verificação com base em uma janela de recuperação.
13. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o gerenciador de I/O configurado para determinar um ou mais solicitações de I/O para enviar a um armazenamento para atender a solicitação é ainda configurada para criar uma cópia lógica do objeto do sistema de arquivos antes de enviar um ou mais solicitações de I/O para o armazenamento para atualizar o objeto de sistema de arquivos.
14. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que ainda compreende um gerenciador de plano de gravação configurado para gerar um plano de gravação que indica os locais de armazenamento de todos os objetos de sistema de arquivo que estão sendo atualizados em conjunto com o objeto de sistema de arquivo de modo a manter um estado consistente para o sistema de arquivo.
15. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o gerenciador de ponto de verificação configu- rado para esperar por um estado consistente do sistema de arquivo é ainda configurado para esperar até que todas as atualizações associadas com o primeiro objeto do sistema de arquivo de ponto de verificação sejam representadas no armazenamento do sistema de arquivos.
16. Sistema, de acordo com a reivindicação 10, caracterizado pelo fato de que o gerenciador de ponto de verificação configurado para permitir que a preparação para gravar dados para as solicitações subsequentes é ainda configurado para permitir que os planos de gravação sejam gerados e gravados no armazenamento para as solicitações subsequentes, mas não permitindo que os metadados sejam atualizados até após a cópia lógica dos metadados ser criada.
17. Meio de armazenamento de computador tendo um método, caracterizado pelo fato de que compreende as etapas de: receber uma solicitação de recuperação para um sistema de arquivos; localizar dados de pontos de verificação de um ponto de verificação em um dispositivo de armazenamento do sistema de arquivos, os dados de ponto de verificação tendo sido anteriormente gerados por ações, compreendendo: indicar que todas as atualizações que ocorrem após a atualizações associadas ao ponto de verificação sejam atribuídas a um ponto de verificação subsequente, gerar planos de gravação para as atualizações associadas com o ponto de verificação, cada plano de gravação indicando pelo menos um local planejado no armazenamento para representar pelo menos uma das atualizações, atualizar metadados para indicar locais de armazenamento de objetos modificados pelos planos de gravação, criar uma cópia lógica dos metadados, e gravar pelo menos um código de validação no armazenamento referente ao ponto de verificação, e validar os dados de ponto de verificação usando o código de validação, a validação compreendendo calcular uma soma de verificação dos dados de ponto de verificação e comparar a soma de verificação dos dados de ponto de verificação com o código de validação.
BR112012031912-4A 2010-06-15 2011-06-01 método implementado por computador, sistema e meio de armazenamento de computador BR112012031912B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/815,418 US8224780B2 (en) 2010-06-15 2010-06-15 Checkpoints for a file system
US12/815,418 2010-06-15
PCT/US2011/038811 WO2011159476A2 (en) 2010-06-15 2011-06-01 Checkpoints for a file system

Publications (2)

Publication Number Publication Date
BR112012031912A2 BR112012031912A2 (pt) 2016-11-08
BR112012031912B1 true BR112012031912B1 (pt) 2020-11-17

Family

ID=45097053

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012031912-4A BR112012031912B1 (pt) 2010-06-15 2011-06-01 método implementado por computador, sistema e meio de armazenamento de computador

Country Status (11)

Country Link
US (3) US8224780B2 (pt)
EP (1) EP2583202B1 (pt)
JP (1) JP5735104B2 (pt)
KR (2) KR101840996B1 (pt)
CN (1) CN102934114B (pt)
AU (1) AU2011265653B2 (pt)
BR (1) BR112012031912B1 (pt)
CA (1) CA2803763C (pt)
RU (1) RU2554847C2 (pt)
TW (1) TWI492077B (pt)
WO (1) WO2011159476A2 (pt)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433865B2 (en) * 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9769250B2 (en) 2013-08-08 2017-09-19 Architecture Technology Corporation Fight-through nodes with disposable virtual machines and rollback of persistent state
US9838415B2 (en) 2011-09-14 2017-12-05 Architecture Technology Corporation Fight-through nodes for survivable computer network
US9766986B2 (en) * 2013-08-08 2017-09-19 Architecture Technology Corporation Fight-through nodes with disposable virtual machines and rollback of persistent state
US8543544B2 (en) * 2012-01-06 2013-09-24 Apple Inc. Checkpoint based progressive backup
FR2989801B1 (fr) * 2012-04-18 2014-11-21 Schneider Electric Ind Sas Procede de gestion securisee d'un espace memoire pour microcontroleur
KR102050723B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
US9003228B2 (en) * 2012-12-07 2015-04-07 International Business Machines Corporation Consistency of data in persistent memory
US9304998B2 (en) * 2012-12-19 2016-04-05 Microsoft Technology Licensing, Llc Main-memory database checkpointing
WO2015116190A1 (en) 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Persistent memory controller based atomicity assurance
CN103984609B (zh) * 2014-05-28 2017-06-16 华为技术有限公司 一种基于写时复制的文件系统中回收检查点的方法和装置
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9892153B2 (en) * 2014-12-19 2018-02-13 Oracle International Corporation Detecting lost writes
CN106294357B (zh) * 2015-05-14 2019-07-09 阿里巴巴集团控股有限公司 数据处理方法和流计算系统
US10031817B2 (en) 2015-11-05 2018-07-24 International Business Machines Corporation Checkpoint mechanism in a compute embedded object storage infrastructure
US10412116B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Mechanism for concealing application and operation system identity
US10284592B1 (en) 2015-12-17 2019-05-07 Architecture Technology Corporation Application randomization mechanism
US10200406B1 (en) 2015-12-17 2019-02-05 Architecture Technology Corporation Configuration of application randomization mechanism
US10007498B2 (en) 2015-12-17 2018-06-26 Architecture Technology Corporation Application randomization mechanism
US10200401B1 (en) 2015-12-17 2019-02-05 Architecture Technology Corporation Evaluating results of multiple virtual machines that use application randomization mechanism
US10412114B1 (en) 2015-12-17 2019-09-10 Architecture Technology Corporation Application randomization mechanism
CN105930223A (zh) * 2016-04-24 2016-09-07 湖南大学 一种减少检查点文件大小的方法
US20220100374A1 (en) * 2016-08-19 2022-03-31 Ic Manage Inc Hierarchical file block variant tracking for performance in parallelism at multi-disk arrays
KR101969799B1 (ko) * 2016-09-07 2019-04-17 울산과학기술원 전자 장치 및 제어 방법
CN108509460B (zh) 2017-02-28 2021-07-20 微软技术许可有限责任公司 分布式系统中的数据一致性检查
US10554685B1 (en) 2017-05-25 2020-02-04 Architecture Technology Corporation Self-healing architecture for resilient computing services
US20190102262A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Automated continuous checkpointing
KR102022481B1 (ko) * 2017-12-06 2019-09-18 연세대학교 산학협력단 Gpu 사용량을 이용한 고성능 컴퓨팅 시스템의 체크포인트 생성 방법
KR102468737B1 (ko) * 2017-12-19 2022-11-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10754785B2 (en) 2018-06-28 2020-08-25 Intel Corporation Checkpointing for DRAM-less SSD
US11416453B2 (en) * 2019-04-23 2022-08-16 EMC IP Holding Company LLC Facilitating checkpoint locks for distributed systems
US11822435B2 (en) 2020-07-06 2023-11-21 Bank Of America Corporation Consolidated data restoration framework
US11620084B2 (en) 2020-12-30 2023-04-04 Samsung Electronics Co., Ltd. Storage device including memory controller and operating method of memory controller
CN113538754B (zh) * 2021-06-08 2023-04-07 福建新大陆通信科技股份有限公司 一种ctid智能门锁授权数据管理方法及系统
CN116048384A (zh) * 2022-11-02 2023-05-02 中国科学院空间应用工程与技术中心 一种文件系统元数据的写入方法和系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4959771A (en) * 1987-04-10 1990-09-25 Prime Computer, Inc. Write buffer for a digital processing system
EP1003103B1 (en) * 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
US5963962A (en) 1995-05-31 1999-10-05 Network Appliance, Inc. Write anywhere file-system layout
US6035399A (en) * 1995-04-07 2000-03-07 Hewlett-Packard Company Checkpoint object
US5864657A (en) * 1995-11-29 1999-01-26 Texas Micro, Inc. Main memory system and checkpointing protocol for fault-tolerant computer system
US5907849A (en) * 1997-05-29 1999-05-25 International Business Machines Corporation Method and system for recovery in a partitioned shared nothing database system using virtual share disks
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6449623B1 (en) * 1998-09-04 2002-09-10 Lucent Technologies Inc, Method and apparatus for detecting and recovering from data corruption of a database via read logging
JP2001101044A (ja) * 1999-09-29 2001-04-13 Toshiba Corp トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
US6629198B2 (en) * 2000-12-08 2003-09-30 Sun Microsystems, Inc. Data storage system and method employing a write-ahead hash log
US7730213B2 (en) * 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6678809B1 (en) * 2001-04-13 2004-01-13 Lsi Logic Corporation Write-ahead log in directory management for concurrent I/O access for block storage
JP2003223350A (ja) * 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US6993539B2 (en) 2002-03-19 2006-01-31 Network Appliance, Inc. System and method for determining changes in two snapshots and for transmitting changes to destination snapshot
US20040216130A1 (en) * 2002-08-30 2004-10-28 Keller S. Brandon Method for saving and restoring data in software objects
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US7216254B1 (en) 2003-03-24 2007-05-08 Veritas Operating Corporation Method and system of providing a write-accessible storage checkpoint
US7412460B2 (en) * 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
JP3798767B2 (ja) * 2003-06-26 2006-07-19 株式会社東芝 ディスク制御システム及びディスク制御プログラム
US7401093B1 (en) 2003-11-10 2008-07-15 Network Appliance, Inc. System and method for managing file data during consistency points
US7721062B1 (en) 2003-11-10 2010-05-18 Netapp, Inc. Method for detecting leaked buffer writes across file system consistency points
US7054960B1 (en) * 2003-11-18 2006-05-30 Veritas Operating Corporation System and method for identifying block-level write operations to be transferred to a secondary site during replication
US7168001B2 (en) * 2004-02-06 2007-01-23 Hewlett-Packard Development Company, L.P. Transaction processing apparatus and method
US7664965B2 (en) * 2004-04-29 2010-02-16 International Business Machines Corporation Method and system for bootstrapping a trusted server having redundant trusted platform modules
JP4104586B2 (ja) * 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
US7505410B2 (en) * 2005-06-30 2009-03-17 Intel Corporation Method and apparatus to support efficient check-point and role-back operations for flow-controlled queues in network devices
US7693864B1 (en) * 2006-01-03 2010-04-06 Netapp, Inc. System and method for quickly determining changed metadata using persistent consistency point image differencing
US20070234342A1 (en) * 2006-01-25 2007-10-04 Flynn John T Jr System and method for relocating running applications to topologically remotely located computing systems
CN101501653B (zh) * 2006-02-06 2012-04-04 X档案公司 磁盘的长期备份
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US7870356B1 (en) * 2007-02-22 2011-01-11 Emc Corporation Creation of snapshot copies using a sparse file for keeping a record of changed blocks
US8495573B2 (en) 2007-10-04 2013-07-23 International Business Machines Corporation Checkpoint and restartable applications and system services
WO2009134772A2 (en) * 2008-04-29 2009-11-05 Maxiscale, Inc Peer-to-peer redundant file server system and methods
US8904127B2 (en) * 2008-10-30 2014-12-02 International Business Machines Corporation Performing a data write on a storage device

Also Published As

Publication number Publication date
RU2554847C2 (ru) 2015-06-27
JP5735104B2 (ja) 2015-06-17
CN102934114B (zh) 2015-11-25
KR101805948B1 (ko) 2017-12-07
CN102934114A (zh) 2013-02-13
RU2012154324A (ru) 2014-06-20
TW201202981A (en) 2012-01-16
BR112012031912A2 (pt) 2016-11-08
CA2803763C (en) 2019-02-26
US20150178165A1 (en) 2015-06-25
TWI492077B (zh) 2015-07-11
EP2583202B1 (en) 2022-01-12
US8924356B2 (en) 2014-12-30
KR101840996B1 (ko) 2018-03-21
EP2583202A4 (en) 2017-03-15
KR20170132338A (ko) 2017-12-01
WO2011159476A3 (en) 2012-02-16
CA2803763A1 (en) 2011-12-22
AU2011265653B2 (en) 2014-05-15
EP2583202A2 (en) 2013-04-24
US20110307449A1 (en) 2011-12-15
AU2011265653A1 (en) 2012-12-13
JP2013528883A (ja) 2013-07-11
KR20130115995A (ko) 2013-10-22
US8224780B2 (en) 2012-07-17
WO2011159476A2 (en) 2011-12-22
US20120259816A1 (en) 2012-10-11

Similar Documents

Publication Publication Date Title
BR112012031912B1 (pt) método implementado por computador, sistema e meio de armazenamento de computador
US9448869B2 (en) Error detection for files
US9430160B2 (en) Consistency without ordering dependency
CN109086388B (zh) 区块链数据存储方法、装置、设备及介质
JP2014526735A (ja) 検証されたデータセットの不揮発性媒体ジャーナリング
US11449261B2 (en) Low latency data mirroring in a large scale storage system
Toney Persitent Memory Test Framework

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]
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 01/06/2011, OBSERVADAS AS CONDICOES LEGAIS.