BR112017002518B1 - Método implementado por computador e sistema de computador para acesso de dados seguro após falha de armazenamento - Google Patents

Método implementado por computador e sistema de computador para acesso de dados seguro após falha de armazenamento Download PDF

Info

Publication number
BR112017002518B1
BR112017002518B1 BR112017002518-3A BR112017002518A BR112017002518B1 BR 112017002518 B1 BR112017002518 B1 BR 112017002518B1 BR 112017002518 A BR112017002518 A BR 112017002518A BR 112017002518 B1 BR112017002518 B1 BR 112017002518B1
Authority
BR
Brazil
Prior art keywords
target data
request
failure
application
identifier
Prior art date
Application number
BR112017002518-3A
Other languages
English (en)
Other versions
BR112017002518A2 (pt
BR112017002518A8 (pt
Inventor
David Kruse
Vladimir Petter
Lokesh Srinivas Koppolu
David Dion
Mathew George
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 BR112017002518A2 publication Critical patent/BR112017002518A2/pt
Publication of BR112017002518A8 publication Critical patent/BR112017002518A8/pt
Publication of BR112017002518B1 publication Critical patent/BR112017002518B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • 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/1479Generic software techniques for error detection or fault masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

MÉTODO IMPLEMENTADO POR COMPUTADOR E SISTEMA DE COMPUTADOR PARA ACESSO DE DADOS SEGURO APÓS FALHA DE ARMAZENAMENTO. A presente invenção refere-se a um identificador de solicitação que é empregado com vários sistemas e métodos de modo a permitir uma aplicação pausar a execução durante uma falha e subsequentemente reiniciar a execução e comunicação com um sistema de armazenamento uma vez que a falha foi resolvida. Uma aplicação que reside em um nodo pode tentar acessar dados alvo em um sistema de armazenamento. A aplicação envia uma solicitação para acessar os dados alvo. A solicitação pode estar associada com um identificador de solicitação que identifica a aplicação. Quando o sistema de armazenamento experimenta uma falha, a aplicação recebe uma notificação de falha. A aplicação pausa a execução como um resultado da notificação. Quando o nodo restabelece uma conexão com o sistema de armazenamento, a aplicação reinicia a execução utilizando o mesmo identificador de solicitação. Se a solicitação de reiniciação for concedida, a aplicação é garantida que os dados alvo não foram modificados durante a falha.

Description

ANTECEDENTES
[001] Os ambientes agrupados, por exemplo, ambientes onde cargas de trabalho são distribuídas através de múltiplas máquinas, são comumente utilizados para prover transferência em caso de falha e alta disponibilidade de informações para os clientes. Os ambientes agrupados permitem que os clientes acessem recursos através de um ou mais nós que fazem parte do ambiente. Um ambiente agrupado pode atuar como um cliente, um servidor, ou ambos. Em um servidor de grupamento de clientes, uma aplicação pode residir em qualquer um dos nós que compõem o grupamento. A aplicação pode emitir solicitações de acesso para dados alvo que são armazenados por um sistema de armazenamento. Se um erro ocorrer durante uma solicitação de acesso, a aplicação pode experimentar retardos que impactam a execução.
[002] É com relação a estas e outras considerações que exemplos foram feitos. Também, apesar de problemas relativamente específicos terem sido discutidos, deve ser compreendido que os exemplos não devem estar limitados a resolver os problemas específicos identificados nos fundamentos.
SUMÁRIO
[003] Este sumário está provido para introduzir uma seleção de conceitos em uma forma simplificada que estão adicionalmente abaixo descritos na seção de Descrição Detalhada. Este sumário não pretende identificar características chave ou características essenciais do assunto reivindicado, nem este pretende ser utilizado como uma ajuda na determinação do escopo do assunto reivindicado.
[004] Sistemas e métodos estão aqui descritos que permitem uma aplicação pausar a execução durante uma falha e subsequentemente reiniciar a execução e comunicação com um sistema de armazenamento uma vez que a falha é resolvida. De acordo com alguns aspectos, uma aplicação que reside em um nó em um grupamento de cliente envia uma solicitação de acesso para um nó em um grupamento de servidores para acessar dados alvo. Em exemplos, um identificador de solicitação é utilizado para identificar a aplicação e/ou a carga de trabalho relativa que solicita um recurso. O identificador de solicitação pode estar provido com a solicitação. Quando o cliente acessa os dados alvo, o identificador de solicitação é armazenado em armazenamento persistente e associado com os dados alvo solicitados.
[005] Antes da aplicação completar suas operações sobre os dados alvo, uma falha pode ocorrer que faz com que a aplicação perca comunicação com o sistema de armazenamento. Por exemplo, um servidor no sistema de armazenamento pode reiniciar, um sistema de arquivo relativo pode ser desmontado, uma conexão de comunicações pode falhar, etc. Em tais circunstâncias, as solicitações de acesso emitidas pela aplicação para dados alvo armazenados pelo sistema de armazenamento experimentarão retardos ou falharão de todo. No entanto, o identificador armazenado pode não ser apagado do armazenamento persistente, mesmo se a trava da aplicação sobre os dados alvo expirar durante a falha. Durante a falha, a aplicação pode receber uma notificação que esta perdeu comunicação com o sistema de armazenamento e pode pausar a execução. Quando do restabelecimento de comunicação com o sistema de armazenamento, a aplicação pode receber uma notificação de resolução e tentar reiniciar a execução. Ainda, a aplicação pode enviar uma solicitação de retomada para o sistema de armazenamento para reobter acesso aos dados alvo. A solicitação de retomada pode incluir, ou referenciar, o identificador de solicitação. O identificador de solicitação permite que o sistema de armazenamento gerencie a solicitação para determinar que a solicitação de retomada pertence à mesma aplicação que anteriormente acessou o recurso. Fazendo isto permite ao servidor conceder a solicitação de retomada da aplicação para acessar os dados alvo. No caso em que os dados alvo são modificados antes da solicitação de retomada, o sistema de armazenamento desassocia o identificador de solicitação dos dados alvo (por exemplo, apagando o identificador armazenado do armazenamento persistente) de modo que a aplicação pode não reiniciar a sua comunicação anterior com o sistema de armazenamento. Como um resultado, a aplicação é assegurada que se esta for capaz de restabelecer a comunicação utilizando uma solicitação de retomada e o identificador de solicitação original, os dados alvo não foram modificados deste a falha de comunicação. De outro modo, a aplicação é alertada que os dados alvo mudaram, e a aplicação pode tomar uma decisão se tomar outras ações.
[006] Exemplos podem ser implementados como um processo de computador, um sistema de computação, ou como um artigo de manufatura tal como um produto de programa de computador ou meio legível por computador. O produto de programa de computador pode ser um meio de armazenamento de computador legível por um sistema de computador e codificando um programa de instruções de computador para executar um processo de computador.
BREVE DESCRIÇÃO DOS DESENHOS
[007] Exemplos não limitantes e não exaustivos estão descritos com referência às figuras seguintes.
[008] Figura 1 ilustra um sistema que pode ser utilizado para implementar exemplos aqui descritos.
[009] Figura 2 ilustra um sistema que pode ser utilizado para implementar exemplos aqui descritos.
[0010] Figura 3 é um fluxo operacional para uma aplicação que comunica com um sistema de armazenamento.
[0011] Figura 4 é um fluxo operacional para um sistema de armazenamento que comunica com uma aplicação.
[0012] Figura 5 é um diagrama de blocos que ilustra um exemplo de um dispositivo de computação com o qual aspectos da invenção podem ser praticados.
[0013] Figuras 6A e 6B são diagramas de blocos simplificados de um dispositivo de computação móvel com o qual aspectos da invenção podem ser praticados.
[0014] Figura 7 é um diagrama de blocos simplificado de um sistema de computação distribuído no qual aspectos da invenção podem ser praticados.
DESCRIÇÃO DETALHADA
[0015] Vários aspectos estão mais totalmente abaixo descritos com referência aos desenhos acompanhantes, os quais formam uma sua parte, e os quais mostram aspectos exemplares específicos. No entanto, os exemplos podem ser implementados em muitas diferentes formas e não devem considerados como limitados aos exemplos aqui apresentados. Consequentemente, exemplos podem tomar a forma de uma implementação de hardware, ou uma implementação totalmente de software, ou uma implementação que combina aspectos de software e hardware. A seguinte descrição detalhada, portanto, não deve ser tomada em um sentido limitante.
[0016] Exemplos da presente descrição estão relacionados a prover aplicações com mecanismos para confiavelmente acessar dados alvo em um sistema de armazenamento e manipular falhas de comunicação. Em exemplos, um sistema de armazenamento pode ser um dispositivo local, um dispositivo de armazenamento anexado em rede, um servidor de arquivo distribuído, ou qualquer outro tipo de sistema de armazenamento em um ambiente de computação. Os dados alvo podem residir em um servidor independente ou estes podem residir em um ambiente agrupado. Nos exemplos aqui descritos, um ambiente agrupado pode inclui um ou mais nós (por exemplo, dispositivos de cliente e/ou servidor).
[0017] Em um exemplo, uma aplicação pode solicitar acesso a dados alvo. Os dados alvo podem estar armazenados localmente (por exemplo, em um nó de cliente), em um dispositivo remoto (por exemplo, um servidor remoto ou um diferente nó no ambiente agrupado de cliente), ou em um ambiente agrupado (por exemplo, um ambiente que contém múltiplos nós) que é diferente do ambiente agrupado de cliente. Por exemplo, em exemplos o ambiente agrupado pode ser um grupamento de clientes ou servidores; no entanto, alguém versado na técnica apreciará que os sistemas e métodos aqui descritos podem ser empregados em qualquer outro tipo de ambiente, tal como, mas não limitado a, uma rede virtual.
[0018] Dados podem ser compartilhados entre uma pluralidade de solicitantes. Como aqui utilizado, um solicitante pode compreender qualquer aplicação, carga de trabalho, encadeamento, ou outro processo ou entidade que solicita acesso a dados alvo. Apesar dos exemplos aqui descritos poderem ser descritos com relação a uma "aplicação" ou "cliente" ou "processo" ou "carga de trabalho" atuando como um solicitante, a presente descrição não está assim limitada. Quando o solicitante acessa os dados alvo, os dados alvo podem ser travados, por meio disto proibindo outros solicitantes de cessá-los até que a trava seja liberada. O travamento dos dados alvo pode ser empregado para proteger contra um conflito - isto é, para proteger contra uma modificação dos dados alvo por outro solicitante antes do solicitante que acessa ter executado suas operações. Tipicamente, quando uma trava é liberada, o sistema de armazenamento não mais retém nenhuma associação entre os dados alvo e o solicitante.
[0019] Em alguns casos, quando uma falha ocorre afetando a comunicação do solicitante com o sistema de armazenamento, o solicitante pode ser incapaz de reconectar no sistema de armazenamento antes que a trava sobre os dados alvo seja liberada. Como um resultado, o solicitante torna-se desassociado com os dados alvo. Por exemplo, se o sistema de armazenamento mantiver a trava utilizando um identificador de instância de carga de trabalho apresentado, ou referido, pelo solicitante em uma solicitação de acesso, quando a trava é liberada, o identificador de instância de carga de trabalho pode tipicamente ser apagado e/ou desassociado dos dados alvo. Ainda, como a trava foi liberada, quando estabelecendo uma nova conexão, o solicitante não pode assumir que os dados alvo não forma modificados desde que estes foram por último acessados pelo solicitante. Assim, ao invés de reiniciar a execução e comunicação com o sistema de armazenamento, o solicitante deve estabelecer uma nova seção de comunicação e assumir que os dados alvo estão em um estado desconhecido.
[0020] Ainda, quando um solicitante comunica com um sistema de armazenamento, o solicitante pode esperar não receber nenhuma indicação de retardos ou falhas de comunicação, e pode ao invés assumir que o seu contrato com o sistema de armazenamento (e/ou o gerenciador de entrada / saída (IO) no cliente que hospeda o solicitante) garante que as solicitações de acesso serão tentadas novamente até que estas tenham sucesso. Como um resultado, uma falha de comunicação fará com que o solicitante continue aguardando por uma resposta no sistema de armazenamento. Isto pode impactar o comportamento do solicitante e causar retardo de execução. Por exemplo, o solicitante pode ser "congelado" e incapaz de executar qualquer processamento até que a falha seja resolvida. Os sistemas e métodos aqui descritos proveem mecanismos para identificar situações onde um solicitante está tentando reiniciar comunicações com um sistema de armazenamento, assim como mecanismos para notificar um solicitante de retardos ou falhas de comunicação, por meio disto mitigando o impacto sobre a execução e permitindo o solicitante reiniciar a execução e comunicação após uma falha.
[0021] A Figura 1 ilustra um sistema 100 que pode ser utilizado para implementar alguns exemplos. O sistema 100 inclui um cliente 102 e um sistema de armazenamento 108. No exemplo ilustrado, o cliente 102 está compreendido de um solicitante, tal como uma aplicação 104 e um gerenciador de entrada / saída (IO) 106 hospedado por um dispositivo de computação físico ou virtual. O gerenciador de IO 106 transfere e gerencia as comunicações entre a aplicação 104 e o sistema de armazenamento 108. O sistema de armazenamento 108 armazena informações que são acessadas pela aplicação 104. Apesar de que na Figura 1 somente a aplicação 104 no cliente 102 está mostrada comunicando com o sistema de armazenamento 108, em outros exemplos podem existir mais de uma aplicação e mais de um cliente acessando as informações do sistema de armazenamento 108. Em alguns exemplos, sistema de armazenamento 108 pode compreender um armazenamento conectado localmente no cliente 102, um armazenamento remoto do cliente 102 acessível através de uma rede, ou um armazenamento compartilhado entre servidores de arquivo agrupados.
[0022] De acordo com um exemplo, o sistema de armazenamento 108 é utilizado para prover uma consistente disponibilidade para a aplicação 104. Isto é feito utilizando componentes no cliente 102 e no sistema de armazenamento 108 para armazenar informações que podem ser utilizadas para restabelecer a comunicação entre o cliente 102 e o sistema de armazenamento 108 caso exista uma falha de comunicação, uma desmontagem de sistema de arquivo, uma reiniciação, ou qualquer outro tipo de falha. Como abaixo descrito em maiores detalhes, as informações armazenadas e as notificações de falha de comunicação permitem o cliente 102 ter um acesso de arquivo consistente e permite as aplicações que executam no cliente 102 manipularem as falhas de comunicação que possam ocorre. Em exemplos, o cliente 102 pode comunicar com o sistema de armazenamento 108 utilizando o protocolo de Bloco de Mensagem de Servidor (SMB) 2.0/3.0.
[0023] Para ilustrar um exemplo, a aplicação 104 pode indicar para o gerenciador de IO 106 que falhas de comunicação durante uma seção de comunicação com o sistema de armazenamento 108 devem ser reportadas. Em alguns exemplos, a indicação pode especificar um período de tempo designado para aguardar por uma solicitação ter sucesso, após o que a solicitação deve ser reportada como tendo falhado. Em exemplos, na falta de tal indicação, a aplicação 104 pode basear-se no Gerenciador de IO 106 para tentar novamente as solicitações de acesso para o sistema de armazenamento 108. Isto pode levar a aplicação 104 a ficar aguardando indefinidamente, sem nenhuma informação referente à natureza ou extensão do retardo.
[0024] A aplicação 104 pode enviar uma solicitação de acesso para dados alvo para o sistema de armazenamento 108. A solicitação de acesso para dados alvo pode incluir um número de operações de arquivo para executar sobre os dados alvo. As operações podem ser, por exemplo, aberturas para ler / escrever dados, enumerar atributos, solicitações de arrendamento para permitir a colocação em cache de dados localmente, ou outras operações de acesso de arquivo. Em alguns exemplos, a solicitação de acesso pode incluir ou referir a um identificador de solicitação, tal como um identificador de instância de carga de trabalho.
[0025] O sistema de armazenamento 108 recebe a solicitação de acesso para dados alvo. Em alguns exemplos, o sistema de armazenamento 108 pode determinar se os dados alvo estão travados e, portanto, associados com um diferente identificador de solicitação, por exemplo, para um diferente solicitante, tal como outra aplicação executando no cliente 102 ou um diferente cliente. Se os dados alvo estiverem travados, o sistema de armazenamento 108 pode negar a solicitação de acesso de arquivo, pode romper a trava, ou pode tomar outra ação dependendo do protocolo que está sendo empregado.
[0026] Quando determinando que a solicitação de acesso deve ser concedida, o sistema de armazenamento 108 envia uma resposta para o cliente 102 concedendo acesso aos dados alvo. O identificador de solicitação pode estar armazenado pelo sistema de armazenamento 108 em armazenamento persistente. Quando o identificador de solicitação está armazenado pelo sistema de armazenamento 108, este pode ser aqui referido como um identificador armazenado. Em alguns exemplos, os dados alvo podem ser travados antes de, ou após, conceder a solicitação de acesso. Em alguns exemplos a trava pode estar configurada para ser liberada (por meio disto permitindo que outros solicitantes tenham acesso aos dados alvo) quanto todas as operações na solicitação foram completadas. Ainda, a trava pode expirar após um período de tempo especificado ou quando o mais curto do período de tempo especificado e do tempo no qual todas as operações na solicitação são completadas. Em ainda outros exemplos, a trava pode prover ao cliente acesso exclusivo aos dados alvo até que o cliente libere a trava ou até que um evento ocorra rompendo a trava. Por exemplo, em conformidade com o protocolo SMB, um OpLock exclusivo do sistema de armazenamento 108 pode ser provido para o cliente 102. O cliente 102 pode assumir que este é o único processo com acesso aos dados alvo, e o cliente 102 pode colocar em cache todas as mudanças nos dados alvo antes de entregar as mudanças para o sistema de armazenamento 108. Se outro cliente / processo tentar abrir os mesmos dados alvo, o sistema de armazenamento 108 envia uma mensagem para o 102 (denominada uma quebra ou revogação), a qual invalida o OpLock exclusivo anteriormente dado para o cliente 102. O cliente 102 então descarrega todas as mudanças nos dados alvo e as entrega para o sistema de armazenamento 108.
[0027] Em algum ponto, o cliente 102 pode experimentar uma falha de comunicação com o sistema de armazenamento 108. A falha pode resultar, em alguns exemplos, de uma desconexão, uma desmontagem de um sistema de arquivo, ou uma reiniciação. Como um resultado da falha de comunicação, o gerenciador de IO 106 provê uma notificação da falha para a aplicação 104. Em exemplos, tal notificação ocorre somente se a aplicação 104 "optou entrar" e proveu uma indicação para o gerenciador de IO 106 que a aplicação 104 deve ser notificada no caso de uma falha de comunicações com o sistema de armazenamento 108. Em exemplos, a notificação da falha pode incluir informações de falha adicionais descrevendo a natureza e/ou extensão esperada da falha. A aplicação 104 pode utilizar as informações de falha adicionais para determinar qual ação tomar, incluindo continuar a aguardar, abandonar a solicitação específica, tentar novamente a solicitação, reiniciar a aplicação 104, etc. Entre outras opções, quando recebendo a notificação, a aplicação 104 pode pausar a execução. Em outros exemplos, a aplicação 104 pode também (ou ao invés) pausar as operações de IO ou um processamento relativo. Em exemplos, a falha pode também fazer com que o sistema de armazenamento 108 libere a trava da aplicação 104 sobre os dados alvo; ou a trava pode expirar durante a falha.
[0028] Eventualmente, a falha pode ser resolvida, e a conexão entre o cliente 102 e o sistema de armazenamento 108 pode ser restabelecida. O gerenciador de IO 106 determina se a falha foi resolvida, e, se assim, provê uma notificação de resolução para a aplicação 104. Em exemplos, a aplicação 104 pode também determinar se a falha foi resolvida, por exemplo, tentando novamente solicitações de acesso. Após receber a notificação de resolução, a aplicação 104 pode reiniciar a execução. Em alguns exemplos onde somente as operações de IO foram pausadas, a aplicação 104 pode também reiniciar as operações de IO ou processamento relativo. A aplicação 104 envia uma solicitação de retomada para reiniciar as comunicações com o sistema de armazenamento 108 para os dados alvo. Em exemplos, a solicitação de retomada pode ser enviada pelo ou através do Gerenciador de IO 106. A solicitação de retomada pode compreender uma solicitação de acesso que inclui (ou refere-se a) o identificador de solicitação utilizado antes da falha e pode incluir um sinalizador que indica para o sistema de armazenamento que a solicitação de acesso é uma solicitação de retomada. O sistema de armazenamento 108 recebe a solicitação de retomada. O sistema de armazenamento 108 determina se os dados alvo mudaram desde a falha. A determinação se os dados alvo mudaram pode também ser feita, em parte, antes de receber a solicitação de retomada.
[0029] Se o sistema de armazenamento 108 determinar que os dados alvo não mudaram, o sistema de armazenamento 108 concede a solicitação de retomada. Em exemplos, o sistema de armazenamento 108 determina se os dados alvo mudaram comparando o identificador de solicitação na solicitação de retomada com o identificador armazenado da solicitação de acesso mais recente do cliente para os dados alvo. Se outro processo ou aplicação mudou os dados alvo entre o tempo da falha e o tempo da solicitação de retomada, o sistema de armazenamento 108 deverá apagar o identificador armazenado da solicitação de acesso mais recente do cliente 102. Como tal, se o identificador armazenado coincidir com o identificador incluído na, ou de outro modo associado com, a solicitação de retomada, o sistema de armazenamento concede a solicitação de retomada. A concessão da solicitação de retomada efetivamente garante para a aplicação que os dados alvo não mudaram desde a solicitação de acesso para a qual o identificador armazenado foi originalmente armazenado. Consequentemente, o cliente 102 é assegurado da integridade de dados enquanto continuando suas operações anteriores. Por exemplo, se o cliente 102 colocou em cache escritas nos dados alvo que não foram completadas antes da falha, tais escritas podem agora ser completadas. Se o sistema de armazenamento 108 determinar que os dados alvo mudaram (por exemplo, o identificador de solicitação na solicitação de retomada não coincide com um identificador armazenado no armazenamento persistente), o sistema de armazenamento 108 nega a solicitação de retomada. Como aqui utilizado, "coincidência" não precisa compreender uma replicação exata. Ao invés, a coincidência de identificadores meramente requer que uma entidade que compara os identificadores seja suficientemente satisfeita a um dado nível de especificidade que os identificadores referem à mesma solicitação e/ou solicitante.
[0030] Em exemplos, cliente 102 pode estar hospedando uma ou mais máquinas virtuais utilizando um ou mis discos rígidos virtuais no sistema de armazenamento 108. Quando o sistema de armazenamento 108 falha, camadas de confiabilidade (tal como Disponibilidade Contínua SMB) pode desistir de tentativas de recuperar. Isto faz com que a aplicação 104 receba falhas de IO que resultam em efetivamente "congelar" as máquinas virtuais que têm dados alvo abertos no sistema de armazenamento 108. Tipicamente, as máquinas virtuais são requeridas passar através de um processo de reiniciação para manipular a falha. A presente descrição, no entanto, permite que a máquinas virtuais sejam pausadas e, uma que a falha é resolvida, sejam reiniciadas. Deste modo, uma reiniciação de sistema de operação dentro das máquinas virtuais pode ser evitada. De modo a executar isto, no entanto, a integridade de dados deve ser mantida.
[0031] Enquanto as máquinas virtuais estão pausadas, todas as manipulações sobre o sistema de armazenamento 108 para aquela máquina virtual podem estar fechadas, mas o estado de sistema de operação dentro da máquina virtual pode ser preservado. Por exemplo, um Sistema de Arquivo de Nova Tecnologia (NTFS) montado em um disco rígido virtual faz suposições que em uma reiniciação da máquina virtual, todo o conteúdo do disco rígido virtual é o mesmo. Se o conteúdo do disco rígido virtual mudar enquanto a máquina virtual está pausada, o disco rígido virtual pode ser corrompido. A presente descrição torna possível eficientemente determinar se este é o mesmo para reiniciar uma máquina após esta ter pausado.
[0032] A descrição acima é meramente um exemplo de como o exemplo mostrado na Figura 1 pode operar. Como abaixo descrito em maiores detalhes, exemplos podem envolver diferentes etapas de operações. Estas podem ser implementadas utilizado um componente ou módulo de software ou hardware apropriado.
[0033] A Figura 2 ilustra um sistema 200 que pode ser utilizado para implementar alguns exemplos. O sistema 200 inclui nós 202 e 208. O nó 202 está compreendido de uma aplicação 204 e um gerenciador de IO 206 hospedados por um dispositivo de computação físico ou virtual. A aplicação 204 pode ser uma aplicação de virtualização. O nó 208 está compreendido de outro utilitário 210 e pode também incluir uma ou mais aplicações e um gerenciador de IO (não mostrado). Os nós 202 e 208 podem ser parte de grupamento de cliente dispositivos de computação físicos ou virtuais. Os nós 202 e 208 comunicam com um sistema de armazenamento 214 através de uma rede 212 utilizando, por exemplo, o protocolo SMB. O sistema de armazenamento 214 armazena informações que são acessadas por uma ou mais aplicações nos nós 202 e 208. Em exemplos, os nós 202 e 208 podem ser considerados solicitantes, como aqui descrito. Os nós 202 e 208 estabelecem conexões com o sistema de armazenamento 214 para acessar informações do servidor de arquivo escalável 216. Apesar de que na Figura 2 somente os clientes 202 e 208 serem mostrados como comunicando o sistema de armazenamento 214, em outros exemplos podem existir mais (ou menos) do que dois clientes acessando as informações do sistema de armazenamento 214.
[0034] Como mostrado na Figura 2, o sistema de armazenamento 214 inclui os nós 214A e 214B, os quais proveem tanto alta disponibilidade quanto redundância para o servidor de arquivo escalável 216. Em exemplos, o sistema de armazenamento 214 provê um servidor de arquivo escalável 216 que é acessado pelos clientes 202 e 208. O servidor de arquivo escalável 216 pode compreender múltiplos servidores agrupados que podem cooperar para prover informações de arquivo do sistema de arquivo distribuído 218. O sistema de arquivo distribuído 218 compreende informações de arquivo que estão armazenadas no armazenamento físico 226. O sistema de arquivo 222 do armazenamento físico 226 está montado no nó 214B. Em alguns exemplos, o formato do sistema de arquivo 222 pode ser Sistema de Arquivo de Nova Tecnologia (NTFS) ou Sistema de Arquivo Resiliente (ReFS). O Nó 214B atua como o coordenador do sistema de arquivo distribuído 218 e transfere as operações de arquivo, por exemplo, operações de leitura, escrita, e metadados, do sistema de arquivo distribuído 218 para o sistema de arquivo 222. Em alguns exemplos, o nó 214A pode executar as operações de arquivo diretamente no armazenamento físico 226, apesar de que o nó 214B pode ter exclusivo acesso de escrita de modo que as solicitações de escrita sejam encaminhadas pelo nó 214A para o nó 214B ao invés de serem diretamente enviadas para o armazenamento físico 226. Além disso, um filtro de identificador de solicitação 220 associa as solicitações de acesso com identificadores que são então armazenados no armazenamento persistente 224. Por exemplo, o armazenamento persistente 224 pode compreender um banco de dados de filtro de chave de retomada utilizado para por filtro de chave de retomada anexado a um sistema de arquivo NTFS. Apesar de dois nós serem mostrados na Figura 2, em outros exemplos o sistema de armazenamento 214 pode incluir mais de dois nós, ou menos de dois nós.
[0035] De acordo com exemplos, os nós 214A e 214B são utilizados para prover uma disponibilidade consistente do servidor de arquivo escalável 216. Isto é feito utilizando componentes nos nós 202, 208, 214A, e 214B para armazenar informações que podem ser utilizadas para restabelecer a comunicação entre as aplicações nos nós 202 e 208 e servidor de arquivo escalável 216 nos nós 214A e 214B caso exista uma falha, tal como uma falha de rede 212, uma desmontagem do sistema de arquivo distribuído 218 ou sistema de arquivo 222, ou uma falha ou reiniciação de um dos nós 214A e 214B. Ainda, a aplicação 204 pode indicar para o gerenciador de IO 206 que a aplicação 204 seja notificada de falhas que afetam as comunicações com sistema de armazenamento 214. Como abaixo descrito em maiores detalhes, as informações armazenadas e as notificações de falha de comunicação permitem os nós 202 e 208 terem um consistente acesso de arquivo e permitem que as aplicações que executam nos nós 202 e 208 manipulem as falhas de comunicação que possam ocorrer.
[0036] Os nós, por exemplo, 214A e 214B, nos exemplos, cada um provê acesso a dados de arquivo para clientes e estão configurados para prover uma disponibilidade consistente dos dados de arquivo para os clientes. Para ilustrar um exemplo, a aplicação 204 pode indicar para o gerenciador de IO 206 que falhas durante uma seção de comunicação com o sistema de armazenamento 214 devem ser reportadas para a aplicação 204. Em exemplos, uma aplicação pode precisar "optar entrar" para receber indicações de falhas. Em alguns exemplos, a indicação pode especificar um período de tempo para aguardar para que uma solicitação tenha sucesso, após o qual a solicitação deve ser reportada como tendo falhado. A aplicação 204 pode enviar uma solicitação de acesso para dados alvo para o nó 214A. A solicitação de acesso pode estar associada com ou incluir um identificador de solicitação, tal como um identificador de instância de carga de trabalho. Por exemplo, quando uma nova carga de trabalho é iniciada, um conjunto de variáveis pode ser criado compreendendo: <WorkoadPlacementId, WorkloadId, WorkloadInstanceId>. A solicitação de acesso para dados alvo pode incluir um número de operações de arquivo para executar nos dados alvo. As operações podem ser, por exemplo, aberturas para ler / escrever dados, enumerar atributos, solicitações de arrendamento para permitir a colocação em cache de dados localmente, ou outras operações de acesso de arquivo. Em exemplos, os dados alvo solicitados podem compreender uma imagem de disco rígido virtual que compreende uma máquina virtual convidada.
[0037] O nó 214A recebe a solicitação de acesso para dados alvo. Em alguns exemplos, o servidor de arquivo escalável 216 pode determinar se os dados alvo estão travados (por exemplo, sendo acessados por uma diferente aplicação ou processo). Se os dados alvo estiverem travados, o servidor de arquivo escalável 108 pode negar a solicitação de acesso de arquivo ou tomar ou ação ditada pelo protocolo específico empregado.
[0038] Quando determinando que a solicitação deve ser concedida, o nó 214A envia uma resposta para o nó 202 concedendo acesso aos dados alvo. O filtro de identificador de solicitação 220 armazena o identificador de solicitação incluído, ou associado, com a solicitação de acesso do nó 202 no armazenamento persistente 224. Em alguns exemplos, os dados alvo podem então ser travados. A trava sobre os dados alvo pode eventualmente ser liberada antes que todas as operações da aplicação 204 tenham sido completadas (por exemplo, devido a uma falha), mas o identificador armazenado pode continuar a ser retido pelo armazenamento persistente 224. Ainda, a trava pode expirar após um período de tempo especificado.
[0039] Em algum ponto, o nó 202 pode experimentar uma falha de comunicação com o sistema de armazenamento 214. A falha pode resultar de, por exemplo, uma desconexão, uma desmontagem de um sistema de arquivo, ou uma reiniciação. Como um resultado da falha de comunicação, o gerenciador de IO 206 provê uma notificação da falha para a aplicação 204. Quando recebendo a notificação, a aplicação 204 pode pausar a execução de uma ou mais máquinas virtuais convidadas. Além de ou no lugar de pausar as máquinas virtuais convidadas, a aplicação 204 pode também pausar as operações de IO ou o processamento relativo.
[0040] Eventualmente, a conexão entre o nó 202 e o sistema de armazenamento 214 pode ser restaurada. Quando o gerenciador de IO 206 determina que a falha foi resolvida, este provê uma notificação de resolução para a aplicação 204. Em exemplos, a aplicação 204 pode determinar que a falha foi resolvida através de outros métodos. Após receber notificação de resolução, a aplicação 204 pode reiniciar a execução, incluindo reiniciar execução de uma ou mais máquinas virtuais convidadas. Em exemplos, a aplicação 204 pode também reiniciar as operações de IO ou o processamento relativo. A aplicação 204 envia uma solicitação de retomada para reiniciar a comunicação com o sistema de armazenamento 214 e para buscar acesso aos dados alvo. A solicitação de retomada da aplicação 204 inclui, ou está associada com um identificador de solicitação de retomada que pode ser o mesmo identificador utilizado na primeira solicitação de acesso antes da falha. Além disso, a solicitação de retomada pode incluir um sinalizador que indica para o sistema de armazenamento 214 que a solicitação é uma solicitação de retomada. Neste exemplo, o nó 214B recebe a solicitação de retomada, e o nó 214B determina se os dados alvo mudaram desde a falha.
[0041] Se o nó 214B determinar que os dados alvo não mudaram, o nó 214B concede a solicitação de retomada e provê acesso para os dados alvo a aplicação 204. Em alguns exemplos, e como adicionalmente abaixo explicado, a determinação que os dados alvo não mudaram desde a solicitação de acesso anterior da aplicação 204 pode ser feita determinando que o identificador incluído (ou associado) com a solicitação de retomada continua a estar armazenado no (e não foi apagado do) armazenamento persistente 224. Quando a solicitação de retomada é concedida, a aplicação 204 e o nó 214B podem completar quaisquer operações que foram interrompidas e não completadas antes da falha. Quando a solicitação de retomada é concedida, os dados alvo podem novamente ser travados pelo nó 214B em nome da aplicação 204. Eventualmente, a trava sobre os dados alvo pode novamente ser liberada (por exemplo, devido a uma falha adicional, complemento de operações pela aplicação 204, etc.), mas o identificador armazenado deve continuar a ser retido pelo armazenamento persistente 224. Ainda, a trava pode expirar após um período de tempo especificado.
[0042] Em alguns exemplos, o nó 214B pode determinar que os dados alvo mudaram entre a solicitação de acesso mais recente da aplicação 204 e a solicitação de retomada. Por exemplo, em algum ponto, outro utilitário 210 no nó 208 pode alterar os dados alvo antes da aplicação 204 no nó 202 restabelecer a sua conexão com o sistema de armazenamento 214. Isto pode ocorrer, por exemplo, se a aplicação 204 tinha uma trava sobre os dados alvo como um resultado de sua solicitação de acesso mais recente; no entanto, a trava expirou ou foi liberada após uma falha ter ocorrido, mas antes de todas as operações da aplicação 204 sobre os dados alvo fossem completadas. A terminação da trava poderia permitir que outro utilitário 210 alterasse os dados alvo antes da solicitação de retomada ser recebida da aplicação 204. Se os dados alvo mudaram, o nó 214B pode remover o identificador de solicitação do armazenamento persistente 224. Em exemplos, o identificador armazenado da solicitação de acesso mais recente da aplicação 204 para os dados alvo pode ser apagada no armazenamento persistente quando outro utilitário 210 altera os dados alvo (mesmo antes da solicitação de retomada ocorrer). Por exemplo, o sistema de armazenamento 214 pode continuamente ou periodicamente monitorar mudanças nos dados alvo para os quais o sistema de armazenamento 214 correntemente armazena um identificador armazenado no armazenamento persistente 224 e apagar tais identificadores armazenados quando mudanças são feitas. Neste caso, a determinação se os dados alvo mudaram requer simplesmente verificar se o identificador incluído (ou associado) com a solicitação de retomada coincide o identificador armazenado para os dados alvo no armazenamento persistente 224. Em exemplos, operações que não constituem uma alteração ou mudança nos dados alvo podem incluir operações de leitura, deflação, compressão, de duplicação, ou captura instantânea, e tais operações em nome de outra aplicação ou outro utilitário 210 não resultariam no identificador armazenado da aplicação 204 para os dados alvo ser apagado do armazenamento persistente 224. Se os dados alvo mudaram, o sistema de armazenamento 214 pode negar a solicitação de retomada, e a aplicação pode executar uma ação adicional. Por exemplo, se uma máquina virtual foi pausada durante a falha e uma solicitação de retomada após a falha for negada pelo sistema de armazenamento 214, o sistema de operação dentro da máquina virtual pode novamente ser pausado, em cujo ponto uma determinação pode ser feita para reiniciar a máquina virtual.
[0043] Como pode ser apreciado, a descrição acima do sistema 200 não pretende limitar os exemplos aqui descritos. A Figura 2 e a sua descrição estão meramente destinadas a ilustrar a implementação de alguns exemplos. Em outros exemplos, diferentes tipos de informações podem ser armazenados em diferentes componentes no sistema 200. Assim, os exemplos não estão limitados ao que está mostrado e descrito na Figura 2.
[0044] As Figuras 3 e 4 ilustram fluxos operacionais 300 e 400 de acordo com exemplos. Os Fluxos operacionais 300 e 400 podem ser executados em qualquer ambiente de computação adequado. Por exemplo, os fluxos operacionais podem ser executados por ambientes tais como ilustrados nas Figuras 1 e 2. Portanto, a descrição dos fluxos operacionais 300 e 400 podem referir a pelo menos um dos componentes das Figuras 1 e 2. No entanto, deve ser compreendido que as implementações das Figuras 1 e 2 são ambientes não limitantes para os fluxos de operações 300 e 400.
[0045] Mais ainda, apesar dos fluxos operacionais 300 e 400 serem ilustrados e descritos sequencialmente em uma ordem específica, em outros exemplos, as operações podem ser executadas em diferentes ordens, múltiplas vezes, e/ou em paralelo. Ainda, uma ou mais operações podem ser omitidas ou combinadas em alguns exemplos. Além disso, deve ser compreendido que os ordinais tais como "primeiro" não pretendem implicar uma ordem ou sequência, a menos que de outro modo especificado, e são utilizados para distinguir entre elementos similares. Por exemplo, uma "primeira solicitação de acesso" não precisa ser uma solicitação de acesso inicial, mas deve ser lida como sendo diferente de uma "segunda solicitação de acesso" ou uma "solicitação de retomada".
[0046] O fluxo operacional 300 ilustra operações para uma aplicação que comunica com um sistema de armazenamento. Em exemplos, fluxo 300 ilustrado na Figura 3 pode ser executado por uma aplicação que está executando em um cliente, por exemplo, aplicação 204 no nó 202 (Figura 2).
[0047] O fluxo 300 começa na operação 302, onde uma indicação é comunicada que falhas de sistema de armazenamento devem ser reportadas para a aplicação. A indicação pode ser feita para um gerenciador de IO, tal como o gerenciador de IO 206 (Figura 2). Em alguns exemplos, a indicação pode especificar um período de tempo designado para aguardar para uma solicitação de acesso ter sucesso, após o qual a solicitação de acesso deve ser reportada como tendo falhado.
[0048] O fluxo passa da operação 302 para operação 304, onde uma primeira solicitação de acesso para dados alvo é enviada. A primeira solicitação de acesso está associada com um primeiro identificador. Em alguns exemplos, o primeiro identificador pode estar incluído como parte da primeira solicitação de acesso. A solicitação de acesso para dados alvo pode incluir um número de operações de arquivo para executar sobre os dados alvo. As operações podem ser, por exemplo, aberturas para ler / escrever dados, enumerar atributos, solicitações de arrendamento para permitir a colocação em cache de dados localmente, ou outras operações de acesso de arquivo.
[0049] Na operação 306, uma resposta é recebida concedendo acesso aos dados alvo solicitados. Movendo para a operação 308, uma notificação de primeira falha é recebida. A falha pode resultar de, por exemplo, uma falha de comunicação, uma desmontagem de sistema de arquivo, ou uma reiniciação. O fluxo 300 então move para a operação 310, onde após receber a notificação de falha, uma determinação é feita para pausar a aplicação. Em outros exemplos, a operação 310 pode também incluir pausar as operações de IO e o processamento relativo. Por exemplo, a aplicação 204, após receber a notificação de falha, pode pausar uma máquina virtual convidada (Figura 2). Em alguns exemplos, a notificação de falha pode incluir uma indicação se a falha é esperada ser resolvida dentro de um período de tempo específico. Tais informações permitem a aplicação decidir se pausar as operações de IO, reiniciar, ou executar outra ação.
[0050] Na operação 312, uma indicação é recebida que a primeira falha foi resolvida. Movendo para a operação 314, a aplicação é reiniciada. Em outros exemplos, a operação 314 pode também incluir reiniciar as operações de IO e o processamento relativo. Por exemplo, uma aplicação 204, após receber a indicação que a primeira falha foi resolvida, pode reiniciar uma máquina virtual convidada (Figura 2). Em exemplos, a operação 314 pode prosseguir sem primeiro receber uma indicação que a falha foi resolvida.
[0051] O fluxo 300 então move para a operação 316, onde a solicitação de retomada para dados alvo é enviada. A solicitação de retomada está associada com o primeiro identificador e inclui uma indicação (tal como um sinalizador) que a solicitação é uma solicitação de retomada. Em alguns exemplos, o primeiro identificador pode estar incluído como parte da solicitação de retomada. Após a operação 316, o fluxo 300 passa para a operação 318, onde é determinado se a solicitação de retomada foi concedida. Se a solicitação de retomada for concedida, uma resposta é recebida 320 concedendo acesso aos dados alvo solicitados. Uma aplicação recebendo uma resposta que concede uma solicitação de retomada pode considerar a concessão da solicitação como confirmação que os dados alvo não mudaram a solicitação de acesso mais recente da aplicação para os dados alvo e a solicitação de retomada. A aplicação pode então continuar quaisquer operações inacabadas sobre os dados alvo. Se a solicitação de retomada for negada, uma ação adicional é executas 322. Por exemplo, uma aplicação que recebe uma negação de uma solicitação de retomada pode escolher reiniciar. Em exemplos, a aplicação pode também prover uma indicação da falha para um usuário através de uma interface de usuário e prover opções para o usuário para executar uma ação adicional.
[0052] O fluxo operacional 400 ilustras etapas para um sistema de armazenamento comunicar com uma aplicação. Em exemplos, o fluxo 400 pode ser executado por um sistema de armazenamento, tal como um ou mais servidores de arquivo, por exemplo, o nó 214A e/ou nó 214B (Figura 2).
[0053] O fluxo 400 começa na operação 402, onde uma primeira solicitação de acesso para dados alvo é recebida. A primeira solicitação de acesso está associada com um identificador de solicitação. Em alguns exemplos, o identificador de solicitação pode estar incluído como parte da primeira solicitação de acesso. A solicitação de acesso para dados alvo pode inclui um número de operações de arquivo para executar sobre os dados alvo. As operações podem ser, por exemplo, aberturas para ler / escrever dados, enumerar atributos, solicitações de arrendamento para permitir a colocação em cache de dados localmente, ou outras operações de acesso de arquivo. Após a operação 402, fluxo 400 passa para a decisão 404, onde uma decisão é feita quanto a se os dados alvo estão travados.
[0054] Se, na decisão 404, for determinado que os dados alvo estão travados, a fluxo passa para a operação 406 onde a primeira solicitação de acesso é negada. Em outros exemplos, a operação 406 pode compreender romper a trava, em cujo caso o fluxo procederia para a operação 408.
[0055] Se, na decisão 404, for determinado que os dados alvo não estão travados, o fluxo continua para a operação 408 onde uma trava é colocada sobre os dados alvo para o solicitante. A trava pode expirar após um período de tempo especificado, ou pode ser terminada de acordo com protocolos específicos. Movendo para a operação 410, o acesso é concedido para os dados alvo solicitados. O fluxo então continua para a operação 412, onde o identificador de solicitação é armazenado no armazenamento persistente.
[0056] O fluxo passa para a operação 414, na qual uma falha ocorre. A falha pode resultar, por exemplo, de uma interrupção de conexão, uma desmontagem de um sistema de arquivo associado com o sistema de armazenamento, ou uma reiniciação do sistema de armazenamento, etc. Em exemplos, o fluxo 400 inclui a operação 416, na qual a trava criada na operação 408 é liberara e o identificador de solicitação é retido no armazenamento persistente. Por exemplo, um solicitante pode não ter completado todas as operações sobre os dados alvo antes da falha; no entanto, a trava é liberada devido à expiração de um período de tempo, devido à própria falha, ou devido a outros fatores. O fluxo então continua para a decisão 418, onde uma decisão é feita quanto a se os dados alvo foram modificados desde que estes foram por último acessados na operação 410.
[0057] Se, na decisão 418, for determinado que os dados alvo foram modificados, o fluxo passa para a operação 420 onde o identificador armazenado de solicitação é removido do armazenamento persistente. Por exemplo, se os dados alvo foram mudados por outro processo após a trava ser liberada na operação 416, o identificador armazenado que associa os dados alvo com o solicitante pode ser apagado do armazenamento persistente.
[0058] O fluxo 400 então continua (ou da operação de decisão 418 ou da operação 420) para a operação 422, onde uma solicitação de retomada é recebida. A solicitação de retomada está associada com um identificador de solicitação de retomada, o qual pode ser o mesmo que o identificador de solicitação recebido na operação 402. Em alguns exemplos, o identificador de solicitação de retomada pode estar incluído como parte da solicitação de retomada. Ainda, em exemplos, decisão 418 pode ocorrer após receber a solicitação de retomada. Após a operação 422, o fluxo 400 passa para a decisão 424, onde uma determinação é feita se o identificador de solicitação coincide com um identificador armazenado no armazenamento persistente.
[0059] Se, na decisão 424, for determinado que o identificador de solicitação não coincide, o fluxo passa para a operação 426 onde a solicitação de retomada é negada.
[0060] Se, na decisão 424, for determinado que o identificador de solicitação coincide, em alguns exemplos o fluxo continua para a operação 428 onde uma trava é colocada sobre os dados alvo para o solicitante. A trava pode expirar após um período de tempo especificado, ou pode ser determinado de acordo com protocolos específicos. Movendo para a operação 430, o acesso é concedido para os dados alvo solicitados. Em outros exemplos, o luxo 400 inclui a operação 432, na qual a trava criada na operação 428 é eventualmente liberada e o identificador de solicitação é retido no armazenamento persistente. Após a operação 430, ou 432 em outros exemplos, fluxo operacional termina.
[0061] As Figuras 5-7 e as descrições associadas proveem uma discussão de uma variedade de ambientes de operação nos quais exemplos da invenção podem ser praticados. No entanto, os dispositivos e sistemas ilustrados e discutidos com relação às Figuras 5-7 são para propósitos de exemplo e ilustração e não são limitantes de um vasto número de configurações de dispositivo de computação que podem ser utilizadas para praticar exemplos da invenção, aqui descritos.
[0062] A Figura 5 é um diagrama de blocos que ilustra componentes físicos de um dispositivo de computação 502, por exemplo os nós 202, 208, 214A, e 214B, com os quais exemplos da presente descrição podem ser praticados. Os componentes de dispositivo de computação abaixo descritos podem ser adequados para os dispositivos de computação acima descritos. Em uma configuração básica, o dispositivo de computação 502 pode incluir pelo menos uma unidade de processamento 504 e uma memória de sistema 506. Dependendo da configuração e tipo de dispositivo de computação, a memória de sistema 506 pode compreender, mas não está limitada a, armazenamento volátil (por exemplo, memória de acesso randômico), armazenamento não volátil (por exemplo, memória somente de leitura), memória instantânea, ou qualquer combinação de tais memórias. A memória de sistema 506 pode incluir um sistema de operação 507 e um ou mais módulos de programa 508 adequados para executar as aplicações de software 520 tal como a aplicação 204, gerenciador de IO 206, e outro utilitário 210. O sistema de operação 507, por exemplo, pode ser adequado para controlar a operação do dispositivo de computação 502. Mais ainda, exemplos da invenção podem ser praticados em conjunto com uma biblioteca gráfica, outros sistemas de operação ou qualquer outro programa de aplicação e não está limitado a nenhuma aplicação ou sistema especifico. Esta configuração básica está ilustrada na Figura 5 por aqueles componentes dentro de uma linha tracejada 522. O dispositivo de computação 502 pode ter características ou funcionalidade adicionais. Por exemplo, o dispositivo de computação 502 pode também incluir dispositivos de armazenamentos de dados adicionais (removíveis e/ou não removíveis) tais como, por exemplo, discos magnéticos, discos óticos ou fita. Tal armazenamento adicional está ilustrado na Figura 5 por um dispositivo de armazenamento removível 509 e dispositivo de armazenamento não removível 510.
[0063] Como acima declarado, um número de módulos de programa e arquivo de dados podem estar armazenados na memória de sistema 506. Enquanto executando na unidade de processamento 504, os módulos de programa 508 (por exemplo, aplicação 204, gerenciador de IO 206, e outro utilitário 210) podem executar processos que incluem, mas não limitados a um ou mais dos estágios dos fluxos operacionais 300 e 400 ilustrados nas Figuras 3 e 4. Outros módulos de programa que podem ser utilizados de acordo com exemplos da presente invenção podem incluir aplicações de correio eletrônico e contatos, aplicações de processamento de palavra, aplicações de planilha, aplicações de banco de dados, aplicações de apresentação de slides, programas de aplicação de desenho ou auxiliado por computador, etc.
[0064] Mais ainda, exemplos da invenção podem ser praticados em um circuito elétrico que compreende elementos eletrônicos discretos, chips eletrônicos empacotados ou integrados que contêm portas lógicas, um circuito que utiliza um, ou sobre um único chip que contém elementos eletrônicos ou microprocessadores. Por exemplo, exemplos da invenção podem ser praticados através de um sistema em um chip (SOC) onde cada ou muitos dos componentes ilustrados na Figura 5 podem estar integrados sobre um único circuito integrado. Tal dispositivo de SOC pode incluir uma ou mais unidades de processamento, unidades gráficas, unidades de comunicações, unidades de virtualização de sistema e várias funcionalidades de aplicação todas as quais estão integradas (ou "queimadas") por sobre o substrato de chip como um único circuito integrado. Quando operando através de um SOC, a funcionalidade aqui descrita pode ser operada através de lógica específica de aplicação integrada com outros componentes do dispositivo de computação 502 sobre o único circuito integrado (chip). Exemplos da presente descrição podem também ser praticados utilizando outras tecnologias capazes de executar operações lógicas tais como, por exemplo, AND, OR, e NOT, incluindo mas não limitado a tecnologias mecânicas, óticas, fluídicas, de quantum. Além disso, exemplos da invenção podem ser praticados dentro de um computador de uso geral ou em quaisquer outros circuitos ou sistemas.
[0065] O dispositivo de computação 502 pode também ter um ou mais dispositivo(s) de entrada 512 tal como um teclado, um mouse, uma caneta, um dispositivo de entrada de som, um dispositivo de entrada de toque etc. O(s) dispositivo(s) de saída 514 tal como um display, alto-falantes, uma impressora, etc. podem também estar incluídos. Os dispositivos acima mencionados são exemplos e outros podem ser utilizados. O dispositivo de computação 504 pode incluir uma ou mais conexões de comunicação 516 que permitem comunicações com outros dispositivos de computação 518. Exemplos de conexões de comunicação adequadas 516 incluem, mas não estão limitados a, transmissor de RF, receptor, e/ou circuito de transceptor; barramento serial universal (USB), portas paralelas, e/ou seriais.
[0066] O termo meio legível por computador como aqui utilizado pode incluir um meio de armazenamento de computador. O meio de armazenamento de computador pode incluir um meio volátil e não volátil, removível e não removível implementados em qualquer método ou tecnologia para armazenamento de informações, tal como instruções legíveis por computador, estruturas de dados, ou módulos de programa. A memória de sistema 506, o dispositivo de armazenamento removível 509, e o dispositivo de armazenamento não removível 510 são todos exemplos de meio de armazenamento de computador (isto é, armazenamento de memória.) O meio de armazenamento de computador pode incluir RAM, ROM, memória somente de leitura eletricamente apagável (EEPROM), memória instantânea ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro artigo de manufatura o qual pode ser utilizado para armazenar informações e o qual pode ser acessado pelo dispositivo de computação 502. Qualquer tal meio de armazenamento de computador pode fazer parte do dispositivo de computação 502. O meio de armazenamento de computador não inclui uma onda portadora ou outro sinal de dados propagado ou modulado.
[0067] O meio de comunicação pode ser incorporado por instruções legíveis por computador, estruturas de dados, módulos de programa, ou outros dados em um sinal de dados modulado, tal como uma onda portadora ou outro mecanismo de transporte, e inclui qualquer meio de informações. O termo "sinal de dados modulado" pode descrever um sinal que tem uma ou mais características ajustadas ou mudadas de tal modo a codificar as informações no sinal. Como exemplo, e não limitação, o meio de comunicação pode incluir um meio com fio tal como uma rede com fio ou conexão com fio direta, um meio sem fio tal como acústico, frequência de rádio (RF), infravermelho, e outros meios sem fio.
[0068] As Figuras 6A e 6B ilustram um dispositivo de computação móvel 600, por exemplo, um telefone móvel, um smartphone, um computador pessoal tablet, um computador laptop, e similares, com os quais exemplos da invenção podem ser praticados. Por exemplo, o dispositivo de computação móvel 600 pode ser utilizado para implementar os nós de cliente 202 e 208. Com referência à Figura 6A, um exemplo de um dispositivo de computação móvel 600 para implementar os exemplos está ilustrado. Em uma configuração básica, o dispositivo de computação móvel 600 é um computador portátil que tem tanto elementos de entrada quanto elementos de saída. O dispositivo de computação móvel 600 tipicamente inclui um display 605 e um ou mis botões de entrada 610 que permitem o usuário inserir informações no dispositivo de computação móvel 600. O display 605 do dispositivo de computação móvel 600 pode também funcionar como um dispositivo de entrada (por exemplo, um display de tela de toque). Se incluído, um elemento de entrada lateral opcional 615 permite uma entrada de usuário adicional. O elemento de entrada lateral 615 pode ser uma chave rotativa, um botão, ou qualquer outro tipo de elemento de entrada manual. Em exemplos alternativos, o dispositivo de computação móvel 600 pode incorporar mais ou menos elementos de entrada. Por exemplo, o display 605 pode não ser uma tela de toque em alguns exemplos. Em ainda outro exemplo alternativo, o dispositivo de computação móvel 600 é um sistema de telefone portátil, tal como um telefone celular. O dispositivo de computação móvel 600 pode também inclui um teclado opcional 635. O teclado opcional 635 pode ser um teclado físico ou um teclado "soft" gerado sobre o display de tela de toque. Em vários exemplos, os elementos de saída incluem o display 605 para mostrar uma interface de usuário gráfica (GUI), um indicador visual 620 (por exemplo, um diodo de emissão de luz), e/ou um transdutor de áudio 625 (por exemplo, um alto-falante). Em alguns exemplos, o dispositivo de computação móvel 600 incorpora um transdutor de vibração para prover o usuário com um retorno táctil. Em ainda outro exemplo, o dispositivo de computação móvel 600 incorpora portas de entrada e/ou saída, tal como uma entrada de áudio (por exemplo, um conector de microfone) uma saída de áudio (por exemplo, um conector de fone de ouvido), e um saída de vídeo (por exemplo, uma porta HDMI) para enviar sinais para ou receber sinais de um dispositivo externo.
[0069] A Figura 6B é um diagrama de blocos que ilustra a arquitetura de um exemplo de um dispositivo de computação móvel. Isto é, o dispositivo de computação móvel 600 pode incorporar um sistema (isto é, uma arquitetura) 602 para implementar alguns exemplos. Em um exemplo, o sistema 602 está implementado como um "smartphone" capaz de executar uma ou mais aplicações (por exemplo, browser, e-mail, agenda, gerenciadores de contato, clientes de mensagens, jogos, e clientes / jogadores de mídia). Em alguns exemplos, o sistema 602 está integrado com um dispositivo de computação, tal como uma assistente digital pessoal integrado (PDA) e telefone sem fio.
[0070] Um ou mais programas de aplicação 666 podem ser carregados na memória 662 e executados ou em associação com o sistema de operação 664. Exemplos dos programas de aplicação incluem programas de discador de telefone, programas de e-mail, programas de gerenciamento de informações pessoais (PIM), programas de processamento de palavra, programas de planilha, programas de browser de Internet, programas de mensagens, e assim por diante. O sistema 602 também inclui uma inclui a área de armazenamento não volátil 668 dentro da memória 662. A área de armazenamento não volátil 668 pode ser utilizada para armazenar informações persistentes que não devem ser perdidas se o sistema 602 for desligado. Os programas de aplicação 666 podem utilizar e armazenar informações na área de armazenamento não volátil 668, tal como e-mail ou outras mensagens utilizadas por uma aplicação de email, e similares. Uma aplicação de sincronização (não mostrada) também reside no sistema 602 e está programada para interagir com uma aplicação de sincronização correspondentes residente em um computador hospedeiro para manter as informações armazenadas na área de armazenamento não volátil 668 sincronizadas com as informações correspondentes armazenadas no computador hospedeiro. Como deve ser apreciado, outras aplicações podem ser carregadas na memória 662 e executadas no dispositivo de computação móvel 600, incluindo aplicação 204, gerenciador de IO 206, e outro utilitário 210 aqui descritos.
[0071] O sistema 602 tem uma fonte de alimentação 670, a qual pode ser implementada como uma ou mais baterias. A fonte de alimentação 670 poderia ainda incluir uma fonte de energia externa, tal como um adaptador CA ou um berço de doca alimentado que suplementa ou recarrega as baterias.
[0072] O sistema 602 pode incluir porta de dispositivo periférico 678 que executa a função de facilitar a conectividade entre o sistema 602 e um ou mais dispositivos periféricos. As transmissões para e da porta de dispositivo periférico 672 são conduzidas sob controle do sistema de operação 664. Em outras palavras, as comunicações recebidas pela porta de dispositivo periférico 678 podem ser disseminadas para os programas de aplicação 666 através do sistema de operação 664, e vice versa.
[0073] O sistema 602 pode também incluir um rádio 672 que executa a função de transmitir e receber comunicação de frequência de rádio. O rádio 672 facilita uma conectividade sem fio entre o sistema 602 e o "mundo exterior", através de uma portadora de comunicações ou provedor de serviço. As transmissões para o e do rádio 672 são conduzidas sob o controle do sistema de operação 664. Em outras palavras, as comunicações recebidas pelo rádio 672 podem ser disseminadas para os programas de aplicação 666 através do sistema de operação 664, e vice versa.
[0074] O indicador visual 620 pode ser utilizado para prover notificações visuais, e/ou uma interface de áudio 674 pode ser utilizada para produzir notificações audíveis através do transdutor de áudio 625. No exemplo ilustrado, o indicador visual 620 é um diodo de emissão de luz (LED) e o transdutor de áudio 625 é um alto-falante. Estes dispositivos podem estar diretamente acoplados na fonte de alimentação 670 de modo que quando ativados, estes permanecem ligados por uma duração de ditada pelo mecanismo de notificação mesmo se o processador 660 e outros componentes poderiam desligar para conservar energia de bateria. O LED pode ser programado para permanecer ligado indefinidamente até que o usuário execute uma ação para indicar o status ligado do dispositivo. A interface de áudio 674 é utilizada para prover sinais audíveis para e receber sinais audíveis do usuário. Por exemplo, além de estar acoplada no transdutor de áudio 625, a interface de áudio 674 pode também estar acoplada um microfone para receber uma entrada audível, de modo que facilitar uma conversação telefônica. De acordo com exemplos da presente invenção, o microfone pode também servir como um sensor de áudio para facilitar o controle de notificações, como será abaixo descrito. O sistema 602 pode ainda inclui uma interface de vídeo 676 que permite uma operação de uma câmera incorporada 630 para gravar imagens paradas, fluxo de vídeo, e similares.
[0075] Um dispositivo de computação móvel 600 que implementa o sistema 602 pode ter características ou funcionalidade adicionais. Por exemplo, o dispositivo de computação móvel 600 pode também incluir uns dispositivos de armazenamento de dados adicionais (removíveis e/ou não removíveis) tais como, discos magnéticos, discos óticos ou fita. Tal armazenamento adicional está ilustrado na Figura 6B pela área de armazenamento não volátil 668.
[0076] Dados / informações gerados ou capturados pelo dispositivo de computação móvel 600 e armazenados no sistema 602 podem ser armazenados localmente no dispositivo de computação móvel 600, como acima descrito, ou os dados podem ser armazenados em qualquer número de meio de armazenamento que possa ser acessado pelo dispositivo através do rádio 672 ou através de uma conexão com fio entre o dispositivo de computação móvel 600 e um dispositivo de computação separado associado com o dispositivo de computação móvel 600, por exemplo, um computador servidor em uma rede computação distribuída, tal como a Internet. Como deve ser apreciado tais dados / informações podem ser acessados através do dispositivo de computação móvel 600 através do rádio 672 ou através de uma rede computação distribuída. Similarmente, tais dados / informações podem ser prontamente transferidos entre dispositivos de computação para armazenamento e utilização de acordo com meios de transferência e armazenamento dados / informações bem conhecidos, incluindo correio eletrônico e sistema de compartilhamento de dados / informações colaborativos.
[0077] A Figura 7 ilustra um exemplo da arquitetura de um sistema para prover uma aplicação que confiavelmente acessa dados alvo em um sistema de armazenamento e entrega as falhas de comunicação para um ou mais dispositivo de cliente, como acima descrito. Os dados alvo acessados, interagidos com, ou editados em associação com a aplicação 204, gerenciador de IO 206, outro utilitário 210, e sistema de armazenamento 214 podem ser armazenados em diferentes canais de comunicação outros tipos de armazenamento. Por exemplo, vários documentos podem ser armazenados utilizando um serviço de diretório 722, um portal da web 724, um serviço de mailbox 726, um armazenamento de mensagens instantâneas 728, ou um site de rede social 730. A aplicação 204, gerenciador de IO 206, outro utilitário 210, e sistema de armazenamento 214 podem utilizar qualquer um destes tipos de sistemas ou similares para permitir a utilização de dados, como aqui descrito. Um servidor 720 pode prover o sistema de armazenamento 214 para utilização pelos nós de cliente 202 e 208 operando no dispositivo de computação geral 502 e dispositivo(s) móvel(is) 600 através da rede 715. Como exemplo, a rede 715 pode compreender a Internet ou qualquer outro tipo de rede local ou de área ampla, e os nós de cliente 202 e 208 podem ser implementados como um dispositivo de computação 502 incorporado em um computador pessoal, um dispositivo de computação tablet, e/ou por um dispositivo de computação móvel 600 (por exemplo, um smartphone). Qualquer uma destas modalidades do cliente dispositivo de computação 502 ou 600 pode obter conteúdo do armazenamento 716.
[0078] Entre outros exemplos, a presente descrição apresenta sistemas e métodos para indicar, por uma aplicação, que uma falha durante uma seção deve ser reportada para a aplicação; enviar uma primeira solicitação de acesso para dados alvo para o sistema de armazenamento, a primeira solicitação de acesso associada com um primeiro identificador; receber uma primeira resposta de acesso que concede acesso aos dados alvo; receber uma notificação de uma primeira falha; com base na notificação da primeira falha, pausar a aplicação; reiniciar a aplicação; enviar uma solicitação de retomada para os dados alvo para o sistema de armazenamento, a solicitação de retomada associada com o primeiro identificador; e receber uma resposta de retomada que concede acesso aos dados alvo. Em exemplos, a falha compreende pelo menos uma de: uma desconexão do sistema de armazenamento, uma desmontagem de um sistema de arquivo associada com o sistema de armazenamento, ou uma reiniciação do sistema de armazenamento. Em exemplos adicionais, o primeiro identificador está incluído na primeira solicitação de acesso. Em exemplos adicionais, indicar compreende prover uma indicação para um gerenciador de entrada / saída (IO) de que as solicitações de IO que estão retardadas devido à falha durante a seção devem ser reportadas para a aplicação se não completadas dentro de um período de tempo designado. Além disso, receber uma notificação da primeira falha pode incluir receber uma notificação que uma segunda solicitação de acesso não foi completada. Ainda, pausar a aplicação pode incluir pausar as operações de IO e o processamento relativo. Além disso, os sistemas e métodos podem incluir completar uma solicitação de escrita em cache que não completada antes da falha.
[0079] Descrições adicionais aqui descrevem sistemas e métodos para receber uma primeira solicitação de acesso para dados alvo, os dados alvo armazenados por um sistema de armazenamento, e a primeira solicitação de acesso associada com um identificador de solicitação; armazenar o identificador de solicitação em armazenamento persistente como um primeiro identificador armazenado; conceder a primeira solicitação de acesso para os dados alvo; após uma falha, receber uma solicitação de retomada para os dados alvo, a solicitação de retomada associada com o identificador de solicitação; determinar se os dados alvo mudaram desde a falha comparando o identificador de solicitação na solicitação de retomada com um ou mais identificadores no armazenamento persistente; quando os dados alvo não mudaram desde a falha, conceder a solicitação de retomada para os dados alvo; e quando os dados alvo mudaram desde a falha, negar a solicitação de retomada. Em exemplos, o sistema de armazenamento é um sistema de arquivo compartilhado em um grupamento de servidores, e determinar se os dados alvo mudaram desde a falha compreende apagar o primeiro identificador armazenado do armazenamento persistente antes da solicitação de retomada ser recebida. Ainda, em exemplos, a falha compreende pelo menos uma de: uma interrupção de conexão, uma desmontagem de um sistema de arquivo associada com o sistema de armazenamento, ou uma reiniciação do sistema de armazenamento. Em exemplos adicionais, os sistemas e métodos compreendem travar os dados alvo; e após conceder a primeira solicitação de acesso, liberar a trava sobre os dados alvo sem apagar o primeiro identificador do armazenamento persistente. Além disso, em exemplos, a trava sobre os dados alvo persiste por um primeiro período de tempo, e o primeiro período de tempo pode ser zero.
[0080] A presente descrição também inclui um sistema que inclui pelo menos um processador configurado para executar instruções executáveis por computador; pelo menos um meio de armazenamento legível por computador que armazena as instruções executáveis por computador que, quando executadas por pelo menos um processador, proveem um sistema de armazenamento configurado para: receber uma primeira solicitação de acesso para dados alvo, os dados alvo armazenados por um sistema de armazenamento, e a primeira solicitação de acesso incluindo um identificador de solicitação; armazenar o identificador de solicitação em armazenamento persistente como um primeiro identificador armazenado; conceder a primeira solicitação de acesso para os dados alvo; após uma falha, receber uma solicitação de retomada para os dados alvo, a solicitação de retomada incluindo o identificador de solicitação e incluindo um sinalizador de solicitação de retomada; determinar se os dados alvo mudaram desde a falha comparando o identificador de solicitação na solicitação de retomada com um ou mais identificadores no armazenamento persistente; quando os dados alvo não mudaram desde a falha, conceder a solicitação de retomada para os dados alvo; e quando os dados alvo mudaram desde a falha, negar a solicitação de retomada. Em exemplos, determinar se os dados alvo mudaram desde a falha compreende apagar o primeiro identificador armazenado do armazenamento persistente antes da solicitação de retomada ser recebida. Além disso, a falha pode compreender pelo menos uma de: uma interrupção de conexão, uma desmontagem do sistema de arquivo associada com o sistema de armazenamento, ou uma reiniciação do sistema de armazenamento. Ainda, o sistema de armazenamento pode ser um sistema de arquivo compartilhado em um grupamento de servidores. Além disso, a trava sobre os dados alvo pode persistir por um primeiro período de tempo, e o primeiro período de tempo pode ser zero.
[0081] Referência foi feita através de toda esta especificação a "um exemplo" ou "um exemplo", significando que um aspecto, estrutura, ou característica descrito específico está incluído em pelo menos um exemplo. Assim, a utilização de tais frases pode referir a mais do que apenas um exemplo. Mais ainda, os aspectos, estrutura, ou características descritas podem ser combinados em qualquer modo adequado em um ou mais more exemplos.
[0082] Alguém versado na técnica relevante pode reconhecer, no entanto, que os exemplos podem ser praticados sem um ou mais dos detalhes específicos, ou com outros métodos, recursos, materiais, etc. Em outros casos, estruturas, recursos, ou operações bem conhecidos não foram mostrados ou descritos em detalhes meramente para observar obscurecer aspectos dos exemplos.
[0083] Apesar de exemplos e aplicações exemplares terem sido ilustrados e descritos, deve ser compreendido que os exemplos não estão limitados à configuração e recursos precisos acima descritos. Várias modificações, mudanças, e variações aparentes para aqueles versados na técnica podem ser feitas na disposição, operação, e detalhes dos métodos e sistemas aqui descritos sem afastar do escopo dos exemplos reivindicados.

Claims (9)

1. Método implementado por computador, o método caracterizado pelo fato de que compreende: receber (402) uma primeira solicitação de acesso para dados alvo, os dados alvo armazenados por um sistema de armazenamento (108; 214), e a primeira solicitação de acesso associada com um identificador de solicitação; armazenar (412) o identificador de solicitação em armazenamento persistente (224) como um primeiro identificador armazenado; conceder (410) a primeira solicitação de acesso para os dados alvo; após uma falha, receber (422) uma solicitação de reiniciação para os dados alvo, a solicitação de reiniciação associada com o identificador de solicitação; determinar (424) se os dados alvo mudaram desde a falha comparando o identificador de solicitação na solicitação de reiniciação com um ou mais identificadores no armazenamento persistente (224); quando os dados alvo não mudaram desde a falha, conceder a solicitação de reiniciação para os dados alvo; e quando os dados alvo mudaram desde a falha, negar (426) a solicitação de reiniciação; o método ainda compreende: travar (428) os dados alvo; e após conceder a primeira solicitação de acesso, liberar (432) a trava sobre os dados alvo sem apagar o primeiro identificador do armazenamento persistente (224).
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar se os dados alvo mudaram desde a falha compreende apagar o primeiro identificador armazenado do armazenamento persistente antes da solicitação de reiniciação ser recebida.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a trava sobre os dados alvo persiste por um primeiro período de tempo.
4. Método de acordo com a reivindicação 3, caracterizado pelo fato de que o primeiro período de tempo é zero.
5. Sistema de computador, o sistema caracterizado pelo fato de que compreende: pelo menos um processador configurado para executar um método; pelo menos um meio de armazenamento legível por computador que armazena o método que, quando executado por pelo menos um processador, fornece um sistema de armazenamento (108; 214) configurado para: receber (402) uma primeira solicitação de acesso para dados alvo, os dados alvo armazenados pelo sistema de armazenamento (208; 214), e a primeira solicitação de acesso incluindo um identificador de solicitação; armazenar (412) o identificador de solicitação em um armazenamento persistente como um primeiro identificador armazenado; conceder (410) a primeira solicitação de acesso para os dados alvo; após uma falha, receber (422) uma solicitação de reiniciação para os dados alvo, a solicitação de reiniciação incluindo o identificador de solicitação e incluindo um sinalizador de solicitação de reiniciação; determinar (424) se os dados alvo mudaram desde a falha comparando o identificador de solicitação na solicitação de reiniciação com um ou mais identificadores no armazenamento persistente (224); quando os dados alvo não mudaram desde a falha, conceder a solicitação de reiniciação para os dados alvo; e quando os dados alvo mudaram desde a falha, negar (426) a solicitação de reiniciação; o sistema ainda adaptado para: travar (428) os dados alvo; e após conceder a primeira solicitação de acesso, liberar (432) a trava sobre os dados alvo sem apagar o primeiro identificador do armazenamento persistente (224).
6. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que determinar se os dados alvo mudaram desde a falha compreende apagar o primeiro identificador armazenado do armazenamento persistente antes da solicitação de reiniciação ser recebida.
7. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que o sistema de armazenamento é um sistema de arquivo compartilhado em um grupamento de servidores.
8. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que a trava sobre os dados alvo persiste por um primeiro período de tempo.
9. Sistema, de acordo com a reivindicação 5, caracterizado pelo fato de que o primeiro período de tempo é zero.
BR112017002518-3A 2014-08-07 2015-07-29 Método implementado por computador e sistema de computador para acesso de dados seguro após falha de armazenamento BR112017002518B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/454,415 2014-08-07
US14/454,415 US9665432B2 (en) 2014-08-07 2014-08-07 Safe data access following storage failure
PCT/US2015/042555 WO2016022344A1 (en) 2014-08-07 2015-07-29 Safe data access following storage failure

Publications (3)

Publication Number Publication Date
BR112017002518A2 BR112017002518A2 (pt) 2017-12-05
BR112017002518A8 BR112017002518A8 (pt) 2023-02-23
BR112017002518B1 true BR112017002518B1 (pt) 2023-04-18

Family

ID=53879778

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017002518-3A BR112017002518B1 (pt) 2014-08-07 2015-07-29 Método implementado por computador e sistema de computador para acesso de dados seguro após falha de armazenamento

Country Status (7)

Country Link
US (2) US9665432B2 (pt)
EP (1) EP3178003B1 (pt)
JP (1) JP6602369B2 (pt)
CN (2) CN106716378B (pt)
BR (1) BR112017002518B1 (pt)
RU (1) RU2683167C2 (pt)
WO (1) WO2016022344A1 (pt)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10454714B2 (en) 2013-07-10 2019-10-22 Nicira, Inc. Method and system of overlay flow control
US10749711B2 (en) 2013-07-10 2020-08-18 Nicira, Inc. Network-link method useful for a last-mile connectivity in an edge-gateway multipath system
US9459974B2 (en) 2014-05-28 2016-10-04 International Business Machines Corporation Recovery mechanisms across storage nodes that reduce the impact on host input and output operations
US9665432B2 (en) 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
CN107111594A (zh) * 2014-09-24 2017-08-29 V5系统公司 动态数据管理
US10191879B2 (en) * 2015-03-31 2019-01-29 Veritas Technologies Llc System and method for creating snapshots in openflame environment
US10425382B2 (en) 2015-04-13 2019-09-24 Nicira, Inc. Method and system of a cloud-based multipath routing protocol
US10498652B2 (en) 2015-04-13 2019-12-03 Nicira, Inc. Method and system of application-aware routing with crowdsourcing
US10135789B2 (en) 2015-04-13 2018-11-20 Nicira, Inc. Method and system of establishing a virtual private network in a cloud service for branch networking
US9934083B2 (en) 2015-10-14 2018-04-03 International Business Machines Corporation Requesting manual intervention on failure of initial microcode load attempts during recovery of modified customer data
US10091904B2 (en) * 2016-07-22 2018-10-02 Intel Corporation Storage sled for data center
US10942907B2 (en) 2016-11-04 2021-03-09 Oracle International Corporation Safe release of database sessions for planned maintenance operations
CN108108255A (zh) * 2016-11-25 2018-06-01 中兴通讯股份有限公司 虚拟机故障的检测和恢复方法及装置
US10992568B2 (en) 2017-01-31 2021-04-27 Vmware, Inc. High performance software-defined core network
US11121962B2 (en) 2017-01-31 2021-09-14 Vmware, Inc. High performance software-defined core network
US20180219765A1 (en) 2017-01-31 2018-08-02 Waltz Networks Method and Apparatus for Network Traffic Control Optimization
US11706127B2 (en) 2017-01-31 2023-07-18 Vmware, Inc. High performance software-defined core network
US20200036624A1 (en) 2017-01-31 2020-01-30 The Mode Group High performance software-defined core network
US10992558B1 (en) 2017-11-06 2021-04-27 Vmware, Inc. Method and apparatus for distributed data network traffic optimization
US11252079B2 (en) 2017-01-31 2022-02-15 Vmware, Inc. High performance software-defined core network
US10574528B2 (en) 2017-02-11 2020-02-25 Nicira, Inc. Network multi-source inbound quality of service methods and systems
US10778528B2 (en) 2017-02-11 2020-09-15 Nicira, Inc. Method and system of connecting to a multipath hub in a cluster
US10523539B2 (en) 2017-06-22 2019-12-31 Nicira, Inc. Method and system of resiliency in cloud-delivered SD-WAN
JPWO2019026442A1 (ja) * 2017-08-02 2020-08-13 フェリカネットワークス株式会社 情報処理装置、および情報処理方法
US11556500B2 (en) * 2017-09-29 2023-01-17 Oracle International Corporation Session templates
US11089111B2 (en) 2017-10-02 2021-08-10 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US10999165B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Three tiers of SaaS providers for deploying compute and network infrastructure in the public cloud
US11115480B2 (en) 2017-10-02 2021-09-07 Vmware, Inc. Layer four optimization for a virtual network defined over public cloud
US11005684B2 (en) 2017-10-02 2021-05-11 Vmware, Inc. Creating virtual networks spanning multiple public clouds
US10959098B2 (en) 2017-10-02 2021-03-23 Vmware, Inc. Dynamically specifying multiple public cloud edge nodes to connect to an external multi-computer node
US10999100B2 (en) 2017-10-02 2021-05-04 Vmware, Inc. Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider
US11223514B2 (en) * 2017-11-09 2022-01-11 Nicira, Inc. Method and system of a dynamic high-availability mode based on current wide area network connectivity
US10481823B2 (en) * 2018-02-21 2019-11-19 International Business Machines Corporation Data storage system performing data relocation based on temporal proximity of accesses
US11327857B2 (en) * 2018-04-04 2022-05-10 Netapp Inc. Faster replay of metadata and data operations using inode number based dependency graph
CN110618951A (zh) * 2018-06-20 2019-12-27 中兴通讯股份有限公司 系统高可用存储控制方法、装置、通信设备及存储介质
CN109144761A (zh) * 2018-07-12 2019-01-04 北京猫眼文化传媒有限公司 一种数据故障处理方法及系统
US11243855B2 (en) 2018-07-25 2022-02-08 Red Hat Israel, Ltd. Automated restart of paused virtual machines due to input/output errors
JP7081402B2 (ja) * 2018-09-07 2022-06-07 富士通株式会社 排他制御システム、排他制御プログラム、および排他制御方法
US11044291B2 (en) * 2018-09-28 2021-06-22 Microsft Technology Licensing, LLC Enhanced anchor protocol for event stream processing
CN109683824B (zh) * 2018-12-20 2022-06-10 广东浪潮大数据研究有限公司 一种san双控存储系统的节点管理方法及相关装置
US11171885B2 (en) 2019-08-27 2021-11-09 Vmware, Inc. Providing recommendations for implementing virtual networks
US11301485B2 (en) * 2019-09-09 2022-04-12 Salesforce.Com, Inc. Offloading data to a cold storage database
US11687507B2 (en) 2019-09-12 2023-06-27 Oracle International Corporation Termination of database sessions for planned failover
US11936739B2 (en) 2019-09-12 2024-03-19 Oracle International Corporation Automated reset of session state
US11044190B2 (en) 2019-10-28 2021-06-22 Vmware, Inc. Managing forwarding elements at edge nodes connected to a virtual network
US11394640B2 (en) 2019-12-12 2022-07-19 Vmware, Inc. Collecting and analyzing data regarding flows associated with DPI parameters
US11489783B2 (en) 2019-12-12 2022-11-01 Vmware, Inc. Performing deep packet inspection in a software defined wide area network
US12041479B2 (en) 2020-01-24 2024-07-16 VMware LLC Accurate traffic steering between links through sub-path path quality metrics
US11245641B2 (en) 2020-07-02 2022-02-08 Vmware, Inc. Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN
US11783209B2 (en) * 2020-07-09 2023-10-10 Bank Of America Corporation Artificial intelligence based dynamic orchestration engine for automatically processing application service requests
US11709710B2 (en) 2020-07-30 2023-07-25 Vmware, Inc. Memory allocator for I/O operations
US11575591B2 (en) 2020-11-17 2023-02-07 Vmware, Inc. Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN
US11575600B2 (en) 2020-11-24 2023-02-07 Vmware, Inc. Tunnel-less SD-WAN
CN112637293B (zh) * 2020-12-14 2023-03-24 北京爱奇艺科技有限公司 数据修复系统、方法、装置、电子设备及存储介质
US11601356B2 (en) 2020-12-29 2023-03-07 Vmware, Inc. Emulating packet flows to assess network links for SD-WAN
US11792127B2 (en) 2021-01-18 2023-10-17 Vmware, Inc. Network-aware load balancing
US11979325B2 (en) 2021-01-28 2024-05-07 VMware LLC Dynamic SD-WAN hub cluster scaling with machine learning
US11637768B2 (en) 2021-05-03 2023-04-25 Vmware, Inc. On demand routing mesh for routing packets through SD-WAN edge forwarding nodes in an SD-WAN
US12009987B2 (en) 2021-05-03 2024-06-11 VMware LLC Methods to support dynamic transit paths through hub clustering across branches in SD-WAN
US11729065B2 (en) 2021-05-06 2023-08-15 Vmware, Inc. Methods for application defined virtual network service among multiple transport in SD-WAN
US12015536B2 (en) 2021-06-18 2024-06-18 VMware LLC Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds
US11489720B1 (en) 2021-06-18 2022-11-01 Vmware, Inc. Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics
US12047282B2 (en) 2021-07-22 2024-07-23 VMware LLC Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN
US11375005B1 (en) 2021-07-24 2022-06-28 Vmware, Inc. High availability solutions for a secure access service edge application
US11943146B2 (en) 2021-10-01 2024-03-26 VMware LLC Traffic prioritization in SD-WAN
US11909815B2 (en) 2022-06-06 2024-02-20 VMware LLC Routing based on geolocation costs
US12057993B1 (en) 2023-03-27 2024-08-06 VMware LLC Identifying and remediating anomalies in a self-healing network
US12034587B1 (en) 2023-03-27 2024-07-09 VMware LLC Identifying and remediating anomalies in a self-healing network

Family Cites Families (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1229091A (en) * 1916-08-30 1917-06-05 X Ray Incubator Company Gas and smoke sealing device for incubators.
JPH04271454A (ja) * 1991-02-27 1992-09-28 Toshiba Corp 疎結合計算機システム
JPH06301655A (ja) 1993-04-14 1994-10-28 Hitachi Ltd 分散処理システム
US5625817A (en) * 1995-02-28 1997-04-29 Bmc Software, Inc. Method of identifying DB2 objects to be recovered from an unavailable DASD volume without need to access the DASD volume itself and without need for pre-failure preparation
JPH10133971A (ja) 1996-10-25 1998-05-22 Nec Corp ファイル転送処理方式
US5907849A (en) * 1997-05-29 1999-05-25 International Business Machines Corporation Method and system for recovery in a partitioned shared nothing database system using virtual share disks
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
JP4040178B2 (ja) 1998-07-21 2008-01-30 キヤノン株式会社 通信制御装置、通信制御方法、および、記憶媒体
US6301676B1 (en) * 1999-01-22 2001-10-09 Sun Microsystems, Inc. Robust and recoverable interprocess locks
US6539446B1 (en) * 1999-05-07 2003-03-25 Oracle Corporation Resource locking approach
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
AU2001248163A1 (en) 2000-03-31 2001-10-23 Mdsi Mobile Data Solutions, Inc. Systems and methods for enhancing connectivity
WO2001077844A1 (fr) 2000-04-10 2001-10-18 Fujitsu Limited Systeme de traitement d'informations et serveur associe
US6564229B1 (en) * 2000-06-08 2003-05-13 International Business Machines Corporation System and method for pausing and resuming move/copy operations
FR2820874B1 (fr) * 2001-02-13 2003-05-30 St Microelectronics Sa Procede de gestion a acces aleatoire et rapide d'une memoire dram
WO2002001838A2 (en) 2000-06-26 2002-01-03 Kpmg Consulting, Inc. Using a pseudo-clec to test operational support systems of an incumbent local exchange carrier
US6990606B2 (en) * 2000-07-28 2006-01-24 International Business Machines Corporation Cascading failover of a data management application for shared disk file systems in loosely coupled node clusters
US6839662B2 (en) 2001-08-17 2005-01-04 Lockheed Martin Corporation Command and control system architecture for convenient upgrading
KR20030056540A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 데이터베이스 관리 시스템에서 시스템 고장에 대비한 파일삭제 및 회복 방법
US7093004B2 (en) 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
JP4176359B2 (ja) 2002-03-01 2008-11-05 株式会社エヌ・ティ・ティ・ドコモ データ取得方法、中継装置、プログラムおよび記録媒体
US6732171B2 (en) * 2002-05-31 2004-05-04 Lefthand Networks, Inc. Distributed network storage system with virtualization
US7254687B1 (en) * 2002-12-16 2007-08-07 Cisco Technology, Inc. Memory controller that tracks queue operations to detect race conditions
US7284151B2 (en) * 2003-07-21 2007-10-16 Oracle International Corporation Conditional data access after database system failure
US7188273B2 (en) * 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US20050165881A1 (en) 2004-01-23 2005-07-28 Pipelinefx, L.L.C. Event-driven queuing system and method
US8543781B2 (en) * 2004-02-06 2013-09-24 Vmware, Inc. Hybrid locking using network and on-disk based schemes
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
WO2005111772A2 (en) 2004-05-13 2005-11-24 Matsushita Electric Industrial Co., Ltd. An information processing apparatus, an integrated circuit, a data transfer controlling method, a data transfer controlling program, a program storage medium, a program transmission medium and a data storage medium
US20050268300A1 (en) 2004-05-14 2005-12-01 Microsoft Corporation Distributed task scheduler for computing environments
US11049349B2 (en) 2004-06-01 2021-06-29 Daniel William Onischuk Computerized voting system
US7979862B2 (en) 2004-12-21 2011-07-12 Hewlett-Packard Development Company, L.P. System and method for replacing an inoperable master workload management process
US7962915B2 (en) * 2005-03-18 2011-06-14 International Business Machines Corporation System and method for preserving state for a cluster of data servers in the presence of load-balancing, failover, and fail-back events
CN101438242B (zh) * 2006-03-30 2013-09-18 晶像股份有限公司 共享非易失性存储器体系结构
US8453142B2 (en) 2007-04-26 2013-05-28 Hewlett-Packard Development Company, L.P. Virtual machine control
US8180747B2 (en) 2007-11-12 2012-05-15 F5 Networks, Inc. Load sharing cluster file systems
US20090234643A1 (en) 2008-03-14 2009-09-17 Afifi Sammy S Transcription system and method
US8259910B2 (en) 2008-03-14 2012-09-04 Voicecloud Method and system for transcribing audio messages
US10372924B2 (en) 2008-05-12 2019-08-06 George Madathilparambil George Master device for controlling application security environments
US7840730B2 (en) * 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
JP5223707B2 (ja) 2009-02-05 2013-06-26 富士通株式会社 ソフトウェア更新指示プログラム、ソフトウェア更新指示方法、および情報処理装置
US8914511B1 (en) 2009-06-26 2014-12-16 VMTurbo, Inc. Managing resources in virtualization systems
US9021158B2 (en) * 2009-09-09 2015-04-28 SanDisk Technologies, Inc. Program suspend/resume for memory
US8458500B2 (en) 2009-11-30 2013-06-04 International Business Machines Corporation Server allocation to workload based on energy profiles
US8355713B1 (en) * 2010-01-21 2013-01-15 Sprint Spectrum L.P. Use of femtocell to control wireless communication device priorities
US8572612B2 (en) 2010-04-14 2013-10-29 International Business Machines Corporation Autonomic scaling of virtual machines in a cloud computing environment
JP4951092B2 (ja) * 2010-06-03 2012-06-13 株式会社東芝 アクセス制御プログラム及び装置
US9329947B2 (en) 2010-06-22 2016-05-03 Red Hat Israel, Ltd. Resuming a paused virtual machine without restarting the virtual machine
US8566640B2 (en) 2010-07-19 2013-10-22 Veeam Software Ag Systems, methods, and computer program products for instant recovery of image level backups
US8365009B2 (en) * 2010-09-10 2013-01-29 Microsoft Corporation Controlled automatic healing of data-center services
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US8879382B2 (en) * 2010-12-30 2014-11-04 Juniper Networks, Inc. Partial failure messaging
US8713365B2 (en) * 2011-01-28 2014-04-29 Microsoft Corporation Re-establishing push notification channels via user identifiers
US8364888B2 (en) * 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US10108630B2 (en) 2011-04-07 2018-10-23 Microsoft Technology Licensing, Llc Cluster unique identifier
US8745434B2 (en) 2011-05-16 2014-06-03 Microsoft Corporation Platform for continuous mobile-cloud services
US20120303654A1 (en) 2011-05-26 2012-11-29 James Michael Ferris Methods and systems to automatically extract and transport data associated with workload migrations to cloud networks
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
KR20130022091A (ko) 2011-08-24 2013-03-06 주식회사 케이티 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US9804928B2 (en) 2011-11-14 2017-10-31 Panzura, Inc. Restoring an archived file in a distributed filesystem
US20130159487A1 (en) 2011-12-14 2013-06-20 Microsoft Corporation Migration of Virtual IP Addresses in a Failover Cluster
WO2013119942A1 (en) 2012-02-08 2013-08-15 Adept Technology, Inc. Job management sytem for a fleet of autonomous mobile robots
JP5948933B2 (ja) 2012-02-17 2016-07-06 日本電気株式会社 ジョブ継続管理装置、ジョブ継続管理方法、及び、ジョブ継続管理プログラム
US8918672B2 (en) * 2012-05-31 2014-12-23 International Business Machines Corporation Maximizing use of storage in a data replication environment
US9223626B2 (en) 2012-08-30 2015-12-29 International Business Machines Corporation Task execution and management in a clustered computing environment
US9847910B2 (en) 2012-08-31 2017-12-19 Bce Inc. IP MPLS PoP virtualization and fault tolerant virtual router
US9304878B2 (en) 2012-10-11 2016-04-05 Vmware, Inc. Providing multiple IO paths in a virtualized environment to support for high availability of virtual machines
US9135049B2 (en) 2012-10-16 2015-09-15 Red Hat Israel, Ltd. Performing thin-provisioning operations on virtual disk images using native features of the storage domain
US9635088B2 (en) 2012-11-26 2017-04-25 Accenture Global Services Limited Method and system for managing user state for applications deployed on platform as a service (PaaS) clouds
US9727522B1 (en) 2012-12-14 2017-08-08 Amazon Technologies, Inc. Multi-tenant storage service object lifecycle management using transition job objects
US9355060B1 (en) 2012-12-14 2016-05-31 Amazon Technologies, Inc. Storage service lifecycle policy transition management
US9658983B1 (en) 2012-12-14 2017-05-23 Amazon Technologies, Inc. Lifecycle support for storage objects having multiple durability levels specifying different numbers of versions
RU2543316C2 (ru) 2012-12-25 2015-02-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ отказоустойчивого выполнения задач по расписанию в распределенных средах
US20140201292A1 (en) * 2013-01-17 2014-07-17 Icon.me, LLC Digital business card system performing social networking commonality comparisions, professional profile curation and personal brand management
US9779038B2 (en) * 2013-01-31 2017-10-03 Apple Inc. Efficient suspend-resume operation in memory devices
US9202591B2 (en) * 2013-05-10 2015-12-01 Omnivision Technologies, Inc. On-line memory testing systems and methods
US20150263900A1 (en) 2014-03-11 2015-09-17 Schlumberger Technology Corporation High performance distributed computing environment particularly suited for reservoir modeling and simulation
US9482683B2 (en) 2014-04-22 2016-11-01 Wipro Limited System and method for sequential testing across multiple devices
US9665432B2 (en) 2014-08-07 2017-05-30 Microsoft Technology Licensing, Llc Safe data access following storage failure
US9847918B2 (en) 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments

Also Published As

Publication number Publication date
RU2683167C2 (ru) 2019-03-26
US20160041882A1 (en) 2016-02-11
BR112017002518A2 (pt) 2017-12-05
EP3178003B1 (en) 2018-06-13
JP6602369B2 (ja) 2019-11-06
WO2016022344A1 (en) 2016-02-11
BR112017002518A8 (pt) 2023-02-23
JP2017528809A (ja) 2017-09-28
CN113190382A (zh) 2021-07-30
CN106716378B (zh) 2021-05-18
US20170132066A1 (en) 2017-05-11
US9665432B2 (en) 2017-05-30
US10545831B2 (en) 2020-01-28
RU2017107019A3 (pt) 2019-01-29
CN106716378A (zh) 2017-05-24
EP3178003A1 (en) 2017-06-14
RU2017107019A (ru) 2018-09-07

Similar Documents

Publication Publication Date Title
BR112017002518B1 (pt) Método implementado por computador e sistema de computador para acesso de dados seguro após falha de armazenamento
US10630772B2 (en) Maintaining global namespace consistency for a distributed filesystem
US10291705B2 (en) Sending interim notifications for namespace operations for a distributed filesystem
US10095705B2 (en) Integrated data retention policy for solid state and asymmetric access
CN108140009B (zh) 分布式自主式基于rdma的b树键值管理器
US10375167B2 (en) Low latency RDMA-based distributed storage
US9817582B2 (en) Offload read and write offload provider
BR112017001850B1 (pt) Sistema e método implementado por computador de redesignação de carga de trabalho distribuída após falha de comunicação
US9946740B2 (en) Handling server and client operations uninterruptedly during pack and audit processes
US10860226B2 (en) Systems and methods of synchronizing configuration information in a clustered storage environment
CA2847597A1 (en) Clustered client failover
JP2016526229A (ja) クラスタにおけるストレージ防御の分散
US10778769B2 (en) Elastic cloud storage on multiple locations
US10831662B1 (en) Systems and methods for maintaining cache coherency
US9632700B2 (en) Managing a shared storage system using hardware identifiers to deter data/file corruption
WO2021174698A1 (zh) 虚拟机快照创建方法、装置、存储介质及计算机设备
GB2496840A (en) Controlling access to a shared storage system
CA2910391A1 (en) Encryption solution for protecting file systems in multi-host clusters
WO2019004845A1 (en) METHOD AND SYSTEM FOR SERVICE REPLICATION
US11106379B2 (en) Multi cloud asynchronous active/active transactional storage for availability
US20240249031A1 (en) System and method for managing use of storage in distributed systems
US10152415B1 (en) Techniques for backing up application-consistent data using asynchronous replication
US11601425B1 (en) Maintaining dual-party authentication requirements for data retention compliance within a distributed server environment
US20240311249A1 (en) System and method for managing recovery of management controllers
KR20230071695A (ko) 스토리지 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 11/14

Ipc: G06F 11/14 (2006.01), H04L 67/1097 (2022.01)

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 29/07/2015, OBSERVADAS AS CONDICOES LEGAIS