[go: up one dir, main page]

BR102016012742A2 - STORAGE METHOD, DATA RECOVERY METHOD, RELATED APPARATUS, AND SYSTEM - Google Patents

STORAGE METHOD, DATA RECOVERY METHOD, RELATED APPARATUS, AND SYSTEM Download PDF

Info

Publication number
BR102016012742A2
BR102016012742A2 BR102016012742A2 BR 102016012742 A2 BR102016012742 A2 BR 102016012742A2 BR 102016012742 A2 BR102016012742 A2 BR 102016012742A2
Authority
BR
Brazil
Prior art keywords
target
storage
blocks
node
storage node
Prior art date
Application number
Other languages
Portuguese (pt)
Publication date

Links

Description

"MÉTODO DE ARMAZENAMENTO DE DADOS, MÉTODO DE RECUPERAÇÃO DE DADOS, APARELHO RELACIONADO, E SISTEMA" CAMPO DA TÉCNICA"DATA STORAGE METHOD, DATA RECOVERY METHOD, RELATED APPARATUS, AND SYSTEM" TECHNICAL FIELD

[1] A presente invenção refere-se ao campo de armazenamento de dados e, em particular, a um método de armazenamento de dados, um método de recuperação de dados, um aparelho relacionado, e um sistema.[1] The present invention relates to the field of data storage, and in particular to a data storage method, a data recovery method, a related apparatus, and a system.

ANTECEDENTESBACKGROUND

[2] Atualmente, os sistemas de armazenamento distribuído usam, cada vez mais, uma tecnologia de codificação por apagamento (EC, codificação por Apagamento) para armazenar dados. Um princípio da tecnologia de codificação por apagamento é dividir dados em m blocos de dados, e realizar codificação de paridade nos m blocos de dados com o uso de um algoritmo de redundância, para gerar k blocos de paridade, em que os m blocos de dados e os k blocos de paridade são denominados uma faixa de EC. Um bloco de dados ou um bloco de paridade é também denominado um bloco de EC, e cada faixa de EC é tolerável a uma perda de k blocos de EC.[2] Distributed storage systems are increasingly using erasure coding (EC) technology to store data. A principle of erasure coding technology is to divide data into m data blocks, and to perform parity coding on m data blocks using a redundancy algorithm to generate k parity blocks, where m data blocks and the k parity blocks are called an EC range. A data block or parity block is also called an EC block, and each EC range is tolerable for a loss of k EC blocks.

[3] Para garantir confiabilidade de armazenamento, um sistema de armazenamento distribuído distribui m+k blocos de EC de cada faixa de EC para m+k nós de armazenamento para armazenamento. Desse modo, mesmo se um nó estiver com falha, um bloco de EC armazenado no nó com falha pode ser recuperado de acordo com dados armazenados em outro nó. Pode ser entendido que o sistema de armazenamento distribuído com o uso da tecnologia de EC é tolerável a falhas concomitantes de nós de armazenamento k.[3] To ensure storage reliability, a distributed storage system distributes m + k EC blocks from each EC range to m + k storage nodes for storage. Thus, even if a node is failed, an EC block stored on the failed node can be recovered according to data stored on another node. It can be understood that the distributed storage system using EC technology is tolerable to concurrent storage node failures k.

[4] Entretanto, gravar um bloco de EC em um nó de armazenamento exige um período de tempo. Se um nó de armazenamento em m+k nós de armazenamento usados para armazenar uma faixa de EC estiver com falha ao gravar um bloco de EC, um caso em que uma parte dos nós de armazenamento tem um bloco de EC da faixa de EC mas a outra parte dos nós de armazenamento não tem um bloco de EC da faixa de EC ocorre, causando inconsistência de armazenamento da faixa de EC. Portanto, a consistência de armazenamento do sistema de armazenamento distribuído é fraca.[4] However, writing an EC block to a storage node requires a period of time. If a storage node in m + k storage nodes used to store an EC range is failed to write an EC block, a case where a portion of the storage nodes has an EC range EC block but the another part of the storage nodes does not have an EC range EC block occurs, causing EC range storage inconsistency. Therefore, the storage consistency of the distributed storage system is poor.

SUMÁRIOSUMMARY

[5] As modalidades da presente invenção fornecem um método de recuperação de dados usado para aperfeiçoar a consistência de armazenamento de um sistema de armazenamento distribuído.[5] The embodiments of the present invention provide a data retrieval method used to improve the storage consistency of a distributed storage system.

[6] Um primeiro aspecto das modalidades da presente invenção fornece um método de armazenamento de dados, aplicado a um sistema de armazenamento distribuído, em que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC inclui uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC inclui m blocos de dados, a parte de paridade de cada faixa de EC inclui k blocos de paridade que são obtidos após a codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; o sistema de armazenamento distribuído inclui múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento inclui não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e o método é executado por um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento e inclui: receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo inclui m+k blocos de EC alvo, e os m+k blocos de EC alvo incluem blocos de dados alvo m e k blocos de paridade alvo; determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta; e após receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, enviar uma mensagem de execução aos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[6] A first aspect of embodiments of the present invention provides a data storage method applied to a distributed storage system wherein the distributed storage system stores data using erasure-encoding EC bands, each band. EC includes a data part and a parity part, the data part of each EC band includes m data blocks, the parity part of each EC band includes k parity blocks that are obtained after parity coding. be performed on m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; The distributed storage system includes multiple storage node groups, each storage node group includes no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and the method is performed by a primary storage node in any of the storage node groups and includes: receiving a data segment to be stored, and performing EC encoding on the data segment to be stored to obtain an EC range where a data segment size to be stored is not larger than Z, Z is a size of m data blocks, the target EC range includes m + k target EC blocks, and the m + k blocks target EC blocks include target data blocks and mek target parity blocks; determining m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; receive a response message sent by any target storage node from the m + k target storage nodes, where the response message is used to indicate that the target storage node currently sending the response message has generated a log file of staging according to the staging message, and the staging log file includes a target EC block to be stored by the target storage node currently sending the response message; and after receiving response messages from all target storage nodes at m + k target storage nodes, send an execution message to m + k target storage nodes, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the staging log files.

[7] Com referência ao primeiro aspecto das modalidades da presente invenção, em um primeiro modo de implantação do primeiro aspecto das modalidades da presente invenção, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é especificamente usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[7] With reference to the first aspect of the embodiments of the present invention, in a first embodiment of the first aspect of the embodiments of the present invention, the preparation message further includes a version number of the target EC range; The readiness log file additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files.

[8] Com referência ao primeiro modo de implantação do primeiro aspecto das modalidades da presente invenção, um segundo modo de implantação do primeiro aspecto das modalidades da presente invenção inclui adicionalmente: se for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação; e se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[8] With reference to the first embodiment of the first aspect of the embodiments of the present invention, a second embodiment of the first aspect of the embodiments of the present invention further includes: if a failed storage node is found to exist at m + k target storage nodes, upon failed storage node failure recovery, determine if the target EC range version numbers on m + k target storage nodes are the same, where the target EC range version numbers m + k target storage nodes include target EC track version numbers in staging log files on target storage nodes that generated staging log files and / or target EC track version numbers stored by Node nodes. target storage that has no staging log file; and if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where The execution message is used to instruct the target storage nodes to write the target EC blocks included in the staging log files.

[9] Com referência ao segundo modo de implantação do primeiro aspecto das modalidades da presente invenção, em um terceiro modo de implantação do primeiro aspecto das modalidades da presente invenção, o método inclui adicionalmente: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo para excluir os arquivos de registro de preparação.[9] With reference to the second embodiment of the first aspect of the embodiments of the present invention, in a third embodiment of the first aspect of the embodiments of the present invention, the method further includes: if the target EC range version numbers in the target storage nodes on m + k target storage nodes are different, send a delete message to target storage nodes that generated staging log files, where the delete message is used to instruct target storage nodes to delete the preparation log files.

[10] Um segundo aspecto das modalidades da presente invenção fornece um método de recuperação de dados, aplicado a um sistema de armazenamento distribuído, em que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC inclui uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC inclui m blocos de dados, a parte de paridade de cada faixa de EC inclui k blocos de paridade que são obtidos após a codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; cada faixa de EC corresponde a um valor de chave, valores de chave de faixas de EC que têm faixas de endereço iguais de partes de dados são os mesmos, e valores de chave de faixas de EC que têm faixas de endereço diferentes de partes de dados são diferentes; o sistema de armazenamento distribuído inclui múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento inclui não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e quando um nó de armazenamento com falha existe em nós de armazenamento secundários em qualquer um dos grupos de nó de armazenamento, o método é executado por um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento e inclui: após recuperação de falha do nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha; obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha no grupo de nó de armazenamento, em que o N é um número inteiro positivo; enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gera um primeiro bloco de EC e determina que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[10] A second aspect of embodiments of the present invention provides a data retrieval method applied to a distributed storage system, wherein the distributed storage system stores data using erasure-encoding EC bands, each band. EC includes a data part and a parity part, the data part of each EC band includes m data blocks, the parity part of each EC band includes k parity blocks that are obtained after parity coding. be performed on m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; each EC range corresponds to a key value, EC range key values that have equal address ranges of data parts are the same, and EC range key values that have different address ranges of data parts are different; The distributed storage system includes multiple storage node groups, each storage node group includes no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and when a failed storage node exists on secondary storage nodes in any of the storage node groups, the method is performed by a primary storage node in any of the storage node groups and includes: after failover from the failed storage node, receive a recovery message sent by the failed storage node; get N lost EC blocks from the failed storage node through computation according to EC blocks stored by non-failing storage nodes in the storage node group, where N is a positive integer; sequentially send the lost N EC blocks to the failed storage node to perform storage; In the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node; and if it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage.

[11] Com referência ao segundo aspecto das modalidades da presente invenção, em um primeiro modo de implantação do segundo aspecto das modalidades da presente invenção, o envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha para armazenamento inclui: enviar um nésimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[11] With reference to the second aspect of embodiments of the present invention, in a first embodiment of the second aspect of embodiments of the present invention, sequentially sending the lost N EC blocks to the failed storage node for storage includes: sending a nth block of EC lost to failed storage node, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. nth block of lost EC succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[12] Com referência ao primeiro modo de implantação do segundo aspecto das modalidades da presente invenção, em um segundo modo de implantação do segundo aspecto das modalidades da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[12] With reference to the first embodiment of the second aspect of embodiments of the present invention, in a second embodiment of the second aspect of embodiments of the present invention, the lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and lost EC blocks that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[13] Com referência ao segundo aspecto das modalidades da presente invenção ou o primeiro ou segundo modo de implantação do segundo aspecto, em um terceiro modo de implantação do segundo aspecto das modalidades da presente invenção, um volume lógico do sistema de armazenamento distribuído inclui múltiplas partições lógicas, cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe um ao outro, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[13] With reference to the second aspect of the embodiments of the present invention or the first or second embodiment of the second aspect, in a third embodiment of the second aspect of embodiments of the present invention, a logical volume of the distributed storage system includes multiple logical partitions, each logical partition is of a size of k blocks of data and does not overlap each other, each logical partition corresponds exclusively to a key value, and a key value of a logical partition that each EC block is is a key value of the EC block.

[14] Um terceiro aspecto das modalidades da presente invenção fornece um aparelho de armazenamento de dados, em que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC inclui uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC inclui m blocos de dados, a parte de paridade de cada faixa de EC inclui k blocos de paridade que são obtidos após a codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; o sistema de armazenamento distribuído inclui múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento inclui não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e o aparelho de armazenamento de dados é implantado em um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento, e o aparelho de armazenamento de dados inclui: um módulo de codificação de dados configurado para receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo inclui m+k blocos de EC alvo, e os m+k blocos de EC alvo incluem blocos de dados alvo m e k blocos de paridade alvo; um módulo de determinação de nó configurado para determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; um módulo de envio de mensagem configurado para enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; e um módulo de recepção de mensagem, configurado para receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta, em que o módulo de envio de mensagem é configurado adicionalmente para enviar uma mensagem de execução aos m+k nós de armazenamento alvo após o módulo de recebimento de mensagem receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[14] A third aspect of embodiments of the present invention provides a data storage apparatus, wherein the distributed storage system stores data using erasure encoding EC ranges, each EC range includes a data portion and a parity part, the data part of each EC band includes m data blocks, the parity part of each EC band includes k parity blocks that are obtained after parity coding is performed on m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; The distributed storage system includes multiple storage node groups, each storage node group includes no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and the data storage apparatus is deployed to a primary storage node in any of the storage node groups, and the data storage apparatus includes: a data coding module configured to receive a data segment to be stored. , and perform EC encoding on the data segment to be stored to obtain a target EC range, where a size of the data segment to be stored is no larger than Z, Z is a size of m data blocks, a target EC range includes m + k target EC blocks, and m + k target EC blocks include target data blocks and mek target parity blocks; a node determination module configured to determine m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the blocks of target EC; a message sending module configured to send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; and a message receiving module, configured to receive a response message sent by any target storage node from the m + k target storage nodes, wherein the response message is used to indicate that the currently sending target storage node the response message generated a staging log according to the staging message, and the staging log file includes a target EC block to be stored by the target storage node that currently sends the response message, where the message sending module is further configured to send an execution message to the m + k target storage nodes after the message receiving module receives response messages from all target storage nodes at the m + k target storage nodes, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the pr log files. eparation.

[15] Com referência ao terceiro aspecto das modalidades da presente invenção, em um primeiro modo de implantação do terceiro aspecto das modalidades da presente invenção, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é especificamente usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[15] With reference to the third aspect of embodiments of the present invention, in a first embodiment of the third aspect of embodiments of the present invention, the preparation message further includes a version number of the target EC range; The readiness log file additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files.

[16] Com referência ao primeiro modo de implantação do terceiro aspecto das modalidades da presente invenção, em um segundo modo de implantação do terceiro aspecto das modalidades da presente invenção, o aparelho inclui adicionalmente: um módulo de determinação de versão, configurado para: quando for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação, em que o módulo de envio de mensagem é especificamente configurado para: se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[16] With reference to the first embodiment of the third aspect of embodiments of the present invention, in a second embodiment of the third aspect of embodiments of the present invention, the apparatus further includes: a versioning module configured for: when it is detected that a failed storage node exists on the m + k target storage nodes, after failure recovery of the failed storage node, determine if the target EC range version numbers on m + k target storage nodes are where the target EC range version numbers on the m + k target storage nodes include target EC range version numbers in staging log files on target storage nodes that generated staging log files and / or target EC range version numbers stored by target storage nodes that have no staging log file, where the send module This message is specifically set to: If the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated log files. where the execution message is used to instruct target storage nodes to write the target EC blocks included in the readiness log files.

[17] Com referência ao segundo modo de implantação do terceiro aspecto das modalidades da presente invenção, em um terceiro modo de implantação do terceiro aspecto das modalidades da presente invenção, o módulo de envio de mensagem é adicionalmente configurado para: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação.[17] With reference to the second embodiment of the third aspect of embodiments of the present invention, in a third embodiment of the third aspect of embodiments of the present invention, the message sending module is further configured to: if version numbers If the target EC range on the target storage nodes on the m + k target storage nodes are different, send a delete message to the target storage nodes that generated staging log files, where the delete message is used to instruct the target storage nodes. target storage nodes to delete staging log files.

[18] Um quarto aspecto das modalidades da presente invenção fornece um aparelho de recuperação de dados, aplicado a um sistema de armazenamento distribuído, em que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, sendo que cada faixa de EC inclui uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC inclui m blocos de dados, a parte de paridade de cada faixa de EC inclui k blocos de paridade que são obtidos após a codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; cada faixa de EC corresponde a um valor de chave, valores de chave de faixas de EC que têm faixas de endereço iguais de partes de dados são os mesmos, e valores de chave de faixas de EC que têm faixas de endereço diferentes de partes de dados são diferentes; o sistema de armazenamento distribuído inclui múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento inclui não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e um nó de armazenamento com falha existe em nós de armazenamento secundários em qualquer grupo de nó de armazenamento no sistema de armazenamento distribuído, o aparelho de recuperação de dados é implantado em um nó de armazenamento primário no grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence, e o aparelho de recuperação de dados inclui: um módulo de mensagem de recuperação configurado para: após a recuperação de falha do nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha; um módulo de computação de dados configurado para obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha no grupo de nó de armazenamento, em que o N é um número inteiro positivo; um módulo de envio de dados configurado para enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; e um módulo de determinação de valor de chave configurado para: no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o módulo de envio de dados é configurado adicionalmente para: se o módulo de determinação de valor de chave determinar que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[18] A fourth aspect of embodiments of the present invention provides a data retrieval apparatus applied to a distributed storage system, wherein the distributed storage system stores data using erasure-encoding EC bands, whereby each EC band includes a data part and a parity part, the data part of each EC band includes m data blocks, the parity part of each EC band includes k parity blocks that are obtained after coding. parity is performed on m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; each EC range corresponds to a key value, EC range key values that have equal address ranges of data parts are the same, and EC range key values that have different address ranges of data parts are different; The distributed storage system includes multiple storage node groups, each storage node group includes no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and a failed storage node exists on secondary storage nodes in any storage node group in the distributed storage system, the data recovery appliance is deployed to a primary storage node in the storage node group to which the storage node. The failed storage device belongs, and the data recovery appliance includes: a recovery message module configured to: upon failed recovery from the failed storage node, receive a recovery message sent by the failed storage node; a data compute module configured to obtain N lost EC blocks from the failed storage node through computation according to EC blocks stored by non-failing storage nodes in the storage node group, where N is a number positive integer; a data send module configured to sequentially send the lost N EC blocks to the failed storage node to perform storage; and a key value determination module configured to: in the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block should be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists on lost EC blocks that are not currently successfully stored by the failed storage node. where the data send module is further configured to: if the key value determination module determines that the second EC block exists, after the failed storage node successfully stores the second data block. EC, send the first EC block to the failed storage node to perform storage.

[19] Com referência ao quarto aspecto das modalidades da presente invenção, em um primeiro modo de implantação do quarto aspecto das modalidades da presente invenção, o módulo de envio de dados é especificamente configurado para: enviar um nesim0 bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nésim0 bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[19] With reference to the fourth aspect of the embodiments of the present invention, in a first embodiment of the fourth aspect of the embodiments of the present invention, the data sending module is specifically configured to: send a missing EC block to the data node. failed storage, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. the nth EC block lost; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[20] Com referência ao primeiro modo de implantação do quarto aspecto das modalidades da presente invenção, em um segundo modo de implantação do quarto aspecto das modalidades da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[20] With reference to the first embodiment of the fourth aspect of the embodiments of the present invention, in a second embodiment of the fourth aspect of the embodiment of the present invention, the lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and lost EC blocks that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[21] Com referência ao quarto aspecto das modalidades da presente invenção ou o primeiro ou segundo modo de implantação do quarto aspecto, em um terceiro modo de implantação do quarto aspecto das modalidades da presente invenção, um volume lógico do sistema de armazenamento distribuído inclui múltiplas partições lógicas, sendo que cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[21] With reference to the fourth aspect of the embodiments of the present invention or the first or second embodiment of the fourth aspect, in a third embodiment of the fourth aspect of the embodiments of the present invention, a logical volume of the distributed storage system includes multiple Logical partitions, where each logical partition is of a size of k blocks of data and do not overlap each other, each logical partition corresponds exclusively to a key value, and a key value of a logical partition that each EC block is an EC block key value.

[22] Um quinto aspecto das modalidades da presente invenção fornece um aparelho de armazenamento de dados, em que o aparelho de armazenamento de dados inclui um aparelho de entrada, um aparelho de saída, um processador e uma memória, em que invocando-se uma instrução de operação armazenada na memória, o processador é configurado para: receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo inclui m+k blocos de EC alvo, e os m+k blocos de EC alvo incluem m blocos de dados alvo e k blocos de paridade alvo; determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta; e após receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, enviar uma mensagem de execução aos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[22] A fifth aspect of embodiments of the present invention provides a data storage apparatus, wherein the data storage apparatus includes an input device, an output device, a processor and a memory, in which a operating instruction stored in memory, the processor is configured to: receive a data segment to be stored, and perform EC encoding on the data segment to be stored to obtain a target EC range, where a data segment size to be stored is not larger than Z, Z is a size of m data blocks, target EC range includes m + k target EC blocks, and m + k target EC blocks include m target data blocks ek target parity blocks; determining m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; receive a response message sent by any target storage node from the m + k target storage nodes, where the response message is used to indicate that the target storage node currently sending the response message has generated a log file of staging according to the staging message, and the staging log file includes a target EC block to be stored by the target storage node currently sending the response message; and after receiving response messages from all target storage nodes at m + k target storage nodes, send an execution message to m + k target storage nodes, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the staging log files.

[23] Com referência ao quinto aspecto das modalidades da presente invenção, em um primeiro modo de implantação do quinto aspecto das modalidades da presente invenção, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é especificamente usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[23] With reference to the fifth embodiment of the present invention, in a first embodiment of the fifth embodiment of the present invention, the staging message further includes a version number of the target EC range; The readiness log file additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files.

[24] Com referência ao primeiro modo de implantação do quinto aspecto das modalidades da presente invenção, em um segundo modo de implantação do quinto aspecto das modalidades da presente invenção, o processador é configurado adicionalmente para: se for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação; e se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[24] With reference to the first embodiment of the fifth aspect of the embodiments of the present invention, in a second embodiment of the fifth aspect of the embodiments of the present invention, the processor is further configured to: if a storage node with failure exists on the m + k target storage nodes, after failover of the failed storage node, determine if the target EC range version numbers on the m + k target storage nodes are the same, where the target EC range versions on m + k target storage nodes include target EC range version numbers in staging log files on target storage nodes that generated staging log files and / or staging track version numbers Target ECs stored by target storage nodes that have no staging log file; and if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where The execution message is used to instruct the target storage nodes to write the target EC blocks included in the staging log files.

[25] Com referência ao segundo modo de implantação do quinto aspecto das modalidades da presente invenção, em um terceiro modo de implantação do quinto aspecto das modalidades da presente invenção, o processador é configurado adicionalmente para: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação.[25] With reference to the second embodiment of the fifth aspect of the embodiments of the present invention, in a third embodiment of the fifth aspect of the embodiments of the present invention, the processor is further configured to: if the EC band version numbers target storage nodes on m + k target storage nodes are different, send a delete message to target storage nodes that generated staging log files, where the delete message is used to instruct the target storage nodes to delete the staging log files.

[26] Um sexto aspecto das modalidades da presente invenção fornece um aparelho de recuperação de dados, em que o aparelho de recuperação de dados inclui um aparelho de entrada, um aparelho de saída, um processador e uma memória, em que invocando-se uma instrução de operação armazenada na memória, o processador é configurado para: após recuperação de falha de um nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha; obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha em um grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence, em que o N é um número inteiro positivo; enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[26] A sixth aspect of embodiments of the present invention provides a data retrieval apparatus, wherein the data retrieval apparatus includes an input device, an output device, a processor and a memory, in which a operation instruction stored in memory, the processor is configured to: upon failure recovery from a failed storage node, receive a recovery message sent by the failed storage node; get N lost EC blocks from the failed storage node through computation according to EC blocks stored by failing storage nodes in a storage node group to which the failed storage node belongs, where N is a positive integer; sequentially send the lost N EC blocks to the failed storage node to perform storage; in the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node; and if it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage.

[27] Com referência ao sexto aspecto das modalidades da presente invenção, em um primeiro modo de implantação do sexto aspecto das modalidades da presente invenção, o processador é configurado adicionalmente para: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[27] With reference to the sixth aspect of the embodiments of the present invention, in a first embodiment of the sixth aspect of the embodiments of the present invention, the processor is further configured to: send a missing nth block of EC to the failed storage node, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. nth block of lost EC succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[28] Com referência ao primeiro modo de implantação do sexto aspecto das modalidades da presente invenção, em um segundo modo de implantação do sexto aspecto das modalidades da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[28] With reference to the first embodiment of the sixth embodiment of the present invention, in a second embodiment of the sixth embodiment of the present invention, lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and lost EC blocks that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[29] Com referência ao sexto aspecto das modalidades da presente invenção ou o primeiro ou segundo modo de implantação do sexto aspecto, em um terceiro modo de implantação do sexto aspecto das modalidades da presente invenção, um volume lógico do sistema de armazenamento distribuído inclui múltiplas partições lógicas, sendo que cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[29] With reference to the sixth embodiment of the present invention or the first or second embodiment of the sixth embodiment, in a third embodiment of the sixth embodiment of the present invention, a logical volume of the distributed storage system includes multiple Logical partitions, where each logical partition is of a size of k blocks of data and do not overlap each other, each logical partition corresponds exclusively to a key value, and a key value of a logical partition that each EC block is an EC block key value.

[30] Um sétimo aspecto das modalidades da presente invenção fornece um meio legível por computador, que inclui uma instrução executável por computador, em que quando um processador de um computador executa a instrução executável por computador, o computador executa o método a seguir: receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo inclui m+k blocos de EC alvo, e os m+k blocos de EC alvo incluem m blocos de dados alvo e k blocos de paridade alvo; determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta; e após receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, enviar uma mensagem de execução aos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[30] A seventh aspect of embodiments of the present invention provides a computer readable medium, which includes a computer executable instruction, wherein when a computer processor executes the computer executable instruction, the computer performs the following method: receiving a data segment to be stored, and perform EC encoding on the data segment to be stored to obtain a target EC range, where a size of the data segment to be stored is no larger than Z, Z is a size of m data blocks, the target EC range includes m + k target EC blocks, and m + k target EC blocks include m target data blocks and k target parity blocks; determining m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; receive a response message sent by any target storage node from the m + k target storage nodes, where the response message is used to indicate that the target storage node currently sending the response message has generated a log file of staging according to the staging message, and the staging log file includes a target EC block to be stored by the target storage node currently sending the response message; and after receiving response messages from all target storage nodes at m + k target storage nodes, send an execution message to m + k target storage nodes, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the staging log files.

[31] Com referência ao sétimo aspecto das modalidades da presente invenção, em um primeiro modo de implantação do sétimo aspecto das modalidades da presente invenção, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é especificamente usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[31] With reference to the seventh aspect of the embodiments of the present invention, in a first embodiment of the seventh aspect of the embodiments of the present invention, the preparation message further includes a version number of the target EC range; The readiness log file additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files.

[32] Com referência ao primeiro modo de implantação do sétimo aspecto das modalidades da presente invenção, em um segundo modo de implantação do sétimo aspecto das modalidades da presente invenção, o computador executa adicionalmente o método a seguir: se for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação; e se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[32] With reference to the first mode of deployment of the seventh aspect of the embodiments of the present invention, in a second mode of deployment of the seventh aspect of the embodiments of the present invention, the computer further performs the following method: if it is detected that a Failed storage exists on the m + k target storage nodes, after failover of the failed storage node, determine if the target EC range version numbers on the m + k target storage nodes are the same, where the target EC track version numbers on m + k target storage nodes include target EC track version numbers in staging log files on target storage nodes that generated staging log files and / or staging version numbers target EC range stored by target storage nodes that have no staging log file; and if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where The execution message is used to instruct the target storage nodes to write the target EC blocks included in the staging log files.

[33] Com referência ao segundo modo de implantação do sétimo aspecto das modalidades da presente invenção, em um terceiro modo de implantação do sétimo aspecto das modalidades da presente invenção, o computador executa adicionalmente o método a seguir: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo para excluir os arquivos de registro de preparação.[33] With reference to the second embodiment of the seventh aspect of the embodiments of the present invention, in a third embodiment of the seventh aspect of the embodiments of the present invention, the computer additionally performs the following method: if the track version numbers target EC nodes on target storage nodes on m + k target storage nodes are different, send a delete message to target storage nodes that generated staging log files, where the delete message is used to instruct the target storage to delete staging log files.

[34] Um oitavo aspecto das modalidades da presente invenção fornece um meio legível por computador, que inclui uma instrução executável por computador, em que quando um processador de um computador executa a instrução executável por computador, o computador executa o método a seguir: após recuperação de falha de um nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha; obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenado por nós de armazenamento sem falha em um grupo de nó de armazenamento, em que o N é um número inteiro positivo; enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se um nó de armazenamento primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[34] An eighth aspect of embodiments of the present invention provides a computer readable medium, including a computer executable instruction, wherein when a computer processor executes the computer executable instruction, the computer performs the following method: after failure recovery from a failed storage node, receive a recovery message sent by the failed storage node; get N lost EC blocks from the failed storage node through computation according to EC blocks stored by failing storage nodes in a storage node group, where N is a positive integer; sequentially send the lost N EC blocks to the failed storage node to perform storage; In the process of sequentially sending the lost N EC blocks to the failed storage node, if a primary storage node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node; and if it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage.

[35] Com referência ao oitavo aspecto das modalidades da presente invenção, em um primeiro modo de implantação do oitavo aspecto das modalidades da presente invenção, o computador executa adicionalmente o método a seguir: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[35] With reference to the eighth aspect of the embodiments of the present invention, in a first embodiment of the eighth aspect of the embodiments of the present invention, the computer further performs the following method: sending a nth lost EC block to the storage node with failure, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. nth block of lost EC succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[36] Com referência ao primeiro modo de implantação do oitavo aspecto das modalidades da presente invenção, em um segundo modo de implantação do oitavo aspecto das modalidades da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[36] With reference to the first embodiment of the eighth aspect of the embodiments of the present invention, in a second embodiment of the eighth aspect of the embodiments of the present invention, the lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and lost EC blocks that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[37] Com referência ao oitavo aspecto das modalidades da presente invenção ou o primeiro ou segundo modo de implantação do oitavo aspecto, em um terceiro modo de implantação do oitavo aspecto das modalidades da presente invenção, um volume lógico do sistema de armazenamento distribuído inclui múltiplas partições lógicas, cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[37] With reference to the eighth aspect of the embodiments of the present invention or the first or second embodiment of the eighth aspect, in a third embodiment of the eighth aspect of the embodiments of the present invention, a logical volume of the distributed storage system includes multiple logical partitions, each logical partition is of a size of k blocks of data and does not overlap each other, each logical partition corresponds exclusively to a key value, and a key value of a logical partition that each EC block is is a key value of the EC block.

[38] Um nono aspecto das modalidades da presente invenção fornece um nó de armazenamento, que inclui o aparelho de armazenamento de dados de acordo com o terceiro aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do terceiro aspecto e/ou o aparelho de recuperação de dados de acordo com o quarto aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do quarto aspecto e/ou que inclui o aparelho de armazenamento de dados de acordo com o quinto aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do quinto aspecto e/ou o aparelho de recuperação de dados de acordo com o sexto aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do sexto aspecto, e/ou que inclui o meio legível por computador de acordo com o sétimo aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do sétimo aspecto e/ou o meio legível por computador de acordo com o oitavo aspecto das modalidades da presente invenção ou qualquer um dentre o primeiro ao terceiro modos de implantação do oitavo aspecto.[38] A ninth aspect of the embodiments of the present invention provides a storage node including the data storage apparatus according to the third aspect of the embodiments of the present invention or any one of the first to third modes of implantation of the third aspect. and / or the data recovery apparatus according to the fourth aspect of the embodiments of the present invention or any one of the first to third modes of deployment of the fourth aspect and / or including the data storage apparatus according to the fifth. aspect of the embodiments of the present invention or any one of the first to third modes of implantation of the fifth aspect and / or data retrieval apparatus according to the sixth aspect of the embodiments of the present invention or any one of the first to third modes of implantation implementation of the sixth aspect, and / or which includes the computer readable medium according to the seventh aspect of the of the present invention or any one of the first to third modes of implantation of the seventh aspect and / or the computer readable medium according to the eighth aspect of the embodiments of the present invention or any of the first to third modes of implantation of the eighth aspect .

[39] Um método de armazenamento de dados fornecido por uma modalidade da presente invenção inclui: realizar, por um nó primário, codificação de EC em um segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que a faixa de EC alvo inclui m+k blocos de EC alvo; determinar, em nós de armazenamento secundários em um grupo de nó de armazenamento, m+k nós de armazenamento alvo usados para armazenar os m+k blocos de EC alvo; enviar uma mensagem de preparação aos nós de armazenamento alvo, em que a mensagem de preparação porta um bloco de EC alvo a ser armazenado pelos nós de armazenamento alvo; receber uma mensagem de resposta enviada por um nó de armazenamento alvo; e após receber mensagens de resposta de todos os nós de armazenamento alvo, enviar uma mensagem de execução a todos os nós de armazenamento alvo, para instruir os nós de armazenamento alvo a gravarem blocos de EC alvo que estão nos arquivos de registro de preparação. No método fornecido por essa modalidade, os m+k nós de armazenamento alvo usados para armazenar a faixa de EC alvo não gravam diretamente os blocos de EC alvo a serem armazenados, mas primeiro grava os blocos de EC alvo a serem armazenados em arquivos de registro de preparação gerados localmente, e após todos os nós de armazenamento alvo gerarem arquivos de registro de preparação, gravar os blocos de EC alvo. Um nó de armazenamento alvo executa uma operação de gravação de um bloco de EC alvo em uma localização correta apenas em um caso em que todos os nós de armazenamento alvo geraram arquivos de registro de preparação. Mesmo se uma falha ocorrer no processo de gravação do bloco de EC alvo pelo nó de armazenamento alvo, o bloco de EC alvo foi armazenado em um arquivo de registro de preparação do nó de armazenamento alvo. Desse modo, pode-se garantir que o bloco de EC alvo não está perdido independentemente de se a operação de gravação do bloco de EC alvo é bem sucedida. Portanto, um caso em que uma parte dos nós de armazenamento alvo tem blocos de EC alvo da faixa de EC alvo, mas a outra parte dos nós de armazenamento alvo não tem blocos de EC alvo da faixa de EC alvo é evitada, a faixa de EC alvo pode ser armazenada de modo consistente, e a consistência de armazenamento de um sistema de armazenamento distribuído é aperfeiçoada.[39] A data storage method provided by one embodiment of the present invention includes: performing, by a primary node, EC encoding on a data segment to be stored to obtain a target EC range, where the EC range target includes m + k target EC blocks; determine, on secondary storage nodes in a storage node group, m + k target storage nodes used to store the m + k target EC blocks; sending a staging message to the target storage nodes, wherein the staging message carries a block of target ECs to be stored by the target storage nodes; receive a response message sent by a target storage node; and after receiving response messages from all target storage nodes, sending an execution message to all target storage nodes to instruct the target storage nodes to write target EC blocks that are in the staging log files. In the method provided by this embodiment, the m + k target storage nodes used to store the target EC range do not directly record the target EC blocks to be stored, but first write the target EC blocks to be stored in log files. locally generated staging nodes, and after all target storage nodes generate staging log files, write the target EC blocks. A target storage node performs a write operation of a target EC block to a correct location only in a case where all target storage nodes generated staging log files. Even if a failure occurs in the process of writing the target EC block by the target storage node, the target EC block has been stored in a target storage node staging log file. In this way it can be ensured that the target EC block is not lost regardless of whether the target EC block write operation is successful. Therefore, in a case where one part of the target storage nodes has target EC blocks from the target EC range, but the other part of the target storage nodes has no target EC blocks from the target EC range, the range of Target EC can be stored consistently, and the storage consistency of a distributed storage system is improved.

Breve descrição dos desenhos [40] A Figura 1(a) é um diagrama estrutural de uma faixa de EC;Brief Description of the Drawings [40] Figure 1 (a) is a structural diagram of an EC range;

[41] A Figura 1(b) é um diagrama estrutural esquemático de um sistema de armazenamento distribuído de acordo com uma modalidade da presente invenção;[41] Figure 1 (b) is a schematic structural diagram of a distributed storage system according to one embodiment of the present invention;

[42] A Figura 2 é um fluxograma de uma modalidade de um método de armazenamento de dados de acordo com uma modalidade da presente invenção;[42] Figure 2 is a flowchart of one embodiment of a data storage method according to one embodiment of the present invention;

[43] A Figura 3 é um fluxograma de outra modalidade de um método de armazenamento de dados de acordo com uma modalidade da presente invenção;[43] Figure 3 is a flowchart of another embodiment of a data storage method according to an embodiment of the present invention;

[44] A Figura 4 é um fluxograma de outra modalidade de um método de armazenamento de dados de acordo com uma modalidade da presente invenção;[44] Figure 4 is a flowchart of another embodiment of a data storage method according to an embodiment of the present invention;

[45] A Figura 5 é um fluxograma de uma modalidade de um método de recuperação de dados de acordo com uma modalidade da presente invenção;[45] Figure 5 is a flowchart of one embodiment of a data recovery method according to one embodiment of the present invention;

[46] A Figura 6 é um diagrama estrutural de uma modalidade de um aparelho de armazenamento de dados de acordo com uma modalidade da presente invenção;[46] Figure 6 is a structural diagram of one embodiment of a data storage apparatus according to one embodiment of the present invention;

[47] A Figura 7 é um diagrama estrutural de outra modalidade de um aparelho de armazenamento de dados de acordo com uma modalidade da presente invenção;[47] Figure 7 is a structural diagram of another embodiment of a data storage apparatus according to one embodiment of the present invention;

[48] A Figura 8 é um diagrama estrutural de outra modalidade de um aparelho de recuperação de dados de acordo com uma modalidade da presente invenção;[48] Figure 8 is a structural diagram of another embodiment of a data recovery apparatus according to one embodiment of the present invention;

[49] A Figura 9 é um diagrama estrutural de outra modalidade de um aparelho de armazenamento de dados de acordo com uma modalidade da presente invenção;[49] Figure 9 is a structural diagram of another embodiment of a data storage apparatus according to one embodiment of the present invention;

[50] A Figura 10 é um diagrama estrutural de outra modalidade de um aparelho de armazenamento de dados de acordo com uma modalidade da presente invenção; e [51] A Figura 11 é um diagrama estrutural de outra modalidade de um aparelho de recuperação de dados de acordo com uma modalidade da presente invenção.[50] Figure 10 is a structural diagram of another embodiment of a data storage apparatus according to one embodiment of the present invention; and [51] Figure 11 is a structural diagram of another embodiment of a data recovery apparatus according to one embodiment of the present invention.

DESCRIÇÃO DAS MODALIDADESDESCRIPTION OF MODALITIES

[52] As modalidades da presente invenção fornecem um método de armazenamento de dados, usado para aperfeiçoar consistência de armazenamento de um sistema de armazenamento distribuído. As modalidades da presente invenção fornecem adicionalmente um método de recuperação de dados, um aparelho relacionado e um sistema, que são descritos separadamente abaixo.[52] The embodiments of the present invention provide a data storage method used to optimize storage consistency of a distributed storage system. Embodiments of the present invention further provide a data recovery method, a related apparatus and a system, which are described separately below.

[53] O sistema de armazenamento distribuído inclui múltiplos nós de armazenamento. Um aparelho de entrega de dados de camada superior divide dados a serem armazenados em múltiplos blocos de dados e, então, entrega os blocos de dados aos múltiplos nós de armazenamento do sistema de armazenamento distribuído para armazenamento. O armazenamento distribuído de dados pode reduzir um risco de perda de dados e aperfeiçoar a confiabilidade do sistema de armazenamento distribuído. O aparelho de entrega de dados pode ser um cliente, um servidor ou outro dispositivo.[53] Distributed storage system includes multiple storage nodes. An upper layer data delivery apparatus divides data to be stored in multiple data blocks and then delivers the data blocks to the multiple storage nodes of the distributed storage system for storage. Distributed data storage can reduce a risk of data loss and improve the reliability of the distributed storage system. The data delivery apparatus may be a client, server or other device.

[54] Um princípio de uma tecnologia de codificação por apagamento é dividir dados a serem armazenados em m blocos de dados, e realizar codificação de paridade nos m blocos de dados com o uso de um algoritmo de redundância, para gerar k blocos de paridade, em que os m blocos de dados e os k blocos de paridade constituem uma faixa de EC. Para uma estrutura básica da faixa de EC, fazer referência à Figura 1(a). Cada bloco de dados ou bloco de paridade também pode ser denominado um bloco de EC, e os m blocos de dados e os k blocos de paridade constituem todos os blocos de EC de cada faixa de EC. Cada faixa de EC é tolerável a uma perda de k blocos de EC. Quando o sistema de armazenamento distribuído usa a tecnologia de EC para realizar dados armazenamento, o aparelho de entrega de dados gera múltiplas faixas de EC de acordo com os dados a serem armazenados, e entrega m+k blocos de EC de cada faixa de EC para m+k nós de armazenamento do sistema de armazenamento distribuído para armazenamento. Desse modo, quando um nó no sistema de armazenamento distribuído estiver com falha, um bloco de EC armazenado no nó com falha pode ser recuperado de acordo com blocos de EC em nós sem falha. A menos que mais do que k nós de armazenamento nos m+k nós de armazenamento que armazenam uma faixa de EC estiverem com falha, os dados da faixa de EC podem ser lidos ou gravados pelo aparelho de entrega de dados completamente. Portanto, o sistema de armazenamento distribuído que usa a tecnologia de EC para armazenar dados tem confiabilidade muito alta.[54] One principle of an erasure coding technology is to divide data to be stored into m data blocks, and to perform parity coding on m data blocks using a redundancy algorithm to generate k parity blocks, wherein m data blocks and k parity blocks constitute a range of EC. For a basic EC range structure, refer to Figure 1 (a). Each data block or parity block may also be referred to as an EC block, and the m data blocks and k parity blocks constitute all the EC blocks of each EC range. Each EC range is tolerable to a loss of k EC blocks. When the distributed storage system uses EC technology to perform data storage, the data delivery device generates multiple EC ranges according to the data to be stored, and delivers m + k EC blocks from each EC range to m + k storage nodes of the distributed storage system for storage. Thus, when a node in the distributed storage system is failed, an EC block stored on the failed node can be recovered according to EC blocks on non-failing nodes. Unless more than k storage nodes on the m + k storage nodes that store an EC range are faulty, EC range data can be read or written by the data delivery device completely. Therefore, the distributed storage system that uses EC technology to store data has very high reliability.

[55] Uma faixa de EC armazenada no sistema de armazenamento distribuído pode ser lida ou regravada pelo aparelho de entrega de dados. Deve-se notar que, ao ler uma faixa de EC, o aparelho de entrega de dados apenas necessita ler, a partir da faixa de EC, um bloco de dados usado para armazenar dados. Entretanto, quando uma faixa de EC é regravada, por exemplo, quando um iesimo bloco de dados em m blocos de dados de uma faixa de EC é regravada, outros blocos de dados da faixa de EC não precisam ser mudados, mas é necessário regenerar blocos de paridade da faixa de EC.[55] An EC range stored in the distributed storage system can be read or rewritten by the data delivery device. It should be noted that when reading an EC range, the data delivery apparatus only needs to read from the EC range one data block used to store data. However, when an EC range is rewritten, for example, when a nth block of data in m data blocks of an EC range is rewritten, other EC range data blocks do not need to be changed, but it is necessary to regenerate blocks. of parity of the EC range.

[56] Particularmente, nós de armazenamento no sistema de armazenamento distribuído são agrupados nas modalidades da presente invenção. Especificamente, nós de armazenamento são agrupados em múltiplos grupos de nó de armazenamento, em que uma quantidade de nós de armazenamento incluídos em cada grupo de nó de armazenamento não é menos do que m+k, e um nó de armazenamento primário (nó primário para abreviação abaixo) é especificado em cada grupo de nó de armazenamento. Outros nós de armazenamento são nós de armazenamento secundários (nós secundários para abreviação abaixo), m e k são ambos números inteiros positivos. Os nós de armazenamento de diferentes grupos de nó de armazenamento podem ser repetíveis. Por exemplo, um nó primário em um grupo de nó de armazenamento 1 pode ser um nó secundário em um grupo de nó de armazenamento 2. A Figura 1(b) é um diagrama estrutural esquemático de um sistema de armazenamento distribuído de acordo com uma modalidade da presente invenção. A Figura 1(b) é usada para indicar apenas uma estrutura do sistema de armazenamento distribuído, e nós de armazenamento no sistema de armazenamento distribuído também podem ser em outras estruturas de conexão.[56] In particular, storage nodes in the distributed storage system are grouped into embodiments of the present invention. Specifically, storage nodes are grouped into multiple storage node groups, where a quantity of storage nodes included in each storage node group is not less than m + k, and a primary storage node (primary node for abbreviation below) is specified in each storage node group. Other storage nodes are secondary storage nodes (secondary nodes for abbreviation below), m and k are both positive integers. Storage nodes from different storage node groups can be repeatable. For example, a primary node in a storage node group 1 may be a secondary node in a storage node group 2. Figure 1 (b) is a schematic structural diagram of a distributed storage system according to one embodiment. of the present invention. Figure 1 (b) is used to indicate only one structure of the distributed storage system, and storage nodes in the distributed storage system may also be in other connection structures.

[57] Com base no sistema de armazenamento distribuído antecedente, uma modalidade da presente invenção fornece um método de armazenamento de dados, aplicado a um nó primário em qualquer grupo de nó de armazenamento do sistema de armazenamento distribuído. Referindo-se à Figura 2, um procedimento básico do método inclui: [58] 201. Realizar codificação de EC em um segmento de dados a ser armazenado para obter uma faixa de EC alvo.[57] Based on the foregoing distributed storage system, one embodiment of the present invention provides a data storage method applied to a primary node in any storage node group of the distributed storage system. Referring to Figure 2, a basic method procedure includes: [58] 201. Performing EC encoding on a data segment to be stored to obtain a target EC range.

[59] Um nó primário recebe um segmento de dados a ser armazenado entregue por um aparelho de entrega de dados, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, e Z é um tamanho de m blocos de dados. A faixa de EC alvo após codificação inclui m+k blocos de EC alvo, que incluem especificamente m blocos de dados alvo e k blocos de paridade alvo.[59] A primary node receives a data segment to be stored delivered by a data delivery apparatus, where a size of the data segment to be stored is no larger than Z, and Z is a size of m blocks of data. Dice. The target EC range after coding includes m + k target EC blocks, which specifically include m target data blocks and k target parity blocks.

[60] 202. Determinar m+k nós de armazenamento alvo.[60] 202. Determine m + k target storage nodes.

[61] Após gerar os m+k blocos de EC alvo, o nó primário determina, em um grupo de nó de armazenamento ao qual o nó primário pertence, m+k nós de armazenamento alvo usados para armazenar os m+k blocos de EC alvo. Os m+k nós de armazenamento alvo podem incluir o nó primário e m+k-1 nós secundários, ou podem incluir m+k nós secundários. Cada nó de armazenamento alvo armazena um máximo de um bloco de EC apenas.[61] After generating the m + k target EC blocks, the primary node determines, in a storage node group to which the primary node belongs, m + k target storage nodes used to store the m + k EC blocks. target. The m + k target storage nodes can include the primary node and m + k-1 secondary nodes, or they can include m + k secondary nodes. Each target storage node stores a maximum of one EC block only.

[62] Particularmente, se o grupo de nó de armazenamento inclui apenas m+k nós de armazenamento (o nó primário e m+k-1 nós secundários), o nó primário determina diretamente que os m+k nós de armazenamento são nós de armazenamento alvo.[62] In particular, if the storage node group includes only m + k storage nodes (the primary node and m + k-1 secondary nodes), the primary node directly determines that the m + k storage nodes are storage nodes. Target storage.

[63] 203. Enviar uma mensagem de preparação aos nós de armazenamento alvo.[63] 203. Send a staging message to target storage nodes.

[64] Após determinar os nós de armazenamento alvo, o nó primário envia uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação porta um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo.[64] After determining the target storage nodes, the primary node sends a staging message to the m + k target storage nodes separately, where each staging message carries a target EC block to be stored by each target storage node. .

[65] Para nós de armazenamento alvo que são nós secundários, a mensagem de preparação enviada pelo nó primário ao nó de armazenamento alvo é uma mensagem inter-nó enviada através de uma rede. Entretanto, é mencionado na etapa 202 que o nó primário também pode ser um dentre os nós de armazenamento alvo. Se o nó primário é um nó de armazenamento alvo, o nó primário também envia uma mensagem de preparação ao nó primário em si nessa etapa, mas a mensagem de preparação enviada ao nó primário em si é uma mensagem intra-nó que não passa através da rede.[65] For target storage nodes that are secondary nodes, the staging message sent by the primary node to the target storage node is an inter-node message sent across a network. However, it is mentioned in step 202 that the primary node can also be one of the target storage nodes. If the primary node is a target storage node, the primary node also sends a staging message to the primary node itself in this step, but the staging message sent to the primary node itself is an intra-node message that does not pass through. network.

[66] 204. Receber uma mensagem de resposta enviada por um nó de armazenamento alvo.[66] 204. Receive a reply message sent by a target storage node.

[67] Após receber a mensagem de preparação enviada pelo nó primário, o nó de armazenamento alvo gera um arquivo de registro de preparação de acordo com a mensagem de preparação, em que o arquivo de registro de preparação é armazenado no nó de armazenamento alvo localmente. Um propósito do arquivo de registro de preparação é essencialmente armazenar de modo temporário um bloco de EC a ser armazenado pelo nó de armazenamento alvo. Portanto, uma localização de armazenamento do arquivo de registro de preparação não é uma localização de armazenamento final do bloco de EC alvo. Em uma aplicação real, o arquivo de registro de preparação pode ser um arquivo de registro ou um bloco de dados, ou em qualquer outra forma, que não é limitada nessa modalidade, mas o arquivo de registro de preparação precisa incluir o bloco de EC alvo na mensagem de preparação recebida pelo nó de armazenamento alvo.[67] After receiving the staging message sent by the primary node, the target storage node generates a staging log file according to the staging message, where the staging log file is stored on the target storage node locally. . One purpose of the staging log file is essentially to temporarily store an EC block to be stored by the target storage node. Therefore, a staging log file storage location is not a final storage location of the target EC block. In a real application, the staging log file may be a log file or a data block, or in any other form, which is not limited in this mode, but the staging log file must include the target EC block. in the staging message received by the target storage node.

[68] Após gerar o arquivo de registro de preparação, o nó de armazenamento alvo envia uma mensagem de resposta ao nó primário, usada para notificar o nó primário que o nó de armazenamento secundário alvo que envia atualmente a mensagem de resposta gerou o arquivo de registro de preparação de acordo com a mensagem de preparação.[68] After generating the staging log file, the target storage node sends a response message to the primary node, which is used to notify the primary node that the target secondary storage node currently sending the response message generated the response file. preparation log according to the preparation message.

[69] A mensagem de resposta enviada pelo nó de armazenamento alvo como um nó secundário é uma mensagem inter-nó enviada através da rede. Entretanto, se o nó primário é também um dos nós de armazenamento alvo, o nó primário também envia uma mensagem de resposta ao nó primário em si nessa etapa, mas a mensagem de resposta enviada ao nó primário em si é uma mensagem intra-nó que não passa através da rede.[69] The response message sent by the target storage node as a secondary node is an inter-node message sent over the network. However, if the primary node is also one of the target storage nodes, the primary node also sends a response message to the primary node itself in this step, but the response message sent to the primary node itself is an intra-node message that does not pass through the network.

[70] O nó primário recebe uma mensagem de resposta enviada por qualquer um ou mais nós de armazenamento alvo nos m+k nós de armazenamento alvo, e após receber mensagens de resposta enviadas por todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, executa a etapa 205.[70] The primary node receives a response message sent by any one or more target storage nodes at m + k target storage nodes, and after receiving response messages sent by all target storage nodes at m + k target storage, perform step 205.

[71] 205. Enviar uma mensagem de execução aos nós de armazenamento alvo.[71] 205. Send an execution message to target storage nodes.

[72] Após receber as mensagens de resposta enviadas por todos os nós de armazenamento alvo, o nó primário envia uma mensagem de execução aos m+k nós de armazenamento alvo, para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação. Após receber a mensagem de execução, os m+k nós de armazenamento alvo leem os arquivos de registro de preparação a partir de localizações de armazenamento dos arquivos de registro de preparação, e gravam os blocos de EC alvo incluídos nos arquivos de registro de preparação em localizações que são usadas para armazenar os blocos de EC alvo e nos nós de armazenamento alvo.[72] After receiving response messages sent by all target storage nodes, the primary node sends an execution message to the m + k target storage nodes to instruct the m + k target storage nodes to write the blocks. Target CEs included in staging log files. After receiving the execution message, the m + k target storage nodes read the staging log files from staging log storage locations, and write the target EC blocks included in the staging log files in locations that are used to store the target EC blocks and target storage nodes.

[73] Para nós de armazenamento alvo que são nós secundários, a mensagem de execução enviada pelo nó primário ao nó de armazenamento alvo é uma mensagem inter-nó enviada através da rede. Entretanto, é mencionado na etapa 202 que o nó primário também pode ser um dentre os nós de armazenamento alvo. Se o nó primário é um nó de armazenamento alvo, o nó primário também envia uma mensagem de execução ao nó primário em si nessa etapa, mas a mensagem de execução enviada ao nó primário em si é uma mensagem intra-nó que não passa através da rede.[73] For target storage nodes that are secondary nodes, the execution message sent by the primary node to the target storage node is an inter-node message sent across the network. However, it is mentioned in step 202 that the primary node can also be one of the target storage nodes. If the primary node is a target storage node, the primary node also sends an execution message to the primary node itself in this step, but the execution message sent to the primary node itself is an intra-node message that does not pass through. network.

[74] Essa modalidade fornece um método de armazenamento de dados que inclui: realizar codificação de EC em um segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que a faixa de EC alvo inclui m+k blocos de EC alvo; determinar, em nós de armazenamento secundários em um grupo de nó de armazenamento, m+k nós de armazenamento alvo usados para armazenar os m+k blocos de EC alvo; enviar uma mensagem de preparação aos nós de armazenamento alvo, em que a mensagem de preparação porta um bloco de EC alvo a ser armazenado pelos nós de armazenamento alvo; receber uma mensagem de resposta enviada por um nó de armazenamento alvo; e após receber mensagens de resposta de todos os nós de armazenamento alvo, enviar uma mensagem de execução a todos os nós de armazenamento alvo, para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo que estão nos arquivos de registro de preparação. No método fornecido por essa modalidade, os m+k nós de armazenamento alvo usados para armazenar a faixa de EC alvo não gravam diretamente os blocos de EC alvo a serem armazenados, mas primeiro gravam os blocos de EC alvo a serem armazenados em arquivos de registro de preparação gerados localmente, e após todos os nós de armazenamento alvo gerarem arquivos de registro de preparação, gravam os blocos de EC alvo. Um nó de armazenamento alvo executa uma operação de gravação de um bloco de EC alvo em uma localização correta apenas em um caso em que todos os nós de armazenamento alvo geraram arquivos de registro de preparação. Mesmo se uma falha ocorrer no processo de gravação do bloco de EC alvo pelo nó de armazenamento alvo, o bloco de EC alvo foi armazenado em um arquivo de registro de preparação do nó de armazenamento alvo. Desse modo, pode-se garantir que o bloco de EC alvo não está perdido independentemente de se a operação de gravação do bloco de EC alvo é bem sucedida. Portanto, um caso em que uma parte dos nós de armazenamento alvo tem blocos de EC alvo da faixa de EC alvo, mas a outra parte dos nós de armazenamento alvo não tem blocos de EC alvo da faixa de EC alvo é evitada, a faixa de EC alvo pode ser armazenada de modo consistente, e a consistência de armazenamento de um sistema de armazenamento distribuído é aperfeiçoada.[74] This embodiment provides a data storage method that includes: performing EC encoding on a data segment to be stored to obtain a target EC range, where the target EC range includes m + k target EC blocks. ; determine, on secondary storage nodes in a storage node group, m + k target storage nodes used to store the m + k target EC blocks; sending a staging message to the target storage nodes, wherein the staging message carries a block of target ECs to be stored by the target storage nodes; receive a response message sent by a target storage node; and after receiving response messages from all target storage nodes, sending an execution message to all target storage nodes to instruct the target storage nodes to write the target EC blocks that are in the staging log files. In the method provided by this embodiment, the m + k target storage nodes used to store the target EC range do not directly write the target EC blocks to be stored, but first write the target EC blocks to be stored in log files. locally generated staging files, and after all target storage nodes generate staging log files, write the target EC blocks. A target storage node performs a write operation of a target EC block to a correct location only in a case where all target storage nodes generated staging log files. Even if a failure occurs in the process of writing the target EC block by the target storage node, the target EC block has been stored in a target storage node staging log file. In this way it can be ensured that the target EC block is not lost regardless of whether the target EC block write operation is successful. Therefore, in a case where one part of the target storage nodes has target EC blocks from the target EC range, but the other part of the target storage nodes has no target EC blocks from the target EC range, the target range is avoided. Target EC can be stored consistently, and the storage consistency of a distributed storage system is improved.

[75] Preferencialmente, em ainda outra modalidade da presente invenção, para garantir que um arquivo de registro de preparação gerado por um nó de armazenamento alvo não seja perdido quando o nó de armazenamento alvo estiver com falha, o nó de armazenamento alvo pode gravar o arquivo de registro de preparação em um meio de proteção de falha de potência.[75] Preferably, in yet another embodiment of the present invention, to ensure that a staging log file generated by a target storage node is not lost when the target storage node is failed, the target storage node may record the file. readiness log file on a power failure protection medium.

[76] Um conceito de um valor de chave de uma faixa de EC é introduzido nessa modalidade da presente invenção. Especificamente, um valor de chave de uma faixa de EC corresponde a uma faixa de endereço de uma parte de dados da faixa de EC, e valores de chave de faixas de EC que têm faixas de endereço iguais de partes de dados são os mesmos, mas valores de chave de faixas de EC que têm faixas de endereço diferentes de partes de dados são diferentes. O valor de chave pode ser portado em cada bloco de EC da faixa de EC.[76] A concept of a key value of an EC range is introduced in this embodiment of the present invention. Specifically, a key value of an EC range corresponds to an address range of an EC range data part, and EC range key values that have equal address ranges of data parts are the same, but EC range key values that have different address ranges from data parts are different. The key value can be carried in each EC block of the EC range.

[77] O valor de chave da faixa de EC pode ir de um segmento de dados entregue pelo aparelho de entrega de dados ao nó primário. Por exemplo, um volume lógico do sistema de armazenamento distribuído pode ser dividido em múltiplas partições lógicas, e cada partição lógica é de um tamanho de k blocos de dados. O aparelho de entrega de dados divide dados a serem armazenados em múltiplos segmentos de dados e, especificamente, usa dados que se encontram dentro de uma partição lógica como um segmento de dados. Um valor de chave exclusivo é definido para cada partição lógica do sistema de armazenamento distribuído, e um valor de chave que corresponde a uma partição lógica que cada segmento de dados se encontra é um valor de chave que corresponde ao segmento de dados. O aparelho de entrega de dados adiciona o valor de chave ao segmento de dados e entrega o segmento de dados ao nó primário, em que uma faixa de EC gerada pelo nó primário de acordo com o segmento de dados tem um valor de chave igual ao do segmento de dados.[77] The EC range key value can range from a data segment delivered by the data delivery device to the primary node. For example, a distributed storage system logical volume can be divided into multiple logical partitions, and each logical partition is of a size of k data blocks. The data delivery apparatus divides data to be stored into multiple data segments and specifically uses data within a logical partition as a data segment. A unique key value is defined for each logical partition of the distributed storage system, and a key value that corresponds to a logical partition that each data segment is in is a key value that corresponds to the data segment. The data delivery apparatus adds the key value to the data segment and delivers the data segment to the primary node, where an EC range generated by the primary node according to the data segment has a key value equal to that of data segment.

[78] Pode-se visualizar a partir da descrição antecedente que o valor de chave pode ser usado para identificar uma faixa de endereço de dados. Além disso, é mencionado na etapa 205 que, após um nó de armazenamento alvo receber a mensagem de execução, o nó de armazenamento alvo lê o arquivo de registro de preparação a partir da localização de armazenamento do arquivo de registro de preparação, e grava o bloco de EC alvo incluído no arquivo de registro de preparação na localização que é usada para armazenar o bloco de EC alvo e no nó de armazenamento alvo. Especificamente, se o nó de armazenamento alvo não armazenar um bloco de EC que tem um valor de chave igual ao valor de chave portado no bloco de EC alvo no arquivo de registro de preparação, o nó de armazenamento alvo aloca uma nova localização de armazenamento ao bloco de EC alvo. Se o nó de armazenamento alvo armazenar um bloco de EC que tem um valor de chave igual ao valor de chave portado no bloco de EC alvo no arquivo de registro de preparação, que indica que dados antigos foram gravados em uma faixa de endereço do bloco de EC alvo, o nó de armazenamento alvo grava o bloco de EC alvo em uma localização originalmente usada para armazenar um bloco de EC que tem um valor de chave igual ao valor de chave do bloco de EC alvo, para regravar os dados antigos com novos dados. Pode-se entender que visto que os novos dados regravam os dados antigos, valores de chave de múltiplos blocos de EC armazenados em cada nó de armazenamento são diferentes um do outro.[78] It can be seen from the foregoing description that the key value can be used to identify a data address range. In addition, it is mentioned in step 205 that after a target storage node receives the execution message, the target storage node reads the staging log file from the staging log file storage location, and writes the staging log. target EC block included in the staging log file at the location that is used to store the target EC block and the target storage node. Specifically, if the target storage node does not store an EC block that has a key value equal to the key value ported to the target EC block in the staging log file, the target storage node allocates a new storage location to target EC block. If the target storage node stores an EC block that has a key value equal to the key value ported to the target EC block in the staging log file, which indicates that old data has been written to an address block address range. Target EC, the target storage node writes the target EC block to a location originally used to store a EC block that has a key value equal to the key value of the target EC block to rewrite old data with new data. . It can be understood that since the new data rewrites the old data, key values of multiple EC blocks stored on each storage node are different from each other.

[79] Um conceito de um número de versão de uma faixa de EC é introduzido adicionalmente nessa modalidade da presente invenção.[79] A concept of a version number of an EC band is further introduced in this embodiment of the present invention.

Especificamente, o número de versão é usado para identificar um grau novo ou antigo de duas faixas de EC que têm um mesmo valor de chave. Uma faixa de EC nova gravada regrava uma faixa de EC antiga. Por exemplo, em um momento, um nó primário gera uma faixa de EC, em que uma faixa de endereço de uma parte de dados é 4M a 8M, um valor de chave é 2, e um número de versão da faixa de EC é 1, o nó primário aloca a faixa de EC que tem o número de versão 1 a seis nós de armazenamento para armazenamento. Uma hora depois, o nó primário gera novamente outra faixa de EC, em que uma faixa de endereço de uma parte de dados é 4M a 8M, um valor de chave é 2, e um número de versão da faixa de EC é 2. O nó primário grava a faixa de EC que tem o número de versão 2 em uma localização originalmente usada para armazenar a faixa de EC que tem o número de versão 1, de modo que a faixa de EC que tem o número de versão 2 regrave a faixa de EC que tem o número de versão 1. O número de versão da faixa de EC alvo pode ser portada em cada bloco de EC alvo da faixa de EC alvo.Specifically, the version number is used to identify a new or old degree of two EC ranges that have the same key value. A new EC track recorded rewrites an old EC track. For example, at one time, a primary node generates an EC range, where an address range of a data part is 4M to 8M, a key value is 2, and an EC range version number is 1. , the primary node allocates the EC range that has version number 1 to six storage nodes for storage. An hour later, the primary node regenerates another EC range, where an address range of a data part is 4M to 8M, a key value is 2, and an EC range version number is 2. primary node writes the EC band that has version number 2 to a location originally used to store the EC band that has version number 1, so that the EC band that has version number 2 rewrites the band The version number of the target EC range can be carried in each target EC block of the target EC range.

[80] Nessa modalidade da presente invenção, a mensagem de preparação enviada pelo nó primário a um nó de armazenamento alvo inclui adicionalmente um número de versão da faixa de EC alvo e, adicionalmente, o arquivo de registro de preparação gerado pelo nó de armazenamento alvo de acordo com a mensagem de preparação também inclui o número de versão da faixa de EC alvo. A mensagem de execução instrui especificamente os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação. Após o conceito do número de versão ser introduzido, se o armazenamento da faixa de EC é consistente ou não pode ser determinado de acordo com o número de versão. Se os números de versão da faixa de EC alvo gravados nos nós de armazenamento alvo para armazenar a faixa de EC alvo forem os mesmos, indica que o armazenamento da faixa de EC alvo é consistente; se os números de versão da faixa de EC alvo gravados nos nós de armazenamento alvo para armazenar a faixa de EC alvo forem diferentes, indica que o armazenamento da faixa de EC alvo é inconsistente.[80] In this embodiment of the present invention, the staging message sent by the primary node to a target storage node additionally includes a target EC range version number and additionally the staging log file generated by the target storage node. according to the preparation message also includes the version number of the target EC range. The execution message specifically instructs the m + k target storage nodes to write the target EC blocks and the target EC track version number that are in the staging log files. After the concept of version number is introduced, whether EC range storage is consistent or not can be determined according to version number. If the target EC range version numbers written to the target storage nodes to store the target EC range are the same, then the target EC range storage is consistent; If the target EC range version numbers written to the target storage nodes to store the target EC range are different, then the target EC range storage is inconsistent.

[81] Como os nós de armazenamento em um grupo de nó de armazenamento do sistema de armazenamento distribuído pode ter uma falha a qualquer momento, o grupo de nó de armazenamento precisa ser mantido. O grupo de nó de armazenamento pode ser mantido de múltiplos modos, por exemplo, um módulo de gerenciamento de grupo de nó adicional pode ser disposto. O módulo de gerenciamento de grupo de nó pode ser implantado em um aparelho de entrega de dados, ou pode ser implantado em um nó de armazenamento, que não é limitado nessa modalidade da presente invenção. O módulo de gerenciamento de grupo de nó é responsável por manter cada grupo de nó de armazenamento. Especificamente, o módulo de gerenciamento de grupo de nó pode ser responsável por coletar informações sobre nós de armazenamento incluídos em cada grupo de nó de armazenamento, determinar um nó primário, e monitorar uma situação de cada nó de armazenamento em tempo real com o uso de uma conexão de pulsação. Quando uma situação de um nó de armazenamento muda ou um nó primário em um grupo de nó muda, o módulo de gerenciamento de grupo de nó precisa atualizar as informações coletadas. O módulo de gerenciamento de grupo de nó notifica as informações coletadas a cada nó de armazenamento para registro, de modo que cada aparelho de entrega de dados e nó de armazenamento possam aprender as informações sobre cada grupo de nó. As informações coletadas pelo módulo de gerenciamento de grupo de nó podem ser representadas simplesmente em uma forma de Tabela (1): TABELA (1) [82] A Tabela (1) é apenas uma forma de representação das informações coletadas pelo módulo de gerenciamento de grupo de nó. O módulo de gerenciamento de grupo de nó pode representar as informações coletadas em outras formas, que não é limitada nessa modalidade da presente invenção.[81] Because storage nodes in a distributed storage system storage node group can have a failure at any time, the storage node group needs to be maintained. The storage node group may be maintained in multiple ways, for example an additional node group management module may be arranged. The node group management module may be deployed to a data delivery apparatus, or may be deployed to a storage node, which is not limited in this embodiment of the present invention. The node group management module is responsible for maintaining each storage node group. Specifically, the node group management module can be responsible for collecting information about storage nodes included in each storage node group, determining a primary node, and monitoring a situation of each storage node in real time using a heartbeat connection. When a storage node situation changes or a primary node in a node group changes, the node group management module needs to update the collected information. The node group management module notifies the information collected to each storage node for registration, so that each data delivery appliance and storage node can learn the information about each node group. The information collected by the node group management module can be represented simply in a Table (1) form: TABLE (1) [82] Table (1) is only a way of representing the information collected by the node management module. node group. The node group management module may represent information collected in other forms, which is not limited in this embodiment of the present invention.

[83] Após determinar os nós de armazenamento alvo na etapa 202, se o nó primário detectar, com o uso de o módulo de gerenciamento de grupo de nó, que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, o nó primário precisa interromper um procedimento de armazenamento de dados e recuperar o nó de armazenamento com falha. Após o nó de armazenamento com falha ser recuperado, o nó primário precisa continuar o procedimento de armazenamento de dados. Para detalhes, fazer referência às etapas 1 a 3: [84] Etapa 1: Determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos. Se um nó de armazenamento alvo gerou um arquivo de registro de preparação, o número de versão da faixa de EC alvo no nó de armazenamento alvo pode ser um número de versão da faixa de EC alvo no arquivo de registro de preparação; se um nó de armazenamento alvo não tiver arquivo de registro de preparação, o número de versão da faixa de EC alvo no nó de armazenamento alvo pode ser um número de versão da faixa de EC alvo que foi armazenado pelo nó de armazenamento alvo.[83] After determining the target storage nodes in step 202, if the primary node detects, using the node group management module, that a failed storage node exists on m + k target storage nodes, The primary node must stop a data storage procedure and recover the failed storage node. After the failed storage node is recovered, the primary node must continue the data storage procedure. For details, refer to steps 1 through 3: [84] Step 1: Determine if the target EC range version numbers on the m + k target storage nodes are the same. If a target storage node has generated a staging log file, the target EC range version number on the target storage node can be a target EC range version number in the staging log file; If a target storage node has no staging log file, the target EC range version number on the target storage node can be a target EC range version number that was stored by the target storage node.

[85] Se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, indica que nós de armazenamento alvo que não têm arquivo de registro de preparação concluíram a operação de gravação de blocos de EC alvo a serem armazenados, e a etapa 2 é executada.[85] If the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, it indicates that target storage nodes that do not have staging log file have completed the operation. write target EC blocks to be stored, and step 2 is performed.

[86] Se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo forem diferentes, indica que os nós de armazenamento alvo que não têm arquivo de registro de preparação não geram arquivos de registro de preparação e, adicionalmente, não gravam blocos de EC alvo a serem armazenados, e a etapa 3 é executada.[86] If the version numbers of the target EC range on m + k target storage nodes are different, it indicates that target storage nodes that do not have staging log files do not generate staging log files and additionally do not write target EC blocks to be stored, and step 3 is performed.

[87] Etapa 2: Enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação. Após receber a mensagem de execução, os nós de armazenamento alvo que geraram arquivos de registro de preparação gravam os blocos de EC alvo incluídos nos arquivos de registro de preparação, de modo que a faixa de EC alvo seja armazenada nos nós de armazenamento alvo de modo consistente.[87] Step 2: Send an execution message to target storage nodes that generated staging log files, where the execution message is used to instruct the target storage nodes to write the target EC blocks included in the storage archives. preparation record. After receiving the execution message, the target storage nodes that generated staging log files write the target EC blocks included in the staging log files so that the target EC range is stored on the target storage nodes so that consistent.

[88] Etapa 3: Enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação. Após receber a mensagem de exclusão, os nós de armazenamento alvo que geraram arquivos de registro de preparação excluem arquivos de registro de preparação armazenados localmente, de modo que os blocos de EC alvo da faixa de EC alvo não sejam gravados em qualquer nó de armazenamento alvo.[88] Step 3: Send a delete message to target storage nodes that generated staging log files, where the deletion message is used to instruct target storage nodes to delete staging log files. After receiving the delete message, target storage nodes that generated staging log files delete locally stored staging log files so that target EC blocks in the target EC range are not written to any target storage node. .

[89] Particularmente, se o nó de armazenamento com falha for o nó primário, um módulo de gerenciamento de grupo de nó pode especificar um nó secundário como um novo nó primário e, então, reexecutar as etapas 1 a 3.[89] In particular, if the failed storage node is the primary node, a node group management module can specify a secondary node as a new primary node and then re-perform steps 1 through 3.

[90] Na modalidade antecedente, o método de armazenamento de dados fornecido por essa modalidade da presente invenção é descrito a partir da perspectiva de um nó primário. Na modalidade a seguir, o método de armazenamento de dados fornecido por essa modalidade da presente invenção é explicado a partir da perspectiva de um nó secundário. Referindo-se à Figura 3, um procedimento básico do método inclui: [91] 301. Receber uma mensagem de preparação enviada por um nó primário.[90] In the foregoing embodiment, the data storage method provided by that embodiment of the present invention is described from the perspective of a primary node. In the following embodiment, the data storage method provided by this embodiment of the present invention is explained from the perspective of a secondary node. Referring to Figure 3, a basic method procedure includes: [91] 301. Receiving a staging message sent by a primary node.

[92] O nó primário gera uma faixa de EC alvo, e determina m+k nós de armazenamento alvo usados para armazenar a faixa de EC alvo. O nó secundário nessa modalidade da presente invenção é um nó nos nós de armazenamento alvo.[92] The primary node generates a target EC range, and determines m + k target storage nodes used to store the target EC range. The secondary node in this embodiment of the present invention is a node in the target storage nodes.

[93] O nó secundário recebe uma mensagem de preparação enviada por um nó primário, em que a mensagem de preparação é enviada quando o nó primário determina que o nó secundário é um nó de armazenamento alvo usado para armazenar um bloco de EC alvo, e a mensagem de preparação inclui o bloco de EC alvo a ser armazenado pelo nó secundário.[93] The secondary node receives a staging message sent by a primary node, where the staging message is sent when the primary node determines that the secondary node is a target storage node used to store a target EC block, and The staging message includes the target EC block to be stored by the secondary node.

[94] 302. Gerar um arquivo de registro de preparação de acordo com a mensagem de preparação.[94] 302. Generate a staging log file according to the staging message.

[95] Após receber a mensagem de preparação enviada pelo nó primário, o nó secundário gera um arquivo de registro de preparação de acordo com a mensagem de preparação, em que o arquivo de registro de preparação é armazenado no nó secundário localmente. Um propósito do arquivo de registro de preparação é essencialmente armazenar de modo temporário um bloco de EC a ser armazenado pelo nó secundário. Portanto, uma localização de armazenamento do arquivo de registro de preparação não é uma localização de armazenamento final do bloco de EC alvo. Em uma aplicação real, o arquivo de registro de preparação pode ser um arquivo de registro ou um bloco de dados, ou em qualquer outra forma, que não é limitada nessa modalidade, mas o arquivo de registro de preparação precisa incluir o bloco de EC alvo portado na mensagem de preparação. O arquivo de registro de preparação inclui o bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário.[95] After receiving the staging message sent by the primary node, the secondary node generates a staging log file according to the staging message, where the staging log file is stored on the secondary node locally. One purpose of the staging log file is essentially to temporarily store an EC block to be stored by the secondary node. Therefore, a staging log file storage location is not a final storage location of the target EC block. In a real application, the staging log file may be a log file or a data block, or in any other form, which is not limited in this mode, but the staging log file must include the target EC block. ported in the preparation message. The staging log file includes the target EC block to be stored by the secondary storage node.

[96] 303. Enviar uma mensagem de resposta ao nó primário.[96] 303. Send a reply message to the primary node.

[97] Após gerar o arquivo de registro de preparação, o nó secundário envia uma mensagem de resposta ao nó primário, em que a mensagem de resposta é usada para indicar que o nó secundário gerou o arquivo de registro de preparação de acordo com a mensagem de preparação.[97] After generating the staging log file, the secondary node sends a response message to the primary node, where the response message is used to indicate that the secondary node has generated the staging log file according to the message. of preparation.

[98] Pode-se entender que outros nós de armazenamento alvo em um grupo de nó de armazenamento também enviam mensagens de resposta ao nó primário.[98] It can be understood that other target storage nodes in a storage node group also send response messages to the primary node.

[99] 304. Receber uma mensagem de execução enviada pelo nó primário.[99] 304. Receive an execution message sent by the primary node.

[100] O nó secundário recebe uma mensagem de execução enviada pelo nó primário, em que a mensagem de execução é enviada após o nó primário receber as mensagens de resposta de todos os nós de armazenamento alvo, e a mensagem de execução é usada para instruir a gravar o bloco de EC alvo incluído no arquivo de registro de preparação.[100] The secondary node receives an execution message sent from the primary node, where the execution message is sent after the primary node receives response messages from all target storage nodes, and the execution message is used to instruct. write the target EC block included in the staging log file.

[101] 305. Gravar um bloco de EC alvo incluído no arquivo de registro de preparação.[101] 305. Write a target EC block included in the staging log file.

[102] Após receber a mensagem de execução, o nó secundário grava o bloco de EC alvo portado no arquivo de registro de preparação.[102] After receiving the run message, the secondary node writes the ported target EC block to the staging log file.

[103] Nessa modalidade, o método de armazenamento de dados fornecido por essa modalidade da presente invenção é descrito a partir da perspectiva de um nó secundário. Um nó secundário recebe uma mensagem de preparação enviada por um nó primário, gera um arquivo de registro de preparação de acordo com a mensagem de preparação, envia uma mensagem de resposta ao nó primário, recebe uma mensagem de execução enviada pelo nó primário, e grava um bloco de EC alvo incluído no arquivo de registro de preparação de acordo com a mensagem de execução. No método fornecido por essa modalidade, o nó secundário não grava diretamente um bloco de EC alvo a ser armazenado, mas primeiro grava o bloco de EC alvo a ser armazenado em um arquivo de registro de preparação gerado localmente e, após receber a mensagem de execução enviada pelo nó primário, grava o bloco de EC alvo. Portanto, mesmo se o nó secundário estiver com falha no processo de gravação do bloco de EC alvo, o bloco de EC alvo foi armazenado no arquivo de registro de preparação do nó secundário. Desse modo, pode-se garantir que o bloco de EC alvo não está perdido independentemente de se a operação de gravação do bloco de EC alvo é bem sucedida. Se nenhum dos blocos de EC alvo em todos os nós de armazenamento alvo determinados pelo nó primário estiver perdido, um caso em que uma parte dos nós de armazenamento alvo tem blocos de EC alvo de uma faixa de EC alvo, mas a outra parte dos nós de armazenamento alvo não tem blocos de EC alvo da faixa de EC alvo pode ser evitado, a faixa de EC alvo pode ser armazenada de modo consistente, e a consistência de armazenamento de um sistema de armazenamento distribuído é aperfeiçoada.[103] In this embodiment, the data storage method provided by that embodiment of the present invention is described from the perspective of a secondary node. A secondary node receives a staging message sent by a primary node, generates a staging log file according to the staging message, sends a response message to the primary node, receives a run message from the primary node, and writes a target EC block included in the staging log file according to the execution message. In the method provided by this embodiment, the secondary node does not directly write a target EC block to be stored, but first writes the target EC block to be stored to a locally generated staging log file and after receiving the execution message sent by the primary node, writes the target EC block. Therefore, even if the secondary node has failed to write the target EC block write process, the target EC block has been stored in the secondary node staging log file. In this way it can be ensured that the target EC block is not lost regardless of whether the target EC block write operation is successful. If none of the target EC blocks on all target storage nodes determined by the primary node are lost, a case where one part of the target storage nodes has target EC blocks from one target EC range, but the other part of the nodes. Target storage has no target EC blocks The target EC range can be avoided, the target EC range can be stored consistently, and the storage consistency of a distributed storage system is improved.

[104] Preferencialmente, em ainda outra modalidade da presente invenção, a mensagem de preparação enviada pelo nó primário e recebida pelo nó secundário inclui adicionalmente um número de versão da faixa de EC alvo gerado pelo nó primário e, adicionalmente, o arquivo de registro de preparação gerado pelo nó secundário de acordo com a mensagem de preparação também inclui o número de versão da faixa de EC alvo. O nó secundário também grava o número de versão da faixa de EC alvo ao gravar o bloco de EC alvo de acordo com a mensagem de execução.[104] Preferably, in yet another embodiment of the present invention, the staging message sent by the primary node and received by the secondary node additionally includes a version of the target EC band generated by the primary node and, additionally, the log file of the primary node. staging generated by the secondary node according to the staging message also includes the version number of the target EC range. The secondary node also records the version number of the target EC range when writing the target EC block according to the execution message.

[105] Preferencialmente, em ainda outra modalidade da presente invenção, para garantir que o arquivo de registro de preparação gerado não está perdido quando o nó secundário estiver com falha, o nó secundário pode gravar o arquivo de registro de preparação em um meio de proteção de falha de potência.[105] Preferably, in yet another embodiment of the present invention, to ensure that the generated staging log file is not lost when the secondary node is failed, the secondary node may write the staging log file to a protection medium. of power failure.

[106] Na modalidade mostrada na Figura 1, é mencionado na etapa 3 que, se o nó primário determinar que os números de versão da faixa de EC alvo nos nós de armazenamento alvo sejam diferentes, o nó primário envia uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação. Portanto, preferencialmente, em ainda outra modalidade da presente invenção, antes da etapa 304, o nó secundário pode receber adicionalmente a mensagem de exclusão enviada pelo nó primário. Após receber a mensagem de exclusão, o nó secundário exclui o arquivo de registro de preparação armazenado localmente.[106] In the embodiment shown in Figure 1, it is mentioned in step 3 that if the primary node determines that the target EC range version numbers on the target storage nodes are different, the primary node sends a delete message to the nodes. storage targets that generated staging log files. Therefore, preferably in yet another embodiment of the present invention, prior to step 304, the secondary node may additionally receive the delete message sent by the primary node. After receiving the delete message, the secondary node deletes the locally stored preparation log file.

[107] Para facilitar o entendimento da modalidade antecedente, o que vem a seguir usa um cenário de aplicação específico da modalidade antecedente como um exemplo para descrição. Para um procedimento específico, fazer referência à Figura 4.[107] To facilitate understanding of the antecedent mode, the following uses a specific antecedent mode application scenario as an example for description. For a specific procedure, refer to Figure 4.

[108] O sistema de armazenamento distribuído armazena dados em uma forma de uma faixa de EC, e cada faixa de EC inclui quatro blocos de dados e dois blocos de paridade. O sistema de armazenamento distribuído inclui 100 grupos de nó de armazenamento. Um grupo de nó de armazenamento 1 inclui seis nós de armazenamento, em que um nó primário é um nó A, e nós secundários são um nó B, um nó C, um nó D, um nó E e um nó F.[108] The distributed storage system stores data in a form of one EC range, and each EC range includes four data blocks and two parity blocks. The distributed storage system includes 100 storage node groups. Storage node group 1 includes six storage nodes, where one primary node is a node A, and the secondary nodes are node B, node C, node D, node E, and node F.

[109] 401. Gerar uma faixa de EC alvo. O nó A recebe um segmento de dados entregue por um aparelho de entrega de dados, e realiza codificação de EC no segmento de dados para obter a faixa de EC alvo. Um número de versão da faixa de EC alvo é 3, e uma faixa de endereço de uma parte de dados da faixa de EC alvo é 4M a 8M.[109] 401. Generate a target EC range. Node A receives a data segment delivered by a data delivery apparatus, and performs EC encoding on the data segment to obtain the target EC range. A target EC range version number is 3, and an address range of a data portion of the target EC range is 4M to 8M.

[110] 402. Determinar nós de armazenamento alvo. O nó A determina que nós de armazenamento alvo usados para armazenar seis blocos de EC da faixa de EC alvo são os nós A a F.[110] 402. Determine target storage nodes. Node A determines which target storage nodes used to store six EC blocks in the target EC range are nodes A through F.

[111] 403. Enviar uma mensagem de preparação. O nó A envia uma mensagem de preparação aos nós A a F, em que a mensagem de preparação enviada a cada nó porta um bloco de EC alvo e um número de versão da faixa de EC alvo, e os nós A a F recebem a mensagem de preparação.[111] 403. Send a message of preparation. Node A sends a staging message to nodes A through F, where the staging message sent to each node carries a target EC block and target EC range version number, and nodes A through F receive the message. of preparation.

[112] 404. Gerar um arquivo de registro de preparação. Os nós A a F geram arquivos de registro de preparação, em que os arquivos de registro de preparação incluem blocos de EC alvo a serem armazenados e números de versão da faixa de EC alvo.[112] 404. Generate a staging log file. Nodes A through F generate staging log files, where staging log files include target EC blocks to be stored and target EC track version numbers.

[113] 405. Enviar uma mensagem de resposta. Os nós A a F enviam mensagens de resposta ao nó A após gerar os arquivos de registro de preparação. O nó A recebe as mensagens de resposta enviadas pelo nós A a F.[113] 405. Send a reply message. Nodes A through F send response messages to node A after generating the staging log files. Node A receives response messages sent by nodes A through F.

[114] 406. Enviar uma mensagem de execução. Após receber as mensagens de resposta enviadas pelos nós A a F, o nó A envia uma mensagem de execução aos nós A a F, e os nós A a F recebem a mensagem de execução.[114] 406. Send an execution message. After receiving response messages sent by nodes A through F, node A sends an execution message to nodes A through F, and nodes A through F receive the execution message.

[115] 407. Os nós A a E gravam os blocos de EC alvo e os números de versão que estão nos arquivos de registro de preparação, e o nó F está com falha. Após o nó A enviar a mensagem de execução, os nós A a E gravam os blocos de EC alvo e os números de versão que estão nos arquivos de registro de preparação, e o nó F está com falha no processo de receber a mensagem de execução.[115] 407. Nodes A through E write the target EC blocks and version numbers that are in the staging log files, and node F is failed. After node A sends the execution message, nodes A through E write the target EC blocks and version numbers that are in the preparation log files, and node F is failing to receive the execution message. .

[116] 408. Determinar que os números de versão da faixa de EC alvo sejam os mesmos. O nó A determina que o nó F está com falha e, portanto, após o nó F ser recuperado da falha, determina se os números de versão da faixa de EC alvo nos nós A a F são ou não os mesmos. Os nós A a E não têm arquivo de registro de preparação, e os números de versão da faixa de EC alvo que são portados em blocos de EC alvo armazenados são 3. O nó F tem um arquivo de registro de preparação, e um número de versão da faixa de EC alvo que é portado em um bloco de EC alvo no arquivo de registro de preparação é 3.[116] 408. Determine that the version numbers of the target EC range are the same. Node A determines that node F is failed, and therefore, after node F is recovered from failure, determines whether or not the target EC range version numbers on nodes A to F are the same. Nodes A to E have no staging log file, and the target EC range version numbers that are ported to stored target EC blocks are 3. Node F has a staging log file, and a number of Target EC range version that is ported to a target EC block in the staging log file is 3.

[117] 409. O nó A envia uma mensagem de execução ao nó F. O nó F recebe a mensagem de execução.[117] 409. Node A sends an execution message to node F. Node F receives the execution message.

[118] 410. O nó F grava o bloco de EC alvo e o número de versão que estão no arquivo de registro de preparação.[118] 410. Node F writes the target EC block and version number that are in the staging log file.

[119] É mencionado na modalidade antecedente que, se um nó de armazenamento alvo estiver com falha, um procedimento de armazenamento de dados precisa ser executado após a recuperação de falha do nó de armazenamento com falha. Entretanto, a falha pode causar uma perda de dados no nó de armazenamento com falha. Nesse caso, o nó primário precisa obter um bloco de EC perdido do nó de armazenamento com falha através de computação com o uso de uma tecnologia de EC de acordo com um bloco de EC armazenado por outro nó de armazenamento no grupo de nó de armazenamento e, então, sincronizar o bloco de EC obtido através de computação ao nó de armazenamento com falha que é recuperado. Portanto, uma modalidade da presente invenção fornece um método de recuperação de dados, que inclui especificamente: [120] 501. Receber uma mensagem de recuperação enviada por um nó de armazenamento com falha.[119] It is mentioned in the foregoing embodiment that if a target storage node is failed, a data storage procedure needs to be performed after failure recovery from the failed storage node. However, failure can cause data loss on the failed storage node. In this case, the primary node must obtain a lost EC block from the failed storage node through computation using an EC technology according to an EC block stored by another storage node in the storage node group, and then synchronize the EC block obtained by computing to the failed storage node that is recovered. Therefore, one embodiment of the present invention provides a data recovery method which specifically includes: [120] 501. Receiving a recovery message sent by a failed storage node.

[121] Um nó de armazenamento com falha existe em qualquer grupo de nó de armazenamento em um sistema de armazenamento distribuído. Após o nó de armazenamento com falha ser recuperado, o nó de armazenamento com falha envia uma mensagem de recuperação a um nó primário, em que a mensagem de recuperação é usada para indicar que o nó de armazenamento com falha foi recuperado. O nó de armazenamento primário recebe a mensagem de recuperação.[121] A failed storage node exists in any storage node group in a distributed storage system. After the failed storage node is recovered, the failed storage node sends a recovery message to a primary node, where the recovery message is used to indicate that the failed storage node has been recovered. The primary storage node receives the recovery message.

[122] 502. Obter N blocos de EC perdidos do nó de armazenamento com falha através de computação.[122] 502. Get N lost EC blocks from failed storage node through computation.

[123] Conforme mencionado acima, o sistema de armazenamento distribuído armazena dados em uma forma de uma faixa de EC com o uso de uma tecnologia de EC, uma faixa de EC inclui m+k blocos de EC, que são respectivamente armazenados em m+k nós de armazenamento em um grupo de nó de armazenamento, e uma faixa de EC é tolerável a uma perda de k blocos de EC. Com o uso de uma faixa de EC A como um exemplo, se um bloco de EC da faixa de EC A estiver perdido no nó de armazenamento com falha, o nó primário pode obter o bloco de EC perdido do nó de armazenamento com falha através de computação com o uso de a tecnologia de EC de acordo com outros blocos de EC da faixa de EC A que são armazenados por nós sem falha.[123] As mentioned above, the distributed storage system stores data in a form of an EC range using EC technology, an EC range includes m + k EC blocks, which are respectively stored in m + k storage nodes in a storage node group, and an EC range is tolerable to a loss of k EC blocks. Using an EC A band as an example, if an EC block from the EC A band is lost on the failed storage node, the primary node can get the lost EC block from the failed storage node through computing using EC technology in accordance with other EC blocks of the EC A range that are stored by us without fail.

[124] Portanto, nessa modalidade, após receber a mensagem de recuperação, o nó primário obtém os N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha (a saber, nós de armazenamento exceto o nó de armazenamento com falha) em um grupo de nó de armazenamento ao qual o nó primário pertence.[124] Therefore, in this mode, upon receiving the recovery message, the primary node obtains the N lost EC blocks from the failed storage node by computing according to EC blocks stored by non-failing storage nodes (namely , storage nodes except the failed storage node) in a storage node group to which the primary node belongs.

[125] Conforme mencionado acima, valores de chave de múltiplos blocos de EC armazenados em cada nó de armazenamento são diferentes um do outro e, portanto, os N blocos de EC perdidos do nó de armazenamento com falha devem portar valores de chave diferentes.[125] As mentioned above, key values from multiple EC blocks stored on each storage node are different from each other, so the N lost EC blocks of the failed storage node must carry different key values.

[126] 503. Enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se um resultado de determinação for sim, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[126] 503. Sequentially sending the lost N EC blocks to the failed storage node to perform storage; in the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists on lost EC blocks that are not currently successfully stored by the failed storage node; and if a determination result is yes, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage.

[127] Após obter os N blocos de EC perdidos do nó de armazenamento com falha através de computação, o nó primário dispõe os N blocos de EC perdidos em uma fila de envio, e envia sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha.[127] After obtaining the lost N EC blocks from the failed storage node through computation, the primary node arranges the N lost EC blocks in a send queue, and sequentially sends the N lost EC blocks to the storage node. failed.

[128] No processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó primário gerar uma nova faixa de EC novamente e determinar que um primeiro bloco de EC na nova faixa de EC deve ser armazenado pelo nó de armazenamento com falha, o nó primário determina se um segundo bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o segundo bloco de EC tem um mesmo valor de chave do primeiro bloco de EC.[128] In the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary node regenerates a new EC range and determines that a first EC block in the new EC range must be stored by the node On a failed storage node, the primary node determines whether a second EC block exists on lost EC blocks that are not currently successfully stored by the failed storage node, where the second EC block has the same value. key of the first EC block.

[129] Pode-se entender que, se o nó primário enviar diretamente, após gerar o primeiro bloco de EC, o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento, mas o segundo bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, quando o nó primário continua a executar a operação de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, um caso em que o segundo bloco de EC regrava dados do primeiro bloco de EC pode ser causado. Para evitar a substituição do primeiro bloco de EC novo pelo segundo bloco de EC antigo, nessa modalidade, se o nó primário determinar que o segundo bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, o nó primário insere o primeiro bloco de EC após o segundo bloco de EC na fila de envio, ou seja, o nó primário não envia o primeiro bloco de EC ao nó de armazenamento com falha primeiro, mas após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, envia o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[129] It can be understood that if the primary node sends directly, after generating the first EC block, the first EC block to the failed storage node to perform storage, but the second EC block exists in the EC blocks. that are not currently successfully stored by the failed storage node when the primary node continues to perform the sequential send operation of the lost N EC blocks to the failed storage node, in which case the second block EC rewrite data from the first EC block may be caused. To avoid replacing the new first EC block with the old second EC block, in this mode, if the primary node determines that the second EC block exists in lost EC blocks that are not currently successfully stored by the primary node. On failed storage, the primary node inserts the first EC block after the second EC block in the send queue, that is, the primary node does not send the first EC block to the failed storage node first, but after the failed node. failed storage successfully storing the second EC block, sends the first EC block to the failed storage node to perform storage.

[130] Essa modalidade fornece um método de recuperação de dados, em que após um nó de armazenamento com falha ser recuperado, um nó primário obtém N blocos de EC perdidos do nó de armazenamento com falha através de computação, e envia sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento. No processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó primário gerar uma nova faixa de EC novamente e determinar que um primeiro bloco de EC na nova faixa de EC deve ser armazenado pelo nó de armazenamento com falha, o nó primário determina se um segundo bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o segundo bloco de EC tem um mesmo valor de chave do primeiro bloco de EC. Se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar o segundo bloco de EC, o nó primário envia o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento. Esse método pode evitar a substituição de novos dados por dados antigos, e garantir que um bloco de EC armazenado no nó de armazenamento com falha após recuperação seja uma versão mais recente.[130] This embodiment provides a data retrieval method, where after a failed storage node is recovered, a primary node obtains N lost EC blocks from the failed storage node through computation, and sequentially sends the N blocks. EC messages lost to the failed storage node to perform storage. In the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary node generates a new EC range again and determines that a first EC block in the new EC range must be stored by the failed storage node. On failure, the primary node determines if a second EC block exists on lost EC blocks that are not currently successfully stored by the failed storage node, where the second EC block has the same key value as the first. EC block. If it is determined that the second EC block exists, after the failed storage node stores the second EC block, the primary node sends the first EC block to the failed storage node to perform storage. This method can avoid overwriting new data with old data, and ensure that an EC block stored on the failed storage node after recovery is a newer version.

[131] Na etapa 503, o nó primário envia sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento. Especificamente, o nó primário envia um primeiro bloco de EC perdido nos N blocos de EC perdidos ao nó de armazenamento com falha primeiro e, após enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, o nó primário recebe uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido. Após receber a mensagem de resposta que corresponde ao nesimo bloco de EC perdido, o nó primário envia um próximo bloco de EC perdido ao nó de armazenamento com falha novamente, em que 1<n<N. Que o nó primário envia sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha pode ser resumido nas etapas a seguir: [132] Etapa 1: O nó primário envia o nesimo bloco de EC perdido ao nó de armazenamento com falha, em que um valor inicial de n quando o procedimento é iniciado é 1, e n não é maior do que N.[131] In step 503, the primary node sequentially sends the lost N EC blocks to the failed storage node to perform storage. Specifically, the primary node sends a first lost EC block in the N lost EC blocks to the failed storage node first, and after sending a nth lost EC block to the failed storage node, the primary node receives a response message. which corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and is used to indicate that the failed storage node has successfully stored the nth lost EC block. After receiving the response message that corresponds to the nth lost EC block, the primary node sends a next lost EC block to the failed storage node again, where 1 <n <N. That the primary node sequentially sends the N lost EC blocks to the failed storage node can be summarized in the following steps: [132] Step 1: The primary node sends the nth lost EC block to the failed storage node. that an initial value of n when the procedure is started is 1, and n is not larger than N.

[133] Etapa 2: Após enviar o nesimo bloco de EC perdido ao nó de armazenamento com falha, o nó primário recebe a mensagem de resposta que corresponde ao nesimo bloco de EC perdido.[133] Step 2: After sending the nth lost EC block to the failed storage node, the primary node receives the response message that corresponds to the nth lost EC block.

[134] Etapa 3: Após receber a mensagem de resposta que corresponde ao nesimo bloco de EC perdido, se n<N, o nó primário adiciona 1 ao valor de n, e reexecuta a etapa 1.[134] Step 3: After receiving the response message that corresponds to the nth missed EC block, if n <N, the primary node adds 1 to the value of n, and reruns step 1.

[135] O nó primário pode enviar, executando-se a etapa 1 a etapa 3 de modo cíclico, os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento.[135] The primary node can cyclically perform step 1 through step 3 the lost N EC blocks to the failed storage node to perform storage.

[136] Se uma mensagem de resposta for usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido um bloco de EC perdido, que após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, o nó primário envia o primeiro bloco de EC ao nó de armazenamento com falha para armazenamento na etapa 503 deve ser especificamente: após enviar o segundo bloco de EC ao nó de armazenamento com falha e receber uma mensagem de resposta enviada pelo nó de armazenamento com falha em relação ao segundo bloco de EC, o nó primário envia o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[136] If a response message is used to indicate that the failed storage node successfully stored a lost EC block, that after the failed storage node successfully stored the second EC block. , the primary node sends the first EC block to the failed storage node for storage in step 503 must be specifically: after sending the second EC block to the failed storage node and receiving a response message sent by the failed storage node. fails against the second EC block, the primary node sends the first EC block to the failed storage node to perform storage.

[137] Na etapa 503, o nó primário precisa determinar se o segundo bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha nos N blocos de EC perdidos. Pode-se entender que os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha devem incluir os blocos de EC perdidos que não são enviados atualmente pelo nó primário ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[137] In step 503, the primary node needs to determine if the second EC block exists in the lost EC blocks that are not currently successfully stored by the failed storage node in the N lost EC blocks. It can be understood that lost EC blocks that are not currently successfully stored by the failed storage node must include lost EC blocks that are not currently sent by the primary node to the failed storage node and blocks EC messages that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[138] Conforme mencionado acima, um volume lógico do sistema de armazenamento distribuído pode ser dividido em múltiplas partições lógicas, e cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe à outra. Um valor de chave exclusivo é definido para cada partição lógica do sistema de armazenamento distribuído, e um valor de chave que corresponde a uma partição lógica que cada segmento de dados se encontra é um valor de chave que corresponde ao segmento de dados. Um aparelho de entrega de dados adiciona o valor de chave ao segmento de dados e entrega o segmento de dados ao nó primário, em que uma faixa de EC gerada pelo nó primário de acordo com o segmento de dados tem um mesmo valor de chave do segmento de dados, enquanto um valor de chave da faixa de EC é portado em blocos de EC da faixa de EC. Portanto, pode-se entender que um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[138] As mentioned above, one logical volume of the distributed storage system can be divided into multiple logical partitions, and each logical partition is of k block size and does not overlap the other. A unique key value is defined for each logical partition of the distributed storage system, and a key value that corresponds to a logical partition that each data segment is in is a key value that corresponds to the data segment. A data delivery appliance adds the key value to the data segment and delivers the data segment to the primary node, where an EC range generated by the primary node according to the data segment has the same segment key value. while an EC range key value is carried in EC blocks of the EC range. Therefore, it can be understood that a key value of a logical partition that each EC block meets is a key value of the EC block.

[139] Para facilitar o entendimento da modalidade antecedente, o que vem a seguir usa um cenário de aplicação específico da modalidade antecedente para descrição.[139] To facilitate understanding of the antecedent modality, the following uses a specific antecedent modality application scenario for description.

[140] O sistema de armazenamento distribuído armazena dados em uma forma de uma faixa de EC, e cada faixa de EC inclui quatro blocos de dados e dois blocos de paridade. O sistema de armazenamento distribuído inclui 100 grupos de nó de armazenamento. Um grupo de nó de armazenamento 1 inclui seis nós de armazenamento, em que um nó primário é um nó A, e nós secundários são um nó B, um nó C, um nó D, um nó E e um nó F. Em um momento, o nó F está com falha. Três horas depois, o nó F está recuperado, mas os dados são perdidos.[140] The distributed storage system stores data in a form of one EC range, and each EC range includes four data blocks and two parity blocks. The distributed storage system includes 100 storage node groups. Storage node group 1 includes six storage nodes, where one primary node is a node A, and the secondary nodes are node B, node C, node D, node E, and node F. At a time , node F is failed. Three hours later, node F is recovered, but data is lost.

[141] O nó F envia uma mensagem de recuperação ao nó A, para notificar o nó A que o nó F está recuperado da falha. O nó A recebe a mensagem de recuperação.[141] Node F sends a recovery message to node A to notify node A that node F is recovered from the failure. Node A receives the recovery message.

[142] Após receber a mensagem de recuperação, o nó A obtém 200 blocos de EC perdidos do nó F através de computação de acordo com todos blocos de EC armazenados pelo nó A, nó B, nó C, nó D e nó E.[142] Upon receiving the recovery message, node A obtains 200 lost EC blocks from node F through computation according to all EC blocks stored by node A, node B, node C, node D, and node E.

[143] O nó primário envia um bloco de EC perdido ao nó F cada vez e, após receber uma mensagem de resposta do nó F em relação ao bloco de EC perdido, envia um próximo bloco de EC perdido. Desse modo, os 200 blocos de EC perdidos são enviados sequencialmente ao nó F.[143] The primary node sends a lost EC block to node F each time, and after receiving a response message from node F with respect to the lost EC block, sends a next lost EC block. Thus, the 200 lost EC blocks are sent sequentially to node F.

[144] Após um 151° bloco de EC perdido ser enviado ao nó F, o nó A gera uma nova faixa de EC de acordo com um segmento de dados entregue por um aparelho de entrega de dados, e determina que um primeiro bloco de EC na nova faixa de EC deve ser armazenado pelo nó F, em que um valor de chave do primeiro bloco de EC é 25.[144] After a lost 151th EC block is sent to node F, node A generates a new EC range according to a data segment delivered by a data delivery apparatus, and determines that a first EC block The new EC range must be stored by node F, where a key value from the first EC block is 25.

[145] Visto que o nó A não recebeu uma mensagem de resposta enviada pelo nó F em relação ao 151e bloco de EC perdido, o nó A determina se um segundo bloco de EC que tem um valor de chave 25 existe em 151e a 200e blocos de EC perdidos. O nó A determina que um valor de chave de um 190e bloco de EC perdido é 25.[145] Since node A did not receive a response message from node F regarding the lost 151e EC block, node A determines if a second EC block that has a key value 25 exists at 151e to 200e blocks EC lost. Node A determines that a key value of a lost EC block 190e is 25.

[146] O nó A não envia o primeiro bloco de EC ao nó F temporariamente e, após enviar o 190e bloco de EC perdido ao nó F e receber uma mensagem de resposta que é enviada pelo nó F em relação ao 190e bloco de EC perdido, envia o primeiro bloco de EC ao nó F.[146] Node A does not send the first EC block to node F temporarily, and after sending the lost 190e EC block to node F and receiving a response message that is sent by node F relative to the lost 190e EC block , sends the first EC block to node F.

[147] O nó A envia todos os 200 blocos de EC perdidos ao nó F, e o nó F conclui recuperação de dados.[147] Node A sends all 200 lost EC blocks to node F, and node F completes data recovery.

[148] A modalidade antecedente fornece um armazenamento de dados ou método de recuperação de dados fornecido pelas modalidades da presente invenção. O aparelho correspondente é fornecido abaixo para implantar o método antecedente.[148] The foregoing embodiment provides a data storage or data retrieval method provided by the embodiments of the present invention. The corresponding apparatus is provided below to implement the foregoing method.

[149] Uma modalidade da presente invenção fornece um aparelho de armazenamento de dados, em que o aparelho de armazenamento de dados é implantado em um nó de armazenamento primário em qualquer grupo de nó de armazenamento e inclui especificamente: um módulo de codificação de dados 601 configurado para receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, e a faixa de EC alvo inclui m+k blocos de EC alvo, que incluem especificamente m blocos de dados alvo e k blocos de paridade alvo; um módulo de determinação de nó 602, configurado para determinar, em um grupo de nó de armazenamento, m+k nós de armazenamento alvo usados para armazenar os m+k blocos de EC alvo, em que cada nó de armazenamento alvo é configurado para armazenar um bloco de EC alvo; um módulo de envio de mensagem 603 configurado para enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; e um módulo de recepção de mensagem 604 configurado para receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento secundário alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta, em que o módulo de envio de mensagem 603 é configurado adicionalmente para enviar uma mensagem de execução aos m+k nós de armazenamento alvo após o módulo de recebimento de mensagem 604 receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[149] One embodiment of the present invention provides a data storage apparatus wherein the data storage apparatus is deployed to a primary storage node in any storage node group and specifically includes: a data coding module 601 configured to receive a data segment to be stored, and perform EC encoding on the data segment to be stored to obtain a target EC range, where a size of the data segment to be stored is no larger than Z, Z is a size of m data blocks, and the target EC range includes m + k target EC blocks, which specifically include m target data blocks and k target parity blocks; a node determination module 602 configured to determine, in a storage node group, m + k target storage nodes used to store the m + k target EC blocks, where each target storage node is configured to store a target EC block; a message sending module 603 configured to send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; and a message receiving module 604 configured to receive a response message sent by any target storage node from m + k target storage nodes, wherein the response message is used to indicate that the sending secondary target storage node the response message currently generated a staging log according to the staging message, and the staging log file includes a target EC block to be stored by the target storage node that currently sends the response message, in that message sending module 603 is further configured to send an execution message to m + k target storage nodes after message receiving module 604 receives response messages from all target storage nodes at m + k nodes. target storage, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the target files. preparation log files.

[150] No aparelho de armazenamento de dados fornecido por essa modalidade, um módulo de codificação de dados 601 realiza codificação de EC em um segmento de dados a ser armazenado para obter uma faixa de EC alvo; um módulo de determinação de nó 602 determina, em nós de armazenamento secundários em um grupo de nó de armazenamento, os m+k nós de armazenamento alvo usados para armazenar os m+k blocos de EC alvo; um módulo de envio de mensagem 603 envia uma mensagem de preparação aos nós de armazenamento alvo; um módulo de recepção de mensagem 604 recebe mensagens de resposta enviadas pelos nós de armazenamento alvo; e o módulo de envio de mensagem 603 envia uma mensagem de execução a todos os nós de armazenamento alvo após receber mensagens de resposta de todos os nós de armazenamento alvo, para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo que estão nos arquivos de registro de preparação. Com o uso do aparelho de armazenamento de dados fornecido por essa modalidade, os m+k nós de armazenamento alvo usados para armazenar a faixa de EC alvo não gravam diretamente os blocos de EC alvo a serem armazenados, mas primeiro gravam os blocos de EC alvo a serem armazenados em arquivos de registro de preparação gerados localmente e, após todos os nós de armazenamento alvo gerarem arquivos de registro de preparação, gravam os blocos de EC alvo. Um nó de armazenamento alvo executa uma operação de gravação de um bloco de EC alvo em uma localização correta apenas em um caso em que todos os nós de armazenamento alvo geraram arquivos de registro de preparação. Mesmo se uma falha ocorrer no processo de gravação do bloco de EC alvo pelo nó de armazenamento alvo, o bloco de EC alvo foi armazenado em um arquivo de registro de preparação do nó de armazenamento alvo. Desse modo, pode-se garantir que o bloco de EC alvo não está perdido independentemente de se a operação de gravação do bloco de EC alvo é bem sucedida. Portanto, um caso em que uma parte dos nós de armazenamento alvo tem blocos de EC alvo da faixa de EC alvo, mas a outra parte dos nós de armazenamento alvo não tem blocos de EC alvo da faixa de EC alvo é evitado, a faixa de EC alvo pode ser armazenada de modo consistente, e a consistência de armazenamento de um sistema de armazenamento distribuído é aperfeiçoada.[150] In the data storage apparatus provided by this embodiment, a data coding module 601 performs EC coding on a data segment to be stored to obtain a target EC range; a node determination module 602 determines, on secondary storage nodes in a storage node group, the m + k target storage nodes used to store the m + k target EC blocks; a message sending module 603 sends a staging message to the target storage nodes; a message receiving module 604 receives response messages sent by the target storage nodes; and message sending module 603 sends an execution message to all target storage nodes after receiving response messages from all target storage nodes to instruct the target storage nodes to write to the target EC blocks that are on them. staging log files. Using the data storage apparatus provided by this embodiment, the m + k target storage nodes used to store the target EC range do not directly record the target EC blocks to be stored, but first record the target EC blocks. to be stored in locally generated staging log files, and after all target storage nodes generate staging log files, write the target EC blocks. A target storage node performs a write operation of a target EC block to a correct location only in a case where all target storage nodes generated staging log files. Even if a failure occurs in the process of writing the target EC block by the target storage node, the target EC block has been stored in a target storage node staging log file. In this way it can be ensured that the target EC block is not lost regardless of whether the target EC block write operation is successful. Therefore, in a case where one part of the target storage nodes has target EC blocks from the target EC range, but the other part of the target storage nodes has no target EC blocks from the target EC range, the target range is avoided. Target EC can be stored consistently, and the storage consistency of a distributed storage system is improved.

[151] Preferencialmente, em ainda outra modalidade da presente invenção, para garantir que um arquivo de registro de preparação gerado por um nó de armazenamento alvo não seja perdido quando o nó de armazenamento alvo estiver com falha, o nó de armazenamento alvo pode gravar o arquivo de registro de preparação em um meio de proteção de falha de potência.[151] Preferably, in yet another embodiment of the present invention, to ensure that a staging log file generated by a target storage node is not lost when the target storage node is failed, the target storage node may record the file. readiness log file on a power failure protection medium.

[152] Preferencialmente, em ainda outra modalidade da presente invenção, a mensagem de preparação enviada pelo nó primário a um nó de armazenamento alvo inclui adicionalmente um número de versão da faixa de EC alvo e, adicionalmente, o arquivo de registro de preparação gerado pelo nó de armazenamento alvo de acordo com a mensagem de preparação também inclui o número de versão da faixa de EC alvo. A mensagem de execução instrui especificamente os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[152] Preferably, in yet another embodiment of the present invention, the staging message sent by the primary node to a target storage node further includes a target EC range version number and, in addition, the staging log file generated by the primary node. Target storage node according to the staging message also includes the version number of the target EC range. The execution message specifically instructs the m + k target storage nodes to write the target EC blocks and the target EC track version number that are in the staging log files.

[153] Preferencialmente, em ainda outra modalidade da presente invenção, o aparelho de armazenamento de dados pode incluir adicionalmente um módulo de determinação de versão 605, configurado para: quando for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação. O módulo de envio de mensagem 603 é configurado especificamente para: se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação; e se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação.[153] Preferably, in yet another embodiment of the present invention, the data storage apparatus may additionally include a version determination module 605 configured to: when a failed storage node is detected to exist at m + k nodes. target storage, after failover of the failed storage node, determine if the target EC range version numbers on m + k target storage nodes are the same, where the target EC range version numbers on m + k target storage nodes include target EC track version numbers in staging log files on target storage nodes that generated staging log files and / or target EC track version numbers stored by target storage nodes that have no staging log file. Message submission module 603 is specifically configured for: if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the storage nodes. targets that generated staging log files; and if the target EC range version numbers on the target storage nodes on the m + k target storage nodes are different, send a delete message to the target storage nodes that generated staging log files, where the Delete is used to instruct target storage nodes to delete staging log files.

[154] Uma modalidade da presente invenção fornece adicionalmente um aparelho de armazenamento de dados implantado em um nó secundário. Referindo-se à Figura 7, uma estrutura do aparelho de armazenamento de dados inclui: um módulo de recepção de mensagem 701 configurado para receber uma mensagem de preparação enviada por um nó de armazenamento primário, em que a mensagem de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário em que o aparelho de armazenamento de dados está localizado; um módulo de geração de arquivo de registro 702 configurado para gerar um arquivo de registro de preparação de acordo com a mensagem de preparação, em que o arquivo de registro de preparação inclui o bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário; um módulo de envio de mensagem 703 configurado para enviar uma mensagem de resposta ao nó de armazenamento primário, em que a mensagem de resposta é usada para indicar que o nó de armazenamento secundário gerou o arquivo de registro de preparação de acordo com a mensagem de preparação, em que o módulo de recepção de mensagem 701 é configurado adicionalmente para receber uma mensagem de execução enviada pelo nó de armazenamento primário; e um módulo de gravação de dados 704 configurado para gravar o bloco de EC alvo incluído no arquivo de registro de preparação de acordo com a mensagem de execução.[154] One embodiment of the present invention further provides a data storage apparatus deployed on a secondary node. Referring to Figure 7, a structure of the data storage apparatus includes: a message receiving module 701 configured to receive a staging message sent by a primary storage node, wherein the staging message includes a block of ECs. target to be stored by the secondary storage node where the data storage device is located; a log file generation module 702 configured to generate a staging log according to the staging message, wherein the staging log file includes the target EC block to be stored by the secondary storage node; a message sending module 703 configured to send a response message to the primary storage node, where the response message is used to indicate that the secondary storage node has generated the preparation log file according to the preparation message. wherein the message receiving module 701 is further configured to receive an execution message sent by the primary storage node; and a data writing module 704 configured to write the target EC block included in the staging log file according to the execution message.

[155] No aparelho de armazenamento de dados fornecido por essa modalidade, um módulo de recepção de mensagem 701 recebe uma mensagem de preparação enviada por um nó primário; um módulo de geração de arquivo de registro 702 gera um arquivo de registro de preparação de acordo com a mensagem de preparação; um módulo de envio de mensagem 703 envia uma mensagem de resposta ao nó primário; o módulo de recepção de mensagem 701 recebe uma mensagem de execução enviada pelo nó primário; e um módulo de gravação de dados 704 grava um bloco de EC alvo incluído no arquivo de registro de preparação de acordo com a mensagem de execução. O aparelho de armazenamento de dados fornecido por essa modalidade não grava diretamente um bloco de EC alvo a ser armazenado, mas primeiro grava o bloco de EC alvo a ser armazenado em um arquivo de registro de preparação gerado localmente e, após receber a mensagem de execução enviada pelo nó primário, grava o bloco de EC alvo. Portanto, mesmo se o nó secundário estiver com falha no processo de gravação do bloco de EC alvo, o bloco de EC alvo foi armazenado no arquivo de registro de preparação do nó secundário. Desse modo, pode-se garantir que o bloco de EC alvo não está perdido independentemente de se a operação de gravação do bloco de EC alvo é bem sucedida. Se nenhum dos blocos de EC alvo em todos os nós de armazenamento alvo determinados pelo nó primário estiver perdido, um caso em que uma parte dos nós de armazenamento alvo tem blocos de EC alvo de uma faixa de EC alvo, mas a outra parte dos nós de armazenamento alvo não tem blocos de EC alvo da faixa de EC alvo pode ser evitado, a faixa de EC alvo pode ser armazenada de modo consistente, e a consistência de armazenamento de um sistema de armazenamento distribuído é aperfeiçoada.[155] In the data storage apparatus provided by this embodiment, a message receiving module 701 receives a staging message sent by a primary node; a log file generation module 702 generates a staging log file according to the staging message; a message sending module 703 sends a reply message to the primary node; message receiving module 701 receives an execution message sent by the primary node; and a data recording module 704 writes a target EC block included in the staging log file according to the execution message. The data storage apparatus provided by this embodiment does not directly record a target EC block to be stored, but first writes the target EC block to be stored to a locally generated staging log file and, upon receiving the execution message sent by the primary node, writes the target EC block. Therefore, even if the secondary node has failed to write the target EC block write process, the target EC block has been stored in the secondary node staging log file. In this way it can be ensured that the target EC block is not lost regardless of whether the target EC block write operation is successful. If none of the target EC blocks on all target storage nodes determined by the primary node are lost, a case where one part of the target storage nodes has target EC blocks from one target EC range, but the other part of the nodes. Target storage has no target EC blocks The target EC range can be avoided, the target EC range can be stored consistently, and the storage consistency of a distributed storage system is improved.

[156] Preferencialmente, em ainda outra modalidade da presente invenção, o bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário é um bloco de dados ou um bloco de paridade na faixa de EC alvo gerado pelo nó de armazenamento primário, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo gerado pelo nó primário e, adicionalmente, o arquivo de registro de preparação gerado pelo nó secundário de acordo com a mensagem de preparação também inclui o número de versão da faixa de EC alvo. O nó secundário também grava o número de versão da faixa de EC alvo ao gravar o bloco de EC alvo de acordo com a mensagem de execução.[156] Preferably, in yet another embodiment of the present invention, the target EC block to be stored by the secondary storage node is a data block or parity block in the target EC range generated by the primary storage node, the message. The staging log additionally includes a target EC track version number generated by the primary node, and in addition the staging log file generated by the secondary node according to the staging message also includes the target EC track version number. The secondary node also records the version number of the target EC range when writing the target EC block according to the execution message.

[157] Preferencialmente, em ainda outra modalidade da presente invenção, o módulo de recepção de mensagem 701 é configurado adicionalmente para receber uma mensagem de exclusão enviada pelo nó de armazenamento primário; e o aparelho de armazenamento de dados pode incluir adicionalmente um módulo de exclusão de dados 705, configurado para excluir o arquivo de registro de preparação de acordo com a mensagem de exclusão.[157] Preferably, in yet another embodiment of the present invention, the message receiving module 701 is further configured to receive a delete message sent by the primary storage node; and the data storage apparatus may additionally include a data deletion module 705 configured to delete the staging log file according to the deletion message.

[158] Pode-se entender que, se uma identidade de um nó de armazenamento é um nó primário ou um nó secundário pode ser definido livremente, e um nó de armazenamento pode ser um nó primário em um grupo de nó de armazenamento e também um nó secundário em outro grupo de nó de armazenamento. Portanto, os aparelhos de armazenamento de dados mostrados na Figura 6 e Figura 7 podem ser localizados em um mesmo nó de armazenamento.[158] It can be understood that if an identity of a storage node is a primary node or a secondary node can be freely defined, and a storage node can be a primary node in a storage node group as well as a secondary node in another storage node group. Therefore, the data storage apparatus shown in Figure 6 and Figure 7 can be located on the same storage node.

[159] Para facilitar o entendimento da modalidade antecedente, o que vem a seguir usa um cenário de aplicação específico da modalidade antecedente como um exemplo para descrição. Para um procedimento específico, fazer referência ainda à Figura 4: [160] O sistema de armazenamento distribuído armazena dados em uma forma de uma faixa de EC, e cada faixa de EC inclui quatro blocos de dados e dois blocos de paridade. O sistema de armazenamento distribuído inclui 100 grupos de nó de armazenamento. Um grupo de nó de armazenamento 1 inclui seis nós de armazenamento, em que um nó primário é um nó A, e nós secundários são um nó B, um nó C, um nó D, um nó E e um nó F.[159] To facilitate understanding of the antecedent mode, the following uses a specific antecedent mode application scenario as an example for description. For a specific procedure, refer also to Figure 4: [160] The distributed storage system stores data in a form of one EC range, and each EC range includes four data blocks and two parity blocks. The distributed storage system includes 100 storage node groups. Storage node group 1 includes six storage nodes, where one primary node is a node A, and the secondary nodes are node B, node C, node D, node E, and node F.

[161] 401. Gerar uma faixa de EC alvo. O nó A recebe um segmento de dados entregue por um aparelho de entrega de dados, e um módulo de codificação de dados do nó A realiza codificação de EC no segmento de dados para obter a faixa de EC alvo. Um número de versão da faixa de EC alvo é 3, e uma faixa de endereço de uma parte de dados da faixa de EC alvo é 4M a 8M.[161] 401. Generate a target EC range. Node A receives a data segment delivered by a data delivery apparatus, and a node A data encoding module performs EC encoding on the data segment to obtain the target EC range. A target EC range version number is 3, and an address range of a data portion of the target EC range is 4M to 8M.

[162] 402. Determinar nós de armazenamento alvo. um módulo de determinação de nó do nó A determina que nós de armazenamento alvo usados para armazenar seis blocos de EC da faixa de EC alvo são os nós A a F.[162] 402. Determine target storage nodes. A node A node determination module determines which target storage nodes used to store six EC blocks in the target EC range are nodes A through F.

[163] 403. Enviar uma mensagem de preparação, um módulo de envio de mensagem do nó A envia uma mensagem de preparação aos nós A a F, em que a mensagem de preparação enviada a cada nó porta um bloco de EC alvo e um número de versão da faixa de EC alvo, e módulos de recepção de mensagem dos nós A a F recebem a mensagem de preparação.[163] 403. Sending a staging message, a node A message sending module sends a staging message to nodes A through F, where the staging message sent to each node carries a target EC block and a number EC range, and message receive modules from nodes A through F receive the readiness message.

[164] 404. Gerar um arquivo de registro de preparação. Módulos de geração de arquivo de registro dos nós A a F geram arquivos de registro de preparação, em que os arquivos de registro de preparação incluem blocos de EC alvo a serem armazenados e números de versão da faixa de EC alvo.[164] 404. Generate a staging log file. Node A-F Log File Generation Modules generate staging log files, where staging log files include target EC blocks to be stored and target EC track version numbers.

[165] 405. Enviar uma mensagem de resposta. Módulos de envio de mensagem dos nós A a F enviam mensagens de resposta ao nó A após gerar os arquivos de registro de preparação. O módulo de recepção de mensagem do nó A recebe as mensagens de resposta enviadas pelos nós A a F.[165] 405. Send a reply message. Message sending modules from nodes A through F send response messages to node A after generating the preparation log files. Node A message receive module receives response messages sent by nodes A through F.

[166] 406. Enviar uma mensagem de execução aos nós A a F. Após receber as mensagens de resposta enviadas pelos nós A a F, o módulo de envio de mensagem do nó A envia uma mensagem de execução aos nós A a F, e os módulos de recepção de mensagem dos nós A a F recebem a mensagem de execução.[166] 406. Send an execution message to nodes A through F. Upon receiving response messages sent by nodes A through F, the node A send message module sends an execution message to nodes A through F, and message receiving modules from nodes A to F receive the execution message.

[167] 407. Os nós A a E gravam os blocos de EC alvo e os números de versão que estão nos arquivos de registro de preparação e o nó F está com falha. Após o nó A enviar a mensagem de execução, os módulos de gravação de dados dos nós A a E gravam os blocos de EC alvo e os números de versão que estão nos arquivos de registro de preparação, e o nó F está com falha no processo de recepção da mensagem de execução.[167] 407. Nodes A through E write the target EC blocks and version numbers that are in the staging log files and node F is failed. After node A sends the execution message, data write modules from nodes A through E write the target EC blocks and version numbers that are in the preparation log files, and node F is failing in the process. receiving the execution message.

[168] 408. Determinar que os números de versão da faixa de EC alvo sejam os mesmos. O nó A determina que o nó F está com falha e, portanto, após o nó F ser recuperado da falha, um módulo de determinação de versão do nó A determina se os números de versão da faixa de EC alvo nos nós A a F são ou não os mesmos. Os nós A a E não têm arquivo de registro de preparação, e os números de versão da faixa de EC alvo que são portados em blocos de EC alvo armazenados são 3. O nó F tem um arquivo de registro de preparação, e um número de versão da faixa de EC alvo que é portado em um bloco de EC alvo no arquivo de registro de preparação é 3.[168] 408. Determine that the version numbers of the target EC range are the same. Node A determines that node F is failed, and therefore, after node F is recovered from failure, a node A versioning module determines whether the target EC range version numbers on nodes A through F are or not the same. Nodes A to E have no staging log file, and the target EC range version numbers that are ported to stored target EC blocks are 3. Node F has a staging log file, and a number of Target EC range version that is ported to a target EC block in the staging log file is 3.

[169] 409. O módulo de envio de mensagem do nó A envia uma mensagem de execução ao nó F. O módulo de recepção de mensagem do nó F recebe a mensagem de execução.[169] 409. The message sending module of node A sends an execution message to node F. The message receiving module of node F receives the execution message.

[170] 410. O módulo de gravação de dados do nó F grava o bloco de EC alvo e o número de versão que estão no arquivo de registro de preparação.[170] 410. The F-node data write module writes the target EC block and version number that are in the staging log file.

[171] Uma modalidade da presente invenção fornece adicionalmente um aparelho de recuperação de dados configurado para recuperar dados perdidos de um nó de armazenamento com falha, em que o aparelho de recuperação de dados é implantado em um nó de armazenamento primário de um grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence. Referindo-se à Figura 8, uma estrutura específica do aparelho de recuperação de dados inclui: um módulo de mensagem de recuperação 801 configurado para: após a recuperação de falha do nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha, em que a mensagem de recuperação é usada para indicar que o nó de armazenamento com falha está recuperado da falha; um módulo de computação de dados 802 configurado para obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha em um grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence, em que N é um número inteiro positivo; um módulo de envio de dados 803 configurado para enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; e um módulo de determinação de valor de chave 804 configurado para: no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o módulo de envio de dados 803 é configurado adicionalmente para: se o segundo bloco de EC existir nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.[171] One embodiment of the present invention further provides a data recovery apparatus configured to recover lost data from a failed storage node, wherein the data recovery apparatus is deployed to a primary storage node of a node group. storage to which the failed storage node belongs. Referring to Figure 8, a specific structure of the data recovery apparatus includes: a recovery message module 801 configured to: upon failed storage node failure recovery, receive a recovery message sent by the storage node on failure, where the recovery message is used to indicate that the failed storage node is recovered from failure; an 802 data compute module configured to obtain N lost EC blocks from the failed storage node by computing according to EC blocks stored by non-failing storage nodes in a storage node group to which the storage node failed belongs, where N is a positive integer; a data send module 803 configured to sequentially send the lost N EC blocks to the failed storage node to perform storage; and a key value determination module 804 configured to: in the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block EC must be stored by the failed storage node, determining if a second EC block that has the same key value as the first EC block exists on lost EC blocks that are not currently successfully stored by the storage node. where the 803 data send module is additionally configured to: if the second EC block exists in the lost EC blocks that are not currently successfully stored by the failed storage node after the failover node. failed storage successfully store the second EC block, send the first EC block to the failed storage node to perform storage.

[172] Essa modalidade fornece um aparelho de recuperação de dados, em que um módulo de computação de dados 802 obtém N blocos de EC perdidos de um nó de armazenamento com falha através de computação após o nó de armazenamento com falha ser recuperado; e um módulo de envio de dados 803 que envia sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento. No processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se um nó primário gerar uma nova faixa de EC e determinar que um primeiro bloco de EC na nova faixa de EC deve ser armazenado pelo nó de armazenamento com falha, um módulo de determinação de valor de chave 804 determina se um segundo bloco de EC existe ou não nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o segundo bloco de EC tem um mesmo valor de chave do primeiro bloco de EC. Se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, o módulo de envio de dados 803 envia o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento. Esse método pode evitar a substituição de novos dados por dados antigos, e garantir que um bloco de EC armazenado no nó de armazenamento com falha após recuperação seja uma versão mais recente.[172] This embodiment provides a data recovery apparatus wherein an 802 data computation module obtains N lost EC blocks from a failed storage node through computation after the failed storage node is recovered; and a data send module 803 which sequentially sends the lost N EC blocks to the failed storage node to perform storage. In the process of sequentially sending the lost N EC blocks to the failed storage node, if a primary node generates a new EC range and determines that a first EC block in the new EC range must be stored by the failed storage node. , a key value determination module 804 determines whether or not a second EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node, where the second EC block has same key value from the first EC block. If it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, the data send module 803 sends the first EC block to the failed storage node to run storage. This method can avoid overwriting new data with old data, and ensure that an EC block stored on the failed storage node after recovery is a newer version.

[173] Preferencialmente, em ainda outra modalidade da presente invenção, o módulo de envio de dados 803 é especificamente configurado para: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[173] Preferably, in yet another embodiment of the present invention, data send module 803 is specifically configured to: send a nth lost EC block to the failed storage node, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. nth block of lost EC succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[174] Preferencialmente, em ainda outra modalidade da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[174] Preferably, in yet another embodiment of the present invention, lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and EC blocks. messages that are currently sent to the failed storage node, but response messages that correspond to them that are not received.

[175] Preferencialmente, em ainda outra modalidade da presente invenção, um volume lógico de um sistema de armazenamento distribuído inclui múltiplas partições lógicas, cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[175] Preferably, in yet another embodiment of the present invention, a logical volume of a distributed storage system includes multiple logical partitions, each logical partition is of a size of k data blocks and does not overlap each other, each logical partition. corresponds exclusively to a key value, and a key value of a logical partition that each EC block meets is a key value of the EC block.

[176] Para facilitar o entendimento da modalidade antecedente, o que vem a seguir usa um cenário de aplicação específico da modalidade antecedente para descrição.[176] To facilitate understanding of the antecedent modality, the following uses a specific antecedent modality application scenario for description.

[177] O sistema de armazenamento distribuído armazena dados em uma forma de uma faixa de EC, e cada faixa de EC inclui quatro blocos de dados e dois blocos de paridade. O sistema de armazenamento distribuído inclui 100 grupos de nó de armazenamento. Um grupo de nó de armazenamento 1 inclui seis nós de armazenamento, em que um nó primário é um nó A, e nós secundários são um nó B, um nó C, um nó D, um nó E e um nó F. Em um momento, o nó F está com falha. Três horas depois, o nó F está recuperado, mas dados são perdidos.[177] The distributed storage system stores data in a form of one EC range, and each EC range includes four data blocks and two parity blocks. The distributed storage system includes 100 storage node groups. Storage node group 1 includes six storage nodes, where one primary node is a node A, and the secondary nodes are node B, node C, node D, node E, and node F. At a time , node F is failed. Three hours later, node F is recovered, but data is lost.

[178] O nó F envia uma mensagem de recuperação ao nó A, para notificar o nó A que o nó F está recuperado da falha. Um módulo de mensagem de recuperação 801 do nó A recebe a mensagem de recuperação.[178] Node F sends a recovery message to node A to notify node A that node F is recovered from the failure. A recovery message module 801 of node A receives the recovery message.

[179] Após o nó A receber a mensagem de recuperação, um módulo de computação de dados 802 obtém 200 blocos de EC perdidos do nó F através de computação de acordo com todos os blocos de EC armazenados pelo nó A, nó B, nó C, nó D e nó E.[179] After node A receives the recovery message, an 802 data computation module obtains 200 lost EC blocks from node F through computation according to all EC blocks stored by node A, node B, node C , node D and node E.

[180] Um módulo de envio de dados 803 do nó A envia um bloco de EC perdido ao nó F cada vez e, após receber uma mensagem de resposta do nó F em relação ao bloco de EC perdido, envia um próximo bloco de EC perdido. Desse modo, os 200 blocos de EC perdidos são enviados sequencialmente ao nó F.[180] A node A 803 data send module sends a lost EC block to node F each time and, after receiving a response message from node F relative to the lost EC block, sends a next lost EC block . Thus, the 200 lost EC blocks are sent sequentially to node F.

[181] Após o módulo de envio de dados 803 enviar um 151-bloco de EC perdido ao nó F, o nó A gera uma nova faixa de EC de acordo com um segmento de dados entregue por um aparelho de entrega de dados, e determina que um primeiro bloco de EC na nova faixa de EC deve ser armazenado pelo nó F, em que um valor de chave do primeiro bloco de EC é 25.[181] After the 803 data send module sends a lost 151 EC block to node F, node A generates a new EC range according to a data segment delivered by a data delivery apparatus, and determines that a first EC block in the new EC range must be stored by node F, where a key value of the first EC block is 25.

[182] Visto que o nó A não recebeu uma mensagem de resposta enviada pelo nó F em relação ao 151s bloco de EC perdido, um módulo de determinação de valor de chave 804 do nó A determina se um segundo bloco de EC que tem um valor de chave 25 existe em 1512 a 200e blocos de EC perdidos. O nó A determina que um valor de chave de um 1902 bloco de EC perdido é 25.[182] Since node A did not receive a response message sent by node F with respect to the lost EC block 151s, a key value determination module 804 of node A determines whether a second EC block that has a value key 25 exists in 1512 to 200e lost EC blocks. Node A determines that a key value from a lost EC block 1902 is 25.

[183] O módulo de envio de dados 803 do nó A não envia o primeiro bloco de EC ao nó F temporariamente e, após enviar ο 1902 bloco de EC perdido ao nó F e receber a mensagem de resposta enviada pelo nó F em relação ao 190e bloco de EC perdido, envia o primeiro bloco de EC ao nó F.[183] Node A sending module 803 does not send the first EC block to node F temporarily and, after sending ο 1902 lost EC block to node F and receiving the response message sent by node F with respect to 190e EC block lost, sends the first EC block to node F.

[184] O módulo de envio de dados 803 do nó A envia todos os 200 blocos de EC perdidos ao nó F, e o nó F conclui a recuperação de dados.[184] Node A 803 data send module sends all 200 lost EC blocks to Node F, and Node F completes data retrieval.

[185] Cada aparelho nas modalidades da presente invenção é descrito acima a partir da perspectiva de uma entidade funcional modular. O que vem a seguir descreve um aparelho em uma modalidade da presente invenção a partir da perspectiva de processamento de hardware.[185] Each apparatus in the embodiments of the present invention is described above from the perspective of a modular functional entity. The following describes an apparatus in one embodiment of the present invention from the perspective of hardware processing.

[186] Referindo-se à Figura 9, outra modalidade de um aparelho de armazenamento de dados fornecido por uma modalidade da presente invenção inclui: um aparelho de entrada 901, um aparelho de saída 902, um processador 903 e uma memória 904 (o aparelho de armazenamento de dados 900 pode incluir um ou mais processadores 903, e um processador 903 é usado como um exemplo na Figura 9). Em algumas modalidades da presente invenção, o aparelho de entrada 901, o aparelho de saída 902, o processador 903 e a memória 904 podem ser conectados por um barramento ou em outros meios, em que a conexão por um barramento é usada como um exemplo na Figura 9.[186] Referring to Figure 9, another embodiment of a data storage apparatus provided by an embodiment of the present invention includes: an input apparatus 901, an output apparatus 902, a processor 903 and a memory 904 (the apparatus Data storage 900 may include one or more processors 903, and a processor 903 is used as an example in Figure 9). In some embodiments of the present invention, the input device 901, output device 902, processor 903, and memory 904 may be connected by a bus or other means, where connection by a bus is used as an example in Figure 9

[187] Invocando-se uma instrução de operação armazenada na memória 904, o processador 903 é configurado para executar as etapas a seguir: receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo inclui m+k blocos de EC alvo, e os m+k blocos de EC alvo incluem m blocos de dados alvo e k blocos de paridade alvo; determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação inclui um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento secundário alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação inclui um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta; e após receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, enviar uma mensagem de execução aos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[187] By invoking an operating instruction stored in memory 904, processor 903 is configured to perform the following steps: receive a data segment to be stored, and perform EC encoding on the data segment to be stored to obtain a target EC range, where a data segment size to be stored is no larger than Z, Z is a size of m data blocks, the target EC range includes m + k target EC blocks, and the m + k target EC blocks include m target data blocks and k target parity blocks; determining m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; send a staging message to the m + k target storage nodes separately, wherein each staging message includes a target EC block to be stored by each target storage node; receive a response message sent by any target storage node from the m + k target storage nodes, where the response message is used to indicate that the target secondary storage node currently sending the response message has generated a log file in accordance with the preparation message, and the preparation log file includes a target EC block to be stored by the target storage node currently sending the response message; and after receiving response messages from all target storage nodes at m + k target storage nodes, send an execution message to m + k target storage nodes, where the execution message is used to instruct the m + k target storage nodes to write the target EC blocks included in the staging log files.

[188] Em algumas modalidades da presente invenção, a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação gerado pelo nó de armazenamento secundário alvo de acordo com a mensagem de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é usada especificamente para instruir o nó de armazenamento alvo a gravar os blocos de EC alvo e o número de versão da faixa de EC alvo que estão na mensagem de preparação.[188] In some embodiments of the present invention, the preparation message further includes a version number of the target EC range; the staging log file generated by the target secondary storage node according to the staging message additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the target storage node to write the target EC blocks and the target EC range version number that are in the staging message.

[189] Em algumas modalidades da presente invenção, o processador 903 executa adicionalmente as etapas a seguir: se for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo incluem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação; e se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo incluídos nos arquivos de registro de preparação.[189] In some embodiments of the present invention, processor 903 additionally performs the following steps: If a failed storage node is detected to exist on the m + k target storage nodes, after failure recovery of the failed storage node , determine if the target EC range version numbers on the m + k target storage nodes are the same, where the target EC range version numbers on the m + k target storage nodes include the range version numbers. Target EC in staging log files on target storage nodes that generated staging log files and / or target EC track version numbers stored by target storage nodes that have no staging log file; and if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where The execution message is used to instruct the target storage nodes to write the target EC blocks included in the staging log files.

[190] Em algumas modalidades da presente invenção, o processador 903 executa adicionalmente as etapas a seguir: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo para excluir os arquivos de registro de preparação.[190] In some embodiments of the present invention, processor 903 additionally performs the following steps: If the target EC band version numbers on the target storage nodes on the m + k target storage nodes are different, send a message from deletion to target storage nodes that generated staging log files, where the delete message is used to instruct the target storage nodes to delete staging log files.

[191] Referindo-se à Figura 10, outra modalidade de um aparelho de armazenamento de dados fornecido por uma modalidade da presente invenção inclui: um aparelho de entrada 1001, um aparelho de saída 1002, um processador 1003 e uma memória 1004 (o aparelho de armazenamento de dados 1000 pode incluir um ou mais processadores 1003, e um processador 1003 é usado como um exemplo na Figura 10). Em algumas modalidades da presente invenção, o aparelho de entrada 1001, o aparelho de saída 1002, o processador 1003 e a memória 1004 podem ser conectados por um barramento ou em outros meios, em que a conexão por um barramento é usada como um exemplo na Figura 10.[191] Referring to Figure 10, another embodiment of a data storage apparatus provided by an embodiment of the present invention includes: an input apparatus 1001, an output apparatus 1002, a processor 1003 and a memory 1004 (the apparatus Data storage 1000 may include one or more processors 1003, and a processor 1003 is used as an example in Figure 10). In some embodiments of the present invention, input device 1001, output device 1002, processor 1003, and memory 1004 may be connected by a bus or other means, where connection by a bus is used as an example in Figure 10

[192] Invocando-se uma instrução de operação armazenada na memória 1004, o processador 1003 é configurado para executar as etapas a seguir: receber uma mensagem de preparação enviada por um nó de armazenamento primário, em que a mensagem de preparação inclui um bloco de EC alvo a ser armazenado por um nó de armazenamento secundário; gerar um arquivo de registro de preparação de acordo com a mensagem de preparação, em que o arquivo de registro de preparação inclui o bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário; enviar uma mensagem de resposta ao nó de armazenamento primário, em que a mensagem de resposta é usada para indicar que o nó de armazenamento secundário gerou o arquivo de registro de preparação de acordo com a mensagem de preparação; receber uma mensagem de execução enviada pelo nó de armazenamento primário; e gravar o bloco de EC alvo incluído no arquivo de registro de preparação de acordo com a mensagem de execução.[192] By invoking an operation instruction stored in memory 1004, processor 1003 is configured to perform the following steps: receive a staging message sent by a primary storage node, where the staging message includes a block of Target EC to be stored by a secondary storage node; generating a staging log file according to the staging message, wherein the staging log file includes the target EC block to be stored by the secondary storage node; send a response message to the primary storage node, where the response message is used to indicate that the secondary storage node has generated the staging log file according to the staging message; receive an execution message sent by the primary storage node; and write the target EC block included in the staging log file according to the execution message.

[193] Em algumas modalidades da presente invenção, o bloco de EC alvo a ser armazenado pelo nó de armazenamento secundário é um bloco de dados ou um bloco de paridade em uma faixa de EC alvo gerada pelo nó de armazenamento primário, e a mensagem de preparação inclui adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação gerado pelo nó de armazenamento secundário de acordo com a mensagem de preparação inclui adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é especificamente usada para instruir o nó de armazenamento alvo a gravar o bloco de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.[193] In some embodiments of the present invention, the target EC block to be stored by the secondary storage node is a data block or parity block in a target EC range generated by the primary storage node, and the message from preparation also includes a version number of the target EC range; the staging log file generated by the secondary storage node according to the staging message additionally includes the version number of the target EC range; and the execution message is specifically used to instruct the target storage node to write the target EC block and target EC track version number that are in the staging log files.

[194] Em algumas modalidades da presente invenção, o processador 1003 executa adicionalmente as etapas a seguir: receber uma mensagem de exclusão enviada pelo nó de armazenamento primário; e excluir o arquivo de registro de preparação de acordo com a mensagem de exclusão.[194] In some embodiments of the present invention, processor 1003 additionally performs the following steps: receiving a delete message sent by the primary storage node; and delete the staging log file according to the delete message.

[195] Referindo-se à Figura 11, outra modalidade de um aparelho de recuperação de dados fornecido por uma modalidade da presente invenção inclui: um aparelho de entrada 1101, um aparelho de saída 1102, um processador 1103 e uma memória 1104 (o aparelho de recuperação de dados 1100 pode incluir um ou mais processadores 1103, e um processador 1103 é usado como um exemplo na Figura 11). Em algumas modalidades da presente invenção, o aparelho de entrada 1101, o aparelho de saída 1102, o processador 1103 e a memória 1104 podem ser conectados por um barramento ou em outros meios, em que a conexão por um barramento é usada como um exemplo na Figura 11.[195] Referring to Figure 11, another embodiment of a data recovery apparatus provided by an embodiment of the present invention includes: an input apparatus 1101, an output apparatus 1102, a processor 1103 and a memory 1104 (the apparatus Data recovery 1100 may include one or more processors 1103, and a processor 1103 is used as an example in Figure 11). In some embodiments of the present invention, input device 1101, output device 1102, processor 1103 and memory 1104 may be connected by a bus or other means, where connection by a bus is used as an example in Figure 11

[196] Invocando-se uma instrução de operação armazenada na memória 1104, o processador 1103 é configurado para executar as etapas a seguir: após recuperação de falha de um nó de armazenamento com falha, receber uma mensagem de recuperação enviada pelo nó de armazenamento com falha; obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha em um grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence, em que o N é um número inteiro positivo; enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gera um primeiro bloco de EC e determina que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave do primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar o armazenamento.[196] By invoking an operation instruction stored in memory 1104, processor 1103 is configured to perform the following steps: upon failure recovery from a failed storage node, receive a recovery message sent by the storage node with failure; get N lost EC blocks from the failed storage node through computation according to EC blocks stored by failing storage nodes in a storage node group to which the failed storage node belongs, where N is a positive integer; sequentially send the lost N EC blocks to the failed storage node to perform storage; In the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node; and if it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage.

[197] Em algumas modalidades da presente invenção, o processador 1103 executa adicionalmente as etapas a seguir: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o nesimo bloco de EC perdido; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.[197] In some embodiments of the present invention, processor 1103 further performs the following steps: sending a nth lost EC block to the failed storage node, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. nth block of lost EC succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage.

[198] Em algumas modalidades da presente invenção, os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido incluem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem aos quais não são recebidas.[198] In some embodiments of the present invention, lost EC blocks that are not currently successfully stored include lost EC blocks that are not currently sent to the failed storage node and lost EC blocks that are not successfully stored. currently sent to the failed storage node, but response messages that correspond to which they are not received.

[199] Em algumas modalidades da presente invenção, um volume lógico do sistema de armazenamento distribuído inclui múltiplas partições lógicas, sendo que cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica que cada bloco de EC se encontra é um valor de chave do bloco de EC.[199] In some embodiments of the present invention, a distributed storage system logical volume includes multiple logical partitions, each logical partition having a size of k data blocks and not overlapping each other, each logical partition corresponding exclusively to each other. to a key value, and a key value of a logical partition that each EC block meets is a key value of the EC block.

[200] Uma modalidade da presente invenção fornece adicionalmente um nó de armazenamento, que inclui o aparelho mostrado em qualquer uma ou mais dentre a Figura 6 a Figura 11.[200] One embodiment of the present invention further provides a storage node including the apparatus shown in any one or more of Figure 6 to Figure 11.

[201] Pode ser claramente compreendido por uma pessoa versada na técnica que, para o propósito de uma descrição breve e conveniente, para um processo de trabalho detalhado do sistema, aparelho e unidade supracitados, pode ser feita referência a um processo correspondente nas modalidades dos métodos anteriormente mencionados, e os detalhes não são descritos novamente no presente documento.[201] It can be clearly understood by one of ordinary skill in the art that, for the purpose of brief and convenient description, for a detailed working process of the above system, apparatus and unit, reference may be made to a corresponding process in the modalities of methods mentioned above, and the details are not described again herein.

[202] Nas várias modalidades fornecidas no presente pedido, deve-se compreender que o sistema, aparelho e método revelados podem ser implantados de outras maneiras. Por exemplo, a modalidade de aparelho descrita é meramente exemplificativa. Por exemplo, a divisão de unidade é meramente uma divisão de função lógica e pode ser outra divisão em uma implementação real. Por exemplo, uma pluralidade de unidades ou componentes pode ser combinada ou integrada em outro sistema, ou alguns recursos podem ser ignorados ou não realizados. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implantados com o uso de algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades podem ser implantados em formas eletrônicas, mecânicas, ou outras.[202] In the various embodiments provided in the present application, it should be understood that the disclosed system, apparatus and method may be implemented in other ways. For example, the apparatus embodiment described is merely exemplary. For example, unit division is merely a logical function division and may be another division in a real implementation. For example, a plurality of units or components may be combined or integrated into another system, or some features may be ignored or not realized. In addition, mutual couplings or direct couplings or communication connections displayed or discussed may be deployed using some interfaces. Indirect couplings or communication connections between devices or units may be implanted in electronic, mechanical, or other forms.

[203] As unidades descritas como partes separadas podem ou não ser separadas fisicamente, e as partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição, ou podem estar distribuídas em uma pluralidade de unidades de rede. Algumas ou todas as unidades podem ser selecionadas de acordo com necessidades reais para alcançar os objetivos das soluções das modalidades.[203] Units described as separate parts may or may not be physically separated, and parts displayed as units may or may not be physical units, may be located in one position, or may be distributed in a plurality of network units. Some or all units may be selected according to actual needs to achieve the modalities solution objectives.

[204] Além disso, unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento, ou cada das unidades pode existir fisicamente sozinha, ou duas ou mais unidades são integradas em uma unidade. A unidade integrada pode ser implantada em uma forma de hardware, ou pode ser implantada em uma forma de uma unidade funcional de software.[204] In addition, functional units in the embodiments of the present invention may be integrated into one processing unit, or each unit may physically exist on its own, or two or more units are integrated into one unit. The integrated unit may be deployed in a form of hardware, or may be deployed in a form of a functional software unit.

[205] Quando a unidade integrada é implantada na forma de uma unidade funcional de software e vendida ou usada como um produto independente, a unidade integrada pode ser armazenada em um meio de armazenamento legível por computador. Com base em tal compreensão, as soluções técnicas da presente invenção essencialmente, ou um parte que contribui para um técnica anterior, ou todas ou algumas soluções técnicas podem ser implantadas na forma de um produto de software. O produto de software de computador é armazenado em um meio de armazenamento e inclui diversas instruções para instruir um dispositivo de computador (que pode ser um computador pessoal, um servidor, um dispositivo de rede ou similar) para realizar todas ou algumas das etapas dos métodos descritos nas modalidades da presente invenção. O meio de armazenamento antecedente inclui: qualquer meio que possa armazenar codificação de programa, tal como uma unidade flash USB, um disco rígido removível, uma memória só de leitura (ROM, Memória Só de Leitura), uma memória de acesso aleatório (RAM, Memória de Acesso Aleatório), um disco magnético ou um disco óptico.[205] When the integrated unit is deployed in the form of a software functional unit and sold or used as a standalone product, the integrated unit may be stored on a computer readable storage medium. Based on such understanding, the technical solutions of the present invention essentially, or a part contributing to a prior art, or all or some technical solutions may be deployed in the form of a software product. The computer software product is stored on a storage medium and includes several instructions for instructing a computer device (which may be a personal computer, a server, a network device, or the like) to perform all or some of the method steps. described in the embodiments of the present invention. The antecedent storage medium includes: any medium that can store program encoding, such as a USB flash drive, a removable hard disk, a read only memory (ROM, read only memory), a random access memory (RAM, Random Access Memory), a magnetic disk or an optical disk.

[206] As modalidades antecedentes são meramente destinadas a descrever as soluções técnicas da presente invenção, mas não a limitar a presente invenção. Embora a presente invenção seja descrita em detalhes com referência às modalidades mencionadas anteriormente, indivíduos de habilidade comum na técnica devem entender que é possível, ainda, realizar modificações nas soluções técnicas descritas nas modalidades mencionadas anteriormente ou realizar as substituições equivalentes em alguns recursos técnicos das mesmas, sem que se afaste do escopo das soluções técnicas das modalidades da presente invenção.[206] The foregoing embodiments are merely intended to describe the technical solutions of the present invention, but not to limit the present invention. Although the present invention will be described in detail with reference to the above mentioned embodiments, individuals of ordinary skill in the art should understand that it is still possible to make modifications to the technical solutions described in the above mentioned embodiments or to make equivalent substitutions in some technical resources thereof. without departing from the scope of the technical solutions of the embodiments of the present invention.

REIVINDICAÇÕES

Claims (15)

1. Método de armazenamento de dados, aplicado a um sistema de armazenamento distribuído, CARACTERIZADO pelo fato de que o sistema de armazenamento distribuído armazena dados com o uso de faixas de codificação por apagamento, EC, sendo que cada faixa de EC compreende uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC compreende m blocos de dados, a parte de paridade de cada faixa de EC compreende k blocos de paridade que são obtidos após a codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; o sistema de armazenamento distribuído compreende múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento compreende não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e o método é executado por um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento e compreende: receber um segmento de dados a ser armazenado, e realizar (201) codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo compreende m+k blocos de EC alvo, e os m+k blocos de EC alvo compreendem m blocos de dados alvo e k blocos de paridade alvo; determinar (202) m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; enviar (203) uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação compreende um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; receber (204) uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação compreende um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta; e após receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, enviar (205) uma mensagem de execução aos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo constituídos nos arquivos de registro de preparação.1. Data storage method, applied to a distributed storage system, FEATURED by the fact that the distributed storage system stores data using erasure coding bands, EC, with each EC band comprising a part of data and a parity part, the data part of each EC strip comprises m data blocks, the parity part of each EC strip comprises k parity blocks that are obtained after parity coding is performed on m data blocks. data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; The distributed storage system comprises multiple storage node groups, each storage node group comprises no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and the method is performed by a primary storage node in any of the storage node groups and comprises: receiving a data segment to be stored, and performing (201) EC encoding on the data segment to be stored to obtain a data segment. target EC range, where a size of the data segment to be stored is no larger than Z, Z is a size of m data blocks, the target EC range comprises m + k target EC blocks, and m + k target EC blocks comprise m target data blocks and k target parity blocks; determining (202) m + k target storage nodes, where m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; sending (203) a staging message to the m + k target storage nodes separately, wherein each staging message comprises a block of target ECs to be stored by each target storage node; receive (204) a response message sent by any target storage node from the m + k target storage nodes, where the response message is used to indicate that the target storage node currently sending the response message has generated a file readiness log according to the readiness message, and the readiness log file comprises a target EC block to be stored by the target storage node currently sending the response message; and after receiving response messages from all target storage nodes at m + k target storage nodes, send (205) an execution message to m + k target storage nodes, where the execution message is used to instruct the target storage nodes. m + k target storage nodes writing the target EC blocks constituted in the staging log files. 2. Método de armazenamento de dados, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que: a mensagem de preparação compreende adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação compreende adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é usada especificamente para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.Data storage method according to claim 1, characterized in that: the staging message further comprises a version number of the target EC range; the staging log file further comprises the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files. 3. Método de armazenamento de dados, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que após o envio de uma mensagem de preparação aos nós de armazenamento alvo, o método compreende adicionalmente: se for detectado que um nó de armazenamento com falha existe nos m+k nós de armazenamento alvo, após a recuperação de falha do nó de armazenamento com falha, determinar se os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo compreendem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão da faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação; e se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo constituídos nos arquivos de registro de preparação.Data storage method according to claim 2, characterized in that after sending a staging message to the target storage nodes, the method further comprises: if a failed storage node is detected to exist on m + k target storage nodes, after failover of the failed storage node, determine if the target EC range version numbers on m + k target storage nodes are the same, where the version numbers target EC range on m + k target storage nodes comprise target EC strip version numbers in staging log files on target storage nodes that generated staging log files and / or EC strip version numbers targets stored by target storage nodes that have no staging log file; and if the target EC range version numbers on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where The execution message is used to instruct the target storage nodes to write the target EC blocks constituted in the preparation log files. 4. Método de armazenamento de dados, de acordo com a reivindicação 3, CARACTERIZADO pelo fato de que o método compreende adicionalmente: se os números de versão da faixa de EC alvo nos nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação.Data storage method according to claim 3, characterized in that the method further comprises: if the target EC range version numbers on the target storage nodes at m + k target storage nodes are different , send a delete message to target storage nodes that generated staging log files, where the deletion message is used to instruct target storage nodes to delete staging log files. 5. Método de recuperação de dados, aplicado a um sistema de armazenamento distribuído, CARACTERIZADO pelo fato de que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC compreende uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC compreende m blocos de dados, a parte de paridade de cada faixa de EC compreende k blocos de paridade que são obtidos após codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; cada faixa de EC corresponde a um valor de chave, valores de chave de faixas de EC que têm faixas de endereço iguais de partes de dados são os mesmos, e valores de chave de faixas de EC que têm faixas de endereço diferentes de partes de dados são diferentes; o sistema de armazenamento distribuído compreende múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento compreende não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e quando um nó de armazenamento com falha existe em nós de armazenamento secundários em qualquer um dos grupos de nó de armazenamento, o método é executado por um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento e compreende: após a recuperação de falha do nó de armazenamento com falha, receber (501) uma mensagem de recuperação enviada pelo nó de armazenamento com falha; obter (502) N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha no grupo de nó de armazenamento, em que o N é um número inteiro positivo; enviar sequencialmente (503) os N blocos de EC perdidos ao nó de armazenamento com falha para armazenamento; no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gera um primeiro bloco de EC e determina que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave como o primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha; e se for determinado que o segundo bloco de EC existe, após o nó de armazenamento com falha de modo bem-sucedido armazenar o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.5. Data recovery method, applied to a distributed storage system, FEATURED by the fact that the distributed storage system stores data using erasure-encoding EC ranges, each EC range comprises a piece of data and a parity part, the data part of each EC strip comprises m data blocks, the parity part of each EC strip comprises k parity blocks that are obtained after parity coding is performed on the m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; each EC range corresponds to a key value, EC range key values that have equal address ranges of data parts are the same, and EC range key values that have different address ranges of data parts are different; The distributed storage system comprises multiple storage node groups, each storage node group comprises no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and when a failed storage node exists on secondary storage nodes in any of the storage node groups, the method is performed by a primary storage node in any of the storage node groups and comprises: upon recovery of failed storage node failed, receive (501) a recovery message sent by the failed storage node; obtain (502) N lost EC blocks from the failed storage node by computing according to EC blocks stored by non-failing storage nodes in the storage node group, where N is a positive integer; sequentially (503) sending the lost N EC blocks to the failed storage node for storage; In the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the first EC block must be stored by the failed storage node, determine if a second EC block that has the same key value as the first EC block exists in lost EC blocks that are not currently successfully stored by the failed storage node; and if it is determined that the second EC block exists, after the failed storage node successfully stores the second EC block, it sends the first EC block to the failed storage node to perform storage. 6. Método de recuperação de dados, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha para armazenamento compreende: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; receber uma mensagem de resposta que corresponde ao nesimo bloco de EC perdido, em que a mensagem de resposta é enviada pelo nó de armazenamento com falha, e a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o bloco de EC perdido de n esimo; e após receber a mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha.Data recovery method according to claim 5, characterized in that the sequential sending of the lost N EC blocks to the failed storage node for storage comprises: sending a nth lost EC block to the storage node failed, where 1 <n <N; receive a response message that corresponds to the nth lost EC block, where the response message is sent by the failed storage node, and the response message is used to indicate that the failed storage node has stored well. the nth missed EC block is succeeded; and upon receiving the response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node. failed storage. 7. Método de recuperação de dados, de acordo com a reivindicação 6, CARACTERIZADO pelo fato de que os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido compreendem os blocos de EC perdidos que não são enviados atualmente ao nó de armazenamento com falha e os blocos de EC perdidos que são enviados atualmente ao nó de armazenamento com falha, mas mensagens de resposta que correspondem às quais não são recebidas.Data recovery method according to claim 6, characterized in that lost EC blocks that are not currently successfully stored comprise lost EC blocks that are not currently sent to the storage node. failed and the lost EC blocks that are currently sent to the failed storage node, but corresponding response messages that are not received. 8. Método de recuperação de dados, de acordo com qualquer uma das reivindicações 5 a 7, CARACTERIZADO pelo fato de que um volume lógico do sistema de armazenamento distribuído compreende múltiplas partições lógicas, cada partição lógica é de um tamanho de k blocos de dados e não se sobrepõe uma à outra, cada partição lógica corresponde exclusivamente a um valor de chave, e um valor de chave de uma partição lógica em que cada bloco de EC se encontra é um valor de chave do bloco de EC.Data recovery method according to any one of claims 5 to 7, characterized in that a logical volume of the distributed storage system comprises multiple logical partitions, each logical partition is of a size of k data blocks and does not overlap each other, each logical partition corresponds exclusively to a key value, and a key value of a logical partition where each EC block is is a key value of the EC block. 9. Aparelho de armazenamento de dados, aplicado a um sistema de armazenamento distribuído, CARACTERIZADO pelo fato de que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC compreende uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC compreende m blocos de dados, a parte de paridade de cada faixa de EC compreende k blocos de paridade que são obtidos após codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; o sistema de armazenamento distribuído compreende múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento compreende não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e o aparelho de armazenamento de dados é implantado em um nó de armazenamento primário em qualquer um dos grupos de nó de armazenamento, e o aparelho de armazenamento de dados compreende: um módulo de codificação de dados (601), configurado para receber um segmento de dados a ser armazenado, e realizar codificação de EC no segmento de dados a ser armazenado para obter uma faixa de EC alvo, em que um tamanho do segmento de dados a ser armazenado não é maior do que Z, Z é um tamanho de m blocos de dados, a faixa de EC alvo compreende m+k blocos de EC alvo, e os m+k blocos de EC alvo compreendem m blocos de dados alvo e k blocos de paridade alvo; um módulo de determinação de nó (602), configurado para determinar m+k nós de armazenamento alvo, em que os m+k nós de armazenamento alvo são configurados para armazenar os m+k blocos de EC alvo, e cada nó de armazenamento alvo armazena um dos blocos de EC alvo; um módulo de envio de mensagem (603), configurado para enviar uma mensagem de preparação aos m+k nós de armazenamento alvo separadamente, em que cada mensagem de preparação compreende um bloco de EC alvo a ser armazenado por cada nó de armazenamento alvo; e um módulo de recepção de mensagem (604), configurado para receber uma mensagem de resposta enviada por qualquer nó de armazenamento alvo dos m+k nós de armazenamento alvo, em que a mensagem de resposta é usada para indicar que o nó de armazenamento alvo que envia atualmente a mensagem de resposta gerou um arquivo de registro de preparação de acordo com a mensagem de preparação, e o arquivo de registro de preparação compreende um bloco de EC alvo a ser armazenado pelo nó de armazenamento alvo que envia atualmente a mensagem de resposta, em que o módulo de envio de mensagem (603) é configurado adicionalmente para enviar uma mensagem de execução aos m+k nós de armazenamento alvo após o módulo de recepção de mensagem receber mensagens de resposta de todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo, em que a mensagem de execução é usada para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo constituídos nos arquivos de registro de preparação.9. Data storage apparatus, applied to a distributed storage system, FEATURED by the fact that the distributed storage system stores data using erasure coding EC ranges, each EC range comprises a piece of data and a parity part, the data part of each EC strip comprises m data blocks, the parity part of each EC strip comprises k parity blocks that are obtained after parity coding is performed on the m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; The distributed storage system comprises multiple storage node groups, each storage node group comprises no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and the data storage apparatus is deployed to a primary storage node in any of the storage node groups, and the data storage apparatus comprises: a data coding module (601) configured to receive a data segment. data to be stored, and perform EC coding on the data segment to be stored to obtain a target EC range, where a size of the data segment to be stored is no larger than Z, Z is a size of m blocks data range, the target EC range comprises m + k target EC blocks, and m + k target EC blocks comprise m target data blocks and k target parity blocks; a node determination module (602) configured to determine m + k target storage nodes, wherein m + k target storage nodes are configured to store m + k target EC blocks, and each target storage node stores one of the target EC blocks; a message sending module (603) configured to send a staging message to the m + k target storage nodes separately, wherein each staging message comprises a target EC block to be stored by each target storage node; and a message receiving module (604) configured to receive a response message sent by any target storage node from the m + k target storage nodes, wherein the response message is used to indicate that the target storage node which currently sends the reply message has generated a readiness log file according to the readiness message, and the readiness log file comprises a target EC block to be stored by the target storage node that currently sends the reply message. wherein the message sending module 603 is further configured to send an execution message to the m + k target storage nodes after the message receiving module receives response messages from all target storage nodes at m + k target storage nodes, where the execution message is used to instruct m + k target storage nodes to write the target EC blocks constituted in the archives of preparation record. 10. Aparelho de armazenamento de dados, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que: a mensagem de preparação compreende adicionalmente um número de versão da faixa de EC alvo; o arquivo de registro de preparação compreende adicionalmente o número de versão da faixa de EC alvo; e a mensagem de execução é usada especificamente para instruir os m+k nós de armazenamento alvo a gravarem os blocos de EC alvo e o número de versão da faixa de EC alvo que estão nos arquivos de registro de preparação.A data storage apparatus according to claim 9, characterized in that: the staging message further comprises a version number of the target EC range; the staging log file further comprises the version number of the target EC range; and the execution message is specifically used to instruct the m + k target storage nodes to write the target EC blocks and target EC track version number that are in the staging log files. 11. Aparelho de armazenamento de dados, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o aparelho compreende adicionalmente: um módulo de determinação de versão (605), configurado para: quando for detectado que um nó de armazenamento com falha existente nos m+k nós de armazenamento alvo, determinar se números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo são os mesmos após a recuperação de falha do nó de armazenamento com falha, em que os números de versão da faixa de EC alvo nos m+k nós de armazenamento alvo compreendem números de versão da faixa de EC alvo em arquivos de registro de preparação em nós de armazenamento alvo que geraram arquivos de registro de preparação e/ou números de versão de faixa de EC alvo armazenados por nós de armazenamento alvo que não têm arquivo de registro de preparação, em que o módulo de envio de mensagem (603) é especificamente configurado para: se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem os mesmos, enviar uma mensagem de execução aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de execução é usada para instruir os nós de armazenamento alvo a gravarem os blocos de EC alvo constituídos nos arquivos de registro de preparação.Data storage apparatus according to claim 10, characterized in that the apparatus further comprises: a version determination module (605), configured to: when a failed storage node is detected in the m + k target storage nodes, determine if target EC range version numbers on m + k target storage nodes are the same after failover of the failed storage node, where the range version numbers Target ECs at m + k target storage nodes comprise target EC track version numbers in staging log files on target storage nodes that generated staging log files and / or target EC track version numbers stored by target storage nodes that do not have staging log file, where the message sending module (603) is specifically configured to: if the E range version numbers If the target storage nodes on all target storage nodes on the m + k target storage nodes are the same, send an execution message to the target storage nodes that generated staging log files, where the execution message is used to instruct the target storage nodes. target storage nodes to write the target EC blocks constituted in the staging log files. 12. Aparelho de armazenamento de dados, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o módulo de envio de mensagem (603) é configurado adicionalmente para: se os números de versão da faixa de EC alvo em todos os nós de armazenamento alvo nos m+k nós de armazenamento alvo forem diferentes, enviar uma mensagem de exclusão aos nós de armazenamento alvo que geraram arquivos de registro de preparação, em que a mensagem de exclusão é usada para instruir os nós de armazenamento alvo a excluírem os arquivos de registro de preparação.Data storage apparatus according to claim 11, characterized in that the message sending module (603) is additionally configured to: if the target EC range version numbers on all storage nodes m + k target storage nodes are different, send a delete message to target storage nodes that generated staging log files, where the delete message is used to instruct the target storage nodes to delete the storage files. preparation record. 13. Aparelho de recuperação de dados, aplicado a um sistema de armazenamento distribuído, CARACTERIZADO pelo fato de que o sistema de armazenamento distribuído armazena dados com o uso de faixas de EC de codificação por apagamento, cada faixa de EC compreende uma parte de dados e uma parte de paridade, a parte de dados de cada faixa de EC compreende m blocos de dados, a parte de paridade de cada faixa de EC compreende k blocos de paridade que são obtidos após codificação de paridade ser realizada nos m blocos de dados, e os m blocos de dados e os k blocos de paridade constituem blocos de EC de cada faixa de EC; cada faixa de EC corresponde a um valor de chave, valores de chave de faixas de EC que têm faixas de endereço iguais de partes de dados são as mesmos, e valores de chave de faixas de EC que têm faixas de endereço diferentes de partes de dados são diferentes; o sistema de armazenamento distribuído compreende múltiplos grupos de nó de armazenamento, cada grupo de nó de armazenamento compreende não menos do que m+k nós de armazenamento, um nó de armazenamento primário é especificado em cada grupo de nó de armazenamento, e nós em cada grupo de nó de armazenamento exceto o nó de armazenamento primário são nós de armazenamento secundários, em que m e k são ambos números inteiros positivos; e um nó de armazenamento com falha existe em nós de armazenamento secundários em qualquer grupo de nó de armazenamento no sistema de armazenamento distribuído, o aparelho de recuperação de dados é implantado em um nó de armazenamento primário no grupo de nó de armazenamento ao qual o nó de armazenamento com falha pertence, e o aparelho de recuperação de dados compreende: um módulo de mensagem de recuperação (801), configurado para receber, após recuperação de falha do nó de armazenamento com falha, uma mensagem de recuperação enviada pelo nó de armazenamento com falha; um módulo de computação de dados (802), configurado para obter N blocos de EC perdidos do nó de armazenamento com falha através de computação de acordo com blocos de EC armazenados por nós de armazenamento sem falha no grupo de nó de armazenamento, em que o N é um número inteiro positivo; um módulo de envio de dados (803), configurado para enviar sequencialmente os N blocos de EC perdidos ao nó de armazenamento com falha para executar armazenamento; e um módulo de determinação de valor de chave (804), configurado para: no processo de envio sequencial dos N blocos de EC perdidos ao nó de armazenamento com falha, se o nó de armazenamento primário gerar um primeiro bloco de EC e determinar que o primeiro bloco de EC deve ser armazenado pelo nó de armazenamento com falha, determinar se um segundo bloco de EC que tem um mesmo valor de chave como o primeiro bloco de EC existe nos blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido pelo nó de armazenamento com falha, em que o módulo de envio de dados (803) é adicionalmente configurado para: se o módulo de determinação de valor de chave determinar que o segundo bloco de EC existe, após o nó de armazenamento com falha armazenar de modo bem-sucedido o segundo bloco de EC, enviar o primeiro bloco de EC ao nó de armazenamento com falha para executar armazenamento.13. Data Recovery Appliance, Applied to a Distributed Storage System, FEATURED by the fact that the distributed storage system stores data using erasure coding EC ranges, each EC range comprises a piece of data and a parity part, the data part of each EC strip comprises m data blocks, the parity part of each EC strip comprises k parity blocks that are obtained after parity coding is performed on the m data blocks, and m data blocks and k parity blocks constitute EC blocks of each EC range; each EC range corresponds to a key value, EC range key values that have equal address ranges of data parts are the same, and EC range key values that have different address ranges of data parts are different; The distributed storage system comprises multiple storage node groups, each storage node group comprises no less than m + k storage nodes, a primary storage node is specified in each storage node group, and nodes in each storage node. storage node group except the primary storage node are secondary storage nodes, where mek are both positive integers; and a failed storage node exists on secondary storage nodes in any storage node group in the distributed storage system, the data recovery appliance is deployed to a primary storage node in the storage node group to which the storage node. The failed storage device belongs, and the data recovery apparatus comprises: a recovery message module (801) configured to receive, upon failure recovery from the failed storage node, a recovery message sent by the storage node with failure; a data compute module (802) configured to obtain N lost EC blocks from the failed storage node through computation according to EC blocks stored by non-failing storage nodes in the storage node group, where the N is a positive integer; a data send module (803) configured to sequentially send the lost N EC blocks to the failed storage node to perform storage; and a key value determination module (804) configured for: in the process of sequentially sending the lost N EC blocks to the failed storage node, if the primary storage node generates a first EC block and determines that the The first EC block must be stored by the failed storage node, determining if a second EC block that has the same key value as the first EC block exists in the lost EC blocks that are not currently successfully stored. by the failed storage node, wherein the data sending module (803) is additionally configured to: if the key value determination module determines that the second EC block exists, after the failed storage node stores from If the second EC block successfully succeeds, it sends the first EC block to the failed storage node to perform storage. 14. Aparelho de recuperação de dados, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o módulo de envio de dados (803) é especificamente configurado para: enviar um nesimo bloco de EC perdido ao nó de armazenamento com falha, em que 1<n<N; e após receber uma mensagem de resposta do nó de armazenamento com falha em relação ao nesimo bloco de EC perdido, se n<N, adicionar 1 a um valor de n, e reexecutar a etapa de enviar um n esimo bloco de EC perdido ao nó de armazenamento com falha, em que a mensagem de resposta é usada para indicar que o nó de armazenamento com falha armazenou de modo bem-sucedido o n esimo bloco de EC perdido.Data recovery apparatus according to claim 13, characterized in that the data sending module (803) is specifically configured to: send a nth lost EC block to the failed storage node, wherein 1 <n <N; and after receiving a response message from the failed storage node regarding the nth lost EC block, if n <N, add 1 to a value of n, and rerun the step of sending a nth lost EC block to the node Failed storage, where the response message is used to indicate that the failed storage node has successfully stored the last lost EC block. 15. Aparelho de recuperação de dados, de acordo com a reivindicação 14, CARACTERIZADO pelo fato de que os blocos de EC perdidos que não são atualmente armazenados de modo bem-sucedido compreendem os blocos de EC perdidos que não são enviados ao nó de armazenamento com falha atualmente e os blocos de EC perdidos que são enviados ao nó de armazenamento com falha atualmente, mas mensagens de resposta que correspondem aos quais não são recebidas.Data recovery apparatus according to claim 14, characterized in that lost EC blocks that are not currently successfully stored comprise lost EC blocks that are not sent to the storage node with currently fails and the lost EC blocks that are sent to the currently failed storage node, but response messages that correspond to them that are not received.

Family

ID=

Similar Documents

Publication Publication Date Title
BR102016012742B1 (en) DATA STORAGE METHOD, DATA RECOVERY METHOD, RELATED APPARATUS, AND SYSTEM
US11797489B2 (en) System and method for using local storage to emulate centralized storage
US8234518B2 (en) Method for voting with secret shares in a distributed system
US9367394B2 (en) Decoupled reliability groups
CN106547859B (en) Data file storage method and device under multi-tenant data storage system
BR102016012739A2 (en) METHOD OF DATA DISTRIBUTION, DATA STORAGE METHOD, RELATED APPARATUS, AND SYSTEM
US7363444B2 (en) Method for taking snapshots of data
CN110651246B (en) Data reading and writing method and device and storage server
WO2018000812A1 (en) Data storage method and apparatus
WO2017071563A1 (en) Data storage method and cluster management node
CN111625396B (en) Backup data verification method, server and storage medium
CN107729536B (en) Data storage method and device
US11748215B2 (en) Log management method, server, and database system
CN111400267A (en) Method and device for recording log
WO2019109257A1 (en) Log management method, server and database system
BR102016012742A2 (en) STORAGE METHOD, DATA RECOVERY METHOD, RELATED APPARATUS, AND SYSTEM
Bland Toward message passing failure management
CN112667443A (en) User-oriented variable distributed storage copy fault tolerance method
US11734117B2 (en) Data recovery in a storage system
CN120541139A (en) Data synchronization method, device, equipment and storage medium