BRPI0922542B1 - Método realizado por um dispositivo de pluralidade de dispositivos num sistema distribuído de replicação de dados, sistema e memória legível em computador - Google Patents

Método realizado por um dispositivo de pluralidade de dispositivos num sistema distribuído de replicação de dados, sistema e memória legível em computador Download PDF

Info

Publication number
BRPI0922542B1
BRPI0922542B1 BRPI0922542-0A BRPI0922542A BRPI0922542B1 BR PI0922542 B1 BRPI0922542 B1 BR PI0922542B1 BR PI0922542 A BRPI0922542 A BR PI0922542A BR PI0922542 B1 BRPI0922542 B1 BR PI0922542B1
Authority
BR
Brazil
Prior art keywords
exclusion
objects
negotiation
metadata
message
Prior art date
Application number
BRPI0922542-0A
Other languages
English (en)
Inventor
Alexander Kesselman
Alexandre Drobychev
Original Assignee
Google 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 Google Llc filed Critical Google Llc
Publication of BRPI0922542B1 publication Critical patent/BRPI0922542B1/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems

Abstract

Métodos e Sistemas de Coleta Assíncrona Distribuída de Lixo, Dispositivo de Pluralidade de Dispo-sitivos e Memória Legível em Computador Um método pode ser realizado por um dispositivo de um grupo de dispositivos num sistema distribuído de replicação de dados. O método pode incluir armazenar objetos num armazém de dados, sendo pelo menos um ou mais dos objetos replicados com o sistema distribuído de replicação de dados e conduzindo uma varredura dos objetos no armazém de dados. O método pode ainda incluir identificar um dos objetos como não tendo uma referência apontando para o objeto, armazenar uma mensagem de negociação de deleção como metadados associados a um dos objetos e replicar os metadados com a mensagem de negociação de deleção para um ou mais outros dispositivos do grupo de dispo-sitivos.

Description

Relatório Descritivo Fundamentos
O panorama da computação nas empresas sofreu uma mudança fundamental nas arquiteturas de armazenamento na medida em que a arquitetura de serviço central deu lugar a agrupamentos de armazenamento distribuídos. Como os negócios procuram formas de aumentar a eficiência de armazenamento, esses agrupamentos construídos de computadores de conveniência podem oferecer alto desempenho, disponibilidade e escalabilidade para novos aplicativos intensivos em dados a uma fração do custo em comparação com matrizes de disco monolíticas. Para desbloquear o pleno potencial de agrupamentos de armazenamento, os dados são replicados através de múltiplas localizações geográficas, aumentando a disponibilidade e reduzindo a distância de rede dos clientes.
A coleta de lixo pode ser um problema para sistemas de armazenamento administrativamente descentralizados que gerenciam grandes objetos distribuídos. Um coletor de lixo é responsável pela recuperação de espaço em disco excluindo objetos que não são mais referenciados. Coleta de lixo distribuído em agrupamentos de armazenamento é ainda mais complicada por falhas comuns de máquinas e partições de rede que tornam dificil, se não impossível, obter uma visão global síncrona de objetos e suas referências.
Sumário
De acordo com uma implementação, um método pode ser executado por um dispositivo de um grupo de dispositivos em um sistema de replicação de dados distribuídos. O método pode incluir armazenar objetos em um armazenamento de dados, pelo menos um ou mais dos objetos sendo replicados com o sistema de replicação de dados distribuídos; realizar uma varredura dos objetos no armazenamento de dados; identificar um dos objetos como não tendo uma referência apontando para o objeto; armazenar uma mensagem de negociação de exclusão como metadados associados a um dos objetos; e replicar os metadados com a mensagem de negociação de exclusão para um ou mais outros dispositivos do grupo de dispositivos.
De acordo com outra implementação, um dispositivo de um grupo de dispositivos em um sistema de replicação de dados distribuídos pode incluir meios para identificar um objeto em um armazenamento de dados como tendo uma mensagem de negociação associada ao objeto; meios para associar uma nova mensagem de negociação ao objeto, a nova mensagem de negociação com base no status do objeto; meios para replicar a nova mensagem de negociação para um agrupamento de armazenamento; meios para receber outras mensagens de negociação associadas a uma réplica do objeto; e meios para excluir o objeto, se as outras mensagens de negociação indicarem uma negociação bem sucedida.
De acordo com outra aplicação, um sistema pode incluir uma memória para armazenar instruções e um armazenamento de dados e um processador. 0 processador pode executar instruções na memória para identificar um status de um objeto no armazenamento de dados, o status relativo a se o objeto tem uma referência e se uma mensagem de negociação de exclusão está associada ao objeto, escrever uma nova mensagem de negociação para os metadados do objeto com base no status do objeto, replicar os metadados com a nova mensagem de negociação para um ou mais dispositivos e receber, de um dos um ou mais dispositivos, outras mensagens de negociação associadas ao objeto, onde a nova mensagem de negociação e as outras mensagens de negociação fornecem um consenso para uma negociação de excluir do objeto.
De acordo ainda com outra implementação, um método pode incluir trocar, entre agrupamentos de armazenamento dentro de um sistema de replicação de dados multimestre distribuídos, uma ou mais mensagens de negociação de exclusão, onde cada uma das mensagens de negociação de exclusão é incluida em metadados de um objeto que é o assunto da mensagem de negociação de excluir e onde a mensagem de negociação de exclusão é enviada entre os agrupamentos de armazenamento usando uma camada de replicação do sistema de replicação de dados multimestres distribuídos; e excluir o objeto, se um consenso distribuído for alcançado entre os agrupamentos de armazenamento com base em uma ou mais mensagens de negociação de excluir.
De acordo com uma implementação adicional, uma memória legivel por computador pode incluir instruções executáveis em computador. A memória legivel por computador pode incluir uma ou mais instruções para identificar um status de um objeto em um armazenamento de dados, o status relativo a se o objeto tem uma referência e se uma mensagem de negociação de exclusão está associada ao objeto; uma ou mais instruções para gravar, para metadados do objeto, uma nova mensagem de negociação associada ao objeto com base no status do objeto; uma ou mais instruções para replicar os metadados do objeto com a nova mensagem de negociação para um agrupamento de armazenamento; uma ou mais instruções para receber, de um ou mais outros dispositivos, outras mensagens de negociação associadas ao objeto; e uma ou mais instruções para determinar consenso para uma negociação de excluir do objeto com base em outras mensagens de negociação associadas ao objeto.
Breve Descrição dos Desenhos
Os desenhos em anexo que são incorporados e constituem uma parte deste relatório, ilustram uma ou mais modalidades descritas neste documento e, juntamente com a descrição, explicam estas modalidades. Nos desenhos: A Fig. 1 é um diagrama de uma rede exemplificativa em que podem ser implementados os sistemas e os métodos descritos neste documento; A Fig. 2 é um diagrama de uma configuração exemplificativa do sistema de arquivos da Fig. 1; A Fig. 3 é um diagrama de componentes exemplificativos de um agrupamento de armazenamento da Fig. 1; A Fig. 4 é um diagrama de blocos funcional de um agrupamento de armazenamento exemplar da Fig. 1; A Fig. 5 é um diagrama exemplificative de uma estrutura de mensagem que pode ser usada de acordo com uma implementação consistente com os sistemas e os métodos descritos neste documento; A Fig. 6 é um fluxograma de um processo exemplificativo para executar coleta de lixo em um sistema de replicação de dados multimestres distribuídos de acordo com uma implementação consistente com os sistemas e os métodos descritos neste documento; A Fig. 7 é um fluxograma de um processo exemplificativo para gravar uma mensagem de negociação de acordo com uma implementação consistente com os sistemas e os métodos descritos neste documento; A Fig. 8 é um fluxograma de um processo exemplificativo para criar uma nova referência para um objeto de acordo com uma implementação consistente com os sistemas e os métodos descritos neste documento; e A Fig. 9 é um diagrama que ilustra uma parte de uma negociação de excluir exemplificativa de acordo com uma implementação.
Descrição Detalhada
A seguinte descrição detalhada refere-se aos desenhos em anexo. Os mesmos números de referência em desenhos diferentes podem identificar os mesmos elementos ou elementos similares.
Além disso, a seguinte descrição detalhada não limita a invenção.
Os sistemas e/ou métodos descritos neste documento podem executar coleta de lixo distribuído assíncrona para agrupamentos de armazenamento replicados. Implementações aqui descritas podem usar a camada subjacente de replicação de um sistema de replicação de dados multimestres distribuídos para transportar mensagens de negociação de excluir entre diferentes agrupamentos do sistema de replicação de dados multimestres distribuídos. Um objeto pode ser excluído quando é alcançado um consenso distribuído em que nem referências ao vivo nem referências replicadas estão presentes no sistema.
Configuração de Rede Exemplificativa
A Fig. 1 é um diagrama de um sistema exemplificativo 100 em que os sistemas e métodos descritos neste documento podem ser implementados. O sistema 100 pode incluir clientes 110-1 a 110-N (coletivamente denominados como clientes 110) e agrupamentos de armazenamento 120-1 a 120-M (coletivamente denominados como agrupamentos de armazenamento 120) conectados através de uma rede 130. Agrupamentos de armazenamento 120 podem formar um sistema de arquivo 140 (conforme mostrado pelas linhas pontilhadas na Fig. 1).
A rede 130 pode incluir uma ou mais redes, tal como uma rede de área local (LAN), uma rede de área ampla (WAN), uma rede de telefone, tal como a Public Switched Telephone Network (PSTN), uma intranet, Internet, uma rede semelhante ou diferente ou uma combinação de redes. Os clientes 110 e os agrupamentos de armazenamento 120 podem se conectar a rede 130 através de conexões com fio e/ou sem fio.
Os clientes 110 podem incluir um ou mais tipos de dispositivos, tal como um computador pessoal, um telefone sem fio, um assistente digital pessoal (PDA), um laptop ou outro tipo de dispositivo de comunicação, uma linha ou um processo rodando em um destes dispositivos e/ou objetos executáveis por estes dispositivos. Em uma implementação, um cliente 110 inclui, ou está ligado a, um aplicativo em cujo nome o cliente 110 se comunica com o agrupamento de armazenamento 12 0 para ler ou modificar (por exemplo, gravar) dados de arquivos.
O agrupamento de armazenamento 120 pode incluir um ou mais dispositivos de servidor, ou outros tipos de dispositivos de computação ou comunicação, que podem armazenar, processar, pesquisar e/ou fornecer informações de uma maneira descrita neste documento. Em uma implementação, o agrupamento de armazenamento 120 pode incluir um ou mais servidores (por exemplo, sistemas de computador e/ou aplicativos) capazes de manter um armazenamento de dados de leitura aleatória / acesso de gravação em grande escala para arquivos. O armazenamento de dados do agrupamento de armazenamento 120 pode permitir a um sistema de indexação atualizar rapidamente porções de um indice, se ocorrer uma alteração. O armazenamento de dados do agrupamento de armazenamento 120 pode incluir uma ou mais tabelas (por exemplo, uma tabela de documento que pode incluir uma linha por "uniform resource locator" (URL), tabelas auxiliares chaveadas por valores diferentes de URLs, etc.). Em um exemplo, o agrupamento de armazenamento 120 pode ser incluido em um sistema de armazenamento distribuído (por exemplo, um "Bigtable" tal como previsto em Chang et al, "Bigtable: A Distributed Storage System for Structured Data", Proc. Of the 7th OSDI, pp. 205-218 (novembro de 2006)) para gerenciar dados estruturados (por exemplo, um agrupamento de armazenamento de acesso aleatório de documentos) que podem ser projetados em escala de tamanho muito grande (por exemplo, petabytes de dados através de milhares de servidores).
Embora não mostrado na Fig. 1, sistema 100 pode incluir uma variedade de outros componentes, tal como um ou mais servidores ou hubs de consumidor dedicados. Como usado neste documento, um componente pode incluir hardware ou uma combinação de hardware e software. Um servidor de consumidor, por exemplo, pode armazenar uma cópia somente de leitura de um armazenamento de dados de um ou mais agrupamentos de armazenamento 120 para acesso por clientes 110. Um hub, por exemplo, pode armazenar uma cópia somente de leitura de um armazenamento de dados de um ou mais agrupamentos de armazenamento 120 para distribuição a um ou mais servidores de consumidor.
Configuração Exemplificativa de Agrupamento de Armazenamento
A Fig. 2 é um diagrama de uma configuração exemplar do sistema de arquivos 140. Como mostrado na Figura 2, o sistema de arquivos 140 pode incluir agrupamentos de armazenamento 120-1, 120-2, 120-3 e 120-4. Em uma implementação, o sistema de arquivos 140 pode ser um sistema de replicação de dados multimestres distribuídos onde cada um dos agrupamentos de armazenamento 120-1, 120-2, 120-3 e 120-4 pode agir como um servidor mestre para os outros agrupamentos de armazenamento. No sistema de arquivos 140, dados podem ser replicados através dos agrupamentos de armazenamento 120-1, 120-2, 120-3 e 120-4 (por exemplo, em múltiplas localizações geográficas) para aumentar a disponibilidade de dados e reduzir a distância de rede dos clientes (por exemplo, clientes 110) . Geralmente, referências e objetos distribuídos podem ser criados dinamicamente, mutados, clonados e excluídos em agrupamentos de armazenamento diferentes 120 e uma camada de replicação de dados subjacente (não mostrada) mantém a fidelidade da ordem de gravação para assegurar que todos os agrupamentos de armazenamento 120 acabarão com a mesma versão de dados. Assim, a camada de replicação de dados respeita a ordem de gravações para a mesma réplica para um único objeto.
Embora a Fig. 2 mostre componentes funcionais exemplares do sistema de arquivos 140, em outras implementações o sistema de arquivos 140 pode conter menos componentes, componentes adicionais, diferentes ou diferentemente organizados que não os representados na Fig. 2. Em ainda outras implementações, um ou mais componentes do sistema de arquivos 140 podem exercer uma ou mais outras tarefas descritas como sendo executadas por um ou mais outros componentes do sistema de arquivos 140.
A Fig. 3 é um diagrama de componentes exemplares do agrupamento de armazenamento 120. O agrupamento de armazenamento 120 pode incluir um barramento 310, um processador 320, uma memória principal 330, uma ROM 340, um dispositivo de armazenamento 350, um dispositivo de entrada 360, um dispositivo de saida 370 e uma interface de comunicação 380. O barramento 310 pode incluir um ou mais condutores que permitam a comunicação entre os componentes do agrupamento de armazenamento 120.
O processador 320 pode incluir qualquer tipo de processador ou microprocessador que pode interpretar e executar instruções. A memória principal 330 pode incluir uma RAM ou outro tipo de dispositivo de armazenamento dinâmico que pode armazenar informações e instruções para execução pelo processador 320. A ROM 340 pode incluir um dispositivo de ROM ou outro tipo de dispositivo de armazenamento estático que pode armazenar informações estáticas e instruções para uso pelo processador 320. O dispositivo de armazenamento 350 pode incluir um meio de gravação magnética e/ou ótica e seu drive correspondente. Por exemplo, o dispositivo de armazenamento 350 pode incluir um ou mais discos locais 355 que fornecem armazenamento persistente. Em uma implementação, o agrupamento de armazenamento 120 pode manter metadados, para objetos armazenados no sistema de arquivos 140, dentro de uma ou mais midias legíveis por computador, tal como a memória principal 330 e/ou o dispositivo de armazenamento 350. Por exemplo, o agrupamento de armazenamento 120 pode armazenar números de versão, data e hora, categorias e/ou indicadores de referência para objetos dentro do dispositivo de armazenamento 350.
O dispositivo de entrada 360 pode incluir um ou mais mecanismos que permitam a um operador inserir informações no agrupamento de armazenamento 120, tal como um teclado, uma tela de toque, um botão, um mouse, uma caneta, etc. O dispositivo de saida 370 pode incluir um ou mais mecanismos que emitem informações para o operador, incluindo um mostrador, um light emitting diode (LED) etc. A interface de comunicação 380 pode incluir qualquer mecanismo similar a transceptor que permite ao agrupamento de armazenamento 120 se comunicar com outros dispositivos e/ou sistemas. Por exemplo, a interface de comunicação 380 pode incluir mecanismos para comunicação com outros agrupamentos de armazenamento 120 e/ou clientes 110.
A Fig. 4 ilustra um diagrama de blocos funcional do agrupamento de armazenamento 120. Como mostrado na Figura 4, o agrupamento de armazenamento 120 pode incluir o armazenamento de dados 410 e à lógica do coletor de lixo 420. Em uma implementação, conforme ilustrado na Fig. 4, o armazenamento de dados 410 pode ser fornecido dentro do agrupamento de armazenamento 120. Em outras implementações, o armazenamento de dados 410 pode ser fornecido dentro de um ou mais outros dispositivos do sistema 100 em comunicação com o agrupamento de armazenamento 120, tal como dispositivos de memória externa ou dispositivos associados a um sistema de indexação (não mostrado).
O armazenamento de dados 410 pode incluir uma tabela de documento e tabelas secundárias para fornecer um ou mais indices para um sistema de pesquisa. Em um exemplo, a tabela de documentos e as tabelas secundárias podem ser chaveadas por uma propriedade de um URL para ajudar a acessar e/ou atualizar informações associadas ao URL. Pelo menos uma parte de cada armazenamento de dados 410 pode ser replicada em múltiplos agrupamentos de armazenamento 120. O número de réplicas para cada armazenamento de dados 410 pode ser configurável pelo usuário.
A lógica do coletor de lixo 420 pode incluir lógica para remover conteúdo não referenciado, tal como arquivos anteriormente excluídos. A lógica do coletor de lixo 420 pode remover conteúdo não referenciado, por exemplo, do armazenamento de dados 410. Por exemplo, a lógica do coletor de lixo 420 pode determinar se um objeto (por exemplo, um documento) do armazenamento de dados 410 não é mais referenciado (ou seja, um objeto que não inclui quaisquer links apontando para o objeto) e pode remover, do agrupamento de armazenamento 120, qualquer objeto (por exemplo, um documento) que não é mais referenciado por meio de uma função (por exemplo, uma função MapReduce) que atravessa o agrupamento de armazenamento 120 e remove objetos não referenciados. Um objeto pode estar "referenciado" ou "vivo" se o objeto tem um link apontando para o objeto. Assim, a lógica do coletor de lixo 420 pode remover informações desnecessárias de agrupamento de armazenamento 120 mantendo objetos vivos.
Remover um objeto não é tão simples quanto excluir apenas o objeto, porque esse objeto pode existir em outros agrupamentos de armazenamento 120. Assim, a lógica do coletor de lixo 420 pode montar mensagens de negociação de excluir que podem ser enviadas entre agrupamentos de armazenamento diferentes 120 do sistema de arquivos 140. A lógica do coletor de lixo 420 pode excluir um objeto quando um. consenso distribuído é alcançado (por exemplo, entre todos os agrupamentos de armazenamento 120 do sistema de arquivos 140 que contém uma réplica desse objeto) de nem referências vivas nem referências replicadas estão presentes no sistema. A lógica do coletor de lixo 420 pode incluir as mensagens de negociação de excluir em metadados do objeto que é o objeto da negociação de excluir. As mensagens podem, então, ser replicadas de maneira assíncrona para todos os outros agrupamentos de armazenamento 120 contendo réplicas do objeto.
Uma mensagem gerada pela lógica do coletor de lixo 420 pode incluir, por exemplo, um indicador "Delete" para iniciar uma negociação de excluir, um indicador de reconhecimento ("ACK") para fornecer um reconhecimento positiva para uma negociação de excluir, um indicador de reconhecimento negativo ("NACK") para fornecer uma reconhecimento negativo para uma negociação de excluir e um indicador de sincronização ("GotAll") para fornecer uma confirmação de que reconhecimentos foram recebidos de outros agrupamentos de armazenamento 120. Em uma implementação, nenhuma nova referência pode ser adicionada a um objeto que tem uma mensagem Delete ou ACK pendente. Formatos de mensagem e usos são descritos em mais detalhes abaixo.
Embora a Fig. 3 mostre componentes funcionais exemplares do agrupamento de armazenamento 120, em outras implementações, o agrupamento de armazenamento 120 pode conter menos componentes, componentes adicionais, componentes diferentes ou componentes diferentemente organizados que não os representados na Fig. 3. Em ainda outras implementações, um ou mais componentes funcionais do agrupamento de armazenamento 120 podem exercer uma ou mais outras funções descritas como sendo executadas por um ou mais outros componentes funcionais.
Estrutura Exemplificativa de Mensagem
A Fig.5 proporciona uma ilustração de uma estrutura de mensagem exemplificativa 500 para uma mensagem de negociação que pode ser usada em uma implementação exemplificativa. Como mostrado na Fig. 5, a estrutura de mensagem 500 pode incluir seção de mensagem 510, seção de identificação de agrupamento de armazenamento 520 e seção de identificação de pedido de negociação 530. A seção de mensagem 510 pode incluir, por exemplo, um indicador "Delete", um indicador "ACK", um indicador "NACK" ou um indicador "GotAll)". A seção de identificação de agrupamento de armazenamento 520 pode incluir uma identificação exclusiva (por exemplo, ID de Agrupamento) para o agrupamento de armazenamento 120 que inicia a mensagem na seção de mensagem 510. A seção de identificação de pedido de negociação 530 pode incluir uma identificação exclusiva (por exemplo, ReqlD) para a negociação de excluir original.
A estrutura de mensagem 500 pode ser listada na forma de Message:Cluster ID:ReqID. Por exemplo, uma negociação de exclusão para um objeto pode ser iniciada pelo agrupamento de armazenamento 120-1 com a mensagem "Delete:01:5555", onde "01" é o Cluster ID para o agrupamento de armazenamento 120-1 e "5555" é o ReqlD. Um reconhecimento para a negociação pelo agrupamento de armazenamento 120-2 pode ser "ACK:02:5555", onde "02" é o Cluster ID para o agrupamento de armazenamento 120-2 e "5555" continua a ser o ReqlD para o reconhecimento (e quaisquer futuras mensagens relativas à negociação original).
Fluxos Exemplificativos de Processos
A Fig. 6 é um fluxograma de um processo exemplar 600 para executar coleta de lixo em um sistema de replicação de dados multimestres distribuídos (por exemplo, sistema de arquivos 140) . Em uma implementação, o processo de 600 pode ser executado por um dos agrupamentos de armazenamento 120. Em outra implementação, parte ou a totalidade do processo 600 pode ser efetuada por outro dispositivo ou grupo de dispositivos, incluindo ou excluindo o agrupamento de armazenamento 120. O processo 600 pode ser implementado periodicamente em cada agrupamento de armazenamento 120 e pode incluir uma varredura de todos ou uma parte dos objetos no agrupamento de armazenamento 120. Para exemplos específicos do processo 600 descritos abaixo pode ser feita referência ao agrupamento de armazenamento 120-1 do sistema de arquivos 140, onde o agrupamento de armazenamento 120-1 inclui um Cluster ID de "01".
Conforme ilustrado na Fig. 6, o processo 600 pode começar com a condução de uma varredura de objetos (bloco 610) e identificação de objetos não referenciados e negociados (bloco 620). Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode realizar uma varredura de todos ou uma parte dos objetos armazenados no agrupamento de armazenamento 120-1 (por exemplo, no armazenamento de dados 410) . A varredura pode identificar, por exemplo, objetos sem referências e objetos com mensagens de negociação de excluir lendo os metadados associados aos objetos.
Pode ser determinado se uma negociação de excluir concluída é identificada para um objeto (bloco 630) . Uma negociação de excluir concluída pode ser, por exemplo, uma indicação de uma negociação de excluir bem-sucedida ou malsucedida. Por exemplo, o agrupamento de armazenamento 120- 1 pode identificar um objeto com metadados que confirmem tanto uma negociação de excluir bem-sucedida quanto malsucedida.
Se uma negociação de excluir concluída é identificada para um objeto (bloco 630-Sim), então, o objeto da negociação de excluir bem-sucedida ou as mensagens de negociação de excluir malsucedidas podem ser excluídos pelo agrupamento de armazenamento inicial (bloco 640). Em uma implementação exemplificativa, se o agrupamento de armazenamento 120-1 identificar metadados em um objeto que indica que o agrupamento de armazenamento 120-1 iniciou anteriormente uma negociação de exclusão para o objeto e que todos os outros agrupamentos de armazenamento armazenando uma réplica do objeto reconheceram (por exemplo, gravando uma mensagem ACK e/ou mensagem de GotAll para os metadados do objeto) que o objeto pode ser excluído, o agrupamento de armazenamento 120-1 pode excluir o objeto e metadados associados. Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto com "Delete:01:ReqlD" e "GotAllReqlD" (onde "*" indica o ID do agrupamento de armazenamento para cada agrupamento de armazenamento 120) de todos os outros agrupamentos de armazenamento armazenando uma réplica do objeto (por exemplo, agrupamento de armazenamento 120-2, 120-3 e 120-4), o objeto e os metadados podem ser excluídos. Assim, o agrupamento de armazenamento 120-1 pode ser o iniciador de uma negociação bem-sucedida.
Ainda com referência ao bloco 640, em outra implementação exemplificativa, se um agrupamento de armazenamento identificar metadados em um objeto indicando que o agrupamento de armazenamento 120-1 anteriormente iniciou uma negociação de exclusão para o objeto e que pelo menos outro agrupamento de armazenamento 120 indicou que o objeto não deveria ser excluído gravando uma mensagem NACK, o agrupamento de armazenamento 120-1 pode excluir os metadados contendo a mensagem de negociação original e todas as mensagens correspondentes dos outros agrupamentos de armazenamento 120. Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto com "Delete:01:ReqlD", "ACKReqlD" e "NACK:*:ReglD" (onde "*" indica o ID do agrupamento de armazenamento) de todos os outro agrupamentos de armazenamento 120 e há pelo menos uma mensagem NACK, então, todas as mensagens Delete, ACK e NACK correspondentes a ReqlD podem ser excluídas dos metadados associados ao objeto. Assim, o agrupamento de armazenamento 120-1 pode ser o iniciador de uma negociação malsucedida.
Se uma negociação de excluir concluída não é identificada para um objeto (bloco 630 NÃO), então, uma mensagem de negociação pode ser gravada para os metadados do objeto com base no status do objeto (bloco 650). Como ainda descrito neste documento, com base no status de um objeto, mensagens (por exemplo, "Delete", "ACK", "NACK", "GotAll") podem ser gravadas para os metadados do objeto em um agrupamento e replicadas para todos os outros agrupamentos que contêm as réplicas do objeto. Por exemplo, dependendo do status do objeto, o agrupamento de armazenamento 120-1 pode gravar uma nova mensagem de negociação para excluir um objeto. O agrupamento de armazenamento 120-1 como alternativa pode gravar uma mensagem ACK, uma mensagem NACK ou uma mensagem GotAll em resposta a uma negociação em curso. 0 uso de mensagens de negociação é descrito posteriormente com respeito a Fig. 7.
Os metadados do objeto podem ser replicados para outros agrupamentos de armazenamento (bloco 660) . Por exemplo, o agrupamento de armazenamento 120-1 pode usar a camada subjacente de replicação do sistema de replicação de dados multimestres distribuídos 140 para replicar a(s) mensagem(ns) de negociação para o agrupamento de armazenamento 120-2, agrupamento de armazenamento 120-3, agrupamento de armazenamento 120-4, etc. Assim, as mensagens de negociação podem ser distribuídas para outros agrupamentos com as réplicas de metadados do objeto e não como mensagens separadas.
O processo 600 pode ser repetido até que todos os objetos do agrupamento de armazenamento (por exemplo, agrupamento de armazenamento 120-1) tenham sido escaneados e possam ser repetidos periodicamente. O processo 600 pode ser executado da mesma forma por cada um dos outros agrupamentos de armazenamento (por exemplo, agrupamentos de armazenamento 120- 2, 120-3, ..., 120-M) no sistema de replicação de dados multimestres distribuídos (por exemplo, sistema de arquivos 140) . Assim, os metadados do objeto replicados de outros agrupamentos de armazenamento podem conter mensagens de negociação em resposta a mensagens de negociação do agrupamento de armazenamento 120-1. Cada um dos agrupamentos de armazenamento pode continuar a trocar mensagens de negociação na camada de replicação do sistema de arquivos para de forma assíncrona executar negociações para objetos marcados para exclusão por outros agrupamentos de armazenamento.
A Fig. 7 é um fluxograma do processo exemplar 650 para gravar a mensagem de negociação referenciada na Fig. 6. O processo 650 pode ser executado por um agrupamento de armazenamento (por exemplo, um dos agrupamentos de armazenamento 120) no sistema de replicação de dados multimestres distribuídos (por exemplo, sistema de arquivos 140). Para exemplos específicos do processo 650, pode ser feita referência ao agrupamento de armazenamento 120-1 (tendo um Cluster ID de "01") e ao agrupamento de armazenamento 120-2 (tendo um Cluster ID de "02") do sistema de replicação de dados multimestres distribuídos.
Pode-se determinar se uma negociação em curso existe (bloco 710). Por exemplo, o agrupamento de armazenamento 120- 1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se os metadados para um objeto incluem uma mensagem de negociação de exclusão. Em uma implementação, uma negociação de excluir para o objeto poderia ter sido iniciada anteriormente pelo agrupamento de armazenamento 120-1 ou pode ter sido iniciada, por exemplo, por outro agrupamento de armazenamento (por exemplo, um dos agrupamentos de armazenamento 120-2, 120-3 ou 120-4).
Se for determinado que nenhuma negociação em curso existe (bloco 710 - NÃO), pode-se determinar se alguma referência aponta para o objeto (bloco 715) . Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se um objeto particular tem alguma referência (por exemplo, analisando um gráfico direcionado de referências). Se for determinado que nenhuma referência aponta para o objeto (bloco 715 - NÃO), uma nova mensagem "Delete" pode ser gravada (bloco 720). Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto sem referências e não houver nenhuma negociação em curso (por exemplo, nenhuma mensagem "Delete"), então, o agrupamento de armazenamento 120-1 pode gerar uma única ReqlD e gravar uma nova mensagem de negociação de excluir (por exemplo, "Delete: 01:ReqlD") para o objeto. Se for determinado que as referências apontam para o objeto (bloco 715 - SIM), então, nenhuma mensagem é necessária (bloco 790). Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto com referências e não houver nenhuma negociação de excluir em curso, então, o objeto pode não exigir processamento adicional neste momento.
Se for determinado que uma negociação em curso existe (bloco 710 - SIM) pode-se determinar se alguma referência aponta para o objeto (bloco 730) . Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se um objeto particular tem algumas referências. Se for determinado que as referências apontam para o objeto (bloco 730 - SIM), pode-se determinar se um reconhecimento negativo anterior já foi armazenado nos metadados do objeto (bloco 735). Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se uma mensagem NACK do agrupamento de armazenamento 120-1 (por exemplo, "NACK:01:ReqlD") já está incluida nos metadados do objeto.
Se for determinado que um reconhecimento negativo anterior já não foi armazenado nos metadados do objeto (bloco 735 - NÃO), uma mensagem de reconhecimento negativa ("NACK") pode ser gravada (bloco 740). Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto com referências e uma negociação em curso (por exemplo, "Delete:02:ReqlD") de outro agrupamento de armazenamento (por exemplo, agrupamento de armazenamento 120-2), o agrupamento de armazenamento 120-1 pode gravar um reconhecimento negativo (por exemplo, "NACK:01:ReqlD") dos metadados do objeto. Se for determinado que um reconhecimento negativo anterior já foi armazenada nos metadados do objeto (bloco 735 - SIM), então, nenhum processamento adicional do objeto é necessário neste momento (bloco 790).
Se for determinado que nenhuma referência aponta para o objeto (bloco 730 - NÃO), então, pode-se determinar se todas as ACKs foram recebidas (bloco 750). Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se confirmações de cada agrupamento de armazenamento 120 no sistema 140 (por exemplo, "ACK:*:ReqlD", onde "*" indica o ID do agrupamento de armazenamento) foram incluídas nos metadados do objeto. Se for determinado que todas as ACKs foram recebidas (bloco 750 - SIM), uma mensagem "GotAll" pode ser escrita (bloco 760). Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto com uma mensagem de exclusão (por exemplo, "Delete:02:ReqlD") e confirmações de cada agrupamento de armazenamento 120 no sistema 140 (por exemplo, "ACKReqlD", onde "*" indica o ID do agrupamento de armazenamento) , o agrupamento de armazenamento 120-1 pode gravar uma mensagem de confirmação de reconhecimento (por exemplo, "GotAll:01:ReqlD") para uso pelo agrupamento de armazenamento iniciador 120-2. Se for determinado que todas as ACKs não foram recebidas (bloco 750 - NÃO), pode-se determinar se uma confirmação anterior já foi armazenada nos metadados do objeto (bloco 770) . Por exemplo, o agrupamento de armazenamento 120-1 (usando, por exemplo, a lógica do coletor de lixo 420) pode determinar se uma mensagem ACK do agrupamento de armazenamento 120-1 (por exemplo, "ACK:01:ReqlD") já está incluida nos metadados do obj eto.
Se for determinado que um reconhecimento anterior já não foi armazenado nos metadados do objeto (bloco 770 - NÃO), uma nova mensagem de reconhecimento ("ACK") pode ser gravada (bloco 780) . Por exemplo, se a varredura no agrupamento de armazenamento 120-1 encontrar um objeto sem referências e uma negociação em curso (por exemplo, "Delete:02:ReqlD") de outra réplica (por exemplo, agrupamento de armazenamento 120-2), o agrupamento de armazenamento 120-1 pode gravar um reconhecimento (por exemplo, "ACK:01:ReqlD") nos metadados do objeto. Se for determinado que um reconhecimento anterior já foi armazenado nos metadados do objeto (bloco 770 - SIM), então, nenhum processamento adicional do objeto é necessário neste momento (bloco 790).
A Fig. 8 proporciona um fluxograma de um processo exemplar 800 para criar uma nova referência para um objeto de acordo com uma implementação consistente com os sistemas e os métodos descritos neste documento. 0 processo 800 pode ser executado por um agrupamento de armazenamento (por exemplo, um dos agrupamentos de armazenamento 120) no sistema de replicação de dados multimestres distribuídos (por exemplo, sistema de arquivos 140). Para exemplos específicos do processo 800, pode ser feita referência ao agrupamento de armazenamento 120-1 (tendo um Cluster ID de "01") do sistema de arquivos 140.
Uma indicação de referência para um objeto pode ser recebida (bloco 810) . Por exemplo, o agrupamento de armazenamento 120-1 pode receber uma solicitação para adicionar uma nova referência para um objeto. Os metadados do objeto podem ser revistos para mensagens de negociação iniciadas no agrupamento de armazenamento (bloco 820) . Por 20/26 exemplo, o agrupamento de armazenamento 120-1 pode rever os metadados do objeto para identificar quaisquer mensagens de negociação de excluir e, particularmente, quaisquer mensagens de negociação Delete ou ACK que anteriormente foram iniciadas pelo agrupamento de armazenamento 120-1 (por exemplo, "Delete:01:ReqlD" ou "ACK:01:ReqlD"). Em implementações aqui descritas, o agrupamento de armazenamento 120-1 pode não gravar uma nova referência para um objeto que tem uma negociação em curso nos metadados do objeto com uma mensagem Delete ou ACK iniciada pelo agrupamento de armazenamento 120-1.
Pode-se determinar se as mensagens Delete ou ACK estão presentes (bloco 830). Se uma mensagem Delete ou ACK estiver presente (bloco 830 - SIM), então, uma réplica em outro agrupamento de armazenamento pode ser usada como um failover (bloco 840) . Por exemplo, se o agrupamento de armazenamento 120-1 identificar uma mensagem "Delete:01:ReqlD" nos metadados do objeto, a mensagem eficazmente bloqueará o agrupamento de armazenamento 120-1 ao gravar uma nova referência para o objeto. Assim, uma solicitação para gravar uma referência para o objeto no agrupamento de armazenamento 120-1 será encaminhada para outro agrupamento de armazenamento (por exemplo, agrupamento de armazenamento 120-2) .
Se nenhuma mensagem Delete ou ACK estiver presente (bloco 830 - NÃO), então, a nova referência pode ser gravada para o objeto (bloco 850). Por exemplo, o agrupamento de armazenamento 120-1 pode simplesmente gravar a referência solicitada para o objeto vivo.
Exemplos
A Fig. 9 proporciona uma rede exemplificativa implementando uma parte de uma negociação de excluir exemplar de acordo com implementações descritas neste documento. Um algoritmo de coleta de lixo pode executar periodicamente em cada um dos agrupamentos de armazenamento XX, YY e ZZ e pode varrer todos os objetos do agrupamento de armazenamento. Mensagens (por exemplo, Delete, ACK, NACK, GotAll) podem ser gravadas por um coletor de lixo para os metadados de um objeto em um agrupamento (por exemplo, agrupamento de armazenamento YY) e replicadas para todos os outros agrupamentos (por exemplo, agrupamentos de armazenamento XX e ZZ) contendo as réplicas do objeto.
O algoritmo de coleta de lixo usado pelo coletor de lixo pode operar usando diretrizes coerentes com os princípios descritos neste documento. Se a varredura do coletor de lixo no agrupamento de armazenamento YY encontrar um objeto sem referências e não houver nenhuma negociação em curso (por exemplo, nenhuma mensagem Delete:YY:ReqlD) , então, o coletor de lixo no agrupamento de armazenamento YY pode gerar uma única ReqlD (por exemplo, 22222) e gravar "Delete:YY:22222" para os metadados do objeto. Se a varredura do coletor de lixo no agrupamento de armazenamento XX encontrar pela primeira vez uma negociação de exclusão (por exemplo, Delete:YY:22222) de outra réplica (por exemplo, do agrupamento de armazenamento YY) , o coletor de lixo grava "ACK: XX: 22222" se o objeto não tiver referências ou "NACK:XX:22222" caso contrário. O agrupamento de armazenamento XX não pode adicionar novas referências a um objeto que tem uma mensagem Delete: XX:ReqlD ou ACK:XX:ReqID pendente. Se a varredura do coletor de lixo no agrupamento de armazenamento XX encontrar pela primeira vez Delete:YY:22222 e ACK:*:22222 de todas as outras réplicas, o coletor de lixo pode gravar GotAll:XX:22222. Neste caso, o agrupamento de armazenamento XX não é o iniciador. Se a varredura do coletor de lixo no agrupamento de armazenamento YY encontrar Delete: YY:22222 e GotAll:*:22222 de todas as outras réplicas, o objeto e os metadados são excluídos. (Agrupamento de armazenamento YY é o iniciador de uma negociação bem-sucedida). Se a varredura do coletor de lixo no agrupamento de armazenamento YY encontrar Delete:YY:22222, ACK:XX:222202 e NACK:ZZ:22222 de outras réplicas, e uma vez que haja pelo menos uma mensagem NACK, então, todas as mensagens Delete, ACK e NACK correspondente a ReqlD 22222 são excluídas dos metadados do objeto. Neste caso, o agrupamento de armazenamento YY é o iniciador de uma negociação malsucedida.
No sistema de arquivos da Fig. 9, os agrupamentos de armazenamento XX, YY e ZZ podem cada um ser designados para armazenar réplicas de metadados do objeto. A Fig. 9 mostra uma réplica ("Metadados IA") dos metadados de um objeto, "Objeto 1". Os metadados la incluem uma negociação de excluir iniciada pelo agrupamento de armazenamento YY sendo enviada ao agrupamento de armazenamento XX. Em resposta, agrupamento de armazenamento XX pode adicionar uma mensagem de. resposta aos metadados do objeto e enviar a réplica de metadados ("Metadados 1B") para o agrupamento de armazenamento YY. No sistema de arquivos da Fig. 9, os Metadados Ia e Metadados 1B também seriam replicados para o agrupamento de armazenamento ZZ (não mostrado). Réplicas de metadados subsequentes (não mostradas) enviadas entre os agrupamentos de armazenamento XX, YY e ZZ podem incluir mensagens de negociação adicionais nos metadados do Objeto 1 até que um consenso distribuído seja alcançado para excluir o Objeto 1 ou deixar o Objeto 1 intocado e excluir as mensagens pertinentes à negociação que foi iniciada pelo agrupamento de armazenamento YY.
A aplicação do sistema e/ou dos métodos descritos neste documento pode proporcionar uma garantia de disponibilidade de protocolo, tal que um objeto com uma réplica viva não pode ser excluído e pode estar sempre disponível. Por exemplo, ainda se referindo a Fig. 9, se houver uma réplica viva do Objeto 1 no agrupamento de armazenamento XX, então, a negociação de excluir o objeto não será positivamente confirmada pelo agrupamento de armazenamento XX e, portanto, o Objeto 1 não será excluído. Além disso, quando uma negociação de excluir iniciada pelo agrupamento de armazenamento YY estiver em andamento, solicitações de clone (por exemplo, solicitações para criar um novo objeto de referência) no agrupamento de armazenamento AA funcionará por meio de failover (por exemplo, comutação automaticamente) para a réplica viva do Objeto 1 no agrupamento de armazenamento XX.
A aplicação dos sistemas e/ou métodos descritos neste documento pode fornecer uma garantia de execução do protocolo. Por exemplo, para qualquer solicitação de negociação de excluir iniciada, Delete:XX:ReqlD, o processo de varredura do coletor de lixo no agrupamento de armazenamento YY gravará eventualmente ACK:YY:ReqlD ou NACK:YY:ReqlD e o processo de negociação no agrupamento de armazenamento XX terminará com uma decisão Sim/Não quando todas as ACKs e/ou NACKs forem replicadas. Em seguida, GotAll:*:ReqlD pode ser gravada para os metadados do objeto por todos os grupos de armazenamento se a decisão for positiva, o que finalmente disparará a exclusão real pelo agrupamento de armazenamento XX que propagará para os outros agrupamentos de armazenamento YY e ZZ através da camada de replicação subjacente. No caso de existir uma réplica viva, por exemplo, no agrupamento de armazenamento ZZ, a decisão é negativa e o iniciador (por exemplo, agrupamento de armazenamento XX) pode limpar os metadados do objeto excluindo as mensagens de negociação. Os metadados limpos eventualmente propagarão para todos os agrupamentos de armazenamento que gravaram ACK e o objeto se tornará disponível lá.
A aplicação dos sistemas e/ou métodos descritos neste documento também pode fornecer uma garantia de que nenhuma referência fantasma pode reaparecer mais tarde depois que um objeto foi excluído. Por exemplo, suponha que o Objeto 1 primeiro foi apagado em XX. Baseado no algoritmo de coleta de lixo, deve ser o caso que GotAll:*:ReqlD dos outros agrupamentos de armazenamento foi replicada para o agrupamento de armazenamento XX antes de a exclusão ocorrer. Por esta dedução, todos os dados de replicação destinados ao agrupamento de armazenamento YY estão isentos de referências fantasmas sendo replicadas de ainda outro agrupamento de armazenamento ZZ. Isto é devido ao fato desse agrupamento de armazenamento YY gravar GotAll:YY:ReqlD quando todas as ACKs dos outros agrupamentos de armazenamento, agrupamento de armazenamento ZZ em particular, foram recebidas enquanto nenhuma nova referência poderia ter sido adicionada ao agrupamento de armazenamento ZZ após ACK:ZZ:ReqlD ser gravada e não havia nenhuma referência viva no agrupamento de armazenamento ZZ neste momento. Notem que ainda pode haver referências que são replicadas do agrupamento de armazenamento ZZ para o agrupamento de armazenamento YY após ACK:YY:ReqlD ser gravada e antes de ACK:ZZ:ReqID ser replicada, mas todas essas referências podem ser excluídas na ocasião em que ACK:ZZ:ReqID é replicada para o agrupamento de armazenamento YY pois a camada de replicação respeita a ordem de gravações para uma única réplica.
A aplicação dos sistemas e/ou métodos descritos neste documento pode fornecer uma nova garantia de lixo de protocolo. Por exemplo, se uma negociação de exclusão falhar, o iniciador excluirá as mensagens de negociação Delete, ACK e NACK e a exclusão propagará para as outras réplicas de objeto por meio de replicação. Não permanece lixo, uma vez que o algoritmo é configurado de modo que todas as mensagens relevantes devem ter sido recebidas pelo iniciador antes da exclusão pelo iniciador ocorrer.
Conclusão
Os sistemas e/ou métodos descritos neste documento podem fornecer um algoritmo de coleta de lixo distribuído assíncrono para agrupamentos de armazenamento replicados que fornece disponibilidade, vivacidade e garantias de consistência. O algoritmo usa a camada de replicação subjacente para transportar mensagens entre agrupamentos diferentes. Cada negociação de exclusão é iniciada pela lógica do coletor de lixo em um dos agrupamentos e tem um identificador exclusivo. O algoritmo suporta múltiplas negociações simultâneas. Um objeto pode ser excluído pelo iniciador quando um consenso distribuído for alcançado; caso contrário a negociação pode ser anulada.
A descrição acima das implementações proporciona uma ilustração e descrição, mas não se destina a ser exaustiva nem a limitar a invenção à forma exata divulgada. Modificações e variações são possíveis à luz dos ensinamentos acima ou podem ser adquiridas da prática da invenção.
Por exemplo, em outra implementação uma versão síncrona do algoritmo de coleta de lixo pode ser usada na qual coletores de lixo em agrupamentos de armazenamento diferentes se comunicam diretamente em vez de usar a camada de replicação.
Além disso, embora séries de blocos tenham sido descritas com respeito às Figuras 6 e 7, a ordem dos blocos pode ser modificada em outras implementações. Além disso, blocos não dependentes podem ser realizados em paralelo.
É evidente que modalidades, conforme descritas neste documento, podem ser implementadas em muitas formas diferentes de software, firmware e hardware nas implementações ilustradas nas Figuras. O código de software real ou o hardware de controle especializado usado para implementar modalidades descritas neste documento não é limitador da invenção. Assim, a operação e o comportamento das modalidades foram descritos sem referência ao código de software especifico - sendo entendido que software e hardware de controle podem ser 26/26 projetados para implementar as modalidades baseadas na descrição deste documento.
Além disso, certas implementações descritas neste documento podem ser implementadas como "lógica" que executa uma ou mais funções. Esta lógica pode incluir hardware, como um processador, microprocessador, um circuito integrado especifico do aplicativo ou uma matriz de porta programável de campo ou uma combinação de hardware e software (por exemplo, software executado por um processador).
Deve ser enfatizado que o termo "compreende" e/ou "compreendendo" quando usado neste Relatório Descritivo é tomado para especificar a presença de recursos declarados, inteiros, etapas ou componentes, mas não exclui a presença ou a adição de um ou mais outros recursos, inteiros, etapas, componentes ou grupos dos mesmos.
Apesar de combinações especificas de recursos serem recitadas nas Reivindicações e/ou divulgadas no Relatório Descritivo, estas combinações não se destinam a limitar a divulgação da invenção. Na verdade, muitos destes recursos podem ser combinados de maneiras não especificamente recitadas nas Reivindicações e/ou divulgadas no Relatório Descritivo.
Nenhum elemento, ato ou instrução usada na descrição do presente pedido deve ser interpretado como critico ou essencial à invenção, a menos que explicitamente descrito como tal. Além disso, como usado neste documento, o artigo "um" destina-se a incluir um ou mais itens. Quando apenas um item é pretendido, o termo "um" ou linguagem semelhante é usado. Além disso, a frase "com base em", como usada neste documento, destina-se a significar "com base pelo menos em parte em", a menos que explicitamente indicado em contrário.

Claims (21)

1. Método realizado por um dispositivo (120, 120-1 a 120- M) de uma pluralidade de dispositivos (120, 120-1 a 120-M) num sistema distribuído de replicação de dados (100), caracterizado pelo fato de que o método compreende: armazenar objetos num armazenamento de dados (410) associado com o dispositivo, pelo menos um ou mais dos objetos sendo replicados com o sistema distribuído de replicação de dados; conduzir (610) uma varredura dos objetos no armazenamento de dados; identificar (620) um dos objetos como não tendo uma referência apontando para o um dos objetos; armazenar, com base na identificação do um dos objetos como não tendo uma referência apontando para o um dos objetos, uma mensagem de negociação de exclusão como metadados associados com um dos objetos; escrever (650), para os metadados: um indicador de mensagem de negociação para iniciar uma negociação de exclusão associada com o um dos objetos, um identificador de armazenamento de dados para identificar o armazenamento de dados como iniciando a mensagem de negociação de exclusão; e um identificador de pedido de negociação para identificar a mensagem de negociação de exclusão; e replicar (660) os metadados com a mensagem de negociação de exclusão para um ou mais outros dispositivos da pluralidade de dispositivos.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os metadados com a mensagem de negociação de exclusão são replicados (660) usando uma camada de replicação subjacente do sistema distribuído de replicação de dados de mestre múltiplo.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: identificar outro dos objetos como incluindo outra mensagem de negociação de exclusão em metadados associados ao outro dos objetos.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende ainda: armazenar um de um reconhecimento, um reconhecimento negativo ou uma confirmação para a outra mensagem de negociação de exclusão como metadados associados ao outro dos objetos; e replicar os metadados do outro dos objetos com o reconhecimento ou o reconhecimento negativo para a mensagem de negociação de exclusão para um ou mais outros dispositivos da pluralidade de dispositivos.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: deletar o indicador de negociação, a identificação de agrupamento de armazenamento e a identificação de pedido de negociação a partir dos metadados se outra mensagem de negociação de exclusão, com relação a um dos objetos, indicar uma negociação malsucedida.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: deletar o um dos objetos se outra mensagem de negociação de exclusão, com relação ao um dos objetos, indicar uma negociação bem sucedida.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que novas referências não podem ser adicionadas ao um dos objetos com base em armazenar a mensagem de negociação de exclusão.
8. Método, caracterizado pelo fato de que compreende: permutar, entre os agrupamentos de armazenamento (120, 120-1 a 120-M) dentro de um sistema distribuído de replicação de dados de mestre múltiplo (100), uma ou mais mensagen de negociação de exclusão (500), onde cada uma das mensagens de negociação de exclusão é incluída em metadados de um objeto ao qual a mensagem de negociação de exclusão é relacionada, onde cada uma das mensagens de negociação de exclusão inclui: um indicador de mensagem negociação (510) para identificar uma negociação de exclusão associada ao objeto, um identificador de agrupamento de armazenamento (520) para identificar um agrupamento de armazenamento, dentre os agrupamentos de armazenamento, que inicia as negociações de exclusão, e um identificador de pedido de negociação (530) para identificar a mensagem de negociação de exclusão; e onde a mensagem de negociação de exclusão é enviada entre os agrupamentos de armazenamento usando uma camada de replicação do sistema distribuído de replicação de dados de mestre múltiplo; e deletar o objeto a partir dos agrupamentos de armazenamento se um consenso distribuído for alcançado entre os agrupamentos de armazenamento com base na uma ou mais mensagens de negociação de exclusão.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o indicador de mensagem de negociação (510) inclui um ou mais de: um indicador de exclusão para iniciar a negociação de exclusão, um indicador de reconhecimento para proporcionar um reconhecimento positivo para a mensagem de negociação de exclusão, um indicador de reconhecimento negativo para proporcionar um reconhecimento negativo para a mensagem de negociação de exclusão, ou um indicador de sincronização para proporcionar uma confirmação de que reconhecimentos foram recebidos a partir de outros agrupamentos de armazenamento.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o indicador de exclusão ou o indicador de reconhecimento impedem o agrupamento de armazenamento que iniciou o indicador de exclusão ou o indicador de reconhecimento de adicionar novas referências ao objeto.
11. Sistema (100), caracterizado pelo fato de que compreende: uma memória (330) para armazenar instruções e um armazenamento de dados (410); e um ou mais processadores (320) para executar as instruções na memória para: armazenar objetos no armazenamento de dados, pelo menos um ou mais dos objetos sendo replicados dentro do sistema; conduzir uma varredura (610) de objetos no armazenamento de dados; identificar (620) um dos objetos como não incluindo uma referência apontando para um dos objetos; escrever (650) para os metadados de objeto: um indicador de mensagem de negociação (510) que indica uma negociação de exclusão associada com o um dos objetos; um identificador de armazenamento de dados (520) que identifica o armazenamento de dados como inciando a negociação de exclusão, e um identificador de pedido de negociação (530) que identifica a mensagem de negociação de exclusão; e replicar os metadados com a mensagem de negociação de exclusão para um ou mais dispositivos do sistema.
12. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o um ou mais processadores são ainda para: identificar outro dos objetos como incluindo outra mensagem de negociação de exclusão em metadado associado com o outro dos objetos.
13. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o um ou mais processadores são ainda para: armazenar um de um reconhecimento, um reconhecimento negativo ou uma confirmação para a outra mensagem de negociação de exclusão como metadados associados ao outro dos objetos, e replicar os metadados do outro dos objetos com o reconhecimento, o reconhecimento negativo ou a confirmação para a mensagem de negociação de exclusão para um ou mais dos um ou mais dispositivos.
14. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o um ou mais processadores são ainda para: deletar a mensagem de negociação a partir do metadado quando outra mensagem de negociação de exclusão, com relação ao um dos objetos, indicar uma negociação malsucedida.
15. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o um ou mais processadores são ainda para: deletar o um dos objetos quando outra mensagem de negociação de exclusão, com relação ao um dos objetos, indicar uma negociação bem sucedida.
16. Sistema, de acordo com a reivindicação 11, caracterizado pelo fato de que o um ou mais processadores são ainda para: prevenir novas referências de serem adicionadas ao um dos objetos com base no armazenamento de mensagem de negociação de exclusão.
17. Memória legivel em computador que compreende instruções executáveis em computador, caracterizado pelo fato de que a memória legivel em computador compreende: uma ou mais instruções que quando executadas por um processador de um dispositivo incluido em um sistema distribuído de replicação de dados (100), fazem com que o processador: armazene objetos em um armazenamento de dados (410), pelo menos um ou mais dos objetos sendo replicados dentro do sistema distribuído de replicação de dados; conduza uma varredura (610) de objetos no armazenamento de dados; identifique (620) um dos objetos como não incluindo uma referência apontando para um dos objetos, armazene, com base na identificação de um dos objetos como não incluindo a referência apontando para o um dos objetos, uma mensagem de negociação de exclusão (500) como metadados associados ao um dos objetos; escreva (650) para o metadado do objeto: um indicador de mensagem de negociação (510) que indica uma negociação de exclusão associada com o um dos obj etos, um identificador de pedido de negociação (530) que identifica a mensagem de negociação de exclusão; e replique os metadados de objeto com a mensagem de negociação para um ou mais outros dispositivos no sistema distribuído de replicação de dados.
18. Memória legivel em computador, de acordo com a reivindicação 17, caracterizada pelo fato de que compreende ainda: uma ou mais instruções que quando executadas pelo processador fazem com que o processador: identifique outro dos objetos como incluindo outra mensagem de negociação de exclusão que é armazenada nos metadados associados ao outro dos objetos.
19. Memória legivel em computador, de acordo com a reivindicação 18, caracterizada pelo fato de que compreende ainda: uma ou mais instruções que quando executadas pelo processador fazem com que o processador: armazene um de um reconhecimento, um reconhecimento negativo ou uma confirmação para a outra mensagem de negociação de exclusão como metadados associados ao outro dos objetos, e replique os metadados do outro dos objetos com o reconhecimento, o reconhecimento negativo ou a confirmação para a outra mensagem de negociação de exclusão para um ou mais outros dos um ou mais dispositivos.
20. Memória legivel em computador, de acordo com a reivindicação 17, caracterizada pelo fato de que compreende ainda: uma ou mais instruções que, quando executadas pelo processador, fazem com que o processador: delete a mensagem de negociação a partir dos metadados quando outra mensagem de negociação de exclusão, com relação ao um dos objetos, indicar uma negociação malsucedida.
21. Memória legivel em computador, de acordo com a reivindicação 17, caracterizada pelo fato de que compreende ainda: uma ou mais instruções que quando executadas pelo processador fazem com que o processador: delete o um dos objetos quando outra mensagem de negociação de exclusão, com relação ao um dos objetos, indicar uma negociação bem sucedida.
BRPI0922542-0A 2008-12-22 2009-12-22 Método realizado por um dispositivo de pluralidade de dispositivos num sistema distribuído de replicação de dados, sistema e memória legível em computador BRPI0922542B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13985308P 2008-12-22 2008-12-22
US61/139,853 2008-12-22
PCT/US2009/069228 WO2010075401A2 (en) 2008-12-22 2009-12-22 Asynchronous distributed garbage collection for replicated storage clusters

Publications (1)

Publication Number Publication Date
BRPI0922542B1 true BRPI0922542B1 (pt) 2020-10-13

Family

ID=42267618

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0922542-0A BRPI0922542B1 (pt) 2008-12-22 2009-12-22 Método realizado por um dispositivo de pluralidade de dispositivos num sistema distribuído de replicação de dados, sistema e memória legível em computador

Country Status (9)

Country Link
US (2) US8346820B2 (pt)
EP (1) EP2380101B1 (pt)
JP (1) JP5479490B2 (pt)
CN (1) CN102317939B (pt)
AU (1) AU2009330067B2 (pt)
BR (1) BRPI0922542B1 (pt)
CA (1) CA2747786C (pt)
DE (1) DE202009019149U1 (pt)
WO (1) WO2010075401A2 (pt)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8930331B2 (en) 2007-02-21 2015-01-06 Palantir Technologies Providing unique views of data based on changes or rules
US8429194B2 (en) 2008-09-15 2013-04-23 Palantir Technologies, Inc. Document-based workflows
WO2010075401A2 (en) 2008-12-22 2010-07-01 Google Inc. Asynchronous distributed garbage collection for replicated storage clusters
US8799240B2 (en) 2011-06-23 2014-08-05 Palantir Technologies, Inc. System and method for investigating large amounts of data
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US9547693B1 (en) 2011-06-23 2017-01-17 Palantir Technologies Inc. Periodic database search manager for multiple data sources
US9280532B2 (en) 2011-08-02 2016-03-08 Palantir Technologies, Inc. System and method for accessing rich objects via spreadsheets
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US8719417B1 (en) * 2011-10-14 2014-05-06 Google Inc. Resource allocation in distributed systems
US9378526B2 (en) * 2012-03-02 2016-06-28 Palantir Technologies, Inc. System and method for accessing data objects via remote references
CN102722445B (zh) * 2012-06-06 2015-03-25 北京航空航天大学 一种内存垃圾收集器中对象状态的阶段式跟踪记录方法
US8898410B1 (en) 2013-02-20 2014-11-25 Google Inc. Efficient garbage collection in a data storage device
US8855999B1 (en) 2013-03-15 2014-10-07 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US10275778B1 (en) 2013-03-15 2019-04-30 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US9230280B1 (en) 2013-03-15 2016-01-05 Palantir Technologies Inc. Clustering data based on indications of financial malfeasance
US8903717B2 (en) 2013-03-15 2014-12-02 Palantir Technologies Inc. Method and system for generating a parser and parsing complex data
US8930897B2 (en) 2013-03-15 2015-01-06 Palantir Technologies Inc. Data integration tool
US9600558B2 (en) 2013-06-25 2017-03-21 Google Inc. Grouping of objects in a distributed storage system based on journals and placement policies
US9158472B2 (en) 2013-06-25 2015-10-13 Google Inc. Hierarchical chunking of objects in a distributed storage system
US9116975B2 (en) 2013-10-18 2015-08-25 Palantir Technologies Inc. Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
WO2015065369A1 (en) * 2013-10-30 2015-05-07 Hewlett-Packard Development Company, L.P. Asynchronous garbage collection in a distributed database system
US9396202B1 (en) 2013-12-27 2016-07-19 Google Inc. Weakly synchronized garbage collection and compaction for aggregated, replicated object stores
US9043696B1 (en) 2014-01-03 2015-05-26 Palantir Technologies Inc. Systems and methods for visual definition of data associations
US9535974B1 (en) 2014-06-30 2017-01-03 Palantir Technologies Inc. Systems and methods for identifying key phrase clusters within documents
US9619557B2 (en) 2014-06-30 2017-04-11 Palantir Technologies, Inc. Systems and methods for key phrase characterization of documents
US9419992B2 (en) 2014-08-13 2016-08-16 Palantir Technologies Inc. Unwanted tunneling alert system
US9454281B2 (en) 2014-09-03 2016-09-27 Palantir Technologies Inc. System for providing dynamic linked panels in user interface
US10031934B2 (en) 2014-09-30 2018-07-24 International Business Machines Corporation Deleting tuples using separate transaction identifier storage
US10255304B2 (en) 2014-09-30 2019-04-09 International Business Machines Corporation Removal of garbage data from a database
US9348920B1 (en) 2014-12-22 2016-05-24 Palantir Technologies Inc. Concept indexing among database of documents using machine learning techniques
US10362133B1 (en) 2014-12-22 2019-07-23 Palantir Technologies Inc. Communication data processing architecture
US10552994B2 (en) 2014-12-22 2020-02-04 Palantir Technologies Inc. Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US10452651B1 (en) 2014-12-23 2019-10-22 Palantir Technologies Inc. Searching charts
US9817563B1 (en) 2014-12-29 2017-11-14 Palantir Technologies Inc. System and method of generating data points from one or more data stores of data items for chart creation and manipulation
US9672257B2 (en) 2015-06-05 2017-06-06 Palantir Technologies Inc. Time-series data storage and processing database system
US9384203B1 (en) 2015-06-09 2016-07-05 Palantir Technologies Inc. Systems and methods for indexing and aggregating data records
US9407652B1 (en) 2015-06-26 2016-08-02 Palantir Technologies Inc. Network anomaly detection
US10650024B2 (en) 2015-07-30 2020-05-12 Google Llc System and method of replicating data in a distributed system
US9537880B1 (en) 2015-08-19 2017-01-03 Palantir Technologies Inc. Anomalous network monitoring, user behavior detection and database system
US10402385B1 (en) 2015-08-27 2019-09-03 Palantir Technologies Inc. Database live reindex
US9454564B1 (en) 2015-09-09 2016-09-27 Palantir Technologies Inc. Data integrity checks
JP6457364B2 (ja) 2015-09-11 2019-01-23 東芝メモリ株式会社 メモリシステム
US10044745B1 (en) 2015-10-12 2018-08-07 Palantir Technologies, Inc. Systems for computer network security risk assessment including user compromise analysis associated with a network of devices
US9542446B1 (en) 2015-12-17 2017-01-10 Palantir Technologies, Inc. Automatic generation of composite datasets based on hierarchical fields
US9753935B1 (en) 2016-08-02 2017-09-05 Palantir Technologies Inc. Time-series data storage and processing database system
US10133588B1 (en) 2016-10-20 2018-11-20 Palantir Technologies Inc. Transforming instructions for collaborative updates
US10318630B1 (en) 2016-11-21 2019-06-11 Palantir Technologies Inc. Analysis of large bodies of textual data
US10884875B2 (en) 2016-12-15 2021-01-05 Palantir Technologies Inc. Incremental backup of computer data files
US10223099B2 (en) 2016-12-21 2019-03-05 Palantir Technologies Inc. Systems and methods for peer-to-peer build sharing
US10289529B2 (en) 2017-01-26 2019-05-14 International Business Machines Corporation Testing a guarded storage facility
US10459631B2 (en) 2017-03-28 2019-10-29 Nicira, Inc. Managing deletion of logical objects of a managed system
US10896097B1 (en) 2017-05-25 2021-01-19 Palantir Technologies Inc. Approaches for backup and restoration of integrated databases
GB201708818D0 (en) 2017-06-02 2017-07-19 Palantir Technologies Inc Systems and methods for retrieving and processing data
US10248562B2 (en) 2017-06-30 2019-04-02 Microsoft Technology Licensing, Llc Cost-based garbage collection scheduling in a distributed storage environment
US10241716B2 (en) 2017-06-30 2019-03-26 Microsoft Technology Licensing, Llc Global occupancy aggregator for global garbage collection scheduling
US11334552B2 (en) 2017-07-31 2022-05-17 Palantir Technologies Inc. Lightweight redundancy tool for performing transactions
US10417224B2 (en) 2017-08-14 2019-09-17 Palantir Technologies Inc. Time series database processing system
US10216695B1 (en) 2017-09-21 2019-02-26 Palantir Technologies Inc. Database system for time series data storage, processing, and analysis
US10614069B2 (en) 2017-12-01 2020-04-07 Palantir Technologies Inc. Workflow driven database partitioning
US11281726B2 (en) 2017-12-01 2022-03-22 Palantir Technologies Inc. System and methods for faster processor comparisons of visual graph features
US11016986B2 (en) 2017-12-04 2021-05-25 Palantir Technologies Inc. Query-based time-series data display and processing system
CN108415986B (zh) * 2018-02-11 2020-10-30 杭州朗和科技有限公司 一种数据处理方法、装置、系统、介质和计算设备
US20190303035A1 (en) * 2018-03-27 2019-10-03 EMC IP Holding Company LLC Copying garbage collector for geographically distributed data storage environment
GB201807534D0 (en) 2018-05-09 2018-06-20 Palantir Technologies Inc Systems and methods for indexing and searching
US11048430B2 (en) 2019-04-12 2021-06-29 Netapp, Inc. Object store mirroring where during resync of two storage bucket, objects are transmitted to each of the two storage bucket
US11481319B2 (en) * 2020-05-22 2022-10-25 Vmware, Inc. Using data mirroring across multiple regions to reduce the likelihood of losing objects maintained in cloud object storage
US11442652B1 (en) 2020-07-23 2022-09-13 Pure Storage, Inc. Replication handling during storage system transportation
US11349917B2 (en) 2020-07-23 2022-05-31 Pure Storage, Inc. Replication handling among distinct networks

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4665520A (en) * 1985-02-01 1987-05-12 International Business Machines Corporation Optimistic recovery in a distributed processing system
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5446901A (en) * 1993-06-30 1995-08-29 Digital Equipment Corporation Fault tolerant distributed garbage collection system and method for collecting network objects
US5852666A (en) * 1996-07-01 1998-12-22 Sun Microsystems, Inc. Capability security for distributed object systems
JP3385957B2 (ja) * 1998-03-04 2003-03-10 日本電気株式会社 分散システム、メモリ管理装置及び方法、並びに記録媒体
US6615383B1 (en) * 1998-05-29 2003-09-02 Sun Microsystems, Inc. System and method for message transmission between network nodes connected by parallel links
US6594698B1 (en) * 1998-09-25 2003-07-15 Ncr Corporation Protocol for dynamic binding of shared resources
US6865657B1 (en) * 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6513059B1 (en) * 2000-08-24 2003-01-28 Cambira Corporation Adaptive collaborative intelligent network system
JP4096147B2 (ja) * 2000-10-25 2008-06-04 株式会社日立製作所 分散型計算機システムにおける重複配置複製データの複製方式
US6839752B1 (en) * 2000-10-27 2005-01-04 International Business Machines Corporation Group data sharing during membership change in clustered computer system
US20020161907A1 (en) * 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US7573500B2 (en) * 2003-03-24 2009-08-11 Sensormatic Electronics Corporation System and method for communicating data in a video system
US8364948B2 (en) * 2004-07-02 2013-01-29 Hewlett-Packard Development Company, L.P. System and method for supporting secured communication by an aliased cluster
JP2006185041A (ja) * 2004-12-27 2006-07-13 Matsushita Electric Ind Co Ltd コンテンツ分散配置システム、端末及びコンテンツ分散配置システムの動作方法
US7581232B2 (en) * 2005-05-16 2009-08-25 Microsoft Corporation Coordinating reference counting between entities executing within separate address spaces
CN100512293C (zh) * 2005-09-07 2009-07-08 华为技术有限公司 一种会话初始化协议消息体内容处理方法及网络
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
JP4920979B2 (ja) * 2006-01-25 2012-04-18 株式会社日立製作所 ストレージ装置及びその制御方法
US7921077B2 (en) * 2006-06-29 2011-04-05 Netapp, Inc. System and method for managing data deduplication of storage systems utilizing persistent consistency point images
JP4945232B2 (ja) * 2006-12-21 2012-06-06 株式会社日立製作所 アクセス制御方法、計算機システム、及びオブジェクト複製プログラム
US7660831B2 (en) * 2007-01-07 2010-02-09 Apple Inc. Synchronization methods and systems
US8719375B2 (en) * 2007-03-22 2014-05-06 Microsoft Corporation Remote data access techniques for portable devices
US8768895B2 (en) * 2007-04-11 2014-07-01 Emc Corporation Subsegmenting for efficient storage, resemblance determination, and transmission
US8315984B2 (en) * 2007-05-22 2012-11-20 Netapp, Inc. System and method for on-the-fly elimination of redundant data
WO2010075401A2 (en) 2008-12-22 2010-07-01 Google Inc. Asynchronous distributed garbage collection for replicated storage clusters

Also Published As

Publication number Publication date
US20100161688A1 (en) 2010-06-24
JP2012513639A (ja) 2012-06-14
AU2009330067A1 (en) 2011-07-14
CA2747786C (en) 2015-06-09
US20130124470A1 (en) 2013-05-16
US8346820B2 (en) 2013-01-01
CA2747786A1 (en) 2010-07-01
AU2009330067B2 (en) 2013-05-02
WO2010075401A3 (en) 2010-11-11
DE202009019149U1 (de) 2017-01-30
CN102317939A (zh) 2012-01-11
JP5479490B2 (ja) 2014-04-23
WO2010075401A2 (en) 2010-07-01
CN102317939B (zh) 2014-05-21
EP2380101A2 (en) 2011-10-26
EP2380101B1 (en) 2019-10-30
US9081841B2 (en) 2015-07-14

Similar Documents

Publication Publication Date Title
BRPI0922542B1 (pt) Método realizado por um dispositivo de pluralidade de dispositivos num sistema distribuído de replicação de dados, sistema e memória legível em computador
US11943290B2 (en) Asynchronous distributed de-duplication for replicated content addressable storage clusters
Vora Hadoop-HBase for large-scale data
JP6448555B2 (ja) オブジェクトストレージインデキシングシステムのためのコンテンツクラス
US8683112B2 (en) Asynchronous distributed object uploading for replicated content addressable storage clusters
TW201209576A (en) Approach for optimizing restores of deduplicated data
US8977662B1 (en) Storing data objects from a flat namespace in a hierarchical directory structured file system
WO2010048531A1 (en) System and methods for metadata management in content addressable storage
WO2019231527A1 (en) Versioning validation for data transfer between heterogeneous data stores
CN104965835B (zh) 一种分布式文件系统的文件读写方法及装置
Selvaganesan et al. An insight about GlusterFS and its enforcement techniques
US9922135B1 (en) Distributed storage and retrieval of directed acyclic graphs
Yeh et al. Building a version control system in the hadoop hdfs
US10402452B1 (en) Distributed hash table based logging service
US11659019B2 (en) Resource mapping during universal resource locator changes in distributed computing systems
Tomášek Design and implementation of Archival Storage component of OAIS Reference Model
JP6645296B2 (ja) 情報処理システム、情報処理方法、及び、プログラム
Ericson et al. Survey of storage and fault tolerance strategies used in cloud computing
Lensing Direct lookup and hash-based metadata placement: impact on architecture, performance and scalability of local and distributed file systems
CN111488240A (zh) 用于使用加速器池内嵌去重的方法和系统

Legal Events

Date Code Title Description
B15G Others concerning applications: unknown petition

Free format text: NAO CONHECIDA A PETICAO NO 20110128152/RJ DE 13/12/2011 POR MOTIVO DE HAVER PETICAO DE EXAME DO PEDIDO ANTERIOR VALIDA NOS AUTOS DO PROCESSO, EM VIRTUDE DO DISPOSTO NO ART. 219 INCISO II DA LPI, PODENDO SER SOLICITADA A DEVOLUCAO DE TAXA DA PETICAO DESCONHECIDA.

B25D Requested change of name of applicant approved

Owner name: GOOGLE LLC (US)

B06F Objections, documents and/or translations needed after an examination request according art. 34 industrial property law
B06U Preliminary requirement: requests with searches performed by other patent offices: suspension of the patent application procedure
B06A Notification to applicant to reply to the report for non-patentability or inadequacy of the application according art. 36 industrial patent law
B09A Decision: intention to grant
B16A Patent or certificate of addition of invention granted

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 13/10/2020, OBSERVADAS AS CONDICOES LEGAIS.