BR112017005450B1 - Método e sistema para coordenar um ou mais estágios de um ciclo de comutação de registro - Google Patents

Método e sistema para coordenar um ou mais estágios de um ciclo de comutação de registro Download PDF

Info

Publication number
BR112017005450B1
BR112017005450B1 BR112017005450-7A BR112017005450A BR112017005450B1 BR 112017005450 B1 BR112017005450 B1 BR 112017005450B1 BR 112017005450 A BR112017005450 A BR 112017005450A BR 112017005450 B1 BR112017005450 B1 BR 112017005450B1
Authority
BR
Brazil
Prior art keywords
stage
record
agents
register
switching
Prior art date
Application number
BR112017005450-7A
Other languages
English (en)
Other versions
BR112017005450A2 (pt
Inventor
Sriravi Kotagiri
Rahul Newaskar
Ajay Bhave
Yadnyesh Joshi
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 BR112017005450A2 publication Critical patent/BR112017005450A2/pt
Publication of BR112017005450B1 publication Critical patent/BR112017005450B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking

Abstract

"CAPTURA E REPLICAÇÃO DE UM APLICATIVO MULTI-FLUXO SOBRE MÚLTIPLOS HOSTS EM FREQUÊNCIA PRÓXIMA DE SINCRONIZAÇÃO". A presente invenção refere-se a solicitações de acesso ao armazenamento são recebidas a partir de um ou mais aplicativos. Múltiplos servidores atualizam vários discos virtuais conforme orientado pelas solicitações de acesso ao armazenamento. Os discos virtuais armazenam dados que dependem da ordem de gravação nos discos virtuais. Os registros são associados aos discos virtuais. As informação associada a cada solicitação de acesso ao armazenamento é armazenada em um dos registros. É realizado um ciclo de troca de registros. Um coordenador de rastreamento consistente com a ordem de gravação coordena a troca de registros com agentes nos servidores para manter a ordenação de solicitações. Os coordenadores de replicação coordenam a aplicação dos arquivos de registro trocados do armazenamento primário para o armazenamento de réplicas, criando um ponto consistente com a ordem de gravação no lado da réplica que corresponde ao lado primário e conferindo resiliência de falha em relação à transferência dos registros. Os registros de replicação podem ser recebidos individualmente no lado da réplica a partir dos servidores no lado primário para permitir transferências paralelas/simultâneas altamente escalonáveis dos registros.

Description

ANTECEDENTES
[001] A presente invenção refere-se à medida que os computadores se tornaram mais comuns, os indivíduos e as empresas tornaram-se cada vez mais dependentes de sistemas computadorizados confiáveis. Mecanismos de recuperação podem ser implementados para proteger contra vários defeitos, tais como falhas de energia, erros de hardware e/ou software e assim por diante. O sistema operacional e/ou outros programas de controle de um computador podem fornecer vários mecanismos de recuperação.
[002] A replicação de armazenamento pode ser usada para proteger contra a perda de dados armazenados. De acordo com a replicação de armazenamento, várias unidades de armazenamento podem ser usadas para armazenar redundantemente os mesmos dados. Deste modo, são mantidas cópias redundantes de dados em caso de falha de uma das unidades de armazenamento. Há vários tipos de replicação de armazenamento. Por exemplo, a replicação síncrona pode ser usada, a qual assegura que qualquer gravação de dados seja concluída tanto em armazenamento primário quanto cópia de segurança (ou "réplica"). Alternativamente, a replicação assíncrona pode ser usada, onde uma gravação de dados é, tipicamente, considerada completa quando ela é reconhecida pelo armazenamento primário. Os dados também são gravados no armazenamento de cópia de segurança, mas frequentemente com um pequeno atraso de tempo. Assim, não é assegurado que o armazenamento de cópia de segurança esteja sincronizado com o armazenamento primário em todos os momentos.
[003] Clusters de alta disponibilidade (também conhecidos como clusters HA ou clusters de failover) são grupos de computadores que usam frequentemente replicação de armazenamento assíncrona. Um cluster HA usa computadores redundantes em grupos ou clusters que fornecem serviço contínuo quando os componentes do sistema falham. Sem agrupamento, se um servidor que executa um aplicativo específico falhar, o aplicativo ficará indisponível até que a falha no servidor seja corrigida. O agrupamento HA soluciona esta situação ao detectar falhas de hardware/software e reiniciar imediatamente o aplicativo em outro sistema sem requerer intervenção administrativa, processo conhecido como failover. Os clusters HA são frequentemente usados em bancos de dados críticos, compartilhamento de arquivos em uma rede, aplicativos de negócios e serviços ao cliente, tais como sites de comércio eletrônico. As implementações de cluster HA tentam criar redundância em um cluster para eliminar pontos únicos de falha, incluindo o uso de múltiplas conexões de rede e armazenamento de dados, os quais são redundantemente conectados por meio de redes de área de armazenamento.
SUMÁRIO
[004] O presente Sumário é fornecido para introduzir uma seleção de conceitos em uma forma simplificada, os quais são adicionalmente descritos abaixo na Descrição Detalhada. O presente Sumário não se destina a identificar as principais características ou recursos essenciais do assunto reivindicado, nem deve ser usado para limitar o âmbito do assunto reivindicado.
[005] Métodos, sistemas e produtos de programa de computador são fornecidos para rastreamento consistente da ordem de gravação. As solicitações de acesso ao armazenamento, tais como as solicitações de gravação, são recebidas a partir de um ou mais aplicativos (por exemplo, um aplicativo distribuído). Os módulos de processamento de solicitações de armazenamento em vários servidores atualizam vários discos virtuais de acordo com as solicitações de acesso ao armazenamento. Os discos virtuais são armazenamentos primários que armazenam dados que dependem da ordem de gravação nos discos virtuais. Os registros são associados aos discos virtuais. Módulos de gerenciamento de replicação armazenam informação associada a cada solicitação de acesso ao armazenamento em um dos registros associados aos discos virtuais. Um ciclo de comutação de registros é realizado para os registros. Um rastreamento consistente da ordenação de gravação coordena a comutação de registros com agentes nos servidores para manter a ordenação de solicitação. Um coordenador de replicação coordena a aplicação dos arquivos de registro comutados ao armazenamento de réplicas para sincronizar o armazenamento de réplicas com o armazenamento primário.
[006] Outras características e vantagens da invenção, bem como a estrutura e operação de várias modalidades da invenção, são descritas em detalhes abaixo com referência aos desenhos anexos. Observe que a invenção não está limitada às modalidades específicas descritas aqui. Tais modalidades são apresentadas aqui para fins ilustrativos apenas. Modalidades adicionais serão evidentes para aqueles versados na técnica relevante com base nos ensinamentos contidos aqui.
BREVE DESCRIÇÃO DOS DESENHOS/FIGURAS
[007] Os desenhos anexos, os quais são incorporados aqui e formam uma parte do relatório descritivo, ilustram modalidades do presente pedido e, em conjunto com a descrição, servem para explicar adicionalmente os princípios das modalidades e permitir que aqueles versados na técnica pertinente façam e usem as modalidades.
[008] A figura 1 ilustra um sistema exemplificativo que implementa o suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[009] A figura 2 ilustra um outro sistema exemplificativo que implementa o suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[0010] A figura 3 ilustra uma arquitetura exemplificativa para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[0011] A figura 4 é um fluxograma que ilustra um processo exemplificativo para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[0012] A figura 5 é um diagrama de estado que ilustra estados exemplificativos para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[0013] A figura 6 é um fluxograma que ilustra um processo exemplificativo para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades.
[0014] A figura 7 mostra um diagrama de blocos de um sistema que inclui múltiplos discos virtuais que armazenam dados dependentes da ordem de gravação e que implementa a comutação de registros de replicação em disco virtual de uma maneira que mantém a dependência da ordem de gravação entre discos virtuais, de acordo com modalidades exemplificativas.
[0015] A figura 8 mostra um fluxograma que fornece um processo para a comutação de registros de replicação em disco virtual de uma maneira que mantém a dependência da ordem de gravação entre discos virtuais, de acordo com uma modalidade exemplificativa.
[0016] A figura 9 mostra um diagrama de blocos de um coordenador de rastreamento consistente de ordem de gravação de acordo com uma modalidade exemplificativa.
[0017] A figura 10 mostra um fluxograma que fornece um processo para iniciar a comutação de registros de acordo com uma modalidade exemplificativa.
[0018] As figuras 11 e 12 mostram diagramas de blocos de um sistema de uso de arquivos de bloqueio para coordenar a comutação de registros de acordo com modalidades exemplificativas.
[0019] A figura 13 mostra um fluxograma que fornece um processo para coordenar um estágio de comutação de registros de acordo com uma modalidade exemplificativa.
[0020] A figura 14 mostra um processo para uso de códigos de controle para coordenar a comutação de registros de acordo com uma modalidade exemplificativa.
[0021] A figura 15 mostra um fluxograma que fornece um processo para uso de códigos de controle para coordenar um estágio de comutação de registros de acordo com uma modalidade exemplificativa.
[0022] A figura 16 mostra um diagrama de blocos de um sistema que inclui coordenadores de replicação para coordenar a comutação de registros e a aplicação de registros de replicação em disco virtual para armazenamento de réplicas de acordo com modalidades exemplificativas.
[0023] A figura 17 mostra um fluxograma que fornece um processo para coordenar a comutação de registros e a aplicação de registros de replicação em disco virtual para armazenamento de réplicas de acordo com uma modalidade exemplificativa.
[0024] A figura 18 mostra um diagrama de blocos de um dispositivo de computação exemplificativo que pode ser usado para implementar modalidades.
[0025] As características e vantagens da presente invenção se tornarão mais evidentes a partir da descrição detalhada apresentada abaixo quando tomada em conjunto com os desenhos, nos quais caracteres de referência similares identificam elementos correspondentes ao longo de todo o documento. Nos desenhos, números de referência similares geralmente indicam elementos idênticos, funcionalmente similares e/ou estruturalmente similares. O desenho no qual um elemento aparece pela primeira vez é indicado pelo(s) dígito(s) mais à esquerda no número de referência correspondente.
DESCRIÇÃO DETALHADA I. Introdução
[0026] O presente relatório descritivo e os desenhos anexos descrevem uma ou mais modalidades que incorporam as características da presente invenção. O âmbito da presente invenção não está limitado às modalidades descritas. As modalidades descritas meramente exemplificam a presente invenção e versões modificadas das modalidades descritas também são abrangidas pela presente invenção. As modalidades da presente invenção são definidas pelas concretizações anexas ao mesmo.
[0027] Referências no relatório descritivo a "uma modalidade", "modalidade", "modalidade exemplificativa", etc., indicam que a modalidade descrita pode incluir um recurso, estrutura ou característica particular, mas cada modalidade pode não incluir necessariamente o recurso, estrutura ou característica específica. Além disso, tais frases não se referem necessariamente à mesma modalidade. Além disso, quando um recurso, estrutura ou característica particular é descrita em relação a uma modalidade, subentende-se que está dentro do conhecimento daqueles versados na técnica produzir tal recurso, estrutura ou característica em relação a outras modalidades, quer explicitamente descrito ou não.
[0028] Numerosas modalidades exemplificativas são descritas como segue. Observe que quaisquer cabeçalhos de seção/subseção contidos aqui não se destinam a ser limitativos. As modalidades são descritas ao longo deste documento e qualquer tipo de modalidade pode ser incluída em qualquer seção/subseção. Além disso, as modalidades descritas em qualquer seção/subseção podem ser combinadas com quaisquer outras modalidades descritas na mesma seção/subseção e/ou em uma seção/subseção diferente de qualquer maneira.
[0029] É discutido aqui o suporte à ordenação de solicitação quando comutando de replicação em disco virtual. Solicitações de acesso ao armazenamento, tais como solicitações de gravação, são recebidas a partir de uma máquina virtual. Um módulo de processamento de solicitação de armazenamento atualiza um dos vários discos virtuais conforme indicado por cada uma das solicitações de acesso ao armazenamento. Além disso, um módulo de gerenciamento de replicação armazena informação associada a cada solicitação de acesso ao armazenamento em um de múltiplos registros. Os registros podem ser transferidos para um dispositivo de recuperação em vários intervalos e/ou em resposta a vários eventos, o que resulta em comutação de registros, de modo que o módulo de gerenciamento de replicação armazena a informação associada a cada solicitação de acesso ao armazenamento em um novo registro e o registro anterior (antigo) é transferido para o dispositivo de recuperação. Durante esta comutação, a ordenação de solicitação para solicitações dependentes da ordem de gravação é mantida, pelo menos em parte, ao bloquear o processamento da informação associada a cada solicitação de acesso ao armazenamento.
[0030] Várias modalidades são discutidas aqui em termos de máquinas virtuais. A virtualização refere-se, em geral, a uma abstração de recursos físicos. A emulação de hardware envolve o uso de software que representa o hardware com o qual o sistema operacional normalmente interage. O software de emulação de hardware pode dar suporte a sistemas operacionais convidados e o software de virtualização, tal como um hipervisor, pode estabelecer uma máquina virtual (Virtual Machine - VM) na qual um sistema operacional convidado opera. Grande parte da descrição aqui é feita no contexto de máquinas vir-tuais, mas as técnicas discutidas aqui são igualmente aplicáveis a máquinas físicas que não empregam virtualização.
[0031] Para permitir a recuperação de um dispositivo em caso de falha, a informação associada a este dispositivo é fornecida para um dispositivo de recuperação. No contexto de máquinas virtuais, uma replicação de base pode ser fornecida e atualizações ou alterações nesta replicação de base podem ser fornecidas à medida que a máquina virtual é executada em seu dispositivo primário.
[0032] As técnicas discutidas aqui dão suporte a sistemas nos quais discos de diferenciação ou outros mecanismos similares não são necessários para fornecer replicação de armazenamento virtual e recuperação de máquina virtual. Em uma ou mais modalidades, são criados um ou mais registros (por exemplo, arquivos de registros), também ditos como registros de replicação, que capturam as alterações feitas em um dispositivo de armazenamento, incluindo um disco virtual. Em uma modalidade de máquina virtual, os registros podem ser criados ao preservar duplicatas de solicitações de alteração que estão em fila para inclusão no disco virtual. O processamento e a atualização de registros podem ser executados em paralelo com o processamento que atualiza o disco virtual, de modo que os dados replicados sejam criados sem latências adicionais e os registros possam ser preparados de forma a poderem ser facilmente transferidos para (um) dispositivo(s) de recuperação, ao mesmo tempo em que limita o impacto sobre as operações de entrada/saída por segundo (Input/Output Per Second - IOPS) para a carga de trabalho em execução. Assim, embora as técnicas discutidas aqui possam ser usadas além de tecnologias tais como discos de diferenciação quando usadas para outras finalidades, a replicação pode ser efetuada sem a existência de quaisquer discos de diferenciação de acordo com a descrição.
[0033] Em uma ou mais modalidades, as solicitações de gravação de uma máquina virtual que são destinadas a um disco virtual são copiadas para uma estrutura de dados de registro, tal como uma fila de registros. As entradas de registro são retiradas da fila e processadas em um registro. As gravações no registro podem ser acumuladas na memória, em vez de armazenamento, tal como um disco virtual, disco ou outro armazenamento físico. As informações de solicitação de gravação podem ser acumuladas na memória antes de serem gravadas no disco físico para, por exemplo, reduzir o impacto sobre o desempenho da carga de trabalho e os tempos de resposta dentro da máquina virtual. As gravações no registro podem ser coordenadas com as gravações no arquivo de disco virtual (por exemplo, disco rígido virtual ou arquivo "VHD") para, dentre outras coisas, facilitar captura consistente com aplicativo de máquinas virtuais. Além disso, o formato de registro pode ser agnóstico ao formato e tipo de arquivo do disco rígido virtual, de modo que ele pode ser usado para capturar alterações em um disco virtual de qualquer tipo e formato.
[0034] A seção a seguir descreve modalidades para comutação de um registro de replicação associado ao armazenamento. Um registro atual (por exemplo, um arquivo de registro que foi usado para armazenar indicações de solicitações de armazenamento que são aplicadas em paralelo ao armazenamento primário) é comutado para um novo registro. O registro atual pode, então, ser aplicado ao armazenamento de réplicas para sincronizar o armazenamento de réplicas com o armazenamento primário, ao mesmo tempo em que se mantém a dependência da ordem de gravação. Uma seção subsequente descreve modalidades para comutação de vários registros de replicação que estão associados a múltiplos exemplos de armazenamento primário, onde uma dependência da ordem de gravação está presente nos exemplos de armazenamento primário (por exemplo, os exemplos de armazenamento são gravados por um aplicativo distribuído, etc.). Esta é seguida por uma outra seção que descreve modalidades para aplicação dos registros de replicação ao armazenamento de réplicas de uma maneira que mantém a dependência da ordem de gravação entre vários exemplos de armazenamento de réplicas. II. Modalidades Exemplificativas de Suporte à Ordenação de Solicitação Quando comutando de registros de Replicação em Disco Virtual
[0035] A figura 1 ilustra um sistema 100 exemplificativo que implementa o suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. As solicitações de acesso ao armazenamento 102 podem ser fornecidas por qualquer fonte, tal como uma máquina virtual (VM) 104. Embora ilustrado como sendo fornecidas pela máquina virtual 104, as solicitações de armazenamento 102 podem, adicional ou alternativamente, ser fornecidas por outros componentes ou módulos, tais como processadores ou outras fontes. As solicitações de acesso ao armazenamento 102 podem ser qualquer tipo de solicitações de acesso ao armazenamento, tais como solicitações de gravação, solicitações para expandir ou retrair o disco ou quaisquer outras operações de armazenamento que possam resultar em alterações no disco. Em uma ou mais modalidades, as solicitações de acesso ao armazenamento 102 representam solicitações de gravação para armazenar dados.
[0036] Na modalidade ilustrada, os dados são armazenados em um ou mais discos virtuais 106, cada um dos quais pode representar um ou mais arquivos armazenados em meios de armazenamento físicos. Um módulo de processamento de solicitação de armazenamento 108 direciona e processa solicitações de entrada 102 para os discos virtuais 106. Por exemplo, as solicitações 102 podem representar solicitações de gravação temporariamente armazenadas no módulo de processamento de solicitação de armazenamento 108 até que possam ser usadas para atualizar um disco virtual 106. Cada disco virtual 106 pode incluir um único arquivo de armazenamento virtual (por exemplo, um arquivo VHD) ou vários arquivos (por exemplo, um arquivo VHD e um ou mais arquivos de disco de diferenciação (também denominados arquivos AVHD)). Assim, por exemplo, as alterações em um disco virtual 106 podem ser feitas em um único arquivo que representa o disco virtual 106 e os registros, conforme discutido aqui, podem ser usados em lugar de discos de diferenciação ou estados similares do disco virtual 106 para fins de replicação.
[0037] O módulo de gerenciamento de replicação 110 recebe as mesmas solicitações de acesso ao armazenamento 102 que estão sendo recebidas no módulo de processamento de solicitação de armazenamento 108. As solicitações de acesso ao armazenamento 102 podem ser recebidas de modos diferentes, tal como a partir da máquina virtual 104, a partir de um módulo intermediário (não mostrado), a partir do módulo de processamento de solicitação de armazenamento 108 propriamente dito e assim por diante. Em uma ou mais modalidades, o módulo de gerenciamento de replicação 110 é implementado integralmente com o módulo de processamento de solicitação de armazenamento 108. Nestas situações, o módulo de gerenciamento de replicação 110 pode receber uma cópia das solicitações de acesso ao armazenamento 102 após o recebimento das solicitações 102 no módulo de processamento de solicitação de armazenamento 108 ou o módulo de processamento de solicitação de armazenamento 108 pode criar e fornecer uma cópia das solicitações de acesso ao armazenamento 102 ao módulo de gerenciamento de replicação 110. Deverá ser observado que módulos tais como o módulo de processamento de solicitação de armazenamento 108 e o módulo de gerenciamento de replicação 110 podem ser implementados de diferentes maneiras. Por exemplo, o módulo 108 e/ou o módulo 110 podem ser fornecidos dentro da máquina virtual 104, podem ser fornecidos por um hipervisor, podem ser fornecidos por um sistema operacional de partição original ou outro sistema operacional e assim por diante.
[0038] O módulo de gerenciamento de replicação 110 pode armazenar em memória temporária as solicitações de acesso ao armazenamento 102 em paralelo com o armazenamento e/ou processamento em memória temporária das solicitações de acesso ao armazenamento 102 pelo módulo de processamento de solicitação de armazenamento 108. As solicitações de acesso ao armazenamento em memória temporária 102 são gravações em um ou mais registros 112, tal como um arquivo de registro, para fins de replicação e, tipicamente, sem afetar significativamente o armazenamento IOPS. Tipicamente, cada disco virtual 106 tem um registro 112 correspondente. À medida que solicitações de gravação ou outras solicitações de acesso ao armazenamento 102 são processadas para atualizar os discos virtuais 106 em resposta ao processamento da máquina virtual 104, o módulo de gerenciamento de replicação 110 rastreia as alterações nos discos virtuais 106 em um ou mais registros 112.
[0039] Em vários intervalos e/ou em resposta a vários eventos, os registros 112 podem ser transmitidos, tal como através de transmissor 114, para outro local (por exemplo, para um dispositivo de recuperação) onde um sistema de recuperação ou máquina virtual pode ser representado para replicar a máquina virtual 104. O transmissor 114, o qual pode ser um transmissor autônomo ou associado a outro dispositivo (por exemplo, um transceptor, um módulo de interface de rede, etc.), pode fornecer o registro 112 para um destino, tal como um sistema de recuperação ou servidor, como uma réplica de recuperação de pelo menos uma parte de um disco virtual 106. Quando um registro é transmitido para outro local, o registro a ser transferido é dito como o registro antigo e é criado um novo registro. As solicitações de acesso ao armazenamento armazenadas em memória temporária são gravadas no novo registro em vez do registro antigo. Este processo de alterar de armazenamento das solicitações de acesso no novo registro em vez do registro antigo também é dito como comutação de registro.
[0040] A figura 2 ilustra um outro sistema 200 exemplificativo que implementa o suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. O sistema 200 é similar ao sistema 100 da figura 1, incluindo solicitações de armazenamento (por exemplo, gravação) 102, um ou mais discos virtuais 106, um módulo de processamento de solicitação de armazenamento 108 e um módulo de gerenciamento de replicação 110. No sistema 200, uma máquina virtual ou outra fonte emite solicitações de gravação 102 que alterarão um ou mais discos virtuais 106 com os dados a serem gravados no mesmo. Tanto o módulo de processamento de solicitação de armazenamento 108 como o módulo de gerenciamento de replicação 110 recebem as solicitações de gravação 102. À medida que o módulo de processamento de solicitação de armazenamento 108 processa as solicitações de gravação 102 para inclusão em um disco virtual 106, o módulo de gerenciamento de replicação 110 coloca em fila as solicitações de gravação 102 para gravação de um ou mais registros 202.
[0041] Em uma ou mais modalidades, os registros 202 são capturados na memória 204 (por exemplo, memória de acesso aleatório) para reduzir o processamento de entrada/saída (I/O) e melhorar o IOPS em relação a soluções que envolvem gravação em disco, tais como discos de diferenciação. Cada registro 202 pode ser gravado no armazenamento 206 (por exemplo, um disco magnético ou óptico, uma unidade de memória flash, etc.) em intervalos regulares ou irregulares desejados tais como, por exemplo, intervalos fixos, intervalos aleatórios, intervalos com base em eventos disparados (por exemplo, o tamanho de todos os registros 202 na memória 204, o tamanho de um registro 202 particular na memória 204, etc.) e assim por diante. O módulo de gerenciamento de replicação 110 inclui um módulo de controle de gravação em armazenamento 208 que determina quando um registro 202 na memória 204 deve ser gravado no armazenamento 206, conforme ilustrado por um ou mais registros 210. Em uma ou mais modalidades, o módulo de controle de gravação em armazenamento 208 grava um registro 202 no armazenamento 206 como um registro 210 quando a memória 204 que foi atribuída ao registro 202 atinge um limiar. Cada registro 210 é, tipicamente, um único arquivo no armazenamento 206 mas pode, alternativamente, ser múltiplos arquivos e/ou partes de um arquivo (por exemplo, múltiplos registros podem ser armazenados em um único arquivo de registro). Por exemplo, uma gravação de um registro 202 da memória 204 para o registro 210 no armazenamento 206 pode ocorrer quando a memória atribuída ao registro 202 atinge 90% da capacidade. Em uma ou mais modalidades, o módulo de controle de gravação em armazenamento 208 grava também um registro 202 no armazenamento 206 como um registro 210 quando o registro para o disco virtual 106 correspondente deve ser comutado para um novo registro, conforme discutido em maiores detalhes abaixo. Ao acumular solicitações de gravação 102 na memória 204 e raramente gravar os registros no armazenamento físico 206, o impacto sobre o desempenho da carga de trabalho da máquina virtual e os tempos de resposta dentro da máquina virtual pode ser reduzido.
[0042] Em vários intervalos e/ou em resposta a vários eventos, os registros 202 e/ou 210 podem ser transmitidos, tal como através do transmissor 114, para outro local conforme discutido acima com referência à figura 1. Quando um registro é transmitido para outro local, as solicitações de acesso ao armazenamento armazenadas em memória temporária são gravadas no novo registro em vez do registro antigo.
[0043] Nos sistemas 100 da figura 1 e 200 da figura 2, máquinas virtuais ou outras fontes podem emitir solicitações de acesso ao armazenamento que têm requisitos de ordenação particulares. Por exemplo, banco de dados, servidor de correio eletrônico ou outros aplicativos na máquina virtual podem implementar seus próprios mecanismos de recuperação e o desejo de ter solicitações de acesso ao armazenamento particulares (por exemplo, gravações particulares) ocorrendo em uma ordem particular como parte destes mecanismos de recuperação. Os módulos de gerenciamento de replicação 110 atendem a estes requisitos de solicitações quando comutando dos registros, conforme discutido em maiores detalhes abaixo.
[0044] A figura 3 ilustra uma arquitetura 300 exemplificativa para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. A arquitetura 300 pode implementar, por exemplo, um sistema 100 da Figura 1 ou um sistema 200 da Figura 2. A arquitetura 300 é discutida com referência às solicitações de acesso ao armazenamento as quais são solicitações de gravação de I/O, embora vários outros tipos de solicitações de acesso ao armazenamento também possam ser processadas pela arquitetura 300. Na arquitetura 300 exemplificativa, as solicitações de gravação são implementadas como pequenos blocos de solicitação (Small Request Blocks - SRBs) de interface de sistema computadorizado (Small Computer System Interface - SCSI) 302. O SRB 302 é uma maneira representativa na qual uma solicitação de I/O pode ser enviado a um dispositivo de armazenamento. O SRB 302 pode incluir informação, tal como o comando para en-viar ao dispositivo, a localização e o tamanho da memória temporária e assim por diante. Em uma ou mais modalidades, cada solicitação de alteração em um disco virtual está na forma de um SRB 302. Embora os SRBs sejam discutidos como exemplo, deverá ser observado que podem ser usados vários outros tipos de solicitação de I/O com as técnicas discutidas aqui.
[0045] No exemplo ilustrado, o SRB 302 é constituído por uma interface para camadas superiores, mostrada como interface de disco rígido virtual (Virtual Hard Disk - VHD) 304 (por exemplo, a qual pode ser implementada em um sistema analisador de VHD ou arquivo .sys.) Neste exemplo, a interface VHD 304 representa uma interface interna para as camadas superiores a qual executa a tradução interna e envia o SRB 302 para um módulo de gerenciamento de replicação o qual, na Figura 3, é parte do analisador de disco virtual 306. Solicitações de armazenamento também podem ser fornecidas através da interface de VHD 308, a qual também é uma interface para camadas superiores onde as solicitações de armazenamento podem ser fornecidas através de uma chamada de controle de entrada/saída (Input/Output ConTroL - IOCTL) 310 que é gerenciada por um gerenciador de IOCTL 312 de analisador de disco virtual 306. O gerenciador de IOCTL 312 constitui uma interface através da qual um aplicativo na máquina virtual pode se comunicar diretamente com um driver de dispositivo usando códigos de controle. Assim, solicitações de acesso ao armazenamento podem ser recebidas através de um ou mais tipos de entrada diferentes.
[0046] Em uma ou mais modalidades, o analisador de disco virtual 306 pode ser uma adaptação de uma miniporta de VHD, tal como VHDMP.sys disponível no sistema de virtualização Hyper-V® disponível da Microsoft Corporation de Redmond, Washington. Supondo, neste exemplo, que o disco virtual é representado por um arquivo em VHD 314, a pilha de armazenamento para tais arquivos de VHD 314 pode incluir um controlador de mini porta, tal como VHDMP.sys, o qual representa o analisador de VHD 306. O analisador de VHD 306 permite que solicitações de I/O ao arquivo em VHD 314 no armazenamento 316 (por exemplo, um disco magnético ou óptico, uma unidade de memória flash, etc.) sejam enviadas para o sistema de arquivos do hospedeiro. O sistema de arquivos do hospedeiro é ilustrado como um "New Technology File System" (NTFS) 318, embora vários outros sistemas de arquivos do hospedeiro possam ser usados alternativamente.
[0047] Para fins de exemplo presume-se, na descrição da arquitetura 300 exemplificativa, que os SRB 302 incluem solicitações de gravação para alterar um disco virtual, tal como o arquivo em VHD 314. Os SRB 302 que se originam dentro da máquina virtual atingem o analisador de disco virtual 306 no gerenciador de solicitação de SRB 320. Em uma ou mais modalidades, o gerenciador de solicitação de SRB 320 cria um exemplo de uma estrutura de dados personalizada para cada SRB 302 e incorpora o SRB 302 dentro deste exemplo que é adicionado à fila de solicitação de VHD 322. A fila de solicitação de VHD 322 mantém as solicitações de gravação para o arquivo em VHD 314 pendentes para processamento. O processador de solicitação de SRB 320 adiciona estes SRBs 302 à fila 322 e, conforme descrito abaixo, o módulo de processamento de solicitação de VHD 324 remove as solicitações de gravação da fila de solicitação de VHD 322 para processar as solicitações de gravação. Múltiplas entradas na fila de solicitação de VHD 322 representativa são representadas como VI 330, V2 332, V3 334 e V4 336. A fila de solicitação de VHD 322 e o módulo de processamento de solicitação de VHD 324 juntos podem ser um módulo de processamento de solicitação de armazenamento 108 das figuras 1 e 2.
[0048] Em uma ou mais modalidades, o gerenciador de IOCTL 312 também pode receber solicitações a partir de módulos de gerenciamento, tal como o VMMS 340 (por exemplo, um arquivo executável ou .exe) fornecido como parte do sistema de virtualização Hyper-V®. O VMMS 340 geralmente representa um serviço de gerenciamento que serve como um ponto de interação para solicitações de gerenciamento que chegam. O VMMS 340 pode fornecer solicitações ao gerenciador de IOCTL 312 para ativar e desativar o rastreamento de alterações em um disco virtual. Por exemplo, o VMMS 340 pode emitir uma solicitação através de uma chamada IOCTL 310 para o gerenciador de IOCTL 312, o que faz com que a fila de solicitação 342 de registro e o módulo de processamento de solicitação de registro 344 sejam inicializados. O VMMS 340 também pode fornecer solicitações ao gerenciador de IOCTL 312 para gerenciar a comutação de registros enquanto a máquina virtual está sendo executada. Por exemplo, o VMMS 340 pode emitir solicitações para avançar o analisador de disco virtual 306 através de vários estágios de comutação de registros, conforme discutido em maiores detalhes abaixo.
[0049] Quando o rastreamento de alterações é ativado, é criada outro exemplo da estrutura de dados personalizada para o SRB 302 adicionado à fila de solicitação de VHD 322 e adicionado como uma entrada na fila de solicitação de registro 342. Em uma ou mais modalidades, uma memória temporária de dados de solicitações de gravação (por exemplo, SRBs 302) pode ser compartilhado pelos exemplos de estrutura de dados personalizadas para os SRBs 302 tanto na fila de solicitação de VHD 322 como na fila de solicitação de registro 342. A fila de solicitação de registro 342 mantém as solicitações de registros pendentes para processamento. As entradas na fila de solicitação de registro 342 são representadas como L1 350, L2 352, L3 354 e L4 356. As entradas na fila de solicitação de registro 342 e na fila de solicitação de VHD 322 correspondem umas às outras - uma entrada na fila de solicitação de registro 342 que inclui o mesmo SRB 302 (ou referências ao mesmo SRB compartilhado 302) como uma entrada na fila de solicitação de VHD 322 é dita como correspondendo ou estando associada a esta entrada na fila de solicitação de VHD 322. A fila de solicitação de registro 342 e o módulo de processamento de solicitações de registro 344 podem ser um módulo de gerenciamento de replicação 110 da figura 1 ou figura 2.
[0050] O módulo de processamento de solicitação de VHD 324 remove solicitações de gravação em fila de espera das entradas 330336 da fila de solicitação de VHD 322 para processar as solicitações de gravação. O módulo de processamento de solicitação de VHD 324 processa as solicitações de gravação ao gravar os dados solicitados no arquivo em VHD 314. Com base no formato e tipo de disco rígido virtual, em uma ou mais modalidades, o módulo de processamento de solicitação de VHD 324 envia um ou mais pacotes de solicitação de I/O (IRPs) para o arquivo em VHD 314 via NTFS 318 para concluir cada solicitação de gravação.
[0051] O módulo de processamento de solicitações de registro 344 remove as solicitações de gravação na fila de espera das entradas de fila de registros 350-356 da fila de solicitação de registro 342 para processar as solicitações de gravação. O módulo de processamento de solicitação de registro 344 processa as solicitações de gravação ou entradas na fila de registros ao armazenar no registro 364 as entradas na fila de registros 350-356 que incluem as solicitações de gravação. O registro 364 pode ser um ou mais arquivos de registro e as entradas na fila de registros 350-356 podem ser armazenadas em um ou mais arquivos de registro via NTFS 318. Assim, a fila de solicitação de registro 342 é copiada para o registro 364 que, na modalidade ilustrada, está armazenado no armazenamento 368 (por exemplo, um disco magnético ou óptico, uma unidade de memória flash, etc.). O armazenamento 368 pode ser o mesmo ou um armazenamento diferente do armazenamento 316 no qual os arquivos em VHD estão armazenados. Deverá ser observado que, em uma ou mais modalidades, enquanto o registro 364 pode ser armazenado em algum armazenamento 368, o registro é armazenado em cache ou de outra forma armazenado em buffer na memória (por exemplo, memória de acesso aleatório) até um momento em que o registro deve ser enviado para o armazenamento 368. O módulo de processamento de solicitação de registro 344 que processa as solicitações de gravação ou entradas na fila de registros inclui armazenamento das entradas na fila de registros 350-356 que incluem as solicitações de gravação, tal como um cache ou memória temporária.
[0052] São criadas novas entradas de registro para solicitações de gravação para cada nova solicitação de armazenamento e colocadas na fila de solicitação de registro 342, tipicamente de forma substancialmente em paralelo com a criação e colocação de uma nova entrada na fila de solicitação de VHD para a solicitação de gravação na fila de solicitação de VHD 322. De forma similar, a próxima solicitação de gravação na fila de solicitação de registro 342 é removida e copiada para o registro 364, tipicamente de forma substancialmente em paralelo com a entrada que corresponde para a solicitação de gravação que está sendo removida da fila de solicitação de VHD 322 e processada pelo módulo de processamento de solicitações de VHD 324. A fila de solicitação de VHD 322 e a fila de solicitação de registro 342 são, tipicamente, filas "first-in-first-out" (FIFO) embora, alternativamente, possam ser usadas outras técnicas de filas em espera.
[0053] Considera-se que uma solicitação de gravação em fila específica (por exemplo, uma solicitação em uma das entradas de fila 330-336) está concluída em resposta a duas condições satisfeitas: (1) todos os IRPs emitidos para o arquivo em VHD 314 para a solicitação de gravação estão concluídos e (2) a entrada na fila de solicitação de registro que corresponde à entrada na fila de solicitação de VHD que inclui a solicitação de gravação é gravada no registro 364. A entrada na fila de solicitação de registro que está sendo gravada no registro 364 refere-se à entrada na fila de solicitação de registro que está sendo adicionada ao registro, independentemente do registro ser armazenado em cache ou armazenado em memória temporária na memória (por exemplo, a entrada na fila de solicitação de registro pode ser gravada no registro 364 mesmo que o registro e, portanto, a entrada na fila de solicitação de registro, esteja sendo mantido em uma memória temporária ou outra memória em lugar do armazenamento 368). Em resposta a uma solicitação de gravação particular estar concluída, o analisador de VHD 306 retorna uma resposta de conclusão para a solicitação de gravação particular para a máquina virtual a partir da qual a solicitação de gravação particular foi recebida. A resposta de conclusão pode ser retornada para a máquina virtual através de qualquer um dos vários componentes ou módulos do analisador virtual 306.
[0054] Em uma ou mais modalidades, o registro pode ser armazenado (pelo menos temporariamente) na memória conforme discutido acima. O registro armazenado na memória pode ser transmitido diretamente para um ou mais dispositivos de recuperação da memória. Alternativamente, o registro pode ser escrito em um meio de armazenamento físico (por exemplo, disco magnético ou óptico, disco de memória flash, etc.) e subsequentemente transmitido para outro local (por exemplo, para um ou mais dispositivos de recuperação) a partir do meio de armazenamento físico. Independentemente se o registro é transmitido a partir da memória ou um meio de armazenamento físico, várias condições podem orientar quando o registro será transmitido para outro local. A condição pode ser, por exemplo, um horário, uma duração de tempo, um evento de disparo e assim por diante. Por exemplo, a condição pode ser um intervalo de tempo particular (por exemplo, cinco minutos), um evento particular (por exemplo, um arquivo de registro atingindo um tamanho limítrofe e/ou tendo um número limítrofe de entradas) e assim por diante. Os dispositivos de recuperação podem ser qualquer um de uma variedade de diferentes servidores de recuperação e/ou dispositivos de armazenamento de recuperação.
[0055] Quando o registro, dito como o registro antigo, é transmitido para outro local (por exemplo, para um dispositivo de recuperação), um novo registro é criado. O módulo de processamento de solicitação de registro 344 procede, então, para armazenar as entradas na fila de solicitação de registro 342 no novo registro. Este processo de alteração das entradas de armazenamento na fila de solicitação de registro 342 no novo registro em vez do registro antigo também é dito como comutação de registro.
[0056] O dispositivo de recuperação é um dispositivo de computação separado da arquitetura de implementação do dispositivo 300 e/ou um dispositivo de armazenamento separado do armazenamento 316 (e do armazenamento 368). O dispositivo de recuperação recebe o registro transmitido e mantém ou de outro modo usa o registro transmitido para fins de recuperação. Por exemplo, se ocorrer uma falha na arquitetura de implementação do dispositivo 300, os registros recebidos pelo dispositivo de recuperação podem ser usados para recriar o arquivo em VHD 314. O dispositivo de recuperação pode manter ou de outro modo usar o registro transmitido de diferentes formas. Em uma ou mais modalidades, o dispositivo de recuperação armazena o registro, permitindo que as solicitações no registro sejam subsequentemente aplicadas, se recuperação do arquivo em VHD 314 é desejada, a uma cópia previamente armazenada do arquivo em VHD 314 (uma cópia do arquivo em VHD 314 que não inclui as alterações indicadas no registro e que é armazenada no dispositivo de recuperação ou em outro local) para recuperar o arquivo em VHD 314. Alternativamente, as solicitações no registro podem ser processadas e aplicadas a uma cópia anteriormente armazenada do arquivo em VHD 314 (uma cópia do arquivo em VHD 314 que não inclui as alterações indicadas no registro e que é armazenada no dispositivo de recuperação ou em outro local), permitindo que uma cópia duplicada do arquivo em VHD 314 seja mantida no dispositivo de recuperação. A solicitação no registro pode ser processada e aplicada a uma cópia anteriormente armazenada do arquivo em VHD 314 de uma maneira análoga àquela realizada pelo módulo de processamento de solicitação de VHD 324 no processamento de solicitações na fila de solicitação de VHD 322, conforme discutido acima.
[0057] O registro 364 inclui as solicitações de armazenamento provenientes da fila de solicitação de registro 342, bem como dados adicionais suficientes para o arquivo em VHD 314 a ser recuperado e/ou replicado. O registro 364 pode incluir vários dados e/ou metadados referentes às solicitações de armazenamento armazenadas no registro 364 da fila de solicitação de registro 342 e do arquivo em VHD 314. Em uma ou mais modalidades, o registro 364 inclui uma porção de cabeçalho, uma ou mais porções de metadados e uma ou mais porções de dados. A uma ou mais porções de dados incluem as entradas na fila de solicitação de registro (ou, alternativamente, os dados das entradas na fila de solicitação de registro) que incluem as solicitações de gravação ou outras solicitações de armazenamento.
[0058] A porção de cabeçalho inclui, por exemplo, informação para identificar o registro, informação para indicar o tamanho de uma ou mais porções de metadados, informação para indicar quantas porções de metadados estão incluídas no registro e informação para indicar a localização dos últimos dados válidos do registro (o fim do registro ou EOL). A porção de cabeçalho pode incluir várias outras informações, tais como um identificador de versão do registro, um indicador de horário que indica quando o registro foi criado (e/ou modificado pela última vez), um tamanho do registro, uma verificação para o registro, um código de erro (por exemplo, que indica se ocorreu um erro ao criar ou receber o registro) e assim por diante.
[0059] Cada porção de metadados inclui, por exemplo, um cabeçalho de metadados e uma ou mais entradas de metadados. Os metadados fornecem, por exemplo, informação que descreve as alterações no disco virtual (o arquivo em VHD). Por exemplo, o cabeçalho de metadados pode incluir uma indicação do tamanho do cabeçalho de metadados, uma indicação da localização da porção de metadados anterior no registro, uma indicação da localização da próxima porção de metadados no registro, uma indicação do número de entradas de metadados na porção de metadados, um valor de verificação para a porção de metadados e assim por diante. Cada entrada de metadados fornece, por exemplo, informação sobre a faixa de endereços de disco virtual que é modificada. Por exemplo, cada entrada de metadados pode incluir um deslocamento de byte que indica um endereço físico real no disco virtual que foi modificado, um valor de verificação para a entrada de metadados, um comprimento de dados que indica um tamanho dos dados em uma porção de dados, um valor que indica horário/tempo e/ou uma data quando a solicitação de armazenamento que resulta nos dados em uma porção de dados foi recebida pelo analisador de VHD, a meta operação dos dados em uma porção de dados (por exemplo, uma operação de gravação, nenhuma operação (NOOP), etc.) e assim por diante.
[0060] Na arquitetura 300 exemplificativa, embora um arquivo em VHD 314 e um registro 364 sejam ilustrados, em uma ou mais modalidades a arquitetura 300 inclui múltiplos arquivos em VHD 314 (armazenados no mesmo e/ou em um armazenamento 316 diferente), bem como múltiplos registros 364 (armazenados no mesmo e/ou em um armazenamento 368 diferente). O analisador de VHD 306 pode incluir uma fila de solicitação de VHD separada para cada arquivo em VHD com cada fila de solicitação de VHD correspondendo a um único arquivo em VHD ou, alternativamente, uma única fila de solicitação de VHD pode corresponder (e, assim, incluir entradas para) múltiplos arquivos em VHD diferentes. O analisador de VHD 306 pode também incluir uma fila de solicitação de registro separada para cada registro, com cada fila de solicitação de registro correspondendo a um único registro ou, alternativamente, uma única fila de solicitação de registro pode corresponder (e, assim, incluir entradas para) múltiplos registros diferentes.
[0061] Em situações nas quais o sistema (por exemplo, sistema 100 da Figura 1 e/ou sistema 200 da Figura 2) ou arquitetura (por exemplo, arquitetura 300 da Figura 3) inclui múltiplos registros, a comutação de registros inclui a comutação de todos os múltiplos registros aproximadamente ao mesmo tempo. No entanto, em geral, não há nenhuma ordenação garantida pela qual os registros são comutados, tipicamente sem dependência de um registro ser comutado antes de outro e, tipicamente, nenhuma velocidade garantida na qual os registros são comutados. Consequentemente, uma máquina virtual não pode confiar em registros sendo comutados em uma ordem particular.
[0062] A Figura 4 é um fluxograma que ilustra um processo 400 exemplificativo para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. O processo 400 é realizado, por exemplo, por um sistema 100 da Figura 1, um sistema 200 da Figura 2 e/ou uma arquitetura 300 da Figura 3 e pode ser implementado em hardware ou uma combinação de hardware com um ou ambos de software e firmware. O processo 400 é mostrado como um conjunto de atos e não se limita à ordem mostrada para executar as operações dos vários atos. O processo 400 é um processo exemplificativo para implementação de suporte à ordenação de solicitações quando comutando de registros de replicação em disco virtual; discussões adicionais sobre a implementação de suporte à ordenação de solicitações quando comutando de registros de replicação em disco virtual são incluídas aqui com referência às diferentes figuras.
[0063] Em geral, o processo 400 é executado em duas partes. Em uma primeira parte 402, os novos registros são inicializados e o processamento de novas entradas na fila de registros é bloqueado. O bloqueio de novas entradas na fila de registros refere-se a entradas na fila de registros que não estão sendo processadas (por exemplo, pelo módulo de processamento de solicitação de registro 344 da Figura 3) e armazenadas no arquivo de registros; no entanto, novas entradas podem ser adicionadas à fila de solicitação de registro enquanto o processamento de novas entradas na fila de registros é bloqueado. Em uma segunda parte 404, os novos registros são alterados para, o processamento de novas entradas na fila de registros é desbloqueado e a comutação de registros é finalizada. Após o processamento de novas entradas na fila de registros ser desbloqueado, as entradas na fila de registros podem ser processadas (por exemplo, pelo módulo de processamento de solicitação de registro 344 da Figura 3) e armazenadas nos novos registros.
[0064] Mais especificamente, a primeira parte 402 inclui um primeiro estágio 412 no qual os novos registros são inicializados. Para cada registro que está sendo comutado (por exemplo, cada registro atual), um novo registro é inicializado. Inicializar um novo registro refere-se à geração das estruturas de dados apropriadas, criação dos cabeçalhos apropriados e assim por diante para o novo registro. Durante o primeiro estágio 412, as entradas na fila de registros continuam a ser processadas (por exemplo, pelo módulo de processamento de solicitação de registro 344 da Figura 3) e as entradas na fila de solicitação de VHD continuam a ser processadas (por exemplo, pelo módulo de processamento de solicitação de VHD 324 da Figura 3).
[0065] A primeira parte 402 também inclui um estágio 414 no qual o processamento de novas entradas na fila de registros é bloqueado. O estágio 414 ocorre após todos os novos registros serem inicializados (embora, alternativamente, possa ocorrer após menos de todos os novos registros serem inicializados). No estágio 414, podem ser adicionadas entradas na fila de registros à fila de solicitação de registro, entradas na fila de VHD podem ser adicionadas à fila de solicitação de VHD e as entradas na fila de VHD podem ser processadas (por exemplo, através do módulo de processamento de solicitação de VHD 324 da Figura 3), mas as entradas na fila de registros não são processadas (por exemplo, através do módulo de processamento de solicitação de registro 344 da Figura 3). Conforme discutido acima, uma solicitação de armazenamento não é indicada como estando concluída até que a entrada na fila de VHD seja processada e a entrada na fila de registros correspondente seja processada. Assim, embora as entradas na fila de VHD possam ser processadas enquanto o processamento de novas entradas na fila de registros é bloqueado, as solicitações em tais entradas na fila de VHD processadas não são indicadas como estando concluídas porque a entrada na fila de registros correspondente ainda não foi processada.
[0066] A segunda parte 404 inclui um estágio 416 no qual ocorre a alteração para os novos registros e o processamento de novas entradas na fila de registros é desbloqueado. Para cada registro que está sendo comutado, o novo registro (inicializado no estágio 412) é alterado para no estágio 416. Alterar o novo registro refere-se a quaisquer indicadores ou outras indicações do registro a ser usado sendo alteradas para o novo registro em vez do registro antigo (o registro que está sendo comutado e no qual as solicitações da fila de registros foram armazenadas antes de bloquear o processamento das novas entradas na fila de registros no estágio 414). Para todos os registros que estão sendo comutados, após os novos registros serem alterados para, o processamento de novas entradas na fila de registros é desbloqueado. Após o processamento de novas entradas na fila de registros ser desbloqueado, a operação do sistema ou arquitetura retoma conforme discutido acima - as entradas na fila de VHD podem ser adicionadas à fila de solicitação de VHD e processadas (por exemplo, pelo módulo de processamento de solicitação de VHD 324 da Figura 3) e as entradas na fila de registros podem ser adicionadas à fila de solicitação de registro e processadas (por exemplo, pelo módulo de processamento de solicitação de registro 344 da Figura 3).
[0067] A segunda parte 404 também inclui um estágio 418 no qual a comutação dos registros é finalizada. A finalização da comutação dos registros inclui várias operações para transferir os registros antigos para outro local (por exemplo, para um dispositivo de recuperação). A finalização da comutação de registros pode incluir, por exemplo, limpar todas as entradas na fila do registro antigo na memória para armazenamento, adicionar informação adicional a um cabeçalho do registro antigo, transmitir o registro antigo para outro local e assim por diante. O estágio 418 ocorre, tipicamente, após o processamento das novas entradas na fila de registros ser desbloqueado, embora os estágios 416 e 418 possam, alternativamente, ser realizados pelo menos em parte ao mesmo tempo (de modo que pelo menos parte da finalização no estágio 418 possa ser realizada enquanto os novos registros estão sendo alterados para e o processamento das novas entradas na fila de registros está sendo desbloqueado no estágio 416).
[0068] A Figura 5 é um diagrama de estados 500 que ilustra estados exemplificativos para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. O diagrama de estados 500 ilustra os diferentes estados pelos quais um componente ou módulo de um analisador de VHD (por exemplo, analisador de VHD 306 da Figura 3) ou módulo de gerenciamento de replicação (por exemplo, módulo 110 das Figura 1 e 2) passa. O diagrama de estados 500 é discutido com referência a um diagrama de estado 500 que implementa o gerenciador de comutação. O gerenciador de comutação pode ser o gerenciador de IOCTL 312 da Figura 3, outro componente ou módulo do analisador de VHD ou módulo de gerenciamento de replicação e assim por diante. Os comandos ou solicitações de transição para diferentes estados são recebidas pelo gerenciador de comutação a partir de um serviço de gerenciamento (ou outro módulo), tal como o VMMS 340 da Figura 3, outro componente ou módulo de um hipervisor e assim por diante.
[0069] Quando o rastreamento de alteração está ativado (por exemplo, o uso de registros e filas de solicitações de registro, conforme discutido aqui, está ativado), o gerenciador de comutação transita para um estado pronto para inicializar novo registro 502. O gerenciador de comutação aguarda no estado 502 até que um comando de inicialização de novo registro seja recebido a partir do serviço de gerenciamento. O comando de inicialização de novo registro é recebido após algum tempo ter decorrido, um evento ter ocorrido, etc., conforme discutido acima.
[0070] Em resposta ao comando de inicialização de novo registro, o gerenciador de comutação transita para um estado de inicializar novo registro 504. No estado 504, o gerenciador de comutação inicializa (ou se comunica com um ou mais módulos ou componentes para inicializar) os novos registros. O primeiro estágio 412 da Figura 4 é implementado pelo gerenciador de comutação enquanto no estado 504. Após os novos registros serem inicializados, o gerenciador de comutação notifica (por exemplo, comunica uma resposta) o serviço de gerenciamento de que os novos registros são inicializados.
[0071] Em resposta à notificação de que os novos registros são inicializados, o serviço de gerenciamento envia, para o gerenciador de comutação, uma resposta de bloquear solicitações de gravação. Em resposta à resposta de bloquear solicitações de gravação, o gerenciador de comutação transita para um estado de novo registro de gravações bloqueadas 506. No estado 506, o gerenciador de comutação bloqueia o processamento de novas entradas na fila de registros (por exemplo, ao notificar o módulo de processamento de solicitação de registro 344 para interromper o processamento de entradas na fila de registros) e altera dos registros antigos para os novos registros. Esta alteração pode ser, por exemplo, fornecimento de indicações (por exemplo, identificadores) de novos registros para o módulo de processamento de solicitação de registro 344. O segundo estágio 414 da Figura 4, bem como parte do terceiro estágio 416 (a alteração para os novos registros), são implementadas pelo gerenciador de comutação enquanto no estado 506. Após o processamento de novas entradas na fila de registros ser bloqueado e a alteração para os novos registros ser concluída, o gerenciador de comutação notifica (por exemplo, comunica uma resposta) ao serviço de gerenciamento que o processamento de novas entradas na fila de registros está bloqueado e a alteração para os novos registros é concluída.
[0072] Em resposta à notificação de que o processamento de novas entradas na fila de registros está bloqueado e a alteração para os novos registros está concluída, o serviço de gerenciamento envia, ao gerenciador de comutação, uma resposta de desbloquear solicitações de gravação. Em resposta à resposta de desbloquear solicitações de gravação, o gerenciador de comutação transita para um estado de novo registro de gravações desbloqueadas 508. No estado 508, o gerenciador de comutação desbloqueia o processamento de novas entradas na fila de registros (por exemplo, ao notificar o módulo de processamento de solicitação de registro 344 para retomar o processamento de entradas na fila de registros) e finaliza a comutação dos registros. Podem ser realizadas várias operações para finalizar a comutação de registros, conforme discutido acima. O quarto estágio 418 da Figura 4 é implementado pelo gerenciador de comutação enquanto no estado 508. Após o processamento de novas entradas na fila de registros ser desbloqueado e a comutação de registros ser finalizada, o gerenciador de comutação notifica (por exemplo, comunica uma resposta) o serviço de gerenciamento que o processamento de novas entradas na fila de registros está desbloqueado e a comutação dos registros é finalizada.
[0073] Em resposta à notificação de que o processamento de novas entradas na fila de registros está desbloqueado e a comutação dos registros foi finalizada, o serviço de gerenciamento envia, ao gerenciador de comutação, uma solicitação finalizar registros antigos. Em resposta à solicitação de finalizar registros antigos, o gerenciador de comutação transita para novo registro pronto para o estado inicializar 502.
[0074] Enquanto no estado 502, 504 ou 506, uma solicitação inesperada pode ser recebida pelo gerenciador de comutação. Uma solicitação inesperada recebida refere-se a uma solicitação diferente de uma solicitação que permitiria ao gerenciador de comutação passar para o estado seguinte para continuar a comutação de registros (por exemplo, qualquer solicitação diferente de uma nova solicitação de registro no estado 502, qualquer solicitação diferente de uma resposta de bloquear solicitação de gravação enquanto no estado 504, qualquer solicitação diferente de uma resposta de desbloquear solicitação de gravação enquanto no estado 506). Em resposta a uma solicitação inesperada, o gerenciador de comutação transita para estado de limpeza de novos registros 510. No estado de limpeza de registros 510, o gerenciador de comutação executa várias operações para anular quaisquer alterações feitas como parte da comutação de registros. Estas operações podem incluir, por exemplo, excluir novos registros que foram criados, impedir que os registros antigos sejam alterados e assim por diante. Após concluir as várias operações para desfazer as alterações feitas como parte da comutação de registros, o gerenciador de comutação transita para o estado pronto para inicializar novo registro 502.
[0075] Similarmente, enquanto no estado 508, uma solicitação inesperada pode ser recebida pelo gerenciador de comutação. Uma solicitação inesperada refere-se a uma solicitação diferente de uma solicitação que permitiria ao gerenciador de comutação transitar para o próximo estado para continuar a comutação de registros (por exemplo, qualquer solicitação diferente de uma solicitação de finalização de registro antigo). Em resposta a uma solicitação inesperada, o gerenciador de comutação transita para o estado de rastreamento de alterações desativado 512. No estado 512, o rastreamento de alterações (por exemplo, o uso de registros e filas de solicitação de registros, conforme discutido aqui, está desativado). Se uma solicitação inesperada for recebida no estado 508, o gerenciador de comutação assume que ocorreu um problema significativo e, assim, em vez de introduzir o estado de limpeza de novos registros 510, desativa o rastreamento de alterações.
[0076] Em uma ou mais modalidades, podem surgir situações onde o serviço de gerenciamento não funciona (por exemplo, falha ou de outro modo interrompe a operação normal) durante a comutação de registros. Para evitar que tal falha faça com que o processamento de novas entradas na fila de registros seja bloqueado indefinidamente (por exemplo, em virtude de uma resposta de desbloquear solicitações de gravação não ser recebida a partir do serviço de gerenciamento devido ao mau funcionamento), o gerenciador de comutação mantém um contexto para o serviço de gerenciamento quando uma solicitação de inicialização de novo registro é recebida. Este contexto é identificado como parte da solicitação de inicialização de novo registro e normalmente é dito como um gerenciador que é aberto pelo serviço de gerenciamento ou outro identificador atribuído (ou reportado) pelo sistema operacional. Se o serviço de gerenciamento não funciona, tais gerenciadores ou identificadores do serviço de gerenciamento são fechados pelo sistema operacional e o gerenciador de comutação é notificado de tais fechamentos. Assim, se um gerenciador mantido como o contexto para o serviço de gerenciamento pelo gerenciador de comutação é fechado antes que uma solicitação de finalizar registro antigo seja recebida tendo este mesmo gerenciador, então, o gerenciador de comutação determina que o serviço de gerenciamento não funcionou durante a comutação de registros. O gerenciador de comutação prossegue para tomar as medidas corretivas apropriadas (por exemplo, transição para o estado de limpeza de novo registro 510 e/ou para o estado de rastreamento de alterações desativado 512), incluindo desbloqueio de processamento de novas entradas na fila de registros. Assim, uma falha no serviço de gerenciamento não fará com que o processamento de novas entradas na fila de registros seja bloqueado indefinidamente.
[0077] As técnicas discutidas aqui dão suporte a vários cenários de uso diferentes. Ao bloquear o processamento de novas entradas na fila de registros, mas permitir o processamento de entradas na fila de VHD durante a comutação de registros, o impacto sobre o desempenho em virtude da comutação de registros é reduzido porque as entradas na fila de VHD podem continuar a ser processadas. O processamento de novas entradas na fila de registros que está bloqueado pode ser a gravação das entradas na fila de registros na memória em vez de armazenamento, conforme discutido acima de modo que, quando o processamento de novas entradas na fila de registros é desbloqueado, as novas entradas na fila de registros podem ser processadas rapidamente em relação à gravação de entradas na fila de VHD para armazenamento.
[0078] Além disso, as técnicas discutidas aqui permitem que a comutação de registros ocorra ao mesmo tempo em que se mantém a ordenação de solicitação para solicitações dependentes da ordem de gravação. Em algumas situações, as solicitações de acesso ao armazenamento emitidas a partir de máquinas virtuais têm solicitações de ordenação particulares. Por exemplo, um aplicativo da máquina virtual pode usar um protocolo "write-ahead-logging" (WAL) no qual uma solicitação de gravação (por exemplo, uma gravação em um banco de dados) para um VHD não é emitida até que a confirmação da conclusão de outra solicitação de gravação (por exemplo, uma gravação para um registro de registro mantido pelo aplicativo) para outro VHD seja recebida. As técnicas discutidas aqui permitem a comutação de registros ao mesmo tempo em que mantém tais restrições de ordenamento.
[0079] Por exemplo, suponha que duas solicitações de gravação W1 seguido por W2 sejam emitidas por uma máquina virtual e que a ordem das solicitações de gravação deve ser mantida (W2 deve ser executada após W1). Uma resposta que indica a conclusão de W1 é retornada após W1 ser gravada no arquivo em VHD e no arquivo de registros e, em resposta a esta indicação, a máquina virtual emite W2. Ao bloquear o processamento de uma entrada na fila de registros para W1 enquanto da comutação de registros, a gravação de W1 no arquivo de registros e, portanto, a indicação de conclusão de W1, é adiada até que a comutação de registros seja concluída. Este bloqueio permite a situação onde W1 e W2 são recebidas após um arquivo de registros ser comutado, mas antes que outro arquivo de registros seja comutado de resultar em W1 sendo gravada em um novo arquivo de registros (e, portanto, ainda não transferida para um dispositivo de recuperação) e W2 sendo gravada em um arquivo de registros antigo (que é transferido para um dispositivo de recuperação à medida que a comutação de registros é concluída). Tal situação onde W2 é transferida para um dispositivo de recuperação, mas W1 não é transferida, violaria a ordenação de solicitação para W1 e W2 no sistema de recuperação, mas é evitada usando as técnicas discutidas aqui.
[0080] A Figura 6 é um fluxograma que ilustra um processo 600 exemplificativo para implementação de suporte à ordenação de solicitação quando comutando de registros de replicação em disco virtual de acordo com uma ou mais modalidades. O processo 600 é realizado, por exemplo, por um sistema 100 da Figura 1, um sistema 200 da Figura 2 e/ou uma arquitetura 300 da Figura 3 e pode ser implementado em software, firmware, hardware ou combinações dos mesmos. O processo 600 é mostrado como um conjunto de atos e não está limitado à ordem mostrada para executar as operações dos vários atos. O processo 600 é um processo exemplificativo para implementação de suporte à ordenação de solicitações de comutação de registros de replicação em disco virtual; discussões adicionais sobre a implementação de suporte à ordenação de solicitações de comutação de registros de replicação em disco virtual são incluídas aqui com referência às diferentes figuras.
[0081] No processo 600, as solicitações de acesso ao armazenamento são recebidas a partir de uma máquina virtual (ato 602). Estas solicitações de acesso ao armazenamento podem ser solicitações de gravação e/ou outras solicitações, conforme discutido acima.
[0082] Um dos vários discos rígidos virtuais é atualizado conforme indicado pela solicitação de acesso ao armazenamento (ato 604). A atualização pode ser, por exemplo, gravar dados no disco rígido virtual, conforme discutido acima. Cada solicitação de acesso ao armazenamento indica, tipicamente, um disco rígido virtual que deve ser atualizado mas pode, alternativamente, indicar vários discos rígidos virtuais que devem ser atualizados.
[0083] A informação associada à solicitação de acesso ao armazenamento também é armazenada em um dos múltiplos registros (ato 606). Cada registro (por exemplo, um arquivo de registros), também dito como um registro de replicação, pode corresponder a um dos discos rígidos virtuais, conforme discutido acima.
[0084] Os múltiplos registros são comutados ao mesmo tempo em que se mantém a ordenação de solicitação para solicitações dependentes da ordem de gravação (ato 608). Esta comutação pode ser feita em múltiplas partes e/ou em múltiplos estágios, conforme discutido acima. Como parte desta comutação, os registros antigos (os registros que estão sendo comutados) podem ser transferidos para um dispositivo de recuperação, conforme discutido acima. A ordenação de solicitações é mantida para solicitações dependentes da ordem de gravação, pelo menos em parte, ao bloquear o processamento da informação associada a cada solicitação de acesso ao armazenamento, tal como bloquear o armazenamento de entradas na fila de solicitação de registros no registro, conforme discutido acima. III. Modalidades Exemplificativas Para Comutação de registros de Replicação Usados Para Capturar um Aplicativo Fluxo Múltiplo em Vários Hospedeiros
[0085] Conforme descrito acima, os registros de replicação podem ser mantidos e comutados para serem usados para atualizar o armazenamento de réplicas com as alterações que foram feitas no armazenamento primário. Em alguns casos, vários exemplos de armazenamento (por exemplo, discos virtuais, discos físicos, dispositivos de memória, etc.) podem armazenar dados relacionados. Por exemplo, várias máquinas virtuais podem, cada uma, operar porções respectivas de um mesmo aplicativo distribuído, de modo que as gravações feitas em seu respectivo armazenamento primário tenham uma ordem de gravação que precisa ser mantida quando aplicada ao armazenamento de réplicas correspondente. Em outras palavras, uma ordem de gravações feitas por uma primeira máquina virtual em seu armazenamento primário e uma ordem de gravações feitas por uma segunda máquina virtual em seu armazenamento primário pode precisar ser mantida em relação às mesmas gravações feitas no armazenamento de réplicas, uma vez que a primeira e a segunda máquinas virtuais podem se comunicar entre si, afetando a sincronização e o conteúdo das respectivas gravações no armazenamento, deste modo, criando um problema de dependência da ordem de gravação.
[0086] Consequentemente, as modalidades descritas na seção anterior podem ser modificadas para coordenar a sincronização da comutação dos registros de replicação para manter a consistência da ordem de gravação. Tais modalidades podem ser implementadas de várias maneiras. Por exemplo, a Figura 7 mostra um diagrama de blocos de um sistema 700 que inclui vários discos virtuais que armazenam dados dependentes da ordem de gravação e que mantém a dependência da ordem de gravação entre os discos virtuais de acordo com modalidades exemplificativas. Por exemplo, o sistema 700 pode ser incluído em uma rede de computadores, tal como um cluster de computadores (computadores ligados que trabalham juntos) que implementa aplicativos distribuídos e incorpora uma rede de armazenamento ou qualquer outra rede de computadores que inclui múltiplos dispositivos de computação (por exemplo, computadores, servidores, etc.) que armazenam dados inter-relacionados no armazenamento.
[0087] Conforme mostrado na figura 7, o sistema 700 inclui um dispositivo de computação 702, um dispositivo de computação 704a e um dispositivo de computação 704b. O dispositivo de computação 702 inclui um coordenador de rastreamento consistente de ordem de gravação (Write Order Consistent Tracking - WOCT) 706. O dispositivo de computação 704a inclui uma primeira máquina virtual (VM) 104a, um primeiro módulo de processamento de solicitação de armazenamento (Storage Request Processing Module - SRPM) 108a, um primeiro módulo de gerenciamento de replicação (Replication Management Module - RMM) 110a, uma segunda VM 104b, um segundo SRPM 108b, um segundo RMM 110b e um primeiro agente 708a. O dispositivo de computação 704b inclui uma terceira VM 104c, um terceiro SRPM 108c, um terceiro RMM 110c, uma quarta VM 104d, um quarto SRPM 108d, um quarto RMM 11Od e um segundo agente 708b. Estes recursos/elementos do sistema 700 são descritos como segue.
[0088] Observe que dois dispositivos de computação que incluem, cada um, duas máquinas virtuais são mostrados na figura 7 para fins ilustrativos. Em outras modalidades, podem estar presentes números adicionais de dispositivos de computação, incluindo dezenas, centenas, milhares e números maiores de dispositivos de computação, e podem estar presentes outros números de máquinas virtuais, com cada dispositivo de computação incluindo uma ou mais máquinas virtuais. Além disso, o armazenamento 710a, 710b, 710c e 710d são dispositivos de armazenamento físicos e podem incluir dispositivos de memória, unidades de disco rígido e/ou outras formas de armazenamento físico. Além disso, observe que, embora o coordenador de WOCT 706 seja mostrado na figura 7 em um dispositivo de computação que é separado dos dispositivos de computação que contêm máquinas virtuais e agentes, em outra modalidade, o coordenador de WOCT 706 pode estar em um mesmo dispositivo de computação com um agente e uma ou mais máquinas virtuais.
[0089] A primeira VM 104a, primeiro SRPM 108a e primeiro RMM 110a são respectivos exemplos de VM 104, SRPM 108 e RMM 110 descritos na seção anterior.
[0090] Similarmente, a segunda VM 104b, o segundo SRPM 108b e o segundo RMM 110b, a terceira VM 104c, o terceiro SRPM 108c e o terceiro RMM 110c e a quarta VM 104d, o quarto SRPM 108d e o quarto RMM 110d são todos os respectivos exemplos de VM 104, SRPM 108 e RMM 110. Além disso, de um modo similar àquele descrito acima, a primeira VM 104a armazena dados no armazenamento 710a em um ou mais VDs 106a através do SRPM 108a e um ou mais registros 112a que correspondem aos VDs 106a são gerados pelo RMM 110a e armazenados no armazenamento 710a para armazenar solicitações de acesso ao armazenamento da primeira VM 104a para fins de replicação. Similarmente, a segunda VM 104b usa o segundo SRPM 108b e segundo RMM 110b para armazenar dados no VD 106b no armazenamento 710b e gerar registros 112b que são armazenados no armazenamento 710b, a terceira VM 104c usa o terceiro SRPM 108c e terceiro RMM 110c para armazenar dados no VD 106c no armazenamento 710c e geram registros 112c que são armazenados no armazenamento 710c e a quarta VM 104d usa o quarto SRPM 108d e o quarto RMM 110d para armazenar dados no VD 106d no armazenamento 710c e gerar registros 112c que são armazenados no armazenamento 710d. Uma vez que estes recursos da figura 7 são descritos em outra parte aqui (por exemplo, a seção anterior), esta descrição não é fornecida novamente na íntegra nesta seção para fins de brevidade.
[0091] Em modalidades, o coordenador de WOCT 706 no dispositivo de computação 702 é configurado para coordenar a comutação de registros de replicação através dos dispositivos de computação 704a, 704b, etc., para manter a consistência da ordem de gravação. Por exemplo, o coordenador de WOCT 706 pode se comunicar com agentes em dispositivos de computação que contêm máquinas virtuais, tais como os agentes 708a e 708b. O coordenador de WOCT 706 pode instruir os agentes a iniciar a comutação de registros para todas as máquinas virtuais nos respectivos dispositivos de computação e fornecer os registros antigos resultantes (os registros desativados) para o coordenador de WOCT 706 ou outro local a ser aplicado ao armazenamento de réplicas.
[0092] Por exemplo, em uma modalidade, o coordenador de WOCT 706 pode funcionar de acordo com a figura 8. A figura 8 mostra um fluxograma 800 que fornece um processo para a comutação de registros de replicação em disco virtual de uma maneira que mantém a dependência da ordem de gravação entre discos virtuais, de acordo com uma modalidade exemplificativa. O fluxograma 800 é descrito como segue em relação à figura 7 e figura 9. A figura 9 mostra um diagrama de blocos de um coordenador de WOCT 900 de acordo com uma modalidade exemplificativa. O coordenador de WOCT 900 é um exemplo do coordenador de WOCT 706 da Figura 7. Outras modalidades estruturais e operacionais serão evidentes para aqueles versados na(s) técnica(s) relevante(s) com base na descrição a seguir.
[0093] O fluxograma 800 começa com a etapa 802. Na etapa 802, é iniciado um ciclo de uma comutação de registros de uma pluralidade de registros associados a uma pluralidade de discos virtuais em uma pluralidade de dispositivos de computação, os discos virtuais armazenando dados que são dependentes da ordem de gravação entre os discos virtuais. Por exemplo, em uma modalidade, o iniciador de comutação de registros 902 do coordenador de WOCT 900 (figura 9) pode iniciar um ciclo de comutação de registros para exemplos de armazenamento em dispositivos de computação. Por exemplo, em uma modalidade, a comutação de registros 902 pode transmitir uma instrução para os agentes nos dispositivos de computação através de uma rede (por exemplo, uma rede de área local, uma rede de área ampliada, uma combinação de redes tal como a Internet, uma rede de área de armazenamento, etc.) e/ou pode iniciar o ciclo de comutação de registros de outra maneira. Outras modalidades exemplificativas para iniciar um ciclo de comutação de registros de acordo com a etapa 802 são descritas abaixo.
[0094] Na etapa 804, o ciclo de comutação de registros da pluralidade de registros na pluralidade de dispositivos de computação é coordenada através dos discos virtuais para manter a ordenação de solicitação para solicitações dependentes da ordem de gravação. Em uma modalidade, o gerenciador de comutação de registros 904 do coordenador de WOCT 900 (figura 9) pode ser configurado para coordenar o ciclo de comutação de registros iniciado pelo iniciador de comutação de registros 902. O gerenciador de comutação de registros 904 pode ser configurado para coordenar um ou mais estágios do ciclo de comutação de registros ao se comunicar com os agentes, de modo que cada estágio seja realizado e confirmado por cada agente antes de permitir que o próximo estágio seja realizado. Por exemplo, em uma modalidade, a comutação de registros 902 pode transmitir instruções ou códigos de controle, pode usar bloqueios exclusivos e/ou pode usar outras técnicas para coordenar o ciclo de comutação de registros. Outras modalidades exemplificativas para coordenar um ciclo de comutação de registros de acordo com a etapa 804 são descritas abaixo.
[0095] Consequentemente, em modalidades, o iniciador de comutação de registros 902 do coordenador de WOCT 900 pode iniciar um ciclo de comutação de registros (etapa 802) de várias maneiras. Por exemplo, a Figura 10 mostra um fluxograma 1000 que fornece um processo para iniciar a comutação de registros de acordo com uma modalidade exemplificativa. O iniciador de comutação de registros 902 pode funcionar de acordo com o fluxograma 1000 em uma modalidade. O fluxograma 1000 é descrito como segue em relação à figura 7, figura 9 e figuras11 e 12. As figuras 11 e 12 mostram diagramas de blocos de um sistema 1100 que usa arquivos de bloqueio para coordenar a comutação de registros de acordo com modalidades exemplificativas. As figuras 11 e 12 mostram, cada uma, o iniciador de comutação de registros 902, o gerenciador de comutação de registros 904, agente 708a, agente 708b e armazenamento 1102 que é acessível por cada iniciador de comutação de registros 902, gerenciador de comutação de registros 904, agente 708a, agente 708b. O armazenamento 1102 inclui primeiro-quarto arquivos de bloqueio de estágio inicial 1106a-1106d e primeiro-quarto arquivos de bloqueio de estágio final 1108a-1108d. Outras modalidades estruturais e operacionais serão evidentes para aqueles versados na(s) técnica(s) relevante(s) com base na descrição a seguir.
[0096] O fluxograma 1000 começa com a etapa 1002. Na etapa 1002, um bloqueio exclusivo é feito em cada um de uma pluralidade de arquivos de bloqueio de estágio inicial, cada arquivo de bloqueio de estágio inicial associado a um estágio correspondente de uma pluralidade de estágios do ciclo de comutação de registros. Em modalidades, um ciclo de comutação de registros pode ser realizado em qualquer número de estágios. Por exemplo, a comutação de registros pode ser realizada para uma máquina virtual de acordo com a figura 4, onde são usados quatro estágios 412, 414, 416 e 418 em um ciclo. Em outras modalidades, podem ser usados outros números de estágios. Uma variedade de mecanismos pode ser usada para controlar/coordenar a comutação de um estágio para outro. Por exemplo, em uma modalidade, podem ser usados um ou mais arquivos de bloqueio em cada estágio para coordenar os estágios de comutação de registros. Um arquivo de bloqueio é um arquivo cujo conteúdo pode ser irrelevante (diferente de um identificador de um titular do bloqueio no arquivo, etc.), mas é usado para sinalizar que um recurso está bloqueado. Em modalidades, se um arquivo de bloqueio está ou não bloqueado pode ser um indicador se um estágio pode começar, se um coordenador ou processo desempenhou as suas funções em um estágio ou se alguma outra tarefa relacionada a um estágio foi ou pode ser realizada. Em uma modalidade exemplificativa, cada estágio pode ter um arquivo de bloqueio de estágio inicial correspondente e um arquivo de bloqueio de estágio final, conforme descrito abaixo.
[0097] Por exemplo, conforme mostrado na figura 11, o arquivo de bloqueio de estágio inicial 1106a e o arquivo de bloqueio de estágio final 1108a são arquivos de bloqueio de primeiro estágio 1104a que podem estar associados a um primeiro estágio (por exemplo, o primeiro estágio 412). Similarmente, o arquivo de bloqueio de estágio inicial 1106b e o arquivo de bloqueio de estágio final 1108b são arquivos de bloqueio de segundo estágio 1104b que podem estar associados a um segundo estágio (por exemplo, segundo estágio 414), o arquivo de bloqueio de estágio inicial 1106c e o arquivo de bloqueio de estágio final 1108c são arquivos de bloqueio de terceiro estágio 1104c que podem estar associados a um terceiro estágio (por exemplo, o terceiro estágio 416) e o arquivo de bloqueio de estágio inicial 1106d e o arquivo de bloqueio de estágio final 1108d são arquivos de bloqueio de quarto estágio 1104d que podem estar associados a um quarto estágio (por exemplo, quarto estágio 418).
[0098] No exemplo da figura 11, no início, os arquivos de bloqueio de estágio inicial 1106a-1106d e os arquivos de bloqueio de estágio final 1108a-1108d podem não ter bloqueios impostos por agentes ou coordenadores. Em uma modalidade, o iniciador de comutação de registros 902 pode verificar que nenhum bloqueio foi imposto sobre os arquivos de bloqueio de estágio inicial 1106a-1106d e os arquivos de bloqueio de estágio final 1108a-1108d (por exemplo, nenhuma entrada de bloqueio nos arquivos de bloqueio por agentes, etc.). O iniciador de comutação de registros 902 assume um bloqueio exclusivo em cada um dos arquivos de bloqueio de estágio inicial 1106a-1106d, conforme representado por bloqueios exclusivos 1110a-1110d (por exemplo, grava uma entrada de bloqueio exclusiva para os arquivos de bloqueio, etc.). Desta forma, os agentes 708a, 708b, e quaisquer outros agentes que estão presentes, são impedidos de fazer um bloqueio nos arquivos de bloqueio de estágio inicial 1106a-1106d e, assim, são indicados como não desempenhando suas funções para qualquer estágio.
[0099] Com referência à figura 10, na etapa 1004, uma instrução de inicialização de comutação de registros é transmitida para uma pluralidade de agentes nos dispositivos de computação. Por exemplo, conforme mostrado na figura 11, o iniciador de comutação de registros 902 pode transmitir uma instrução de inicialização de comutação de registros 1116. A instrução de inicialização de comutação de registros 1116 pode ser transmitida através de uma rede, conforme descrito aqui, a ser recebida pelos agentes 708a, 708b, etc. A instrução de inicialização de comutação de registros 1116 indica aos agentes 708a, 708b, etc. que um ciclo de comutação de registros deve começar e indica que os agentes 708a, 708b, etc. devem preparar um ciclo de comutação de registros e fornecer uma resposta para indicar a prontidão para a comutação de registros.
[00100] Consequentemente, após o recebimento da instrução de inicialização de comutação de registros 1116, os agentes 708a, 708b, etc. se preparam, cada um, para a comutação de registros. Os agentes podem realizar um ou mais processos preparatórios para a comutação de registros. Por exemplo, conforme mostrado na figura 11, cada agente 708a, 708b, etc., pode fazer um bloqueio compartilhado em cada um dos arquivos de bloqueio de estágio final 1108a-1108d, conforme representado pelos bloqueios compartilhados 1112a-1112d feitos pelo agente 706a (por exemplo, grava uma entrada de bloqueio compartilhado nos arquivos de bloqueio, etc.), bloqueios compartilhados 1114a-1114d feitos pelo agente 706b, etc.
[00101] Na etapa 1006, é recebida uma resposta de cada um dos agentes, cada resposta recebida de um agente da pluralidade de agentes indicando que o agente fez um bloqueio compartilhado em cada um de uma pluralidade de arquivos de bloqueio de estágio final, cada arquivo de bloqueio de estágio final associado a um estágio correspondente da pluralidade de estágios. Em uma modalidade, conforme mostrado na figura 12, após fazer os bloqueios compartilhados, os agentes 708a, 708b, etc. podem transmitir uma resposta de prontidão 1202a, 1202b correspondente, etc. As respostas de prontidão 1202a, 1202b, etc., podem ser transmitidas através de uma rede, conforme descrito aqui, a ser recebida pela comutação de registros 902. Desta maneira, os agentes 708a, 708b, e quaisquer outros agentes que estejam presentes, indicam sua prontidão para o coordenador de comutação de registros 902 para desempenhar suas funções para cada estágio.
[00102] Observe que, se um agente estiver desativado, se o agente não puder fazer todos os bloqueios compartilhados nos arquivos de bloqueio de estágio final ou se houver outro problema com o agente, o agente não poderá transmitir sua resposta de prontidão e/ou a resposta de prontidão pode não ser recebida pelo coordenador de comutação de registros 902. O coordenador de comutação de registros 902 pode ser configurado de várias maneiras para lidar com a situação onde uma resposta de prontidão não é recebida a partir de um ou mais agentes. Por exemplo, o coordenador de comutação de registros 902 pode ser configurado para abortar o ciclo de comutação de registros e pode transmitir um comando de abortar para os agentes. Em outra modalidade, o coordenador de comutação de registros 902 pode decidir continuar o ciclo de comutação de registros sem o agente. Um resultado disto pode ser que o agente não responsivo particular não provoque a comutação de registros para as máquinas virtuais em seu dispositivo de computação. Isto pode ser aceitável quando se presume que o agente pode se recuperar durante um ciclo subsequente de comutação de registros e/ou com base em qualquer outra consideração adequada.
[00103] Consequentemente, na forma do fluxograma 1000, o iniciador de comutação de registros 902 do coordenador de WOCT 900 pode iniciar um ciclo de comutação de registros (etapa 802). Conforme descrito acima, o gerenciador de comutação de registros 904 do coordenador de WOCT 900 pode ser configurado para coordenar um ciclo de comutação de registros (etapa 804 da figura 8). Por exemplo, a figura 13 mostra um fluxograma 1300 que fornece um processo para coordenar um estágio de comutação de registros de acordo com uma modalidade exemplificativa. O gerenciador de comutação de registros 904 pode funcionar de acordo com o fluxograma 1300 em uma modalidade. O fluxograma 1300 é descrito como segue em relação à figura 9 e figuras 11 e 12. Outras modalidades estruturais e operacionais serão evidentes para aqueles versados na(s) técnica(s) relevante(s) com base na descrição a seguir.
[00104] O fluxograma 1300 começa com a etapa 1302. Na etapa 1302, o bloqueio exclusivo é liberado no arquivo de bloqueio de estágio inicial associado para sinalizar o início do estágio para os agentes. Em uma modalidade, para sinalizar o início de um estágio para os agentes 706a, 70b, o gerenciador de comutação de registros 904 pode liberar o bloqueio exclusivo no estágio. Por exemplo, em relação à figura 11, pode ser desejado realizar o primeiro estágio (por exemplo, o primeiro estágio 412 da figura 4). Neste caso, o gerenciador de comutação de registros 904 pode liberar o bloqueio exclusivo 1110a no arquivo de bloqueio de estágio inicial 1106a. O gerenciador de comutação de registros 904 pode liberar o bloqueio exclusivo diretamente (por exemplo, ao remover uma entrada de bloqueio exclusivo do arquivo de bloqueio de estágio inicial) ou pode instruir o iniciador de comutação de registros 902 a liberar o bloqueio.
[00105] Uma vez que o bloqueio exclusivo é liberado no arquivo de bloqueio de estágio inicial de um estágio, isto sinaliza para os agentes que as funções do estágio podem ser desempenhadas. Por exemplo, após o início do ciclo de comutação de registros (por exemplo, etapa 802 na figura 8), os agentes 708a, 708b, etc., podem verificar periodicamente os arquivos de bloqueio de estágio inicial 1106a-1106d para determinar se cada estágio começou. Quando um agente determina que um bloqueio exclusivo não está presente em um arquivo de bloqueio de estágio inicial, isto indica ao agente que o estágio começou. Neste caso, o agente pode ter as funções do estágio desempenhadas em relação aos arquivos de registro associados às suas máquinas virtuais.
[00106] Por exemplo, se o estágio atual é o primeiro estágio, conforme mostrado na figura 12, o gerenciador de comutação de registros 904 pode fazer com que o bloqueio exclusivo 1110a (da Figura 11) no arquivo de bloqueio de estágio inicial 1106a seja liberado e, assim, não mostrado na figura 12. Os agentes 706a, 706b, etc. podem determinar que o bloqueio exclusivo 1110a tenha sido liberado e, assim, o primeiro estágio pode ser realizado. Por exemplo, em relação à figura 4, pode-se realizar o primeiro estágio 412 onde novos registros podem ser inicializados conforme descrito acima. Se o estágio for o segundo estágio, os agentes podem determinar que o bloqueio exclusivo 1110b no arquivo de bloqueio de estágio inicial 1106b foi liberado e que o segundo estágio (por exemplo, o segundo estágio 414 da figura 4) pode ser realizado. Se o estágio for o terceiro estágio, os agentes podem determinar que o bloqueio exclusivo 1110c no arquivo de bloqueio de estágio inicial 1106c foi liberado e que o terceiro estágio (por exemplo, o terceiro estágio 416 da figura 4) pode ser executado. Se o estágio é o quarto estágio, os agentes podem determinar que o bloqueio exclusivo 1110d no arquivo de bloqueio de estágio inicial 1106d foi liberado e que o quarto estágio (por exemplo, o quarto estágio 418 da figura 4) pode ser executado.
[00107] A partir da etapa 1302 da Figura 13, a operação prossegue para a etapa 1304.
[00108] Na etapa 1304, é tentado um bloqueio exclusivo no arquivo de bloqueio de estágio final associado, o bloqueio exclusivo ativado para ser feito quando os agentes liberaram todos os bloqueios compartilhados no arquivo de bloqueio de estágio final associado para significar a conclusão do estágio pelos agentes. Em uma modalidade, quando cada agente confirmou que um estágio atual foi concluído para as máquinas virtuais em seu dispositivo de computação, o agente libera seu bloqueio compartilhado no arquivo de bloqueio de estágio final para este estágio (por exemplo, remove a entrada correspondente do arquivo de bloqueio). Quando todos os agentes liberaram seus bloqueios compartilhados no arquivo de bloqueio de estágio final para este estágio (por exemplo, todas as entradas de bloqueio compartilhado removidas do arquivo de bloqueio de estágio final), o gerenciador de comutação de registros 904 está habilitado para fazer um bloqueio exclusivo no arquivo de bloqueio de estágio final, indicando o estágio como concluído.
[00109] Por exemplo, com referência à figura 12, o gerenciador de comutação de registros 904 tenta fazer bloqueios no arquivo de bloqueio de estágio final 1108a. Se quaisquer bloqueios compartilhados forem mantidos no arquivo de bloqueio de estágio final 1108a, o gerenciador de comutação de registros 904 não pode fazer um bloqueio exclusivo no arquivo de bloqueio de estágio final 1108a. Conforme ilustrado na figura 12, o agente 708a concluiu o primeiro estágio e, assim, libera o bloqueio compartilhado 1112a (mostrado na Figura 11) no arquivo de bloqueio de estágio final 1108a. O agente 708b ainda não concluiu o primeiro estágio, pelo que o bloqueio compartilhado 1112b ainda está presente no arquivo de bloqueio de estágio final 1108a e o gerenciador de comutação de registros 904 ainda não pode fazer bloqueio exclusivo. Quando o bloqueio compartilhado 1112b é liberado pelo agente 708b e quaisquer outros bloqueios compartilhados no arquivo de bloqueio de estágio final 1108a são liberados por quaisquer outros agentes, o gerenciador de comutação de registros 904 está habilitado para fazer um bloqueio exclusivo no arquivo de bloqueio de estágio final 1108a, mostrado como bloqueio exclusivo 1204.
[00110] A partir da etapa 1304 da Figura 13, a operação prossegue para a etapa 1306.
[00111] Na etapa 1306, é determinado se o bloqueio exclusivo da etapa 1304 foi feito. Se o bloqueio exclusivo puder ser feito no arquivo de bloqueio de estágio final para o estágio pelo gerenciador de comutação de registros 904, os agentes sinalizaram que eles concluíram as funções do estágio e a operação prossegue para a etapa 1308. Se o bloqueio exclusivo não pode ser feito no arquivo de bloqueio de estágio final para o estágio pelo gerenciador de comutação de registros 904, um ou mais dos agentes não concluíram as funções do estágio e a operação prossegue para a etapa 1304.
[00112] Na etapa 1308, é determinado se o estágio atual é o último estágio do ciclo de comutação de registros. Se o estágio atual for o último estágio do ciclo de comutação de registros (por exemplo, o quarto estágio 418 do processo de quatro estágios 400 da Figura 4), a operação prossegue para a etapa 1310. Se o estágio atual não for o último estágio do ciclo de comutação de registros, a operação prossegue para a etapa 1312.
[00113] Na etapa 1310, o próximo estágio é iniciado. Quando o estágio atual é concluído, a operação prossegue para a etapa 1302, onde o gerenciador de comutação de registros 904 inicia o próximo estágio do ciclo de comutação de registros.
[00114] Na etapa 1312, o ciclo de comutação de registros está concluído. Quando todos os estágios do ciclo de comutação de registros foram realizados, o ciclo de comutação de registros está concluído.
[00115] Consequentemente, da maneira conforme no fluxograma 1300, o gerenciador de comutação de registros 904 do coordenador de WOCT 900 pode coordenar um ciclo de comutação de registros (etapa 804 da Figura 8). Conforme descrito acima, o gerenciador de comutação de registros 904 do coordenador de WOCT 900 pode ser configurado para coordenar um ciclo de comutação de registros de outras formas, tal como através do uso de códigos de controle e/ou outros tipos de mensagens que não códigos de controle. Por exemplo, a figura 14 mostra uma etapa 1402 para uso de códigos de controle para coordenar a comutação de registros de acordo com uma modalidade exemplificativa. A etapa 1402 é uma modalidade exemplificativa para a etapa 804 da figura 8. Na etapa 1402, os códigos de controle são transmitidos para uma pluralidade de agentes nos dispositivos de computação para implementar a pluralidade de estágios. Um coordenador de WOCT pode ser configurado para usar códigos de controle para coordenar estágios de um processo de comutação de registros de qualquer maneira.
[00116] Por exemplo, com referência à figura 7, o sistema 700 pode ser um sistema ou rede computadorizada em cluster. Uma rede computadorizada em cluster inclui um conjunto de nós/computadores conectados de forma livre ou intimamente conectados (por exemplo, dispositivos de computação 702, 704a, 704b, etc.) que trabalham em conjunto de modo que, em muitos aspectos, eles podem ser considerados como um único sistema. Os componentes de um cluster geralmente são conectados entre si através de redes de área local ("LAN") rápidas, as quais podem ser ditas como uma rede de comunicação de cluster dedicada, com cada nó executando seu próprio exemplo de um sistema operacional. Os clusters de computadores são capacitados para computação distribuída de alto desempenho. Os "clusters de alta disponibilidade" (também conhecidos como clusters de failover ou clusters HA) são um tipo de cluster de computador que inclui nós redundantes, os quais são usados para fornecer o serviço quando os componentes do sistema falham. Em um cluster de computador, uma rede de pulsação (heartbeat) pode estar presente, a qual é uma rede privada compartilhada pelos nós de cluster e usada para que os nós de cluster possam monitorar o estado uns dos outros e se comunicar entre si (por exemplo, usando códigos de controle ou "códigos de cluster"). De acordo com o mecanismo de pulsação, cada nó envia uma mensagem em um dado intervalo (uma "pulsação"), dito como um delta, para confirmar que o nó está vivo. Um nó receptor denominado sink mantém uma lista ordenada das mensagens. Uma vez que uma mensagem com uma data/hora posterior a um tempo marcado é recebida de cada nó, o sistema determina que todos os nós estão funcionando.
[00117] Consequentemente, em uma modalidade, o coordenador de WOCT 706 pode ser configurado para se comunicar com agentes 708a, 708b, etc., usando códigos de controle em uma rede de pulsação. Em outras palavras, conforme ilustrado na figura 11, a instrução de inicialização de comutação de registros 1116 pode ser transmitida pelo iniciador de comutação de registros 902 aos agentes 706a, 706b, etc., através de uma rede de pulsação de uma rede de clusters. Além disso, as respostas 1202a, 1202b, etc. podem ser transmitidas pelos agentes 706a, 706b, etc. para o iniciador de comutação de registros 902 sobre a rede de pulsação. Além disso, o iniciador de comutação de registros 902 e os agentes 706a, 706b, etc. podem se comunicar uns com os outros através da rede de pulsação usando códigos de controle e/ou mensagens para coordenar o desempenho dos estágios de um ciclo de comutação de registros, em vez de usar arquivos de bloqueio (conforme nas figuras 10-12, e texto relacionado aqui).
[00118] Por exemplo, a Figura 15 mostra um fluxograma 1500 que fornece um processo para usar códigos de controle para coordenar um estágio de comutação de registros de acordo com uma modalidade exemplificativa. Em uma modalidade, o gerenciador de comutação de registros 904 (figura 9) pode executar o fluxograma 1500 (por exemplo, para executar a etapa 1402 da figura 14). O fluxograma 1500 é descrito como segue em relação à figura 7. Outras modalidades estruturais e operacionais serão evidentes para aqueles versados na(s) técnica(s) relevante(s) com base na descrição a seguir.
[00119] O fluxograma 1500 começa com a etapa 1502. Na etapa 1502, um período de tempo para executar a comutação de registros é iniciado. Etapa 1502 (e etapa 1508) é opcional. Em uma modalidade, o gerenciador de comutação de registros 904 pode manter um período de tempo predeterminado que um período de tempo pelo qual um ciclo completo de comutação de registros leva para ser executado ou, então, o ciclo é abandonado (não ocorre nenhuma comutação de registros). O período de tempo pode ser pré-configurado para ter qualquer duração de tempo adequada para uma configuração de rede particular (por exemplo, 100 microssegundos, etc.). A operação prossegue da etapa 1502 para a etapa 1504.
[00120] Na etapa 1504, um código de controle é transmitido para a pluralidade de agentes. Na etapa 1504, um código de controle pode ser transmitido pelo gerenciador de comutação de registros 904 para os agentes 708a, 708b, etc. sobre a rede de cluster. O código de controle é reconhecido pelos agentes para significar um início de um estágio. Em uma modalidade, é usado um mesmo código de controle para iniciar todos os estágios. Em uma outra modalidade, cada estágio pode ter seu próprio código de controle configurado para iniciar o estágio nos agentes.
[00121] Por exemplo, pode ser desejado realizar o primeiro estágio (por exemplo, o primeiro estágio 412 da figura 4). Neste caso, o gerenciador de comutação de registros 904 pode transmitir um código de controle para os agentes 708a, 708b, etc. Quando o código de controle é recebido pelos agentes, isto indica aos agentes que as funções do primeiro estágio podem ser realizadas. Neste caso, os agentes podem ter as funções do primeiro estágio executadas em relação aos arquivos de registro associados às suas máquinas virtuais. De um modo similar, o gerenciador de comutação 904 pode transmitir um código de controle aos agentes 708a, 708b, etc. para sinalizar aos agentes que as funções do segundo estágio, terceiro estágio, quarto estágio, etc. podem ser realizadas.
[00122] Na etapa 1506, uma resposta ao código de controle transmitido é aguardada de cada um da pluralidade de agentes. Em uma modalidade, o gerenciador de comutação de registros 904 pode aguardar uma resposta ao código de controle transmitido a partir de cada um dos agentes 708a, 708b, etc. Os agentes 708a, 708b, etc. podem transmitir as respostas de qualquer forma (por exemplo, como códigos de controle de resposta, etc.) para o gerenciador de comutação de registros 904 através da rede de cluster. Quando as respostas de todos os agentes são recebidas pelo gerenciador de comutação de registros 904 indicando sucesso na execução do estágio nos vários dispositivos de computação, a operação prossegue para a etapa 1506. Se não for recebida uma resposta de um agente, isto pode indicar uma falha na modalidade de um estágio no dispositivo de computação correspondente ou pode indicar alguma outra falha (por exemplo, uma falha de comunicação, agente que falha, etc.). Em tal caso, a operação pode opcionalmente prosseguir para a etapa 1510, onde o ciclo de comutação de registros é abortado ou a operação pode prosseguir para a etapa 1506, com registros em dispositivos de computação de quaisquer agentes não responsivos (e/ou agentes que respondem com falhas de estágio) sendo comutados durante o ciclo de comutação de registros atual.
[00123] Na etapa 1508, é determinado se o período de tempo expirou antes que todas as respostas aos códigos de controle transmitidos sejam recebidas. Conforme indicado na etapa 1502 acima, a etapa 1508 é opcional. Em uma modalidade, durante a execução de um ciclo de comutação de registros, o gerenciador de comutação de registros 904 pode verificar periodicamente se o período de tempo iniciado na etapa 1502 expirou. Se o período de tempo expirou, a operação prossegue para a etapa 1510. Se o período de tempo não tiver expirado, a operação prossegue para a etapa 1512.
[00124] Na etapa 1510, a comutação de registros é abortada se pelo menos um dos agentes não responde com a resposta aguardada dentro de um período de tempo predeterminado. Em uma modalidade, a etapa 1510 pode ser realizada pelo gerenciador de comutação de registros 904 para terminar o ciclo de comutação de registros sem que nenhum registro seja comutado. A operação do fluxograma 1510 termina após a etapa 1510.
[00125] Na etapa 1512, é determinado se o estágio atual é o último estágio do ciclo de comutação de registros. Se o estágio atual for o último estágio do ciclo de comutação de registros (por exemplo, o quarto estágio 418 do processo de quatro estágios 400 da figura 4), a operação prossegue para a etapa 1516. Se o estágio atual não for o último estágio do ciclo de comutação de registros, a operação prossegue para a etapa 1514.
[00126] Na etapa 1514, é feita a transição para um estágio seguinte para implementação. Quando o estágio atual é concluído, a operação prossegue para a etapa 1504, onde o gerenciador de comutação de registros 904 inicia o próximo estágio do ciclo de comutação de registros.
[00127] Na etapa 1516, o ciclo de comutação de registros está concluído. Quando todos os estágios do ciclo de comutação de registros tiverem sido realizados (dentro do período de tempo opcional), o ciclo de comutação de registros está concluído.
[00128] Observe que, embora os arquivos de bloqueio e os códigos de controle sejam apresentados como técnicas exemplificativas para coordenar a comutação de registros, outras técnicas para coordenar a comutação de registros podem se tornar evidentes para aqueles versados na técnica relevante a partir dos ensinamentos contidos aqui, os quais são abrangidos como modalidades. Além disso, as modalidades podem ser combinadas de qualquer maneira. Por exemplo, em uma modalidade, um coordenador de WOCT pode implementar simultaneamente a técnica de arquivo de bloqueio (por exemplo, figuras 10-13) e a técnica de código de controle (por exemplo, figuras 14-15) simultaneamente em uma rede de computadores. Em tal modalidade, para cada estágio, a abordagem que funciona mais rapidamente (por exemplo, uma indicação de que um estágio está concluído é fornecida mais rapidamente) pode ser usada para ir para o estágio seguinte mais rapidamente. Por exemplo, em algumas situações, a abordagem de arquivo de bloqueio pode terminar um estágio (por exemplo, agentes liberando bloqueios compartilhados no arquivo de bloqueio de estágio final) mais rapidamente do que uma abordagem de código de controle é capaz de terminar o estágio (por exemplo, agentes que respondem a um controle de código recebido).
[00129] Em outras situações, a abordagem de código de controle pode ser capaz de terminar o estágio mais rápido do que a abordagem de arquivo de bloqueio é capaz de terminar um estágio.
[00130] Consequentemente, de acordo com as modalidades, a comutação de registros é aprimorada para obter a preservação da ordem de gravação através de múltiplos servidores ao introduzir a sincronização entre mecanismos de rastreamento de alterações em diferentes servidores. Para ter um impacto mínimo sobre os servidores, a sincronização é obtida sem interromper a operação da VM e sem ter que executar I/O durante a sincronização e é concluída em quantidades relativamente curtas de tempo. A sincronização é realizada de uma maneira que não é contínua, mas é executada em intervalos de tempo específicos, conforme especificado por uma frequência de replicação de produto desejada. Em uma modalidade, a taxa de sucesso de sincronização pode ser limitada apenas pela velocidade de comunicação entre o servidor e os tempos limítrofes especificados pelo produto. Consequentemente, é definida uma estrutura genérica para permitir que vários canais de comunicação entre servidores obtenham a sincronização tão rapidamente quanto possível. IV. Modalidades Exemplificativas de Replicação de um Aplicativo Fluxo múltiplo com Base em registros de Replicação
[00131] Conforme descrito acima, são fornecidas modalidades para a replicação de um aplicativo fluxo múltiplo (por exemplo, um aplicativo que gera múltiplos fluxos de dados separados, os quais podem ser armazenados separadamente). De acordo com modalidades, os dados armazenados de um aplicativo podem ser replicados e mantidos em sincronia com os dados primários armazenados ao aplicar os registros comutados gerados na seção anterior ao armazenamento de réplicas em momentos particulares. Tais modalidades podem ser implementadas de várias maneiras.
[00132] Por exemplo, a figura 16 mostra um diagrama de blocos de um sistema 1600 que inclui coordenadores de replicação para coordenar a comutação de registros e a aplicação de registros de replicação em disco virtual para armazenamento de réplicas, de acordo com modalidades exemplificativas. Conforme ilustrado na figura 16, o sistema 1600 é similar à figura 7, incluindo o dispositivo de computação 702 e o dispositivo de computação 704a (dispositivo de computação 704b e quaisquer outros dispositivos de computação não são mostrados na figura 16 para facilitar a ilustração). O dispositivo de computação 702 inclui o coordenador de WOCT 706 conforme na figura 7 e o dispositivo de computação 704a está configurado conforme mostrado na figura 7. Em uma modalidade, o coordenador de WOCT 706 pode coordenar a comutação de registros no dispositivo de computação 704a ao se comunicar com o agente 708a e a comutação de registros em outros dispositivos de computação ao se comunicar com os agentes correspondentes, conforme descrito aqui em outra parte. Além disso, na figura 16, o sistema 1600 inclui um dispositivo de computação 1602, um dispositivo de computação 1604a (e dispositivos de computação adicionais opcionais), um armazenamento de réplicas 1614a e um armazenamento de réplicas 1614b. Além disso, o dispositivo de computação 702 inclui um primeiro coordenador de replicação 1606, o dispositivo de computação 1604a inclui um agente de processamento de arquivo de registros 1612a, o armazenamento de réplicas 1614a inclui pelo menos um disco virtual 1616a e o armazenamento de réplicas 1614b inclui pelo menos um disco virtual 1616b.
[00133] Na figura 16, o dispositivo de computação 702, o dispositivo de computação 704a, o armazenamento 710a e o armazenamento 710b são considerados componentes do lado primário ou local primário, conforme indicado pelo lado primário 1624 e o dispositivo de computação 1602, o dispositivo de computação 1604a, o armazenamento de réplicas 1614a e o armazenamento de réplicas 1614b são considerados como lado secundário, local secundário ou componentes no lado da réplica, conforme indicado pelo lado de réplica 1626. Isto é porque o armazenamento de réplicas 1614a é o armazenamento de réplicas para o armazenamento 710a, com o(s) disco(s) virtual 1616a sendo uma réplica de disco(s) virtual(is) 106a e o armazenamento de réplicas 1614b é o armazenamento de réplicas para o armazenamento 710b, com o(s) disco(s) virtual(is) 1616b sendo uma réplica do(s) disco(s) virtual(is) 106b. Cada exemplo de armazenamento associado a uma máquina virtual em um dispositivo de computação no lado primário 1624 tem um armazenamento de réplicas de contraparte no lado da réplica 1626. Além disso, o dispositivo de computação 1604a (por exemplo, um servidor, etc.) é a contraparte no lado da réplica para o dispositivo de computação 704a.
[00134] Em uma modalidade, o primeiro e o segundo coordenadores de replicação 1606 e 1608 trabalham juntos para replicar dados no lado primário 1624 para o lado de réplica 1616 usando os registros de replicação gerados de acordo com as técnicas descritas em outra parte aqui. Consequentemente, vários exemplos de armazenamento (por exemplo, discos virtuais) que armazenam dados relacionados podem ser replicados para o lado de réplica 1616 simultaneamente, o que auxilia na manutenção da consistência da ordem de gravação.
[00135] Os primeiro e segundo coordenadores de replicação 1606 e 1608 podem operar de várias maneiras para desempenhar suas funções. Por exemplo, a figura 17 mostra um fluxograma 1700 que fornece um processo para coordenar a comutação de registros e a aplicação de registros de replicação em disco virtual para armazenamento de réplicas de acordo com uma modalidade exemplificativa. Em modalidades, o primeiro coordenador de replicação 1606 pode operar de acordo com o fluxograma 1700, o segundo coordenador de replicação 1608 pode operar de acordo com o fluxograma 1700 ou os coordenadores de replicação 1606 e 1608 podem cooperar para executar o fluxograma 1700. O fluxograma 1700 é descrito como segue em relação à Figura 16. Modalidades estruturais e operacionais adicionais serão evidentes para aqueles versados na(s) técnica(s) relevante(s) com base na descrição a seguir.
[00136] O fluxograma 1700 começa com a etapa 1702. Na etapa 1702, é transmitida uma instrução para executar um ciclo de comutação de registros de uma pluralidade de registros associados a uma primeira pluralidade de discos virtuais em uma pluralidade de dispositivos de computação. Por exemplo, conforme mostrado na figura 16, o coordenador de replicação 1608 no dispositivo de computação 1602 (lado de réplica 1626) pode gerar uma instrução de comutação de registros 1628 que é recebida através de uma rede pelo coordenador de replicação 1606 no dispositivo de computação 702 (lado primário 1624). A instrução de comutação de registros 1628 é uma instrução para executar a comutação de registros nos vários dispositivos de computação que contêm armazenamento associado ao rastreamento de registros. A instrução de comutação de registros 1628 pode ser transmitida de qualquer maneira, tal como um código de controle (por exemplo, através de uma rede de clusters), uma solicitação de HTTP (por exemplo, através de um FAN, WAN, etc.) ou de outra forma.
[00137] Conforme ilustrado na figura 16, em resposta ao recebimento da instrução de comutação de registros 1628, o coordenador de replicação 1606 pode gerar uma segunda instrução de comutação de registros 1618 que é recebida pelo coordenador de WOCT 706. A instrução de comutação de registros 1618 instrui o coordenador de WOCT 706 a executar um ciclo de comutação de registros. Em resposta ao recebimento da instrução de comutação de registros 1618, o coordenador de WOCT 706 pode fazer com que um ciclo de comutação de registros seja realizado de qualquer maneira descrita aqui, tal como de acordo com o fluxograma 800 (figura 8), etc.
[00138] Observe que, em outra modalidade, o coordenador de replicação 1606 pode gerar a instrução de comutação de registros 1618 sem ter recebido a instrução de comutação de registros 1628 a partir do coordenador de replicação 1608. Em modalidades, o coordenador de replicação 1606 e/ou o coordenador de replicação 1608 podem causar um ciclo de comutação de registros (por exemplo, ao gerar uma instrução de comutação de registros) a qualquer momento, o qual pode ser periodicamente, em momentos aleatórios, em momentos predeterminados (por exemplo, de acordo com uma programação), quando as filas de solicitação de VHD 322 e/ou filas de solicitação de registro 342 (Figura 3) estão a ficando cheias, com base em uma quantidade de tráfego de armazenamento (por exemplo, efetuar a comutação de registros mais frequentemente quando os eventos de armazenamento de dados ocorrem com mais frequência) e/ou de qualquer outra forma.
[00139] Na etapa 1704, uma pluralidade de registros é recebida a partir dos dispositivos de computação em resposta à execução do ciclo de comutação de registros. Por exemplo, conforme mostrado na figura 16, o coordenador de replicação 1608 no dispositivo de computação 1602 (lado de réplica 1626) recebe registro(s) de replicação 1622a a partir do dispositivo de computação 704a, registro(s) de replicação 1622b a partir do dispositivo de computação 704b (Figura 7, não mostrado na Figura 16) e podem receber registros de replicação adicionais a partir de outros dispositivos de computação no lado primário 1624. Os registros de replicação são os registros que foram comutados em virtude da execução da comutação de registros, conforme descrito em outro local, em resposta à etapa 1702. Consequentemente, os registros de replicação referem-se a dados armazenados no armazenamento primário em vários dispositivos de computação e discos virtuais e que podem requerer armazenamento amplo mantido dependente da ordem de gravação.
[00140] Os registros de replicação podem ser recebidos a partir de agentes nos dispositivos de computação (por exemplo, agente 708a, etc.), a partir de módulos de processamento de solicitações de registro 344 nos dispositivos de computação e/ou outra fonte nos dispositivos de computação. Em tal modalidade, os registros de replicação são recebidos direta e individualmente a partir dos dispositivos de computação onde os registros foram gerados e comutados, através de múltiplos canais, em vez de coleta dos registros de replicação em um ponto. Isto pode permitir um fornecimento mais rápido dos registros de replicação para o coordenador de replicação 1608 (lado de réplica 1626), em vez de coletar os registros de replicação no coordenador de replicação 1606 (lado primário 1624) e depois passá-los ao coordenador de replicação 1608, embora isto possa ser feito em uma modalidade alternativa. O recebimento dos registros a partir dos dispositivos de computação individuais permite maior escalabilidade para o sistema 1600.
[00141] Com referência à figura 17, na etapa 1706, cada registro da pluralidade de registros recebidos é marcado para indicar pelo menos o ciclo de comutação de registros. Em uma modalidade, o coordenador de replicação 1608 pode incluir um marcador de arquivo de registros 1610. O marcador de arquivo de registros 1610 está configurado para marcar cada registro de replicação recebido pelo menos com a informação que identifica o ciclo de comutação de registros particular (por exemplo, com um identificador/código de ciclo). Desta forma, os registros de replicação de um ciclo particular podem ser aplicados ao armazenamento de réplicas ao mesmo tempo para permitir que a ordem de gravação seja mantida. O marcador de arquivo de registros 1610 pode marcar os registros de replicação de qualquer maneira tal como, por exemplo, ao fornecer uma indicação do ciclo de comutação de registros em um cabeçalho do arquivo de registros, no corpo do arquivo de registros, como metadados associados ao arquivo de registros, em um nome de arquivo do arquivo de registros e/ou de qualquer outra maneira.
[00142] Observe que, em outra modalidade, cada agente 708a, etc. pode incluir um marcador de arquivo de registros 1610 que marca os registros de replicação 1622a, 1622b, etc. antes que eles sejam transmitidos a partir do lado primário 1624. Em ainda outra modalidade, cada dispositivo de computação 704a, etc. pode incluir um marcador de arquivo de registros 1610 que é separado do agente 708a correspondente, etc. no dispositivo de computação.
[00143] Na etapa 1708, a pluralidade de registros marcados é fornecida para permitir um ponto de armazenamento consistente com a ordem de gravação em uma segunda pluralidade de discos virtuais. Em uma modalidade, conforme mostrado na figura 16, o coordenador de replicação 1608 pode transmitir registros de replicação marcados 1624, os quais incluem versões dos registros de replicação 1622a, 1622b, etc. que foram marcados com identificadores de ciclo de comutação de registros. Em uma modalidade, o agente de processamento de arquivos de registros 1612a no dispositivo de computação 1604a e outros agentes de processamento de arquivos de registros em outros dispositivos de computação podem receber os registros de replicação marcados 1624. Os registros de replicação marcados 1624 podem ser transmitidos aos agentes de processamento de arquivos de registros de qualquer forma, tal como ser transmitidos através de uma rede de cluster, através de uma LAN, WAN, etc. ou de outra forma.
[00144] Em uma modalidade, cada dispositivo de computação recebe um ou mais registros de replicação marcados de registros de replicação marcados 1624 que são aplicáveis ao armazenamento de réplicas associado a ele. Por exemplo, no exemplo da figura 16, o dispositivo de computação 1604a pode receber versões marcadas dos registros de replicação 112a e 112b comutados a partir do dispositivo de computação 704a, caso no qual o(s) disco(s) virtual(is) 1616a do armazenamento de réplicas 1614a corresponde(m) ao(s) disco(s) virtual(is) 106a de armazenamento 710a e disco(s) virtual(is) 1616b do armazenamento de réplicas 1614b que correspondem ao(s) disco(s) virtual(is) 106b do armazenamento 710b.
[00145] Em uma modalidade, os agentes de processamento de arquivos de registros 1612a, etc. nos respectivos dispositivos de computação aplicam as solicitações de acesso ao armazenamento incluídas nos registros de replicação marcados recebidos aos discos virtuais correspondentes no armazenamento virtual. O coordenador de replicação 1608 coordena a aplicação dos registros de replicação, de modo que os registros de replicação que são marcados com o mesmo ciclo sejam aplicados por agentes de processamento de arquivos de registros 1612a, etc. em paralelo. O coordenador de replicação 1608 pode requerer que os agentes de processamento de arquivos de registros 1612a, etc. transmitam uma confirmação/resposta ao coordenador de replicação 1608, de modo que cada um de seus registros de replicação seja aplicado com êxito ao seu armazenamento de réplicas antes que o coordenador de replicação 1608 permita que os registros de replicação marcados de um ciclo de comutação de registros seguinte no lado primário 1624 comece a ser aplicado ao armazenamento de réplicas no lado de réplica 1626 pelos agentes de processamento de arquivos de registros.
[00146] Deste modo, os dados nos discos virtuais são atualizados e sincronizados com os discos virtuais correspondentes no armazenamento primário em um ponto no tempo (por exemplo, o momento no qual a comutação de registros é iniciada para um ciclo). Por exemplo, uma versão marcada de um registro de replicação 112a comutado a partir do armazenamento 710a pode incluir solicitações de acesso ao armazenamento que foram aplicadas a (um) disco(s) virtual(s) 106a. O agente de processamento de arquivos de registros 1612a está configurado para aplicar a solicitação de acesso ao armazenamento (por exemplo, gravações de dados) ao disco que corresponde ao(s) disco(s) vir-tual(is) 1616a no armazenamento de réplicas 1614a. Deste modo, o disco virtual de réplicas do(s) disco(s) virtual(is) 1616a é avançado no tempo para sincronização com o disco virtual primário que corresponde ao(s) disco(s) virtual(is) 106a (assumindo que não tenham sido efetuadas outras gravações no disco virtual primário). Como tal, um ponto consistente com a ordem de gravação multi-VM é criado no armazenamento de réplicas 1614a, 1614b, etc. no lado de réplica 1626. A marcação permite a coleta/agrupamento, no lado de réplica 1626, de todos os registros criados no mesmo ciclo de comutação de registros no lado primário 1624. Agentes de processamento de arquivos de registros em todos os dispositivos de computação no lado de réplica 1626 executam operações similares em seu armazenamento de réplicas para manter seus respectivos discos virtuais em sincronização com os discos virtuais correspondentes no armazenamento primário.
[00147] Consequentemente, as modalidades permitem um ponto- de-tempo consistente para um aplicativo distribuído através de múltiplos hospedeiros para orquestrar a replicação dos fluxos de dados a partir de hospedeiros de locais primários para hospedeiros de locais secundários (réplica). O orquestrador (por exemplo, o coordenador de replicação 1606) para cada aplicativo fluxo múltiplo nas coordenadas do local primário com sua contraparte (por exemplo, o coordenador de replicação 1608) no local secundário para iniciar e conduzir ciclos de replicação. Para conseguir RPO (objetivo de ponto de recuperação) próximo da sincronização, o mecanismo de orquestração impõe relativamente pouca sobrecarga e permite paralelismo elevado de canais de replicação ao descarregar a transferência de dados real entre os hospedeiros primário e secundário de cada fluxo de dados. Em um aplicativo, as técnicas de comutação de registros da seção anterior podem ser alavancadas para produzir um ponto-no-tempo consistentes com a ordem de gravação entre os fluxos de dados. As alterações no armazenamento são replicadas de acordo com modalidades da seção atual para o armazenamento de réplicas de destino e criam uma cópia de ponto- no-tempo para fins de "failover"/teste, "failover", etc. Para um grupo de dispositivos de computação, é desejável identificar pontos de recuperação no tempo através dos fluxos de replicação de todos os dispositivos de computação que pertencem ao mesmo ciclo de replicação. Um orquestrador (coordenador de replicação) no local secundário mantém o rastreamento das alterações recebidas em todos os dispositivos de computação de um grupo no lado primário durante um ciclo de replicação, determina se um ponto de recuperação pode ser produzido e mantém o rastreamento de todos estes pontos de recuperação adequados para "failover" de um grupo de dispositivos de computação correspondente no local secundário. O orquestrador também é resiliente a um ou mais dispositivos de computação que falharam anteriormente ou falharam completamente, e constitui uma estrutura para replicação de todos os dispositivos de computação em um grupo a ser sincronizado.
[00148] Observe-se que, nas modalidades, os coordenadores de replicação do lado primário e de réplica podem ser configurados para lidar com falhas em cada estágio, tal como uma falha durante a geração de registros consistentes com a ordem de gravação durante a comutação de registros, uma falha na transmissão de um subconjunto/todos os registros no lado da réplica, uma falha em aplicar registros sobre o lado da réplica, etc. Além disso, quando um subconjunto de dispositivos de computação no lado primário não participam de um ciclo de replicação/comutação de registros, os coordenadores de replicação podem ser configurados para dar suporte à transmissão dos registros de/provenientes de outros dispositivos de computação no lado primário (que não falham) enquanto o subconjunto que falhou se recupera automaticamente (ou é recuperado manualmente). Estes recursos, quando presentes, permitem que o esquema de replicação fluxo múltiplo seja tolerante a falhas, tendo a capacidade de se recuperar (o que pode ser automático) destas falhas que são comuns e/ou esperadas em um sistema distribuído.
V. Modalidades Exemplificativas do Dispositivo Móvel e Estacionário
[00149] A máquina virtual 104, SRPM 108, RMM 110, módulo de controle de gravação em armazenamento 208, interface de VHD 304, analisador de VHD 306, interface de VHD 308, gerenciador de IOCTL 312, módulo de processamento de solicitação de VHD 324, módulo de processamento de solicitação de registro 344, VMMS 340, coordenador de WOCT 706, agente 708a, agente 708b, coordenador de WOCT 900, iniciador de comutação de registros 902, gerenciador de comutação de registros 904, coordenador de replicação 1606, coordenador 1608 de replicação, marcador de arquivo de registros 1610, agente de processamento de arquivo de registros 1612a, processo 600, fluxograma 700, fluxograma 800, fluxograma 1000, fluxograma 1300, etapa 1402, fluxograma 1500 e fluxograma 1700 podem ser implementados em hardware ou hardware combinado com software e/ou firmware. Por exemplo, a máquina virtual 104, SRPM 108, RMM 110, módulo de controle de gravação em armazenamento 208, interface de VHD 304, analisador de VHD 306, interface de VHD 308, gerenciador de IOCTL 312, módulo de processamento de solicitação de VHD 324, coordenador de WOCT 706, agente 708a, agente 708b, coordenador de WOCT 900, iniciador de comutação de registros 902, gerenciador de comutação de registros 904, coordenador de replicação 1606, coordenador de replicação 1608, marcador de arquivo de registros 1610, agente de processamento de arquivo de registros 1612a, processo 600, fluxograma 700, fluxograma 800, fluxograma 1000, fluxograma 1300, etapa 1402, fluxograma 1500 e/ou fluxograma 1700 podem ser implementados como código de programa de computador/instruções configuradas para serem executadas em um ou mais processadores e armazenadas em um meio de armazenamento legível por computador. Alternativamente, a máquina virtual 104, SRPM 108, RMM 110, módulo de controle de gravação em armazenamento 208, interface de VHD 304, analisador de VHD 306, interface de VHD 308, gerenciador de IOCTL 312, módulo de processamento de solicitação de VHD 324, coordenador de WOCT 706, agente 708a, agente 708b, coordenador de WOCT 900, iniciador de comutação de registros 902, gerenciador de comutação de registros 904, coordenador de replicação 1606, coordenador de replicação 1608, marcador de arquivo de registros 1610, agente de processamento de arquivo de registros 1612a, processo 600, fluxograma 700, fluxograma 800, fluxograma 1000, fluxograma 1300, etapa 1402, fluxograma 1500 e/ou fluxograma 1700 podem ser implementados como lógica de hardware/circuitos elétricos.
[00150] Por exemplo, em uma modalidade, um ou mais, em qualquer combinação, da máquina virtual 104, SRPM 108, RMM 110, módulo de controle de gravação em armazenamento 208, interface de VHD 304, analisador de VHD 306, interface de VHD 308, gerenciador de IOCTL 312, módulo de processamento de solicitação de VHD 324, coordenador de WOCT 706, agente 708a, agente 708b, coordenador de WOCT 900, iniciador de comutação de registros 902, gerenciador de comutação de registros 904, coordenador de replicação 1606, coordenador de replicação 1608, marcador de arquivo de registros 1610, agente de processamento de arquivo de registros 1612a, processo 600, fluxograma 700, fluxograma 800, fluxograma 1000, fluxograma 1300, etapa 1402, fluxograma 1500 e/ou fluxograma 1700 podem ser implementados juntos em um SoC. O SoC pode incluir um chip de circuito integrado que inclui um ou mais de um processador (por exemplo, uma unidade de processamento central (CPU), microcontrolador, microprocessador, processador de sinal digital (Digital Signal Processor - DSP), etc.), memória, uma ou mais interfaces de comunicação e/ou outros circuitos, e pode opcionalmente executar os códigos de programa recebidos e/ou incluir firmware incorporado para executar funções.
[00151] A figura 18 ilustra uma implementação exemplificativa de um dispositivo de computação 1800, no qual modalidades podem ser implementadas. Por exemplo, o sistema 100, sistema 200, dispositivo de computação 702, dispositivo de computação 704a, dispositivo de computação 704b, dispositivo de computação 1602 e/ou dispositivo de computação 1604a podem ser implementados em um ou mais dispositivos de computação similares ao dispositivo de computação 1800 em modalidades de um computador móvel ou estacionário, incluindo um ou mais recursos do dispositivo de computação 1800 e/ou recursos alternativos. A descrição do dispositivo de computação 1800 fornecida aqui é fornecida para fins ilustrativos e não pretende ser limitativa. As modalidades podem ser implementadas em outros tipos de sistemas de computadores, conforme será conhecido por aqueles versados na(s) técnica(s) relevante(s).
[00152] Conforme ilustrado na figura 18, o dispositivo de computação 1800 inclui um ou mais processadores, ditos como circuito de processador 1802, uma memória de sistema 1804 e um barramento 1806 que acopla vários componentes de sistema, incluindo a memória de sistema 1804, ao circuito de processador 1802. O circuito de processador 1802 é um circuito elétrico e/ou um circuito óptico implementado em um ou mais elementos do dispositivo de circuito elétrico de hardware físico e/ou dispositivos de circuito integrado (chips ou matrizes de material semicondutor) como uma unidade de processamento central (CPU), um microcontrolador, um microprocessador e/ou outro circuito de processador de hardware físico. O circuito de processador 1802 pode executar o código de programa armazenado em um meio legível por computador, tal como o código de programa do sistema operacional 1830, programas de aplicativos 1832, outros programas 1834, etc. O barramento 1806 representa um ou mais dentre vários tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta de gráficos acelerada e um processador ou barramento local que usa qualquer uma de uma variedade de arquiteturas de barramento. A memória de sistema 1804 inclui memória de leitura única (ROM) 1808 e memória de acesso aleatório (RAM) 1810. Um sistema de entrada/saída básico 1812 (BIOS) é armazenado na ROM 1808.
[00153] O dispositivo de computação 1800 também tem uma ou mais das seguintes unidades: uma unidade de disco rígido 1814 para ler e gravar em um disco rígido, uma unidade de disco magnético 1816 para ler ou gravar em um disco magnético removível 1818 e uma unidade de disco óptico 1820 para ler ou gravar em um disco óptico removível 1822, tal como um CD ROM, DVD ROM ou outro meio óptico. A unidade de disco rígido 1814, a unidade de disco magnético 1816 e a unidade de disco óptico 1820 são conectadas ao barramento 1806 por uma interface de unidade de disco rígido 1824, uma interface de unidade de disco magnético 1826 e uma interface de unidade óptica 1828, respectivamente. As unidades e seus meios de dados legíveis por computador permitem armazenamento não volátil de instruções legíveis por computador, estruturas de dados, módulos de programas e outros dados para o computador. Embora sejam descritos um disco rígido, um disco magnético removível e um disco óptico removível, outros tipos de meios de armazenamento legíveis por computador podem ser usados para armazenar dados, tais como cartões de memória flash, discos de vídeo digitais, RAMs, ROMs e outros meios de armazenamento em hardware.
[00154] Uma série de módulos do programa podem ser armazenados no disco rígido, disco magnético, disco ótico, ROM ou RAM. Estes programas incluem o sistema operacional 1830, um ou mais programas de aplicativos 1832, outros programas 1834 e dados de programa 1836. Os programas de aplicativos 1832 ou outros programas 1834 podem incluir, por exemplo, lógica de programa de computador (por exemplo, código de programa de computador ou instruções) para implementar a máquina virtual 104, SRPM 108, RMM 110, módulo de controle de gravação em armazenamento 208, interface de VHD 304, analisador de VHD 306, interface de VHD 308, gerenciador de IOCTL 312, módulo de processamento de solicitação de VHD 324, módulo de processamento de solicitação de registros 344, VMMS 340, coordenador de WOCT 706, agente 708a, agente 708b, coordenador de WOCT 900, iniciador de comutação de registros 902, gerenciador de comutação de registros 904, coordenador de replicação 1606, coordenador de replicação 1608, marcador de arquivo de registros 1610, agente de processamento de arquivo de registros 1612a, processo 400, diagrama de estado 500, fluxograma 700, fluxograma 800, fluxograma 1000, fluxograma 1300, etapa 1402, fluxograma 1500 e/ou fluxograma 1700 (incluindo qualquer etapa adequada dos processos 400, 600, máquina de estados 500, fluxogramas 700, 800, 1000, 1300, 1500, 1700 ) e/ou outras modalidades descritas aqui.
[00155] Um usuário pode introduzir comandos e informação no dispositivo de computação 1800 através de dispositivos de entrada, tais como o teclado 1838 e o mouse 1840. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, joystick, controle, antena parabólica, tela sensível ao de toque e/ou touch pad, um sistema de reconhecimento de voz para receber entrada de voz, um sistema de reconhecimento de gestos para receber entrada gestual ou algo parecido. Estes e outros dispositivos de entrada são frequentemente conectados ao circuito de processador 1802 através de uma interface de porta serial 1842 que está acoplada ao barramento 1806, mas podem ser conectados através de outras interfaces, tais como uma porta paralela, uma porta de jogo ou um barramento serial universal (USB).
[00156] Uma tela de exibição 1844 também está conectada ao barramento 1806 através de uma interface, tal como um adaptador de vídeo 1846. A tela de exibição 1844 pode ser externa ou incorporada no dispositivo de computação 1800. A tela de exibição 1844 pode exibir informação, bem como ser uma interface de usuário para receber comandos de usuário e/ou outra informação (por exemplo, através de toque, gestos de dedo, teclado virtual, etc.). Além da tela de exibição 1844, o dispositivo de computação 1800 pode incluir outros dispositivos de saída periféricos (não ilustrados), tais como autofalantes e impressoras.
[00157] O dispositivo de computação 1800 está conectado a uma rede 1848 (por exemplo, a Internet) através de um adaptador ou interface de rede 1850, um modem 1852 ou outros meios para estabelecer comunicações através da rede. O modem 1852, o qual pode ser interno ou externo, pode ser conectado ao barramento 1806 através da interface de porta serial 1842, conforme mostrado na figura 18, ou pode ser conectado ao barramento 1806 usando outro tipo de interface, incluindo uma interface paralela.
[00158] Conforme usado aqui, os termos "meio de programa de computador", "meio legível por computador" e "meio de armazenamento legível por computador" são usados para referir-se, de modo geral, a meios físicos de hardware, tais como o disco rígido associado à unidade de disco rígido 1814, disco magnético removível 1818, disco óptico removível 1822, outros meios físicos de hardware, tais como RAMs, ROMs, cartões de memória flash, discos de vídeo digital, discos zip, MEMs, dispositivos de armazenamento com base em nanotecnologia e outros tipos de meios físicos/tangíveis de armazenamento em hardware. Tais meios de armazenamento legíveis por computador são distinguidos e não se sobrepõem aos meios de comunicação (não incluem meios de comunicação). Os meios de comunicação incorporam, tipicamente, 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 portadora. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais das suas características definidas ou alteradas de modo a codificar a informação no sinal. A título de exemplo, e não de limitação, os meios de comunicação incluem meios sem fios, tais como meios acústicos, RF, infravermelho e outros meios sem fios, bem como meios com fios. As modalidades também são dirigidas a tais meios de comunicação.
[00159] Conforme citado acima, programas e módulos de computador (incluindo programas de aplicativos 1832 e outros programas 1834) podem ser armazenados em disco rígido, disco magnético, disco óptico, ROM, RAM ou outro meio de armazenamento em hardware. Tais programas de computador também podem ser recebidos através da interface de rede 1850, interface de porta serial 1842 ou qualquer outro tipo de interface. Tais programas de computador, quando executados ou carregados por um aplicativo, permitem que o dispositivo de computação 1800 implemente recursos das modalidades discutidas aqui. Deste modo, tais programas de computador representam controladores do dispositivo de computação 1800.
[00160] As modalidades também são dirigidas a produtos de programas de computador que compreendem o código de computador ou instruções armazenadas em qualquer meio legível por computador. Estes produtos de programas de computador incluem unidades de disco rígido, unidades de disco óptico, pacotes de dispositivos de memória, cartões de memória portáteis, cartões de memória e outros tipos de hardware de armazenamento físico.
VI. Modalidades Exemplificativas
[00161] Em uma modalidade, é fornecido um método em um coordenador de rastreamento consistente de ordem de gravação (WOCT) que compreende: iniciar um ciclo de uma comutação de registros de uma pluralidade de registros associados a uma pluralidade de discos virtuais em uma pluralidade de dispositivos de computação, os discos virtuais armazenando dados que são dependentes da ordem de gravação entre os discos virtuais, cada dispositivo de computação da pluralidade de dispositivos de computação incluindo pelo menos um de um disco virtual da pluralidade de discos virtuais que recebe solicitações de acesso ao armazenamento a partir de um aplicativo, solicitações que incluem solicitações de gravação e um registro da pluralidade de registros correspondentes ao disco virtual que recebe entradas na fila de registros correspondentes às solicitações de acesso ao armazenamento; e coordenar o ciclo de comutação de registros da pluralidade de registros na pluralidade de dispositivos de computação através dos discos virtuais para manter a ordenação de solicitação para solicitações dependentes da ordem de gravação.
[00162] Em uma modalidade, a coordenação compreende: execução de uma pluralidade de estágios para provocar a comutação da pluralidade de registros na pluralidade de dispositivos de computação.
[00163] Em uma modalidade, a inicialização compreende: fazer um bloqueio exclusivo em cada uma de uma pluralidade de arquivos de bloqueio de estágio inicial, cada arquivo de bloqueio de estágio inicial associado a um estágio correspondente da pluralidade de estágios; e transmitir uma instrução de inicialização de comutação de registros para uma pluralidade de agentes nos dispositivos de computação, cada dispositivo de computação compreendendo um agente correspondente da pluralidade de agentes.
[00164] Em uma modalidade, a inicialização compreende ainda: receber uma resposta de cada um dos agentes, cada resposta recebida de um agente da pluralidade de agentes indicando que o agente fez um bloqueio compartilhado em cada um de uma pluralidade de arquivos de bloqueio de estágio final, cada arquivo de bloqueio de estágio final associado a um estágio correspondente da pluralidade de estágios.
[00165] Em uma modalidade, cada estágio da pluralidade de estágios é executada ao realizar: liberação do bloqueio exclusivo no arquivo de bloqueio de estágio inicial associado para sinalizar o início do estágio para os agentes, tentar fazer um bloqueio exclusivo sobre o arquivo de bloqueio de estágio final associado, fazer o bloqueio exclusivo no arquivo de bloqueio de estágio final associado quando ativado pelos agentes que liberaram todos os bloqueios compartilhados no arquivo de bloqueio de estágio final associado para significar a conclusão do estágio pelos agentes e fazer a transição para execução de um próximo estágio até um estágio final da pluralidade de estágios ser concluído.
[00166] Em uma modalidade, a execução de uma pluralidade de etapas compreende: execução de um primeiro estágio durante o qual um novo registro é inicializado em cada dispositivo de computação da pluralidade de dispositivos de computação; execução de uma segundo estágio durante o qual as entradas na fila de registros recebidos são impedidas de serem recebidas pelos registros na pluralidade de dispositivos de computação; execução de um terceiro estágio durante o qual o novo registro é configurado para ser usado para receber as entradas na fila de registros em cada dispositivo de computação da pluralidade de dispositivos de computação e as entradas na fila de registros recebidos são liberadas para serem recebidas pelos registros na pluralidade de dispositivos de computação; e execução de um quarto estágio durante o qual a comutação de registros é finalizada.
[00167] Em uma modalidade, a coordenação compreende: transmitir códigos de controle e/ou mensagens para uma pluralidade de agentes nos dispositivos de computação para implementar a pluralidade de estágios, cada dispositivo de computação incluindo um agente correspondente da pluralidade de agentes.
[00168] Em uma modalidade, cada estágio da pluralidade de estágios é executada ao realizar: transmissão de um código de controle para a pluralidade de agentes; aguardar uma resposta ao código de controle transmitido de cada um da pluralidade de agentes; abortar a comutação de registros se pelo menos um dos agentes não responde com a resposta esperada dentro de um período de tempo predeterminado para a pluralidade de estágios a ser concluída; e transição para a execução de um estágio seguinte se todos os agentes respondem dentro do período de tempo predeterminado, a dita transição incluindo conclusão da comutação de registros quando um estágio final da pluralidade de estágios é concluído.
[00169] Em outra modalidade, um coordenador de rastreamento consistente de ordem de gravação (WOCT) compreende: um iniciador de comutação de registros configurado para se comunicar com uma pluralidade de agentes em uma pluralidade de dispositivos de computação para iniciar ciclos de uma comutação de registros de uma pluralidade de registros associados a uma pluralidade de discos virtuais na pluralidade de dispositivos de computação, um ciclo de comutação de registros incluindo uma comutação de cada registro atual para um novo registro correspondente, cada dispositivo de computação da pluralidade de dispositivos de computação incluindo pelo menos um de um disco virtual da pluralidade de discos virtuais que recebe solicitações de acesso ao armazenamento a partir de um aplicativo, as solicitações de acesso ao armazenamento incluindo solicitações de gravação e um registro da pluralidade de registros correspondentes ao disco virtual que recebe entradas na fila de registros correspondentes às solicitações de acesso ao armazenamento; e um gerenciador de comutação de registros configurado para coordenar os ciclos de comutação de registros da pluralidade de registros na pluralidade de dispositivos de computação para manter a ordenação de solicitação para solicitações dependentes da ordem de gravação entre discos virtuais.
[00170] Em uma modalidade, o gerenciador de comutação de registros está configurado para implementar uma pluralidade de estágios para provocar um ciclo de comutação da pluralidade de registros na pluralidade de dispositivos de computação.
[00171] Em uma modalidade, para um ciclo de comutação de registros, o iniciador de comutação de registros está configurado para: fazer um bloqueio exclusivo em cada um de uma pluralidade de arquivos de bloqueio de estágio inicial, cada arquivo de bloqueio de estágio inicial associado a um estágio correspondente da pluralidade de estágios; e transmitir uma instrução de inicialização de comutação de registros para a pluralidade de agentes nos dispositivos de computação para iniciar a comutação de registros.
[00172] Em uma modalidade, o iniciador de comutação de registros está configurado para receber uma resposta de cada um dos agentes, cada resposta recebida de um agente da pluralidade de agentes indicando que o agente fez um bloqueio compartilhado em cada um de uma pluralidade de arquivos de bloqueio de estágio final, cada arquivo de bloqueio de estágio final associado a um estágio correspondente da pluralidade de estágios.
[00173] Em uma modalidade, para executar cada estágio da pluralidade de estágios, o gerenciador de comutação de registros está configurado para: liberar o bloqueio exclusivo feito pelo iniciador de comutação de registros no arquivo de bloqueio de estágio inicial associado para sinalizar o início do estágio para os agentes que tentam fazer um bloqueio exclusivo no arquivo de bloqueio de estágio final associado, fazer o bloqueio exclusivo no arquivo de bloqueio de estágio final associado quando ativado pelos agentes que liberaram todos os bloqueios compartilhados no arquivo de bloqueio de estágio final associado para significar a conclusão do bloqueio de terminar estágio associado pelos agentes e transição para executar um estágio seguinte até que um estágio final da pluralidade de estágios seja concluído.
[00174] Em uma modalidade, para implementar cada estágio da pluralidade de estágios, o gerenciador de comutação de registros está configurado para: transmitir um código de controle para a pluralidade de agentes; aguardar uma resposta ao código de controle transmitido a partir de cada um da pluralidade de agentes; abortar a comutação de registros se pelo menos um dos agentes não responde com a resposta aguardada dentro de um período de tempo predeterminado para a pluralidade de estágios a ser concluída; e transição para execução de um próximo estágio se todos os agentes responderem dentro do período de tempo predeterminado, a comutação de registros sendo concluída quando um estágio final da pluralidade de estágios é concluído.
[00175] Em uma outra modalidade, é fornecido um método em um coordenador de replicação que compreende: transmissão de uma instrução para executar um ciclo de comutação de registros de uma pluralidade de registros associados a uma primeira pluralidade de discos virtuais em uma pluralidade de dispositivos de computação em uma rede primária, a primeira pluralidade de discos virtuais armazenando dados de um aplicativo distribuído, cada registro da pluralidade de registros associado a um disco virtual da primeira pluralidade de discos virtuais, cada disco virtual da primeira pluralidade de discos virtuais configurado para receber solicitações de acesso ao armazenamento do aplicativo distribuído e o registro correspondente configurado para receber entradas na fila de registros correspondentes às solicitações de acesso ao armazenamento; receber uma pluralidade de registros dos dispositivos de computação em resposta ao desempenho do ciclo de comutação de registros; marcar cada registro da pluralidade de registros recebidos para indicar pelo menos o ciclo de comutação de registros; fornecer a pluralidade marcada de registros para permitir um ponto de armazenamento consistente com a ordem de gravação em uma segunda pluralidade de discos virtuais em um lado da réplica, o ponto de armazenamento consistente com a ordem de gravação sendo uma réplica da primeira pluralidade de discos virtuais no lado primário em um ponto no tempo, as solicitações de acesso ao armazenamento aplicáveis para sincronizar a segunda pluralidade de discos virtuais com a primeira pluralidade de discos virtuais.
[00176] Em uma modalidade, a transmissão compreende: instruir um coordenador de rastreamento consistente de ordem de gravação (WOCT) para coordenar o ciclo de comutação de registros.
[00177] Em uma modalidade, o fornecimento compreende: transmitir a pluralidade marcada de registros para um segundo coordenador de replicação configurado para coordenar a aplicação das solicitações de acesso ao armazenamento à segunda pluralidade de discos virtuais, os primeiro e segundo coordenadores de replicação configurados, cada um, para lidar com falhas, incluindo pelo menos um de lidar com uma falha durante a geração da pluralidade de registros, uma falha para receber um subconjunto da pluralidade de registros no lado da réplica ou uma falha na aplicação de toda a pluralidade de registros à segunda pluralidade de discos virtuais no lado da réplica.
[00178] Em uma modalidade, quando um subconjunto da pluralidade de dispositivos de computação no lado primário não participa do ciclo de comutação de registros, o primeiro e o segundo coordenadores de replicação dão suporte à transmissão da pluralidade de registros de outros da pluralidade de dispositivos de computação para o lado da réplica enquanto o subconjunto se recupera.
[00179] Em uma modalidade, o fornecimento compreende: fornecer a pluralidade marcada de registros a uma pluralidade de agentes em uma segunda pluralidade de dispositivos de computação para aplicar as solicitações de acesso ao armazenamento à segunda pluralidade de discos virtuais; e o método compreende ainda: aguardar uma confirmação da pluralidade de agentes de que a pluralidade marcada de registros foi aplicada com êxito à segunda pluralidade de discos virtuais; e permitir que um segundo conjunto de registros marcados seja aplicado à segunda pluralidade de discos virtuais em resposta ao recebimento da confirmação a partir da pluralidade de agentes.
[00180] Em uma modalidade, o recebimento de uma pluralidade de registros a partir dos dispositivos de computação em resposta à execução do ciclo de comutação de registros compreende: receber cada registro da pluralidade de registros individualmente a partir do dispositivo de computação correspondente da pluralidade de dispositivos de computação sobre um lado primário.
VII. conclusão
[00181] Embora várias modalidades da presente invenção tenham sido descritas acima, deverá ser entendido que elas foram apresentadas apenas a título de exemplo, e não de limitação. Aqueles versados na técnica relevante compreenderão que podem ser feitas diversas alterações na forma e detalhes na mesma sem se afastar do espirito e âmbito da invenção, conforme definido nas concretizações anexas. Consequentemente, a amplitude e o âmbito da presente invenção não devem ser limitados por qualquer uma das modalidades exemplificativas descritas acima, mas devem ser definidos apenas de acordo com as concretizações a seguir e seus equivalentes.

Claims (8)

1. Método implementado por computador para coordenar um ou mais estágios (412, 414, 416, 418) de um ciclo de comutação de registro, em que comutação de registro se refere a um processo de gravar solicitações de acesso a armazenamento armazenadas em um registro em um novo registro, o método caracterizado pelo fato de que compreende etapas de: iniciar (802) um ciclo de uma comutação de registro de uma pluralidade de registros (112, 202) associados a uma pluralidade de discos virtuais (106a, 106b) em uma pluralidade de dispositivos de computação (704a, 704b), os discos virtuais armazenando dados que são dependentes de ordem de gravação entre os discos virtuais, cada dispositivo de computação da pluralidade de dispositivos de computação (704a, 704b) incluindo pelo menos um de: um disco virtual da pluralidade de discos virtuais (106a, 106b) que recebe solicitações de acesso a armazenamento de um aplicativo, as solicitações de acesso a armazenamento incluindo solicitações de gravação, e um registro (112a, 202b) da pluralidade de registros (112, 202) correspondendo ao disco virtual que recebe e armazena as solicitações de acesso a armazenamento; em que a etapa de iniciar (802) compreende etapas de: assumir (1002) um bloqueio exclusivo em cada um de uma pluralidade de arquivos de bloqueio de estágio inicial (1106a-1106d), cada arquivo de bloqueio de estágio inicial associado a um estágio correspondente do um ou mais estágios (412, 414, 416, 418); transmitir (1004) uma instrução de inicialização de comutação de registro para uma pluralidade de agentes nos dispositivos de computação, cada dispositivo de computação incluindo um agente correspondente da pluralidade de agentes; e receber (1006) uma resposta de cada um dos agentes, cada resposta recebida de um agente da pluralidade de agentes indicando que o agente assumiu um bloqueio compartilhado em cada um de uma pluralidade de arquivos de bloqueio de estágio final (1108a-1108d), cada arquivo de bloqueio de estágio final associado a um estágio correspondente do um ou mais estágios (412, 414, 416, 418); e coordenar (804) o ciclo de comutação de registro da pluralidade de registros (112, 202) na pluralidade de dispositivos de computação (704a, 704b) através dos discos virtuais para manter ordenação de solicitação para solicitações dependentes de ordem de gravação, a etapa de coordenar (804) compreendendo etapas de: liberar (1302) o bloqueio exclusivo em um arquivo de bloqueio de estágio inicial para sinalizar o início do estágio correspondente para os agentes; tentar (1304) assumir um bloqueio exclusivo no arquivo de bloqueio de estágio final associado; assumir o bloqueio exclusivo no arquivo de bloqueio de estágio final associado quando habilitado pelos agentes tendo liberado todos os bloqueios compartilhados no arquivo de bloqueio de estágio final associado para significar conclusão do estágio pelos agentes; e fazer a transição (1310) para implementar um estágio seguinte até que (1308) um estágio final do um ou mais estágios (412, 414, 416, 418) seja concluído.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa de coordenar (804) compreende uma etapa de: implementar o um ou mais estágios (412, 414, 416, 418) para provocar a comutação da pluralidade de registros (112, 202) na pluralidade de dispositivos de computação (704a, 704b).
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa de implementar o um ou mais estágios (412, 414, 416, 418) compreende etapas de: implementar um primeiro estágio durante o qual um novo registro é inicializado em cada dispositivo de computação da pluralidade de dispositivos de computação (704a, 704b); implementar um segundo estágio durante o qual as entradas em fila de registro recebidas são bloqueadas de ser recebidas pelos registros na pluralidade de dispositivos de computação (704a, 704b); implementar um terceiro estágio durante o qual o novo registro é configurado para ser usado para receber as entradas em fila de registro em cada dispositivo de computação da pluralidade de dispositivos de computação (704a, 704b), e as entradas em fila de registro recebidas são desbloqueadas de ser recebidas pelos registros na pluralidade de dispositivos de computação (704a, 704b); e implementar um quarto estágio durante o qual a comutação de registro termina.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa de coordenar (804) compreende uma etapa de: transmitir (1402) códigos e/ou mensagens de controle para a pluralidade de agentes nos dispositivos de computação para implementar o um ou mais estágios (412, 414, 416, 418).
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que cada estágio do um ou mais estágios (412, 414, 416, 418) é implementado ao realizar etapas de: transmitir (1504) um código de controle para a pluralidade de agentes; aguardar (1506) uma resposta ao código de controle transmitido de cada um dentre a pluralidade de agentes; abortar (1510) a comutação de registro se pelo menos um dos agentes não responder com a resposta esperada dentro de um período de tempo predeterminado para o um ou mais estágios (412, 414, 416, 418) a ser concluídos; e fazer a transição (1514) para implementar um estágio seguinte se todos os agentes responderem dentro do período de tempo predeterminado, a etapa de fazer a transição (1514) incluindo concluir (1516) a comutação de registro quando (1512) um estágio final do um ou mais estágios (412, 414, 416, 418) for concluído.
6. Sistema para coordenar um ou mais estágios (412, 414, 416, 418) de um ciclo de comutação de registro, em que comutação de registro se refere a um processo de gravar solicitações de acesso a armazenamento armazenadas em um registro em um novo registro, o sistema caracterizado pelo fato de que compreende: pelo menos um circuito de processamento; um meio (902) implementado pelo ao menos um circuito de processamento, configurado para se comunicar com uma pluralidade de agentes em uma pluralidade de dispositivos de computação (704a, 704b) para iniciar ciclos de uma comutação de registro de uma pluralidade de registros (112, 202) associados a uma pluralidade de discos virtuais (106a, 106b) na pluralidade de dispositivos de computação (704a, 704b), um ciclo da comutação de registro incluindo uma comutação para fora de cada registro atual para um novo registro correspondente, cada dispositivo de computação da pluralidade de dispositivos de computação (704a, 704b) incluindo pelo menos um dentre: um disco virtual da pluralidade de discos virtuais (106a, 106b) que recebe solicitações de acesso a armazenamento de um aplicativo, as solicitações de acesso a armazenamento incluindo solicitações de gravação, e um registro (112a, 202b) da pluralidade de registros (112, 202) correspondentes ao disco virtual que recebe e armazena as solicitações de acesso a armazenamento, em que a inicialização compreende: assumir um bloqueio exclusivo em cada um de uma pluralidade de arquivos de bloqueio de estágio inicial, cada arquivo de bloqueio de estágio inicial associado a um estágio correspondente do um ou mais estágios (412, 414, 416, 418); e transmitir uma instrução de inicialização de comutação de registro para uma pluralidade de agentes na pluralidade de dispositivos de computação (704a, 704b), cada dispositivo de computação incluindo um agente correspondente da pluralidade de agentes; e receber uma resposta de cada um dos agentes, cada resposta recebida de um agente da pluralidade de agentes indicando que o agente assumiu um bloqueio compartilhado em cada um de uma pluralidade de arquivos de bloqueio de estágio final, cada arquivo de bloqueio de estágio final associado a um estágio correspondente do um ou mais estágios (412, 414, 416, 418); e um gerenciador de comutação de registro (904), implementado pelo ao menos um circuito de processamento, configurado para coordenar os ciclos de comutação de registro da pluralidade de registros (112, 202) na pluralidade de dispositivos de computação (704a, 704b) para manter ordenação de solicitação para solicitações dependentes de ordem de gravação através de discos virtuais, em que a coordenação compreende: liberar o bloqueio exclusivo em um arquivo de bloqueio de estágio inicial para sinalizar o início do estágio correspondente para os agentes; tentar assumir um bloqueio exclusivo no arquivo de bloqueio de estágio final associado; assumir o bloqueio exclusivo no arquivo de bloqueio de estágio final associado quando habilitado pelos agentes tendo liberado todos os bloqueios compartilhados no arquivo de bloqueio de estágio final associado para significar conclusão do estágio pelos agentes; e fazer a transição para implementar um estágio seguinte até que um estágio final do um ou mais estágios (412, 414, 416, 418) seja concluído.
7. Sistema, de acordo com a reivindicação 6, caracterizado pelo fato de que o gerenciador de comutação de registro (904) é configurado para implementar o um ou mais estágios (412, 414, 416, 418) para provocar um ciclo da comutação da pluralidade de registros (112, 202) na pluralidade de dispositivos de computação (704a, 704b).
8. Sistema, de acordo com a reivindicação 7, caracterizado pelo fato de que, para implementar cada estágio do um ou mais estágios (412, 414, 416, 418), o gerenciador de comutação de registro (904) é configurado para: transmitir um código de controle para a pluralidade de agentes; aguardar uma resposta ao código de controle transmitido de cada um da pluralidade de agentes; abortar a comutação de registro se pelo menos um dos agentes não responder com a resposta aguardada dentro de um período de tempo predeterminado para o um ou mais estágios (412, 414, 416, 418) a ser completados; e fazer a transição para implementar um estágio seguinte se todos os agentes responderem dentro do período de tempo predeterminado, a comutação de registro sendo concluída quando um estágio final do um ou mais estágios (412, 414, 416, 418) for concluído.
BR112017005450-7A 2014-09-24 2015-09-22 Método e sistema para coordenar um ou mais estágios de um ciclo de comutação de registro BR112017005450B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/495,685 US10073902B2 (en) 2014-09-24 2014-09-24 Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency
US14/495,685 2014-09-24
PCT/US2015/051293 WO2016048921A1 (en) 2014-09-24 2015-09-22 Snapshot and replication of a multi-stream application on multiple hosts at near-sync frequency

Publications (2)

Publication Number Publication Date
BR112017005450A2 BR112017005450A2 (pt) 2017-12-12
BR112017005450B1 true BR112017005450B1 (pt) 2022-12-20

Family

ID=54293344

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017005450-7A BR112017005450B1 (pt) 2014-09-24 2015-09-22 Método e sistema para coordenar um ou mais estágios de um ciclo de comutação de registro

Country Status (5)

Country Link
US (2) US10073902B2 (pt)
EP (1) EP3198445B1 (pt)
CN (1) CN106716380B (pt)
BR (1) BR112017005450B1 (pt)
WO (1) WO2016048921A1 (pt)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898668B1 (en) * 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
US9092482B2 (en) 2013-03-14 2015-07-28 Palantir Technologies, Inc. Fair scheduling for mixed-query loads
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
US9600206B2 (en) 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US20160283145A1 (en) * 2015-03-24 2016-09-29 Lenovo (Beijing) Co., Ltd. Electronic Device, Power Failure Protection Method and Data Recovery Method
US11423004B2 (en) 2015-04-17 2022-08-23 Netapp Inc. Granular replication of volume subsets
US10430240B2 (en) * 2015-10-13 2019-10-01 Palantir Technologies Inc. Fault-tolerant and highly-available configuration of distributed services
US11038960B1 (en) * 2015-10-20 2021-06-15 Amazon Technologies, Inc. Stream-based shared storage system
US10331508B2 (en) 2016-06-23 2019-06-25 Vmware, Inc. Computer crash risk assessment
US10338990B2 (en) 2016-06-23 2019-07-02 Vmware, Inc. Culprit module detection and signature back trace generation
US10191837B2 (en) 2016-06-23 2019-01-29 Vmware, Inc. Automated end-to-end analysis of customer service requests
US10365959B2 (en) 2016-06-23 2019-07-30 Vmware, Inc. Graphical user interface for software crash analysis data
US10268563B2 (en) * 2016-06-23 2019-04-23 Vmware, Inc. Monitoring of an automated end-to-end crash analysis system
US9836402B1 (en) * 2016-07-22 2017-12-05 Red Hat, Inc. Guest ordering of host file system writes
US10872074B2 (en) 2016-09-30 2020-12-22 Microsoft Technology Licensing, Llc Distributed availability groups of databases for data centers
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US11030216B2 (en) 2018-01-08 2021-06-08 International Business Machines Corporation Replicating non-supported data types using an existing supported replication format
CN110058962B (zh) * 2018-01-18 2023-05-23 伊姆西Ip控股有限责任公司 确定虚拟机快照的一致性级别的方法、设备和计算机程序产品
TWI774388B (zh) * 2019-02-23 2022-08-11 國立清華大學 資料同步方法
US11010146B2 (en) * 2019-06-18 2021-05-18 Vmware, Inc. Unified management of heterogeneous applications
US11636071B2 (en) * 2020-01-10 2023-04-25 Salesforce.Com, Inc. Database replication error recovery based on supervised learning
CN113032344B (zh) * 2020-08-25 2021-08-27 广州锦行网络科技有限公司 一种远程登录日志记录的清理方法
US11809449B2 (en) * 2021-09-20 2023-11-07 EMC IP Holding Company LLC Granular data replication
CN114244859B (zh) * 2022-02-23 2022-08-16 阿里云计算有限公司 数据处理方法及装置和电子设备

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6065018A (en) 1998-03-04 2000-05-16 International Business Machines Corporation Synchronizing recovery log having time stamp to a remote site for disaster recovery of a primary database having related hierarchial and relational databases
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
JP2008108227A (ja) * 2006-09-25 2008-05-08 Hitachi Ltd ストレージシステム及び監査ログ管理方法
US8131723B2 (en) 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
CN100553328C (zh) * 2007-10-10 2009-10-21 张福泉 智能化存取数据的流媒体点播系统
CA2713876C (en) * 2008-02-26 2014-11-04 Vmware, Inc. Extending server-based desktop virtual machine architecture to client machines
US8046550B2 (en) 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files
US8285956B2 (en) * 2009-10-22 2012-10-09 Symantec Corporation Efficient logging for asynchronously replicating volume groups
US8554737B2 (en) 2010-09-28 2013-10-08 International Business Machines Corporation Dynamic consistency group formation and systems using the same
US9519496B2 (en) * 2011-04-26 2016-12-13 Microsoft Technology Licensing, Llc Detecting and preventing virtual disk storage linkage faults
US8689047B2 (en) 2011-07-22 2014-04-01 Microsoft Corporation Virtual disk replication using log files
US8839031B2 (en) 2012-04-24 2014-09-16 Microsoft Corporation Data consistency between virtual machines
US9600206B2 (en) 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US9582297B2 (en) * 2013-05-16 2017-02-28 Vmware, Inc. Policy-based data placement in a virtualized computing environment

Also Published As

Publication number Publication date
US20160085837A1 (en) 2016-03-24
BR112017005450A2 (pt) 2017-12-12
WO2016048921A1 (en) 2016-03-31
EP3198445A1 (en) 2017-08-02
USRE47852E1 (en) 2020-02-11
CN106716380B (zh) 2019-09-20
US10073902B2 (en) 2018-09-11
EP3198445B1 (en) 2018-06-27
CN106716380A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
BR112017005450B1 (pt) Método e sistema para coordenar um ou mais estágios de um ciclo de comutação de registro
US10394656B2 (en) Using a recovery snapshot during live migration
CN114341792B (zh) 存储集群之间的数据分区切换
US10394668B2 (en) Maintaining consistency using reverse replication during live migration
US8407435B2 (en) Efficiently creating a snapshot of a large consistency group using multiple commands including a snapshot preparation command
US9766930B2 (en) Using active/passive asynchronous replicated storage for live migration
US9552217B2 (en) Using active/active asynchronous replicated storage for live migration
US9183103B2 (en) Lightweight remote replication of a local write-back cache
US9460028B1 (en) Non-disruptive and minimally disruptive data migration in active-active clusters
JP6050342B2 (ja) リカバリーサイトにおけるレプリカされた仮想ストレージの管理
US9912748B2 (en) Synchronization of snapshots in a distributed storage system
US20150378771A1 (en) Using a delta query to seed live migration
US11647075B2 (en) Commissioning and decommissioning metadata nodes in a running distributed data storage system
US20130311992A1 (en) Storage Checkpointing in a Mirrored Virtual Machine System
US10185639B1 (en) Systems and methods for performing failover in storage system with dual storage controllers
US9990161B2 (en) Consistent replication of virtual computing instance data
US11221927B2 (en) Method for the implementation of a high performance, high resiliency and high availability dual controller storage system
JP2022539981A (ja) ストレージ・デバイスのミラーリング方法、デバイス、プログラム
US11055013B2 (en) Recovering from data loss using copy services relationships between volumes
US10929238B2 (en) Management of changed-block bitmaps
US20230034463A1 (en) Selectively using summary bitmaps for data synchronization
Vijzelaar A Virtual Shared Disk on Distributed Redundant Storage

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B350 Update of information on the portal [chapter 15.35 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 22/09/2015, OBSERVADAS AS CONDICOES LEGAIS