BR112017020736B1 - método de verificação de dados e sistema de armaenamento - Google Patents

método de verificação de dados e sistema de armaenamento Download PDF

Info

Publication number
BR112017020736B1
BR112017020736B1 BR112017020736-2A BR112017020736A BR112017020736B1 BR 112017020736 B1 BR112017020736 B1 BR 112017020736B1 BR 112017020736 A BR112017020736 A BR 112017020736A BR 112017020736 B1 BR112017020736 B1 BR 112017020736B1
Authority
BR
Brazil
Prior art keywords
data
node
metadata
identifier
verification
Prior art date
Application number
BR112017020736-2A
Other languages
English (en)
Other versions
BR112017020736B8 (pt
BR112017020736A2 (pt
Inventor
Mingchang WEI
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112017020736A2 publication Critical patent/BR112017020736A2/pt
Publication of BR112017020736B1 publication Critical patent/BR112017020736B1/pt
Publication of BR112017020736B8 publication Critical patent/BR112017020736B8/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3854Control is performed at the peripheral side

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

MÉTODO DE VERIFICAÇÃO DE DADOS E SISTEMA DE ARMAZENAMENTO. Um sistema de armazenamento inclui um hospedeiro (11), um nó de verificação, e múltiplos nós de dados. 0 hospedeiro é configurado para: agrupar (S102) múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluídos nas solicitações de escrita de dados, onde cada conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados tendo um mesmo identificador nó de dados; e quando um tamanho de todas as solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, calcular (S103) dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. 0 hospedeiro é ainda configurado para: enviar (5104) cada conjunto de solicitações de escrita de dados para um nó de dados indicado por um identificador, e enviar (S105) os dados de verificação para o nó de verificação. Portanto, além de assegurar a confiabilidade de dados, dados de um mesmo tipo podem ser armazenados em um mesmo nó de armazenamento e os dados podem ser lidos a partir de apenas (...).

Description

CAMPO TÉCNICO
[001] As modalidades da presente invenção relacionam-se com o campo das tecnologias de armazenamento e, em particular, com um método de verificação de dados e urn sistema de armazenamento.
FUNDAMENTOS
[002] Em um sistema distribuído que inclui múltiplos nós de armazenamento, um hospedeiro envia múltiplas solicitações de escrita de dados geradas para múltiplos nós de armazenamento. Cada nó de armazenamento armazena algumas solicitações de escrita de dados. Uma solicitação de escrita de dados inclui dados e um endereço lógico de um nó de armazenamento no qual os dados devem ser escritos (daqui em diante denominado endereço lógico). Para evitar a perda de uma solicitação de escrita de dados armazenada em um nó de armazenamento causada porque uma falha ocorre no nó de armazenamento, o hospedeiro calcula dados de verificação das múltiplas solicitações de escrita de dados geradas, e envia os dados de verificação para um ou mais nós de armazenamento para armazenamento. Para calcular os dados de verificação, o hospedeiro agrupa, de acordo com um tamanho predeterminado, múltiplas solicitações de escrita de dados que atingem um tamanho especificado, para obter múltiplas unidades de dados, e, em seguida, calcula unidades de verificação das múltiplas unidades de dados. Essas unidades de dados e unidades de verificação formam uma faixa. Finalmente, o hospedeiro envia cada unidade de dados ou cada unidade de verificação para um nó de armazenamento para armazenamento. Estas solicitações de escrita de dados são agrupadas 2/60 aleatoriamente em múltiplas unidades de dados, para diferentes nós de armazenamento para armazenamento. Portanto, durante leitura de dados, dados carregados nas múltiplas solicitações de escrita de dados geralmente precisam ser coletados de diferentes nós de armazenamento. Uma operação de leitura de nó de armazenamento cruzado afeta eficiência de leitura de dados.
SUMÁRIO
[003] Um primeiro aspecto da presente invenção fornece um sistema de armazenamento. O sistema de armazenamento inclui um hospedeiro, um nó de verificação, e múltiplos nós de dados. Cada nó de dados tem um identificador exclusivo. O hospedeiro é configurado para agrupar múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluidos nas solicitações de escrita de dados. Cada conjunto de solicitações de escrita de dados inclui um ou mais solicitações de escrita de dados tendo um mesmo identificador de nó de dados. Cada solicitação de escrita de dados inclui dados, um endereço lógico no qual os dados devem ser escritos, e um identificador de um nó de dados no qual os dados devem ser escritos. O nó de dados no qual os dados devem ser escritos é selecionado pelo hospedeiro de acordo com os dados ou o endereço lógico. Como alternativa, ao acionar múltiplas solicitações de escrita de dados em um hospedeiro 11, um usuário envia uma instrução para o hospedeiro 11 para solicitar que estas solicitações de escrita de dados sejam escritas em um mesmo nó de dados. O hospedeiro 11 pode selecionar um nó de dados para estas solicitações de escrita de dados de acordo com a exigência de usuário e adicionar um identificador do nó de dados cada solicitação de escrita de dados. Quando um tamanho de todas as solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, o hospedeiro calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. A quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados. 0 hospedeiro envia cada da quantidade especificada de conjuntos de solicitações de escrita de dados para um nó de dados indicado por um identificador de nó de dados incluido no conjunto de solicitações de escrita de dados, e envia os dados de verificação para o nó de verificação.
[004] De acordo com o sistema de armazenamento fornecido na presente invenção, um hospedeiro agrupa múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluidos nas solicitações de escrita de dados. Quando tamanhos de todas as solicitações de escrita de dados em uma quantidade especificada de conjuntos de solicitações de escrita de dados atingem uma quantidade de dados predefinida, o hospedeiro calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, e envia os dados de verificação para um nó de verificação para armazenamento. Portanto, confiabilidade de dados é assegurada. Cada conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados a serem escritas em um mesmo 4/60 dados no qual cada solicitação de ser escrita é selecionado pelo dados na solicitação de escrita de dados ou um endereço lógico, na solicitação de escrita de dados, no qual os dados devem ser escritos. Portanto, cada conjunto de solicitações de escrita de dados inclui solicitações de escrita de dados de um mesmo tipo. Depois de calcular os dados de verificação, o hospedeiro envia cada conjunto de solicitações de escrita de dados para um nó de dados indicado por um identificador incluido no conjunto de solicitações de escrita de dados. Desta forma, as solicitações de escrita de dados do mesmo tipo são armazenadas em um mesmo nó de dados. Existe uma possibilidade relativamente alta de leitura simultânea de dados nas solicitações de escrita de dados do mesmo tipo. Portanto, os dados podem ser lidos a partir de um nó de dados, e uma operação de leitura de nó cruzado não precisa ser realizada, melhorando assim a eficiência de leitura de dados.
[005] Com referência ao primeiro aspecto, em uma primeira implementação do primeiro aspecto, o hospedeiro é ainda configurado para: alocar um identificador para cada solicitação de escrita de dados na quantidade especificada de conjuntos de solicitações de escrita de dados, e enviar o identificador de cada conjunto de solicitações de escrita de dados para o nó de dados indicado pelo identificador de nó de dados incluido no conjunto de solicitações de escrita de dados. O nó de dados é configurado para receber um conjunto de solicitações de escrita de dados e um identificador do conjunto de solicitações de escrita de dados. 0 nó de dados é ainda configurado para criar e armazenar metadados, correspondência entre solicitações de escrita Os metadados incluem uma ■í/1 ■ 4 / o identificador do conjunto de dados e um endere ico no qual os dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno. Na presente invenção, solicitações de escrita de dados de um mesmo tipo são armazenadas como um conjunto de solicitações de escrita de dados em um nó de dados. Portanto, metadados relacionados ao conjunto de solicitações de escrita de dados também são armazenados localmente no nó de dados. Se uma operação como coleta de lixo for realizada no conjunto de solicitações de escrita de dados subsequentemente, os metadados podem ser diretamente modificados localmente.
[006] Com referência à primeira implementação do primeiro aspecto, em uma segunda implementação do primeiro aspecto, o sistema de armazenamento inclui ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados. 0 nó de dados é ainda configurado para: ao determinar que metadados acumulados atingem a quantidade de dados predefinida, enviar um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados. 0 conjunto de metadados inclui os metadados acumulados que atingem a quantidade de dados predefinida. 0 nó de cálculo de verificação de metadados é configurado para: receber um conjunto de metadados e um identificador de cada dos múltiplos nós de dados, onde o conjunto de metadados e o identificador são enviados pelo nó de dados, armazenar uma correspondência entre cada conjunto £ Rub \ / x3^ e selecionar uma quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência. A quantidade especificada de conjuntos de metadados selecionados são correspondentes a diferentes identificadores de nó de dados. 0 nó de cálculo de verificação de metadados é ainda configurado para calcular dados de verificação da quantidade especificada de conjuntos de metadados selecionados. Então, o nó de cálculo de verificação de metadados envia os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados. O nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados. Portanto, de acordo com o sistema de armazenamento fornecido na presente invenção, confiabilidade de um conjunto de metadados armazenado em cada nó de dados é assegurada.
[007] Com referência à primeira implementação do primeiro aspecto, em uma terceira implementação do primeiro aspecto, o sistema de armazenamento inclui ainda um nó de coleta de lixo. O nó de coleta de lixo é configurado para executar uma operação de coleta de lixo sistemática. Especificamente, o nó de coleta de lixo seleciona, a partir de múltiplas faixas de acordo com uma correspondência entre um identificador de uma faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa e de acordo com um mapa de bits de um conjunto de solicitações de escrita de dados, uma faixa incluindo uma maior quantidade de dados inválidos, onde a correspondência é enviada pelo hospedeiro, e o mapa de bits é enviado pelo iC> 7/60 nó de dados. Na presente invenção, a faixa inclui quantidade especificada de conjuntos de solicitações escrita de dados e os dados de verificação calculados acordo com estes conjuntos de solicitações de escrita dados. Na presente invenção, o mapa de bits é utilizado para indicar uma quantidade de dados de dados inválidos compreendidos no conjunto de solicitações de escrita de dados. 0 nó de coleta de lixo usa a faixa incluindo a maior quantidade de dados inválidos como uma faixa a ser recuperada, e envia uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados incluido na faixa a ser recuperada é localizado. Cada mensagem de notificação de coleta de lixo é usada para instruir o nó de dados para executar a coleta de lixo sistemática. Cada mensagem de notificação de coleta de lixo inclui um identificador de um conjunto de solicitações de escrita de dados. 0 nó de coleta de lixo seleciona uma faixa incluindo dados inválidos para executar uma operação de coleta de lixo sistemática. Portanto, eficiência de coleta de lixo sistemática é melhorada.
[008] Com referência à terceira implementação do primeiro aspecto, em uma quarta implementação do primeiro aspecto, após receber a mensagem de notificação de coleta de lixo, o nó de dados realiza uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados. Especificamente, o nó de dados determina um conjunto de solicitações de escrita de w\(jijstr/a/ Z M \ 8/60 F'S'-i-L_ Q π I μ? «5 Rub ~^A_x g- % xy i y "1 dados recuperado de acordo com o identificador do conjunto de solicitações de escrita de dados. Em seguida, o nó de dados determina, de acordo com o mapa de bits do conjunto de solicitações de escrita de dados, um endereço lógico no qual dados válidos incluidos no conjunto de solicitações de escrita de dados devem ser escritos, remove uma correspondência entre o endereço lógico no qual os dados válido devem ser escritos e o identificador do conjunto de solicitações de escrita de dados, e armazena uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e um identificador de um conjunto de solicitações de escrita de dados recombinado. Então, o nó de dados envia um endereço lógico de disco rigido do conjunto de solicitações de escrita de dados para um disco de estado sólido, e o disco de estado sólido registra blocos correspondentes ao endereço lógico de disco rigido como inválidos. Ao executar coleta de lixo interna subsequentemente, o disco de estado sólido pode apagar diretamente esses blocos, e não precisa replicar os dados válidos. Portanto, uma quantidade de tempos de amplificação de escrita realizada internamente no disco de estado sólido é reduzida. Além disso, a coleta de lixo sistemática fornecida na presente invenção significa que cada nó de dados combina dados válidos em outro conjunto de solicitações de escrita de dados local. Portanto, o nó de dados independentemente completa a coleta de lixo sistemática e não precisa trocar dados com outro nó de dados, assim, economizando largura de banda entre os nós de dados.
[009] Um segundo aspecto da presente invenção fornece um método de verificação de dados, aplicado ao sistema de armazenamento do primeiro aspecto, do primeiro aspecto.
[0010] Um terceiro aspecto da presente invenção fornece um hospedeiro, e uma função do hospedeiro é consistente com a do sistema de armazenamento fornecido na primeira implementação do primeiro aspecto.
[0011] Um quarto aspecto da presente invenção fornece um sistema de armazenamento. O sistema de armazenamento inclui um nó de verificação, um nó de cálculo de verificação, e múltiplos nós de dados. Cada nó de dados é configurado para enviar um conjunto de solicitações de escrita de dados para o nó de cálculo de verificação. O conjunto de solicitações de escrita de dados inclui uma ou mais solicitações de escrita de dados, e cada solicitação de escrita de dados inclui dados e um identificador de um nó de dados no qual os dados devem ser escritos. Um tamanho do conjunto de solicitações de escrita de dados é igual a uma quantidade de dados predefinida. O nó de cálculo de verificação é configurado para: receber múltiplos conjuntos de solicitações de escrita de dados, e selecionar uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir dos múltiplos conjuntos de solicitações de escrita de dados. A quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados, e a quantidade especificada de conjuntos de solicitações de escrita de dados inclui diferentes identificadores de nó de dados. Em seguida, o nó de cálculo de verificação calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de «tfüStna/ # % 10/60 /HSJIÓ o Q °- 1 1 S —- <g nub <s °'^e <5- dados, e envia os dados de verificação para o nó de x3^‘ verificação. 0 nó de verificação é diferente de um nó de dados no qual cada da quantidade especificada de conjuntos de solicitações de escrita de dados é localizado.
[0012] De acordo com o sistema de armazenamento fornecido na presente invenção, quando o tamanho de todas as solicitações de escrita de dados acumuladas atinge uma quantidade de dados predefinida, cada nó de dados envia estas solicitações de escrita de dados como um conjunto de solicitações de escrita de dados para um nó de cálculo de verificação. O nó de cálculo de verificação seleciona uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir de múltiplos conjuntos de solicitações de escrita de dados recebidos, calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, e envia os dados de verificação para um nó de verificação para armazenamento. Portanto, confiabilidade de dados é assegurada.
[0013] Com referência ao quarto aspecto, em uma primeira implementação do quarto aspecto, cada solicitação de escrita de dados inclui ainda um endereço lógico no qual os dados devem ser escritos, e o nó de dados no qual os dados devem ser escritos é selecionado por um hospedeiro no sistema de armazenamento de acordo com os dados ou o endereço lógico no qual os dados devem ser escritos, ou o nó de dados no qual os dados devem ser escritos pode não ser selecionado pelo hospedeiro, mas é especificado diretamente por um usuário quando uma solicitação de escrita de dados é acionada no hospedeiro. Cada nó de dados é ainda configurado para receber múltiplas solicitações de escrita de dados enviadas \^-JStn3/ M 11/60 4 F's S’ c> □. a ® RU6 Ç \ pelo hospedeiro. Cada conjunto de solicitações de escrita de / xaá^ dados inclui múltiplas solicitações de escrita de dados tendo um mesmo identificador nó de dados, e um nó de dados no qual cada solicitação de escrita de dados deve ser escrita é selecionado pelo hospedeiro de acordo com os dados na solicitação de escrita de dados ou um endereço lógico, na solicitação de escrita de dados, no qual os dados devem ser escritos. Portanto, cada conjunto de solicitações de escrita de dados inclui solicitações de escrita de dados de um mesmo tipo. Existe uma possibilidade relativamente alta de leitura simultânea de dados nas solicitações de escrita de dados do mesmo tipo. Portanto, os dados podem ser lidos a partir de um nó de dados, e uma operação de leitura de nó cruzado não precisa ser realizada, melhorando assim a eficiência de leitura de dados.
[0014] Com referência à primeira implementação do quarto aspecto, em uma segunda implementação do quarto aspecto, o nó de dados é ainda configurado para: alocar um identificador para um conjunto de solicitações de escrita de dados armazenada, e enviar o identificador do conjunto de solicitações de escrita de dados para o nó de cálculo de verificação. Então, o nó de dados cria e armazena metadados. Os metadados incluem uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno. Na presente invenção, solicitações de escrita de dados de um mesmo tipo são armazenadas como um conjunto de Wtdusfr'β/ - k/O 12/60 & — , CL TO Rub — cdz c solicitações de escrita de dados em um nó de dados. Portanto, xa^ metadados relacionados ao conjunto de solicitações de escrita de dados também são armazenados localmente no nó de dados. Se uma operação como coleta de lixo for realizada no conjunto de solicitações de escrita de dados subsequentemente, os metadados podem ser diretamente modificados localmente.
[0015] Com referência à segunda implementação do quarto aspecto, em uma terceira implementação do quarto aspecto, o sistema de armazenamento inclui ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados. O nó de dados é ainda configurado para: ao determinar que metadados acumulados atingem a quantidade de dados predefinida, enviar um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados. O conjunto de metadados inclui os metadados acumulados que atingem a quantidade de dados predefinida. O nó de cálculo de verificação de metadados é configurado para: receber um conjunto de metadados e um identificador de cada nó de dados que são enviados pelo nó de dados, e armazenar uma correspondência entre cada conjunto de metadados e um identificador de nó de dados. Além disso, o nó de cálculo de verificação de metadados seleciona a quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência. A quantidade especificada de conjuntos de metadados corresponde a diferentes identificadores de nó de dados. O nó de cálculo de verificação de metadados calcula dados de verificação da quantidade especificada de conjuntos de metadados, e envia os dados de verificação da quantidade 13/60 /F(S iG ff O n O « Rub AA_z Ç ■° — - c> % XC? especificada de conjuntos de metadados para o nó de / X3<^C verificação de metadados. 0 nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados. Portanto, de acordo com o sistema de armazenamento fornecido na presente invenção, confiabilidade de um conjunto de metadados armazenado em cada nó de dados é assegurada.
[0016] Com referência à segunda implementação do quarto aspecto, em uma quarta implementação do quarto aspecto, o sistema de armazenamento inclui ainda um nó de coleta de lixo. 0 nó de cálculo de verificação é ainda configurado para alocar um identificador para uma faixa. A faixa inclui a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. Em seguida, o nó de cálculo de verificação envia uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa para o nó de coleta de lixo. Cada nó de dados é ainda configurado para enviar um mapa de bits armazenado de um conjunto de solicitações de escrita de dados para o nó de coleta de lixo. 0 mapa de bits é usado para indicar uma quantidade de dados inválidos no conjunto de solicitações de escrita de dados. O nó de coleta de lixo é configurado para: selecionar, a partir de múltiplas faixas de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados incluido na faixa e de acordo com um mapa de bits de cada conjunto de solicitações de escrita de dados, uma faixa incluindo uma maior quantidade de dados inválidos, e enviar uma mensagem de notificação de coleta de lixo parade / x3^ um nó de dados no qual cada conjunto de solicitações de escrita de dados incluido na faixa é localizado. Cada mensagem de notificação de coleta de lixo inclui um identificador de um conjunto de solicitações de escrita de dados. O nó de coleta de lixo seleciona uma faixa incluindo dados inválidos para executar uma operação de coleta de lixo sistemática. Portanto, eficiência de coleta de lixo sistemática é melhorada.
[0017] Com referência à quarta implementação do quarto aspecto, em uma quinta implementação do quarto aspecto, após receber a mensagem de notificação de coleta de lixo, o nó de dados executa uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados. Especificamente, o nó de dados determina um conjunto de solicitações de escrita de dados recuperado de acordo com o identificador do conjunto de solicitações de escrita de dados. Em seguida, o nó de dados determina, de acordo com o mapa de bits do conjunto de solicitações de escrita de dados, um endereço lógico no qual dados válidos incluidos no conjunto de solicitações de escrita de dados devem ser escritos, remove uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e o identificador do conjunto de solicitações de escrita de dados, e armazena uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e um identificador de um conjunto de solicitações de escrita de dados recombinado. Em seguida, xcò'jatr,a' O. £ /J Çc Rut) o nó de dados envia um endereço lógico de disco rigido do conjunto de solicitações de escrita de dados para urn disco de estado sólido, e o disco de estado sólido registra blocos correspondentes ao endereço lógico de disco rigido como inválidos. Ao realizar a coleta de lixo interna subsequentemente, o disco de estado sólido pode apagar diretamente estes blocos, e não precisa replicar os dados válidos. Portanto, uma quantidade de tempos de amplificação de escrita realizada internamente no disco de estado sólido é reduzida. Além disso, a coleta de lixo sistemática fornecida na presente invenção significa que cada nó de dados combina dados válidos em outro conjunto de solicitações de escrita de dados local. Portanto, o nó de dados independentemente completa a coleta de lixo sistemática e não precisa trocar dados com outro nó de dados, assim, economizando largura de banda entre os nós de dados.
[0018] Um quinto aspecto da presente invenção fornece um método de verificação de dados, aplicado ao sistema de armazenamento do quarto aspecto ou qualquer implementação do quarto aspecto.
[0019] Um sexto aspecto da presente invenção fornece um sistema de armazenamento. 0 sistema de armazenamento inclui um hospedeiro, um nó de cálculo de verificação, e múltiplos nós de dados. Cada nó de dados tem um identificador exclusivo. 0 hospedeiro envia múltiplas solicitações de escrita de dados geradas para o nó de cálculo de verificação. Cada conjunto de solicitações de escrita de dados inclui uma ou mais solicitações de escrita de dados tendo um mesmo identificador de nó de dados. Cada solicitação de escrita de dados inclui dados, um endereço lógico no qual os dados devem / Fls QZ § identificador de um nó de dados no quafe^ escritos. O nó de dados no qual os dados é selecionado pelo hospedeiro de acordo com os dados ou o endereço lógico; ou o nó de dados no qual os dados devem ser escritos pode nào ser selecionado pelo hospedeiro, mas é especificado diretamente por um usuário quando uma solicitação de escrita de dados é acionada no hospedeiro. O nó de cálculo de verificação é configurado para agrupar múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluidos nas solicitações de escrita de dados. Quando um tamanho de todas as solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, o nó de cálculo de verificação calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. A quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados. O nó de cálculo de verificação envia cada da quantidade especificada de conjuntos de solicitações de escrita de dados para um nó de dados indicado por um identificador de nó de dados incluido no conjunto de solicitações de escrita de dados. O nó de cálculo de verificação armazena os dados de verificação.
[0020] De acordo com o sistema de armazenamento fornecido na presente invenção, um nó de cálculo de verificação agrupa múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de incluidos nas solicitações de escrita de dados. Quando tamanhos de todas as solicitações de escrita de dados em uma quantidade especificada de conjuntos de solicitações de escrita de dados atingem uma quantidade de dados predefinida, o nó de cálculo de verificação calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, e envia os dados de verificação para um nó de verificação para armazenamento. Portanto, confiabilidade de dados é assegurada. Cada conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados a serem escritas em um mesmo nó de dados, e um nó de dados no qual cada solicitação de escrita de dados deve ser escrita é selecionado pelo hospedeiro de acordo com os dados na solicitação de escrita de dados ou um endereço lógico, na solicitação de escrita de dados, no qual os dados devem ser escritos. Portanto, cada conjunto de solicitações de escrita de dados inclui solicitações de escrita de dados de um mesmo tipo. Depois de calcular os dados de verificação, o nó de cálculo de verificação envia cada conjunto de solicitações de escrita de dados para um nó de dados indicado por um identificador incluido no conjunto de solicitações de escrita de dados. Desta forma, as solicitações de escrita de dados do mesmo tipo são armazenadas em um mesmo nó de dados. Existe uma possibilidade relativamente alta de leitura simultânea de dados nas solicitações de escrita de dados do mesmo tipo. Portanto, os dados podem ser lidos a partir de um nó de dados, e uma operação de leitura de nó cruzado não precisa ser realizada, melhorando assim a eficiência de leitura de dados. Ae\oü^str/S/ 18/60 j CL %
[0021] Com referência ao sexto aspecto, em uma ' XW*' primeira implementação do sexto aspecto, o nó de cálculo de verificação é ainda configurado para: alocar um identificador para cada solicitação de escrita de dados na quantidade especificada de conjuntos de solicitações de escrita de dados, e enviar o identificador de cada conjunto de solicitações de escrita de dados para o nó de dados indicado pelo identificador do nó de dados incluido no conjunto de solicitações de escrita de dados. O nó de dados é configurado para receber um conjunto de solicitações de escrita de dados e um identificador do conjunto de solicitações de escrita de dados. O nó de dados é ainda configurado para criar e armazenar metadados. Os metadados incluem uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno. Na presente invenção, solicitações de escrita de dados de um mesmo tipo são armazenadas como um conjunto de solicitações de escrita de dados em um nó de dados. Portanto, metadados relacionados ao conjunto de solicitações de escrita de dados também são armazenados localmente no nó de dados. Se uma operação como coleta de lixo for realizada no conjunto de solicitações de escrita de dados subsequentemente, os metadados podem ser diretamente modificados localmente.
[0022] Com referência à primeira implementação do sexto aspecto, em uma segunda implementação do sexto aspecto, o sistema de armazenamento inclui ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados. 0 nó de dados é ainda configurado para: ao determinar que metadados acumulados atingem a quantidade de dados predefinida, enviar um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados. 0 conjunto de metadados inclui os metadados acumulados que atingem a quantidade de dados predefinida. O nó de cálculo de verificação de metadados é configurado para: receber um conjunto de metadados e um identificador de cada dos múltiplos nós de dados, onde o conjunto de metadados e o identificador são enviados pelo nó de dados, armazenar uma correspondência entre cada conjunto de metadados e um identificador de nó de dados, e selecionar uma quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência. A quantidade especificada de conjuntos de metadados selecionados são correspondentes a diferentes identificadores de nó de dados. O nó de cálculo de verificação de metadados é ainda configurado para calcular dados de verificação da quantidade especificada de conjuntos de metadados selecionados. Então, o nó de cálculo de verificação de metadados envia os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados. 0 nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados. Portanto, de acordo com o sistema de armazenamento fornecido na presente invenção, confiabilidade de um conjunto de armazenado em cada nó de dados é assegurada.
[0023] sexto aspecto, em uma terceira implementação do sexto aspecto, o sistema de armazenamento inclui ainda um nó de coleta de lixo. O nó de coleta de lixo é configurado para executar uma operação de coleta de lixo sistemática. Especificamente, o nó de coleta de lixo seleciona, a partir de múltiplas faixas de acordo com uma correspondência entre um identificador de uma faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa e de acordo com um mapa de bits de um conjunto de solicitações de escrita de dados, uma faixa incluindo uma maior quantidade de dados inválidos, onde a correspondência é enviada pelo nó de cálculo de verificação, e o mapa de bits é enviado pelo nó de dados. Na presente invenção, a faixa inclui a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação calculados de acordo com estes conjuntos de solicitações de escrita de dados. Na presente invenção, o mapa de bits é utilizado para indicar uma quantidade de dados de dados inválidos compreendidos no conjunto de solicitações de escrita de dados. O nó de coleta de lixo usa a faixa incluindo a maior quantidade de dados inválidos como uma faixa a ser recuperada, e envia uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados incluido na faixa a ser recuperada é localizado. Cada mensagem de notificação de coleta de lixo é usada para instruir o nó de dados para executar a coleta de lixo sistemática. Cada mensagem de notificação de coleta de lixo inclui um identificador de um conjunto de solicitações de escrita de dados. O nó de coleta executar uma operação de coleta de lixo sistemática. Portanto, eficiência de coleta de lixo sistemática é melhorada.
[0024] Com referência à terceira implementação do sexto aspecto, em uma quarta implementação do sexto aspecto, após receber a mensagem de notificação de coleta de lixo, o nó de dados realiza uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados. Especificamente, o nó de dados determina um conjunto de solicitações de escrita de dados recuperado de acordo com o identificador do conjunto de solicitações de escrita de dados. Em seguida, o nó de dados determina, de acordo com o mapa de bits do conjunto de solicitações de escrita de dados, um endereço lógico no qual dados válidos incluidos no conjunto de solicitações de escrita de dados devem ser escritos, remove uma correspondência entre o endereço lógico no qual os dados válido devem ser escritos e o identificador do conjunto de solicitações de escrita de dados, e armazena uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e um identificador de um conjunto de solicitações de escrita de dados recombinado. Em seguida, o nó de dados envia um endereço lógico de disco rigido do conjunto de solicitações de escrita de dados para um disco de estado sólido, e o disco de estado sólido registra blocos correspondentes ao endereço lógico de disco rigido como inválidos. Ao executar coleta de lixo interna 22/60 blocos, e não precisa replicar os dados válidos. Portanto, uma quantidade de tempos de amplificação de escrita realizada internamente no disco de estado sólido é reduzida. Além disso, a coleta de lixo sistemática fornecida na presente invenção significa que cada nó de dados combina dados válidos em outro conjunto de solicitações de escrita de dados local. Portanto, o nó de dados independentemente completa a coleta de lixo sistemática e não precisa trocar dados com outro nó de dados, assim, economizando largura de banda entre os nós de dados.
[0025] Um sétimo aspecto da presente invenção fornece um método de verificação de dados, aplicado a um sistema de armazenamento do sexto aspecto ou qualquer implementação do sexto aspecto. BREVE DESCRIÇÃO DOS DESENHOS
[0026] Para descrever mais claramente as soluções técnicas nas modalidades da presente invenção, o seguinte descreve brevemente os desenhos anexos necessários para as modalidades.
[0027] A Figura 1 é um diagrama de composição de um sistema de armazenamento de acordo com uma modalidade da presente invenção;
[0028] A Figura 2 é um diagrama estrutural de um hospedeiro de acordo com uma modalidade da presente invenção;
[0029] A Figura 3 é um diagrama estrutural de um arranjo de memória flash de acordo com uma modalidade da presente invenção;
[0030] A Figura 4 é um fluxograma esquemático de um método de verificação de dados de acordo com uma modalidade da presente invenção; A Figura 5 é um fluxograma esquemático de outro método de verificação de dados de acordo com uma modalidade da presente invenção; A Figura 6 é um fluxograma esquemático de outro método de verificação de dados de acordo com uma modalidade da presente invenção; e A Figura 7 é um fluxograma esquemático de um método de coleta de lixo sistemática de acordo com uma modalidade da presente invenção. DESCRIÇÃO DE MODALIDADES As modalidades da presente invenção fornecem um método de verificação de dados e um sistema de armazenamento, de modo que, em adição a garantir a confiabilidade de dados, dados de um mesmo tipo podem ser armazenados em um mesmo nó de armazenamento e os dados podem ser lidos a partir de apenas um nó de armazenamento, melhorando assim a eficiência de leitura de dados.
[0031] A Figura 5 é um fluxograma esquemático de outro método de verificação de dados de acordo com uma modalidade da presente invenção;
[0032] A Figura 6 é um fluxograma esquemático de outro método de verificação de dados de acordo com uma modalidade da presente invenção; e
[0033] A Figura 7 é um fluxograma esquemático de um método de coleta de lixo sistemática de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DE MODALIDADES
[0034] As modalidades da presente invenção fornecem um método de verificação de dados e um sistema de armazenamento, de modo que, em adição a garantir a confiabilidade de dados, dados de um mesmo tipo podem ser armazenados em um mesmo nó de armazenamento e os dados podem ser lidos a partir de apenas um nó de armazenamento, melhorando assim a eficiência de leitura de dados.
[0035] A Figura 1 mostra um diagrama de composição de um sistema de armazenamento 10 de acordo com uma modalidade da presente invenção. O sistema de armazenamento 10 mostrado na Figura 1 inclui um hospedeiro 11 e múltiplos nós de armazenamento 22. A Figura 1 é meramente usada como um exemplo para a descrição, mas não limita um modo de rede especifico, como rede de árvore em cascata ou rede de anel, desde que o hospedeiro 11 possa se comunicar com os nós de armazenamento 22.
[0036] O hospedeiro 11 pode incluir qualquer dispositivo de computação, como um servidor ou um computador de mesa. Um usuário pode acionar uma instrução de leitura ou ^à'j5tna/ 0 & % 24/60 / Q.- g PIS p (X -A k Z to Rut vA~r escrita usando o hospedeiro 11, e enviar uma solicitação d'fe^ / escrita de dados ou uma solicitação de leitura de dados para os nós de armazenamento 22. Nesta modalidade, o hospedeiro 11 pode se comunicar com qualquer nó de armazenamento 22, e quaisquer dois nós de armazenamento 22 também podem se comunicar entre si.
[0037] Como mostrado na Figura 2, um hospedeiro 11 inclui principalmente um processador 118, um cache 120, uma memória 122, um barramento de comunicações (barramento para abreviar) 126 e uma interface de comunicação 128. O processador 118, o cache 120, a memória 122 e a interface de comunicações 128 implementam comunicação mútua, utilizando o barramento de comunicações 126.
[0038] A interface de comunicação 128 é configurada para se comunicar com um nó de armazenamento 22.
[0039] A memória 122 é configurada para armazenar um programa 124. A memória 122 pode incluir uma memória RAM de alta velocidade e pode incluir ainda uma memória não volátil, por exemplo, pelo menos uma memória de disco magnético. Pode ser entendido que a memória 122 pode ser qualquer meio legivel por máquina que pode armazenar o código de programa, como uma memória de acesso aleatório (RAM), um disco magnético, um disco rigido, um disco de estado sólido (SSD) ou uma memória não volátil.
[0040] O programa 124 pode incluir código de programa.
[0041] O cache 120 é configurado para armazenar dados de cache recebidos de um servidor de aplicação 10 ou dados lidos a partir do nó de armazenamento 22. O cache 120 pode ser qualquer meio legivel por máquina que pode armazenar  dados, como uma RAM, uma ROM, uma memória flash, ou um disco de estado sólido (SSD). Isto não se limita aqui.
[0042] Além disso, a memória 122 e o cache 120 podem ser integrados em conjunto ou armazenados separadamente, e isto não é limitado nesta modalidade da presente invenção.
[0043] O processador 118 pode ser uma unidade de processamento central (CPU), e é configurado para gerar e processar uma solicitação de escrita de dados e similares.
[0044] O nó de armazenamento 22 pode ser uma matriz de disco, uma matriz de memória flash, ou um servidor de armazenamento. A matriz de disco é um dispositivo de armazenamento que inclui pelo menos um controlador e vários discos. A matriz de memória flash é um dispositivo de armazenamento que inclui pelo menos um controlador e múltiplos discos de estado sólido (SSD). Um disco de estado sólido é uma memória que usa um chip de memória flash como meio de armazenamento, e também é chamado de unidade de estado sólido (SSD). Além disso, o nó de armazenamento 22 pode ainda ser um servidor de armazenamento, e o servidor de armazenamento inclui, pelo menos, um disco de estado sólido.
[0045] A matriz de memória flash é usada como exemplo. Como mostrado na Figura 3, o nó de armazenamento 22 inclui um controlador 221 e um ou mais discos de estado sólido 222. 0 controlador 221 inclui pelo menos uma interface 223, uma interface 224, um processador 225 e uma memória 226.
[0046] A interface 223 é configurada para se comunicar com o hospedeiro 11. A interface 224 é configurada para se comunicar com o disco de estado sólido 222. O processador 225 pode ser uma unidade de processamento central O processador 225 é configurado para: receber uma solicitação de escrita de dados ou uma solicitação de leitura de dados a partir do hospedeiro 11, e processar a solicitação de escrita de dados ou a solicitação de leitura de dados. O processador 225 pode ainda enviar dados na solicitação de escrita de dados para o disco de estado sólido 222.
[0047] O processador 225 é configurado para: receber uma solicitação de escrita de dados ou uma solicitação de leitura de dados a partir do hospedeiro 11, e processar a solicitação de escrita de dados ou a solicitação de leitura de dados. O processador 225 pode ainda enviar dados na solicitação de escrita de dados para o disco de estado sólido 222.
[0048] A memória 226 é configurada para armazenar um programa. Além disso, a memória 226 é ainda configurada para armazenar temporariamente a solicitação de escrita de dados recebida do hospedeiro 11 ou dados lidos a partir do disco de estado sólido 222. Depois de receber múltiplas solicitações de escrita de dados enviadas pelo hospedeiro, o controlador 221 pode armazenar temporariamente as múltiplas solicitações de escrita de dados para a memória 226. Quando um tamanho das múltiplas solicitações de escrita de dados atinge uma quantidade de dados predefinida, as múltiplas solicitações de escrita de dados armazenadas na memória 226 são enviadas para um nó de cálculo de verificação. A memória 226 inclui uma memória de acesso aleatório (inglês: random-access memory, RAM). Opcionalmente, a memória 226 inclui ainda uma memória não volátil (inglês: non-volatile memory), por exemplo, pelo menos uma memória magnética. Pode ser entendido que a memória 226 pode ser qualquer meio legivel por máquina que pode armazenar o código de programa, como uma memória de acesso aleatório (Random-Access Memory, RAM), um disco magnético, um disco rigido, um disco de estado sólido (Solid State Disk, SSD), ou uma memória não volátil.
[0049] Em múltiplos nós de armazenamento nesta modalidade, um nó de armazenamento configurado para armazenar uma solicitação de escrita de dados enviada pelo hospedeiro 11 é referido como um nó de dados; um nó de armazenamento configurado para calcular dados de verificação de múltiplas solicitações de escrita de dados é designado como um nó de cálculo de verificação; um nó de armazenamento configurado para armazenar os dados de verificação das múltiplas solicitações de escrita de dados é referido como um nó de verificação; um nó de armazenamento configurado para calcular dados de verificação de metadados é referido como um nó de cálculo de verificação de metadados; e um nó configurado para executar a coleta de lixo sistemática é referido como um nó de coleta de lixo. No entanto, essa divisão não é absoluta. Por exemplo, o nó de verificação armazenando os dados de verificação também pode ser usado como o nó de dados para armazenar a solicitação de escrita de dados.
[0050] A presente invenção fornece pelo menos dois cenários de aplicação. Em um cenário de aplicação, o hospedeiro 11 tem uma função de cálculo de dados de verificação de múltiplas solicitações de escrita de dados. Por exemplo, o hospedeiro 11 agrupa as múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com identificadores, incluidos nas solicitações de escrita de dados, de nós de dados nos quais dados devem ser escritos. Cada conjunto inclui solicitações de escrita de dados a serem escritas em um mesmo nó de dados. Quando tamanhos de todas as solicitações de escrita de dados em alguns ou em todos os conjuntos atingem uma quantidade de dados predefinida, o hospedeiro 11 calcula os dados de verificação desses conjuntos de solicitações de escrita de dados.
[0051] Em outro cenário de aplicação, o hospedeiro 11 não tem uma função de cálculo de dados de verificação de múltiplas solicitações de escrita de dados, e uma operação de cálculo dos dados de verificação é implementada por um nó de cálculo de verificação em nós de armazenamento. O hospedeiro 11 envia cada solicitação de escrita de dados para um nó de dados de acordo com um identificador do nó de dados no qual dados transportados na solicitação de escrita de dados devem ser escritos. Cada nó de dados recebe as múltiplas solicitações de escrita de dados enviadas pelo hospedeiro 11. Quando um tamanho de um conjunto de solicitações de escrita de dados (o conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados) atinge uma quantidade de dados predefinida, o nó de dados envia o conjunto de solicitações de escrita de dados para o nó de cálculo de verificação, e o nó de cálculo de verificação calcula dados de verificação de múltiplos conjuntos de solicitações de escrita de dados.
[0052] O seguinte discute separadamente um método de verificação de dados com base nos dois cenários de aplicação anteriores.
[0053] A Figura 4 é um fluxograma de um método de verificação de dados aplicado a um primeiro cenário. Como mostrado na Figura 4, o método inclui os seguintes passos. Por exemplo, o passo S101 ao passo S104 podem ser realizados por um processador 118 em um hospedeiro 11.
[0054] S101, o hospedeiro 11 gera múltiplas solicitações de escrita de dados, onde cada solicitação de escrita de dados inclui dados, um identificador de um nó de dados no qual os dados devem ser escritos, e um endereço lógico no qual os dados devem ser escritos. O endereço lógico no qual os dados devem ser escritos inclui um identificador de uma unidade lógica, um endereço de bloco lógico (LBA), e um comprimento. O identificador da unidade lógica é usado para indicar que a unidade lógica na qual os dados devem ser escritos. O endereço de bloco lógico é usado para indicar um local em que os dados estão localizados na unidade de lógica. 0 comprimento indica um tamanho dos dados. O identificador do nó de dados no qual os dados devem ser escritos é usado para indicar o nó de dados no qual os dados devem ser escritos. O nó de dados no qual os dados devem ser escritos é selecionado pelo hospedeiro 11 a partir de múltiplos nós de dados em um sistema de armazenamento 10 de acordo com os dados ou o endereço lógico no qual os dados devem ser escritos.
[0055] Especificamente, primeiro, o hospedeiro 11 pré-coleta informação sobre os nós de dados no sistema de armazenamento 10. A informação sobre os nós de dados inclui uma quantidade de nós de dados incluidos no sistema de armazenamento 10 e um identificador de cada nó de dados. Um identificador de um nó de dados é usado para identificar de maneira exclusiva o nó de dados. Por exemplo, o sistema de armazenamento 10 inclui cinco nós de dados, e identificadores dos nós de dados são respectivamente A, B, C, D e E. O hospedeiro 11 pode enviar uma solicitação de consulta para cada nó de dados para obter um identificador do nó de dados, ou cada nó de dados pode proativamente relatar um 30/60 identificador do nó de dados para o hospedeiro 11. Em alternativa, um nó primário pode ser especificado no sistema de armazenamento 10, e o nó primário coleta identificadores dos nós de dados e reporta os identificadores dos nós de dados para o hospedeiro 11.
[0056] Então, o hospedeiro 11 determina o nó de dados no qual os dados devem ser escritos. Em uma implementação, o hospedeiro 11 determina, de acordo com o endereço lógico no qual os dados devem ser escritos, o nó de dados no qual os dados devem ser escritos. Por exemplo, o hospedeiro 11, utiliza o endereço lógico, incluido em cada solicitação de escrita de dados, no qual os dados devem ser escritos como uma entrada de entrada, e obtém um valor de hash, utilizando um algoritmo de hash predefinido. 0 valor de hash corresponde exclusivamente a um identificador de um nó de dados. Além disso, o hospedeiro 11 pode ainda determinar o identificador do nó de dados usando um algoritmo de hash ou uma operação restante. Um algoritmo para determinar o identificador do nó de dados não é limitado nesta modalidade, desde que um identificador de um nó de dados possa ser determinado de forma única de acordo com o endereço lógico. Em outra implementação, o hospedeiro 11 determina, de acordo com os dados, o nó de dados no qual os dados devem ser escritos. Por exemplo, o hospedeiro 11 usa os dados como uma entrada de entrada e obtém um valor de hash usando um algoritmo de hash predefinido. O valor de hash corresponde exclusivamente a um identificador de um nó de dados. Do mesmo modo, o hospedeiro 11 pode ainda determinar o identificador do nó de dados usando um algoritmo de hash ou uma operação restante. Ainda em outra implementação, o hospedeiro 11 classifica as usuários que acionam as solicitações de escrita de dados e seleciona um mesmo nó de dados para solicitações de escrita de dados acionadas por um mesmo usuário. Alternativamente, o hospedeiro 11 pode classificar estas solicitações de escrita de dados de acordo com um tipo de dados, e selecionar um mesmo nó de dados para dados de um mesmo tipo.
[0057] Depois de selecionar o nó de dados para os dados, o hospedeiro 11 escreve o identificador do nó de dados em uma solicitação de escrita de dados transportando os dados. O identificador do nó de dados pode estar localizado em um cabeçalho da solicitação de escrita de dados, ou pode ser uma carga útil (inglês: payload) da solicitação de escrita de dados.
[0058] Ao acionar as múltiplas solicitações de escrita de dados no hospedeiro 11, um usuário envia uma instrução para o hospedeiro 11 para requerer que estas solicitações de escrita de dados sejam escritas em um mesmo nó de dados. O hospedeiro 11 pode selecionar um nó de dados para estas solicitações de escrita de dados de acordo com a exigência de usuário, e adicionar um identificador do nó de dados a cada solicitação de escrita de dados.
[0059] Um identificador de um nó de dados em cada solicitação de escrita de dados é alocado pelo hospedeiro 11 de acordo com dados ou um endereço lógico no qual os dados devem ser escritos, onde os dados ou o endereço lógico são incluidos na solicitação de escrita de dados. Portanto, as solicitações de escrita de dados tendo um mesmo identificador são solicitações de escrita de dados de um mesmo tipo. Existe uma possibilidade relativamente alta de leitura simultânea
[0060] S102, o hospedeiro agrupa as múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluidos nas solicitações de escrita de dados, onde cada conjunto inclui múltiplas solicitações de escrita de dados tendo um mesmo identificador de nó de dados.
[0061] Deve ser notado que, em uma implementação real, as múltiplas solicitações de escrita de dados não precisam ser armazenadas em locais diferentes. O "agrupamento" aqui é apenas lógico, e as múltiplas solicitações de escrita de dados são classificadas de acordo com diferentes identificadores de nó de dados. Por exemplo, múltiplas solicitações de escrita de dados em um conjunto de solicitações de escrita de dados incluem um identificador de um nó de dados A, múltiplas solicitações de escrita de dados em outro conjunto de solicitações de escrita de dados incluem um identificador de um nó de dados B, e múltiplas solicitações de escrita de dados em outro ainda conjunto de solicitações de escrita de dados incluem um identificador de um nó de dados C.
[0062] S103, Quando um tamanho de todas as solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, o hospedeiro 11 calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados.
[0063] Geralmente, o sistema de armazenamento 10 inclui múltiplos nós de dados. Correspondentemente, o hospedeiro 11 também tem múltiplos conjuntos de solicitações de escrita de dados. À medida que as solicitações de escrita de dados geradas aumentam, um tamanho de cada conjunto de solicitações de escrita de dados está sendo acumulado. O hospedeiro 11 precisa selecionar a quantidade especificada de conjuntos de solicitações de escrita de dados a partir de conjuntos de solicitações de escrita de dados cujos tamanhos atingem a quantidade de dados predefinida, e calcular os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. A quantidade de dados predefinida é predefinida, por exemplo, 16 KB. A quantidade especificada é determinada de acordo com um modo de verificação predefinido pelo sistema de armazenamento 10.
[0064] O modo de verificação predefinido inclui um modo 5 + 1, um modo 6 + 2 ou similar. No modo 5 + 1, uma parte de dados de verificação é gerada de acordo com cinco conjuntos de solicitações de escrita de dados. No modo de 6 + 2, duas partes de dados de verificação são geradas de acordo com seis conjuntos de solicitações de escrita de dados. O modo 5 + 1 é usado como exemplo. O hospedeiro 11 seleciona cinco conjuntos de solicitações de escrita de dados de múltiplos conjuntos de solicitações de escrita de dados cujos tamanhos atingem a quantidade de dados predefinida e, em seguida, calcula dados de verificação dos cinco conjuntos de solicitações de escrita de dados. Os cinco conjuntos de solicitações de escrita de dados e os dados de verificação formam uma faixa (inglês: stripe). O conjunto de solicitações de escrita de dados cujo tamanho atinge a quantidade de dados predefinida é uma unidade de dados da faixa.
[0065] S104, o hospedeiro 11 envia cada da quantidade Austria/ Z L '' 34/60 p ~~ CL » g Rub % c£ especificada de conjuntos de solicitações de escrita de dados > x3<^' para um nó de dados indicado por um identificador incluido no conjunto de solicitações de escrita de dados.
[0066] Pode ser aprendido a partir do exposto acima que todas as solicitações de escrita de dados em cada conjunto de solicitações de escrita de dados incluem um mesmo identificador de nó de dados e, portanto, o hospedeiro pode enviar, de acordo com o identificador, cada conjunto de solicitações de escrita de dados para um nó de dados indicado pelo identificador.
[0067] S105, o hospedeiro 11 seleciona um nó de armazenamento a partir de um sistema de armazenamento 10, para armazenar os dados de verificação, e envia os dados de verificação para o nó de armazenamento selecionado, em que o nó de armazenamento configurado para armazenar os dados de verificação é diferente a partir de um nó de dados no qual cada conjunto de solicitações de escrita de dados incluido em uma faixa é localizado. Para facilitar a descrição, o nó de armazenamento armazenando os dados de verificação é referido como um nó de verificação.
[0068] O hospedeiro 11 pode selecionar um ou mais nós de armazenamento a partir dos nós de armazenamento restantes (exceto o nó de dados configurado para armazenar o conjunto de solicitações de escrita de dados) para armazenar os dados de verificação. Geralmente, um conjunto de solicitações de escrita de dados e dados de verificação em uma faixa não podem ser armazenados em um mesmo nó de armazenamento. Isto destina-se a prevenir que tanto o conjunto de solicitações de escrita de dados e os dados de verificação são perdidos quando uma falha ocorre no nó de armazenamento. No entanto, em uma aplicação real, múltiplas faixas podem ser geralmente construídas no hospedeiro 11. Um nó de armazenamento selecionado configurado para armazenar dados de verificação em uma faixa não pode ser um nó de armazenamento armazenando um conjunto de solicitações de escrita de dados na faixa, mas pode ser um nó de armazenamento armazenando um conjunto de solicitações de escrita de dados em outra faixa. Nesta modalidade, um nó de armazenamento não se limita a ser dedicado para armazenar o conjunto de solicitações de escrita de dados ou dados de verificação.
[0069] Além disso, o hospedeiro 11 aloca um identificador de faixa para cada faixa. Diferentes faixas têm diferentes identificadores de faixa. Além disso, o hospedeiro aloca identificadores para conjuntos de solicitações de escrita de dados e verifica dados que estão incluídos em cada faixa, e envia um identificador de um conjunto de solicitações de escrita de dados para um nó de dados no qual o conjunto de solicitações de escrita de dados é localizado. 0 hospedeiro 11 registra uma correspondência entre um identificador de faixa de cada faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa e uma correspondência entre o identificador de faixa e um identificador de dados de verificação.
[0070] De acordo com o método de verificação de dados mostrado na Figura 4, um hospedeiro 11 agrupa múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluídos nas solicitações de escrita de dados. Quando tamanhos de todas as solicitações de escrita de dados em uma quantidade especificada de conjuntos de solicitações de escrita de dados atingem uma quantidade de dados predefinida, o hospedeiro 11 calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, e envia os dados de verificação para um nó de verificação para armazenamento. Portanto, confiabilidade de dados é assegurada. Cada conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados a serem escritas em um mesmo nó de dados, e um nó de dados no qual cada solicitação de escrita de dados deve ser escrita é selecionado pelo hospedeiro de acordo com dados na solicitação de escrita de dados ou um endereço lógico, na solicitação de escrita de dados, no qual os dados devem ser escritos. Portanto, cada conjunto de solicitações de escrita de dados inclui solicitações de escrita de dados de um mesmo tipo. Depois de calcular os dados de verificação, o hospedeiro 11 envia cada conjunto de solicitações de escrita de dados para um nó de dados indicado por um identificador incluido no conjunto de solicitações de escrita de dados. Desta forma, as solicitações de escrita de dados do mesmo tipo são armazenadas em um mesmo nó de dados. Existe uma possibilidade relativamente alta de leitura simultânea de dados nas solicitações de escrita de dados do mesmo tipo. Portanto, os dados podem ser lidos a partir de um nó de dados, e uma operação de leitura de nó cruzado não precisa ser realizada, melhorando assim a eficiência de leitura de dados.
[0071] O método de verificação de dados aplicado ao primeiro cenário tem outra implementação. Uma diferença entre esta implementação e a implementação mostrada na Figura 4 é a seguinte: Nesta implementação, um nó de cálculo de verificação agrupa múltiplas solicitações de escrita de dados recebidas em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluídos nas solicitações de escrita de dados, e calcula os dados de verificação quando tamanhos de uma quantidade especificada de conjuntos de solicitações de escrita de dados atingem uma quantidade de dados predefinida. Essas operações são realizadas pelo hospedeiro 11 na implementação mostrada na Figura 4. Especificamente, como mostrado na Figura 5, o método de verificação de dados pode ser implementado nos seguintes passos.
[0072] S401, Este passo é similar ao passo S101 mostrado na Figura 4, e os detalhes não são repetidos aqui.
[0073] S402, o hospedeiro 11 envia as solicitações de escrita de dados geradas para um nó de cálculo de verificação.
[0074] S403, o nó de cálculo de verificação agrupa as múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluídos nas solicitações de escrita de dados, onde cada conjunto inclui múltiplas solicitações de escrita de dados tendo um mesmo identificador de nó de dados. Uma diferença entre este passo e o passo S102 na Figura 4 é que este passo é executado pelo nó de cálculo de verificação. Uma parte restante é semelhante ao passo S102 mostrado na Figura 4, e detalhes não são repetidos solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, o nó de cálculo de verificação calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. Uma diferença entre este passo e o passo S103 na Figura 4 é que este passo é executado pelo nó de cálculo de verificação. Uma parte restante é semelhante ao passo S103 mostrado na Figura 4, e os detalhes não são repetidos aqui.
[0075] S404, Quando um tamanho de todas as solicitações de escrita de dados em cada de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, o nó de cálculo de verificação calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. Uma diferença entre este passo e o passo 5103 na Figura 4 é que este passo é executado pelo nó de cálculo de verificação. Uma parte restante é semelhante ao passo S103 mostrado na Figura 4, e os detalhes não são repetidos aqui.
[0076] S405, o nó de cálculo de verificação envia cada da quantidade especificada de conjuntos de solicitações de escrita de dados para um nó de dados indicado por um identificador incluido no conjunto de solicitações de escrita de dados. Uma diferença entre este passo e o passo S104 na Figura 4 é que este passo é executado pelo nó de cálculo de verificação. Uma parte restante é semelhante ao passo S104 mostrado na Figura 4, e os detalhes não são repetidos aqui.
[0077] Depois de calcular os dados de verificação, o nó de cálculo de verificação pode armazenar diretamente os dados de verificação localmente e não precisa encaminhar os dados de verificação para outro nó de armazenamento para armazenamento. Se mais de uma parte de dados de verificação for calculada de acordo com um modo de verificação predefinido, o nó de cálculo de verificação pode selecionar um nó de armazenamento a partir de um sistema de armazenamento 10 para armazenar outra parte de dados de verificação. Uma maneira de seleção é semelhante à do passo S105 mostrado na Figura 4, e os detalhes não são repetidos aqui. A Figura 6 é um fluxograma de um método de verificação ^ÔUStria/ r>, & I 39/60 /n, % o “ £2 co Ruô Q -e —— Q c;Ç> de dados aplicado a um segundo cenário. Como mostrado na ; Figura 6, o método inclui os seguintes passos.
[0078] S201, Um hospedeiro 11 gera múltiplas solicitações de escrita de dados, onde cada solicitação de escrita de dados inclui dados, um identificador de um nó de dados no qual os dados devem ser escritos, e um endereço lógico no qual os dados devem ser escritos. O conteúdo do passo S201 é semelhante ao do passo S101 no método mostrado na Figura 4, e os detalhes não são repetidos aqui.
[0079] S202, o hospedeiro 11 envia cada solicitação de escrita de dados para um nó de dados indicado pelo identificador, incluído na solicitação de escrita de dados, do nó de dados no qual os dados devem ser escritos.
[0080] S203, O nó de dados recebe as múltiplas solicitações de escrita de dados enviadas pelo hospedeiro 11, e escreve as solicitações de escrita de dados em uma memória 226. Especificamente, este passo pode ser realizado por um processador 225 em um controlador 221.
[0081] S204, Quando um tamanho de todas as solicitações de escrita de dados armazenadas na memória 226 do nó de dados atinge uma quantidade de dados predefinida, o nó de dados envia um conjunto de solicitações de escrita de dados para um nó de cálculo de verificação. O conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados, e um tamanho das múltiplas solicitações de escrita de dados atinge a quantidade de dados predefinida.
[0082] Especificamente, este passo pode ser realizado pelo processador 225 no controlador 221. Cada vez que o nó de dados recebe uma solicitação de escrita de dados 4 0/60 ? o CL I 1 — cc Rub '■ ç- \' :/ 11, o nó de dados escreve a dados na memória 226. Portanto, na de escrita de dados são acumuladas. Quando um tamanho das solicitações de escrita de dados acumuladas atinge a quantidade de dados predefinida, o nó de dados envia estas solicitações de escrita de dados acumuladas como um conjunto para o nó de cálculo de verificação. A quantidade de dados predefinida é predefinida pelo sistema de armazenamento 10, por exemplo, 16 KB.
[0083] Todas as solicitações de escrita de dados em uma memória 226 de qualquer nó de dados são enviadas para o nó de cálculo de verificação, desde que um tamanho de todas as solicitações de escrita de dados na memória 226 atinja a quantidade de dados predefinida. Se um tamanho de solicitações de escrita de dados acumuladas em uma memória de outro nó de dados atinge a quantidade de dados predefinida não é considerado. Em uma aplicação real, o nó de dados pode ter um requisito de limite de tempo em solicitações de escrita de dados acumuladas. Quando um limite de tempo predefinido expira, se o tamanho de todas as solicitações de escrita de dados na memória 226 não atinge a quantidade de dados predefinida, 0 ou outros dados com uma marca especial podem ser usados para suplementação.
[0084] O que antecede descreve um cenário de um nó de dados. Para múltiplos nós de dados no sistema de armazenamento 10, cada nó de dados 22 coleta localmente conjuntos de solicitações de escrita de dados cujos tamanhos atingem a quantidade de dados predefinida e, em seguida, envia esses conjuntos de solicitações de escrita de dados para o nó de cálculo de verificação. O nó de cálculo de $ Ru0 ô '•>? • Cb> verificação calcula dados de verificação de acordo com os múltiplos conjuntos de solicitações de escrita de dados recebidos, para formar uma faixa.
[0085] S205, o nó de cálculo de verificação recebe múltiplos conjuntos de solicitações de escrita de dados, seleciona uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir dos múltiplos conjuntos de solicitações de escrita de dados, e calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, onde a quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados, e a quantidade especificada de conjuntos de solicitações de escrita de dados inclui diferentes identificadores de nó de dados.
[0086] Por exemplo, um nó de armazenamento C é usado como o nó de cálculo de verificação. O nó de armazenamento C pode se comunicar com qualquer nó de armazenamento 22 no sistema de armazenamento 10. Após a recepção de múltiplos conjuntos de solicitações de escrita de dados, o nó de armazenamento C seleciona uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir dos conjuntos de múltiplas solicitações de escrita de dados de acordo com um modo de verificação predefinido, e calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados. Um exemplo de 5 + 1 é usado. Depois de selecionar, a partir dos múltiplos conjuntos de solicitações de escrita de dados recebidos, cinco conjuntos de solicitações de escrita de dados que são de nós de dados diferentes, o nó de armazenamento C calcula dados \v<Justr,a/ U % <5 dos cinco conjuntos de solicitações de escrita * de dados. Em alguns casos, o nó de armazenamento C pode calcular dados de verificação de um conjunto de solicitações de escrita de dados armazenada localmente, e apenas precisa receber conjuntos de solicitações de escrita de dados enviados pelos quatro nós de dados restantes.
[0087] Ao receber um conjunto de solicitações de escrita de dados, o nó de cálculo de verificação armazena o conjunto de solicitações de escrita de dados, aloca um identificador para o conjunto de solicitações de escrita de dados e, em seguida, escreve o identificador do conjunto de solicitações de escrita de dados em uma lista ligada ou outra estrutura de dados. O identificador do conjunto de solicitações de escrita de dados pode ser o mesmo que um identificador de nó de dados incluido em uma solicitação de escrita de dados no conjunto de solicitações de escrita de dados ou diferente de um identificador de nó de dados incluido em uma solicitação de escrita de dados no conjunto de solicitações de escrita de dados. Quando o identificador do conjunto de solicitações de escrita de dados é diferente do identificador de nó de dados incluido na solicitação de escrita de dados no conjunto de solicitações de escrita de dados, o nó de cálculo de verificação armazena uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e o identificador de nó de dados. Em uma implementação, o identificador do conjunto de solicitações de escrita de dados é alocado pelo nó de cálculo de verificação. Após a alocação do identificador, o nó de cálculo de verificação envia o identificador do conjunto de solicitações de escrita de dados para um nó de dados no qual de escrita de dados é localizado ."%-, o identificador do conjunto de dados. Em outra implementação, o identificador do conjunto de solicitações de escrita de dados é alocado por um nó de dados no qual o conjunto de solicitações de escrita de dados é localizado. Depois de alocar o identificador, o nó de dados envia o identificador do conjunto de solicitações de escrita de dados ao nó de cálculo de verificação. 0 nó de cálculo de verificação armazena o identificador do conjunto de solicitações de escrita de dados.
[0088] Para garantir a confiabilidade de dados, ao selecionar uma quantidade especificada de conjuntos de solicitações de escrita de dados para formar uma faixa, o nó de cálculo de verificação precisa garantir que múltiplos conjuntos de solicitações de escrita de dados formando a mesma faixa sejam de nós de dados diferentes. 0 modo 5+1 é usado como exemplo. O nó de cálculo de verificação precisa selecionar cinco conjuntos de solicitações de escrita de dados da lista ligada. O nó de cálculo de verificação pode receber múltiplos conjuntos de solicitações de escrita de dados em um determinado momento, e alguns dos conjuntos de solicitações de escrita de dados podem ser de um mesmo nó de dados. Portanto, o nó de cálculo de verificação precisa ainda garantir que os cinco conjuntos de solicitações de escrita de dados sejam de nós de dados diferentes. Especificamente, o nó de cálculo de verificação pode selecionar os cinco conjuntos de solicitações de escrita de dados a partir da lista ligada de acordo com a correspondência armazenada entre o identificador do conjunto de solicitações de escrita de 4 4/60 /F,S %. - ? « F?U6 -A-A-' "<Sj. ' ~~ ^5" & dados e o identificador de nó de dados, ou diretamente de / x3<^ acordo com o identificador do conjunto de solicitações de escrita de dados. Deve ser notado que, ao selecionar conjuntos de solicitações de escrita de dados para formar uma faixa, o nó de cálculo de verificação não precisa considerar uma sequência de escrita dos conjuntos de solicitações de escrita de dados para a lista ligada, mas só precisa garantir que os múltiplos conjuntos de solicitações de escrita de dados formando a faixa são de nós de dados diferentes.
[0089] S206, o nó de cálculo de verificação envia os dados de verificação para um nó de verificação, onde o nó de verificação é diferente de um nó de dados armazenando um conjunto de solicitações de escrita de dados.
[0090] Especificamente, o nó de cálculo de verificação pode selecionar um ou mais nós de armazenamento a partir dos nós de armazenamento restantes (exceto o nó de dados que já armazena o conjunto de solicitações de escrita de dados) para armazenar os dados de verificação. O nó de armazenamento configurado para armazenar os dados de verificação é referido como o nó de verificação nesta modalidade. O nó de verificação não pode ser o mesmo que qualquer dos nós de dados nos quais a quantidade especificada de conjuntos de solicitações de escrita de dados é localizada. Isto é destinado para impedir que tanto o conjunto de solicitações de escrita de dados e dados de verificação que estão incluidos em uma faixa são perdidos quando uma falha ocorre em um nó de armazenamento. O nó de armazenamento selecionado configurado para armazenar os dados de verificação não pode ser um nó de dados armazenando um conjunto de solicitações de escrita de dados em uma faixa atual, mas pode ser um nó de dados armazenando um conjunto de solicitações de escrita de dados em outra faixa. Nesta modalidade, um nó de armazenamento não se limita a ser dedicado a armazenar o conjunto de solicitações de escrita de dados ou dados de verificação.
[0091] Além disso, o nó de cálculo de verificação atribui um identificador de faixa a cada faixa. Diferentes faixas têm diferentes identificadores de faixa. Além disso, o hospedeiro aloca identificadores para conjuntos de solicitações de escrita de dados e dados de verificação que estão incluídos em cada faixa, e envia um identificador de um conjunto de solicitações de escrita de dados como um nó de dados no qual o conjunto de solicitações de escrita de dados é localizado. Alternativamente, cada nó de dados aloca um identificador para um conjunto de solicitações de escrita de dados armazenado, e envia o identificador do conjunto de solicitações de escrita de dados para o nó de cálculo de verificação. O nó de cálculo de verificação registra uma correspondência entre um identificador de faixa de cada faixa e um identificador de cada conjunto de solicitações de escrita de dados incluído na faixa e uma correspondência entre o identificador de faixa e um identificador de dados de verificação.
[0092] De acordo com o método de verificação de dados mostrado na Figura 6, quando um tamanho de todas as solicitações de escrita de dados acumuladas atinge uma quantidade de dados predefinida, cada nó de dados envia estas solicitações de escrita de dados como um conjunto de solicitações de escrita de dados para um nó de cálculo de x^UStr.'a/ Z n ' 4 6/60 p —— Rub “^s—' . . . . °'o. d verificação. O nó de cálculo de verificação seleciona uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir de múltiplos conjuntos de solicitações de escrita de dados recebidos, calcula dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, e envia os dados de verificação para um nó de verificação para armazenamento. Portanto, confiabilidade de dados é assegurada. Cada conjunto de solicitações de escrita de dados inclui múltiplas solicitações de escrita de dados tendo um mesmo identificador de nó de dados, e um nó de dados no qual cada solicitação de escrita de dados deve ser escrita é selecionado por um hospedeiro de acordo com dados na solicitação de escrita de dados ou um endereço lógico, na solicitação de escrita de dados, no qual os dados devem ser escritos. Portanto, cada conjunto de solicitações de escrita de dados inclui solicitações de escrita de dados de um mesmo tipo. Existe uma possibilidade relativamente alta de leitura simultânea de dados nas solicitações de escrita de dados do mesmo tipo. Portanto, os dados podem ser lidos a partir de um nó de dados, e uma operação de leitura de nó cruzado não precisa ser realizada, melhorando assim a eficiência de leitura de dados.
[0093] No método de verificação de dados mostrado na Figura 4, Figura 5, ou Figura 6, solicitações de escrita de dados de um mesmo tipo são escritas em um mesmo nó de dados. Depois de escrever as solicitações de escrita de dados no nó de dados, o nó de dados ainda precisa criar e armazenar metadados.
[0094] Os metadados incluem uma correspondência entre um identificador de um conjunto de solicitações de 41 'W" escrita de dados e um endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos. Os metadados incluem ainda um local de cada solicitação de escrita de dados no conjunto de solicitações de escrita de dados. Nesta modalidade, o local de cada solicitação de escrita de dados no conjunto de solicitações de escrita de dados é referido como um deslocamento interno. Por exemplo, uma correspondência entre um conjunto de solicitações de escrita de dados e um endereço lógico no qual os dados em cada solicitação de escrita de dados incluida no conjunto de solicitações de escrita de dados devem ser escritos é mostrada na tabela 1:
Figure img0001
[0095] Como mostrado na tabela anterior, um conjunto de solicitações de escrita de dados tendo um identificador "1" inclui três solicitações de escrita de dados. Cada solicitação de escrita de dados não inclui apenas dados, mas também inclui um endereço lógico no qual os dados devem ser escritos. Além disso, cada solicitação de escrita de dados tem um local correspondente dentro do conjunto de solicitações de escrita de dados. A primeira solicitação de escrita de dados é usada como exemplo. Um endereço lógico da solicitação de escrita de dados inclui um ID de volume, um LBA, e um comprimento. 0 e o comprimento é 4096. pertence ao conjunto de tendo o identificador ID de volume é 0x1, o LBA A solicitação de solicitações de 1", e um local escrita escrita no é 0x100 de dados de dados iunto de FIS solicitações de escrita de dados é 0x1000.
[0096] Se um hospedeiro agrupa múltiplas solicitações de escrita de dados em várias unidades de dados, calcula os dados de verificação das várias unidades de dados, e em seguida, envia as unidades de dados e os dados de verificação para múltiplos nós de armazenamento em um sistema de armazenamento para armazenamento, metadados (uma correspondência entre a solicitação de escrita de dados e uma unidade de dados) são armazenados no hospedeiro. Quando uma operação como a coleta de lixo é realizada em uma unidade de dados em um nó de armazenamento subsequentemente, uma mensagem precisa ser enviada ao hospedeiro para modificar os metadados. Portanto, a operação é complexa, e largura de banda é consumida.
[0097] No entanto, nesta modalidade, solicitações de escrita de dados de um mesmo tipo são armazenadas como um conjunto de solicitações de escrita de dados em um nó de dados. Portanto, metadados relacionados ao conjunto de solicitações de escrita de dados também são armazenados localmente no nó de dados. Se uma operação como coleta de lixo for realizada no conjunto de solicitações de escrita de dados subsequentemente, os metadados podem ser diretamente modificados localmente.
[0098] Os metadados podem ser armazenados em uma memória 226 do nó de dados. Para garantir a confiabilidade de metadados, dados de verificação de metadados em cada nó de dados também precisam ser calculados e armazenados. Especificamente, solicitações de escrita de dados recebidas pelo nó de dados aumentam, o mesmo acontece com metadados armazenados na memória 226. Quando um tamanho de metadados acumulados na memória 226 atinge uma quantidade de dados predefinida, o nó de dados envia um conjunto de metadados para um nó de cálculo de verificação de metadados. 0 conjunto de metadados é metadados cujo tamanho atinge a quantidade de dados predefinida. A quantidade de dados predefinida pode ser predefinida pelo sistema de armazenamento 10, por exemplo, 16 KB. O nó de cálculo de verificação de metadados é um nó de armazenamento configurado para calcular dados de verificação do conjunto de metadados. Em uma implementação real, o nó de cálculo de verificação de metadados pode ser o mesmo que um nó de cálculo de verificação. Além disso, nesta modalidade, um nó de dados 22 não envia apenas o conjunto de metadados para o nó de cálculo de verificação de metadados, mas também precisa enviar um identificador do nó de dados para o nó de cálculo de verificação de metadados. 0 conjunto de metadados e o identificador podem ser encapsulados em uma mensagem para envio, ou podem ser enviados separadamente.
[0099] O nó de cálculo de verificação de metadados recebe um conjunto de metadados e um identificador de cada nó de dados que são enviados pelo nó de dados, aloca um identificador para cada conjunto de metadados, e armazena uma correspondência entre o identificador do conjunto de metadados e o identificador do nó de dados. Para garantir confiabilidade de metadados, o nó de cálculo de verificação de metadados calcula dados de verificação do conjunto de 50/60 metadados. Especificamente, o nó de cálculo de verificação de metadados seleciona uma quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados de acordo com a correspondência entre o identificador do conjunto de metadados e o identificador do nó de dados, e calcula os dados de verificação da quantidade especificada de conjuntos de metadados selecionados. Os conjuntos de metadados selecionados devem ser correspondentes a diferentes identificadores de nó de dados.
[00100] Semelhante à descrição anterior, a quantidade especificada é determinada de acordo com um modo de verificação predefinido pelo sistema de armazenamento 10. Deve ser notado que o modo de verificação do conjunto de metadados pode ser o mesmo ou diferente do modo de verificação de um conjunto de solicitações de escrita de dados.
[00101] O nó de cálculo de verificação de metadados pode selecionar, no sistema de armazenamento 10, um nó de armazenamento como um nó de verificação de metadados, e enviar os dados de verificação dos conjuntos de metadados para o nó de verificação de metadados. O nó de verificação de metadados selecionado é diferente de um nó de dados configurado para armazenar os conjuntos de metadados. No entanto, o nó de verificação de metadados selecionado pode ser um nó de dados armazenando um conjunto de metadados em outra faixa. Nesta modalidade, um nó de dados não é limitado a ser dedicado a armazenar um conjunto de metadados ou dados de verificação de um conjunto de metadados.
[00102] Quando uma quantidade total de dados armazenados em uma memória 226 de cada nó de dados atinge um determinado limiar o nó de dados precisa escrever os dados na memória 226 em um disco de estado sólido 222. Neste caso, um controlador 221 no nó de dados pode alocar, a cada conjunto de solicitações de escrita de dados usando cada conjunto de solicitações de escrita de dados como uma granularidade, um endereço lógico para escrever o conjunto de solicitações de escrita de dados para o disco de estado sólido (referido como um endereço lógico de disco rigido nesta modalidade), e armazenar uma correspondência entre um identificador do conjunto de solicitações de escrita de dados e o endereço lógico de disco rigido alocado. O disco de estado sólido 222 recebe um conjunto de solicitações de escrita de dados enviado pelo controlador 221 e o endereço lógico que é para escrever o conjunto de solicitações de escrita de dados no disco de estado sólido e que é alocado ao conjunto de solicitações de escrita de dados, e escreve o conjunto de solicitações de escrita de dados em um ou mais blocos (inglês: block). Além disso, o disco de estado sólido 222 armazena uma correspondência entre o endereço lógico que é para escrever o conjunto de solicitações de escrita de dados no disco de estado sólido e que é alocado ao conjunto de solicitações de escrita de dados e um endereço real. O endereço real pode ser um endereço fisico dos dados no disco de estado sólido, ou pode ser um endereço que é virtualizado com base no endereço fisico e que é apenas visivel para o disco de estado sólido.
[00103] Após um periodo de tempo, alguns dados em um conjunto de solicitações de escrita de dados armazenada por cada nó de dados podem se tornar dados inválidos. A validade dos dados é determinada de acordo com se os dados são 52/60 a%s % ° - Q CL I £3 Rub /VA./ % modificados. Se os dados são escritos para o nó de dados^/ x3<^ pela primeira vez, os dados podem ser gravados como válidos (referido como dados válidos). Se os dados forem modificados, os dados serão gravados como inválidos (referidos como dados inválidos). A tabela 1 é usada como exemplo. Quando um nó de dados no qual um conjunto de solicitações de escrita de dados tendo o identificador 1 é localizado recebe a quarta solicitação de escrita de dados, e um endereço lógico no qual os dados na quarta solicitação de escrita de dados devem ser escritos é o mesmo que um endereço lógico no qual os dados na primeira solicitação de escrita de dados devem ser escritos, isso indica que a quarta solicitação de escrita de dados é usada para substituir a primeira solicitação de escrita de dados. Devido a uma característica de escrita do disco de estado sólido, os dados (dados antigos) na primeira solicitação de escrita de dados não são sobrescritos diretamente pelos dados (novos dados) na quarta solicitação de escrita de dados, mas um bloco em branco no disco de estado sólido é alocado, e os novos dados são escritos para o bloco em branco. Portanto, os dados na primeira solicitação de escrita de dados tornam-se dados inválidos. Isso também significa que alguns dados no conjunto de solicitações de escrita de dados tendo o identificador 1 tornam-se dados inválidos. 0 nó de dados pode usar um mapa de bits para registrar informação sobre dados inválidos incluídos em cada conjunto de solicitações de escrita de dados. A informação sobre os dados inválidos inclui um endereço lógico no qual os dados inválidos devem ser gravados e uma quantidade de dados dos dados inválidos. Por exemplo, cada "bit" do mapa de bits é correspondente a um endereço lógico que tem um tamanho de 1 KB e no qual os dados devem ser escritos. Um "bit" 1 indica que os dados armazenados no endereço lógico são válidos e um "bit" 0 indica que os dados armazenados no endereço lógico são inválidos.
[00104] À medida que os dados inválidos aumentam, o nó de dados precisa executar uma operação de coleta de lixo sistemática. A coleta de lixo sistemática é realizada em uma unidade de uma faixa, e os conjuntos de solicitações de escrita de dados incluídos em uma faixa são distribuídos no nó de dados. Portanto, a coleta de lixo sistemática é realizada em uma unidade de um conjunto de solicitações de escrita de dados dentro do nó de dados. 0 sistema de armazenamento 10 inclui ainda um nó de coleta de lixo. O nó de coleta de lixo é um nó, nos nós de armazenamento 22, configurado para executar a operação de coleta de lixo sistemática. A Figura 7 é um fluxograma esquemático de um método de coleta de lixo sistemática. Como mostrado na Figura 7, o método pode incluir os seguintes passos.
[00105] S301. 0 nó de coleta de lixo seleciona uma faixa a ser recuperada a partir de múltiplas faixas de acordo com um mapa de bits de um conjunto de solicitações de escrita de dados incluido em cada faixa.
[00106] Em um primeiro cenário de aplicação, um hospedeiro 11 envia um identificador de uma faixa e uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa para o nó de coleta de lixo. Em um segundo cenário de aplicação, um nó de cálculo de verificação envia um identificador de uma faixa e uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados incluido na faixa para o nó de coleta de lixo. Além disso, independentemente do primeiro cenário de aplicação ou do segundo cenário de aplicação, um nó de dados precisa enviar um mapa de bits do conjunto de solicitações de escrita de dados para o nó de coleta de lixo.
[00107] O nó de coleta de lixo precisa selecionar uma faixa a ser recuperada a partir de múltiplas faixas. Para garantir a maior eficiência de uma operação de coleta de lixo sistemática, o nó de coleta de lixo geralmente seleciona uma faixa incluindo a maior quantidade de dados inválidos como a faixa a ser recuperada. Portanto, estatísticas em uma quantidade de dados de dados inválidos compreendidos em cada faixa precisam ser coletadas. Especificamente, o nó de coleta de lixo pode determinar, de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados incluido na faixa, todos os conjuntos de solicitações de escrita de dados incluídos na faixa, e depois determinar, de acordo com um mapa de bits de cada conjunto de solicitações de escrita de dados, uma quantidade de dados de dados inválidos compreendidos em cada conjunto de solicitações de escrita de dados, de modo a determinar uma quantidade de dados inválidos incluidos na faixa. Portanto, o nó de coleta de lixo pode usar a faixa incluindo a maior quantidade de dados inválidos como a faixa a ser recuperada. Além disso, nesta modalidade, a faixa a ser recuperada pode ser selecionada de acordo com outra condição. Por exemplo, uma faixa na qual nenhuma operação de coleta de lixo sistemática é realizada por um longo periodo de tempo é selecionada, ou a coleta de lixo 55/60 sistemática é realizada sequencialmente em múltiplas faixas de acordo com uma sequência predefinida.
[00108] S302. O nó de coleta de lixo envia uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados é localizado.
[00109] Como descrito acima, o nó de coleta de lixo pode determinar, de acordo com o identificador de faixa e a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados incluido na faixa, um identificador do conjunto de solicitações de escrita de dados incluido em cada faixa. Em seguida, o nó de dados no qual cada conjunto de solicitações de escrita de dados é localizado é determinado de acordo com uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um identificador do nó de dados (se o identificador do conjunto de solicitações de escrita de dados é consistente com o identificador do nó de dados, o nó de dados no qual cada conjunto de solicitações de escrita de dados é localizado pode ser determinado diretamente de acordo com o identificador do conjunto de solicitações de escrita de dados), de modo a enviar a mensagem de notificação de coleta de lixo ao nó de dados no qual cada conjunto de solicitações de escrita de dados é localizado. A mensagem é usada para instruir o nó de dados para executar uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados. A mensagem inclui o identificador do conjunto de solicitações de escrita de dados.
[00110] S303. Cada nó de dados recebe a mensagem de e \ndusfr,a/ 5 6/60 § J S Hub P ■*. % notificação de coleta de lixo, e determina um conjunto de / xad^“'° solicitações de escrita de dados a ser recuperado de acordo com um identificador, transportado na mensagem, de um conjunto de solicitações de escrita de dados. Em seguida, cada nó de dados determina, de acordo com um mapa de bits do conjunto de solicitações de escrita de dados a ser recuperado, dados válidos e dados inválidos que estão incluídos no conjunto de solicitações de escrita de dados a ser recuperado. Por exemplo, dados na primeira solicitação de escrita de dados na tabela 1 tornam-se dados inválidos. Os dados na segunda solicitação de escrita de dados e dados na terceira solicitação de escrita de dados ainda são dados válidos.
[00111] S304. Cada nó de dados move dados válidos no conjunto de solicitações de escrita de dados a ser recuperado para um novo conjunto de solicitações de escrita de dados, e recupera o conjunto de solicitações de escrita de dados.
[00112] Mover os dados válidos para o novo conjunto de solicitações de escrita de dados é combinar, para o novo conjunto de solicitações de escrita de dados, a solicitação de escrita de dados na qual os dados válidos são localizados. Por exemplo, a segunda solicitação de escrita de dados e a terceira solicitação de escrita de dados na tabela 1 são lidas a partir de um disco de estado sólido 222 para uma memória 226 (se a segunda solicitação de escrita de dados ou a terceira solicitação de escrita de dados já estão armazenadas na memória 226, esta operação não precisa ser realizada). Depois de um tamanho de todas as solicitações de escrita de dados armazenadas na memória 226 atingir novamente uma quantidade de dados predefinida, um novo conjunto de solicitações de escrita de dados é gerado por meio de combinação. Especificamente, o nó de dados, em seguida, determina, de acordo com o mapa de bits do conjunto de solicitações de escrita de dados a ser recuperado, um endereço lógico no qual os dados válidos incluidos no conjunto de solicitações de escrita de dados devem ser escritos (o endereço lógico aqui é um endereço lógico no qual os dados devem ser escritos), remove uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e o identificador do conjunto de solicitações de escrita de dados, e armazena uma correspondência entre o endereço lógico no qual os dados válidos devem ser escritos e um identificador do novo conjunto de solicitações de escrita de dados. Os metadados são armazenados localmente no nó de dados. Portanto, após a realização de coleta de lixo sistemática, o nó de dados pode modificar diretamente os metadados localmente, e a operação de nó cruzado não precisa ser realizada. Em seguida, o nó de dados envia um endereço lógico de disco rigido do conjunto de solicitações de escrita de dados a ser recuperado para o disco de estado sólido, e o disco de estado sólido registra blocos correspondentes ao endereço lógico de disco rigido como inválidos. Ao realizar a coleta de lixo interna subsequentemente, o disco de estado sólido pode apagar diretamente estes blocos, e não precisa replicar os dados válidos. Portanto, uma quantidade de tempos de amplificação de escrita realizada internamente no disco de estado sólido é reduzida. Além disso, o nó de dados ainda precisa remover uma correspondência entre um identificador do conjunto de solicitações de escrita de dados a ser recuperado e o endereço lógico de disco rigido alocado. Quando todos os conjuntos de solicitações de escrita de dados incluídos em uma faixa são recuperados, dados de verificação incluídos nesta faixa não são mais necessários, e o nó de coleta de lixo pode instruir um nó de verificação para remover os dados de verificação.
[00113] A coleta de lixo sistemática fornecida nesta modalidade significa que cada nó de dados combina dados válidos em outro conjunto de solicitações de escrita de dados local. Portanto, o nó de dados independentemente completa a coleta de lixo sistemática e não precisa trocar dados com outro nó de dados, assim, economizando largura de banda entre os nós de dados.
[00114] Uma pessoa com conhecimentos normais na arte pode entender que cada um dos aspectos da presente invenção ou uma possível implementação de cada aspecto pode ser especialmente implementado como um sistema, um método, ou um produto de programa de computador. Portanto, cada aspecto da presente invenção ou a possível implementação de cada aspecto pode adotar uma forma de modalidades de hardware apenas, modalidades de software apenas (incluindo firmware, software residente, e similares), ou modalidades em combinação de software e hardware, que são uniformemente referidas como um "circuito", um "módulo" ou um "sistema" aqui. Além disso, cada aspecto da presente invenção ou a possível implementação de cada aspecto pode assumir uma forma de um produto de programa de computador, em que o produto de programa de computador é um código de programa legível por computador armazenado em um meio de armazenamento legível por computador.
[00115] O meio de armazenamento legível por X'T % 59/60 /n‘dtó_J% ex I £ Rub \X_ g -% z$5- cv1 computador inclui, mas não é limitado a um sistema, dispositivo ou aparelho eletrônico, magnético, eletromagnético, infravermelho ou de semicondutor, ou qualquer combinação apropriada deles, como uma memória de acesso aleatório (RAM) , uma memória somente de leitura (ROM), uma memória somente de leitura programável apagável (EPROM), e um disco óptico.
[00116] Um processador em um computador lê o código de programa legivel por computador armazenado no meio de armazenamento legivel por computador, de modo que o processador possa executar uma ação funcional especificada em cada passo ou cada combinação de passos nos fluxogramas.
[00117] O código de programa legivel por computador pode ser completamente executado no computador de um usuário, pode ser executado parcialmente no computador de um usuário, pode ser implementado como um pacote de software independente, pode ser parcialmente implementado no computador de um usuário e parcialmente implementado em um computador remoto, ou pode ser completamente executado em um computador remoto ou em um servidor. Também deve ser notado que, em algumas soluções de implementação alternativas, passos de um fluxograma ou funções indicadas por blocos em um diagrama de blocos podem não ser implementados em uma sequência indicada no fluxograma ou no diagrama de blocos. Por exemplo, dois passos ou blocos que dependem de uma função envolvida e são mostrados em sequência podem ser executados simultaneamente ou, por vezes, esses blocos podem ser executados na ordem inversa.
[00118] Uma pessoa com conhecimentos comuns na técnica pode estar ciente que, em combinação com os exemplos 60/60 fFlsJÍ(p <x 8 « Rub “tA- Ç \ " '</ descritos nas modalidades divulgadas nesta especificação, / xa(^' unidades e passos de algoritmos podem ser implementados por hardware eletrônico ou uma combinação de software de computador e hardware eletrônico. Se as funções são realizadas por hardware ou software depende de determinadas aplicações e condições de restrição de projeto das soluções técnicas. Um especialista na técnica pode usar diferentes métodos para implementar as funções descritas para cada aplicação particular, mas não deve ser considerado que a implementação ultrapasse o escopo da presente invenção.
[00119] As descrições anteriores são apenas implementações especificas da presente invenção, mas não se destinam a limitar o âmbito de proteção da presente invenção. Qualquer variação ou substituição prontamente descoberta por um especialista na técnica dentro do escopo técnico divulgado na presente invenção deve cair dentro do escopo de proteção da presente invenção. Por conseguinte, o âmbito de proteção da presente invenção deve estar sujeito ao âmbito de proteção das reivindicações.

Claims (26)

1. Sistema de armazenamento (10), compreendendo um hospedeiro (11), um nó de verificação, e múltiplos nós de dados, em que cada nó de dados tem um único identificador, e caracterizado pelo fato de que o hospedeiro (11) é configurado para: dividir (S102) múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com identificadores de nó de dados incluídos nas solicitações de escrita de dados, em que cada conjunto de solicitações de escrita de dados compreende múltiplas solicitações de escrita de dados tendo um mesmo identificador nó de dados, cada solicitação de escrita de dados compreende dados, um endereço lógico no qual os dados devem ser escritos, e um identificador de um nó de dados no qual os dados devem ser escritos, e o nó de dados no qual os dados devem ser escritos é selecionado pelo hospedeiro de acordo com os dados ou o endereço lógico; quando um tamanho de todas as solicitações de escrita de dados em cada um de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, calcular (S103) dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados, em que a quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados; enviar (S104) cada um da quantidade especificada de conjuntos de solicitações de escrita de dados para um nó de dados indicado por um identificador de nó de dados incluído no conjunto de solicitações de escrita de dados; e enviar (S105) os dados de verificação para o nó de verificação.
2. Sistema de armazenamento, de acordo com a reivindicação 1, caracterizado pelo fato de que o hospedeiro (11) é ainda configurado para: alocar um identificador para cada da quantidade especificada de conjuntos de solicitações de escrita de dados, e enviar o identificador de cada conjunto de solicitações de escrita de dados para o nó de dados indicado pelo identificador de nó de dados compreendido na conjunto de solicitações de escrita de dados; e o nó de dados é configurado para: receber um conjunto de solicitações de escrita de dados e um identificador do conjunto de solicitações de escrita de dados; e criar metadados, caracterizado pelo fato de que os metadados compreendem uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno.
3. Sistema de armazenamento, de acordo com a reivindicação 2, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados; o nó de dados é ainda configurado para: enviar um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados ao determinar que os metadados acumulados atingem a quantidade de dados predefinida, em que o conjunto de metadados compreende os metadados acumulados que atingem a quantidade de dados predefinida; e o nó de cálculo de verificação de metadados é configurado para: receber um conjunto de metadados e um identificador de cada dos múltiplos nós de dados, em que o conjunto de metadados e o identificador são enviados pelo nó de dados; armazenar uma correspondência entre cada conjunto de metadados e um identificador de nó de dados; selecionar uma quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência, em que a quantidade especificada selecionada de conjuntos de metadados são correspondentes a diferentes identificadores de nó de dados; calcular dados de verificação da quantidade especificada selecionada de conjuntos de metadados; e enviar os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados, em que o nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados.
4. Sistema de armazenamento, de acordo com a reivindicação 2, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de coleta de lixo; o hospedeiro (11) é ainda configurado para: alocar um identificador para uma faixa, em que a faixa compreende a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; e enviar uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa para o nó de coleta de lixo; o nó de dados é ainda configurado para enviar um mapa de bits armazenado de um conjunto de solicitações de escrita de dados para o nó de coleta de lixo, em que o mapa de bits é usado para indicar uma quantidade de dados de dados inválidos no conjunto de solicitações de escrita de dados; e o nó de coleta de lixo é configurado para: determinar, de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa e de acordo com um mapa de bits de cada conjunto de solicitações de escrita de dados, que uma quantidade de dados de dados inválidos compreendidos na faixa é maior do que uma quantidade de dados inválidos compreendidos em qualquer outra faixa; e ao determinar que a quantidade de dados de dados inválidos compreendidos na faixa é maior do que a quantidade de dados inválidos compreendidos em qualquer outra faixa, enviar uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados compreendido na faixa é localizado, em que cada mensagem de notificação de coleta de lixo compreende um identificador de um conjunto de solicitações de escrita de dados.
5. Sistema de armazenamento, de acordo com a reivindicação 4, caracterizado pelo fato de que o nó de dados é ainda configurado para: executar uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados depois de receber a mensagem de notificação de coleta de lixo.
6. Sistema de armazenamento, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que a quantidade especificada é determinada de acordo com um modo de verificação predefinido.
7. Método de verificação de dados em um sistema de armazenamento, em que o sistema de armazenamento compreende um hospedeiro, um nó de verificação, e múltiplos nós de dados cada um dos quais tem um único identificador, e caracterizado pelo fato de que o método compreende: dividir (S102), pelo hospedeiro, múltiplas solicitações de escrita de dados em múltiplos conjuntos de solicitações de escrita de dados de acordo com os identificadores de nó de dados incluídos nas solicitações de escrita de dados, em que cada conjunto de solicitações de escrita de dados compreende múltiplas solicitações de escrita de dados tendo um mesmo identificador nó de dados, cada solicitação de escrita de dados compreende dados, um endereço lógico no qual os dados devem ser escritos e um identificador de um nó de dados no qual os dados devem ser escritos, e o nó de dados no qual os dados devem ser escritos é selecionado pelo hospedeiro de acordo com os dados ou o endereço lógico; calcular (S103), pelo hospedeiro, dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados quando um tamanho de todas as solicitações de escrita de dados em cada um de uma quantidade especificada de conjuntos de solicitações de escrita de dados atinge uma quantidade de dados predefinida, em que a quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados; enviar (S104), pelo hospedeiro, cada um da quantidade especificada de conjuntos de solicitações de escrita de dados para um nó de dados indicado por um identificador de nó de dados compreendido no conjunto de solicitações de escrita de dados; e enviar (S105), pelo hospedeiro, os dados de verificação para o nó de verificação.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende ainda: alocar, pelo hospedeiro, um identificador para cada da quantidade especificada de conjuntos de solicitações de escrita de dados, e enviar o identificador de cada solicitação de escrita de dados para o nó de dados indicado pelo identificador de nó de dados compreendido no conjunto de solicitações de escrita de dados; receber, pelo nó de dados, o conjunto de solicitações de escrita de dados e um identificador do conjunto de solicitações de escrita de dados; e criar metadados incluindo uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual dados em cada solicitação de escrita de dados devem ser escritos, e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados, e caracterizado pelo fato de que o método compreende ainda: enviar, pelo nó de dados, um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados ao determinar que os metadados acumulados atingem a quantidade de dados predefinida, caracterizado pelo fato de que o conjunto de metadados compreende os metadados acumulados que atingem a quantidade de dados predefinida; receber, pelo nó de cálculo de verificação de metadados, um conjunto de metadados e um identificador de cada dos múltiplos nós de dados, em que o conjunto de metadados e o identificador são enviados pelo nó de dados; armazenar, pelo nó de cálculo de verificação de metadados, uma correspondência entre cada conjunto de metadados e um identificador de nó de dados; selecionar, pelo nó de cálculo de verificação de metadados, uma quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência, em que a quantidade especificada selecionada de conjuntos de metadados são correspondentes a diferentes identificadores de nó de dados; e calcular, pelo nó de cálculo de verificação de metadados, dados de verificação da quantidade especificada selecionada de conjuntos de metadados e enviar os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados, em que o nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de coleta de lixo, e o método compreende ainda: alocar, pelo hospedeiro, um identificador para uma faixa, em que a faixa compreende a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; enviar, pelo hospedeiro, uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa para o nó de coleta de lixo; enviar, pelo nó de dados, um mapa de bits armazenado de um conjunto de solicitações de escrita de dados para o nó de coleta de lixo, em que o mapa de bits é usado para indicar uma quantidade de dados inválidos no conjunto de solicitações de escrita de dados; determinar, pelo nó de coleta de lixo de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa e de acordo com um mapa de bits de cada conjunto de solicitações de escrita de dados, que uma quantidade de dados de dados inválidos compreendidos na faixa é maior do que uma quantidade de dados inválidos compreendidos em qualquer outra faixa; e enviar, pelo nó de coleta de lixo, uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados compreendido na faixa é localizado ao determinar que a quantidade de dados de dados inválidos compreendidos na faixa é maior do que a quantidade de dados inválidos compreendidos em qualquer outra faixa, em que cada mensagem de notificação de coleta de lixo compreende um identificador de um conjunto de solicitações de escrita de dados.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que cada conjunto de solicitações de escrita de dados compreendido na faixa é localizado compreende ainda: executar, pelo nó de dados, uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados depois de receber a mensagem de notificação de coleta de lixo.
12. Método, de acordo com qualquer uma das reivindicações 7 a 11, caracterizado pelo fato de que a quantidade especificada é determinada de acordo com um modo de verificação predefinido.
13. Sistema de armazenamento, em que o sistema de armazenamento compreende um nó de verificação, um nó de cálculo de verificação, e múltiplos nós de dados cada um dos quais tem um identificador exclusivo, caracterizado pelo fato de que cada nó de dados é configurado para enviar um conjunto de solicitações de escrita de dados para o nó de cálculo de verificação, em que o conjunto de solicitações de escrita de dados compreende uma ou mais solicitações de escrita de dados, cada solicitação de escrita de dados incluindo dados e um identificador de um nó de dados no qual os dados devem ser escritos, e um tamanho do conjunto de solicitações de escrita de dados é igual a uma quantidade de dados predefinida; e o nó de cálculo de verificação é configurado para: receber múltiplos conjuntos de solicitações de escrita de dados; selecionar uma quantidade especificada de conjuntos de solicitações de escrita de dados a partir dos múltiplos conjuntos de solicitações de escrita de dados, em que a quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos conjuntos de múltiplas solicitações de escrita de dados, e a quantidade especificada de conjuntos de solicitações de escrita de dados inclui diferentes identificadores de nó de dados; calcular dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; e enviar os dados de verificação para o nó de verificação, em que o nó de verificação é diferente de um nó de dados no qual cada da quantidade especificada de conjuntos de solicitações de escrita de dados é localizado.
14. Sistema de armazenamento, de acordo com a reivindicação 13, caracterizado pelo fato de que cada solicitação de escrita de dados compreende ainda um endereço lógico no qual os dados devem ser escritos, e o nó de dados no qual os dados devem ser escritos é selecionado por um hospedeiro no sistema de armazenamento de acordo com os dados ou o endereço lógico no qual os dados devem ser escritos; e cada nó de dados é ainda configurado para receber múltiplas solicitações de escrita de dados enviadas pelo hospedeiro.
15. Sistema de armazenamento, de acordo com a reivindicação 14, caracterizado pelo fato de que o nó de dados é ainda configurado para: alocar um identificador para um conjunto de solicitações de escrita de dados armazenado, e enviar um identificador do conjunto de solicitações de escrita de dados para o nó de cálculo de verificação; e criar metadados incluindo uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual dados em cada solicitação de escrita de dados devem ser escritos e um deslocamento interno.
16. Sistema de armazenamento, de acordo com a reivindicação 15, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados; o nó de dados é ainda configurado para: enviar um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados ao determinar que metadados acumulados atingem a quantidade de dados predefinida, em que o conjunto de metadados compreende os metadados acumulados que atingem a quantidade de dados predefinida; e o nó de cálculo de verificação de metadados é configurado para: receber um conjunto de metadados e um identificador de cada nó de dados que são enviados pelo nó de dados; armazenar uma correspondência entre cada conjunto de metadados e um identificador de nó de dados; selecionar (S205) a quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência, em que a quantidade especificada de conjuntos de metadados são correspondentes a diferentes identificadores de nó de dados; calcular dados de verificação da quantidade especificada de conjuntos de metadados; e enviar os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados, em que o nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados.
17. Sistema de armazenamento, de acordo com a reivindicação 15, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de coleta de lixo, em que o nó de cálculo de verificação é ainda configurado para: alocar um identificador para uma faixa, em que a faixa compreende a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; e enviar uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa para o nó de coleta de lixo, em que cada nó de dados é ainda configurado para enviar um mapa de bits armazenado de um conjunto de solicitações de escrita de dados para o nó de coleta de lixo, em que o mapa de bits é utilizado para indicar uma quantidade de dados de dados inválidos no conjunto de solicitações de escrita de dados; e em que o nó de coleta de lixo é configurado para: determinar, de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa e de acordo com um mapa de bits de cada conjunto de solicitações de escrita de dados, que uma quantidade de dados de dados inválidos compreendidos na faixa é maior do que uma quantidade de dados inválidos compreendidos em qualquer outra faixa; e ao determinar que a quantidade de dados de dados inválidos compreendidos na faixa é maior que a quantidade de dados de dados inválidos compreendidos em qualquer outra faixa, enviar uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados compreendido na faixa é localizado, em que cada mensagem de notificação de coleta de lixo compreende um identificador de um conjunto de solicitações de escrita de dados.
18. Sistema de armazenamento, de acordo com a reivindicação 17, caracterizado pelo fato de que o nó de dados é ainda configurado para: executar uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados depois de receber a mensagem de notificação de coleta de lixo.
19. Sistema de armazenamento, de acordo com a reivindicação 13, caracterizado pelo fato de que a quantidade especificada é determinada de acordo com um modo de verificação predefinido.
20. Método de verificação de dados, em que o método é aplicado a um sistema de armazenamento, o sistema de armazenamento compreende um nó de verificação, um nó de cálculo de verificação, e múltiplos nós de dados, cada nó de dados tem um identificador exclusivo, e caracterizado pelo fato de que o método compreende: enviar, por cada nó de dados, um conjunto de solicitações de escrita de dados para o nó de cálculo de verificação, em que o conjunto de solicitações de escrita de dados compreende múltiplas solicitações de escrita de dados, cada solicitação de escrita de dados incluindo dados e um identificador de um nó de dados no qual os dados devem ser escritos, e um tamanho do conjunto de solicitações de escrita de dados é igual a uma quantidade de dados predefinida; receber, pelo nó de cálculo de verificação, múltiplos conjuntos de solicitações de escrita de dados; selecionar uma quantidade especificada de conjuntos de solicitações de escrita de dados dos múltiplos conjuntos de solicitações de escrita de dados, em que a quantidade especificada de conjuntos de solicitações de escrita de dados são subconjuntos dos múltiplos conjuntos de solicitações de escrita de dados, e em que a quantidade especificada de conjuntos de solicitações de escrita de dados são a partir de nós de dados diferentes; calcular dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; e enviar os dados de verificação para o nó de verificação, em que o nó de verificação é diferente a partir de um nó de dados no qual cada da quantidade especificada de conjuntos de solicitações de escrita de dados é localizado.
21. Método, de acordo com a reivindicação 20, caracterizado pelo fato de que cada solicitação de escrita de dados compreende ainda um endereço lógico no qual os dados devem ser escritos, e o nó de dados no qual os dados devem ser escritos é selecionado por um hospedeiro no sistema de armazenamento de acordo para os dados ou o endereço lógico no qual os dados devem ser escritos; e o método compreende ainda: receber, por cada nó de dados, múltiplas solicitações de escrita de dados enviadas pelo hospedeiro.
22. Método, de acordo com a reivindicação 21, caracterizado pelo fato de que compreende ainda: alocar, pelo nó de dados, um identificador para um conjunto de solicitações de escrita de dados armazenado; enviar o identificador do conjunto de solicitações de escrita de dados para o nó de cálculo de verificação; e criar metadados incluindo uma correspondência entre o identificador do conjunto de solicitações de escrita de dados e um endereço lógico no qual dados em cada solicitação de escrita de dados devem ser escritos e uma correspondência entre o endereço lógico no qual os dados em cada solicitação de escrita de dados deve ser escrita e um deslocamento interno.
23. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de cálculo de verificação de metadados e um nó de verificação de metadados, e caracterizado pelo fato de que o método compreende ainda: enviar, pelo nó de dados, um conjunto de metadados e um identificador do nó de dados para o nó de cálculo de verificação de metadados ao determinar que metadados acumulados atingem a quantidade de dados predefinida, em que o conjunto de metadados compreende os metadados acumulados que atingem a quantidade de dados predefinida; e receber um conjunto de metadados e um identificador de cada nó de dados que são enviados pelo nó de dados; armazenar uma correspondência entre cada conjunto de metadados e um identificador de nó de dados; selecionar a quantidade especificada de conjuntos de metadados a partir de múltiplos conjuntos de metadados recebidos de acordo com a correspondência, em que a quantidade especificada de conjuntos de metadados são correspondentes a diferentes identificadores de nó de dados; calcular dados de verificação da quantidade especificada de conjuntos de metadados; e enviar os dados de verificação da quantidade especificada de conjuntos de metadados para o nó de verificação de metadados, em que o nó de verificação de metadados é diferente de um nó de dados armazenando cada da quantidade especificada de conjuntos de metadados.
24. Método, de acordo com a reivindicação 22, caracterizado pelo fato de que o sistema de armazenamento compreende ainda um nó de coleta de lixo, e caracterizado pelo fato de que o método compreende ainda: alocar, pelo nó de cálculo de verificação, um identificador para uma faixa, em que a faixa compreende a quantidade especificada de conjuntos de solicitações de escrita de dados e os dados de verificação da quantidade especificada de conjuntos de solicitações de escrita de dados; enviar uma correspondência entre o identificador de faixa e um identificador de cada conjunto de solicitações de escrita de dados compreendido na faixa para o nó de coleta de lixo; enviar, por cada nó de dados, um mapa de bits armazenado de um conjunto de solicitações de escrita de dados para o nó de coleta de lixo, em que o mapa de bits indica uma quantidade de dados de dados inválidos no conjunto de solicitações de escrita de dados; e determinar, pelo nó de coleta de lixo, que uma quantidade de dados de dados inválidos compreendidos na faixa é maior do que uma quantidade de dados de dados inválidos compreendidos em qualquer outra faixa de acordo com a correspondência entre o identificador de faixa e o identificador de cada conjunto de solicitações de escrita de dados incluído na faixa e um mapa de bits de cada conjunto de solicitações de escrita de dados; e com base na determinação que a quantidade de dados de dados inválidos compreendidos na faixa é maior do que a quantidade de dados inválidos compreendidos em qualquer outra faixa, enviar uma mensagem de notificação de coleta de lixo para um nó de dados no qual cada conjunto de solicitações de escrita de dados compreendido na faixa é localizado, em que cada mensagem de notificação de coleta de lixo compreende um identificador de um conjunto de solicitações de escrita de dados.
25. Método, de acordo com a reivindicação 24, caracterizado pelo fato de que compreende ainda: depois de receber a mensagem de notificação de coleta de lixo, executar, pelo nó de dados, uma operação de coleta de lixo sistemática no conjunto de solicitações de escrita de dados de acordo com o identificador do conjunto de solicitações de escrita de dados e um mapa de bits armazenado do conjunto de solicitações de escrita de dados.
26. Método, de acordo com qualquer uma das reivindicações 20 a 25 caracterizado pelo fato de que a quantidade especificada é determinada de acordo com um modo de verificação predefinido.
BR112017020736A 2016-11-25 2016-11-25 método de verificação de dados e sistema de armazenamento BR112017020736B8 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/107355 WO2018094704A1 (zh) 2016-11-25 2016-11-25 一种数据校验的方法及存储系统

Publications (3)

Publication Number Publication Date
BR112017020736A2 BR112017020736A2 (pt) 2018-07-17
BR112017020736B1 true BR112017020736B1 (pt) 2021-01-19
BR112017020736B8 BR112017020736B8 (pt) 2021-08-17

Family

ID=62188856

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017020736A BR112017020736B8 (pt) 2016-11-25 2016-11-25 método de verificação de dados e sistema de armazenamento

Country Status (9)

Country Link
US (1) US10303374B2 (pt)
EP (1) EP3352071B1 (pt)
JP (1) JP6526235B2 (pt)
CN (1) CN109074227B (pt)
AU (1) AU2016397189B2 (pt)
BR (1) BR112017020736B8 (pt)
CA (1) CA2978927C (pt)
SG (1) SG11201707304RA (pt)
WO (1) WO2018094704A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111949434B (zh) * 2019-05-17 2022-06-14 华为技术有限公司 磁盘冗余阵列raid管理方法、raid控制器和系统
US20210357366A1 (en) * 2020-05-12 2021-11-18 Hewlett Packard Enterprise Development Lp File system metadata
CN112365124A (zh) * 2020-10-16 2021-02-12 重庆恢恢信息技术有限公司 智慧工地中施工材料快速分配工作方法
CN114697349A (zh) * 2020-12-28 2022-07-01 华为技术有限公司 使用中间设备对数据处理的方法、计算机系统、及中间设备
CN113419684B (zh) * 2021-07-09 2023-02-24 深圳大普微电子科技有限公司 一种数据处理方法、装置、设备及可读存储介质
CN116166179A (zh) * 2021-11-25 2023-05-26 华为技术有限公司 数据存储系统、智能网卡及计算节点
CN115933995B (zh) * 2023-01-09 2023-05-09 苏州浪潮智能科技有限公司 固态硬盘中数据写入方法、装置、电子设备及可读介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3713788B2 (ja) 1996-02-28 2005-11-09 株式会社日立製作所 記憶装置および記憶装置システム
US6742081B2 (en) * 2001-04-30 2004-05-25 Sun Microsystems, Inc. Data storage array employing block checksums and dynamic striping
JP4383321B2 (ja) * 2004-11-09 2009-12-16 富士通株式会社 記憶制御装置および外部記憶装置
US8332608B2 (en) * 2008-09-19 2012-12-11 Mediatek Inc. Method of enhancing command executing performance of disc drive
JP5317827B2 (ja) * 2009-05-19 2013-10-16 日本電信電話株式会社 分散データ管理装置及び方法及びプログラム
CN102546755A (zh) * 2011-12-12 2012-07-04 华中科技大学 云存储系统的数据存储方法
CN102968498B (zh) * 2012-12-05 2016-08-10 华为技术有限公司 数据处理方法及装置
JP6005533B2 (ja) * 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法
JP2014203233A (ja) * 2013-04-04 2014-10-27 株式会社日立製作所 ストレージシステム及びストレージシステムにおいてデータを更新する方法
CN104216664B (zh) * 2013-06-26 2017-06-09 华为技术有限公司 网络卷创建方法、数据存储方法、存储设备和存储系统
CN103647797A (zh) * 2013-11-15 2014-03-19 北京邮电大学 一种分布式文件系统及其数据访问方法
CN103699494B (zh) 2013-12-06 2017-03-15 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN104272274B (zh) * 2013-12-31 2017-06-09 华为技术有限公司 一种分布式文件存储系统中的数据处理方法及设备
CN103761058B (zh) * 2014-01-23 2016-08-17 天津中科蓝鲸信息技术有限公司 Raid1和raid4混合结构网络存储系统及方法
JP2016184372A (ja) * 2015-03-27 2016-10-20 富士通株式会社 ストレージシステム,情報処理装置,パリティ生成プログラム及びパリティ生成方法
CN107844268B (zh) * 2015-06-04 2021-09-14 华为技术有限公司 一种数据分发方法、数据存储方法、相关装置以及系统
CN105404469B (zh) * 2015-10-22 2018-11-13 浙江宇视科技有限公司 一种视频数据的存储方法和系统
CN105930103B (zh) * 2016-05-10 2019-04-16 南京大学 一种分布式存储ceph的纠删码覆盖写方法

Also Published As

Publication number Publication date
EP3352071A4 (en) 2018-07-25
EP3352071A1 (en) 2018-07-25
EP3352071B1 (en) 2019-08-28
JP2019504369A (ja) 2019-02-14
AU2016397189A1 (en) 2018-06-14
BR112017020736B8 (pt) 2021-08-17
CA2978927A1 (en) 2018-05-25
CA2978927C (en) 2019-09-17
CN109074227B (zh) 2020-06-16
AU2016397189B2 (en) 2019-07-25
BR112017020736A2 (pt) 2018-07-17
SG11201707304RA (en) 2018-06-28
US20180364920A1 (en) 2018-12-20
JP6526235B2 (ja) 2019-06-05
US10303374B2 (en) 2019-05-28
CN109074227A (zh) 2018-12-21
WO2018094704A1 (zh) 2018-05-31

Similar Documents

Publication Publication Date Title
BR112017020736B1 (pt) método de verificação de dados e sistema de armaenamento
US11249840B2 (en) Data storage devices and methods for rebuilding a memory address mapping table
US11243706B2 (en) Fragment management method and fragment management apparatus
US10740018B2 (en) Data migration method and apparatus applied to computer system, and computer system
US20220342541A1 (en) Data updating technology
CN108628541B (zh) 一种文件存储的方法、装置及存储系统
US20230229328A1 (en) Systems, Methods, and Computer Readable Media Providing Arbitrary Sizing of Data Extents
BR112017019425B1 (pt) Sistema de armazenamento e método de coleta de lixo de sistema
JP2017079053A (ja) ストレージジャーナリングを改善する方法およびシステム
US20170220481A1 (en) Raid Data Migration Through Stripe Swapping
US10310758B2 (en) Storage system and storage control method
US10282116B2 (en) Method and system for hardware accelerated cache flush
WO2017054714A1 (zh) 磁盘阵列的读方法及装置
US11822804B2 (en) Managing extent sharing between snapshots using mapping addresses
CN110865901A (zh) 组建ec条带的方法和装置
CN117149062A (zh) 一种磁带损坏数据的处理方法以及计算装置
BR112021002987B1 (pt) Método de tratamento de falha de disco rígido, controlador de arranjo, e disco rígido
BR112021002987A2 (pt) método de tratamento de falha de disco rígido, controlador de arranjo, e disco rígido

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 25/11/2016, OBSERVADAS AS CONDICOES LEGAIS.

B16C Correction of notification of the grant [chapter 16.3 patent gazette]

Free format text: REF. RPI 2611 DE 19/01/2021 QUANTO AO TITULO.