BR112016003763B1 - Método de desduplicação de dados e arranjo de armazenamento. - Google Patents

Método de desduplicação de dados e arranjo de armazenamento. Download PDF

Info

Publication number
BR112016003763B1
BR112016003763B1 BR112016003763-4A BR112016003763A BR112016003763B1 BR 112016003763 B1 BR112016003763 B1 BR 112016003763B1 BR 112016003763 A BR112016003763 A BR 112016003763A BR 112016003763 B1 BR112016003763 B1 BR 112016003763B1
Authority
BR
Brazil
Prior art keywords
controller
data block
data
cache
eigenvalue
Prior art date
Application number
BR112016003763-4A
Other languages
English (en)
Inventor
Wei Zhang
Xianhong LV
Mingchang WEI
Chenyi Zhang
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 BR112016003763B1 publication Critical patent/BR112016003763B1/pt

Links

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0608Saving storage space on storage systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F3/0641De-duplication techniques
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

resumo “método de desduplicação de dados e arranjo de armazenamento” de acordo com um método de desduplicação de dados e um arranjo de armazenamento fornecido em modalidades da presente invenção, um controlador é conectado a um dispositivo de cache por meio do dispositivo de comutação, o dispositivo de cache calcula um autovalor de um bloco de dados a ser desduplicado, o controlador consulta um conjunto de índices de autovalor dos blocos de dados de acordo com o autovalor do bloco de dados a ser desduplicado, e quando o mesmo autovalor não é encontrado, o controlador envia um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache para um controlador de um disco rígido alvo, e o controlador do disco rígido alvo lê o bloco de dados a ser desduplicado a partir do endereço de cache do bloco de dados. 1/1

Description

“MÉTODO DE DESDUPLICAÇÃO DE DADOS E ARRANJO DE ARMAZENAMENTO’
CAMPO TÉCNICO [0001] A presente invenção se refere ao campo de tecnologias de informações e, em particular, a um método de desduplicação de dados e a um arranjo de armazenamento.
ANTECEDENTES [0002] Um arranjo de armazenamento de modo geral inclui um motor, e um motor inclui dois controladores, o que é de modo geral chamado de uma estrutura de dois controladores. Conforme mostrado na Figura 1, um arranjo de armazenamento inclui um gerenciador de entrada/saída A, um gerenciador de entrada/saída B, um controlador A e um controlador B. O gerenciador de entrada/saída A é conectado ao controlador A, e o gerenciador de entrada/saída B é conectado ao controlador B. O controlador A inclui um comutador A de componente de interconexão de periféricos expresso (Componente de Interconexão de Periféricos expresso, PCIe), uma unidade de processamento central (Unidade de Processamento Central, CPU) A, e uma memória A; e o controlador B inclui um comutador B de componente de interconexão de periféricos expresso (Componente de Interconexão de Periféricos expresso, PCIe), uma unidade de processamento central (Unidade de Processamento Central, CPU) B, e uma memória B. O comutador A do PCIe é conectado ao comutador B do PCIe. No arranjo de armazenamento mostrado na Figura 1, a desduplicação de dados é realizada antes que os dados a serem gravados sejam gravados em um disco rígido. Um processo específico é que: a CPU A do controlador A divide dados a serem gravados na memória A, para obter múltiplos blocos de dados, calcula um autovalor de cada bloco de dados, determina se o bloco de dados é um bloco de dados duplicado buscando autovalores em um conjunto de índices de autovalor do controlador A, se o bloco de dados é um bloco de dados duplicado, deleta o bloco de dados, e se o
2/48 bloco de dados não for um bloco de dados duplicado, grava o bloco de dados no disco rígido.
[0003] O supracitado processo de desduplicação de dados em um arranjo de armazenamento consome a potência de computação de uma CPU de um controlador e os recursos de memória do controlador, e afeta o desempenho do arranjo de armazenamento severamente.
SUMÁRIO [0004] As modalidades da presente invenção fornecem um método de desduplicação de dados e um arranjo de armazenamento.
[0005] De acordo com um primeiro aspecto, uma modalidade da presente invenção fornece um método de desduplicação de dados, onde o método é aplicado a um arranjo de armazenamento, onde o arranjo de armazenamento inclui um dispositivo de comutação, um primeiro controlador, e um dispositivo de cache, onde o primeiro controlador é conectado ao dispositivo de comutação; o dispositivo de cache é conectado ao dispositivo de comutação; e o dispositivo de comutação é conectado a um disco rígido no arranjo de armazenamento; e o método inclui:
receber, pelo primeiro controlador, um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de cache, e buscar um conjunto de índices de autovalor dos blocos de dados para o autovalor do bloco de dados a ser desduplicado;
quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, obter, pelo primeiro controlador, um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache por meio do dispositivo de comutação;
enviar, pelo primeiro controlador, uma instrução de leitura de dados para um controlador de um disco rígido alvo por meio do dispositivo de comutação, onde a instrução de leitura de dados porta um identificador do
3/48 dispositivo de cache e o endereço de cache;
ler, pelo controlador do disco rígido alvo, o bloco de dados a ser desduplicado a partir do endereço de cache por meio do dispositivo de comutação de acordo com o identificador do dispositivo de cache e o endereço de cache; e armazenar, pelo controlador do disco rígido alvo, o bloco de dados a ser desduplicado no interior do disco rígido alvo.
[0006] Com referência ao primeiro aspecto da presente invenção, em uma primeira maneira de implantação possível, o método inclui adicionalmente:
enviar, pelo controlador do disco rígido alvo, um endereço de armazenamento no disco rígido alvo para o primeiro controlador por meio do dispositivo de comutação, onde o endereço de armazenamento no disco rígido alvo inclui um identificador do controlador do disco rígido alvo e um endereço de armazenamento lógico para armazenar o bloco de dados a ser desduplicado no disco rígido alvo; e estabelecer, pelo primeiro controlador, um índice de autovalor do bloco de dados a ser desduplicado no conjunto de índices de autovalor dos blocos de dados, onde o índice de autovalor do bloco de dados a ser desduplicado inclui o autovalor do bloco de dados a ser desduplicado e o endereço de armazenamento no disco rígido alvo.
[0007] Com referência ao primeiro aspecto da presente invenção, em uma segunda maneira de implantação possível, o arranjo de armazenamento inclui adicionalmente um segundo controlador, onde o segundo controlador é conectado ao dispositivo de comutação; o segundo controlador armazena um endereço do bloco de dados a ser desduplicado, e o segundo controlador é um controlador doméstico de uma unidade lógica alvo na qual o bloco de dados a ser desduplicado está localizado; e o recebimento, pelo primeiro controlador, de um autovalor de um bloco de dados a ser
4/48 desduplicado a partir do dispositivo de cache inclui especificamente:
enviar, pelo dispositivo de cache, o autovalor do bloco de dados a ser desduplicado para o segundo controlador por meio do dispositivo de comutação;
determinar, pelo segundo controlador, que um controlador doméstico do autovalor do bloco de dados a ser desduplicado é o primeiro controlador; e enviar, pelo segundo controlador, o autovalor do bloco de dados a ser desduplicado para o primeiro controlador por meio do dispositivo de comutação.
[0008] Com referência à segunda maneira de implantação possível do primeiro aspecto da presente invenção, em uma terceira maneira de implantação possível, quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o método inclui adicionalmente: enviar, pelo primeiro controlador, uma notificação para o segundo controlador por meio do dispositivo de comutação, onde a notificação porta o endereço de armazenamento no disco rígido alvo; e estabelecer, pelo segundo controlador de acordo com a notificação, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e o endereço de armazenamento no disco rígido alvo.
[0009] Com referência à segunda maneira de implantação possível do primeiro aspecto da presente invenção, em uma quarta maneira de implantação possível, o método inclui adicionalmente: estabelecer, pelo segundo controlador, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e um endereço do primeiro controlador.
[0010] De acordo com um segundo aspecto, uma modalidade da
5/48 presente invenção fornece um arranjo de armazenamento, onde o arranjo de armazenamento inclui um dispositivo de comutação, um primeiro controlador, e um dispositivo de cache, onde o primeiro controlador é conectado ao dispositivo de comutação; o dispositivo de cache é conectado ao dispositivo de comutação; e o dispositivo de comutação é conectado a um disco rígido no arranjo de armazenamento;
o primeiro controlador é configurado para receber um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de cache, e buscar um conjunto de índices de autovalor dos blocos de dados para o autovalor do bloco de dados a ser desduplicado;
quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o primeiro controlador é configurado adicionalmente para obter um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache por meio do dispositivo de comutação;
o primeiro controlador é configurado adicionalmente para enviar uma instrução de leitura de dados para um controlador de um disco rígido alvo por meio do dispositivo de comutação, onde a instrução de leitura de dados porta um identificador do dispositivo de cache e o endereço de cache;
o controlador do disco rígido alvo é configurado para ler o bloco de dados a ser desduplicado a partir do endereço de cache por meio do dispositivo de comutação de acordo com o identificador do dispositivo de cache e o endereço de cache; e o controlador do disco rígido alvo é configurado adicionalmente para armazenar o bloco de dados a ser desduplicado no interior do disco rígido alvo.
[0011] Com referência ao segundo aspecto da presente invenção, em uma primeira maneira de implantação possível, o controlador do disco rígido alvo é configurado adicionalmente para enviar um endereço de
6/48 armazenamento no disco rígido alvo para o primeiro controlador por meio do dispositivo de comutação, onde o endereço de armazenamento no disco rígido alvo inclui um identificador do controlador do disco rígido alvo e um endereço de armazenamento lógico para armazenar o bloco de dados a ser desduplicado no disco rígido alvo; e o primeiro controlador é configurado adicionalmente para estabelecer um índice de autovalor do bloco de dados a ser desduplicado no conjunto de índices de autovalor dos blocos de dados, onde o índice de autovalor do bloco de dados a ser desduplicado inclui o autovalor do bloco de dados a ser desduplicado e o endereço de armazenamento no disco rígido alvo.
[0012] Com referência ao segundo aspecto da presente invenção, em uma segunda maneira de implantação possível, o arranjo de armazenamento inclui adicionalmente um segundo controlador, onde o segundo controlador é conectado ao dispositivo de comutação; o segundo controlador é configurado para armazenar um endereço do bloco de dados a ser desduplicado, e o segundo controlador é um controlador doméstico de uma unidade lógica alvo na qual o bloco de dados a ser desduplicado está localizado; e o recebimento, pelo primeiro controlador, do autovalor do bloco de dados a ser desduplicado a partir do dispositivo de cache inclui especificamente:
enviar, pelo dispositivo de cache, o autovalor do bloco de dados a ser desduplicado para o segundo controlador por meio do dispositivo de comutação;
determinar, pelo segundo controlador, que um controlador doméstico do autovalor do bloco de dados a ser desduplicado é o primeiro controlador; e enviar, pelo segundo controlador, o autovalor do bloco de dados a ser desduplicado para o primeiro controlador por meio do dispositivo
7/48 de comutação.
[0013] Com referência à segunda maneira de implantação possível do segundo aspecto da presente invenção, em uma terceira maneira de implantação possível, quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o primeiro controlador é configurado adicionalmente para enviar uma notificação para o segundo controlador por meio do dispositivo de comutação, onde a notificação porta o endereço de armazenamento no disco rígido alvo; e o segundo controlador é configurado adicionalmente para estabelecer, de acordo com a notificação, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e o endereço de armazenamento no disco rígido alvo.
[0014] Com referência à segunda maneira de implantação possível do segundo aspecto da presente invenção, em uma quarta maneira de implantação possível, o segundo controlador é configurado adicionalmente para estabelecer uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e um endereço do primeiro controlador.
[0015] De acordo com o método de desduplicado de dados e com o arranjo de armazenamento fornecidos nas modalidades da presente invenção, um controlador é conectado a um dispositivo de cache por meio de um dispositivo de comutação, um primeiro controlador recebe um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de cache, e busca um conjunto de índices de autovalor dos blocos de dados para o autovalor do bloco de dados a ser desduplicado, e quando o mesmo autovalor não é encontrado, o primeiro controlador envia um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache para um controlador de um disco rígido alvo, e o controlador do disco rígido alvo lê o bloco de dados a ser desduplicado a partir do endereço de cache do bloco de dados a ser
8/48 desduplicado. O dispositivo de cache implanta o cálculo de uma impressão digital do bloco de dados a ser desduplicado, desse modo economizando recursos de computação do controlador. Durante o processo de armazenar o bloco de dados a ser desduplicado no interior do disco rígido alvo, o primeiro controlador fornece somente o endereço de cache do bloco de dados a ser desduplicado, e o controlador do disco rígido alvo lê diretamente o bloco de dados a ser desduplicado a partir do endereço de cache, desse modo economizando recursos de computação e recursos da memória do primeiro controlador e aperfeiçoando o desempenho do arranjo de armazenamento.
BREVE DESCRIÇÃO DOS DESENHOS [0016] Para descrever as soluções técnicas nas modalidades da presente invenção mais claramente, segue-se uma breve apresentação dos desenhos anexos exigida para descrever as modalidades. Os desenhos anexos na descrição a seguir mostram meramente algumas modalidades da presente invenção, e outros desenhos podem ainda ser derivados a partir desses desenhos anexos.
[0017] A Figura 1 é um diagrama estrutural de um arranjo de armazenamento na técnica anterior;
[0018] A Figura 2 é um diagrama estrutural de um arranjo de armazenamento de acordo com uma modalidade da presente invenção;
[0019] A Figura 3 é um fluxograma de um processamento de uma solicitação de gravar dados de acordo com uma modalidade da presente invenção;
[0020] A Figura 4 é um fluxograma de um processamento de uma solicitação de gravar dados de acordo com uma modalidade da presente invenção;
[0021] A Figura 5 é um fluxograma de um processamento de uma solicitação de leitura de dados de acordo com uma modalidade da presente invenção;
9/48 [0022] A Figura 6 é um diagrama esquemático de um conjunto de índices de autovalor dos blocos de dados; e [0023] A Figura 7 é um fluxograma de um processamento de desduplicação de dados de acordo com uma modalidade da presente invenção.
DESCRIÇÃO DE MODALIDADES [0024] A seguir se descrevem claramente as soluções técnicas nas modalidades da presente invenção com referência aos desenhos anexos nas modalidades da presente invenção. Evidentemente, as modalidades descritas são meramente algumas, mas não todas as modalidades da presente invenção. Todas as outras modalidades obtidas com base nas modalidades da presente invenção estarão abrangidas pelo escopo de proteção da presente invenção.
[0025] Um arranjo de armazenamento fornecido nas modalidades da presente invenção, tal como um arranjo de armazenamento mostrado na Figura 2, inclui um gerenciador de entrada/saída A, um controlador A, um gerenciador de entrada/saída B, um controlador B, um dispositivo de comutação A, um dispositivo de comutação B, e um dispositivo de cache M. O controlador A inclui uma CPU A e uma memória A, onde a CPU A se comunica com a memória A por meio de um barramento; e o controlador B inclui uma CPU B e uma memória B, onde a CPU B se comunica com a memória B por meio de um barramento. O gerenciador de entrada/saída A é conectado ao dispositivo de comutação A e ao dispositivo de comutação B, e o gerenciador de entrada/saída B é conectado ao dispositivo de comutação A e ao dispositivo de comutação B. O dispositivo de comutação A é interconectado ao dispositivo de comutação B. O dispositivo de comutação A e o dispositivo de comutação B são ambos conectados ao dispositivo de cache M. O dispositivo de cache M será descrito em detalhe abaixo. O controlador A é conectado ao dispositivo de comutação A e ao dispositivo de comutação B, e o controlador B é conectado
10/48 ao dispositivo de comutação A e ao dispositivo de comutação B. Com base na descrição supracitada, uma arquitetura totalmente interconectada é formada pelo gerenciador de entrada/saída A, o gerenciador de entrada/saída B, o controlador A, e o controlador B ao redor do dispositivo de comutação A e do dispositivo de comutação B. No arranjo de armazenamento mostrado na Figura 2, o dispositivo de comutação A é conectado a todos os discos rígidos, e o dispositivo de comutação B também é conectado a todos os discos rígidos. Tanto o controlador A quanto o controlador B se comunicam com todos os discos rígidos mostrados na Figura 2. Especificamente, o controlador A se comunica com todos os discos rígidos por meio do dispositivo de comutação A, e o controlador B se comunica com todos os discos rígidos por meio do dispositivo de comutação B. O controlador A é configurado para virtualizar os discos rígidos para formar uma unidade lógica LU A, que está disponível para um hospedeiro A. A LU A é montada no hospedeiro A, e o hospedeiro A realiza uma operação de acesso a dados na LU A por meio do controlador A. No presente documento, a LU A é hospedada no controlador A, isto é, o controlador A é um controlador doméstico da LU A. De modo similar, o controlador B é configurado para virtualizar os discos rígidos para formar uma unidade lógica LU B, que está disponível para um hospedeiro B. A LU B é montada no hospedeiro B, e o hospedeiro B realiza uma operação de acesso a dados na LU B por meio do controlador B. No presente documento, a LU B é hospedada no controlador B, isto é, o controlador B é um controlador doméstico da LU B. Um hospedeiro no presente documento pode ser um hospedeiro físico (ou chamado de um servidor físico) ou um hospedeiro virtual (ou chamado de um servidor virtual). A unidade lógica LU é de modo geral chamada de um número de unidade lógica (Número de Unidade Lógica, LUN) na indústria. Alocar um LUN para um hospedeiro na verdade quer dizer alocar um identificador de uma LU no hospedeiro, de modo que a LU seja montada no hospedeiro. Portanto, a LU e o LUN têm o mesmo significado no presente
11/48 documento. No arranjo de armazenamento mostrado na Figura 2, os dispositivos de comutação A e B podem ser dispositivos de comutação PCIe, ou podem ser dispositivos de comutação de barramento de transmissão de memória não volátil expressa (Memória Não Volátil expressa, NVMe), dispositivos de comutação de interface de sistema de computador pequeno anexado em série (SCSI anexado em série, SAS), ou similares, não havendo uma limitação às modalidades da presente invenção. Quando os dispositivos de comutação A e B são dispositivos de comutação PCIe, um disco rígido conectado aos dispositivos de comutação PCIe é um disco rígido com uma interface de protocolo PCIe; quando os dispositivos de comutação A e B são dispositivos de comutação NVMe, um disco rígido conectado aos dispositivos de comutação NVMe é um disco rígido com uma interface de protocolo NVMe; quando os dispositivos de comutação A e B são dispositivos de comutação SAS, um disco rígido conectado aos dispositivos de comutação SAS é um disco rígido com uma interface de protocolo SAS. Os discos rígidos mostrados na Figura 2 podem ser discos rígidos mecânicos, discos de estado sólido (Disco de Estado Sólido, SSD), ou discos rígidos de outras mídias. No que se refere aos discos rígidos no arranjo de armazenamento mostrado na Figura 2, mídias de armazenamento de discos diferentes podem ser diferentes, de modo que um arranjo de disco rígido híbrido de armazenamento seja formado, não havendo uma limitação às modalidades da presente invenção.
[0026] O dispositivo de cache M pode ser especificamente um dispositivo de armazenamento formado por um meio de armazenamento volátil ou um meio de armazenamento não volátil, tal como uma memória de mudança de fase (Memória de Mudança de Fase, PCM), ou pode ser outro meio de armazenamento não volátil que seja adequado para ser usado como um dispositivo de cache, não havendo uma limitação às modalidades da presente invenção. O dispositivo de cache M é configurado para cache de dados. A seguir se descreve o dispositivo de cache M com referência a modalidades
12/48 específicas da presente invenção. Nas modalidades da presente invenção, o fato do dispositivo de comutação A ser um dispositivo de comutação PCIe, o dispositivo de comutação B ser um dispositivo de comutação PCIe e o disco rígido ser um SSD com uma interface de protocolo PCIe é usado como um exemplo.
[0027] No arranjo de armazenamento mostrado na Figura 2, o gerenciador de entrada/saída A recebe uma solicitação de gravar dados, enviada por um hospedeiro. Em uma maneira de implantação, o controlador A é um controlador doméstico do gerenciador de entrada/saída A. Portanto, o gerenciador de entrada/saída A recebe uma solicitação de operação de dados enviada pelo hospedeiro. Em um caso em que uma política de enviar solicitação do gerenciador de entrada/saída A não é mudada, a solicitação é enviada para o controlador A por padrão de acordo com a solicitação de operação de dados, de modo que o controlador A seja chamado de um controlador doméstico do gerenciador de entrada/saída A. Em uma modalidade da presente invenção, o gerenciador de entrada/saída A recebe uma solicitação de gravar dados enviada pelo hospedeiro, e envia a solicitação de gravar dados para o controlador A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. No que se refere ao dispositivo de comutação PCIe específico por meio do qual a solicitação é remetida, o mesmo pode ser determinado de acordo com uma regra predefinida. Uma vez que um dispositivo de comutação PCIe seja selecionado, o gerenciador de entrada/saída A se comunica subsequentemente com o controlador A por meio desse dispositivo de comutação PCIe. Certamente, o gerenciador de entrada/saída A pode também selecionar um dispositivo de comutação PCIe aleatoriamente para se comunicar com o controlador A, não havendo uma limitação em função dessa modalidade da presente invenção. Essa modalidade da presente invenção usa um exemplo em que o gerenciador de entrada/saída A seleciona o dispositivo de comutação PCIe A para se comunicar com o
13/48 controlador A.
[0028] A solicitação de gravar dados recebidos pelo gerenciador de entrada/saída A porta um endereço de dados a serem gravados. O endereço dos dados a serem gravados inclui um identificador de uma LU alvo de dados a serem gravados, um endereço de bloco lógico (Endereço de Bloco Lógico, LBA) dos dados a serem gravados, e um comprimento dos dados a serem gravados. O gerenciador de entrada/saída A envia a solicitação de gravar dados para o controlador A. O controlador A recebe a solicitação de gravar dados, e determina, de acordo com o identificador da LU alvo dos dados a serem gravados no endereço dos dados a serem gravados, se o controlador A é ou não um controlador doméstico da LU alvo.
[0029] Quando o controlador A é o controlador doméstico da LU alvo, isto é, a LU alvo é gerada pelo controlador A virtualizando-se discos rígidos e fornecida para o hospedeiro. O controlador A determina um dispositivo de cache usado para armazenar em cache os dados a serem gravados, que é o dispositivo de cache M nessa modalidade da presente invenção. Uma maneira de implantação é: o controlador A instrui, de acordo com a solicitação de gravar dados, o dispositivo de cache M para alocar um endereço de cache para dados a serem gravados, e o dispositivo de cache M aloca um endereço de cache de acordo com um comprimento dos dados a serem gravados. O controlador A obtém o endereço de cache alocado pelo dispositivo de cache M para os dados a serem gravados (o endereço de cache alocado pelo dispositivo de cache M para os dados a serem gravados será doravante chamado de um endereço de cache M e em uma maneira de implantação, o endereço de cache inclui um endereço de partida e um comprimento). O controlador A envia um identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A. O gerenciador de entrada/saída A recebe o identificador do dispositivo de cache M e o endereço de cache M que são enviados pelo
14/48 controlador A, e grava os dados a serem gravados no endereço de cache M de acordo com o identificador do dispositivo de cache M e o endereço de cache M (ou pode gravar diretamente os dados a serem gravados no endereço de cache M). O controlador A obtém somente o endereço de cache M alocado para os dados a serem gravados, e o gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A, o qual, comparado com a técnica anterior, economiza recursos de computação da CPU do controlador A e recursos da memória do controlador A e aumenta a eficiência da gravação de dados.
[0030] O controlador A estabelece uma correspondência entre o endereço dos dados a serem gravados, o identificador do dispositivo de cache M e o endereço de cache M e, portanto, quando lê os dados a serem gravados, o controlador A envia o endereço de cache M dos dados a serem gravados no gerenciador de entrada/saída A, e o gerenciador de entrada/saída A pode ler os dados a serem gravados a partir do endereço de cache M dos dados a serem gravados (ou pode ler diretamente os dados a serem gravados a partir do endereço de cache M dos dados a serem gravados), desse modo economizando recursos de computação da CPU do controlador A e recursos da memória do controlador A e aumentando a eficiência dos dados de leitura.
[0031] Após as condições serem atendidas, se o arranjo de armazenamento não realizar a desduplicação de dados, o dispositivo de cache M armazena os dados a serem gravados dentro de um SSD alvo do arranjo de armazenamento. O SSD alvo quer dizer um SSD para armazenar os dados a serem gravados. Um processo específico de gravar os dados a serem gravados no SSD alvo pode ser: o controlador A envia o identificador do dispositivo de cache M e o endereço de cache M para um controlador do SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. O controlador do SSD alvo lê diretamente os dados a serem gravados a partir do endereço de cache M por meio do dispositivo de
15/48 comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do dispositivo de cache M e com o endereço de cache M e armazena os dados a serem gravados. O controlador do SSD alvo envia um endereço de armazenamento dos dados a serem gravados no SSD alvo para o controlador A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. O endereço de armazenamento dos dados a serem gravados no SSD alvo inclui um identificador do controlador do SSD alvo e um endereço de armazenamento lógico para armazenar os dados a serem gravados no SSD alvo. O controlador A estabelece uma correspondência entre o endereço dos dados a serem gravados e o endereço de armazenamento dos dados a serem gravados no SSD alvo.
[0032] O processo supracitado é especificamente mostrado na Figura 3.
[0033] Etapa 301: Um hospedeiro envia uma solicitação de gravar dados para um gerenciador de entrada/saída A.
[0034] O gerenciador de entrada/saída A é um dispositivo de gerenciamento para receber entrada/saída em um arranjo de armazenamento, e é responsável por receber uma solicitação de operação de dados enviada pelo hospedeiro e avançar a solicitação de operação de dados para um controlador. Em uma modalidade da presente invenção, o hospedeiro envia uma solicitação de gravar dados que porta um endereço de dados a serem gravados no gerenciador de entrada/saída A. Exemplificativamente, o protocolo de interface de sistema de computador pequeno (Interface de Sistema de Computador Pequeno, SCSI), isto é, uma solicitação de gravar dados de protocolo SCSI, pode ser usado para a solicitação de gravar dados. Certamente, outros protocolos também podem ser usados, não havendo uma limitação a essa modalidade da presente invenção.
[0035] Etapa 302: Enviar a solicitação de gravar dados para um controlador A.
16/48 [0036] Nessa modalidade da presente invenção, o gerenciador de entrada/saída A de modo geral se comunica com um controlador específico. O gerenciador de entrada/saída A pode estabelecer uma correspondência com um controlador de múltiplas maneiras, por exemplo, de acordo com uma carga do controlador, ou de acordo com um algoritmo de seleção de trajetória específica, não havendo uma limitação pela presente invenção. O gerenciador de entrada/saída A recebe a solicitação de gravar dados, e envia a solicitação de gravar dados para o controlador A por meio de um dispositivo de comutação PCIe A ou de um dispositivo de comutação PCIe B. Nessa modalidade da presente invenção, o recebimento pelo gerenciador de entrada/saída A de uma solicitação de gravar dados e o envio, pelo mesmo, da solicitação de gravar dados para o controlador A por meio do dispositivo de comutação PCIe A é usado como um exemplo.
[0037] Etapa 303: O controlador A obtém um endereço de cache de dados a serem gravados.
[0038] O controlador A recebe a solicitação de gravar dados enviada pelo gerenciador de entrada/saída A, e determina um dispositivo de cache usado para armazenar em cache os dados a serem gravados, que é um dispositivo de cache M nessa modalidade da presente invenção. Em uma maneira de implantação, o dispositivo de cache M aloca um segmento de endereços de cache para o controlador A. No segmento de endereços de cache, o controlador A aloca um endereço de cache M para os dados a serem gravados de acordo com o comprimento dos dados a serem gravados. Em outra maneira de implantação, o controlador A envia uma instrução para o dispositivo de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B, onde a instrução porta o comprimento dos dados a serem gravados e instrui o dispositivo de cache M a alocar um endereço de cache para os dados a serem gravados. O controlador A obtém o endereço de cache M.
17/48 [0039] Etapa 304: Enviar um identificador do dispositivo de cache M e o endereço de cache M.
[0040] O controlador A obtém o endereço de cache M e envia o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A, onde o identificador do dispositivo de cache M é um endereço de dispositivo.
[0041] Etapa 305: O hospedeiro envia os dados a serem gravados para o gerenciador de entrada/saída A.
[0042] O gerenciador de entrada/saída A recebe o identificador do dispositivo de cache M e o endereço de cache M que são enviados pelo controlador A, e recebe os dados a serem gravados enviados pelo hospedeiro.
[0043] Etapa 306: Gravar os dados a serem gravados no endereço de cache M.
[0044] O gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A de acordo com o identificador do dispositivo de cache M e o endereço de cache M. O gerenciador de entrada/saída A recebe, por meio do dispositivo de comutação PCIe A, uma resposta indicando que os dados a serem gravados estão gravados com sucesso que é enviada pelo dispositivo de cache M. O gerenciador de entrada/saída A envia uma resposta indicando que a solicitação de gravar dados está concluída para o hospedeiro, e notifica o hospedeiro que a operação de solicitação de gravação está concluída.
[0045] Etapa 307: Notificar o controlador A que os dados a serem gravados estão gravados no endereço de cache M.
[0046] O gerenciador de entrada/saída A grava os dados a serem gravados no endereço de cache M com sucesso, e notifica o controlador A que os dados a serem gravados estão gravados no endereço de cache M.
[0047] Etapa 308: O controlador A estabelece uma correspondência entre um endereço de dados a serem gravados, o dispositivo
18/48 de cache M e o endereço de cache M.
[0048] O controlador A recebe a notificação enviada pelo gerenciador de entrada/saída A, e estabelece uma correspondência entre o endereço dos dados a serem gravados, o dispositivo de cache M e o endereço de cache M.
[0049] O dispositivo de cache M aloca o endereço de cache M para os dados a serem gravados, desse modo estabelecendo uma correspondência entre o endereço dos dados a serem gravados e o endereço de cache M. O dispositivo de cache M pode obter o endereço dos dados a serem gravados a partir de uma instrução de alocação de endereço de cache enviada pelo controlador A, e após alocar o endereço de cache M, o dispositivo de cache M estabelece uma correspondência entre o endereço dos dados a serem gravados e o endereço de cache M. Em outra maneira de implantação, o dispositivo de cache M é um dispositivo exclusivo de cache de uma LU alvo, e é usado somente para armazenar em cache dados da LU alvo, e, portanto, o dispositivo de cache M salva a correspondência entre a LU alvo, um LBA na LU alvo, e o endereço de cache por padrão. O dispositivo de cache M salva a correspondência entre a LU alvo, o LBA na LU alvo e um segmento de endereços de cache do dispositivo de cache M por padrão. Nesse segmento de endereços de cache, o dispositivo de cache M aloca o endereço de cache M para os dados a serem gravados.
[0050] Para aumentar a confiabilidade do arranjo de armazenamento e para armazenar em cache múltiplas cópias dos dados a serem gravados, na técnica anterior mostrada na Figura 1, o gerenciador de entrada/saída A envia os dados a serem gravados, a CPU A grava os dados a serem gravados na memória A, a CPU A lê os dados a serem gravados a partir da memória A, e envia os dados a serem gravados para um comutador B do PCIe por meio do comutador A do PCIe. O comutador B do PCIe envia os dados a serem gravados para a CPU B, e a CPU B grava os dados a serem
19/48 gravados na memória B. Nessa modalidade da presente invenção, para impedir a perda dos dados a serem gravados no dispositivo de cache M, o arranjo de armazenamento armazena em cache os dados a serem gravados dentro de múltiplos dispositivos de cache. Portanto, armazenar em cache os dados a serem gravados em dois dispositivos de cache é usado como um exemplo. O arranjo de armazenamento mostrado na Figura 2 inclui adicionalmente um dispositivo de cache N. O dispositivo de comutação PCIe A e o dispositivo de comutação PCIe B são ambos conectados ao dispositivo de cache N. Portanto, o controlador A recebe a solicitação de gravar dados enviada pelo gerenciador de entrada/saída A, e determina que o dispositivo de cache M sirva como um dispositivo principal de cache para armazenar em cache os dados a serem gravados, e que o dispositivo de cache N sirva como um dispositivo secundário de cache para armazenar em cache os dados a serem gravados. O controlador A obtém o endereço de cache que é alocado para os dados a serem gravados e localizado no dispositivo de cache M e no dispositivo de cache N. Em uma maneira de implantação, o controlador A envia uma instrução para cada um do dispositivo de cache M e o dispositivo de cache N, onde a instrução é usada para instruir tanto o dispositivo de cache M quanto o dispositivo de cache N a alocar um endereço de cache para os dados a serem gravados. A instrução porta o comprimento dos dados a serem gravados. O endereço de cache alocado pelo dispositivo de cache M para os dados a serem gravados é chamado de um endereço de cache M e o endereço de cache alocado pelo dispositivo de cache N para os dados a serem gravados é chamado de um endereço de cache N. O controlador A obtém o endereço de cache M e o endereço de cache N. O controlador A envia o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A, e envia um identificador do dispositivo de cache N e o endereço de cache N para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A. Em uma
20/48 implantação específica, o controlador A pode enviar o identificador do dispositivo de cache Meo endereço de cache M, e o identificador do dispositivo de cache N e o endereço de cache N, para o gerenciador de entrada/saída A por meio de uma mensagem, ou por meio de duas mensagens respectivamente, não havendo uma limitação no presente documento. Em outra maneira de implantação, o dispositivo de cache M aloca um segmento de endereços de cache exclusivo para o controlador A, que é usado somente para armazenar em cache dados de uma LU do controlador doméstico A. Nesse segmento de endereços de cache do dispositivo de cache M, o controlador A aloca diretamente o endereço de cache M para os dados a serem gravados. O dispositivo de cache N aloca um segmento de endereços de cache exclusivo para o controlador A, e no segmento de endereços de cache do dispositivo de cache N, o controlador A aloca diretamente o endereço de cache N para os dados a serem gravados.
[0051] O gerenciador de entrada/saída A recebe o identificador do dispositivo de cache Meo endereço de cache M, e o identificador do dispositivo de cache N e o endereço de cache N. O gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A de acordo com o identificador do dispositivo de cache Meo endereço de cache M; e o gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache N por meio do dispositivo de comutação PCIe A de acordo com o identificador do dispositivo de cache N e o endereço de cache N. O gerenciador de entrada/saída A recebe, por meio do dispositivo de comutação PCIe A, uma resposta indicando que os dados a serem gravados estão gravados com sucesso no endereço de cache M e instrui o controlador A a estabelecer uma correspondência entre o endereço dos dados a serem gravados, o identificador do dispositivo de cache M e o endereço de cache M. De modo similar, o controlador A estabelece uma correspondência entre o
21/48 endereço dos dados a serem gravados, o identificador do dispositivo de cache N, e o endereço de cache N.
[0052] Em outra maneira de implantação, o controlador A envia o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A. O gerenciador de entrada/saída A recebe o identificador do dispositivo de cache M e o endereço de cache M. O gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do dispositivo de cache M e o endereço de cache M. O controlador A envia uma instrução de gravar dados para o dispositivo de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B, onde a instrução de gravar dados porta o identificador do dispositivo de cache N e o endereço de cache N. O dispositivo de cache M armazena em cache os dados a serem gravados, e o dispositivo de cache M grava diretamente os dados a serem gravados no endereço de cache N por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com a instrução de gravar dados.
[0053] O controlador A precisa somente obter o endereço de cache M e o endereço de cache N que são alocados para os dados a serem gravados, de modo que o gerenciador de entrada/saída A implante a gravação dos dados a serem gravados dentro do dispositivo de cache M e do dispositivo de cache N, desse modo economizando recursos de computação da CPU do controlador A e recursos da memória do controlador A e aumentando a eficiência da gravação de dados.
[0054] Em outro caso, o gerenciador de entrada/saída A recebe uma solicitação de gravar dados de um hospedeiro. A solicitação de gravar dados porta um endereço de dados a serem gravados. O gerenciador de entrada/saída A envia a solicitação de gravar dados para o controlador A
22/48 avançando o dispositivo de comutação PCIe A. O controlador A recebe a solicitação de gravar dados enviada pelo gerenciador de entrada/saída A, e determina, de acordo com um identificador de uma LU alvo que é portada na solicitação de gravar dados, que o controlador A não é um controlador doméstico da LU alvo. Uma modalidade específica é mostrada na Figura 4.
[0055] Etapa 401: Um hospedeiro envia uma solicitação de gravar dados para um gerenciador de entrada/saída A.
[0056] O hospedeiro envia uma solicitação de gravar dados para o gerenciador de entrada/saída A, onde a solicitação de gravar dados porta um endereço de dados a serem gravados.
[0057] Etapa 402: Enviar a solicitação de gravar dados para um controlador A.
[0058] Nessa modalidade da presente invenção, o controlador A é um controlador doméstico do gerenciador de entrada/saída A. O gerenciador de entrada/saída A recebe a solicitação de gravar dados, e envia a solicitação de gravar dados para o controlador A por meio de um dispositivo de comutação PCIe A ou de um dispositivo de comutação PCIe B. Nessa modalidade da presente invenção, o recebimento, pelo gerenciador de entrada/saída A, de uma solicitação de gravar dados e o envio pelo mesmo da solicitação de gravar dados para o controlador A por meio do dispositivo de comutação PCIe A é usado como um exemplo.
[0059] Etapa 403: Determinar que o controlador A não é um controlador doméstico de uma LU alvo.
[0060] O controlador A recebe a solicitação de gravar dados enviada pelo gerenciador de entrada/saída A, e determina, de acordo com um identificador da LU alvo de dados a serem gravados que é portada na solicitação de gravar dados, que o controlador A não é um controlador doméstico da LU alvo. O controlador A consulta uma correspondência entre um controlador e uma LU, e determina que um controlador B é um controlador
23/48 doméstico da LU alvo.
[0061] Etapa 404: Enviar a solicitação de gravar dados para um controlador B.
[0062] O controlador A envia a solicitação de gravar dados para o controlador B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. Nessa modalidade, o envio, pelo dispositivo de comutação PCIe B, da solicitação de gravar dados para o controlador B é usado como um exemplo.
[0063] Etapa 405: Obter um endereço de cache dos dados a serem gravados.
[0064] O controlador B recebe a solicitação de gravar dados enviada pelo controlador A, e determina um dispositivo de cache usado para armazenar em cache os dados a serem gravados, que é o dispositivo de cache M nessa modalidade da presente invenção. Para uma maneira específica de implantação, consultar a maneira pela qual o controlador A obtém o endereço de cache dos dados a serem gravados a partir do dispositivo de cache M.
[0065] Etapa 406: Enviar um identificador de um dispositivo de cache M e um endereço de cache M para o controlador A.
[0066] O controlador B obtém o endereço de cache M e envia o identificador do dispositivo de cache M e o endereço de cache M para o controlador A por meio do dispositivo de comutação PCIe B. Em outra maneira de implantação, o identificador do dispositivo de cache M e o endereço de cache M podem também ser enviados diretamente para o controlador A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B.
[0067] Etapa 407: Enviar o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A.
[0068] O controlador A recebe o identificador do dispositivo de cache M e o endereço de cache M que são enviados pelo controlador B, e
24/48 envia o endereço de cache M dos dados a serem gravados por meio do dispositivo de comutação PCIe.
[0069] Etapa 408: O hospedeiro envia os dados a serem gravados para o gerenciador de entrada/saída A.
[0070] O gerenciador de entrada/saída A recebe o identificador do dispositivo de cache M e o endereço de cache M e responde à solicitação de gravar dados enviada pelo hospedeiro. O hospedeiro envia os dados a serem gravados para o gerenciador de entrada/saída A.
[0071] Etapa 409: Gravar os dados a serem gravados no endereço de cache M.
[0072] O gerenciador de entrada/saída A recebe os dados a serem gravados enviados pelo hospedeiro, e grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A de acordo com o identificador do dispositivo de cache M e o endereço de cache M. O gerenciador de entrada/saída A recebe, por meio do dispositivo de comutação PCIe A, uma resposta indicando que os dados a serem gravados estão gravados com sucesso que é enviada pelo dispositivo de cache M. O gerenciador de entrada/saída A envia uma resposta indicando que a solicitação de gravar dados está concluída para o hospedeiro, e notifica o hospedeiro que a operação de solicitação de gravação está concluída.
[0073] Etapa 410: Notificar o controlador B que os dados a serem gravados estão gravados no endereço de cache M.
[0074] O gerenciador de entrada/saída A grava os dados a serem gravados no endereço de cache M com sucesso, e notifica o controlador B que os dados a serem gravados estão gravados no endereço de cache M. Isso inclui especificamente que o gerenciador de entrada/saída A avança a notificação para o controlador A por meio do dispositivo de comutação PCIe A, e que o controlador A avança a notificação para o controlador B por meio do dispositivo de comutação PCIe B; ou, o gerenciador de entrada/saída A envia
25/48 diretamente a notificação para o controlador B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B.
[0075] Etapa 411: O controlador B estabelece uma correspondência entre um endereço de dados a serem gravados, o dispositivo de cache M e o endereço de cache M.
[0076] O controlador B recebe a notificação enviada pelo gerenciador de entrada/saída A, e estabelece uma correspondência entre o endereço dos dados a serem gravados, o dispositivo de cache M e o endereço de cache M.
[0077] Para saber como o dispositivo de cache M estabelece a correspondência entre o endereço dos dados a serem gravados e o endereço de cache M, consultar a descrição na modalidade supracitada, e detalhes não serão descritos novamente no presente documento.
[0078] Um dispositivo de cache N aloca um endereço de cache N para os dados a serem gravados, desse modo estabelecendo uma correspondência entre o endereço dos dados a serem gravados e o endereço de cache N. O dispositivo de cache N pode obter o endereço dos dados a serem gravados a partir de uma instrução de alocação de endereço de cache enviada pelo controlador A, e após alocar o endereço de cache N, o dispositivo de cache N estabelece uma correspondência entre o endereço dos dados a serem gravados e o endereço de cache N.
[0079] Para impedir a perda dos dados a serem gravados que estão armazenados em cache no dispositivo de cache M, quando os dados a serem gravados precisarem de múltiplos dispositivos de cache para servir como caches, em uma situação na qual o controlador A não é um controlador doméstico da LU alvo dos dados a serem gravados, o gerenciador de entrada/saída A envia uma solicitação de gravar dados para o controlador B. Quanto a um processo para isso, consultar a descrição na modalidade supracitada. Quanto a um processo para obter o endereço de cache dos dados
26/48 a serem gravados pelo controlador B, consultar a situação em que o controlador A é um controlador doméstico da LU alvo dos dados a serem gravados e o controlador A obtém endereços de cache de múltiplos dispositivos de cache. Para outras etapas, também consultar a descrição na modalidade supracitada, e detalhes não serão descritos novamente no presente documento.
[0080] Após o hospedeiro gravar os dados dentro do arranjo de armazenamento, o hospedeiro acessa os dados gravados, isto é, envia uma solicitação de leitura de dados. Um processo específico é mostrado na Figura
5.
[0081 ] Etapa 501: Enviar uma solicitação de leitura de dados.
[0082] Um hospedeiro envia uma solicitação de leitura de dados para um gerenciador de entrada/saída A, onde a solicitação de leitura de dados porta um endereço de dados a serem lidos. O endereço dos dados a serem lidos inclui um identificador de uma unidade lógica LU em que os dados a serem lidos estão localizados, um LBA dos dados a serem lidos, e um comprimento dos dados a serem lidos. Especificamente, o hospedeiro pode enviar a solicitação de leitura de dados para o gerenciador de entrada/saída A usando o protocolo SCSI, não havendo uma limitação pela presente invenção. Para facilidade de descrição, os dados a serem lidos aqui são os dados a serem gravados descritos acima.
[0083] Etapa 502: Enviar a solicitação de leitura de dados para um controlador A.
[0084] O gerenciador de entrada/saída A recebe a solicitação de leitura de dados enviada pelo hospedeiro, e envia a solicitação de leitura de dados para o controlador A por meio de um dispositivo de comutação PCIe A.
[0085] Etapa 503: O controlador A envia um identificador de um dispositivo de cache M e um endereço de cache M para o gerenciador de entrada/saída A.
27/48 [0086] Quando o controlador A é um controlador doméstico da LU em que os dados a serem lidos estão localizados e os dados a serem lidos são armazenados em cache em um dispositivo de cache tal como o dispositivo de cache M, uma correspondência entre o endereço dos dados a serem lidos, um identificador do dispositivo de cache, e o endereço de cache é consultada de acordo com a solicitação de leitura de dados, e o endereço de cache M usado para armazenar em cache os dados a serem lidos no dispositivo de cache M é determinado. Quando os dados a serem lidos ainda estão armazenados em cache no dispositivo de cache M, o endereço de cache dos dados a serem lidos no dispositivo de cache M é o endereço de cache M. O controlador A envia um identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A.
[0087] Etapa 504: Ler os dados a serem lidos a partir do endereço de cache M.
[0088] O gerenciador de entrada/saída A lê diretamente os dados a serem lidos a partir do endereço de cache M por meio do dispositivo de comutação PCIe A de acordo com o identificador do dispositivo de cache M e o endereço de cache M.
[0089] Etapa 505: Devolver os dados a serem lidos.
[0090] O gerenciador de entrada/saída A lê os dados a serem lidos a partir do endereço de cache M e devolve os dados a serem lidos para o hospedeiro.
[0091] Quando o gerenciador de entrada/saída A envia uma solicitação de consulta de dados a serem lidos para o controlador A por meio do dispositivo de comutação PCIe A de acordo com a solicitação de leitura de dados, e o controlador A não é um controlador doméstico da LU em que os dados a serem lidos estão localizados, o controlador A consulta uma correspondência entre a LU em que os dados a serem lidos estão localizados e
28/48 o controlador doméstico, e determina que um controlador B é um controlador doméstico da LU em que os dados a serem lidos estão localizados. O controlador A envia a solicitação de consulta de dados a serem lidos para o controlador B por meio de um dispositivo de comutação PCIe B. O fato de que os supracitados dados a serem gravados são ainda os dados a serem lidos mencionados no presente documento é usado como um exemplo. Portanto, o endereço dos dados a serem lidos é o endereço dos dados a serem gravados descrito acima. Quando os dados a serem lidos ainda estão armazenados em cache no dispositivo de cache M, o endereço de cache dos dados a serem lidos no dispositivo de cache M é o endereço de cache M. O controlador B consulta a correspondência entre o endereço dos dados a serem gravados, o identificador do dispositivo de cache M e o endereço de cache M, determina o identificador do dispositivo de cache M que armazena em cache os dados a serem lidos e o endereço de cache M e envia o identificador do dispositivo de cache M e o endereço de cache M para o controlador A por meio do dispositivo de comutação PCIe B. O controlador A envia o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A. O controlador B pode também enviar diretamente o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. Quanto a uma subsequente operação de leitura, consultar a operação de leitura na modalidade supracitada, e detalhes não serão descritos novamente no presente documento.
[0092] O fato de que os dados supracitados a serem gravados são ainda os dados a serem lidos mencionados no presente documento é usado como um exemplo. Portanto, um endereço de dados a serem lidos é o endereço dos dados a serem gravados descrito acima. Quando os dados a serem lidos já estão armazenados em um SSD alvo, um controlador doméstico da LU em que os dados a serem lidos estão localizados consulta uma
29/48 correspondência entre o endereço dos dados a serem lidos (o endereço dos dados a serem gravados) e um endereço de armazenamento dos dados a serem lidos no SSD alvo, obtém o endereço de armazenamento dos dados a serem lidos no SSD alvo, e envia o endereço de armazenamento dos dados a serem lidos no SSD alvo para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. O endereço de armazenamento dos dados a serem lidos no SSD alvo inclui um identificador de um controlador do SSD alvo e um endereço de armazenamento lógico dos dados a serem lidos no SSD alvo. O gerenciador de entrada/saída A lê diretamente os dados a serem lidos a partir do endereço de armazenamento lógico dos dados a serem lidos no SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o endereço de armazenamento dos dados a serem lidos no SSD alvo.
[0093] Na modalidade supracitada, quando os dados a serem lidos são parcialmente salvos no SSD alvo e parcialmente armazenados em cache no dispositivo de cache M nessa modalidade da presente invenção, conforme descrito acima, o gerenciador de entrada/saída A lê os dados diretamente a partir do endereço de cache por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o endereço de cache dos dados a serem lidos no dispositivo de cache; e o gerenciador de entrada/saída A lê dados diretamente a partir do endereço de armazenamento lógico no SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do controlador do SSD alvo e o endereço de armazenamento lógico dos dados a serem lidos no SSD alvo, o que não é descrito em detalhe no presente documento.
[0094] Quando múltiplos dispositivos de cache realizam uma operação de armazenar em cache os dados a serem lidos, de modo geral o controlador doméstico da LU em que os dados a serem lidos estão localizados
30/48 devolve, para o gerenciador de entrada/saída A, um identificador do dispositivo principal de cache M que armazena em cache os dados a serem lidos e o endereço de cache M. Para outras operações processuais, consultar a operação de leitura na modalidade supracitada, e detalhes não serão descritos novamente no presente documento.
[0095] No arranjo de armazenamento, a desduplicação de dados é realizada, o que pode economizar espaço de armazenamento e reduzir os custos de armazenamento. No arranjo de armazenamento mostrado na Figura 2 de acordo com a modalidade da presente invenção, o hospedeiro envia uma solicitação de gravar dados para o gerenciador de entrada/saída A, onde a solicitação de gravar dados porta um endereço de dados a serem gravados. O gerenciador de entrada/saída A envia a solicitação de gravar dados para o controlador A por meio do dispositivo de comutação PCIe A. Quando o controlador A é o controlador doméstico da LU alvo dos dados a serem gravados, o controlador A fornece o identificador do dispositivo de cache M e o endereço de cache M para o gerenciador de entrada/saída A. O gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do dispositivo de cache M e o endereço de cache M.
[0096] Antes que os dados a serem gravados armazenados em cache no dispositivo de cache M sejam armazenados dentro do SSD do arranjo de armazenamento, a desduplicação de dados é realizada, o que pode efetivamente economizar espaço de armazenamento e melhorar uma taxa de utilização do espaço de armazenamento. Usando o arranjo de armazenamento mostrado na Figura 2 como um exemplo, no que se relaciona aos dados armazenados no arranjo de armazenamento SSD, antes que os dados sejam armazenados pelo dispositivo de cache M dentro do SSD, a desduplicação de dados é realizada. Uma tecnologia de desduplicação de dados é dividir dados
31/48 em blocos de dados de acordo com uma regra predefinida e calcular um autovalor de cada bloco de dados. O autovalor de um bloco de dados é de modo geral calculado usando um algoritmo Hash (Hash). Uma operação Hash é realizada no bloco de dados para se obter um valor Hash, que é usado como um autovalor. Algoritmos Hash comuns incluem MD5, SHA1, SHA-256, SHA512, e similares. Por exemplo, se um autovalor de um bloco de dados A é o mesmo que um autovalor de um bloco de dados B já armazenado no SSD, o bloco de dados A e o bloco de dados B são idênticos. Portanto, o bloco de dados duplicado A é deletado do dispositivo de cache M e um endereço de armazenamento lógico para armazenar o bloco de dados B no SSD é usado como um endereço de armazenamento lógico do bloco de dados A no SSD.
[0097] Em uma implantação específica, a comparação de autovalores de blocos de dados é implantada por um controlador. Em virtude da desduplicação de dados ser realizada no arranjo de armazenamento, e cada bloco de dados exclusivo ter um autovalor, muitos autovalores são gerados. Para implantar um equilíbrio entre controladores no arranjo de armazenamento, cada controlador é responsável pela comparação de autovalores de alguns blocos de dados de acordo com um algoritmo de distribuição de autovalor de bloco de dados tal como um algoritmo de distribuição Hash. Desse modo, cada controlador mantém somente índices de autovalor de alguns dados exclusivos armazenados no arranjo de armazenamento de acordo com o algoritmo de distribuição de autovalor de bloco de dados, onde os índices de autovalor de alguns dados exclusivos são chamados de um conjunto de índices de autovalor. O controlador consulta o conjunto de índices de autovalor quanto a um autovalor de um bloco de dados que deve ser gravado dentro do SSD, e determina se o autovalor é ou não o mesmo que um autovalor no conjunto de índices de autovalor. Por exemplo, o controlador A precisa manter um conjunto de índices de autovalor A de acordo com o algoritmo de distribuição de autovalor, e, portanto, o controlador A é um controlador doméstico de todo
32/48 autovalor no conjunto de índices de autovalor A; ou, um controlador em que um autovalor a partir do conjunto de índices de autovalor A é o mesmo que um autovalor de um bloco de dados X é tanto um controlador doméstico do autovalor do bloco de dados X quanto um controlador doméstico de todo autovalor no conjunto de índices de autovalor A.
[0098] Especificamente, o conjunto de índices de autovalor é formado por índices de autovalor, conforme mostrado na Figura 6. Por exemplo, um índice de um autovalor 1 inclui o autovalor 1, um endereço de armazenamento de bloco de dados 1, e uma contagem de referência. O endereço de armazenamento de bloco de dados 1 é usado para representar um endereço de armazenamento de um bloco de dados exclusivo C em um SSD A ou um endereço de armazenamento do bloco de dados C em um dispositivo de cache. O endereço de armazenamento do bloco de dados C no SSD A pode incluir um identificador de um controlador do SSD A e um endereço de armazenamento lógico do bloco de dados C armazenado no SSD A. O endereço de armazenamento do bloco de dados C no dispositivo de cache inclui um identificador do dispositivo de cache e um endereço de cache. O autovalor 1 representa um autovalor do bloco de dados C. A contagem de referência representa uma quantidade de blocos de dados com o autovalor 1. Por exemplo, quando o bloco de dados A é armazenado no arranjo de armazenamento pela primeira vez, se a quantidade de blocos de dados com o autovalor 1 é 1, a contagem de referência é 1. Quando um bloco de dados D com o mesmo autovalor 1 é armazenado dentro do SSD novamente, o bloco de dados D não é salvo no SSD de acordo com um princípio de desduplicação de dados, mas a contagem de referência aumenta em 1 e é atualizada para 2. Em resumo, um endereço de armazenamento de bloco de dados em um índice de autovalor é um endereço de armazenamento de um bloco de dados em um dispositivo de cache ou um endereço de armazenamento do bloco de dados em um disco rígido alvo. O endereço de armazenamento do bloco de dados no
33/48 dispositivo de cache inclui um identificador do dispositivo de cache e um endereço de cache do bloco de dados no dispositivo de cache; e o endereço de armazenamento do bloco de dados no disco rígido alvo inclui um identificador de um controlador de um disco rígido alvo e um endereço de armazenamento lógico para armazenar o bloco de dados no disco rígido alvo. O índice de autovalor mostrado na Figura 6 é uma implantação meramente exemplificativa, e o índice de autovalor pode também ser um índice de múltiplos níveis. O índice pode ser qualquer forma de índice que possa ser usado para desduplicação de dados, não havendo uma limitação a essa modalidade da presente invenção.
[0099] No arranjo de armazenamento mostrado na Figura 2, o fato do controlador A servir como um controlador doméstico de uma LU alvo de um bloco de dados armazenados em cache no dispositivo de cache M é usado como um exemplo. Com referência à modalidade supracitada, após receber uma solicitação de gravar dados, o gerenciador de entrada/saída A obtém um identificador do dispositivo de cache M e o endereço de cache M a partir do controlador A. O gerenciador de entrada/saída A grava diretamente os dados a serem gravados no endereço de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do dispositivo de cache M e o endereço de cache M. O controlador A estabelece uma correspondência entre o endereço dos dados a serem gravados, o identificador do dispositivo de cache M e o endereço de cache M. Quando dados armazenados em cache em uma LU do controlador doméstico A são gravados a partir do dispositivo de cache M em um SSD, os dados no endereço de cache M são usados como um exemplo. Em geral, quando a desduplicação de dados está sendo realizada, um autovalor de um bloco de dados precisa ser calculado. Para calcular um autovalor de um bloco de dados, os dados precisam ser primeiro divididos de acordo com uma regra específica para se obter blocos de dados. Pode haver dois métodos para divisão em
34/48 blocos de dados: dividir os dados em blocos de dados de um comprimento fixo, ou dividir os dados em blocos de dados de comprimentos variáveis. Nessa modalidade da presente invenção, o fato dos dados serem divididos em blocos de dados de um comprimento fixo é usado como um exemplo. Por exemplo, os dados são divididos em blocos de dados de um tamanho de 4 KB. Exemplificativamente, os dados a serem gravados no endereço de cache M são divididos em diversos blocos de dados de um tamanho de 4 KB. O controlador A registra um identificador de uma LU de cada bloco de dados, um LBA do bloco de dados, e um comprimento do bloco de dados. O identificador da LU do bloco de dados, o LBA do bloco de dados, e o comprimento do bloco de dados são doravante chamados de um endereço de armazenamento de bloco de dados. O uso de um bloco de dados X em diversos blocos de dados de um tamanho de 4 KB como um exemplo (no presente documento o bloco de dados X é chamado de um bloco de dados a ser desduplicado, conhecido resumidamente como um bloco de dados a ser desduplicado), o controlador A envia uma solicitação de autovalor de bloco de dados para o dispositivo de cache M por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B, onde a solicitação de autovalor inclui um endereço do bloco de dados X. O dispositivo de cache M envia um autovalor do bloco de dados X para o controlador A por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B para realizar a desduplicação de dados. Conforme mostrado na Figura 7, um processo específico inclui:
[00100] Etapa 701: um dispositivo de cache M calcula um autovalor de um bloco de dados X.
[00101] Um controlador A envia para o dispositivo de cache M uma instrução de obter o autovalor do bloco de dados X, onde a instrução porta um endereço do bloco de dados X. O dispositivo de cache M recebe a instrução de obter o autovalor do bloco de dados X que é enviada pelo controlador A. Em um caso, o dispositivo de cache M armazena uma correspondência entre o
35/48 endereço do bloco de dados X e um endereço de cache B, e determina o bloco de dados X de acordo com o endereço do bloco de dados X que é portado na instrução de obter o autovalor do bloco de dados X, calcula o autovalor do bloco de dados X, e armazena em cache o autovalor do bloco de dados X em um endereço de cache X.
[00102] Etapa 702: Enviar o autovalor do bloco de dados X para o controlador A.
[00103] O dispositivo de cache M obtém o autovalor do bloco de dados X, e envia uma mensagem de resposta do autovalor do bloco de dados X para um controlador doméstico A de uma LU em que o bloco de dados X está localizado, onde a mensagem de resposta do autovalor do bloco de dados X porta o autovalor do bloco de dados X. Além disso, a mensagem de resposta do autovalor do bloco de dados X porta adicionalmente um identificador do dispositivo de cache M que armazena em cache o autovalor do bloco de dados X e o endereço de cache X do autovalor do bloco de dados X no dispositivo de cache M.
[00104] Etapa 703: Determinar um controlador doméstico do autovalor do bloco de dados X de acordo com um algoritmo de distribuição de autovalor.
[00105] Etapa 704: O controlador A consulta um conjunto de índices de autovalor A local.
[00106] Quando o controlador A é o controlador doméstico do autovalor do bloco de dados X, o controlador A consulta o conjunto de índices de autovalor A local, e determina se um autovalor igual ao autovalor do bloco de dados X existe ou não no conjunto de índices de autovalor A.
[00107] Quando um autovalor igual ao autovalor do bloco de dados X existe no conjunto de índices de autovalor A, as etapas 705a e 706a são realizadas. Conforme mostrado na Figura 6, o autovalor do bloco de dados X é o mesmo autovalor 1, isto é, o bloco de dados X é igual ao bloco de dados A.
36/48 [00108] Etapa 705a: O controlador A atualiza uma contagem de referência em um índice de um autovalor 1.
[00109] A contagem de referência no índice do autovalor 1 é 1, isto é, somente o bloco de dados A existe no arranjo de armazenamento. Constatase que o autovalor do bloco de dados X é o mesmo autovalor 1, e, portanto, a contagem de referência é atualizada para 2.
[00110] Etapa 706a: O controlador A instrui o dispositivo de cache M a deletar o bloco de dados X.
[00111] O controlador A instrui o dispositivo de cache M a deletar o bloco de dados X. O controlador A estabelece uma correspondência entre o endereço do bloco de dados X e o autovalor do bloco de dados X, ou o controlador A estabelece uma correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e um endereço de armazenamento do bloco de dados A.
[00112] É determinado na etapa 704 que o bloco de dados X é um bloco de dados duplicado. Portanto, o bloco de dados X não precisa ser salvo em um SSD, e o dispositivo de cache M é instruído a deletar o bloco de dados X.
[00113] Quando não existe autovalor igual ao autovalor do bloco de dados X no conjunto de índices de autovalor A, as etapas 705b, 706b, 707, 708, 709, e 710 são realizadas.
[00114] Etapa 705b: Obter um endereço de cache B do bloco de dados X armazenado em cache no dispositivo de cache M.
[00115] O controlador A obtém o endereço de cache B do bloco de dados X a partir do dispositivo de cache M por meio do dispositivo de comutação PCIe A de acordo com o endereço de cache X do autovalor do bloco de dados X no dispositivo de cache M.
[00116] Etapa 706b: Enviar um identificador do dispositivo de cache M e o endereço de cache B para um controlador de um SSD alvo.
37/48 [00117] O controlador A obtém o identificador do dispositivo de cache M e o endereço de cache B, e envia o identificador do dispositivo de cache M e o endereço de cache B para o controlador do SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B.
[00118] Etapa 707: O controlador do SSD alvo lê o bloco de dados X a partir do endereço de cache B.
[00119] O controlador do SSD alvo recebe o identificador do dispositivo de cache M e o endereço de cache B, e lê diretamente, de acordo com o identificador do dispositivo de cache M e o endereço de cache B, o bloco de dados X a partir do endereço de cache B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B.
[00120] Etapa 708: O controlador do SSD alvo envia um endereço de armazenamento do bloco de dados X no SSD alvo para o controlador A.
[00121] O controlador do SSD alvo lê o bloco de dados X a partir do endereço de cache B, e armazena o bloco de dados X dentro do SSD alvo. O controlador do SSD alvo envia um endereço de armazenamento do bloco de dados X no SSD alvo para o controlador A por meio do dispositivo de comutação PCIe A. O endereço de armazenamento do bloco de dados X no SSD alvo inclui um identificador do controlador do SSD alvo e um endereço de armazenamento lógico para armazenar o bloco de dados X no SSD alvo.
[00122] Etapa 709: O controlador A estabelece um índice de autovalor do bloco de dados X.
[00123] O controlador A recebe o endereço de armazenamento do bloco de dados X no SSD alvo, estabelece o índice de autovalor do bloco de dados X, e define a contagem de referência em 1. O controlador A estabelece uma correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço de armazenamento do bloco de dados X no SSD alvo. O controlador A também precisa registrar o endereço de cache X do autovalor do bloco de dados X. Quando o autovalor do bloco de dados X é
38/48 armazenado dentro do SSD, o controlador A também precisa registrar o endereço de armazenamento do autovalor do bloco de dados X no SSD alvo.
[00124] Em outro caso, o controlador A não é o controlador doméstico do autovalor do bloco de dados X, mas somente um controlador doméstico de uma LU em que o bloco de dados X está localizado. Nessa modalidade da presente invenção, o fato de um controlador B ser o controlador doméstico do autovalor do bloco de dados X é usado como um exemplo, e o controlador A envia o autovalor do bloco de dados X para o controlador B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. O controlador B recebe o autovalor do bloco de dados X que é enviado pelo controlador A, e consulta um conjunto de índices de autovalor B do controlador B. Quando o controlador B constata que um autovalor igual ao autovalor do bloco de dados X existe no conjunto de índices de autovalor A, por exemplo, um autovalor de um bloco de dados R é igual ao autovalor do bloco de dados X, o controlador B instrui o dispositivo de cache M a deletar o bloco de dados X. Isso inclui especificamente que o controlador B envia uma instrução de deletar para o controlador A por meio do dispositivo de comutação PCIe B. O controlador A envia a instrução de deletar para o dispositivo de cache M por meio do dispositivo de comutação PCIe A, e o dispositivo de cache M deleta o bloco de dados X. O controlador B atualiza a contagem de referência do índice do autovalor igual ao autovalor do bloco de dados X, isto é, aumenta a contagem de referência em 1. Quando o bloco de dados R já está armazenado no SSD, o endereço de armazenamento do bloco de dados R em um índice do bloco de dados R inclui um identificador de um controlador do SSD que armazena o bloco de dados R e um endereço de armazenamento lógico para armazenar o bloco de dados R no SSD. Quando o bloco de dados R está no dispositivo de cache, o endereço de armazenamento do bloco de dados R no índice do bloco de dados R inclui o identificador do dispositivo de cache e um endereço de cache. O controlador A estabelece uma correspondência entre o
39/48 endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço do controlador doméstico B do autovalor do bloco de dados X, e, portanto, o controlador A não exige uma correspondência entre o endereço de cada bloco de dados, o autovalor do bloco de dados, e o endereço de armazenamento do bloco de dados, e um montante de dados armazenados pelo controlador A é reduzido efetivamente. Alternativamente, o controlador A estabelece uma correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço de armazenamento do bloco de dados R. Quando ler o bloco de dados X subsequentemente, o controlador A pode determinar diretamente o endereço de armazenamento do bloco de dados R consultando a correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço de armazenamento do bloco de dados R, e o gerenciador de entrada/saída A lê diretamente o bloco de dados X a partir do endereço de armazenamento do bloco de dados R por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B, desse modo aumentando a eficiência dos dados de leitura.
[00125] Quando o controlador A é somente o controlador doméstico da LU em que o bloco de dados X está localizado, mas não é o controlador doméstico do autovalor do bloco de dados X, o controlador B constata que não existe autovalor igual ao autovalor do bloco de dados X no conjunto de índices de autovalor B, o controlador B obtém o endereço de cache B do bloco de dados X no dispositivo de cache M enviando uma solicitação para o controlador A por meio do dispositivo de comutação PCIe B. O controlador A envia a solicitação para o dispositivo de cache M por meio do dispositivo de comutação PCIe A. O dispositivo de cache M envia o identificador do dispositivo de cache M e o endereço de cache B para o controlador B. O controlador B envia o identificador do dispositivo de cache M e o endereço de cache B para o controlador do SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B (no presente documento o dispositivo de
40/48 comutação PCIe A é usado como um exemplo). O controlador do SSD alvo lê diretamente o bloco de dados X a partir do endereço de cache B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o identificador do dispositivo de cache M e o endereço de cache B, e armazena o bloco de dados X dentro do SSD alvo. O controlador do SSD alvo envia o endereço de armazenamento do bloco de dados X no SSD alvo para o controlador B por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. O controlador B recebe o endereço de armazenamento do bloco de dados X no SSD alvo, estabelece o índice de autovalor do bloco de dados X, e define uma contagem de referência no índice em 1. O controlador B também precisa registrar o endereço de cache X do autovalor do bloco de dados X. Quando o autovalor do bloco de dados X é armazenado dentro do SSD, o controlador B também precisa registrar o endereço de armazenamento do autovalor do bloco de dados X no SSD.
[00126] O controlador B recebe o endereço de armazenamento do bloco de dados X no SSD alvo, e envia uma notificação para o controlador A. A notificação porta o endereço de armazenamento do bloco de dados X no SSD alvo. O controlador A estabelece uma correspondência entre o endereço do bloco de dados X, o autovalor, e o endereço de armazenamento do bloco de dados X no SSD alvo de acordo com a notificação enviada pelo controlador B. Em outra maneira de implantação, quando o controlador A é somente o controlador doméstico da LU em que o bloco de dados X está localizado, mas não o controlador doméstico do autovalor do bloco de dados X, o controlador A estabelece uma correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço do controlador B.
[00127] De acordo com o arranjo de armazenamento nessa modalidade da presente invenção, o dispositivo de cache implanta o cálculo de uma impressão digital do bloco de dados X, o que economiza recursos de computação do controlador. Durante um processo de armazenar o bloco de
41/48 dados X dentro do SSD alvo, o controlador fornece somente o identificador do dispositivo de cache M e o endereço de cache B, e o controlador do SSD alvo lê diretamente o bloco de dados X a partir do endereço de cache B, o que economiza recursos de computação e recursos da memória do controlador e aperfeiçoa o desempenho do arranjo de armazenamento.
[00128] Com base no arranjo de armazenamento mostrado na Figura 2, os dados são gravados no SSD de acordo com a supracitada operação de desduplicação de dados. Quando o gerenciador de entrada/saída A recebe uma solicitação de leitura de dados, por exemplo, uma solicitação para ler o bloco de dados X, onde a solicitação de leitura de dados porta o endereço do bloco de dados X, o gerenciador de entrada/saída A envia a solicitação de leitura de dados para o controlador A por meio do dispositivo de comutação PCIe A. O controlador A determina que o controlador A é o controlador doméstico da LU em que o bloco de dados X está localizado. Em uma maneira de implantação, o controlador A busca a correspondência entre o endereço do bloco de dados a serem lidos X, o autovalor do bloco de dados X, e o endereço de armazenamento do bloco de dados X no SSD alvo, para determinar o endereço de armazenamento do bloco de dados X no SSD alvo. O controlador A envia o endereço de armazenamento do bloco de dados X no SSD alvo para o gerenciador de entrada/saída A por meio do dispositivo de comutação PCIe A. O gerenciador de entrada/saída A lê diretamente o bloco de dados X a partir de um endereço de armazenamento lógico do bloco de dados X no SSD alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com o endereço de armazenamento do bloco de dados a serem lidos, o bloco de dados X, no SSD alvo. Em outra maneira de implantação, o controlador A busca a correspondência entre o endereço do bloco de dados X, o autovalor do bloco de dados X, e o endereço do controlador doméstico do autovalor do bloco de dados X, para determinar o controlador doméstico B do autovalor do bloco de dados X, consulta um índice
42/48 de autovalor do bloco de dados X no controlador B, para determinar o endereço de armazenamento do bloco de dados X no SSD alvo; ou determina o controlador doméstico B do autovalor do bloco de dados X, e consulta um índice de autovalor de um bloco de dados com um autovalor igual ao autovalor do bloco de dados X no controlador B, para determinar o endereço de armazenamento do bloco de dados com um autovalor igual ao autovalor do bloco de dados X, e então lê dados do endereço de armazenamento do bloco de dados com um autovalor igual ao autovalor do bloco de dados X. Quando o controlador A é tanto o controlador doméstico da LU em que o bloco de dados X está localizado quanto o controlador doméstico do autovalor do bloco de dados X, em outra maneira de implantação, o controlador A busca a correspondência entre o endereço do bloco de dados a serem lidos X e o autovalor do bloco de dados X, e consulta, de acordo com o autovalor do bloco de dados X, o conjunto de índices de autovalor A mantido pelo controlador A, para determinar o endereço de armazenamento do bloco de dados a serem lidos X, e então envia o endereço de armazenamento do bloco de dados a serem lidos X para o gerenciador de entrada/saída A. O gerenciador de entrada/saída A lê o bloco de dados a partir do endereço de armazenamento do bloco de dados X por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B.
[00129] Quando os dados gravados no arranjo de armazenamento mostrado na Figura 2 são armazenados em cache em múltiplos dispositivos de cache, quando uma operação de desduplicação de dados está sendo realizada, a desduplicação de dados é realizada somente nos dados em um dos dispositivos de cache. Especificamente, a desduplicação de dados pode ser realizada em dados em um dispositivo principal de cache, ou de acordo com uma carga de múltiplos dispositivos de cache que armazenam em cache os dados, um dos dispositivos de cache é selecionado para realizar a operação de desduplicação de dados, não havendo uma limitação a essa modalidade da
43/48 presente invenção.
[00130] Nessa modalidade da presente invenção, em outro caso de implantação, não existe necessariamente o conceito de hospedagem entre um gerenciador de entrada/saída e um controlador. Isto é, o controlador A não é um controlador doméstico do gerenciador de entrada/saída A. Cada gerenciador de entrada/saída salva uma correspondência entre uma LU e um controlador em que a LU está hospedada. O gerenciador de entrada/saída consulta, de acordo com um identificador de uma LU alvo que é portada em uma solicitação de operação de dados, uma correspondência entre o identificador da LU alvo e um controlador doméstico, para determinar um controlador doméstico da LU alvo, e envia diretamente a solicitação para o controlador doméstico da LU alvo por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. Além disso, a comunicação pode ser realizada por meio de qualquer dispositivo de comutação PCIe, entre controladores, ou entre um controlador e um SSD, ou entre um gerenciador de entrada/saída e um controlador, ou entre um gerenciador de entrada/saída e um SSD, ou entre um dispositivo de cache e um controlador, ou entre um dispositivo de cache e um SSD. Nessa modalidade da presente invenção, um endereço de armazenamento lógico para armazenar um bloco de dados X em um endereço de armazenamento em um disco rígido alvo se refere a um endereço de bloco lógico para armazenar o bloco de dados X no disco rígido alvo, e especificamente se refere a um endereço de bloco lógico para armazenar o bloco de dados X no SSD alvo nessa modalidade da presente invenção.
[00131] A Figura 2 nessa modalidade da presente invenção mostra somente dois controladores, dois dispositivos de comutação, dois gerenciadores de entrada/saída, e um dispositivo de cache. Entretanto, em uma implantação específica, as quantidades de controladores, dispositivos de comutação, gerenciadores de entrada/saída, e dispositivos de cache podem
44/48 ser definidas conforme exigido e flexivelmente expandidas. Qualquer gerenciador de entrada/saída é conectado a qualquer controlador por meio de qualquer dispositivo de comutação, ou qualquer gerenciador de entrada/saída é conectado a qualquer disco rígido por meio de qualquer dispositivo de comutação, ou qualquer gerenciador de entrada/saída é conectado a qualquer dispositivo de cache por meio de qualquer dispositivo de comutação. Qualquer controlador é conectado a qualquer controlador por meio de qualquer dispositivo de comutação, ou qualquer controlador é conectado a qualquer disco rígido por meio de qualquer dispositivo de comutação, ou qualquer controlador é conectado a qualquer dispositivo de cache por meio de qualquer dispositivo de comutação. Qualquer dispositivo de cache é conectado a qualquer disco rígido por meio do dispositivo de comutação. Comunicação bidirecional é implantada entre quaisquer dois dispositivos conectados por meio de qualquer dispositivo de comutação. Quaisquer dois dispositivos de comutação são diretamente conectados. Em um arranjo de arquitetura de armazenamento fornecido nessa modalidade da presente invenção, logicamente, controladores são coletivamente chamados de um plano controlador, dispositivos de comutação são coletivamente chamados de um plano de comutação, discos rígidos são coletivamente chamados de um plano de armazenamento, gerenciadores de entrada/saída são coletivamente chamados de um plano de gerenciamento de entrada/saída, e dispositivos de cache são coletivamente chamados de um plano de cache. Na arquitetura fornecida nessa modalidade da presente invenção, o controle da leitura e da gravação de dados é separado da leitura e da gravação de dados. Um controlador implanta o controle da leitura e da gravação de dados, mas a leitura e a gravação de dados (ou, em outras palavras, dados lidos e gravados) não fluem através do controlador, o que economiza recursos de computação da CPU do controlador e recursos da memória do controlador, aumenta a eficiência da gravação de dados, e aumenta a eficiência de processamento de
45/48 dados do arranjo de armazenamento. O arranjo de arquitetura de armazenamento nessa modalidade da presente invenção pode implantar a expansão de dispositivos tais como controladores e discos rígidos, e controladores, dispositivos de comutação, discos rígidos, e similares podem ser adicionados flexivelmente de acordo com exigências de desempenho do arranjo de armazenamento.
[00132] Certamente, a solução técnica nessa modalidade da presente invenção é também aplicável a uma situação em que um arranjo de armazenamento inclui um gerenciador de entrada/saída, um controlador, um dispositivo de comutação, um dispositivo de cache e diversos discos rígidos. Quanto a uma maneira de gravar dados dentro do arranjo de armazenamento nessa situação, consultar a descrição na modalidade supracitada. Quanto a uma situação em que a desduplicação de dados é realizada no arranjo de armazenamento, consultar a descrição na modalidade supracitada. Quanto a uma operação de leitura de dados realizada em um arranjo de armazenamento, consultar a descrição na modalidade supracitada. Certamente, um arranjo de armazenamento pode também incluir dois controladores e um dispositivo de comutação, onde os dois controladores são conectados ao dispositivo de comutação. Quanto a operações de gravação de dados, desduplicação de dados, e leitura de dados em uma situação como essa, consultar a descrição na modalidade supracitada, e detalhes não serão descritos novamente no presente documento. Nessa modalidade da presente invenção, um dispositivo A lê dados a partir de um endereço de cache A (ou em outras palavras, lê dados diretamente a partir do endereço de cache A) ou grava dados no endereço de cache A (ou, em outras palavras, grava dados diretamente no endereço de cache A) por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B de acordo com um identificador de um dispositivo B e o endereço de cache A. Uma maneira de implantação como essa pode ser implantada usando uma tecnologia de acesso direto à memória
46/48 (Acesso Direto à Memória, DMA), onde o dispositivo A e o dispositivo B representam dispositivos que especificamente realizam acesso DMA nessa modalidade da presente invenção.
[00133] O controlador obtém um endereço de cache do dispositivo B, e envia o identificador do dispositivo B e o endereço de cache do dispositivo B para um dispositivo C por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B. Pelo fato do controlador se comunicar com o dispositivo B para obter o endereço de cache por meio do dispositivo de comutação PCIe A ou do dispositivo de comutação PCIe B e já aprender o identificador do dispositivo B, o endereço de cache é obtido, e o identificador do dispositivo B e o endereço de cache do dispositivo B podem ser enviados para o dispositivo C. Certamente, o controlador pode também obter o identificador e o endereço de cache do dispositivo B. O identificador do dispositivo B pode ser o endereço do dispositivo B ou outro identificador que identifica exclusivamente o dispositivo.
[00134] Uma pessoa de habilidade comum na técnica pode estar ciente de que as unidades e etapas de algoritmo exemplificativas descritas com referência às modalidades reveladas no relatório descritivo podem ser implantadas por hardware eletrônico ou uma combinação de software de computador e hardware eletrônico. Se as funções são ou não realizadas por hardware ou software depende das aplicações particulares e das condições de restrição de projeto das soluções técnicas. Uma pessoa versada na técnica pode usar diferentes métodos para implantar as funções descritas para cada aplicação em particular, mas não deve ser considerado que a implantação vá além do escopo da presente invenção.
[00135] Pode ser claramente entendido por uma pessoa versada na técnica que, com o propósito de uma descrição conveniente e breve, para um processo de funcionamento detalhado do sistema, aparelho, e unidade supracitados, deve-se consultar um processo correspondente nas modalidades
47/48 de método supracitadas, e detalhes não serão descritos novamente no presente documento.
[00136] Nas diversas modalidades fornecidas no presente pedido, deve ser entendido que o sistema e o método revelados podem ser implantados de outras maneiras. Por exemplo, a modalidade de aparelho descrita é meramente exemplificativa. Por exemplo, a divisão em unidades é meramente divisão de função lógica e pode ser outra divisão na implantação efetiva. Por exemplo, uma pluralidade de unidades ou componentes podem ser combinados ou integrados em outro sistema, ou algumas características podem ser ignoradas ou não realizadas. Além disso, os acoplamentos mútuos ou acoplamentos diretos ou conexões de comunicação exibidos ou discutidos podem ser implantados através de algumas interfaces. Os acoplamentos indiretos ou conexões de comunicação entre os aparelhos ou unidades podem ser implantados em forma eletrônica, mecânica, ou outras formas.
[00137] As unidades descritas como partes separadas podem ou não ser fisicamente separadas, e partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição, ou podem ser distribuídas em uma pluralidade de unidades de rede. Algumas das ou todas as unidades podem ser selecionadas de acordo com a necessidade efetiva para se alcançar os objetivos das soluções das modalidades.
[00138] Além disso, unidades funcionais nas modalidades da presente invenção podem ser integradas em uma unidade de processamento, ou cada uma das unidades pode existir sozinha fisicamente, ou duas ou mais unidades são integradas em uma unidade.
[00139] Quando as funções são implantadas na forma de uma unidade funcional de software e vendidas ou usadas como um produto independente, as funções podem ser armazenadas em um meio de armazenamento não volátil legível por computador. Com base nesse entendimento, as soluções técnicas da presente invenção, ou a parte que
48/48 contribui para a técnica anterior, ou algumas das soluções técnicas podem ser implantadas essencialmente em uma forma de um produto de software. O produto de software é armazenado em um meio de armazenamento não volátil, e inclui diversas instruções para instruir um dispositivo de computador (que pode ser um computador pessoal, um servidor, ou um dispositivo de rede) a realizar todas ou algumas das etapas dos métodos descritos nas modalidades da presente invenção. O meio de armazenamento não volátil supracitado inclui: qualquer meio que possa armazenar código de programa, tal como um pen drive, um disco rígido removível, uma memória somente para leitura (Memória Somente para Leitura, ROM), um disco magnético, ou um disco óptico.

Claims (8)

1. Método de desduplicação de dados, em que o método é aplicado a um arranjo de armazenamento, CARACTERIZADO pelo fato de que o arranjo de armazenamento compreende um dispositivo de comutação, um primeiro controlador, e um dispositivo de cache, em que o primeiro controlador é conectado ao dispositivo de comutação; o dispositivo de cache é conectado ao dispositivo de comutação; e o dispositivo de comutação é conectado a um disco rígido no arranjo de armazenamento; e o método compreende:
receber, pelo primeiro controlador, um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de cache, e buscar um conjunto de índices de autovalor dos blocos de dados para o autovalor do bloco de dados a ser desduplicado; em que o autovalor do bloco de dados a ser desduplicado é calculado pelo dispositivo de cache;
quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, obter, pelo primeiro controlador, um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache por meio do dispositivo de comutação;
enviar, pelo primeiro controlador, uma instrução de leitura de dados para um controlador de um disco rígido alvo por meio do dispositivo de comutação, em que a instrução de leitura de dados porta um identificador do dispositivo de cache e o endereço de cache;
ler, pelo controlador do disco rígido alvo, o bloco de dados a ser desduplicado a partir do endereço de cache por meio do dispositivo de comutação de acordo com o identificador do dispositivo de cache e o endereço de cache; e armazenar, pelo controlador do disco rígido alvo, o bloco de dados a ser desduplicado no interior do disco rígido alvo;
em que o arranjo de armazenamento compreende adicionalmente um segundo controlador, em que o segundo controlador é conectado ao dispositivo de comutação; o segundo controlador armazena um endereço do bloco de dados a ser desduplicado, e o segundo controlador é um controlador doméstico de uma unidade lógica alvo na qual o bloco de dados a ser desduplicado está localizado; e o recebimento, pelo primeiro controlador, de um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de
Petição 870180159822, de 07/12/2018, pág. 10/14
2/5 cache compreende especificamente:
enviar, pelo dispositivo de cache, o autovalor do bloco de dados a ser desduplicado para o segundo controlador por meio do dispositivo de comutação;
determinar, pelo segundo controlador, que um controlador doméstico do autovalor do bloco de dados a ser desduplicado é o primeiro controlador; e enviar, pelo segundo controlador, o autovalor do bloco de dados a ser desduplicado para o primeiro controlador por meio do dispositivo de comutação.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o método compreende adicionalmente:
enviar, pelo controlador do disco rígido alvo, um endereço de armazenamento no disco rígido alvo para o primeiro controlador por meio do dispositivo de comutação, em que o endereço de armazenamento no disco rígido alvo compreende um identificador do controlador do disco rígido alvo e um endereço de armazenamento lógico para armazenar o bloco de dados a ser desduplicado no disco rígido alvo; e estabelecer, pelo primeiro controlador, um índice de autovalor do bloco de dados a ser desduplicado no conjunto de índices de autovalor dos blocos de dados, em que o índice de autovalor do bloco de dados a ser desduplicado compreende o autovalor do bloco de dados a ser desduplicado e o endereço de armazenamento no disco rígido alvo.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que, quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o método compreende adicionalmente: enviar, pelo primeiro controlador, uma notificação para o segundo controlador por meio do dispositivo de comutação, em que a notificação porta o endereço de armazenamento no disco rígido alvo; e estabelecer, pelo segundo controlador de acordo com a notificação, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e o endereço de armazenamento no disco rígido alvo.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO
Petição 870180159822, de 07/12/2018, pág. 11/14
3/5 pelo fato de que o método compreende adicionalmente: estabelecer, pelo segundo controlador, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e um endereço do primeiro controlador.
5. Arranjo de armazenamento, CARACTERIZADO pelo fato de que o arranjo de armazenamento compreende um dispositivo de comutação, um primeiro controlador, e um dispositivo de cache, em que o primeiro controlador é conectado ao dispositivo de comutação; o dispositivo de cache é conectado ao dispositivo de comutação; e o dispositivo de comutação é conectado a um disco rígido no arranjo de armazenamento;
o primeiro controlador é configurado para receber um autovalor de um bloco de dados a ser desduplicado a partir do dispositivo de cache, e busca um conjunto de índices de autovalor dos blocos de dados para o autovalor do bloco de dados a ser desduplicado; em que o autovalor do bloco de dados a ser desduplicado é calculado pelo dispositivo de cache;
quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o primeiro controlador é configurado adicionalmente para obter um endereço de cache do bloco de dados a ser desduplicado no dispositivo de cache por meio do dispositivo de comutação;
o primeiro controlador é configurado adicionalmente para enviar uma instrução de leitura de dados para um controlador de um disco rígido alvo por meio do dispositivo de comutação, em que a instrução de leitura de dados porta um identificador do dispositivo de cache e o endereço de cache;
o controlador do disco rígido alvo é configurado para ler o bloco de dados a ser desduplicado a partir do endereço de cache por meio do dispositivo de comutação de acordo com o identificador do dispositivo de cache e o endereço de cache; e o controlador do disco rígido alvo é configurado adicionalmente para armazenar o bloco de dados a ser desduplicado no interior do disco rígido alvo;
em que o arranjo de armazenamento compreende adicionalmente um segundo controlador, em que o segundo controlador é conectado ao dispositivo de comutação; o segundo controlador é configurado para armazenar um endereço do bloco de dados a ser desduplicado, e o segundo controlador é
Petição 870180159822, de 07/12/2018, pág. 12/14
4/5 um controlador doméstico de uma unidade lógica alvo na qual o bloco de dados a ser desduplicado está localizado; e que o recebimento, pelo primeiro controlador, do autovalor do bloco de dados a ser desduplicado a partir do dispositivo de cache compreende especificamente:
enviar, pelo dispositivo de cache, o autovalor do bloco de dados a ser desduplicado para o segundo controlador por meio do dispositivo de comutação;
determinar, pelo segundo controlador, que um controlador doméstico do autovalor do bloco de dados a ser desduplicado é o primeiro controlador; e enviar, pelo segundo controlador, o autovalor do bloco de dados a ser desduplicado para o primeiro controlador por meio do dispositivo de comutação.
6. Arranjo de armazenamento, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que:
o controlador do disco rígido alvo é configurado adicionalmente para enviar um endereço de armazenamento no disco rígido alvo para o primeiro controlador por meio do dispositivo de comutação, em que o endereço de armazenamento no disco rígido alvo compreende um identificador do controlador do disco rígido alvo e um endereço de armazenamento lógico para armazenar o bloco de dados a ser desduplicado no disco rígido alvo;
o primeiro controlador é configurado adicionalmente para estabelecer um índice de autovalor do bloco de dados a ser desduplicado no conjunto de índices de autovalor dos blocos de dados, em que o índice de autovalor do bloco de dados a ser desduplicado compreende o autovalor do bloco de dados a ser desduplicado e o endereço de armazenamento no disco rígido alvo.
7. Arranjo de armazenamento, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que quando o autovalor do bloco de dados a ser desduplicado não é encontrado no conjunto de índices de autovalor dos blocos de dados, o primeiro controlador é configurado adicionalmente para enviar uma notificação para o segundo controlador por meio do dispositivo de comutação, em que a notificação porta o endereço de armazenamento no disco rígido alvo; e o segundo controlador é configurado adicionalmente para
Petição 870180159822, de 07/12/2018, pág. 13/14
5/5 estabelecer, de acordo com a notificação, uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e o endereço de armazenamento no disco rígido alvo.
8. Arranjo de armazenamento, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que o segundo controlador é configurado adicionalmente para estabelecer uma correspondência entre o endereço do bloco de dados a ser desduplicado, o autovalor do bloco de dados a ser desduplicado, e um endereço do primeiro controlador.
BR112016003763-4A 2014-09-15 2014-09-15 Método de desduplicação de dados e arranjo de armazenamento. BR112016003763B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/086530 WO2016041127A1 (zh) 2014-09-15 2014-09-15 重复数据删除方法和存储阵列

Publications (1)

Publication Number Publication Date
BR112016003763B1 true BR112016003763B1 (pt) 2019-04-02

Family

ID=55532419

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016003763-4A BR112016003763B1 (pt) 2014-09-15 2014-09-15 Método de desduplicação de dados e arranjo de armazenamento.

Country Status (9)

Country Link
US (1) US20170177489A1 (pt)
EP (1) EP3037949B1 (pt)
JP (1) JP6254293B2 (pt)
KR (1) KR101716264B1 (pt)
CN (1) CN105612489B (pt)
AU (1) AU2014403332B2 (pt)
BR (1) BR112016003763B1 (pt)
CA (1) CA2920004C (pt)
WO (1) WO2016041127A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6526233B2 (ja) * 2016-09-28 2019-06-05 華為技術有限公司Huawei Technologies Co.,Ltd. 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
CN108897806A (zh) * 2018-06-15 2018-11-27 东软集团股份有限公司 数据一致性比对方法、装置、存储介质及电子设备
CN112714910B (zh) * 2018-12-22 2022-12-27 华为云计算技术有限公司 分布式存储系统及计算机程序产品
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
CN113411398B (zh) * 2021-06-18 2022-02-18 全方位智能科技(南京)有限公司 一种基于大数据的文件清理写入及清理管理系统及方法
CN113253947B (zh) * 2021-07-16 2021-10-15 苏州浪潮智能科技有限公司 一种重删方法、装置、设备及可读存储介质
CN113627132B (zh) * 2021-08-27 2024-04-02 智慧星光(安徽)科技有限公司 数据去重标记码生成方法、系统、电子设备及存储介质
CN114003181B (zh) * 2022-01-04 2022-05-20 苏州浪潮智能科技有限公司 数据写镜像系统、方法、装置、电子设备及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US7428613B1 (en) * 2004-06-29 2008-09-23 Crossroads Systems, Inc. System and method for centralized partitioned library mapping
JP4901316B2 (ja) * 2006-06-06 2012-03-21 株式会社日立製作所 ストレージシステム及び記憶制御装置
JP4394670B2 (ja) * 2006-09-28 2010-01-06 株式会社日立製作所 ディスク制御装置及びストレージシステム
CN101809559B (zh) * 2007-09-05 2013-10-16 伊姆西公司 在虚拟化服务器和虚拟化存储环境中的去重复
US8209506B2 (en) 2007-09-05 2012-06-26 Emc Corporation De-duplication in a virtualized storage environment
JP4480756B2 (ja) * 2007-12-05 2010-06-16 富士通株式会社 ストレージ管理装置、ストレージシステム制御装置、ストレージ管理プログラム、データ記憶システムおよびデータ記憶方法
JP2009251725A (ja) * 2008-04-02 2009-10-29 Hitachi Ltd 記憶制御装置及び記憶制御装置を用いた重複データ検出方法。
US8185691B2 (en) * 2008-06-30 2012-05-22 Netapp, Inc. Optimized cache coherency in a dual-controller storage array
WO2010045262A1 (en) * 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US8595397B2 (en) * 2009-06-09 2013-11-26 Netapp, Inc Storage array assist architecture
JP4838878B2 (ja) * 2009-12-04 2011-12-14 富士通株式会社 データ管理プログラム、データ管理装置、およびデータ管理方法
JP4892072B2 (ja) * 2010-03-24 2012-03-07 株式会社東芝 ホスト装置と連携して重複データを排除するストレージ装置、同ストレージ装置を備えたストレージシステム、及び同システムにおける重複排除方法
US9110936B2 (en) * 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
CN102063274B (zh) * 2010-12-30 2013-10-09 华为技术有限公司 存储阵列和存储系统及数据访问方法
CN102156703A (zh) * 2011-01-24 2011-08-17 南开大学 一种低功耗的高性能重复数据删除系统
CN102833298A (zh) * 2011-06-17 2012-12-19 英业达集团(天津)电子技术有限公司 分布式的重复数据删除系统及其处理方法
CN102866935B (zh) * 2011-07-07 2014-11-12 北京飞杰信息技术有限公司 基于iscsi的即时复制方法和存储系统
US8620886B1 (en) * 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
US9229853B2 (en) * 2011-12-20 2016-01-05 Intel Corporation Method and system for data de-duplication
KR101341995B1 (ko) * 2011-12-26 2013-12-16 성균관대학교산학협력단 공유 데이터 저장소 관리 장치 및 방법
US9417811B2 (en) * 2012-03-07 2016-08-16 International Business Machines Corporation Efficient inline data de-duplication on a storage system
US8856443B2 (en) * 2012-03-12 2014-10-07 Infinidat Ltd. Avoiding duplication of data units in a cache memory of a storage system
US8706971B1 (en) * 2012-03-14 2014-04-22 Netapp, Inc. Caching and deduplication of data blocks in cache memory
CN102982122A (zh) * 2012-11-13 2013-03-20 浪潮电子信息产业股份有限公司 一种适用于海量存储系统的重复数据删除方法
WO2014136183A1 (ja) * 2013-03-04 2014-09-12 株式会社日立製作所 ストレージ装置及びデータ管理方法
US9602428B2 (en) * 2014-01-29 2017-03-21 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for locality sensitive hash-based load balancing
US9760578B2 (en) * 2014-07-23 2017-09-12 International Business Machines Corporation Lookup-based data block alignment for data deduplication
WO2016013086A1 (ja) * 2014-07-24 2016-01-28 株式会社日立製作所 計算機システムおよびメモリ割当管理方法

Also Published As

Publication number Publication date
WO2016041127A1 (zh) 2016-03-24
CA2920004A1 (en) 2016-03-15
JP6254293B2 (ja) 2017-12-27
JP2017505487A (ja) 2017-02-16
CN105612489A (zh) 2016-05-25
CA2920004C (en) 2019-10-22
EP3037949A1 (en) 2016-06-29
EP3037949A4 (en) 2016-10-12
KR20160047482A (ko) 2016-05-02
KR101716264B1 (ko) 2017-03-14
US20170177489A1 (en) 2017-06-22
AU2014403332B2 (en) 2017-04-20
CN105612489B (zh) 2017-08-29
EP3037949B1 (en) 2019-07-31

Similar Documents

Publication Publication Date Title
BR112016003843B1 (pt) Método de processamento de solicitação de gravar dados e arranjo de armazenamento
BR112016003763B1 (pt) Método de desduplicação de dados e arranjo de armazenamento.
US11656763B2 (en) File management method, distributed storage system, and management node
US20160371186A1 (en) Access-based eviction of blocks from solid state drive cache memory
WO2016046911A1 (ja) ストレージシステム及びストレージシステムの管理方法
BR112014009477B1 (pt) método e aparelho de processamento de dados em um sistema de agrupamento
JPWO2018029820A1 (ja) 計算機システム
WO2019028799A1 (zh) 一种数据访问方法、装置和系统
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US20210263649A1 (en) Storage system with efficient snapshot pair creation during synchronous replication of logical storage volumes
JP6924671B2 (ja) データ書込み要求処理方法及びストレージアレイ
US11256628B2 (en) Volatile read cache in a content addressable storage system
US11115490B2 (en) Host based read cache for san supporting NVMEF with E2E validation
WO2016194162A1 (ja) 計算機システム
JP6552583B2 (ja) データ重複排除方法及びストレージアレイ
BR112017019142B1 (pt) Método para deduplicação em sistema de armazenamento, sistema de armazenamento e controlador

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 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 15/09/2014, OBSERVADAS AS CONDICOES LEGAIS. (CO) 20 (VINTE) ANOS CONTADOS A PARTIR DE 15/09/2014, OBSERVADAS AS CONDICOES LEGAIS