BR112015020131B1 - Método e meio de armazenamento legível por computador para recuperação eredistribuição de disco virtual - Google Patents
Método e meio de armazenamento legível por computador para recuperação eredistribuição de disco virtual Download PDFInfo
- Publication number
- BR112015020131B1 BR112015020131B1 BR112015020131-8A BR112015020131A BR112015020131B1 BR 112015020131 B1 BR112015020131 B1 BR 112015020131B1 BR 112015020131 A BR112015020131 A BR 112015020131A BR 112015020131 B1 BR112015020131 B1 BR 112015020131B1
- Authority
- BR
- Brazil
- Prior art keywords
- data
- storage devices
- virtual disk
- storage
- devices
- Prior art date
Links
- 238000003860 storage Methods 0.000 title claims abstract description 243
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000011084 recovery Methods 0.000 title claims abstract description 80
- 230000004044 response Effects 0.000 claims description 2
- 230000008929 regeneration Effects 0.000 abstract description 8
- 238000011069 regeneration method Methods 0.000 abstract description 8
- 238000009827 uniform distribution Methods 0.000 abstract description 5
- 239000002609 medium Substances 0.000 description 19
- 238000009826 distribution Methods 0.000 description 15
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
método, meio de armazenamento legível por computador e sistema para recuperação e redistribuição de disco virtual. a presente invenção refere-se a técnicas para recuperação e redistribuição de dados de um sistema de armazenamento de disco virtual. em uma ou mais implementações, um esquema de armazenamento derivado para uma configuração de disco virtual está configurado para implementar várias técnicas de recuperação e redistribuição projetadas para aperfeiçoar o desempenho de recuperação. o esquema de armazenamento implementa uma ou mais técnicas de alocação para produzir distribuições de dados substancialmente uniformes ou quase uniformes através de dispositivos de armazenamento físico associados a um disco virtual. a alocação facilita operações de regeneração e rebalanceamento concorrentes para recuperação de dados no caso de falhas. além disso, o esquema de armazenamento está configurado para implementar técnicas de paralelização para executar as operações concorrentes incluindo, mas não limitado a controlar múltiplas leituras / escritas paralelas durante a recuperação.
Description
[001] Os usuários estão frequentemente utilizando sistemas dearmazenamento virtualizados que proveem armazenamento local escalável e/ou armazenamento "na nuvem" para dados de cliente (por exemplo, documentos, arquivos de aplicação, fotos, uploads móveis, arquivos de áudio / vídeo, etc.). Por exemplo, uma unidade ou disco virtual pode ser configurado através de múltiplos dispositivos de armazenamento físico. Isto pode permitir um usuário configurar uma quantidade de armazenamento selecionável para uma unidade virtual, aumentar ou diminuir o armazenamento ao longo do tempo, mudar parâmetros de configuração para a unidade virtual, e assim por diante.
[002] Um desafio associado com os sistemas de armazenamentoem geral e com os sistemas de armazenamento virtualizados especificamente é assegurar a resiliência de dados armazenados contras falhas de hardware. Um sistema de armazenamento é tornado resiliente armazenando múltiplas cópias de dados e/ou dados de redundância (por exemplo, checksums, dados de paridade, ou outras formas comprimidas dos dados) que podem ser utilizados para recuperar porções dos dados localizados em dispositivos que falham. O espelhamento é uma proposta tradicional na qual um dado é replicado completamente em múltiplos dispositivos que armazenam cópias dos mesmos dados. A recuperação em um sistema espelhado é trivial, no entanto, espelhamento é relativamente dispendioso e ineficiente já que espaço de armazenamento suficiente para acomodar múltiplas cópias de dados totais é consumido e os dispositivos de armazenamento que armazenam as cópias espelhadas são raramente utilizados.
[003] Outra proposta tradicional envolve armazenar uma quantidade determinada de dados de redundância que minimiza uma quantidade dearmazenamento consumida enquanto ainda permitindo a recuperação dos dados com um número de falhadas de dispositivo de armazenamento em ou abaixo de uma tolerância especificada. Esta proposta maximiza a eficiência de armazenamento utilizando uma quantidade mínima de dados de redundância, mas pode aumentar o tempo de recuperação para níveis inaceitáveis já que utilizar menos dados de redundância geralmente aumenta o tempo que leva para reconstruir os dados que são perdidos quando um dispositivo falha. Ainda, diferentes consumidores podem desejar configurar os sistemas de armazenamento diferentemente e podem ter diferentes constrições de configuração (por exemplo, orçamento, objetivos de tempo ativo, espaço físico disponível, etc.) que pode ser difícil aderir utilizando qualquer das propostas enumeradas. Consequentemente, técnicas de resiliência de dados tradicionais proveem opções limitadas, fixas que podem não satisfazer a demandas de alguns consumidores pode um armazenamento virtualizado flexível e escalável que não custe muito e/ou seja capaz de recuperar de falhas razoavelmente rápido.
[004] No caso de uma falha, uma perda de dados irrecuperávelpode ainda ocorrer mesmo para um sistema resiliente se falhas adicionais ocorrerem antes do sistema de armazenamento ser restaurado para um estado resiliente. Consequentemente, uma quantidade de tempo que leva para recuperar os dados e restaurar a resiliência de um sistema de armazenamento é também uma consideração geral para levar em conta no projeto e configuração de sistemas de armazenamento.
[005] Técnicas de paridade de N modos para uma resiliência dedisco virtual estão aqui descritas. Um disco virtual pode ser configurado através de múltiplos dispositivos de armazenamento físico de acordo com parâmetros de configuração que permitem um controle de usuário sobre a eficiência de armazenamento e tempo de recuperação. Para fazer isto, uma entrada para ajustar parâmetros de configuração para a configuração de disco virtual é obtida que é indicativa de um número de dispositivos de armazenamento disponíveis e uma tolerância especificada para falhas de dispositivo de armazenamento. Com base nesta entrada, uma configuração padrão para um disco virtual pode ser derivada que designa níveis intermediários de eficiência de armazenamento e tempo de recuperação ajustando uma quantidade de dados de redundância para armazenar com os dados de cliente entre uma quantidade mínima para permitir a recuperação de dados na tolerância especificada e uma quantidade para duplicar os dados de cliente. Uma opção pode também ser provida para especificar uma configuração customizada muda uma quantidade de dados de redundância para customizar o nível de eficiência de armazenamento e tempo de recuperação. O disco virtual é configurado e dados são armazenados no mesmo de acordo com a configuração padrão ou a configuração customizada como direcionado pelo usuário.
[006] Além disso, técnicas para recuperação e redistribuição dedados de um sistema de armazenamento de disco virtual estão aqui descritas. Em uma ou mais implementações, um esquema de armazenamento derivado para uma configuração de disco virtual está configurado para implementar várias técnicas de recuperação e redistribuição projetadas para aperfeiçoar o desempenho derecuperação. O esquema de armazenamento está configurado paraempregar uma ou mais propostas de alocação para produzir distribuição de dados substancialmente uniformes ou quase uniformes através de dispositivos de armazenamento físico associados com o disco virtual. A alocação está projetada para facilitar operação de regeneração e rebalanceamento concorrentes para recuperação de dados no caso de falha. Além disso, o esquema de armazenamento está configurado para implementar técnicas de paralelização para executar as operações concorrentes incluindo mas não limitado a controlar múltiplas leituras / escritas paralelas durante a recuperação.
[007] Este Sumário está provido para introduzir uma seleção deconceitos em uma forma simplificada que estão adicionalmente abaixo descritos na Descrição Detalhada. Este Sumário não pretende identificar as características chave ou características essenciais do assunto reivindicado, nem pretende ser utilizado como um auxílio na determinação do escopo do assunto reivindicado.
[008] A descrição detalhada está descrita com referência àsfiguras acompanhantes. Nas figuras, o(s) dígito(s) mais à esquerda de um número de referência identifica a figura na qual o número de referência primeiro aparece. A utilização dos mesmos números de referência em diferentes instâncias na descrição e nas figuras pode indicar itens similares ou idênticos.
[009] Figura 1 é uma ilustração de um ambiente de acordo comuma ou mais implementações de técnicas de paridade de n modos para resiliência de disco virtual.
[0010] Figura 2 é uma ilustração de um cenário exemplar para aconfiguração de um disco virtual de acordo com uma ou mais implementações.
[0011] Figura 3 é um fluxograma que apresenta um procedimentoexemplar para a configuração de um disco virtual com paridade de n modos.
[0012] Figura 4 é um fluxograma que apresenta outro procedimentoexemplar na qual opções para especificar uma configuração customizada para um disco virtual estão providas de acordo com uma ou mais implementações.
[0013] Figura 5 é uma ilustração de um cenário exemplar pararecuperação de dados após a falha de um ou mais dispositivos associados om um disco virtual de acordo com uma ou mais implementações.
[0014] Figura 6 é um fluxograma que apresenta um procedimentoexemplar para recuperação e redistribuição de dados de acordo com uma ou mais implementações.
[0015] Figura 7 é um fluxograma que apresenta um procedimentoexemplar para paralelização de acordo com uma ou mais implementações.
[0016] Figura 8 apresenta um sistema de computação exemplar deacordo com uma ou mais modalidades.
[0017] As técnicas de resiliência de dados tradicionais proveemopções limitadas, fixas que podem não satisfazer as demandas de alguns consumidores para um armazenamento virtualizado flexível e escalável que não custe muito e/ou seja capaz de recuperar de falhas razoavelmente rápido. Mais ainda, quando os dispositivos em um sistema de armazenamento falham, uma perda de dados irrecuperável pode ainda ocorrer mesmo para um sistema resiliente de falhas adicionais ocorrerem antes do sistema de armazenamento ser restaurado para um estado resiliente. Consequentemente, os desenvolvedores e proprietários de sistema de armazenamento e podem buscar minimizar uma quantidade de tempo que leva para recuperar os dados e restaurar a resiliência após uma falha.
[0018] As técnicas de paridade de n modos para resiliência de discovirtual estão aqui descritas, nas quais um disco virtual pode ser configurado através de múltiplos dispositivos de armazenamento físico de acordo com os parâmetros de configuração que permitem o controle de usuário sobre a eficiência de armazenamento e tempo de recuperação. Especificamente, o termo paridade de n modos como aqui utilizado indica que um parâmetro de configuração que define uma quantidade de dados de redundância (por exemplo, bits de paridade) para armazenar com os dados de cliente em um disco virtual é ajustável para customizar a configuração. Por exemplo, uma entrada para ajustar os parâmetros de configuração para configuração do disco virtual pode ser obtida que é indicativa de um número de dispositivos de armazenamento disponíveis e uma tolerância especificada para falhas de dispositivo de armazenamento. Com base nesta entrada, uma configuração padrão para o disco virtual pode ser derivada que designa níveis intermediários de eficiência de armazenamento e tempo de recuperação. Isto pode ser conseguido ajustando uma quantidade de dados de redundância para armazenar com os dados de cliente entre uma quantidade mínima para permitir a recuperação de dados na tolerância especificada e uma quantidade para duplicar os dados de cliente. Uma opção pode também ser provida para especificar uma configuração customizada que muda a quantidade de dados de redundância para customizar o nível de eficiência de armazenamento e o tempo de recuperação. O disco virtual está configurado e dados são armazenados neste de acordo com a configuração padrão ou a configuração customizada como direcionado pelo usuário.
[0019] As técnicas para recuperação e redistribuição de dados deum sistema de armazenamento de disco virtual estão também aqui descritas. Em uma ou mais implementações, um esquema de armazenamento derivado de uma configuração de disco virtual está configurado para implementar várias técnicas de recuperação e redistribuição projetadas para aperfeiçoar o desempenho de recuperação. Por exemplo, o esquema de armazenamento implementa uma ou mais técnicas de alocação para produzir distribuições de dados substancialmente uniformes ou quase uniformes através de dispositivos de armazenamento físico associados com um disco virtual. Como exemplo, um esquema randômico, um esquema de depósito e/ou um esquema de bitmap podem ser utilizados individualmente e/ou em combinação para a alocação de dados de cliente em dispositivos de armazenamento (por exemplo, layout dos dados). A alocação facilita as operações de regeneração e rebalanceamento concorrentes para recuperação de dados no caso de falhas. Além disso, o esquema de armazenamento está configurado para implementar técnicas de paralelização para executar as operações concorrentes que incluem mas não limitadas a controlar múltiplas leituras / escritas paralelas durante a recuperação.
[0020] Na discussão seguinte, um ambiente de operação exemplarestá primeiro descrito que emprega as técnicas aqui descritas. A seguir, detalhes e técnicas exemplares estão descritos os quais podem ser implementados no ambiente exemplar assim como outros ambientes. Consequentemente, o desempenho das técnicas não está limitado ao ambiente exemplar e o ambiente exemplar não está limitado ao desempenho das técnicas exemplares. A discussão de detalhes e técnicas exemplares inclui subseções intituladas "Configuração de Disco Virtual" e "Recuperação e Redistribuição"que discutem a configuração de um disco virtual para armazenar dados com paridade de n modos customizada e técnicas para recuperação de dados, respectivamente. Finalmente, sistemas e dispositivos exemplares estão descritos que podem ser empregados para implementar uma ou mais modalidades.
[0021] A Figura 1 é uma ilustração de um ambiente 100 em umaimplementação exemplar que é operável para empregar as técnicas aqui descritas. O ambiente 100 ilustrado inclui um dispositivo de cliente 102 que está comunicativamente acoplado através de uma rede 104 a um provedor de serviço 106. O provedor de serviço 106 pode estar configurado para tornar vários recursos 108 (por exemplo, conteúdo e serviços) disponíveis sobre a rede 104 para o dispositivo de cliente 102 e outros clientes. Geralmente, os recursos 108 tornados acessíveis por um provedor de serviço 106 podem incluir qualquer combinação adequada de serviços e/ou conteúdo tipicamente tornado disponível sobre uma rede por um ou mais provedores. Alguns exemplos de serviços incluem, mas não estão limitados a, um serviço de pesquisa, um serviço de email, um serviço de mensagem instantânea, um conjunto de produtividade online, e um serviço de autenticação para controlar o acesso de clientes aos recursos. O conteúdo pode incluir várias combinações de texto, fluxos de multimídia, documentos, arquivos de aplicação, fotos, arquivos de áudio / vídeo, animações, imagens, páginas da web, aplicações da web, aplicações de dispositivo, conteúdo para exibição por um browser ou outra aplicação de cliente, e similares.
[0022] O dispositivo de cliente 102 e o provedor de serviço 106podem ser implementados por um ou mais dispositivos de computação e também podem ser representativos de um ou mais entidades. Um dispositivo de computação pode ser configurado em uma variedade de modos. Por exemplo, o dispositivo de computação pode ser configurado como um computador que é capaz de comunicar sobre a rede, tal como um computador desktop, uma estação móvel, um aparelho de entretenimento, um decodificador comunicativamente acoplado a um dispositivo de display, um telefone sem fio, um console de jogos, e assim por diante. Assim, o dispositivo de computação pode variar de dispositivos de recursos totais com substancias recursos de memória e processador (por exemplo, computadores pessoais, consoles de jogos) até um dispositivo de baixos recursos com recursos limitados de memória e/ou processamento (por exemplo, decodificadores tradicionais, consoles de jogos portáteis). Além disso, apesar de um único dispositivo de computação ser mostrado em alguns casos, o dispositivo de computação pode ser representativo de uma pluralidade de diferentes dispositivos, tal como múltiplos servidores utilizados pelo provedor de serviço 106.
[0023] O dispositivo de cliente 102 está ainda ilustrado comoincluindo um sistema de operação 110. O sistema de operação 110 está configurado para abstrair uma funcionalidade subjacente do dispositivo subjacente para as aplicações 112 que são executáveis no dispositivo de cliente 102. For exemplo, o sistema de operação 110 pode abstrair uma funcionalidade de processamento, memória, rede, e/ou display de modo que as aplicações 112 possam ser escritas sem saber "como" esta funcionalidade subjacente está implementada. As aplicações 112, por exemplo, podem prover dados para o sistema de operação 110 para serem renderizados e exibidos pelo dispositivo de display sem compreender como esta renderização será executada.
[0024] O dispositivo de cliente 102 está também ilustrado comoincluindo os dados de cliente 114 e um sistema de armazenamento 116 que pode estar configurado em vários modos para armazenar os dados de cliente 114 assim como outros dados. Os dados de cliente 114 são representativos de vários tipos de dados tipicamente associados com clientes que incluem, mas não limitados a módulos de aplicação, arquivos de dados, arquivos de mídia, bibliotecas, e/ou outros tipos de dados.
[0025] O sistema de armazenamento 116 representa afuncionalidade do dispositivo de cliente 102 para armazenamento dos dados de cliente 114. O sistema de armazenamento 116 pode implementar um sistema de arquivo específico para organizar dados, expor os dados para manipulação por um usuário, gerenciar arquivos e assim por diante. Como apresentado o sistema de armazenamento 116 pode também incluir ou deoutro de modo tornar um módulo de gerenciador de disco 118 operável para configurar e gerenciar o sistema de armazenamento 116. O sistema de armazenamento 116 e/ou módulo de gerenciador de disco 118 podem ser combinados como ilustrado, podem ser implementados como módulos independentes, podem representar um componente do sistema de operação 110 ou outra aplicação, e assim por diante.
[0026] Em pelo menos algumas implementações, o módulo degerenciador de disco 118 é operável para configurar o sistema de armazenamento 116 ou pelo menos uma porção do sistema de armazenamento como um disco virtual que estende através de múltiplos dispositivos de armazenamento 120. Os dispositivos de armazenamento 120 representam vários componentes de armazenamento físico incluindo discos rígidos, dispositivos de mídia, armazenamento instantâneo, discos óticos, RAM, ROM, e assim por diante. As técnicas aqui descritas podem também ser aplicadas a envoltórios de armazenamento e racks. De acordo com as técnicas aqui descritas, os recursos 108 podem também incluir um serviço de armazenamento online (por exemplo, armazenamento "baseado em nuvem") configurado como um disco virtual que emprega paridade de n modos para seletivamente controlar o tempo de recuperação e/ou eficiência de armazenamento como acima e abaixo descrito. Assim, o dispositivo de armazenamento 120 pode representar um armazenamento local e/ou baseado em nuvem como apresentado na Figura 1. Um disco virtual pode ser disposto utilizando múltiplos dispositivos de armazenamento locais e baseados em nuvem. É contemplado que um disco virtual pode ser disposto para utilizar uma combinação dispositivos de armazenamento locais e baseados em nuvem em algumas implementações.
[0027] Mais ainda, o módulo de gerenciador de disco 118 aindarepresenta uma funcionalidade para implementar a paridade de n modos para o disco virtual e técnicas de recuperação / redistribuição de dados como aqui descrito. Como introdução, paridade de n modos como aqui utilizada indica que um parâmetro de redundância que define uma quantidade de dados de redundância (por exemplo, bits de paridade) para armazenar com os dados de cliente 114 em um disco virtual é configurável para customizar o disco virtual. Um usuário pode fazer seleções através de uma interface adequada exposta pelo módulo de gerenciador de disco 118 para ajustar um valor para o parâmetro de redundância. O valor ajustado para o parâmetro de redundância juntamente com outros parâmetros de configuração selecionáveis controla como o módulo de gerenciador de disco 118 configura o disco virtual e configura esquemas de armazenamento e/ou recuperação para o disco virtual. Diferentes valores do parâmetro de redundância correspondem a diferentes níveis de eficiência de armazenamento e tempo de recuperação que podem ser selecionados como uma opção de configuração.
[0028] Assim o parâmetro de redundância permite uma flexibilidadepara definir uma configuração customizada para o disco virtual para atingir objetivos específicos para tempo de recuperação e/ou eficiência de armazenamento. Em uma implementação, um controle adequado pode ser exposto pelo módulo de gerenciador de disco 118 para coletar uma entrada indicativa de um valor para ajustar o parâmetro de redundância. Em uma proposta, o parâmetro de redundância pode ser ajustado para valores em uma faixa que corresponde a quantidades de dados de redundância entre uma quantidade mínima para permitir recuperação de dados em uma tolerância de falha especificada e uma quantidade para duplicar os dados de cliente. Geralmente, o parâmetro de redundância é ajustado para um valor intermediário que atinge um equilíbrio aceitável entre eficiência de armazenamento e tempo de recuperação. Múltiplos diferentes valores selecionáveis para o parâmetro de redundância podem ser providos pelo sistema dentro da faixa intermediária. No entanto, os valores podem também ser ajustados para pontos finais na faixa de valores que correspondem a redundância de dados mínima / armazenamento máximo eficiente em uma extremidade e duplicação de dados uma ou mais vezes ("por exemplo, espelhamento") na outra extremidade. Deste modo, um usuário pode ser capaz de selecionar de uma continuidade de opções disponíveis para customizar a configuração de um disco virtual.
[0029] Assim, tendo considerado a discussão acima de umambiente de operação exemplar, considere agora os detalhes referentes à configuração de um disco virtual para armazenar dados com paridade de n modos e técnicas customizadas para recuperação de dados descritos nas seções seguintes.
[0030] Esta seção discute detalhes de técnicas para configuraçãode um disco virtual para armazenar dados com paridade de n modos customizada com referência a um cenário exemplar das Figura 2 e procedimentos exemplares da Figura 3 e Figura 4. Em porções da discussão seguinte referência pode ser feita ao ambiente de operação exemplar da Figura 1 no qual vários aspectos podem ser implementados. Os aspectos de cada um dos abaixo descritos podem ser implementados em hardware, firmware, ou software, ou uma sua combinação. Os procedimentos estão mostrados como um conjunto de blocos que especificam as operações executadas por um ou mais dispositivos e não estão necessariamente limitados às ordens mostradas para executar as operações pelos respectivos blocos. Em pelo menos alguma implementação os procedimentos podem ser executados por um dispositivo de computação adequadamente configurado, tal como o dispositivo de cliente exemplar 102 da Figura 1 que inclui ou faz uso de um módulo de gerenciador de disco 118 ou uma funcionalidade comparável.
[0031] Especificamente, a Figura 2 é um diagrama que mostra umcenário exemplar para uma configuração de disco virtual com uma paridade de n modos customizada, geralmente em 200. Como representado na Figura 2, uma configuração de disco virtual 202 pode ser definida através de interação com um módulo de gerenciador de disco 118. A configuração de disco virtual 202 pode incluir vários parâmetros de configuração 204 que pode ser especificado e empregado para configurar um disco virtual 206, exemplos dos quais estão abaixo discutidos. O disco virtual 206 pode ser configurado através de múltiplos dispositivos de armazenamento 120 para armazenar os dados de cliente 114. Com base na configuração de disco virtual 202, o módulo de gerenciador de disco 118 pode configurar o disco virtual 202 incluindo configurar um esquema de armazenamento 208 para o disco virtual. O módulo de gerenciador de disco 118 então força o esquema de armazenamento 208 para distribuir os dados de cliente 114 através do diferentes dispositivos de armazenamento em um modo que facilite a resiliência dos dados e a recuperação no caso de falhas de hardware. Mais especificamente, o módulo de gerenciador de disco 118 é operável para gerar os dados de redundância 210 que corresponde aos dados de cliente 114 para armazenar juntamente com os dados de cliente 114. Os dados de redundância 210 podem ser configurados como checksums, bits de paridade, ou outras versões comprimidas dos dados de cliente 114 suficiente para permitir a reconstrução dos dados de cliente 114 mesmo se alguns dos dados forem perdidos devido a falhas de hardware. Se um esquema de espelhamento for empregado, os dados de redundância 210 podem incluir um ou mais cópias dos dados de cliente. A quantidade e/ou tipo de dados de redundância para gerar e armazenar podem depender de um valor ajustado para um parâmetro de redundância como previamente mencionado. Consequentemente, o esquema de armazenamento 208 reflete o valor selecionado do parâmetro de redundância assim como outros parâmetros de configuração 204. O sistema é, portanto, configurável pelo usuário para configurar um disco virtual com propriedade de tempo de recuperação e eficiência de armazenamento específicas.
[0032] Falando genericamente, o módulo de gerenciador de disco118 e o esquema de armazenamento 208 estão projetados para implementar um sistema de armazenamento virtual escalável, eficiente o qual provê o usuário com um controle sobre a configuração do armazenamento. O usuário é capaz de selecionar de múltiplos opções de configuração que podem representadas em uma faixa ou em escala de um cenário maximamente eficiente para um cenário no qual os dados / unidades são espelhados uma ou mais vezes. Conforme as opões discretas são selecionadas movendo do cenário maximamente eficiente para os cenários espelhados, a eficiência de armazenamento diminui (por exemplo, mais espaço de armazenamento é consumido) e o desempenho de recuperação aumenta (por exemplo, o tempo de recuperação é reduzido). O sistema portanto permite que compromissos sejam feitos pelos usuários em uma base individual entre eficiência de armazenamento e desempenho de recuperação provendo uma pluralidade de opções selecionáveis na faixa e/ou na escala.
[0033] Os dados de redundância 210 podem ser computadosalgoritmicamente utilizando técnicas de algoritmo de paridade. Reed- Solomon é um algoritmo de paridade que utiliza técnicas de código de apagamento conhecidas daqueles versados na técnica. Reed-Solomon deriva os dados de redundância de coeficientes de um polinômio gerado multiplicando os dados por um gerador polinomial. Em uma implementação, Reed-Solomon representa um cenário maximamente eficiente para armazenamento de m unidades de dados com n unidades de dados de redundância (por exemplo, unidades totais armazenadas k = m + n). Especificamente, dado um número de unidades de dados de cliente para armazenar m e uma tolerância de falha t, Reed-Solomon gera e armazena t unidades de dados de redundância com as m unidades de dados de cliente. Reed- Solomon provê a quantidade mínima de dados de redundância (por exemplo, k = m + n com n = t) que podem ser utilizados para permitir a recuperação dos dados no caso em que t falhas ocorram (por exemplo, t unidades de dados estão faltando e/ou t dispositivos de armazenamento falham). N o caso de falha, os valores que permanecem disponíveis podem ser plugados de volta na expressão polinomial / algoritmo para resolver os valores faltantes e consequentemente reconstruir os dados faltantes. Neste exemplo, m unidades são lidas de volta para operações no processo de reconstrução, o que produz tempos de recuperação relativamente altos. Um exemplo de Reed-Solomon representativo para cinco unidades de dados e uma tolerância de falha de dois é como segue:
[0034] Armazenar cinco unidades de dados Dx com duas unidadesde dados de redundância Px (por exemplo, dados de paridade ou checksums):D0 D1 D2 D3 D4 D5 P0 P1
[0035] onde os polinômios para os dados de redundância P0 e P1são expressos como:P0 = D0 (+) D1 (+) D2 (+) D3 (+) D4 (+) D5P1 = g0 D0 (+) g1 D1 (+) g2 D2 (+) g3 D3 (+) g4 D4 (+) g5 D5
[0036] com os valores gx sendo coeficientes configuráveis para ospolinômios.
[0037] O espelhamento como mencionado envolve fazer uma oumais cópias de dados de cliente. Os dados em um dispositivo específico são duplicados em pelo menos um outro dispositivo, de modo que a recuperação meramente envolve comutar para os dados duplicados no outro dispositivo. Apesar do espelhamento pode dar um máximo desempenho de recuperação, o custo de armazenamento é alto já que múltiplas cópias totais de dados são mantidas. No exemplo de cinco unidades de dados com uma tolerância de duas falhas, o espelhamento armazenaria duas cópias de dados adicionais dos dados ou quinze unidades de dados totais.
[0038] Consequentemente, o módulo de gerenciador de disco 118e o esquema de armazenamento 208 como aqui discutidos estão configurados para prover múltiplas opções adicionais além de ou como uma alternativas a Reed-Solomon e Espelhamento. Para fazer isto, o sistema está configurado para suportar um modelo de paridade de n modos que torna uma pluralidade opções de configurações adicionais disponíveis para os usuários. Falando genericamente, o modelo de paridade de n modos permite os usuários escolherem uma quantidade de dados de redundância que ajustam sistemas e constrições individuais. Dadas m unidades de dados para armazenar e uma tolerância de falha t, a paridade de n modos armazena um total de k unidades de dados (por exemplo, n unidades de dados de redundância com m unidades de dados de cliente), onde k é maior do que m + t (por exemplo, k = m + n, onde t < n < m x t). O valor de n corresponde ao parâmetro de redundância aqui discutido que é configurável durante a composição e configuração de um sistema de armazenamento. Em outras palavras, dados de redundância adicionais são armazenados (como definido por um valor ajustado para n) acima do cenário maximamente eficiente no qual t unidades de dados de redundância estão armazenados. Isto pode diminuir o tempo de recuperação para reconstruir os dados permitindo a utilização de expressões polinomiais que estão projetadas para utilizar menos coeficientes para a reconstrução. Assim o excesso de leituras de dados para a reconstrução pode ser reduzido. Várias técnicas e algoritmos podem ser utilizadas para implementar o modelo de paridade de n modos.
[0039] Em uma implementação, um modelo de paridade de nmodos está baseado pelo menos em parte em códigos de reconstrução local (LRC) conhecidos daqueles versados na técnica. O LRC é outro algoritmo de paridade que reduz o subconjunto de dados para ler quando recuperando símbolos utilizando dados de redundância adicionais, como indicado. O LRC, portanto gera e utiliza mais dados de redundância do que Reed-Solomon em uma dada tolerância de falha, mas pode produzir tempos de recuperação mais rápidos. Um exemplo de LRC representativo para cinco unidades de dados e uma tolerância de falha de dois para uma comparação como os exemplos acima é como seguem:
[0040] Armazenar cinco unidades de dados Dx com três unidadesde dados de redundância Px (por exemplo, dados de paridade ou checksums):D0 D1 D2 D3 D4 D5 P0 P1 P2
[0041] onde os polinômios para os dados de redundância sãoexpressos como:P0 = D0 (+) D1 (+) D2P1 = D3 (+) D4 (+) D5P2 = g0 D0 (+) g1 D1 (+) g2 D2 (+) g3 D3 (+) g4 D4 (+) g5 D5
[0042] com os valores gx sendo coeficientes selecionados para ospolinômios.
[0043] Notadamente, o modelo de paridade de n modosimplementado pelo módulo de gerenciador de disco 118 pode ser configurado como uma solução combinada que provê uma seleção do usuário e customização de parâmetros de configuração de disco virtual para uma faixas de opções. Por exemplo, o modelo de paridade de n modos pode fazer uso de uma ou mais de técnicas de Reed-Solomon, LRC, e/ou espelhamento para prover a faixas de opções das quais um usuário é permitido selecionar quando configurando um disco virtual. Diferentes esquemas podem ser utilizados em diferentes pontos em uma escala de opções disponíveis. Por exemplo, uma escala de opções oferecia pelo sistema pode empregar as técnicas de Reed-Solomon em um ponto final, técnicas de LRC em pontos intermediários, e espelhamento em outra extremidade. Esta proposta provê os usuários com uma ampla faixa de opções e uma grande quantidade de flexibilidade para customizar o esquema de armazenamento para os seus sistemas de armazenamento.
[0044] Ainda, o e específico utilizado para um dado ponto pode serutilizado para o cenário. Como um exemplo, os valores de coeficientes gxsão tipicamente selecionados cuidadosamente e não são repetidos para facilitar a convergência para uma solução quando reconstruindo os dados. Em soluções fixas tradicionais isto pode fazer sentido já que pode existir apenas uma opção provida para o usuário e o desenvolvedor pode fazer escolhas de coeficientes predeterminados para a única opção. No entanto, com uma faixa de opções como aqui descrito a possibilidade de selecionar coeficientes individualmente para diferentes opções está aberta. Em uma proposta, repetir os coeficientes é permitido para um ou mais níveis de tolerância de falha, geralmente em valores de tolerância de falha mais baixos. Por exemplo, quando a tolerância de falha é igual a dois a constrição na repetição de coeficientes pode ser relaxada já que as computações podem ser relativamente menos complexas. Permitir que coeficientes repitam para pelo menos alguns valores de tolerância de falha permite que coeficientes mais baixos do que podem ser expressos utilizando um número reduzido de bits, o que simplifica a computação total.
[0045] Mais ainda, o usuário tem controle sobre opções intermediárias sendo capaz de selecionar um nível de redundância específico. Aqui, o parâmetro de redundância configurável pode ser utilizado para selecionar a quantidade específica dede dados de redundância (por exemplo, o valor de n) para gerar e armazenar de modo a conseguir um equilíbrio selecionado pelo usuário entre a eficiência de armazenamento e o tempo de recuperação. O sistema está projetado para suportar uma seleção escalável do parâmetro de redundância n para conseguir uma paridade de n modos em diferentes níveis de tolerância de falha assumindo que suficientes dispositivos de armazenamento sejam disponíveis para implementar a configuração selecionada. Detalhes adicionais referentes a estes e outros aspectos de técnicas de paridade de n modos estão discutidos em relação aos procedimentos exemplares.
[0046] A Figura 3 apresenta um procedimento 300 em umaimplementação exemplar para a configuração de um disco virtual com paridade de n modos. Um número designado de unidades de dados de redundância para armazenar com dados de cliente em um disco virtual é avaliado, o número designado sendo determinado durante a configuração do disco virtual de uma faixa de opções para resiliência tornada disponível para customização do usuário da configuração de disco virtual (bloco 302). Por exemplo, um usuário pode interagir com um módulo de gerenciador de disco 118 para compor e configurar um disco virtual. A interação pode ocorrer por meio de várias interfaces de usuário e/ou diálogos de configuração que são emitidos para exibição pelo módulo de gerenciador de disco 118 durante uma sequência de configuração. Como parte da sequência de configuração, o usuário pode suprir uma entrada para especificar um número de dispositivos físicos e/ou uma quantidade de armazenamento para utilizar para o disco virtual (por exemplo, espaço de armazenamento para dados). O usuário pode também especificar uma tolerância de falha. O sistema então gera várias opções de resiliência variável para a disposição específica na tolerância de falha. As opções permitem a seleção de um parâmetro de redundância de uma faixa de opções para resiliência tornadas disponíveis para customização de usuário da configuração de disco virtual. O parâmetro de redundância reflete um número designado de unidades de dados de redundância para armazenar com os dados de cliente que determinou como uma opção de configuração.
[0047] As opções para a disposição específica podem incluir umaconfiguração padrão como anteriormente notado que seleciona níveis intermediários de eficiência de armazenamento e tempo de recuperação. Isto pode ocorrer ajustando uma quantidade de dados de redundância para armazenar com os dados de cliente entre uma quantidade mínima para permitir recuperação de dados na tolerância especificada e uma quantidade para duplicar os dados de cliente. Em outras palavras, um valor padrão do parâmetro de redundância n pode ser ajustado para um valor intermediário dentro da faixa de opções disponíveis.
[0048] Além disso, os diálogos de configuração apresentadosdurante a sequência de configuração podem incluir controles ou outras instrumentalidades operáveis para selecionar uma configuração customizada. Por exemplo, um controle de corrediça pode ser provido para permitir a seleção de usuário do valor para o parâmetro de redundância (por exemplo, n). O controle de corrediça pode ser provido em conjunto com uma escala configurada para visualmente representar a faixa de opções disponíveis e/ou compromissos de desempenho correspondentes. Outras instrumentalidades adequadas tais como itens de menu, campos de entrada, caixas instantâneas, controles de rádio, e assim por diante podem estar configuradas para prover uma funcionalidade comparável para selecionar valores para o parâmetro de redundância ou de outro modo escolher de uma faixa de opções disponíveis para a configuração de disco virtual. Em resposta a mudanças no valor do parâmetro de redundância, uma representação de compromissos correspondentes entre a eficiência de armazenamento e o tempo de recuperação pode ser apresentada através dos diálogos / interface de configuração. Deste modo, um usuário é capaz de explorar diferentes opções e ver como as opções selecionadas afetam o desempenho.
[0049] Um usuário pode então fazer uma seleção para manter aconfiguração padrão ou pegar outra configuração customizada das opções. No caso em que o usuário não escolhe customizar a tolerância de falha ou o parâmetro de redundância, então a configuração padrão pode automaticamente ser selecionada e aplicada. De outro modo as customizações de usuário que são selecionadas através dos diálogos / interface são aplicadas para configurar o disco virtual.
[0050] Consequentemente, o número designado pode serdeterminado como um valor selecionado pelo usuário ou como um valor padrão. O usuário pode ser ainda avisado para designar um número suficiente de dispositivos físicos para utilizar para a configuração e/ou para adicionar dispositivos físicos se os dispositivos disponíveis forem insuficientes para a configuração selecionada. Isto pode envolver adicionar dispositivos locais e/ou adquirir ou de outro modo autorizar uma capacidade de armazenamento baseada em nuvem adicional através de um provedor adequado.
[0051] Um esquema de armazenamento está configurado para odisco virtual de acordo com o número especificado de unidades adicionais de dados de redundância (bloco 304). Os dados de cliente são obtidos para armazenamento no disco virtual (bloco 306) e dados de redundância para os dados de cliente são gerados para incluir um número designado de dados de recuperação (bloco 308). Os dados de cliente e os dados de redundância são armazenados através de múltiplos dispositivos de armazenamento físico do disco virtual de acordo com o esquema de armazenamento (bloco 310).
[0052] Especificamente, com base pelo menos nos parâmetros deconfiguração que são selecionados pelo usuário ou de outro modo designados, o módulo de gerenciador de disco 118 configura um esquema de armazenamento para o disco virtual. O esquema de armazenamento reflete o parâmetro de redundância assim como outros parâmetros de configuração. Como exemplo, considere um cenário no qual um sistema de armazenamento está configurado de modo a armazenar cinco unidades de dados com três unidades de dados de redundância com uma tolerância de falha ajustada em uma tolerância de duas falhas simultâneas. Em outras palavras, m =5, n = 3, t =2 e k = 8. O esquema de armazenamento está configurado para gerar os dados de redundância para os dados de cliente e distribuir as oito unidades de dados totais através de dispositivos físicos consequentemente.
[0053] A disposição física do sistema de armazenamento tambémreflete o esquema de armazenamento, de modo que oito dispositivos de armazenamento físicos (ouunidades de falha definida) estão associados com a unidade virtual. Geralmente, os dispositivos de armazenamento físico são unidades individuais que representam unidades de falha de hardware. A unidade de falha hardware pode ser designada em diferentes níveis tal como um nível de disco, um nível de envoltório, um nível de rack, um nível de sala, um nível de localização e assim por diante. O esquema de armazenamento está projetado para distribuir os dados em um modo prescrito através das unidades falha definidas de modo a conseguir resiliência.
[0054] O esquema de armazenamento, portanto controla a geraçãode dados de redundância e a distribuição dos dados de acordo com os parâmetros de configuração. Para fazer isto, os dados podem ser divididos em placas de tamanho definida (por exemplo, 500 megabyte, 1 gigabyte, etc.) e cada placa é manipulada gerando dados de redundância apropriados. Neste exemplo, os dados de redundância são gerados utilizando três unidades para cada cinco unidades de dados de cliente. Cada placa com os dados de redundância correspondentes é distribuída através dos dispositivos de armazenamento físico.
[0055] A distribuição pode ocorrer em vários modos. Por exemplo,uma proposta simples envolve designar m dispositivos para armazenamento de dados de cliente e n dispositivos para armazenar os dados de redundância em uma disposição onde os dados totais para armazenar são definidos como k = m + n. Assim, cinco dispositivos podem ser dedicados para armazenar os três dispositivos para os dados de redundância no exemplo acima. Os dados podem escritos sequencialmente em cada dispositivo.
[0056] Em uma proposta mais sofisticada, o esquema dearmazenamento pode estar configurado para implementar uma sequência de rotação para a distribuição de dados para obter uma distribuição substancialmente igual de dados de cliente e dados de redundância através dos dispositivos de armazenamento físico. Isto pode facilitar as técnicas de recuperação e redistribuição como discutido em mais detalhes na seção seguinte. Por exemplo, dada uma disposição com oito dispositivos de armazenamento totais, o consumo de armazenamento de dados de cliente de cinco dispositivos, e um parâmetro de redundância ajustado para três (por exemplo, k = m + n com k = 8, m = 5, n = 3) a sequência de rotação em uma primeira passada pode escrever os dados de cliente nos dispositivos 1, 2, 3, 4, 5 e os dados de redundância nos dispositivos 6, 7, 8. Em uma segunda passada, as escritas para dados de cliente e dados de redundância são giradas entre os dispositivos. Por exemplo, os dispositivos 6, 7, 8, 1, 2 podem ser empregados para os dados de cliente e os dispositivos 3, 4, 5 para os dados de redundância em uma segunda passada. Aqui, um padrão de rotação é empregado no qual a unidade de partida para cada passada se desloca paracima cinco locais em um ordenamento lógico dos dispositivos e as escritas enrolam. Em geral, qualquer padrão de rotação adequado para um grupo de dispositivos de armazenamento pode ser empregado para distribuir dados de cliente e dados de redundância igualmente através do grupo de dispositivos de armazenamento. Como exemplo, o padrão pode ser implementado para deslocar um local para cada passada, alternar de frente para trás na ordem lógica, empregar uma sequência par / ímpar para as escritas, e assim por diante. A sequência de rotação é continuada de acordo com um padrão específico para cada grupo de escritas para distribuir os dados igualmente.
[0057] A Figura 4 apresenta um procedimento 400 em umaimplementação exemplar na qual opções para especificar uma configuração customizada para um disco virtual estão providas. As opções para a configuração de um disco virtual através de múltiplos dispositivos de armazenamento físico estão expostas que são selecionáveis para controlar uma quantidade de dados de redundância para armazenar para resiliência de dados de usuário armazenados na unidade virtual (bloco 402). Por exemplo, um parâmetro de redundância pode ser uma opção de configuração para especificar uma quantidade de dados de redundância para armazenar com os dados de cliente como anteriormente descrito. O sistema está projetado para suportar uma seleção escalável do parâmetro de redundância (por exemplo, n) para conseguir uma paridade de n modos em diferentes níveis de tolerância de falha. Geralmente, as opções para configuração do disco virtual proveem uma faixa de valores potenciais selecionáveis para o parâmetro de redundância e um usuário é capaz de selecionar de qualquer uma das opções disponíveis. Em uma proposta, a faixa de valores de parâmetro de redundância potenciais para uma paridade de n modos está exposta em um diálogo de configuração ou outra interface adequada que facilitar o usuário o ajuste do parâmetro de redundância assim como outros parâmetros de configuração tal como a tolerância de falha e a alocação de dispositivo físico.
[0058] O disco virtual está configurado para armazenamento dosdados de usuário juntamente com os dados de redundância através dos múltiplos dispositivos de armazenamento físico de acordo com a quantidade de dados de redundância para armazenar para resiliência que é selecionada através da opção (bloco 404). Por exemplo, o disco virtual pode estar configurado para incluir um número de dispositivos de armazenamento físico que corresponde a um esquema de armazenamento derivado com base nos parâmetros de configuração especificados pelo usuário e/ou ajustes padrão. O esquema de armazenamento é imposto para controlar o modo no qual os dados de cliente e os dados de redundância correspondentes são escritos e armazenados pelo disco virtual.
[0059] Dada uma quantidade especificada de espaço dearmazenamento (por exemplo, um número de dispositivos de armazenamento disponíveis) e uma tolerância de falha, o sistema pode automaticamente gerar a faixa de opções disponíveis para seleção pelo usuário e expor estas opções através de uma interface adequada. O sistema pode também ajustar uma configuração padrão para utilizar no caso em que um usuário escolher não exercer nenhuma das outras opções para customizar a configuração. Como mencionado, a configuração padrão é definida como um nível intermediário de modo a criar um equilíbrio aceitável entre eficiência de armazenamento e tempo de recuperação. A configuração padrão pode ser definida com base em um objetivo limite designado para cada ou ambos o tempo de recuperação ou eficiência de armazenamento.
[0060] Em uma implementação, o sistema pode ser projetado para permitir a seleção da faixa total de opções que são possíveis dada a configuração especificada de parâmetros (por exemplo, a quantidade de armazenamento e um falha de tolerância). Alternativamente, o sistema estar configurado para diminuir a faixa de possíveis opções para um subconjunto de opções disponíveis que são expostas para seleção de usuário. Em outras palavras, Algumas possíveis opções podem ser excluídas em alguns cenários. Esta proposta pode ser empregada para produzir um sistema para o qual algum desempenho garanta que a proteção de dados, resiliência, e/ou recuperação possam ser feitas. Como exemplo, as opções de Reed-Solomon e/ou opções de espelhamento podem ser excluídas em uma ou mais implementações. Um número mínimo de dispositivos de armazenamento físico pode também ser especificado, o que pode também reduzir a faixa de opções.
[0061] Em outro exemplo, um limite inferior pode ser colocado sobreos valores que podem ser selecionados para a tolerância de falha em relação ao número de dispositivos de armazenamento físico. Isto força a tolerância de falha a crescer para pelo menos um nível limite conforme cada vez mais dispositivos de armazenamento físicos são adicionados. A probabilidade de ter um número arbitrário de falhas de dispositivo simultâneas aumenta conforme o número de dispositivos aumenta. Tendo um limite inferior adiciona alguma medida de proteção contra uma falha de mais dispositivos do que a tolerância de falha para o sistema, que poderia resultar em perda de dados irrecuperável.
[0062] Em uma implementação, um limite inferior (por exemplo,valor mínimo) para a tolerância de falha é ajustado que aumenta conforme os limites de número de dispositivos ou incrementos. Assim, o limite inferior assegura que a tolerância de falha é ajustada para pelo menos um limite inferior nos limites de número de dispositivos. O limite inferior pode ser ajustado para aumentar linearmente ou de acordo com uma função não linear com base na probabilidade de falhas para sistemas de diferentes tamanhos. Em um exemplo específico, o limite inferior pode estar configurado para aumentar por um em um incremento especificado para o número de dispositivos. Se o incremento for ajustado para 7 por exemplo, então o limite inferior pode ser ajustado para 1 para 1 a 7 dispositivos, 2 para 8 a 14 dispositivos, 3 para 15 a 21 dispositivos, e assim por diante. Naturalmente, o incremento e/ou o tamanho de incremento no limite inferior podem ser ajustados para diferentes valores. Mais ainda, o incremento e/ou o tamanho de incremento no limite inferior empregado podem permanecer constantes ou podem variar conforme o número de dispositivos aumenta.
[0063] Tendo considerado a discussão de detalhes acima referenteà configuração de um disco virtual com paridade de n modos, considere agora alguns detalhes de técnicas para recuperação e redistribuição de dados no caso de falhas.
[0064] Esta seção descreve as técnicas para recuperação eredistribuição de dados para reobter resiliência após uma falha. As técnicas podem ser aplicáveis a sistemas configurados com paridade de n modos como aqui discutidos assim como a outros sistemas de armazenamento virtualizados que fazem uso de múltiplos dispositivos físicos, tal os sistemas espelhados.
[0065] Para reiterar, os dados armazenados no meio dearmazenamento são considerados resilientes quando um ou mais dispositivos de armazenamento podem falhar e os dados não são perdidos (por exemplo, os dados são recuperáveis). Uma variedade de técnicas está disponível que podem ser empregadas para prover resiliência contra falhas incluindo a paridade de n modos discutida na seção precedente. No caso de uma falha, a perda de dados pode ainda ocorrer mesmo para um sistema resiliente se falhas adicionais ocorrerem antes do sistema de armazenamento ser restaurado para um estado resiliente. Consequentemente, a quantidade de tempo que leva recuperar os dados e restaurar a resiliência de um sistema de armazenamento é uma consideração para levar em conta no projeto de sistemas de armazenamento.
[0066] Em uma ou mais implementações, o esquema dearmazenamento 208 derivado por um módulo de gerenciador de disco 118 para uma configuração de disco virtual está configurado para implementar as técnicas recuperação e redistribuição aqui descritas. Como abaixo discutido em maiores detalhes, as técnicas de recuperação e redistribuição estão projetadas para reduzir o tempo que leva para restaurar a resiliência após a falha. Falando genericamente, isto envolve (1) técnicas para distribuição de dados através de múltiplas unidades físicas em um modo que facilita a operações de regeneração e rebalanceamento concorrentes para recuperação e (2) técnicas de paralelização para executar as operações concorrentes incluindo, mas não limitado a controlar múltiplas leituras / escritas paralelas durante a recuperação.
[0067] Para ilustrar, considere a Figura 5 a qual apresentageralmente em 500 um cenário exemplar para a recuperação de dados após a falha de um ou mais dispositivos associado com um disco virtual. Aqui, assuma que o disco virtual exemplar 206 está inicialmente em um estado resiliente. A resiliência pode ser conseguida utilizando a paridade de n modos aqui descrita ou outras técnicas. Como apresentado, os dados de cliente 114 (e dados de redundância correspondentes) são distribuídos de vários dispositivos de armazenamento 120. O módulo de gerenciador de disco 118 está apresentado como incluindo ou de outro modo fazendo uso de uma funcionalidade para recuperação 504 e redistribuição 508. A funcionalidade para recuperação 504 e redistribuição 508 pode ser implementada por meio de um esquema de armazenamento 208, submódulos do módulo de gerenciador de disco 118, módulos independentes, ou de outro modo.
[0068] Consequentemente, quando um dispositivo falhado 502 éencontrado, o módulo de gerenciador de disco 118 pode operar para recuperar os dados que foram armazenados no dispositivo falhado 502. Isto pode incluir identificar cópias de dados perdidos e/ou aplicar um código de apagamento ou outro algoritmo de regeneração para regenerar os dados perdidos. Além disso, o módulo de gerenciador de disco 118 é operável para redistribuir 506 os dados através dos dispositivos restantes. Como exemplo, os dados inicialmente armazenados através de quatro dispositivos na Figura 5 podem ser rebalanceados de três dispositivos, se um espaço de armazenamento reservado suficiente for disponível nestes, quando o dispositivo falhado 502 é detectado. Os dados de cliente podem agora ser resilientes, mas o disco virtual está com um dispositivo a menos e, portanto, pode não estar em um estado executante. Como adicionalmente ilustrado, um dispositivo de substituição 508 pode ser adicionado ao disco virtual 206 para substituir o dispositivo falhado 502. Neste cenário, o módulo de gerenciador de disco 118 está ainda operável para novamente redistribuir os dados de volta através das múltiplas unidades. No exemplo ilustrado, os dados são rebalanceados dos três dispositivos para adicionar de volta o dispositivo de substituição 508 e restabelecer o desempenho. As várias operações de recuperação apenas descritas estão configuradas para utilizar alocação de dados e paralelização de tarefas como aqui descrito para minimizar o tempo da falha para a restauração de resiliência.
[0069] Como mencionado, o modo no qual os dados são alocadosou dispostos sobre a unidade virtual determina o grau no qual a paralelização de tarefas pode ser empregada para as operações de recuperação. Consequentemente, o módulo de gerenciador de disco 118 pode estar configurado para empregar um esquema de alocação que facilite a recuperação paralela. Em outras palavras, o esquema de alocação está projetado para permitir a paralelização aqui descrita seletivamente dispondo os dados através dos dispositivos de armazenamento físico.
[0070] Geralmente, esquemas de alocação adequados operampara produzir uma distribuição de dados substancialmente igual através do armazenamento disponível. Para fazer isso, os dados podem ser partidos em unidades referidas como placas. Por exemplo, um dispositivo de armazenamento de um terabyte pode ser dividido em placas de um gigabyte. O esquema de alocação está projetado para alocar as placas através de diferentes combinações de dispositivos de armazenamento disponíveis para o disco virtual. Consequentemente, as placas são distribuídas de modo a assegurar que os dados sejam localizados através dos dispositivos de armazenamento disponíveis. Isto permite a paralelização de escritas / leituras durante as operações de regeneração distribuindo os dados de redundância para mais dispositivos físicos. Vários esquemas de alocação adequados são contemplados. Como exemplo e não limitação, alguns esquemas de alocação ilustrativos incluindo esquemas randômicos, de depósito, e de bitmap estão discutidos por sua vez logo abaixo.
[0071] Uma proposta envolve selecionar randomicamente osdispositivos de armazenamento para utilizar para cada placa. Em uma implementação, um gerador de número randômico pode ser empregado para selecionar os dispositivos para utilizar paras as alocações. Outros modos de randomicamente selecionar dispositivos podem também ser empregados. As placas são então individualmente distribuídas através dos dispositivos randomicamente selecionados. O esquema randômico é bastante direto de implementar e prover pelo menos um nível de distribuição adequado.
[0072] Um esquema de depósito está também contemplado. Oesquema de depósito é uma otimização do esquema randômico no qual os dispositivos de armazenamento são divididos em um número de depósito designado de acordo com a utilização de capacidade. O número de depósitos pode ser um valor fixo, tal como 10, ou pode ser baseado no número total de dispositivos (por exemplo, uma percentagem do número total de unidades). Por exemplo, os depósitos podem ser configurados em incrementos de utilização de 10%. Um depósito associado com a utilização de capacidade mais baixa é empregado primeiro para a alocação. Ainda, os depósitos são processados um de cada vez da utilização de capacidade mais baixa para mais alta para produzir uma alocação distribuída de dados no disco virtual. Dentro de cada depósito, os dispositivos podem ser selecionados randomicamente. Conforme os dados são adicionados aos dispositivos, a utilização de capacidade aumenta e os dispositivos movem para dentro de diferentes depósitos associados com a utilização de capacidade mais alta. O depósito de capacidade mais baixa eventualmente torna-se vazio e consequentemente o depósito com a utilização de capacidade mais baixa seguinte é selecionado para a próxima alocação de placa. O processo repetido para ciclar através dos vários depósitos. A proposta em depósito pode prover uma distribuição relativamente mais uniforme do que utilizando somente a proposta randômica.
[0073] Além disso, um esquema de bitmap pode ser empregado emalgumas implementações. Na proposta de bitmap, cada dispositivo no grupamento está configurado para manter um bitmap que representa as suas relações com cada um dos outros dispositivos. Dois dispositivos são considerados estarem em uma relação, se estes forem utilizados com parte da mesma alocação de placa. Por exemplo, cópias de dados ou combinações de dados / de redundância para a mesma placa são mantidos nas unidades que têm uma relação. Uma relação pode ser refletida ajustando um bit correspondente no bitmap para um valor de 1 para indicar a relação e 0 de outro modo. Uma lista round-robin de unidades é mantida. Quando os dados para uma placa de dados são alocados, cada dispositivo é verificado na ordem round-robin para determinar a adequabilidade para a alocação.
[0074] Quando um dispositivo é verificado para adequabilidade, obitmap é referenciado para determinar as relações com relação à operação corrente com base no bitmap do dispositivo. Se o bitmap indicar que uma relação já existe com relação à operação, o dispositivo é pulado. Deste modo, as alocações que produzem novas relações entre dispositivos são priorizadas. Se cada dispositivo for verificado e nenhum dos dispositivos puder ser selecionado para a operação específica, então a primeira unidade na ordem round-robin é selecionada, independente do bitmap. Uma vez que todos os dispositivos foram pegos por sua vez, os respectivos mapas de bits são atualizados para refletir a nova alocação e relações. Quando o bitmap de um dispositivo torna-se todo 1s, o bitmap pode ser reiniciado para 0s de modo que relações adicionais possam ser formadas em subsequentes operações. Esta proposta efetivamente produz uma alocação com uma distribuição uniforme de relações entre o grupamento de dispositivos e as placas utilizando os mapas de bits para priorizar e selecionar as combinações de dispositivos que não foram estabelecidas para alocação de cada placa específica ou porção de dados para realocar.
[0075] Os esquemas randômico, de depósito e de bitmap assimcomo outros esquemas podem ser empregados individualmente ou em combinação uns com os outros em várias implementações. Por exemplo, o esquema de depósito pode ser empregado para distribuições de dados iniciais e em alguns cenários derebalanceamento. Quando uma nova unidade de substituição éadicionada, porém a proposta de depósito pode não ser apropriada já que a nova unidade tem uma capacidade de utilizaçãoconsideravelmente menor do que as outras unidades. Assim, oesquema randômico ou um esquema direto pode ser utilizado primeiro para inicialmente encher o novo dispositivo de substituição até uma capacidade designada. Um rebalanceamento utilizando a proposta de depósito ou bitmap pode então ser executado logo após para redistribuir os dados em um modo que seja mais adequado para paralelização. Assim, o esquema de alocação pode representar uma combinação de múltiplos esquemas individuais que são aplicados seletivamente a diferentes operações de alocação. A combinação de esquemas individuais pode incluir, mas não está limitada aos esquemas randômico, de depósito e de bitmap exemplares aqui descritos. Detalhes adicionais referentes a estes e outros aspectos de técnicas de recuperação e redistribuição estão descritos em relação ao procedimento exemplar seguinte.
[0076] A Figura 6 apresenta um procedimento exemplar 600 pararecuperação de acordo com uma ou mais implementações. Um espaço reservado para recuperação em dispositivos de armazenamento durante a configuração de um disco virtual (bloco 602). Por exemplo, o módulo de gerenciador de disco 118 pode estar configurado para reservar pelo menos algum espaço de armazenamento para permitir as técnicas recuperação e redistribuição aqui descritas. A paralelização pode ser adversamente afetada se dispositivos forem utilizados até a capacidade já que estas unidades ficarão indisponíveis durante a recuperação. Consequentemente, o módulo de gerenciador de disco 118 pode implementar um esquema de armazenamento que reserva algum espaço em cada dispositivo de armazenamento. A quantidade de espaço pode ser uma quantidade pré-definida tal como 25% ou 30% espaço reservado. A quantidade de espaço pode também ser computada de acordo com configuração de disco virtual específica.
[0077] Em uma implementação, o espaço reservado pode sercomputado como um fator da tolerância de falha de modo que um espaço suficiente através dos dispositivos restantes seja disponível para reconstrução no caso do número de falhas toleráveis ocorre. Por exemplo, dado 10 dispositivos com uma tolerância de falha de 2 dispositivos e capacidades individuais de 1 terabyte, o espaço reservado pode ser selecionado de modo que pelo menos 2 terabytes (por exemplo, a capacidade de falhas toleráveis) de espaço reservado sejam disponíveis nos 8 dispositivos que restariam após duas 2 falhas. Assim cada unidade reservaria pelo menos 250 gigabytes de espaço (por exemplo, 2000 gigabytes / 8 dispositivos) ou 25% neste exemplo. Existe um fator de segurança embutido nesta computação já que as unidades falhadas também têm algum espaço reservado e, portanto, o espaço reservado computado deve ser mais do que adequado para a recuperação. Naturalmente, a quantidade de espaço reservado pode ser computada em qualquer modo adequado incluindo mas não limitado aos exemplos enumerados.
[0078] Os dados de cliente e os dados de redundância sãodistribuídos através dos dispositivos de armazenamento de acordo com um esquema de alocaçãoque facilite a recuperação paralela (bloco 604). Vários esquemas de alocação podem ser empregados incluindo os exemplos previamente discutidos. Mais ainda, os dados de redundância podem ser computados utilizando paridade de n modos, espelhamento, Reed-Solomon ou uma combinação. As placas de dados podem então ser alocadas em um modo que consiga uma distribuição adequada através das unidades que seja suficiente para permitir uma recuperação paralela. Consequentemente, as técnicas de paralelização acima e abaixo descritas podem ser empregadas para qualquer ou toda a distribuição de dados inicial para os dispositivos de armazenamento (por exemplo, escrita de placas de dados nos dispositivos), operações de recuperação (lidas / escritas), rebalanceamento, e assim por diante.
[0079] A falha de um ou mais dos dispositivos de armazenamentoé detectada (bloco 606). Por exemplo, o módulo de gerenciador de disco 118 pode operar para monitorar o desempenho de dispositivo de armazenamento e determinar quando os dispositivos param de funcionar apropriadamente. Se erros forem encontrados para um dispositivo, o dispositivo pode também ser desligado para uma impedir uma falha irrecuperável.
[0080] Os dados são recuperados dos um ou mais dispositivos dearmazenamento utilizando tarefas paralelas e o espaço reservado para redistribuir os dados atravésdos dispositivos de armazenamento restantes que não falharam (bloco 608). Aqui, os dados que estão armazenados na unidade falhada podem ser relocados para os discos restantes. Esta relocação é possível em parte devido ao espaço reservado que está alocado em cada disco. É também possível relocar dados sem explicitamente reservar espaço desde que um espaço suficiente seja disponível nos discos restantes. Reservar espaço assegurará que este é o caso. O módulo de gerenciador de disco 118 pode operar para localizar dados de contraparte a dados no dispositivo falhado (por exemplo, cópias, dados de redundância, e/ou dados de paridade). O módulo de gerenciador de disco 118 pode reconstruir os dados perdidos utilizando os dados de contraparte e pode determinar a localização de fonte e destino para cada porção de dados (por exemplo, chunk ou placa) a ser relocada / redistribuída. Além disso, a redistribuição dos dados pode ser configurada para utilizar as técnicas de paralelização que estão abaixo descritas em maiores detalhes.
[0081] A adição de um ou mais dispositivos de armazenamento de substituição ao disco virtual é averiguada (bloco 610). Os dados são rebalanceados dos dispositivos de armazenamento restantes para incorporar os um ou mais dispositivos de armazenamento de substituição de acordo com o esquema de alocação que facilita a recuperação paralela (bloco 612). Por exemplo, quando os dispositivos de armazenamento de substituição são adicionados à unidade virtual, o módulo de gerenciador de disco 118 detecta isto e pode tomar uma ação apropriada para fazer uso do armazenamento adicionado. Geralmente, isto envolve uma operação de alocação para distribuir os dados nos dispositivos de substituição. Ainda, o módulo de gerenciador de disco 118 pode operar para rebalancear os dados sobre todos os dispositivos do disco virtual incluindo os dispositivos de armazenamento que restam após a falha mais as unidades de substituição. Em outras palavras, os dados são dispersos de volta para o grupamento de dispositivos o que pode restaurar o desempenho e restabelecer o espaço reservado. Mais ainda, o rebalanceamento pode ocorrer de acordo com o esquema de alocação de modo que os dados são preparados para paralelização em conexão com as operações de recuperação e/ou redistribuição subsequentes.
[0082] Em uma implementação, o esquema de depósito pode serdefinido como um padrão que é utilizado para distribuição desde que a utilização de capacidade dos dispositivos seja apropriada. Geralmente, o esquema de depósito provê uma boa distribuição quando a diferença entre utilização de capacidade não é muito grande através do grupamento de dispositivos. Como mencionado, quando apenas um ou dois dispositivos têm uma utilização muito mais baixa do que o restante do grupamento o esquema de depósito pode selecionar em excesso estes dispositivos e, portanto, tornar a paralelização mais difícil. Consequentemente, quando dispositivos de substituição são adicionados, a proposta randômica ou outra proposta pode ser empregada primeiro para carregar alguns dados nos dispositivos de substituição. O esquema de depósito pode ser aplicado posteriormente para rebalancear os dados através de todos os dispositivos disponíveis para conseguir uma melhor distribuição e preparar o sistema de armazenamento para a paralelização.
[0083] A paralelização refere-se a técnicas para executaroperações concorrentes para recuperação e redistribuição. Isto pode incluir mas não está limitado a controlar múltiplas leituras / escritas paralelas para alocação de dados, recuperação, rebalanceamento, e assim por diante. A paralelização está projetada para envolver tantos dispositivos e combinações de dispositivos quanto possível durante os processos de recuperação de modo a aumentar a velocidade de recuperação (por exemplo, minimizar o tempo de recuperação).
[0084] Falando genericamente, a paralelização envolve produzircoincidências entre fontes e destino para chunks de dados de modo a permitir que tantas tarefas concorrentes ocorram quanto possível. Por exemplo, se um grupamento tiver cem dispositivos de armazenamento, então cinquenta tarefas de leitura / escrita poderiam conceitualmente ser executadas em paralelo entre cinquenta pares estabelecidos entre os dispositivos para uma passada de processamento. Para ser efetivo, a paralelização baseia-se em uma suficiente alocação dos dados através das unidades físicas utilizando os esquemas de alocação como descrito na seção precedente. Dada uma distribuição adequada, a paralelização determina os pares de dispositivo, identifica tarefas que podem ser completadas em paralelo, e então agenda e executa as tarefas para minimizar o tempo de recuperação. Detalhes adicionais referentes a estes e outros aspectos das técnicas de paralelização estão descritos em relação ao seguinte procedimento exemplar.
[0085] A Figura 7 apresenta um procedimento exemplar 700 para paralelização de acordo com uma ou mais implementações. Chunks de dados para processar para uma operação de recuperação são averiguados (bloco 702). Considere novamente um cenário no qual um dispositivo de armazenamento falha e consequentemente alguns dados contidos no dispositivo falhado não estão mais disponíveis do dispositivo. Assumindo que o sistema estava em um estado resiliente quando o dispositivo falhou, os dados de contraparte para os dados "perdidos"estão disponíveis nas unidades restantes. Os dados de contraparte podem definir os dispositivos de fonte e localizações de dados para a operação de recuperação. O módulo de gerenciador de disco 118 pode estar configurado para determinar as localizações destes dados de contraparte. Os dados perdidos podem também ser regenerados de dados de redundância se uma resiliência baseada em paridade for empregada além de ou no lugar de espelhamento. Naturalmente, a paralelização pode também ser utilizada para as operações de rebalanceamento / redistribuição em cujo caso as localizações de dados para relocar através das operações definem os dispositivos de fonte e as localizações. Os dados de fonte podem ser organizados em chunks ou placas de um tamanho selecionado, tal como placas de um gigabyte ou quinhentos megabytes. A paralelização pode, portanto, ser executada em uma base de placa por placa.
[0086] Tendo averiguado os dados de fonte, o módulo de gerenciador de disco 118 pode também fazer uma determinação quanto a se uma paralelização é possível para a operação específica. Para fazer isto, o módulo de gerenciador de disco 118 pode examinar o layout de dados e localizações para avaliar a distribuição. O módulo de gerenciador de disco 118 pode também verificar para assegurar que espaço reservado suficiente ou outro espaço disponível existe nos dispositivos de destino. Em outras palavras, o módulo de gerenciador de disco 118 estabelece que as fontes e os destinos estão suficientemente distribuídos para suportar a paralelização. Se não, então o processamento paralelo pode ser pulado e outras técnicas para a recuperação podem ser selecionadas Assumindo que uma distribuição suficiente é descoberta, o módulo de gerenciador de disco 118 continua configurando o processamento paralelo para ocorrer para implementar a operação de recuperação.
[0087] Especificamente, os pares de dispositivo de fonte edispositivo de destino são determinados (bloco 704). Então, as tarefas de processamento que são executáveis concorrentemente são identificadas para os pares de dispositivo de fonte e dispositivo de destino (bloco 706). As tarefas de processamento identificadas são agendadas para execução em um tempo específico (bloco 708) e então, as tarefas de processamento identificadas são executadas em paralelo no tempo específico (bloco 710).
[0088] O processamento paralelo pode ser implementado emqualquer modo adequado. Em uma proposta, o conjunto de dados a ser redistribuído / relocado é dividido em placas de um tamanho designado como acima mencionado. As placas são então processadas uma a uma para determinar uma combinação de dispositivo de fonte e dispositivo de destino para a placa. Em outras palavras, o módulo de gerenciador de disco 118 casa os dados de fonte para destinos para gerar os pares de dispositivo de fonte e dispositivo de destino. Os pares de dispositivo de fonte e dispositivo de destino correspondem a tarefas de processamento (leituras / escritas) para executar a redistribuição. Em uma implementação, os pares de dispositivo de fonte e dispositivo de destino podem ser codificados na forma de um mapa ou outra estrutura de dados adequada que indica como cada placa deve ser movida. Desde que os dados estejam suficientemente distribuídos para começar e espaço reservado está disponível em cada dispositivo de armazenamento, os pares podem ser formados para incluir a maioria se não todos os dispositivos de armazenamento do que apenas uns poucos. Conforme o número de dispositivos de armazenamento incluídos nos pares aumenta, o número de tarefas paralelas que são possíveis também aumenta.
[0089] Utilizando os pares de dispositivo de fonte e dispositivo dedestino, o módulo de gerenciador de disco 118 pode prosseguir para determinar conjuntos de tarefas de processamento que podem ser executadas em paralelo. Para fazer isto, o módulo de gerenciador de disco 118 pode fazer múltiplas passadas para identificar e agrupar juntos os pares que cada um utiliza diferentes dispositivos de armazenamentos individuais. Se uma tarefa for encontrada que envolve um dispositivo de armazenamento que já está incluído em um dado grupo, a tarefa é pulada e pode ser colocada em um diferente grupo em uma passada subsequente. Em cada passada, o módulo de gerenciador de disco 118 pode encher o grupo com tantos diferentes dispositivos de armazenamento do grupamento quanto possível. Assim, os grupos são formados de modo que para cada grupo os pares de dispositivo de fonte e dispositivo de destino incluídos no grupo contenham não mais do que uma instância de cada um individual dos dispositivos de armazenamento físico. Em outras palavras, um dispositivo de armazenamento específico é colocado apenas uma vez dentro de cada dado grupo e não é repetido dentro de um grupo. Utilizando um grupamento de cem dispositivos de armazenamento como um exemplo, o módulo de gerenciador de disco 118 pode em cada passada tentar encontrar e agrupar cinquenta pares que envolvam cada um dos cem dispositivos de armazenamento. O módulo de gerenciador de disco 118 então agenda as tarefas agrupadas para um processamento concorrente em respectivos tempos. Naturalmente alguns grupos podem ser formados que não incluem todos os dispositivos de armazenamento no grupamento.
[0090] Em cada passada, os grupos são derivados e agendados emum modo comparável. O módulo de gerenciador de disco 118 esquematicamente trabalha através de todos os dados para fazer tantas coincidências de tarefas paralelas quanto possível. O módulo de gerenciador de disco 118 pode incluir ou interagir com um pipeline ou fila de tarefas configuradas para gerenciar e agendar as tarefas paralelas. O pipeline está configurado para manipular leituras / escritas simultâneas através do grupamento. O pipeline também permite um controle de sistema e/ou administrativo sobre o processamento e aceleramento das tarefas de recuperação para balanceamento de carga ou de outro modo. Por exemplo, as tarefas de regeneração podem ser pausadas ou desaceleradas sob condição de alta carga. Então, as tarefas de regeneração podem ser reiniciadas ou aumentadas quando a carga diminui, Em uma proposta, às tarefas de recuperação estão atribuídas uma prioridade mais baixa em relação às tarefas de aplicação (por exemplo, atividade de usuário) por padrão. Neste caso, as tarefas de aplicação têm prioridade sobre as tarefas de recuperação. No entanto, a um administrador podem ser providas opções para seletivamente acelerar a recuperação designando diferentes prioridades ou temporariamente suspendendo a carga de aplicação para permitir o completamento de tarefas de recuperação em uma base situacional.
[0091] Tendo considerado alguns detalhes exemplares referentes avárias técnicas para recuperação e redistribuição, considere agora uma discussão de sistemas e dispositivo exemplares que podem ser empregados para implementar as várias técnicas em uma ou mais modalidades.
[0092] A Figura 8 ilustra um sistema exemplar 800 que inclui umdispositivo de computação exemplar 802 que é representativo de um ou mais sistemas e/ou dispositivos de computação que podem implementar as várias técnicas aqui descritas. O dispositivo de computação 802 pode ser, por exemplo, um servidor de um provedor de serviço, um dispositivo associado com um cliente (por exemplo, um dispositivo de cliente), um sistema em chip e/ou qualquer outro dispositivo de computação ou sistema de computação adequado.
[0093] O dispositivo de computação exemplar 802 como ilustradonclui um sistema de processamento 804, um ou mais meios legíveis por computador 806, e uma ou mais interfaces de I/O 808 que estão comunicativamente acoplados uns nos outros. Apesar de não mostrado, o dispositivo de computação 802 pode ainda incluir um barramento de sistema ou outro sistema de transferência de dados e comando que acopla os vários componentes uns nos outros. Um barramento de sistema pode inclui qualquer uma ou combinação de diferentes estruturas de barramento, tal como um barramento de memória ou controlador de memória, um barramento periférico, um barramento serial universal serial, e/ou um processador ou barramento local que utiliza qualquer uma de uma variedade de arquiteturas de barramento. Uma variedade de outros exemplos está também contemplada, tal como linhas de controle e dados.
[0094] O sistema de processamento 804 é representativo de umafuncionalidade para executar uma ou mais operações utilizando hardware. Consequentemente, o sistema de processamento 804 está ilustrado como incluindo elementos de hardware 810 que podem estar configurados como processadores, blocos funcionais, e assim por diante. Isto pode incluir uma implementação em hardware como um circuito integrado de aplicação específica ou outro dispositivo lógico formado utilizando um ou mais semicondutores. Os elementos de hardware 810 não estão limitados pelos materiais dos quais estes são formados ou os mecanismos de processamento empregados no mesmo. Por exemplo, os processadores podem ser compreendidos de semicondutor(es) e/ou transistores (por exemplo, circuitos integrados eletrônicos (ICs)). Em tal contexto, as instruções executáveis por processador podem ser instruções eletronicamente executáveis.
[0095] O meio legível por computador 806 está ilustrado comoincluindo uma memória / armazenamento 812. A memória / armazenamento 812 representa uma capacidade de memória / armazenamento associada com um ou meios legíveis por computador. A memória / armazenamento 812 pode incluir um meio volátil (tal como uma memória de acesso randômico (RAM)) e/ou meio não volátil (tal como memória somente de leitura (ROM), memória instantânea, discos óticos, discos magnéticos, e assim por diante). A memória / armazenamento 812 pode incluir uma mídia fixa (por exemplo, RAM, ROM, uma unidade de disco rígido fixa, e assim por diante) assim como uma mídia removível (por exemplo, memória instantânea, uma unidade de disco rígido removível, um disco ótico, e assim por diante). O meio legível por computador 806 pode estar configurado em uma variedade de outros modos como adicionalmente abaixo descrito.
[0096] Interface(s) de entrada / saída 808 é(são) representativa(s)de uma funcionalidade para permitir um usuário inserir comandos e informações no dispositivo de computação 802, e também permitir que informações sejam apresentadas para o usuário e/ou outros componentes ou dispositivos utilizando vários dispositivos de entrada / saída. Exemplos de dispositivos de entrada incluem um teclado, um dispositivo de controle de cursor (por exemplo, um mouse), um microfone para operações de voz, um scanner, uma funcionalidade de toque (por exemplo, capacitiva ou outros sensores que são configurados para detectar um toque físico), uma câmera (por exemplo, a qual pode empregar comprimentos de onda visíveis ou não visíveis tal como frequências de infravermelho para detectar movimento que não envolve toque como gestos) e assim por diante. Exemplos de dispositivos de saída incluem um dispositivo de display (por exemplo, um monitor ou projetor), alto-falantes, uma impressora, um cartão de rede, um dispositivo, de resposta táctil, assim por diante. Assim, o dispositivo de computação 802 pode estar configurado em uma variedade de modos como adicionalmente abaixo descrito para suportar uma interação de usuário.
[0097] Várias técnicas podem ser aqui descritas no contexto geralde software, elementos hardware, ou módulos de programa. Geralmente, tais módulos incluemrotinas, programas, objetos, elementos, componentes, estruturas de dados, e assim por diante que executam tarefas específicas ou implementam tipos de dados abstratos específicos. Os termos "módulo", "funcionalidade," e "componente" como aqui utilizados geralmente representam software, firmware, hardware, ou uma sua combinação. As características das técnicas aqui descritas são independentes de plataforma, significando que as técnicas podem ser implementadas em uma variedade de plataformas de computação comerciais que têm uma variedade de processadores.
[0098] Uma implementação dos módulos e técnicas descritos podeser armazenada em ou transmitida através de alguma forma de meio legível por computador. O meio legível por computador pode incluir uma variedade de meios que podem ser acessados pelo dispositivo de computação 802. Como exemplo, e não limitação, o meio legível por computador pode incluir "meio de armazenamento legível por computador" e "meio de comunicação".
[0099] "Meio de armazenamento legível por computador" refere-sea um meio e/ou dispositivos que permitem o armazenamento de informações em contraste a mera transmissão de sinal, ondas portadoras, ou sinais por si. Assim o meio de armazenamento legível por computador não inclui um meio de transporte de sinal ou sinais por si. O meio de armazenamento legível por computador inclui um hardware tal como um meio volátil e não volátil, removível e não removível e/ou dispositivos de armazenamento implementados em um método ou tecnologia adequado para armazenamento de informações tal como instruções legíveis por computador, estruturas de dados, módulos de programa, elementos / circuitos lógicos, ou outros dados. Exemplos de meio de armazenamento legível por computador podem incluir, mas não estão limitados a, RAM, ROM, EEPROM, memória instantânea ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, discos rígidos, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou outro dispositivo de armazenamento, mídia tangível, ou artigo de manufatura adequados para armazenar as informações desejadas e os quais podem ser acessados por um computador.
[00100] "Meio de comunicação"refere-se a um meio de transporte de sinal configurado para transmitir instruções pra o hardware do dispositivo de computação 802, tal como através de uma rede. O meio de comunicação tipicamente pode incorporar instruções legíveis por computador, estruturas de dados, módulos de programa, ou outros dados em um sinal de dados modulado, tal como ondas portadoras, sinais de dados, ou outro mecanismo de transporte. O meio de comunicação também inclui qualquer meio de fornecimento de informações. O termo "sinal de dados modulado" significa um sinal que tem uma ou mais de suas 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 inclui um meio com fio tal como uma rede com fio ou conexão com fio direta, e meio sem fio tal como um meio sem fio acústico, RF, infravermelho e outros.
[00101] Como anteriormente descrito, os elementos de hardware 810 e meio legível por computador 806 são representativo de instruções, módulos, lógica de dispositivo programável e/ou lógica de dispositivo fixo implementados em uma forma de hardware que pode ser empregada em algumas modalidades para implementar pelo menos alguns aspectos das técnicas aqui descritas. Os elementos de hardware podem incluir componentes de um circuito integrado ou sistema em chip, um circuito integrado de aplicação específica (ASIC), uma rede de portas programáveis no campo (FPGA), um dispositivo lógico programável complexo (CPLD), e outras implementações em silício ou outros dispositivos de hardware. Neste contexto, um elemento de hardware pode operar como um dispositivo de processamento que executa tarefas de programa definidas por instruções, módulos, e/ou lógica incorporados pelo elemento de hardware assim como um dispositivo de hardware utilizado para armazenar instruções para execução, por exemplo, o meio de armazenamento legível por computador anteriormente descrito.
[00102] Combinações do acima podem também ser empregadas para implementar várias técnicas e módulos aqui descritos. Consequentemente, software, hardware, ou módulos de programa que incluem o sistema de operação 110, aplicações 112, sistema de armazenamento 116, módulo de gerenciador de disco 118, e outros módulos de programa podem ser implementados como uma ou mais instruções e/ou lógica incorporada em alguma forma de meio de armazenamento legível por computador e/ou por um uma mais elementos de hardware 810. O dispositivo de computação 802 pode estar configurado para implementar instruções específicas e/ou funções que correspondem ao software e/ou módulos de hardware. Consequentemente, a implementação de módulos como um módulo que é executável pelo dispositivo de computação 802 como software pode ser conseguida pelo menos parcialmente em hardware, por exemplo, através da utilização de meio de armazenamento legível por computador e/ou elementos hardware 810 do sistema de processamento. As instruções e/ou funções podem ser executáveis / operáveis por um ou mais artigos de manufatura (por exemplo, um ou mais dispositivos de computação 802 e/ou sistemas de processamento 804) para implementar as técnicas, módulos, e exemplos aqui descritos.
[00103] Como ainda ilustrado na Figura 8, o sistema exemplar 800 permite ambientes ubíquos para uma experiência de usuário ininterrupta quando executando aplicações em um computador pessoal (PC), um dispositivo de televisão, e/ou um dispositivo móvel. Serviços e aplicações executadas substancialmente similares em todos os três ambientes para uma experiência de usuário comum quando transicionando de um dispositivo para o próximo enquanto utilizando uma aplicação, jogando um videogame, assistindo um vídeo, e assim por diante.
[00104] No sistema exemplar 800, múltiplos dispositivos estão interconectados através de um dispositivo de computação central. O dispositivo de computação central pode ser local aos múltiplos dispositivos ou pode estar localizado remotamente dos múltiplos dispositivos. Em uma modalidade, o dispositivo de computação central pode ser uma nuvem de um ou mais computadores servidores que estão conectados nos múltiplos dispositivos através de uma rede, a Internet, ou outra conexão de comunicação de dados.
[00105] Em uma modalidade, esta arquitetura de interconexão permite que a funcionalidade seja fornecida através de múltiplos dispositivos para prover uma experiência comum e ininterrupta para um usuário dos múltiplos dispositivos. Cada um dos múltiplos dispositivos pode ter diferentes requisitos e capacidades físicas, e o dispositivo de computação central utilizada uma plataforma para permitir o fornecimento de uma experiência para o dispositivo que e tanto modelada para o dispositivo quanto porém comum a todos os dispositivos. Em uma modalidade, uma classe de dispositivos alvo é criada e experiências são modeladas à classe genérica de dispositivos. Uma classe de dispositivos pode ser definida por características físicas, tipos de utilização, ou outras características comuns dos dispositivos.
[00106] Em várias implementações, o dispositivo de computação 802 pode assumir uma variedade de diferentes configurações, tal como para usos de computador 814, móvel 816, e televisão 818. Cada uma destas configurações inclui dispositivos que podem ter construções ecapacidades geralmente diferentes, e assim o dispositivo decomputação 802 pode estar configurado de acordo com uma ou mais das diferentes classes de dispositivo. Por exemplo, o dispositivo de computação 802 pode ser implementado como a classe de computador 814 de um dispositivo que inclui um computador pessoal, computador desktop, um computador de múltiplas telas, computador laptop,netbook, e assim por diante.
[00107] O dispositivo de computação 802 pode também serimplementado como a classe de dispositivo móvel 816 que inclui dispositivos móveis, tal como um telefone móvel, reprodutor de música portátil, dispositivo de jogo portátil, um computador tablet, um computador de múltiplas telas, e assim por diante. O dispositivo de computação 802 pode também ser implementado como a classe de dispositivo de televisão 818 que inclui dispositivos que têm ou conectados a telas geralmente maiores em ambientes de visualização casual. Estes dispositivos incluem televisões, decodificadores, consoles de jogos, e assim por diante.
[00108] As técnicas aqui descritas podem ser suportadas por estas várias configurações do dispositivo de computação 802 e não estão limitadas aos exemplos específicos das técnicas aqui descritas. Isto está ilustrado através da inclusão do módulo de gerenciador de disco 118 no dispositivo de computação 802. A funcionalidade do módulo de gerenciador de disco 118 e outros módulos pode também ser implementada toda ou em parte através da utilização de um sistema distribuído, tal como sobre uma "nuvem" 820 através de uma plataforma 822 como abaixo descrito.
[00109] A nuvem 820 inclui e/ou é representativa de uma plataforma 822 para recursos 824. A plataforma 822 abstrai a funcionalidade de hardware subjacente (por exemplo, servidores) e recursos de software da nuvem 820. Os recursos 824 podem incluir aplicações e/ou dados que podem ser utilizados enquanto o processamento de computador é executado em servidores que estão remotos do dispositivo de computação 802. Os recursos 824 podem também incluir serviços providos sobre a Internet e/ou através de uma rede de assinante, tal como uma rede de celular ou Wi-Fi.
[00110] A plataforma 822 pode abstrair recursos e funções para conectar o dispositivo de computação 802 com outros dispositivos de computação. A plataforma 822 pode também servir para abstrair a escalagem de recursos para prover um nível de escala correspondente à demanda encontrada para os recursos 824 que são implementados através da plataforma 822. Consequentemente, em uma modalidade de dispositivo interconectado, a implementação de funcionalidade aqui descrita pode ser distribuída através de todo o sistema 800. Por exemplo, a funcionalidade pode ser implementada em parte no dispositivo de computação 802 assim como através da plataforma 822 que abstrai a funcionalidade da nuvem 820.
[00111] Apesar da invenção ter sido descrita em uma linguagem específica a características estruturais e/ou atos metodológicos, deve ser compreendido que a invenção definida nas concretizações não está necessariamente limitada às características ou atos específicos descritos. Ao invés, as características e atos específicos estão descritos como formas exemplares de implementar a invenção reivindicada.
Claims (10)
1. Método implementado por um dispositivo de computação (802), o método caracterizado pelo fato de que compreende as etapas de: alocar (602) um espaço reservado para recuperação em dispositivos de armazenamento (120) durante a configuração de um disco virtual (206); distribuir (604) dados de cliente e dados de redundância entre os dispositivos de armazenamento (120) de acordo com um esquema de alocação que facilita uma recuperação paralela, em que o esquema de alocação representa uma combinação de múltiplos esquemas individuais que são aplicados seletivamente a diferentes operações de alocação, os múltiplos esquemas individuais incluindo pelo menos um esquema de bitmap no qual: cada dispositivo de armazenamento físico (120) mantém um bitmap indicativo de suas relações com outros dispositivos de armazenamento físico (120); e dados são alocados aos dispositivos de armazenamento físico (120) usando os bitmaps para priorizar e selecionar combinações dos dispositivos de armazenamento físico (120) que não foram estabelecidos para a alocação de cada porção específica de dados para realocação; detectar (606) uma falha de um ou mais dispositivos de armazenamento (120); e recuperar (608) dados a partir dos um ou mais dispositivos de armazenamento (120) que falham ao usar tarefas paralelas e o espaço reservado para redistribuir os dados pelos dispositivos de armazenamento restantes (120) que não falharam.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: verificar a adição de um ou mais dispositivos de armazenamento substitutos (508) ao disco virtual (206); ereequilibrar dados dos dispositivos de armazenamento restantes (120) para incorporar um ou mais dispositivos de armazenamento substitutos (508) de acordo com o esquema de alocação que facilita a recuperação paralela.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a recuperação dos dados de um ou mais dispositivos de armazenamento (120) que falham compreende ainda:localizar dados de contrapartida para dados de um ou mais dispositivos de armazenamento (120) que falham nos dispositivos de armazenamento restantes (120);reconstruir dados perdidos a partir dos um ou mais dispositivos de armazenamento (120) que falham ao usar os dados de contrapartida; edeterminar os locais de origem e destino para cada parte dos dados a redistribuir.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o esquema de alocação é configurado para dividir os dispositivos de armazenamento (120) do disco virtual (206) em um número designado de depósitos de acordo com o uso da capacidade e processar os depósitos da menor para a maior capacidade uso para alocar dados através dos dispositivos de armazenamento (120) do disco virtual (206), o esquema de alocação ainda configurado para selecionar dispositivos de armazenamento (120) aleatoriamente dentro de cada dito depósito para alocação de partes individuais de dados.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os múltiplos esquemas individuais incluem um esquema de depósito.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a quantidade de espaço reservado é computada como um fator de uma tolerância a falhas definida para o disco virtual (206) para assegurar que espaço suficiente nos dispositivos de armazenamento restantes (120) esteja disponível para reconstrução de dados no caso de ocorrer um número de falhas igual à tolerância a falhas.
7. Meio de armazenamento legível em computador caracterizado pelo fato de que possui um método que, quando executado por um ou mais componentes de um dispositivo de computação (802), implementa um módulo gerenciador de disco (118) configurado para executar as etapas de: configurar um disco virtual (206) para armazenamento de dados do cliente junto com dados de redundância em vários dispositivos de armazenamento físico (120) de acordo com uma quantidade selecionada pelo usuário de dados de redundância para armazenar resiliência; alocar um espaço reservado para recuperação em cada um dos múltiplos dispositivos de armazenamento físico (120) durante a configuração do disco virtual (206); distribuir dados do cliente e dados de redundância entre os dispositivos de armazenamento físico (120) de acordo com um esquema de alocação que facilita operações de recuperação paralela, em que o esquema de alocação representa uma combinação de vários esquemas individuais que são aplicados seletivamente a diferentes operações de alocação, os vários esquemas individuais incluindo pelo menos um esquema de bitmap em que: cada dispositivo de armazenamento físico (120) mantém um bitmap indicativo de suas relações com outros dispositivos de armazenamento físico (120); e dados são alocados aos dispositivos de armazenamento físico (120) usando os bitmaps para priorizar e selecionar combinações dos dispositivos de armazenamento físico (120) que não foram estabelecidos para a alocação de cada porção específica de dados para realocação; em resposta a uma falha de um ou mais dispositivos de armazenamento físico (120), reconstruir dados contidos em um ou mais dispositivos de armazenamento físico (120) que falharam usando os dados de redundância armazenados nos dispositivos de armazenamento restantes (120) que não falharam; e redistribuir os dados reconstruídos nos dispositivos de armazenamento restantes (120) que não falharam usando o espaço reservado e as tarefas paralelas.
8. Meio de armazenamento legível em computador, de acordo com a reivindicação 7, caracterizado pelo fato de que o módulo gerenciador de disco (118) é ainda configurado para executar operações, incluindo: dividir os dados reconstruídos em blocos de tamanho definido; determinar pares de dispositivos de origem e de dispositivos de destino a partir dos dispositivos de armazenamento restantes (120) para cada bloco; identificar grupos de tarefas paralelas para a redistribuição dos dados reconstruídos que são executáveis simultaneamente para os pares de dispositivos de origem e de dispositivos de destino, incluindo a formação de cada grupo, de modo que os pares de dispositivos de origem e de dispositivos de destino incluídos no grupo não contenham mais de uma instância de cada um dos dispositivos de armazenamento físico (120); e agendar os grupos de tarefas paralelas para execução em conjunto nos respectivos tempos para implementar as operações de recuperação paralela.
9. Meio de armazenamento legível em computador, de acordo com a reivindicação 7, caracterizado pelo fato de que o esquema de alocação que facilita a recuperação paralela compreende pelo menos um dentre:um esquema de depósito no qual os dispositivos de armazenamento físico (120) são divididos em um número designado de depósitos de acordo com o uso da capacidade e os depósitos são processados do menor para o maior uso de capacidade para produzir uma alocação distribuída de dados para o disco virtual; ouum esquema aleatório no qual os dispositivos de armazenamento físico (120) do disco virtual (206) são selecionados aleatoriamente para a distribuição dos dados do cliente e dados de redundância entre os dispositivos de armazenamento físico (206).
10. Meio de armazenamento legível em computador, de acordo com a reivindicação 7, caracterizado pelo fato de que a quantidade selecionada pelo usuário de dados de redundância a armazenar para a resiliência pode ser selecionada através de uma interface de configuração exposta, durante a configuração do disco virtual (206), a uma pluralidade de valores entre uma quantidade mínima para permitir recuperação de dados com a tolerância especificada e uma quantidade para duplicar os dados do cliente.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/830,137 US9081753B2 (en) | 2013-03-14 | 2013-03-14 | Virtual disk recovery and redistribution |
US13/830,137 | 2013-03-14 | ||
PCT/US2014/021459 WO2014159003A1 (en) | 2013-03-14 | 2014-03-07 | Virtual disk recovery and redistribution |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112015020131A2 BR112015020131A2 (pt) | 2017-07-18 |
BR112015020131A8 BR112015020131A8 (pt) | 2019-11-19 |
BR112015020131B1 true BR112015020131B1 (pt) | 2021-12-28 |
Family
ID=50390262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112015020131-8A BR112015020131B1 (pt) | 2013-03-14 | 2014-03-07 | Método e meio de armazenamento legível por computador para recuperação eredistribuição de disco virtual |
Country Status (5)
Country | Link |
---|---|
US (1) | US9081753B2 (pt) |
EP (1) | EP2972872B1 (pt) |
CN (1) | CN105229615B (pt) |
BR (1) | BR112015020131B1 (pt) |
WO (1) | WO2014159003A1 (pt) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176818B2 (en) * | 2013-03-14 | 2015-11-03 | Microsoft Technology Licensing, Llc | N-way parity for virtual disk resiliency |
US9582297B2 (en) | 2013-05-16 | 2017-02-28 | Vmware, Inc. | Policy-based data placement in a virtualized computing environment |
KR20150000074A (ko) * | 2013-06-21 | 2015-01-02 | 한국전자통신연구원 | 가상 머신 고장 디스크 복구 방법 및 장치 |
US10187083B2 (en) | 2015-06-26 | 2019-01-22 | Microsoft Technology Licensing, Llc | Flexible erasure coding with enhanced local protection group structures |
USRE50129E1 (en) | 2016-05-02 | 2024-09-17 | Samsung Electronics Co., Ltd. | Storage device having various recovery methods and recovery modes |
KR102628239B1 (ko) * | 2016-05-02 | 2024-01-24 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치 및 호스트 장치를 포함하는 컴퓨팅 장치의 동작 방법 |
US10223016B2 (en) * | 2016-05-10 | 2019-03-05 | Vmware, Inc | Power management for distributed storage systems |
CN105843562B (zh) * | 2016-05-24 | 2018-12-07 | 浙江宇视科技有限公司 | 数据重建的方法及装置 |
CN107885622B (zh) * | 2016-09-30 | 2021-03-09 | 伊姆西Ip控股有限责任公司 | 处理虚拟数据移动器(vdm)故障备援情况 |
US20180293013A1 (en) * | 2017-04-06 | 2018-10-11 | Dell Products, Lp | System and Method for Dynamically Allocating Storage Drives in a Storage Array |
US10853177B2 (en) | 2017-07-27 | 2020-12-01 | United States Of America As Represented By The Secretary Of The Air Force | Performant process for salvaging renderable content from digital data sources |
US10778768B2 (en) * | 2017-08-02 | 2020-09-15 | Electronics And Telecommunications Research Institute | Method and system for optimizing cloud storage services |
KR102365984B1 (ko) * | 2017-08-02 | 2022-02-23 | 한국전자통신연구원 | 클라우드 스토리지 서비스들을 최적화하는 방법 및 클라우드 스토리지 서비스들을 최적화하는 장치 |
CN107766180B (zh) * | 2017-09-22 | 2020-08-14 | 成都华为技术有限公司 | 存储介质的管理方法、装置及可读存储介质 |
US10901867B2 (en) * | 2018-01-24 | 2021-01-26 | Apple Inc. | Distributed redundant storage system |
US10754569B2 (en) * | 2018-09-06 | 2020-08-25 | Oracle International Corporation | Methods to reduce storage capacity |
US11243882B2 (en) * | 2020-04-15 | 2022-02-08 | International Business Machines Corporation | In-array linked list identifier pool scheme |
CN114253460B (zh) * | 2020-09-23 | 2024-08-23 | 伊姆西Ip控股有限责任公司 | 管理存储池的方法、设备和计算机程序产品 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5210866A (en) | 1990-09-12 | 1993-05-11 | Storage Technology Corporation | Incremental disk backup system for a dynamically mapped data storage subsystem |
US6678788B1 (en) * | 2000-05-26 | 2004-01-13 | Emc Corporation | Data type and topological data categorization and ordering for a mass storage system |
JP2002023967A (ja) | 2000-07-05 | 2002-01-25 | Hitachi Electronics Eng Co Ltd | 記憶媒体ライブラリアレイ装置におけるドライブ障害復旧方法 |
US8402346B2 (en) * | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
JP2005326935A (ja) * | 2004-05-12 | 2005-11-24 | Hitachi Ltd | 仮想化ストレージを備える計算機システムの管理サーバおよび障害回避復旧方法 |
US7657796B1 (en) * | 2005-09-30 | 2010-02-02 | Symantec Operating Corporation | System and method for distributed storage verification |
JP2007233903A (ja) * | 2006-03-03 | 2007-09-13 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のデータ回復方法 |
US8041985B2 (en) * | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
JP2008046986A (ja) | 2006-08-18 | 2008-02-28 | Hitachi Ltd | ストレージシステム |
US8049980B1 (en) | 2008-04-18 | 2011-11-01 | Network Appliance, Inc. | Partial disk failures and improved storage resiliency |
US8099623B1 (en) | 2008-10-08 | 2012-01-17 | Netapp, Inc. | Efficient distributed hot sparing scheme in a parity declustered RAID organization |
JP5218147B2 (ja) * | 2009-02-26 | 2013-06-26 | 富士通株式会社 | ストレージ制御装置,ストレージ制御方法およびストレージ制御プログラム |
US8321645B2 (en) | 2009-04-29 | 2012-11-27 | Netapp, Inc. | Mechanisms for moving data in a hybrid aggregate |
-
2013
- 2013-03-14 US US13/830,137 patent/US9081753B2/en active Active
-
2014
- 2014-03-07 CN CN201480015197.4A patent/CN105229615B/zh active Active
- 2014-03-07 BR BR112015020131-8A patent/BR112015020131B1/pt active IP Right Grant
- 2014-03-07 WO PCT/US2014/021459 patent/WO2014159003A1/en active Application Filing
- 2014-03-07 EP EP14713704.6A patent/EP2972872B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2014159003A1 (en) | 2014-10-02 |
CN105229615B (zh) | 2018-09-21 |
EP2972872A1 (en) | 2016-01-20 |
EP2972872B1 (en) | 2019-06-12 |
US9081753B2 (en) | 2015-07-14 |
BR112015020131A8 (pt) | 2019-11-19 |
CN105229615A (zh) | 2016-01-06 |
US20140281692A1 (en) | 2014-09-18 |
BR112015020131A2 (pt) | 2017-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112015020131B1 (pt) | Método e meio de armazenamento legível por computador para recuperação eredistribuição de disco virtual | |
US11934260B2 (en) | Problem signature-based corrective measure deployment | |
US9176818B2 (en) | N-way parity for virtual disk resiliency | |
JP5289557B2 (ja) | 分散データストレージシステムの信頼性の動的定量化と改善 | |
US10861117B2 (en) | Server-side, variable drive health determination | |
US10204017B2 (en) | Variable drive health determination and data placement | |
CN109725837B (zh) | 管理存储系统的方法、系统和计算机程序产品 | |
US9563511B1 (en) | Performing input/output operations on a set of storage devices based on scalable input/output credits | |
US8914578B2 (en) | Capacity-expansion of a logical volume | |
US10572157B2 (en) | Data integrity and acceleration in compressed storage environments in combination with software defined native RAID | |
US8972799B1 (en) | Variable drive diagnostics | |
US8151048B1 (en) | Managing storage pool provisioning | |
CN109213428B (zh) | 用于管理存储系统的方法和设备 | |
EP3553664B1 (en) | Method and apparatus for calculating available capacity of storage system | |
US11269745B2 (en) | Two-node high availability storage system | |
US11474900B2 (en) | Dynamic rebuild capability in redundant array of independent disks (RAID) arrays using compressing drives | |
US11868629B1 (en) | Storage system sizing service | |
US9792192B1 (en) | Client-side, variable drive health determination | |
US20240264763A1 (en) | Proactive rebalancing of data among storage devices that are part of a virtual disk | |
WO2024182553A1 (en) | Data storage system with managed flash |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 07/03/2014, OBSERVADAS AS CONDICOES LEGAIS. |