BR112017011412B1 - Método e aparelho de armazenamento de dados - Google Patents

Método e aparelho de armazenamento de dados Download PDF

Info

Publication number
BR112017011412B1
BR112017011412B1 BR112017011412-7A BR112017011412A BR112017011412B1 BR 112017011412 B1 BR112017011412 B1 BR 112017011412B1 BR 112017011412 A BR112017011412 A BR 112017011412A BR 112017011412 B1 BR112017011412 B1 BR 112017011412B1
Authority
BR
Brazil
Prior art keywords
strip
written
file
data
read
Prior art date
Application number
BR112017011412-7A
Other languages
English (en)
Other versions
BR112017011412A2 (pt
BR112017011412A8 (pt
Inventor
Xin Fang
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 BR112017011412A2 publication Critical patent/BR112017011412A2/pt
Publication of BR112017011412A8 publication Critical patent/BR112017011412A8/pt
Publication of BR112017011412B1 publication Critical patent/BR112017011412B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

MÉTODO, APARELHO E SISTEMA DE PROCESSAMENTO DE DADOS. Modalidades da presente invenção fornecem uma tecnologia de gerenciamento de dados. Um OSD recebe uma solicitação de escrita de tira enviada por um servidor de cliente, onde a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita; e o OSD escreve a tira a ser escrita para uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita. Ao aplicar a presente invenção, uma quantidade de IDs de objeto pode ser reduzida.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se ao campo de armazenamento, e em particular, a um método, aparelho e sistema de processamento de dados.
FUNDAMENTOS
[002] Um sistema de armazenamento baseado em objetos (ObjectBased Storage System) é um sistema de armazenamento distribuído e inclui um servidor de armazenamento e um dispositivo de armazenamento baseado em objetos (OSD). O sistema de armazenamento baseado em objetos pode também ser referido como um sistema de armazenamento de objeto, e o dispositivo de armazenamento baseado em objetos também pode ser referido como um dispositivo de armazenamento de objeto. No sistema de armazenamento de objeto, um objeto é utilizado como uma unidade de armazenamento de conteúdo mais básico. Os dados podem ser um arquivo ou volume. Um arquivo é utilizado como um exemplo, onde o arquivo é dividido em fragmentos, um fragmento de arquivo tem informação de atributo, o fragmento de arquivo, metadados do fragmento de arquivo, e um atributo do fragmento de arquivo podem conjuntamente constituir um objeto, e o objeto é armazenado em vários OSDs.
[003] O sistema de armazenamento de objeto fornece uma função de instantâneo. Um instantâneo é uma cópia de um conjunto de dados especificado, e a cópia marca uma imagem de dados correspondentes em um ponto de tempo (um ponto de início da cópia).
[004] Um arquivo é utilizado como um exemplo. Após a captura de um instantâneo, se um arquivo inteiro ou uma parte dos dados do arquivo for modificado, dados modificados precisam ser armazenados no sistema de armazenamento. Na arte anterior, um ID de objeto é utilizado como um identificador único de um objeto, e se um mesmo arquivo é atualizado, dados atualizados precisam ser armazenados no dispositivo de armazenamento como um novo ID de objeto. Se o arquivo é atualizado com frequência, uma quantidade total de IDs de objeto torna-se muito grande, o que ocupa espaço de armazenamento relativamente grande e aumenta uma perda de recurso de sistema.
SUMÁRIO
[005] A presente invenção fornece uma tecnologia de gerenciamento de dados, que pode reduzir uma quantidade total de IDs de objeto e reduzir o espaço de armazenamento ocupado pelos IDs de objeto.
[006] De acordo com um primeiro aspecto, uma modalidade da presente invenção fornece um método de armazenamento de dados, incluindo: receber, por um dispositivo de armazenamento de objeto OSD, uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; e escrever, pelo OSD, a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
[007] De acordo com um segundo aspecto, uma modalidade da presente invenção fornece um método de armazenamento de dados, incluindo: receber, por um dispositivo de armazenamento de objeto OSD, uma solicitação de escrita de tira enviada por um servidor de cliente, onde a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; determinar, pelo OSD, se um objeto determinado por utilizar o número de versão da tira a ser escrita, e o ID de objeto é gravado em backup; e se o objeto for gravado em backup, escrever, pelo OSD, a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se o objeto não for gravado em backup, criar, pelo OSD, um objeto emendado por utilizar a tira a ser escrita e, em seguida, escrever o objeto emendado em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, e o ID de objeto.
[008] De acordo com um terceiro aspecto, uma modalidade da presente invenção fornece um método de armazenamento de dados, incluindo: receber, por um dispositivo de armazenamento de objeto OSD, uma solicitação de escrita de tira enviada por um servidor de cliente, onde a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; determinar, pelo OSD, se uma tira determinada por utilizar o número de versão da tira a ser escrita, o ID de objeto da tira a ser escrita, e o deslocamento da tira a ser escrita gravado em backup; e se a tira for gravada em backup, escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, o ID de objeto da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se a tira não for gravada em backup, gravar em backup dados que estão em um objeto de uma versão de base no OSD, e cujo deslocamento é o deslocamento da tira a ser escrita e tamanho é um tamanho da tira a ser escrita para a localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e o ID de objeto da tira a ser escrita, onde um ID de objeto do objeto da versão de base é o mesmo que o ID de objeto da tira a ser escrita, e um número de versão do objeto da versão de base é um número de versão de base, e escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto da tira a ser escrita, o número de versão de base, e o deslocamento da tira a ser escrita.
[009] De acordo com um quarto aspecto, uma modalidade da presente invenção fornece um método de armazenamento de dados, incluindo: receber, por um dispositivo de armazenamento de objeto OSD, uma solicitação de escrita de tira enviada por um servidor de cliente, onde a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; determinar, pelo OSD, se um objeto determinado por utilizar o número de versão da tira a ser escrita, e o ID de objeto é gravado em backup; e se o objeto for gravado em backup, escrever, pelo OSD, a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, um número de versão do objeto, e o deslocamento da tira a ser escrita; ou se o objeto não for gravado em backup, gravar em backup dados que estão em um objeto de uma versão de base no OSD para uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, e o ID de objeto, onde um ID de objeto do objeto da versão de base é o mesmo que o ID de objeto da tira a ser escrita, e um número de versão do objeto da versão de base é um número de versão de base, e escrever, pelo OSD, a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão de base, e o deslocamento da tira a ser escrita.
[0010] De acordo com um quinto aspecto, uma modalidade da presente invenção fornece um método de leitura de dados, incluindo: receber, por um dispositivo de armazenamento de objeto OSD, uma solicitação de leitura de tira enviada por um servidor de cliente, em que a solicitação de leitura de tira transporta um tamanho da tira a ser lida, um deslocamento da tira a ser lida, um número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é um ID de um objeto ao qual a tira a ser lida pertence; determinar, pelo OSD, se uma tira determinada por utilizar o ID de objeto, o número de versão da tira a ser lida, e o deslocamento da tira a ser lida é gravado em backup; e se a tira for gravada em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados de leitura como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se a tira não for gravada em backup, pesquisar, um por um de acordo com uma ordem decrescente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos que o ID de objeto da tira a ser lida e números de versão são diferentes a partir do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou o volume ao qual a tira a ser lida pertence e que existe antes que o objeto seja gerado.
[0011] De acordo com um sexto aspecto, uma modalidade da presente invenção fornece um método de leitura de dados, incluindo: receber, por um OSD, uma solicitação de leitura de tira enviada pelo servidor de cliente, em que a solicitação de leitura de tira carrega um tamanho de uma tira a ser lida, um deslocamento da tira a ser lida, um número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é um ID de um objeto ao qual a tira a ser lida pertence; determinar, pelo OSD, se um objeto determinado por utilizar o ID de objeto e o número de versão da tira a ser lida é gravado em backup; e se o objeto for gravado em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados de leitura como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se o objeto não for gravado em backup, pesquisar, um por um de acordo com uma ordem descendente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos que o ID de objeto da tira a ser lida e números de versão são diferentes a partir do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou o volume ao qual a tira a ser lida pertence e que existe antes que o objeto seja gerado.
[0012] De acordo com um sétimo aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; e um módulo de armazenamento de tira, configurado para escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
[0013] De acordo com um oitavo aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; e um módulo de armazenamento de tira, configurado para determinar se um objeto determinado por utilizar o número de versão da tira a ser escrita e o ID de objeto é gravado em back up, onde se o objeto for gravado em backup, o módulo de armazenamento de tira é ainda configurado para escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se o objeto não é gravado em backup, o módulo de armazenamento de tira é ainda configurado para criar um objeto emendado por utilizar a tira a ser escrita e, em seguida, escrever o objeto emendado em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita e o ID de objeto.
[0014] De acordo com um nono aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; e um módulo de armazenamento de tira, configurado para: determinar se uma tira determinada por utilizar o número de versão da tira a ser escrita, o ID de objeto da tira a ser escrita, e o deslocamento da tira a ser escrita é gravado em backup; e se a tira for gravada em backup, escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, o ID de objeto da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se a tira não for gravada em backup, gravar em backup dados que estão em um objeto de uma versão de base no aparelho de armazenamento de dados e cujo deslocamento é o deslocamento da tira a ser escrita e tamanho é um tamanho da tira a ser escrita para a localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e o ID de objeto da tira a ser escrita, em que um ID de objeto do objeto da versão de base é o mesmo que o ID de objeto da tira a ser escrita, e um número de versão do objeto da versão de base é um número de versão de base; e escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto da tira a ser escrita, o número de versão de base, e o deslocamento da tira a ser escrita.
[0015] De acordo com um décimo aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID de objeto ao qual a tira a ser escrita pertence; e um módulo de armazenamento de tira, configurado para: determinar se um objeto determinado por utilizar o número de versão da tira a ser escrita e o ID de objeto é gravado em backup; e se o objeto for gravado em backup, escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, um número de versão do objeto, e o deslocamento da tira a ser escrita; ou se o objeto não for gravado em backup, gravar em backup dados que estão em um objeto de uma versão de base para uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita, e o ID de objeto, onde um ID de objeto do objeto da versão de base é o mesmo que o ID de objeto da tira a ser escrita, e um número de versão do objeto da versão de base é um número de versão de base e o módulo de armazenamento de tira é configurado ainda para escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão de base, e o deslocamento da tira a ser escrita.
[0016] De acordo com um décimo primeiro aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de leitura de tira enviada por um servidor de cliente, em que a solicitação de leitura de tira carrega um tamanho de uma tira a ser lida, um deslocamento da tira a ser lida, um número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é um ID de um objeto ao qual a tira a ser lida pertence; e um módulo de leitura de tira, configurado para: determinar se uma tira determinada por utilizar o ID de objeto, o número de versão da tira a ser lida, e o deslocamento da tira a ser lida é gravada em backup; e se a tira for gravada em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados lidos como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se a tira não for gravada em backup, pesquisar, um por um de acordo com uma ordem decrescente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos que o ID de objeto da tira a ser lida e números de versão são diferentes a partir do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou o volume ao qual a tira a ser lida pertence e que existe antes que o objeto seja gerado.
[0017] De acordo com um décimo segundo aspecto, uma modalidade da presente invenção fornece um aparelho de processamento de dados, incluindo: um módulo de recepção de solicitação de tira, configurado para receber uma solicitação de leitura de tira enviada por um servidor de cliente, onde a solicitação de leitura de tira transporta um tamanho de uma tira a ser lida, um deslocamento da tira a ser lida, um número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é um ID de um objeto ao qual a tira a ser lida pertence; e um módulo de leitura de tira, configurado para: determinar se um objeto determinado por utilizar o ID de objeto e o número de versão da tira a ser lida é gravado em backup; e se o objeto for gravado em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados lidos como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se o objeto não for gravado em backup, pesquisar, um por um de acordo com uma ordem decrescente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos que o ID de objeto da tira a ser lida e números de versão são diferentes a partir do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou o volume ao qual a tira a ser lida pertence e que existe antes que o objeto seja gerado.
[0018] De acordo com um décimo terceiro aspecto, uma modalidade da presente invenção fornece um sistema de armazenamento de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para receber uma solicitação de escrita de arquivo, em que a solicitação de escrita de arquivo transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um nome de arquivo, e os dados a serem escritos são parte de um arquivo; o servidor de cliente obtém um identificador de arquivo FID de acordo com o nome de arquivo, executa uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo, e utiliza o número de versão do arquivo como um número de versão da tira a ser escrita, onde o número de versão do arquivo corresponde a um ID de instantâneo de um instantâneo mais recente do arquivo; o servidor de cliente divide, de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, os dados a serem escritos em múltiplas tiras que incluem a tira a ser escrita, determina um ID de um objeto ao qual a tira a ser escrita pertence, obtém um deslocamento da tira a ser escrita, cria uma solicitação de escrita de tira e envia a solicitação de escrita de tira para o dispositivo de armazenamento de objeto; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de escrita de tira, em que a solicitação de escrita de tira transporta a tira a ser escrita, o número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente ao ID de instantâneo do instantâneo mais recente do arquivo ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita no objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é o ID do objeto ao qual a tira a ser escrita pertence; e o OSD escreve a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
[0019] De acordo com um décimo quarto aspecto, uma modalidade da presente invenção fornece um sistema de armazenamento de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para: receber uma solicitação de escrita de volume, em que a solicitação de escrita de volume transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um ID de identificador de volume, e os dados a serem escritos são uma parte de um volume; executar uma consulta em metadados do volume de acordo com o ID de volume para obter um número de versão do volume, onde o número de versão do volume é correspondente a um ID de instantâneo de um instantâneo mais recente do volume; dividir, de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, o segmento de dados a ser escrito em múltiplas tiras que incluem uma tira a ser escrita, determinar um ID de um objeto ao qual a tira a ser escrita pertence, e obter um deslocamento da tira a ser escrita; e criar uma solicitação de escrita de tira, e enviar a solicitação de escrita de tira para o dispositivo de armazenamento de objeto; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de escrita de tira, em que a solicitação de escrita de tira transporta a tira a ser escrita, um número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e o ID de objeto da tira a ser escrita, o número de versão do volume é o número de versão da tira a ser escrita, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita no objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é o ID de objeto ao qual a tira a ser escrita pertence; onde o OSD escreve a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
[0020] De acordo com um décimo quinto aspecto, uma modalidade da presente invenção fornece um sistema de armazenamento de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para receber uma solicitação de escrita de arquivo, em que a solicitação de escrita de arquivo transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um nome de arquivo, e os dados a serem escritos são parte de um arquivo; e o aparelho de servidor de cliente obtém um identificador de arquivo FID de acordo com o nome de arquivo, e executa uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo, onde o número de versão do arquivo corresponde a um ID de instantâneo de um instantâneo mais recente do arquivo; o servidor de cliente divide, de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, os dados a serem escritos em múltiplas tiras que incluem uma tira a ser escrita, determina um ID de um objeto ao qual a tira a ser escrita pertence, e obtém um deslocamento da tira a ser escrita; e cria uma solicitação de escrita de tira e envia a solicitação de escrita de tira para o dispositivo de armazenamento de objeto; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de escrita de tira, em que a solicitação de escrita de tira transporta a tira a ser escrita, um número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente ao ID de instantâneo do instantâneo mais recente do arquivo ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita no objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é o ID do objeto ao qual a tira a ser escrita pertence; determinar se um objeto determinado por utilizar o número de versão da tira a ser escrita, e o ID de objeto é gravado em backup; e se o objeto for gravado em backup, escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se o objeto não for gravado em backup, criar um objeto emendado por utilizar a tira a ser escrita e, em seguida, escrever o objeto emendado em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita e o ID de objeto.
[0021] De acordo com um décimo sexto aspecto, uma modalidade da presente invenção fornece um sistema de armazenamento de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para: receber uma solicitação de escrita de volume, em que a solicitação de escrita de volume transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um ID de identificador de volume, e os dados a serem escritos são uma parte de um volume; executar uma consulta em metadados do volume de acordo com o ID de volume para obter um número de versão do volume, onde o número de versão do volume é correspondente a um ID de instantâneo de um instantâneo mais recente do volume; dividir, de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, o segmento de dados a ser escrito em múltiplas tiras que incluem a tira a ser escrita, determinar um ID de um objeto ao qual a tira a ser escrita pertence, e obter um deslocamento da tira a ser escrita; e criar a solicitação de escrita de tira, e enviar a solicitação de escrita de tira para o dispositivo de armazenamento de objeto; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de escrita de tira, em que a solicitação de escrita de tira transporta a tira a ser escrita, um número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente ao ID de instantâneo do instantâneo mais recente do volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita no objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é o ID do objeto ao qual a tira a ser escrita pertence; determinar se um objeto determinado por utilizar o número de versão da tira a ser escrita, e o ID de objeto é gravado em backup; e se o objeto for gravado em backup, escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita; ou se o objeto não for gravado em backup, criar um objeto emendado por utilizar a tira a ser escrita e, em seguida, escrever o objeto emendado em uma localização de armazenamento determinada por utilizar o número de versão da tira a ser escrita e o ID de objeto.
[0022] De acordo com um décimo sétimo aspecto, uma modalidade da presente invenção fornece um sistema de leitura de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para: receber uma solicitação de leitura de arquivo, em que a solicitação de leitura de arquivo transporta um nome de arquivo, um tamanho dos dados a serem lidos, e um deslocamento dos dados a serem lidos, e os dados a serem lidos são parte de um arquivo; obter um identificador de arquivo FID de acordo com o nome de arquivo, executar uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo, e utilizar o número de versão do arquivo como um número de versão da tira a ser lida, onde o número de versão do arquivo é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ao qual a tira a ser lida pertence; determinar, de acordo com o deslocamento dos dados a serem lidos e o tamanho dos dados a serem lidos, um ID de um objeto ao qual a tira a ser lida pertence, e obter um deslocamento da tira a ser lida; e gerar e enviar uma solicitação de leitura de tira; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de leitura de tira, em que a solicitação de leitura de tira transporta um tamanho da tira a ser lida, o deslocamento da tira a ser lida, o número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente ao ID de instantâneo do instantâneo mais recente do arquivo ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é o ID de objeto ao qual a tira a ser lida pertence; determinar se uma tira determinada por utilizar o ID de objeto, o número de versão da tira a ser lida, e o deslocamento da tira a ser lida é gravado em backup; e, se a tira é gravada em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados lidos como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se a tira não é gravada em backup, pesquisar, um por um de acordo com uma ordem decrescente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos como o ID de objeto da tira a ser lida e números de versão são diferentes do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida ao servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou um volume ao qual a tira a ser lida pertence e que existe antes do objeto ser gerado.
[0023] De acordo com um décimo oitavo aspecto, uma modalidade da presente invenção fornece um sistema de leitura de dados, incluindo um servidor de cliente e um dispositivo de armazenamento de objeto, em que o servidor de cliente é configurado para: receber uma solicitação de leitura de volume, em que a solicitação de leitura de volume transporta um ID de volume, um tamanho dos dados a serem lidos, e um deslocamento dos dados a serem lidos, e os dados a serem lidos são uma parte de um volume; executar uma consulta em metadados do volume de acordo com o ID do volume para obter um número de versão do volume, e utilizar o número de versão do volume como um número de versão da tira a ser lida, onde o número de versão do volume é correspondente a um ID de instantâneo de um instantâneo mais recente de um volume ao qual a tira a ser lida pertence; determinar, de acordo com o deslocamento dos dados a serem lidos e o tamanho dos dados a serem lidos, um ID de um objeto ao qual a tira a ser lida pertence, e obter um deslocamento da tira a ser lida; e gerar e enviar uma solicitação de leitura de tira; e o dispositivo de armazenamento de objeto é configurado para: receber a solicitação de leitura de tira, em que a solicitação de leitura de tira transporta um tamanho da tira a ser lida, o deslocamento da tira a ser lida, o número de versão da tira a ser lida, e um ID de objeto da tira a ser lida, o número de versão da tira a ser lida é correspondente ao ID de instantâneo do instantâneo mais recente de um arquivo ou o volume ao qual a tira a ser lida pertence, e o ID de objeto da tira a ser lida é o ID de objeto ao qual a tira a ser lida pertence; determinar se uma tira determinada por utilizar o ID de objeto, o número de versão da tira a ser lida, e o deslocamento da tira a ser lida é gravado em backup; e, se a tira é gravada em backup, ler dados determinados por utilizar o ID de objeto, o número de versão da tira a ser lida, o deslocamento da tira a ser lida, e o tamanho da tira a ser lida, utilizar os dados lidos como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente; ou se a tira não é gravada em backup, pesquisar, um por um de acordo com uma ordem decrescente de tempos de instantâneo de objetos, os objetos cujos IDs de objeto são os mesmos como o ID de objeto da tira a ser lida e números de versão são diferentes a partir do número de versão da tira a ser lida até que um objeto que armazena dados válidos em uma localização de armazenamento determinada por utilizar o deslocamento da tira a ser lida seja encontrado, utilizar os dados válidos encontrados como a tira a ser lida, e enviar a tira a ser lida para o servidor de cliente, onde um número de versão do objeto é correspondente ao ID de instantâneo que é do instantâneo mais recente do arquivo ou o volume ao qual a tira a ser lida pertence e que existe antes do objeto ser gerado.
[0024] Ao aplicar a presente invenção, uma combinação de um ID de objeto e um número de versão é utilizada para substituir um ID de objeto no estado da técnica, o que reduz a quantidade de um ID de objeto, e reduz a perda de recursos de sistema.
BREVE DESCRIÇÃO DOS DESENHOS
[0025] Para descrever as soluções técnicas nas modalidades da presente invenção com mais clareza, o seguinte descreve resumidamente os desenhos anexos necessários para descrever as modalidades ou o estado da técnica. Os desenhos anexos na descrição que segue mostram apenas algumas modalidades da presente invenção, e outros desenhos podem ainda ser derivados a partir destes desenhos anexos.
[0026] A Figura 1 é um diagrama de estrutural esquemático de um sistema de armazenamento de objeto de acordo com uma modalidade da presente invenção;
[0027] A Figura 2 é um fluxograma de uma modalidade de um método de processamento de dados de acordo com a presente invenção;
[0028] A Figura 3A e Figura 3B são diagramas estruturais esquemáticos de uma política de distribuição de tira de acordo com uma modalidade da presente invenção;
[0029] A Figura 4 é um diagrama de uma modalidade de uma solução de leitura de tira baseada em ROW;
[0030] A Figura 5 é um diagrama de uma modalidade de uma solução de leitura de tira baseada em COW;
[0031] A Figura 6 é um diagrama estrutural esquemático de uma modalidade de um sistema de armazenamento de acordo com a presente invenção; e
[0032] A Figura 7 é um diagrama de composição esquemático de uma modalidade de um sistema de armazenamento de acordo com a presente invenção.
DESCRIÇÃO DE MODALIDADES
[0033] O seguinte claramente e completamente descreve as soluções técnicas na presente invenção com referência aos desenhos anexos, nas modalidades da presente invenção. Aparentemente, as modalidades descritas são apenas uma parte, em vez de todas as modalidades da presente invenção. Todas as outras modalidades obtidas com base nas modalidades da presente invenção, cairão dentro do âmbito de proteção da presente invenção.
[0034] Como mostrado na Figura 1, a Figura 1 é um diagrama de estrutural esquemático de um sistema de armazenamento de objeto, que pode incluir um servidor de cliente 11 e o dispositivo de armazenamento de objeto 12. O dispositivo de armazenamento de objeto 12 pode fornecer um serviço de armazenamento de objeto (Object) para o servidor de cliente 11.
[0035] Um dispositivo de armazenamento baseado em objetos (Object-based Storage Device, OSD) pode ser referido como um dispositivo de armazenamento de objeto. Em uma tecnologia de armazenamento de objeto, um sistema de armazenamento é criado com base no dispositivo de armazenamento de objeto, e cada dispositivo de armazenamento de objeto pode ter inteligência particular e pode gerenciar automaticamente distribuição de dados no dispositivo de armazenamento de objeto.
[0036] Um objeto é uma unidade de armazenamento de dados básica no sistema. Um arquivo é utilizado em um exemplo, e um objeto é realmente uma combinação de uma parte de dados do arquivo e informação de atributo desta parte de dados, onde a informação de atributo também é referida como metadados (Meta Data), e um parâmetro de matriz redundante baseada em arquivo de discos independentes (RAID), distribuição de dados, qualidade de serviço e semelhantes podem ser definidos. No entanto, em um sistema de armazenamento tradicional, um arquivo ou bloco é utilizado como unidade de armazenamento básica, e em um sistema de armazenamento de bloco, um atributo de cada bloco no sistema precisa ser sempre rastreado, e um objeto mantém um atributo do objeto pela comunicação com o sistema de armazenamento. No dispositivo de armazenamento de objeto, cada objeto tem um identificador de objeto (ID), de modo a facilitar acesso ao objeto.
[0037] Um OSD tem inteligência particular, e pode ter uma CPU, uma memória e um meio de armazenamento. Comparado com um dispositivo de bloco, o OSD pode fornecer uma interface de acesso diferente. Em um mesmo sistema de armazenamento, pode haver um ou mais OSDs, e na Figura 1, dois OSDs são utilizados como um exemplo. Atualmente, uma estrutura de lâmina é internacionalmente e geralmente utilizada para implementar o dispositivo de armazenamento de objeto. O OSD pode fornecer três funções: (1) Armazenamento de dados: O OSD gerencia objetos e armazena os objetos no meio de armazenamento, como um disco, o OSD não fornece um modo de acesso de interface de bloco, e quando um cliente solicita dados, leitura e gravação de dados são realizadas utilizando um ID de objeto e um deslocamento. (2) Distribuição Inteligente: O OSD otimiza distribuição de dados armazenados localmente utilizando a CPU e a memória que são do OSD, e suporta pré-busca de dados. Poruqe o OSD pode suportar inteligentemente pré-busca de objetos, uma velocidade de leitura de dados pode ser otimizada. (3) Gerenciamento de metadados de cada objeto: O OSD gerencia metadados de um objeto armazenado no OSD, onde os metadados são registrados em uma estrutura de dados que é referida como um nó de índice (index node, inode), e os metadados geralmente incluem informação como um tamanho de objeto e uma quantidade de tiras incluídas. Em um sistema de armazenamento anexado à rede tradicional (NAS), os metadados são mantidos por um servidor de arquivos. Em uma arquitetura de armazenamento de objetos, os metadados podem ser gerenciados por um servidor de metadados, ou trabalho de gerenciamento de metadados principal no sistema pode ser implementado pelo OSD, o que reduz os custos de um cliente.
[0038] Uma modo de armazenamento atual é copiar na primeira escrita (COFW), que às vezes é referido como cópia em escrita (COW) para abreviar. Isto é, quando novos dados são escritos em uma localização de armazenamento em um dispositivo de armazenamento pela primeira vez, os dados originais neste local de armazenamento são primeiro lidos e escritos em outra localização de armazenamento (a outra localização de armazenamento é uma localização de armazenamento reservada para um instantâneo e é referida como espaço de instantâneo) e, em seguida, os novos dados são escritos no dispositivo de armazenamento. Pode ser aprendido a partir de um processo de execução de COW que uma operação de leitura e duas operações de escrita precisam ser executadas esta forma de implementação.
[0039] Redirecionar na primeira escrita (redirecionar na primeira escrita, ROW) é outro método para armazenar novos dados. Em ROW, os novos dados são escritos em uma localização de armazenamento reservada e uma localização de armazenamento de dados antiga continua sem alteração. Em comparação com COW, uma operação de escrita pode ser reduzida em ROW.
[0040] Na tecnologia de armazenamento de objeto, a maioria dos trabalhos de gerenciamento de metadados pode ser distribuída a cada OSD inteligente, e cada OSD é responsável pelo gerenciamento, distribuição e recuperação de dados armazenados localmente, onde 90% do trabalho de gerenciamento de metadados é distribuído para um dispositivo de armazenamento inteligente e apenas 10% do trabalho de gerenciamento de metadados é executado pelo servidor de metadados, de modo que o desempenho do gerenciamento de metadados no sistema é melhorado. Além disso, o OSD é um dispositivo conectado a uma rede, e inclui um meio de armazenamento, como um disco ou uma fita magnética, e pode gerenciar os dados armazenados localmente com inteligência suficiente. Um servidor de armazenamento comunica diretamente com o OSD e acessa dados armazenados no OSD, e porque o OSD é inteligente, o servidor de arquivos não precisa se envolver.
[0041] Um objeto é uma combinação de dados e um atributo de dados. O atributo de dados pode ser definido de acordo com uma exigência de aplicação e inclui distribuição de dados, qualidade de serviço, e semelhantes. O servidor de cliente 11 pode ser um servidor baseado no protocolo NAS ou um protocolo de rede de área de armazenamento de servidor baseada na rede de área de armazenamento (SAN). Isto é, esta modalidade da presente invenção é aplicável tanto a um sistema de arquivos como a um sistema de blocos.
[0042] Para dados em armazenamento anexado ao sistema de rede (NAS), o objeto nesta modalidade da presente invenção provém de um arquivo, o arquivo é dividido em vários fragmentos, e um fragmento e informação como um atributo e metadados que são deste fragmento constituem conjuntamente um objeto. Da mesma forma, para dados em uma rede de área de armazenamento (SAN), um volume (Volume) é dividido em fragmentos.
[0043] Na arte anterior, um objeto é determinado utilizando um ID de objeto e, por conseguinte, um ID de cada objeto é único. Depois que um mesmo arquivo é atualizado por várias vezes, IDs de objeto de uma grande quantidade podem ser gerados, e isto requer espaço de armazenamento grande para registrar os IDs de objeto. Nas modalidades da presente invenção, um objeto é determinado utilizando uma combinação de um ID de objeto e um número de versão. Quando os dados de um arquivo são atualizados por várias vezes, se um intervalo de deslocamento dos dados atualizados permanece inalterado, um ID de objeto correspondente aos dados atualizados pode permanecer inalterado e somente diferentes números de versão do objeto precisam ser atualizados, de modo que uma quantidade total de IDs de objeto mantidos em um sistema é reduzida. Além disso, nas soluções nas modalidades da presente invenção, há uma correspondência entre um número de versão de objeto e um ID de instantâneo, e em um intervalo de tomada de dois instantâneos, todos os objetos em um mesmo arquivo utilizam um mesmo número de versão independentemente de quantas vezes os dados no arquivo são atualizados e, portanto, o número de versão ocupa espaço de armazenamento muito pequeno.
[0044] Na técnica anterior, após o conteúdo de um arquivo ou um volume ser atualizado, para metadados de um objeto relacionado à modificação, metadados armazenados em uma camada de arquivo (uma camada semântica de um volume para um sistema de blocos) precisa ser atualizada, e uma quantidade de dados atualizados é relativamente grande. Além disso, um nó de acesso pode acessar um OSD utilizando um servidor de cliente, e se todos os nós de acesso diferentes podem acessar o objeto relacionado à modificação, sincronização de metadados precisa ser executada entre nós. Especificamente, depois que um nó de acesso atualiza os metadados de um objeto, outro nó de acesso pode ser disparado para atualizar integralmente todos os IDs de objeto em um arquivo no qual o objeto modificado é localizado e a frequente sincronização provoca a expansão severa de metadados. No entanto, nas soluções fornecidas nas modalidades da presente invenção, um ID de objeto não precisa ser alterado, apenas um número de versão precisa ser atualizado em uma camada de OSD, e uma quantidade de dados atualizados é muito inferior à do estado da técnica. Além disso, o ID de objeto nas modalidades da presente invenção é obtido por meio de cálculo utilizando um deslocamento.
[0045] Conforme ilustrado na Figura 2, é utilizada uma solicitação de arquivo como um exemplo para descrever especificamente um fluxograma de uma modalidade de um método de processamento de dados de acordo com a presente invenção. De acordo com outra forma de implementação, cada termo relativo a um sistema de arquivos é substituído por um termo correspondente a um sistema de blocos. Por exemplo, um arquivo é substituído por um volume, metadados de arquivos são substituídos por metadados de volume, um número de versão de arquivo é substituído por um número de versão de volume, e um ID de arquivo é substituído por um ID de volume. As diferenças residem em que: (1) os metadados de volume são armazenados em outra localização, não armazenados em um inode; (2) o ID de volume pode ser obtido diretamente e não precisa ser obtido por meio da conversão a partir de um nome de volume.
[0046] Passo 20: Criar um instantâneo, onde um alvo do instantâneo é um arquivo ou um sistema de arquivos que inclui arquivos, ou seja, o alvo do instantâneo inclui os arquivos; e alocar um ID de instantâneo para o instantâneo.
[0047] O instantâneo é criado de duas maneiras. Em uma maneira, um instantâneo de um arquivo é criado, e o alvo do instantâneo é um único arquivo. De outro modo, um instantâneo de um sistema de arquivos é criado, e o alvo do instantâneo é um sistema de arquivos inteiro, onde o sistema de arquivos inclui múltiplos arquivos. Nas duas maneiras, localizações de armazenamento de metadados de arquivo são diferentes.
[0048] Na maneira de criar um instantâneo de um arquivo, um arquivo é selecionado para criar um instantâneo, um nome de instantâneo é definido para o arquivo e, se o nome de instantâneo não tiver sido utilizado, o ID de instantâneo é alocado para o instantâneo do arquivo. O ID de instantâneo do arquivo é utilizado como metadados de arquivo e armazenado em um inode (index node) do arquivo. Note que o ID de instantâneo é uma marca do instantâneo. Por exemplo, um ponto de tempo para criar o instantâneo é utilizado como o ID de instantâneo, ou números crescentes são utilizados como IDs de instantâneo de acordo com uma ordem de pontos de tempo para criar instantâneos.
[0049] Na maneira de criar um instantâneo de um sistema de arquivos, um sistema de arquivos é selecionado para tirar um instantâneo e, se um nome de instantâneo não tiver sido utilizado, o ID de instantâneo é alocado para o instantâneo do sistema de arquivos e, em seguida, o ID de instantâneo alocado é armazenado em um inode raiz do sistema de arquivos. Desta forma, pode ser considerado que um ID de instantâneo de cada arquivo no sistema de arquivos é o mesmo que o ID de instantâneo do sistema de arquivos. Uma diferença da maneira anterior reside no fato de que o ID de instantâneo do arquivo é armazenado no inode raiz do sistema de arquivos, mas não no inode do arquivo.
[0050] Além do ID de instantâneo do arquivo, os metadados de arquivo incluem ainda um identificador de arquivo (FID), e os metadados de arquivo podem incluir informação adicional, como um tamanho de arquivo (Size) e um tempo de escrita.
[0051] Deve ser notado que o passo 20 é um passo predefinido e tem relativa independência de outros passos nesta modalidade de método. Esta modalidade da presente invenção descreve principalmente operações executadas por um servidor de cliente e um OSD depois de criar um instantâneo e antes de ser criado um instantâneo seguinte.
[0052] Passo 21: Um servidor de cliente recebe uma solicitação de escrita de arquivo, onde a solicitação de escrita de arquivo transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um nome de arquivo, e os dados a serem escritos são parte de um arquivo.
[0053] Especificamente, este passo pode ser executado por um programa em um sistema de arquivos do servidor de cliente. A solicitação de escrita de arquivo é uma solicitação de escrita que pode ser identificada pelo sistema de arquivos. A solicitação de escrita de arquivo pode estar criando um arquivo, ou utilizando os dados a serem escritos para atualizar um arquivo que já existe, onde os dados a serem escritos são parte do arquivo ou todo o arquivo.
[0054] A solicitação de escrita de arquivo pode ainda transportar um tamanho dos dados a serem escritos, de modo que os dados a serem escritos são divididos em uma tira de acordo com o deslocamento dos dados a serem escritos em um passo subsequente; ou pode não transportar um tamanho dos dados a serem escritos, porque o tamanho dos dados a serem escritos pode ser obtido por medir os dados a serem escritos.
[0055] O deslocamento dos dados a serem escritos descreve uma localização relativa dos dados a serem escritos no arquivo. Especificamente, o deslocamento dos dados a serem escritos pode descrever uma distância entre uma localização inicial dos dados a serem escritos e um cabeçalho de arquivo. Se o deslocamento dos dados a serem escritos for 0, isto indica que a localização inicial dos dados a serem escritos é uma localização inicial de um arquivo a ser escrito. Se o deslocamento dos dados a serem escritos for 1 KB, isto indica que uma distância entre a localização inicial dos dados a serem escritos e a localização inicial do arquivo é um tamanho de dados de 1 KB.
[0056] Opcionalmente, a solicitação de escrita de arquivo pode transportar ainda um caminho de arquivo da solicitação de escrita de arquivo, onde o caminho de arquivo indica localizações de armazenamento do arquivo e uma tabela de relacionamento de mapeamento. Um arquivo é determinado conjuntamente utilizando um caminho de arquivo e um nome de arquivo. Por exemplo, uma combinação do caminho de arquivo e o nome de arquivo é /root/mma/a1, onde /root/mma/ é o caminho de arquivo, a1 é o nome de arquivo, e o arquivo e a tabela de relacionamento de mapeamento são armazenados no caminho /root/mma/.
[0057] Arquivos diferentes podem ter nomes de arquivo diferentes, e nomes de arquivo no mesmo caminho de arquivo não são os mesmos.
[0058] Opcionalmente, a solicitação de escrita pode ainda transportar uma localização de armazenamento de uma tabela de relacionamento de mapeamento, onde a tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID.
[0059] Um ID de instantâneo é gerado cada vez que um instantâneo é criado, cada ID de instantâneo tem um número de versão de arquivo correspondente e o ID de instantâneo está em uma correspondência de um-para-um com o número de versão do arquivo. Além disso, uma regra de alteração de IDs de instantâneo correspondentes aos tempos de instantâneo adjacentes é igual a uma regra de alteração de números de versão de arquivo correspondente aos tempos de instantâneo adjacentes.
[0060] Antes do passo 22 ser executado, um relacionamento de mapeamento entre o ID de instantâneo e o número de versão do arquivo pode ser registrado.
[0061] Os dois passos a seguir são incluídos: (1) Gravar em backup metadados de arquivos mais recentes, o que pode ser especificamente implementado por gravar em backup um inode. Para um instantâneo de um nível de arquivo, um inode de um arquivo é gravado em backup e, para um instantâneo de um nível de sistema de arquivos, um inode de um sistema de arquivos é gravado em backup, incluindo tanto um inode de um arquivo e um inode raiz do arquivo. (2) Atualizar um número de versão no inode. Se um modo de escrita que é definido no servidor de cliente é ROW, o número de versão atualizado é armazenado no inode gravado em backup. Se um modo de escrita que é definido no servidor de cliente é COW, o número de versão atualizado é armazenado em um inode que é gerado por meio de backup e, opcionalmente, o inode gravado em backup também pode gravar o número de versão atualizado. Por exemplo, se um inode A é gravado em backup para gerar um inode B, o inode A é um inode gravado em backup, e o inode B é um inode que é gerado por meio de backup.
[0062] O ID de instantâneo é gerado no passo 20. Há uma correspondência entre o número de versão do arquivo e o ID de instantâneo, e o ID de instantâneo corresponde a um tempo de instantâneo; portanto, também pode ser considerado que há uma correspondência entre o número de versão do arquivo e o tempo de instantâneo. A correspondência significa que cada número de versão de arquivo corresponde a um ID de instantâneo único, e uma regra de alteração do número de versão do arquivo é semelhante à do ID de instantâneo. Por exemplo, um ID de instantâneo maior indica um número de versão de arquivo maior, ou um ID de instantâneo maior indica um número de versão de arquivo menor. Um instantâneo com um tempo de instantâneo posterior entre vários instantâneos tem um ID maior.
[0063] Deve ser notado que, em um método de escrita de dados baseado em um sistema de blocos, incluindo uma SAN, um volume é marcado por utilizar um ID de volume em vez de um nome de arquivo, e uma função do ID de volume é semelhante à do FID. Além disso, no volume, não há conceito semelhante ao caminho de arquivo. Portanto, um passo de executar uma consulta na tabela de relacionamento de mapeamento não é mais necessário no passo 22, e uma consulta pode ser realizada diretamente em metadados de volume utilizando o ID de volume para obter um volume de versão de arquivo.
[0064] Passo 22: O servidor de cliente executa uma consulta em uma tabela de relacionamento de mapeamento por utilizar o nome de arquivo, para obter um identificador de arquivo (FID) do arquivo em que os dados a serem escritos são localizados, e executar uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo.
[0065] A tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID, e o nome de arquivo está em uma correspondência de um- para-um com o FID. A localização de armazenamento da tabela de relacionamento de mapeamento pode ser transportada na solicitação de escrita de arquivo e é obtida pelo servidor de cliente a partir da solicitação de escrita, ou a tabela de relacionamento de mapeamento pode ser pré-armazenada no servidor de cliente pelo servidor de cliente, e o servidor de cliente encontra a tabela de relacionamento de mapeamento de acordo com o caminho de arquivo, ou a tabela de relacionamento de mapeamento pode ser armazenada em outro dispositivo de armazenamento.
[0066] O número de versão do arquivo obtido pode ser atualizado para os metadados. Após a atualização, os metadados de arquivo registram o FID e o número de versão do arquivo, e o número de versão do arquivo pode ser obtido por executar uma consulta nos metadados de arquivo por utilizar o FID. Os metadados de arquivo podem ser armazenados em informação sobre um inode. O caminho de arquivo indica uma localização de armazenamento do inode. Pode ser aprendido a partir da descrição anterior que, para ROW, porque o número de versão é armazenado no inode gravado em backup, o inode gravado em backup é lido neste passo. Para COW, porque o número de versão é armazenado no inode que é gerado por meio de backup, o inode que é gerado por meio de backup é lido neste passo.
[0067] Há uma correspondência de um-para-um entre o número de versão do arquivo e o ID de instantâneo do arquivo e, após a geração do ID de instantâneo, o servidor de cliente gera o número de versão do arquivo que está em uma correspondência de um-para-um com o ID de instantâneo. Por exemplo, o ID de instantâneo pode ser utilizado diretamente como o número de versão do arquivo, ou um ID de instantâneo obtido após uma operação ser executada pode ser utilizado como o número de versão do arquivo. Se um instantâneo que é criado mais tarde tem um ID de instantâneo maior, uma maneira opcional é: o instantâneo que é criado posteriormente tem um valor maior do ID de instantâneo; outra maneira opcional é: o instantâneo que é criado posteriormente tem um valor menor do ID de instantâneo.
[0068] Nas modalidades da presente invenção, por vezes é também utilizado um número de versão de uma tira a ser escrita. O número de versão da tira a ser escrita é um número de versão de arquivo de um arquivo ao qual a tira a ser escrita pertence. Ou seja, números de versão de tira de tiras diferentes de um mesmo arquivo são os mesmos. Da mesma forma, um número de versão de objeto (ou um número de versão de um objeto) é o número de versão do arquivo do arquivo ao qual a tira a ser escrita pertence. Ou seja, números de versão de objeto de objetos diferentes de um mesmo arquivo são os mesmos.
[0069] Passo 23: O servidor de cliente divide os dados a serem escritos em múltiplas tiras que incluem uma tira a ser escrita (strip) e obtém, de acordo com uma política de distribuição de tira, um deslocamento da tira a ser escrita e um ID de um objeto ao qual a tira a ser escrita pertence, onde o ID de objeto ao qual a tira a ser escrita pertence também é referido como um ID de objeto.
[0070] O servidor de cliente divide os dados em uma ou mais tiras de acordo com um tamanho de tira (Size). Uma tira é dados de um tamanho específico. Quando o tamanho dos dados a serem escritos é menor ou igual a um tamanho de uma única tira, os dados a serem escritos são divididos em uma única tira; se o tamanho dos dados a serem escritos for maior que o tamanho da única tira, os dados a serem escritos são divididos em múltiplas tiras. Os tamanhos de tiras divididas a partir de um mesmo arquivo são os mesmos. O tamanho de tira (Size) pode ser armazenado nos metadados de arquivo e, neste caso, arquivos diferentes podem utilizar tamanhos de tira diferentes. Alternativamente, o tamanho da tira não pode ser armazenado nos metadados de arquivo ao qual o objeto pertence, arquivos no sistema de arquivos inteiro compartilham um tamanho de tira e, nesse caso, arquivos diferentes utilizam um mesmo tamanho de tira, e o tamanho de tira é armazenado no inode raiz do sistema de arquivos. Um objeto pode ser considerado como um contêiner, que pode acomodar uma tira.
[0071] Por exemplo, se os dados a serem escritos forem divididos em múltiplas tiras de dados, a tira neste passo refere-se a uma tira de dados obtida por meio de divisão; ou após os dados a serem escritos serem divididos em uma tira de dados, se múltiplas tiras de verificação forem ainda geradas para executar proteção de dados na tira de dados, a tira neste passo inclui tanto a tira de dados como a tira de verificação.
[0072] Uma quantidade total de tiras incluídas em cada objeto pode ser armazenada nos metadados de arquivo e, neste caso, uma quantidade total de tiras incluídas em objetos em arquivos diferentes pode ser diferente; ou uma quantidade total de tiras incluídas em cada objeto não pode ser armazenada nos metadados de arquivo ao qual o objeto pertence e, neste caso, uma quantidade total de tiras incluídas em objetos em arquivos diferentes é a mesma.
[0073] Deve ser notado que uma localização inicial dos dados a serem escritos no arquivo pode ser aprendida a partir do deslocamento dos dados a serem escritos, e uma localização final dos dados a serem escritos no arquivo pode ser aprendida a partir do deslocamento dos dados a serem escritos e o tamanho dos dados a serem escritos. Se a localização inicial dos dados a serem escritos não for um múltiplo inteiro do tamanho de tira, ou um valor da localização final mais 1 não é um múltiplo inteiro do tamanho de tira, os dados a serem escritos são primeiro divididos de acordo com o tamanho de tira, e fronteiras de divisão são múltiplos inteiros do tamanho de tira. Se dados cujo tamanho for inferior a uma tira (este tipo de dados também pode ser referido como dados sujos de uma tira) são gerados após a divisão, os dados são suplementados para formar uma tira. Por causa de uma operação suplementar neste passo, a menos que seja especificado de outro modo, tanto uma tira como um deslocamento da tira que são mencionados em um passo subsequente referem-se a uma tira e um deslocamento da tira que são obtidos após suplementação.
[0074] Por exemplo, se um intervalo de deslocamento dos dados a serem escritos for 4 KB - 300 KB e o tamanho de tira é 256 KB, 0 KB e 256 KB são utilizados como fronteiras para dividir os dados a serem escritos, e dois blocos de dados são formados, onde intervalos de deslocamento dos dois blocos de dados nos dados a serem escritos são respectivamente 4 KB - 255 KB e 256 KB - 300 KB. A suplementação é realizada nos dois blocos de dados, e são formadas duas tiras cujos tamanhos são 256 KB. Os dados (cujo tamanho é 4 KB - 0 KB = 4 KB) utilizados para suplementar um bloco de dados anterior vêm de uma tira anterior, e os dados (cujo tamanho é 511 KB - 300 KB = 211 KB) utilizados para suplementar um último bloco de dados vêm de uma tira seguinte. O deslocamento dos dados a serem escritos é uma localização relativa dos dados a serem escritos no arquivo.
[0075] Outro método de suplementação é como segue: Se a localização inicial dos dados a serem escritos não é um múltiplo inteiro do tamanho de tira, ou um valor de um deslocamento de localização final mais 1 não é um múltiplo inteiro do tamanho de tira, pode ser realizada uma operação de suplementação nos dados a serem escritos de tira, de modo que tamanhos das tiras obtidas após a divisão são consistentes e não há margem na tira. Os dados já armazenados no OSD podem ser lidos e utilizados como dados para suplementação.
[0076] Por exemplo, se um intervalo de deslocamento dos dados a serem escritos for de 4 KB - 300 KB e o tamanho de tira for 256 KB, os dados a serem escritos poderão ser suplementados para formar dados cujo intervalo de deslocamento é 0 KB - 511 KB e, em seguida, os dados são divididos em duas tiras cujos intervalos de deslocamento são 0 KB - 255 KB e 256 KB - 511 KB, de modo que um tamanho de cada tira é 256 KB.
[0077] A política de distribuição de tira é fornecida pelo sistema de arquivos do servidor de cliente. O que é descrito é o objeto ao qual a tira pertence, isto é, uma correspondência entre a tira e o objeto, que especificamente pode ser uma correspondência entre o deslocamento da tira e o objeto.
[0078] Um ID de objeto identifica unicamente um objeto, IDs de objeto que pertencem a um mesmo arquivo são diferentes, e IDs de objeto em arquivos diferentes também são diferentes.
[0079] Opcionalmente, pode haver uma correspondência entre o ID de objeto e o FID do arquivo ao qual o objeto pertence. Isto é, por exemplo, um arquivo, a partir do qual um objeto representado por esse ID de objeto vem, pode ser aprendido a partir do ID de objeto.
[0080] Por exemplo, uma maneira opcional para gerar o ID de objeto é a seguinte: O ID de objeto inclui números binários de 64 bits, onde 32 bits anteriores são um ID do arquivo ao qual o objeto pertence, os últimos 32 bits são atribuídos pelo servidor de cliente, os últimos 32 bits são únicos no arquivo, e os últimos 32 bits de objetos diferentes em um mesmo arquivo são diferentes. Por exemplo, um identificador de um objeto em um arquivo é utilizado. Desta maneira, o FID correspondente pode ser aprendido a partir dos 32 bits anteriores do ID de objeto. De modo semelhante, no sistema de blocos (block), um relacionamento entre um ID de objeto e um ID de volume também pode ser estabelecido.
[0081] Outra maneira opcional para gerar o ID de objeto é a seguinte: O ID de objeto inclui números binários de 48 bits, onde 16 bits anteriores correspondem ao arquivo e 16 bits anteriores de arquivos diferentes são diferentes; os últimos 32 bits são atribuídos pelo servidor de cliente, os últimos 32 bits são únicos no arquivo e os últimos 32 bits de objetos diferentes em um mesmo arquivo são diferentes.
[0082] Em outra modalidade, pode também não existir correspondência entre o ID e o FID do arquivo ao qual o objeto pertence.
[0083] A Figura 3A e Figura 3B mostram duas políticas de distribuição de tira diferentes. Um índice de tira descreve um relacionamento de deslocamento de uma tira em um arquivo, e o índice de tira é um inteiro maior ou igual a 0, onde o menor índice de tira é 0, o segundo menor índice de tira é 1, e o terceiro menor índice de tira é 2, ..., e assim por diante. Duas tiras com valores de índice adjacentes também têm deslocamentos adjacentes no arquivo.
[0084] Uma política de distribuição de tira opcional é mostrada na Figura 3A: (1) tamanhos de objetos que pertencem a um mesmo arquivo são fixos, e tamanhos de tiras em um mesmo arquivo são os mesmos, o que significa que uma quantidade total de tiras incluídas em objetos diferentes é a mesma; (2) um objeto anterior é preenchido primeiro e, em seguida, um próximo objeto é preenchido por tiras de acordo com uma ordem de índice, ou seja, múltiplas tiras consecutivas pertencem a um mesmo objeto de acordo com uma ordem de tamanhos de deslocamento de tiras nos dados a serem escritos. Conforme ilustrado na Figura 3A, cada objeto inclui fixamente quatro tiras. Por exemplo, um tamanho de tira é 256 KB, e cada objeto tem quatro tiras, ou seja, um tamanho de objeto é 256 KB x 4 = 1024 KB. Nesse caso, o primeiro objeto armazena a tira 0 na tira 3, o segundo objeto armazena a tira 4 na tira 7, e o terceiro objeto armazena a tira 8 para a tira 11,... e, consequentemente, um ID do primeiro objeto é 0, um ID do segundo objeto é 1, e um ID do terceiro objeto é 2,...
[0085] Um deslocamento de tira é utilizado para descrever uma localização relativa de uma tira em um objeto, e pode ser especificamente uma localização relativa de dados iniciais da tira no objeto. Deslocamento de tira = (Índice de tira % Quantidade de tiras em um objeto) x Tamanho de tira, onde % refere-se ao cálculo de um restante após a divisão de um termo anterior por um último termo. Portanto, um valor de "Índice de tira % Quantidade de tiras em um objeto" é um restante obtido após o índice de tira ser dividido pela quantidade de tiras no objeto.
[0086] Outra política de distribuição de tira opcional é mostrada na Figura 3B: (1) tamanhos de objetos em um mesmo arquivo não são fixos, ou seja, uma quantidade total de tiras em objetos diferentes do mesmo arquivo pode ser diferente; (2) uma quantidade total de objetos é fixa, isto é, arquivos diferentes têm objetos de uma mesma quantidade, e como mostrado na Figura 3B, há três objetos no total. Por exemplo, se um tamanho de tira é 256 KB, e uma quantidade total de objetos é fixada para 3, a primeira tira (strip 0) é localizada no primeiro objeto (objeto 0), a segunda tira (tira 1) é localizada no segundo objeto (objeto 1), ..., e por analogia, a quarta tira (tira 3) é também localizada no primeiro objeto, e a quinta tira (tira 4) é também localizada no segundo objeto. Um índice de tira é um número inteiro maior ou igual a 0, e descreve um relacionamento de localização entre tiras em um arquivo. Um deslocamento de cada tira em um objeto ao qual a tira pertence pode também ser determinado, e um identificador de um objeto no arquivo pode ser um resto obtido após o índice de tira ser dividido por uma quantidade total de objetos no arquivo. Uma fórmula de cálculo específica pode ser: Identificador de um objeto em um arquivo = Índice de tira % Quantidade de objetos em um arquivo, e Deslocamento de tira = (Índice de tira/Quantidade de objetos) x Tamanho de tira.
[0087] O índice de tira pode ser determinado utilizando o deslocamento dos dados a serem escritos. Por exemplo, para um arquivo inteiro, dados iniciais obtidos após a divisão do arquivo são localizados em uma tira (tira 0) no primeiro objeto, e o deslocamento dos dados a serem escritos atuais é localizado na quinta tira (tira 4) no objeto 1. Neste caso, em tiras geradas depois da divisão dos dados a serem escritos, um índice da primeira tira é 4, e um índice de outra tira é obtido por analogia.
[0088] O anterior descreve duas soluções para calcular o ID de objeto ao qual a tira pertence, e de acordo com diferentes políticas de distribuição de tira, pode também existir outra solução de implementação. Parâmetros utilizados em diferentes políticas de distribuição podem ser diferentes, e esses parâmetros podem ser geralmente obtidos por executar uma consulta no servidor de cliente.
[0089] Porque maneiras de processamento de todas as tiras são as mesmas, o seguinte usa apenas uma “tira a ser escrita” particular como um exemplo para descrição.
[0090] Passo 24: O servidor de cliente seleciona um OSD utilizado para armazenar a tira a ser escrita.
[0091] Especificamente, este passo pode ser executado por um cliente de armazenamento de objeto do servidor de cliente.
[0092] Um método de cálculo opcional é determinar, de acordo com o FID da tira a ser escrita, o OSD para armazenar a tira a ser escrita. Por exemplo, um valor de hash do FID é dividido por uma quantidade total de OSDs, e um restante é utilizado como um identificador do OSD para armazenar a tira a ser escrita, ou seja, o valor de hash do FID mod a quantidade total de OSDs. Também pode haver outra solução. Por exemplo, o servidor de cliente seleciona aleatoriamente um OSD para armazenar uma tira a ser escrita que pertence a um objeto, e tiras que pertencem a um mesmo objeto podem ser armazenadas em um mesmo OSD.
[0093] Além disso, o OSD para armazenar a tira pode também ser conjuntamente determinado de acordo com o FID e um ID de objeto que são da tira a ser escrita. Na verdade, um método de cálculo pode ser selecionado aleatoriamente fornecido que um OSD possa ser selecionado.
[0094] Passo 25: O servidor de cliente envia uma solicitação de escrita de tira para o OSD, onde a solicitação de escrita de tira transporta a tira a ser escrita, um número de versão da tira a ser escrita, o deslocamento da tira a ser escrita, e o ID de objeto ao qual a tira a ser escrita pertence e, opcionalmente, pode ainda incluir um tamanho de tira a ser escrita.
[0095] Opcionalmente, em um caso em que o OSD suporta tanto ROW e COW, um modo de escrita pode ser enviado adicionalmente, de modo que o OSD escreve a tira a ser escrita de acordo com o modo de escrita especificado pelo servidor de cliente. O modo de escrita é ROW ou COW. Se o OSD suporta apenas um modo de escrita, o modo de escrita pode não ser enviado para o OSD.
[0096] Passo 26: O OSD recebe a solicitação de escrita de tira e escreve a tira a ser escrita em um meio de armazenamento do OSD.
[0097] Quando o OSD suporta apenas um modo de escrita, o OSD pode escrever diretamente a tira a ser escrita no meio de armazenamento em um modo de escrita padrão sem necessidade de confirmar se o modo de escrita é ROW ou COW.
[0098] Ao receber dados, o OSD primeiro armazena temporariamente os dados em um buffer, e neste passo, os dados a serem escritos no buffer podem ser armazenados no meio de armazenamento.
[0099] Um deslocamento de tira descreve uma localização relativa de uma tira em um objeto, que, especificamente, pode ser uma localização relativa de dados iniciais da tira no objeto, e Deslocamento de tira + Tamanho de tira = Localização relativa dos dados finais de uma tira em um objeto.
[00100] Uma marca de backup dos dados é no OSD, e uma granularidade da marca de backup dos dados pode ser consultada no OSD utilizando o ID de objeto como um índice, ou pode ser definido por padrão que todas as tiras recebidas pelo OSD são armazenadas de acordo com uma mesma granularidade da marca de backup. Tiras que pertencem a um mesmo arquivo utilizam um mesmo tipo de granularidade de gravação. Um dispositivo real pode suportar apenas um caso em que um objeto é utilizado como a granularidade da marca de backup, ou pode suportar apenas um caso em que uma tira é utilizada como a granularidade da marca de backup. Nesse caso, o OSD pode executar diretamente o armazenamento sem a necessidade de consultar a granularidade da marca de backup.
[00101] No OSD, um objeto pode ser conjuntamente determinado utilizando dois parâmetros: um ID de objeto e um número de versão e, portanto, um conjunto que inclui os dois parâmetros é referido como um parâmetro principal de objeto nesta modalidade. Depois que o objeto é determinado, uma tira pode ser determinada por utilizar ainda um deslocamento de tira, isto é, uma tira pode ser determinada conjuntamente por utilizar três parâmetros: o ID de objeto, o número de versão, e o deslocamento da tira e, portanto, um conjunto que inclui os três parâmetros é referido como um parâmetro principal de tira.
[00102] No OSD, o parâmetro principal de objeto pode indicar uma localização de armazenamento que é utilizada para armazenar um objeto e, especificamente, pode indicar um endereço inicial que deve ser utilizado pelo objeto. Opcionalmente, o parâmetro principal de objeto pode indicar um segmento de endereço que deve ser utilizado pelo objeto. Similarmente, a o parâmetro principal de tira também pode indicar um endereço inicial ou um segmento de endereço que é utilizado para armazenar uma tira. O endereço inicial e o segmento de endereço podem ser endereços físicos ou endereços lógicos.
[00103] Há vários casos possíveis de pesquisar, por utilizar o parâmetro principal de objeto, para uma localização de armazenamento de um objeto determinado utilizando o parâmetro de chave do objeto. Em um caso, antes de receber a solicitação de escrita de tira, o OSD já grava um parâmetro principal de objeto transportado na solicitação de escrita de tira, e aloca uma localização de armazenamento para uma tira representada por esse grupo de parâmetros principais. Em outro caso, o OSD não grava este grupo de parâmetros principais e não aloca a localização de armazenamento para a tira representada por este grupo de parâmetros principais, e depois de receber a solicitação de escrita de tira, o OSD aloca uma localização de armazenamento para este grupo de parâmetros principais de objeto.
[00104] Um conjunto de objetos é um conjunto de objetos com um mesmo ID de objeto e diferentes números de versão, onde o conjunto de objetos inclui pelo menos um objeto e o conjunto de objetos pode ser um conceito lógico e não precisa ser realmente dividido.
[00105] Um ID de objeto é determinado de acordo com um intervalo de um deslocamento que é de dados transportados em um objeto e que está em um arquivo. Se forem tirados vários instantâneos de um mesmo arquivo, e os dados que forem alterados forem armazenados em um OSD cada vez que um instantâneo for tirado, os dados com o mesmo deslocamento entre os dados que mudam têm o mesmo ID de objeto.
[00106] No OSD, uma marca é utilizada para indicar se um objeto ou uma tira é gravado em backup. Uma granularidade de uma marca de backup pode ser uma tira ou um objeto. Se uma menor unidade de marcada é uma tira, a granularidade da marca de backup é uma tira, e se uma menor unidade marcada é um objeto, a granularidade da marca de backup é um objeto.
[00107] Uma marca de backup de um objeto indica que um objeto determinado utilizando um ID de objeto e um número de versão já foi gravado em backup. Especificamente, a marca de backup de um objeto indica se um objeto correspondente ao ID de objeto é gravado em backup depois que um instantâneo correspondente ao número de versão é criado, onde 1 indica que o objeto foi gravado em backup e 0 indica que o objeto não foi gravado em backup. Há especificamente dois casos em que a marca de backup do objeto é 0, onde um caso é que o objeto determinado utilizando o ID de objeto e o número de versão é modificado e uma operação de backup não é executada ainda; o outro caso é que o objeto determinado utilizando o ID de objeto e o número de versão não é modificado.
[00108] Uma marca de backup de uma tira indica que uma tira determinada por utilizar um ID de objeto, um número de versão e um deslocamento de tira já foi gravada em backup. Especificamente, a marca de backup de uma tira indica se uma tira correspondente ao ID de objeto e ao deslocamento da tira é gravada em backup depois que um instantâneo correspondente ao número de versão é criado, onde 1 indica que a tira foi gravada em backup e 0 indica que a tira não foi gravada em backup. Há especificamente dois casos em que a marca de backup da tira é 0, onde um caso é que a tira determinada por utilizar o ID de objeto, o número de versão, e o deslocamento da tira é modificado e uma operação de backup não é executada ainda; o outro caso é que a tira determinada por utilizar o ID de objeto, o número de versão, e o deslocamento da tira não é modificado.
[00109] Ao comparar números de versão de objeto, os tempos de instantâneo de objetos diferentes em um mesmo conjunto de objetos podem ser determinados.
[00110] Existem quatro maneiras possíveis no total em que a tira a ser escrita é escrita no OSD: (1) O modo de escrita é ROW, e a granularidade da marca de backup é uma tira. (2) O modo de escrita é ROW, e a granularidade da marca de backup é um objeto. (3) O modo de escrita é COW, e a granularidade da marca de backup é uma tira. (4) O modo de escrita é COW, e a granularidade da marca de backup é um objeto. Um OSD pode suportar um ou mais dos quatro modos possíveis. O seguinte descreve separadamente as quatro possibilidades.
[00111] Maneira 1: Para ROW, a granularidade da marca de backup dos dados no OSD é uma tira.
[00112] A tira a ser escrita é escrita diretamente no OSD de acordo com uma localização de armazenamento determinada por utilizar um parâmetro principal de tira na solicitação de tira. Além disso, após a escrita estar completa, a localização de armazenamento (um endereço de armazenamento inicial ou um segmento de endereço) ocupada pela tira escrita pode ser adicionalmente marcada como "dados válidos escritos" neste passo. Uma localização de armazenamento ocupada pela tira armazenada no meio de armazenamento do OSD é também referida como espaço de tira.
[00113] Um bit pode ser utilizado para marcar se cada tira em um objeto é gravada em backup. Por exemplo, um bit de sinalização de uma localização de armazenamento desta tira é definido como 1, onde 1 indica que dados são escritos e 0 indica que não há dados. Um índice de tira pode ser utilizado para descrever uma ordem de tiras em um objeto, e um bit de sinalização é utilizado para marcar cada tira no objeto. Por exemplo, há quatro partes de espaço de tira no total, onde 0000 indica que nenhum dado é escrito nas quatro partes de espaço de tira; 0010 indica que dados são escritos apenas na segunda parte de espaço de tira; 0101 indica que dados são escritos na primeira parte de espaço de tira e na terceira parte de espaço de tira, e nenhum dado é escrito na segunda parte de espaço de tira e na quarta parte de espaço de tira.
[00114] Deve ser notado que a N-ésima (N é um número natural) parte de espaço de tira descrita nesta modalidade refere-se a uma localização relativa do espaço de tira em um objeto ao qual uma tira pertence, e não se refere a um índice de tira.
[00115] Em um método para determinar um identificador de uma tira em um objeto, por exemplo, pode ser utilizado um deslocamento da tira para determinar, um valor de deslocamento menor indica um valor de identificador de tira menor, uma diferença entre identificadores de tiras adjacentes é 1, e o menor identificador de tira é 0. Se a política de distribuição de tira é a política descrita na Figura 3A neste passo, um método de cálculo rápido para determinar um identificador de tira é: Identificador de tira = Deslocamento de tira/Tamanho de tira. O deslocamento da tira é um deslocamento de uma tira em um objeto. Se esta parte de espaço de tira já tiver sido marcada como "gravada em backup" antes, marcação não pode ser repetidamente realizada neste passo fornecido que esta marca permanece inalterada.
[00116] Maneira 2: Para ROW, a granularidade da marca de backup dos dados no OSD é um objeto.
[00117] A granularidade para determinar a marca de backup na Maneira 2 é diferente em comparação com a da Maneira 1, e determinação de um bit de sinalização de uma tira é alterada para determinar um bit de sinalização de um objeto.
[00118] Uma consulta é realizada em um registro de escrita no OSD utilizando um parâmetro principal de objeto transportado na solicitação de escrita de tira, para determinar se dados válidos são armazenados em uma localização de armazenamento indicada pelo parâmetro principal de objeto. Nesta modalidade, pode ser determinado, através da determinação de um bit de sinalização, se dados válidos são armazenados em uma localização de armazenamento. Por exemplo, se o bit de sinalização é 1, isto indica que dados válidos são armazenados, e se o bit de sinalização é 0, isto indica que não há dados válidos armazenados na localização de armazenamento. Pode ser determinado, por determinar o bit de sinalização da localização de armazenamento indicada pelo parâmetro principal de objeto, se a solicitação de escrita de tira recebida neste momento é a primeira operação de escrita executada neste objeto após a criação de um instantâneo. Por exemplo, quando o bit de sinalização é 0 ou nenhum bit de sinalização é encontrado, isto indica que a primeira escrita após o instantâneo é tomada, e quando o bit de sinalização é 1, isto indica que a não primeira escrita após o instantâneo ser tirado.
[00119] Se a solicitação de escrita de tira não for a primeira escrita realizada neste objeto após o instantâneo ser tirado, a tira a ser escrita será escrita diretamente em uma localização de armazenamento ocupada por este objeto, e uma localização de escrita específica pode ser determinada utilizando o parâmetro principal de tira.
[00120] Se a solicitação de escrita de tira é uma solicitação de escrita que é para este objeto e que é recebida pela primeira vez após o instantâneo deste objeto ser tirado, a tira a ser escrita na solicitação de escrita de tira e uma combinação de tiras obtidas de outro objeto no OSD são empilhadas em um objeto completo que é referido como um objeto emendado. Especificamente, um objeto a partir do qual a parte restante vem é um objeto com um maior número de versão (mas é menor que um número de versão transportado na solicitação de tira) em objetos que têm dados válidos.
[00121] Ou seja, um objeto com um número de versão maior é selecionado a partir de um objeto que tem dados válidos e que pertence a um conjunto de objetos do ID de objeto da tira a ser escrita, e uma tira cujo deslocamento é diferente do deslocamento da tira a ser escrita é obtida, para constituir o objeto emendado conjuntamente com a tira a ser escrita. Um conjunto de um objeto que é armazenado no OSD e cujo ID de objeto é o mesmo que o ID de objeto da tira a ser escrita, e o número de versão é diferente do número de versão da tira a ser escrita é referido como o conjunto de objetos do ID de objeto da tira a ser escrita. Quando o modo de escrita é ROW, um tempo de instantâneo posterior indica um número de versão de objeto correspondente maior, e o ID de objeto da tira a ser escrita é o ID de objeto ao qual a tira a ser escrita pertence.
[00122] Por exemplo, cada objeto inclui 32 tiras, e a tira a ser escrita recebida pelo OSD é a 15a tira nas 32 tiras, e para as restantes 31 tiras, isto é, objetos a partir dos quais a 1a à 14a tiras e a 16a à 32a tiras vêm, são objetos que são escritos no OSD após um instantâneo anterior ser tirado e que tem dados válidos e um mesmo ID de objeto.
[00123] Depois de concluir a escrita, um bit de sinalização desse objeto é registrado como backup. Por exemplo, o bit de sinalização é definido como 1, o que significa que a primeira operação de escrita de tira após o instantâneo ser tirado é completa, isto é, se qualquer tira neste objeto é escrita novamente antes de um próximo instantâneo ser tirado, não é a primeira escrita realizada neste objeto após o instantâneo ser tirado e, portanto, não há necessidade de executar uma operação de backup, e a tira é escrita diretamente.
[00124] Pode ser aprendido a partir da descrição anterior que um mesmo ID de objeto pode corresponder a vários objetos, cada ID de instantâneo corresponde a um objeto, estes objetos são escritos no OSD em momentos diferentes, números de versão de objetos com tempos de escrita adjacentes são adjacentes, e um tempo de escrita posterior indica um número de versão maior.
[00125] Depois que esta operação de escrita estiver concluída, o objeto recém escrito deste tempo é um novo membro no conjunto de objetos.
[00126] Maneira 3: O modo de escrita é COW, e a granularidade da marca de backup dos dados é uma tira.
[00127] Uma localização de armazenamento pode ser determinada utilizando um parâmetro principal de objeto na solicitação de escrita de tira e o deslocamento de tira. É detectado primeiro se dados já são armazenados na localização de armazenamento determinada por utilizar o parâmetro principal da tira a ser escrita, e se um resultado da determinação for que os dados não são armazenados na localização de armazenamento determinada por utilizar o parâmetro principal da tira a ser escrita ou que nenhum registro é encontrado, isso significa que esta solicitação de escrita é a primeira solicitação de escrita após o instantâneo ser criado, e uma operação de backup precisa ser executada pela primeira vez e, em seguida, a tira a ser escrita é gravada.
[00128] Em um caso geral, antes de um instantâneo seguinte ser tirado e após somente a primeira entrada de escrita de tira ser recebida, dados de tira precisam ser gravados em backup, e os dados são gravados em backup para uma localização de armazenamento determinada por utilizar o ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita. Portanto, uma tira mais nova armazenada no OSD precisa primeiro ser gravada em backup para a localização de armazenamento indicada pelo parâmetro principal da tira a ser escrita, e uma tira recebida neste tempo é então escrita na localização de armazenamento em que dados são gravados em backup. A tira mais nova armazenada no OSD é uma tira mais recente que é enviada pelo servidor de cliente. Nesta modalidade, a tira mais recente é uma tira que está em tiras armazenadas no OSD e tem o ID de objeto da tira a ser escrita, e cujo número de versão é 0 e o deslocamento é o mesmo que o deslocamento da tira a ser escrita. Uma operação de escrita da tira a ser escrita pode ser executada diretamente se uma solicitação de escrita de tira for subsequentemente recebida, e backup não precisa ser executado.
[00129] Em COW, um mais novo objeto armazenado no OSD sempre usa o mesmo número de versão. Por exemplo, 0 ou nulo (Null) é utilizado como o número de versão, que é referido como um número de versão de base nesta modalidade. Entre outros objetos no conjunto de objetos e entre os números de versão exceto o número de versão de base, um objeto com um número de versão menor tem um tempo de instantâneo correspondente posterior.
[00130] Em ROW ou COW, antes de capturar o primeiro instantâneo de um arquivo, quando dados são escritos no OSD, um número de versão de tira utilizado é o número de versão de base. Um valor do número de versão de base pode ser 0 ou nulo (NULL).
[00131] Depois que a operação de backup é concluída, é marcado que uma localização de armazenamento indicada por um parâmetro principal de tira transportado na solicitação de escrita de tira já armazena dados. Antes de tirar um instantâneo seguinte, se o OSD receber uma solicitação de escrita de COW para uma localização do deslocamento desta tira a ser escrita novamente, dados podem não ser mais migrados, e uma tira recebida é escrita, em uma forma que sobrescreva, em uma localização de armazenamento que está em um objeto cujo número de versão é 0 e que é ocupado pelo deslocamento da tira a ser escrita. Por outras palavras, a tira a ser escrita é escrita em uma localização de armazenamento determinada por utilizar o ID de objeto da tira a ser escrita, o número de versão de base, e o deslocamento da tira a ser escrita.
[00132] Além disso, neste passo, pode ser ainda marcado que a localização de armazenamento em que a tira a ser escrita é já armazena dados válidos, e para um método de marcação específico, pode ser feita referência à Maneira 1.
[00133] Maneira 4: O modo de escrita é COW, e a granularidade da marca de backup dos dados no OSD é um objeto.
[00134] Uma diferença entre Maneira 4 e Maneira 3 é: a granularidade da marca de backup dos dados é alterada de uma tira para um objeto, e uma granularidade de backup também é alterada de uma tira para um objeto.
[00135] Uma localização de armazenamento pode ser determinada utilizando um parâmetro principal de objeto na solicitação de escrita de tira. O OSD executa uma consulta em um registro de escrita do OSD utilizando o parâmetro principal de objeto, e determina se dados válidos são armazenados na localização de armazenamento indicada pelo parâmetro principal de objeto da tira a ser escrita. Semelhante à descrição na Maneira 1, um bit de sinalização pode ser utilizado para marcar um objeto nesta modalidade. Por exemplo, um bit de sinalização 1 indica que dados válidos são armazenados, e se um bit de sinalização é 0 ou nenhum bit de sinalização do parâmetro principal de objeto é encontrado no registro de escrita do OSD, isto indica que não há dados válidos armazenados.
[00136] Em um caso geral, antes de um próximo instantâneo ser tirado, e depois de somente a primeira solicitação de escrita de tira ser recebida, dados de objeto precisam ser gravados em backup. Especificamente, se dados válidos são armazenados, isso significa que um objeto conjuntamente determinado utilizando o ID de objeto da tira a ser escrita e o número de versão da tira a ser escrita já é gravado em backup após a criação do instantâneo, e backup não precisa ser executado novamente; se nenhum dado válido é armazenado ou nenhum registro do parâmetro principal de objeto na solicitação de escrita de tira é encontrado no OSD, isso significa que o backup precisa ser executado primeiro neste passo, e então a tira a ser escrita na solicitação de escrita de tira recebida neste tempo pode ser escrita.
[00137] Se dados válidos já estiverem na localização de armazenamento indicada pelo parâmetro principal de objeto, a tira a ser escrita é escrita diretamente em uma localização conjuntamente determinado utilizando o ID de objeto da tira a ser escrita, um número de versão 0 e o deslocamento da tira a ser escrita.
[00138] Se nenhum dado válido for armazenado na localização de armazenamento indicada pelo parâmetro principal de objeto, todas as tiras em um objeto de versão 0 serão primeiro gravadas em backup para a localização de armazenamento indicada pelo parâmetro principal de objeto na solicitação de escrita de tira. Após a conclusão do backup, a localização de armazenamento indicada pelo parâmetro principal de objeto na solicitação de escrita de tira é marcada como 1 e, em seguida, a tira a ser escrita é escrita em uma localização de armazenamento que é ocupada anteriormente pelo objeto da versão 0, onde uma localização de escrita é determinada utilizando o ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita, e um número de versão de base.
[00139] Depois do passo 26 ser executado, o OSD envia, para o servidor de cliente, uma mensagem de resposta indicando que a tira a ser escrita é armazenada com êxito.
[00140] Deve ser notado que o passo 26 é executado antes de um instantâneo seguinte ser tirado. Ou seja, os passos 21 a 26 são executados após o primeiro instantâneo ser tirado e antes de um instantâneo seguinte ser tirado. Os passos 21 a 26 são um procedimento de escrita da tira a ser escrita no OSD. O seguinte descreve como ler a tira que já está escrita no OSD, e um processo de leitura e um processo de escrita são dois métodos relativamente independentes.
[00141] Passo 27: O servidor de cliente recebe uma solicitação de leitura de arquivo, onde a solicitação de leitura de arquivo contém um nome de arquivo, um tamanho dos dados a serem lidos, e um deslocamento dos dados a serem lidos.
[00142] Similar à solicitação de escrita de arquivo, a solicitação de leitura de arquivo pode transportar ainda um caminho de arquivo da solicitação de leitura de arquivo, onde o caminho de arquivo registra uma localização de armazenamento de uma tabela de relacionamento de mapeamento. Um arquivo pode ser determinado unicamente utilizando o caminho de arquivo e o nome de arquivo.
[00143] Especificamente, este passo pode ser executado por um programa no sistema de arquivos do servidor de cliente. A solicitação de leitura de arquivo é uma solicitação de leitura que pode ser identificada pelo sistema de arquivos. A solicitação de leitura de arquivo solicita para ler um arquivo completo ou uma parte de dados de um arquivo.
[00144] O deslocamento dos dados a serem lidos descreve uma localização relativa dos dados a serem lidos no arquivo. Especificamente, o deslocamento dos dados a serem lidos pode descrever uma distância entre uma localização inicial dos dados a serem lidos e um cabeçalho de arquivo. Se o deslocamento dos dados a serem lidos for 0, isto indica que a localização inicial dos dados a serem lidos é uma localização inicial de um arquivo a ser lido. Se o deslocamento dos dados a serem lidos for 2 KB, isto indica que uma distância entre a localização inicial dos dados a serem lidos e a localização inicial do arquivo é um tamanho de dados de 2 KB.
[00145] Opcionalmente, a solicitação de leitura de arquivo pode transportar ainda um caminho de arquivo, onde o caminho de arquivo registra uma localização de armazenamento de uma tabela de relacionamento de mapeamento. Para detalhes da tabela de relacionamento de mapeamento, consulte a descrição do passo 21.
[00146] O nome de arquivo pode ser um nome de arquivo de um arquivo no qual os dados a serem lidos são localizados, ou pode ser um nome de arquivo de um instantâneo de um arquivo no qual os dados a serem lidos são localizados. Se o nome de arquivo é o nome de arquivo no qual os dados a serem lidos são localizados, isso indica que a solicitação de leitura de arquivo se destina a acessar dados a serem lidos mais recentes; se o nome de arquivo é o nome de arquivo do instantâneo do arquivo no qual os dados a serem lidos são localizados, isso indica que a solicitação de leitura de arquivo pretende acessar dados a serem lidos de um instantâneo.
[00147] Passo 28: O servidor de cliente executa uma consulta em uma tabela de relacionamento de mapeamento por utilizar o nome de arquivo, para obter um FID de um arquivo no qual os dados a serem lidos são localizados, e executa uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo.
[00148] Se o nome de arquivo for o nome de arquivo no qual os dados a serem lidos são localizados, o caminho de arquivo que na tabela de relacionamento de mapeamento é um caminho de arquivo do arquivo no qual os dados a serem lidos são localizados e o número de versão do arquivo é obtido por executar uma consulta nos metadados de acordo com o FID correspondente ao arquivo.
[00149] Se o nome de arquivo for o nome de arquivo do instantâneo, o caminho de arquivo na tabela de relacionamento de mapeamento é um caminho no qual um arquivo de instantâneo é localizado, e o número de versão do arquivo é adquirido por executar uma consulta nos metadados de acordo com um FID do arquivo de instantâneo.
[00150] A tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID, e o nome de arquivo está em uma correspondência de um- para-um com o FID. Para descrições do FID e um relacionamento entre o FID e o número de versão do arquivo, consulte o passo 21 e o passo 22. A localização de armazenamento da tabela de relacionamento de mapeamento pode ser transportada na solicitação de leitura de arquivo e é obtida pelo servidor de cliente a partir da solicitação de leitura, ou a tabela de relacionamento de mapeamento pode ser pré-armazenada no servidor de cliente pelo servidor de cliente, e o servidor de cliente encontra a tabela de relacionamento de mapeamento de acordo com o caminho de arquivo, ou a tabela de relacionamento de mapeamento pode ser armazenada em outro dispositivo de armazenamento.
[00151] Referindo ao passo 22, de acordo com diferentes casos específicos, os metadados podem ser armazenados no inode do arquivo ou podem ser armazenados no inode raiz do sistema de arquivos.
[00152] Existe uma correspondência de um-para-um entre um ID de instantâneo e o número de versão do arquivo, de modo que o servidor de cliente possa obter o número de versão do arquivo de acordo com o ID de instantâneo. Essa correspondência pode ser armazenada nos metadados de arquivo.
[00153] Passo 29: O servidor de cliente processa a solicitação de leitura de arquivo e converte a solicitação de leitura de arquivo em múltiplas solicitações de leitura que incluem uma solicitação de leitura de tira, onde cada solicitação de leitura de tira é utilizada para solicitar a leitura de uma tira, e a solicitação de leitura de tira é utilizada para solicitar a leitura de uma tira a ser lida a partir do OSD; e determina um ID de objeto correspondente a cada solicitação de leitura, em que a solicitação de leitura de tira transporta um número de versão da tira a ser lida, um deslocamento da tira a ser lida, um tamanho de tira a ser lida, e um ID de objeto da tira a ser lida.
[00154] Especificamente, um deslocamento de cada tira que precisa ser lida, incluindo a tira a ser lida, pode ser aprendido de acordo com o tamanho dos dados a serem lidos e o deslocamento dos dados a serem lidos.
[00155] Fazendo referência a um método para gerar uma tira no passo 23, os dados a serem escritos podem ser divididos em uma tira de acordo com um tamanho de tira e por utilizar o deslocamento dos dados a serem lidos e um tamanho dos dados a serem escritos, para obter o deslocamento da tira a ser lida. De acordo com o mesmo método, neste passo, o deslocamento de cada tira que precisa ser lida pode também ser obtido por utilizar um tamanho de tira, o deslocamento dos dados a serem lidos, e um comprimento dos dados a serem lidos. O tamanho de tira pode vir do inode do arquivo e, nesse caso, arquivos diferentes podem utilizar tamanhos de tira diferentes, ou todos os arquivos em um sistema inteiro compartilham um tamanho de tira.
[00156] Depois de se obter o deslocamento da tira a ser lida, um ID de um objeto no qual a tira a ser lida é localizada pode ser obtido de acordo com um método que é o mesmo que no passo 23. Deve ser notado que, independentemente se o nome de arquivo é o nome de arquivo no qual os dados a serem lidos são localizados ou o nome de arquivo do instantâneo, um FID utilizado para consultar o ID de objeto correspondente à solicitação de leitura é o FID do arquivo no qual os dados a serem lidos são localizados.
[00157] Passo 30: O servidor de cliente seleciona um OSD utilizado para receber a solicitação de leitura de tira.
[00158] Especificamente, este passo pode ser executado pelo cliente de armazenamento de objeto do servidor de cliente.
[00159] Uma solicitação de leitura de tira e uma solicitação de escrita de tira de uma mesma tira precisam ser correspondentes a um mesmo OSD. Um método viável é: utilizar um método de cálculo de seleção OSD que é o mesmo que no passo 24.
[00160] Passo 31: O servidor de cliente envia a solicitação de leitura de tira para o OSD selecionado no passo 30.
[00161] O número de versão da tira a ser lida é, na verdade, um número de versão de um arquivo ao qual a tira a ser lida pertence.
[00162] Opcionalmente, um modo de escrita pode ser adicionalmente enviado para o OSD, onde o modo de escrita é consistente com o modo de escrita transportado na solicitação de escrita de tira no passo 25. O ID de objeto da tira a ser lida é o ID do objeto ao qual a tira a ser lida pertence.
[00163] Passo 32: O OSD recebe a solicitação de leitura de tira, pesquisa uma localização de armazenamento da tira a ser lida, e envia a tira a ser lida para o servidor de cliente.
[00164] A localização de armazenamento da tira a ser lida pode ser um endereço inicial da tira a ser lida, e iniciando a partir do endereço inicial, dados de um tamanho de tira são lidos, e dados lidos são a tira a ser lida.
[00165] No passo 26, a tira é escrita de várias maneiras possíveis. Portanto, o OSD pode ler a tira a ser lida em maneiras correspondentes, que também são descritas separadamente a seguir. Em um método para determinar se uma tira / um objeto é gravado em backup, o bit de sinalização descrito no passo 26 pode ser utilizado. Por exemplo, se o bit de sinalização for 1, isso indica que a tira / o objeto é gravado em backup e se o bit de sinalização é 0, isto indica que a tira / o objeto não é gravado em backup.
[00166] Para COW, pode haver um caso especial. Se o número de versão transportado na solicitação de leitura de tira é um número de versão de base, uma maneira de ler a tira a ser lida no caso especial é diferente a partir de outro caso, o que equivale a especificar o número de versão de base como o maior número de versão (mesmo se um valor do número de versão de base for 0). Assim, por exemplo, em um caso em que o número de versão descrito no passo 26 é 0, porque o número de versão já é o número de versão maior, pode não ser necessário determinar se uma tira determinada por utilizar um parâmetro principal da tira a ser lida é gravada em backup, os dados nesta localização de armazenamento são diretamente lidos e usados como a tira a ser lida, e a tira a ser lida é enviada para o servidor de cliente. Em outros casos, a tira a ser lida pode ser lida das duas maneiras seguintes. Exceto este caso especial, os outros casos podem ser divididos nas duas maneiras seguintes.
[00167] Maneira 1: Uma granularidade de uma marca de backup de dados no OSD é uma tira.
[00168] É determinado se uma tira determinada por utilizar um parâmetro principal de tira transportado na tira a ser lida é gravada em backup. Por outras palavras, é determinado se uma tira em uma localização de armazenamento determinada por utilizar o ID de objeto da tira a ser lida, a tira a ser lida, e o deslocamento da tira a ser lida é gravado em backup. Neste passo, o deslocamento da tira a ser lida pode ser convertido em um identificador da tira a ser lida no objeto ao qual a tira a ser lida pertence. Para um método de conversão, consulte a Maneira 1 no passo 26.
[00169] Se a tira for gravada em backup, a tira determinada por utilizar o ID de objeto da tira a ser lida, a tira a ser lida, e o deslocamento da tira a ser lida é lido e utilizado como a tira a ser lida, e a tira a ser lida é enviada para o servidor de cliente.
[00170] Se a tira não for gravada em backup, é determinado se, em um conjunto de objetos do ID de objeto da tira a ser lida, existem dados válidos em dados de tira em um objeto de instantâneo anterior até que dados de tira válidos sejam encontrados.
[00171] Especificamente, os objetos que pertencem ao conjunto de objetos do ID de objeto da tira a ser lida, e cujos tempos de instantâneo são anteriores a um tempo de instantâneo da tira a ser lida são pesquisados um por um utilizando o deslocamento da tira a ser lida e de acordo com uma ordem decrescente dos tempos de instantâneo dos objetos até que uma tira que é marcada como backup seja encontrada, a tira encontrada é utilizada como a tira a ser lida, e a tira a ser lida é enviada para o servidor de cliente, onde o tempo de instantâneo do objeto refere-se a um tempo do instantâneo mais recente que é tirado antes que esse objeto seja gerado e que seja de um arquivo ou sistema de arquivos que inclua esse arquivo.
[00172] Se um tempo de instantâneo posterior indicar um número de versão de instantâneo maior, pesquisa é executada de acordo com a ordem descendente dos tempos de instantâneo dos objetos. Especificamente, para ROW, a pesquisa é realizada de acordo com uma ordem decrescente de números de versão; para COW, a pesquisa é realizada de acordo com uma ordem crescente de números de versão.
[00173] Certamente, se um número de versão maior da tira a ser lida for utilizado para um tempo de instantâneo posterior quando a tira é escrita no OSD, a tira a ser lida é pesquisada em uma ordem inversa neste passo.
[00174] Maneira 2: Uma granularidade de uma marca de backup de dados no OSD é um objeto.
[00175] Uma diferença entre este passo e a maneira 1 está em que a granularidade da marca de backup é alterada a partir de uma tira para um objeto.
[00176] É determinado se dados válidos são armazenados em uma localização de armazenamento determinada por utilizar um parâmetro principal de tira transportado na tira a ser lida. Em outras palavras, é determinado se dados válidos são armazenados em uma localização de armazenamento (espaço de objeto) determinada utilizando o ID de objeto da tira a ser lida, e o número de versão da tira a ser lida.
[00177] Se houver dados válidos, dados válidos determinados por utilizar o ID de objeto da tira a ser lida, o número de versão da tira a ser lida, e o deslocamento da tira a ser lida serão lidos e utilizados como os dados a serem lidos, e os dados a serem lidos são enviados para o servidor de cliente.
[00178] Se nenhum dado válido for armazenado, objetos no conjunto de objetos são sucessivamente pesquisados em uma maneira semelhante à Maneira 1 neste passo e de acordo com uma ordem crescente de números de versão de instantâneo até um objeto de instantâneo que armazena dados válidos for encontrado, e a tira a ser lida é lida a partir do objeto instantâneo de acordo com o deslocamento da tira a ser lida, e é enviada para o servidor de cliente.
[00179] A Figura 4 mostra uma solução de leitura de tira baseada em ROW. Conforme mostrado na figura, um arquivo A inclui um objeto 1, um objeto 2 e um objeto 3. Depois que esses objetos são armazenados em um OSD pela primeira vez, os números de versão desses objetos são 0. Na Figura 4, um objeto 1.0 indica um objeto cujo ID de objeto é 1 e o número de versão é 0. Similarmente, um objeto 3.2 indica um objeto cujo ID de objeto é 3 e o número de versão é 2. Um objeto com uma linha sólida indica que esse objeto é gravado em backup, e um objeto com uma linha tracejada indica que este objeto não é gravado em backup.
[00180] Nesta modalidade, depois do primeiro instantâneo ser tirado (cujo número de versão é 1), os dados do objeto 1 não são atualizados, o objeto 2 e o objeto 3 são gravados em backup e o objeto 1 não é gravado em backup. Depois que o segundo instantâneo (cujo número de versão é 2) é tirado, o objeto 3 é gravado em backup e o objeto 1 e o objeto 2 não são gravados em backup. Depois que o terceiro instantâneo (cujo número de versão é 3) é tirado, o objeto 1 é gravado em backup e o objeto 2 e o objeto 3 não são gravados em backup.
[00181] Pode ser aprendido a partir de um conceito de um conjunto de objetos que, um conjunto de objetos no qual o objeto 1.0 é localizado inclui o objeto 1.0 e um objeto 1.3. Um conjunto de objetos no qual o objeto 2.0 é localizado inclui um objeto 2.0 e um objeto 2.1. Um conjunto de objetos no qual um objeto 3.0 é localizado inclui o objeto 3.0, um objeto 3.1 e um objeto 3.2.
[00182] Uma direção das setas na Figura 4 marca um relacionamento de pesquisa de objetos. Se uma solicitação de leitura de tira é destinada a ler uma tira em um objeto 1.2, pode ser aprendido a partir da figura que este objeto não é gravado em backup, e de acordo com uma ordem decrescente de números de versão, o objeto 1.0 é gravado em backup e, portanto, uma tira no objeto 1.0 é lida. Com base em um mesmo princípio, se a solicitação de leitura de tira se destina a ler uma tira a ser lida em um objeto 2.2 ou um objeto 2.3, os dados no objeto 2.1 são efetivamente lidos. Certamente, se a solicitação de leitura de tira é destinada a ler dados no objeto 1.3 ou o objeto 2.1 ou o objeto 3.2, porque esses objetos são gravados em backup, os dados podem ser lidos diretamente.
[00183] A Figura 5 mostra uma solução de leitura de tira baseada em COW, e o que é diferente da Figura 4 é que uma ordem de busca é inversa, e a busca é realizada de acordo com uma ordem crescente de números de versão.
[00184] E se uma granularidade de uma marca de backup é uma marca, um princípio desta solução é semelhante ao da Figura 4 e Figura 5, e uma diferença está em que um alvo marcado pela marca de backup é uma tira em um objeto, mas não um objeto.
[00185] Na Maneira 1 ou Maneira 2 anterior, um servidor de cliente recebe dados retornados por uma solicitação de leitura de tira e dados retornados por outra solicitação de leitura, e pode gerar dados a serem lidos por dividir os dados retornados.
[00186] Conforme ilustrado na Figura 6, a Figura 6 mostra hardware para executar o método anterior. Uma interface 413 de um servidor de cliente 41 é conectada a uma interface 423 de um dispositivo de armazenamento de objeto 42, em que o servidor de cliente 41 inclui um processador 411, um meio de armazenamento 412 e a interface 413 e o processador 411 é conectado ao meio de armazenamento 412 e a interface 413. O meio de armazenamento 412 é, por exemplo, uma memória, e armazena um programa de computador. O processador 411 executa o programa no meio de armazenamento 412 para executar passos executados pelo servidor de cliente no método anterior. A interface 413 fornece uma interface conectada ao OSD, por exemplo, envia uma solicitação de leitura de tira ou uma solicitação de escrita de tira para o OSD. Uma memória persistente pode não ser disposta no servidor de cliente 41, isto é, toda a informação que é relacionada com o método precedente e que precisa ser registrada no servidor de cliente 41 pode ser gravada no meio de armazenamento volátil 412 do servidor de cliente 41.
[00187] O OSD 42 inclui um processador 421, um meio de armazenamento 422, a interface 423 e um disco rígido 424, em que o processador 421 é conectado ao meio de armazenamento 422 e à interface 423, e o disco rígido 424 é conectado ao meio de armazenamento 422. O meio de armazenamento 422 pode ser um meio volátil, por exemplo, uma memória, onde o meio de armazenamento 422 armazena um programa de computador. O processador 421 executa o programa no meio de armazenamento 422 para executar passos executados pelo dispositivo de armazenamento de objeto no método anterior. A interface 423 fornece uma interface conectada ao OSD. Por exemplo, a interface 423 envia uma solicitação de leitura de tira ou uma solicitação de escrita de tira para o OSD. O disco rígido 424 fornece armazenamento persistente para uma tira. Por exemplo, um meio de armazenamento não volátil geralmente fornece espaço de armazenamento físico para uma tira / objeto a ser escrito e armazena uma tira / objeto a ser lido. O disco rígido 424 pode ser substituído por outro meio, tal como uma memória flash, ou por um disco compacto apagável.
[00188] Fazendo referência à Figura 7, a Figura 7 é um diagrama estrutural de um sistema de processamento de dados de acordo com uma modalidade da presente invenção.
[00189] O sistema de processamento de dados inclui um aparelho de servidor de cliente 51 e um aparelho de armazenamento de objeto 52. O aparelho de servidor de cliente 51 pode ser um dispositivo físico tal como um servidor, ou pode ser um módulo virtual implementado por um software que é executado em um servidor; o aparelho de armazenamento de objeto 52 pode ser um dispositivo físico tal como um dispositivo de armazenamento de objeto, ou pode ser um módulo virtual implementado por um software que é executado em um dispositivo de armazenamento de objeto. O aparelho de servidor de cliente 51 pode ser configurado para executar passos executados pelo servidor de cliente no método anterior, e o aparelho de armazenamento de objeto 52 pode ser configurado para executar passos executados pelo dispositivo de armazenamento de objeto no método anterior.
[00190] O aparelho de servidor de cliente 51 inclui um módulo de geração de solicitação de tira 511 e um módulo de envio de solicitação de tira 512 conectado ao módulo de geração de solicitação de tira 511, ou pode incluir ainda um módulo de instantâneo 513 conectado ao módulo de geração de solicitação de tira 511.
[00191] O aparelho de armazenamento de objeto 52 inclui um módulo de recepção de solicitação de tira 521 e um módulo de armazenamento de tira 522 e um módulo de leitura de tira 523 que são conectados ao módulo de recepção de solicitação de tira 521. Quando uma função de armazenamento de tira está sendo implementada, o módulo de leitura de tira não é obrigatório. Quando uma função de leitura de tira está sendo implementada, o módulo de armazenamento de tira não é obrigatório. O módulo de recepção de solicitação de tira 521 é conectado ao módulo de envio de solicitação de tira 512.
[00192] O seguinte continua a descrever especificamente as funções dos módulos.
[00193] O módulo de instantâneo 513 é configurado para: criar um instantâneo, em que um alvo do instantâneo inclui um arquivo; e alocar um ID de instantâneo para o instantâneo.
[00194] O instantâneo é criado de duas maneiras. Em uma maneira, um instantâneo do arquivo é criado e o alvo do instantâneo é um único arquivo. De outro modo, um instantâneo de um sistema de arquivos é criado, e o alvo do instantâneo é um sistema de arquivos inteiro, onde o sistema de arquivos inclui múltiplos arquivos. Nas duas maneiras, localizações de armazenamento de metadados de arquivo são diferentes.
[00195] Na maneira de criar o instantâneo do arquivo, o arquivo é selecionado para criar o instantâneo, um nome de instantâneo é definido para o arquivo e, se o nome de instantâneo não tiver sido utilizado, o ID de instantâneo é alocado para o instantâneo do arquivo. O ID de instantâneo do arquivo é utilizado como metadados de arquivo e armazenado em um inode (index node) do arquivo. Note que o ID de instantâneo é uma marca do instantâneo. Por exemplo, um ponto de tempo para criar o instantâneo é utilizado como ID de instantâneo ou números crescentes são utilizados como IDs de instantâneo de acordo com uma ordem de pontos de tempo para criar instantâneos.
[00196] Na maneira de criar o instantâneo do sistema de arquivos, o sistema de arquivos é selecionado para tirar o instantâneo e, se um nome de instantâneo não tiver sido utilizado, o ID de instantâneo é alocado para o instantâneo do sistema de arquivos e, em seguida, o ID de instantâneo alocado é armazenado em um inode raiz do sistema de arquivos. Desta forma, pode ser considerado que um ID de instantâneo de cada arquivo no sistema de arquivos é o mesmo que o ID de instantâneo do sistema de arquivos. Uma diferença entre esta maneira e a maneira anterior é que o ID de instantâneo do arquivo é armazenado no inode raiz do sistema de arquivos, mas não no inode do arquivo.
[00197] Além do ID de instantâneo do arquivo, os metadados de arquivo incluem ainda um identificador de arquivo (FID), e os metadados de arquivo podem incluir informação como um tamanho de arquivo (Size) e um tempo de escrita.
[00198] Deve ser notado que o módulo de instantâneo 513 é opcional. Esta modalidade da presente invenção descreve principalmente operações realizadas pelo aparelho de servidor de cliente e pelo dispositivo de armazenamento de objeto depois de um instantâneo ser criado e antes de um instantâneo seguinte ser criado.
[00199] O módulo de geração de solicitação de tira 511 é configurado para receber uma solicitação de escrita de arquivo, onde a solicitação de escrita de arquivo transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um nome de arquivo, e os dados a serem escritos são uma parte de um arquivo.
[00200] Especificamente, uma função do módulo de geração de solicitação de tira 511 pode ser executada por um programa em um sistema de arquivos do servidor de cliente. A solicitação de escrita de arquivo é uma solicitação de escrita que pode ser identificada pelo sistema de arquivos. A solicitação de escrita de arquivo pode estar criando um arquivo, ou utilizando os dados a serem escritos para atualizar um arquivo que já existe, onde os dados a serem escritos são parte do arquivo ou todo o arquivo.
[00201] A solicitação de escrita de arquivo pode ainda transportar um tamanho dos dados a serem escritos, de modo que os dados a serem escritos sejam subsequentemente divididos em uma tira de acordo com o deslocamento dos dados a serem escritos; ou pode não transportar um tamanho dos dados a serem escritos, porque o tamanho dos dados a serem escritos pode ser obtido por medir os dados a serem escritos.
[00202] O deslocamento dos dados a serem escritos descreve uma localização relativa dos dados a serem escritos no arquivo. Especificamente, o deslocamento dos dados a serem escritos pode descrever uma distância entre uma localização inicial dos dados a serem escritos e um cabeçalho de arquivo. Se o deslocamento dos dados a serem escritos for 0, isto indica que a localização inicial dos dados a serem escritos é uma localização inicial de um arquivo a ser escrito. Se o deslocamento dos dados a serem escritos for 1 KB, isto indica que uma distância entre a localização inicial dos dados a serem escritos e a localização inicial do arquivo é um tamanho de dados de 1 KB.
[00203] Opcionalmente, a solicitação de escrita de arquivo pode transportar ainda um caminho de arquivo da solicitação de escrita de arquivo, onde o caminho de arquivo indica localizações de armazenamento do arquivo e uma tabela de relacionamento de mapeamento. Um arquivo é determinado conjuntamente utilizando um caminho de arquivo e um nome de arquivo. Por exemplo, uma combinação do caminho de arquivo e o nome de arquivo é /root/mma/a1, onde /root/mma/ é o caminho de arquivo, a1 é o nome de arquivo, e o arquivo e a tabela de relacionamento de mapeamento são armazenados no caminho /root/mma/.
[00204] Arquivos diferentes podem ter nomes de arquivo diferentes, e nomes de arquivo no mesmo caminho de arquivo não são os mesmos.
[00205] Opcionalmente, a solicitação de escrita pode ainda transportar uma localização de armazenamento de uma tabela de relacionamento de mapeamento, onde a tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID.
[00206] Antes de uma consulta ser executada na tabela de relacionamento de mapeamento utilizando o nome de arquivo, um relacionamento de mapeamento entre o ID de instantâneo e um número de versão de arquivo pode ser gravado, e as duas operações a seguir podem ser executadas. (1) Gravar em backup metadados de arquivos mais recentes, o que pode ser especificamente implementado por gravar em backup um inode. Para um instantâneo de um nível de arquivo, um inode de um arquivo é gravado em backup, e se um instantâneo de um sistema de arquivos é criado, um inode do sistema de arquivos é gravado em backup, incluindo um inode de um arquivo e um inode raiz do arquivo.. (2) Atualizar um número de versão no inode. Se um modo de escrita que é definido no servidor de cliente é ROW, o número de versão atualizado é armazenado no inode gravado em backup. Se um modo de escrita que é definido no servidor de cliente é COW, o número de versão atualizado é armazenado em um inode que é gerado por meio de backup e, opcionalmente, o inode gravado em backup também pode gravar o número de versão atualizado. Por exemplo, se for suportado um inode A para gerar um inode B, o inode A é um inode gravado em backup e o inode B é um inode que é gerado por meio de backup.
[00207] Existe uma correspondência entre o número de versão do arquivo e o ID de instantâneo, e o ID de instantâneo corresponde a um tempo de instantâneo; portanto, também pode ser considerado que há uma correspondência entre o número de versão do arquivo e o tempo de instantâneo. A correspondência significa que cada número de versão de arquivo corresponde a um ID de instantâneo único e uma regra de alteração do número de versão de arquivo é semelhante à do ID de instantâneo. Por exemplo, um ID de instantâneo maior indica um número de versão de arquivo maior ou um ID de instantâneo maior indica um número de versão de arquivo menor. Um instantâneo com um tempo de instantâneo posterior entre vários instantâneos tem um ID maior.
[00208] Deve ser notado que, em uma tecnologia de escrita de dados baseada em um sistema de blocos, incluindo uma SAN, um volume é marcado por utilizar um ID de volume em vez de um nome de arquivo e uma função do ID de volume é semelhante à do FID. Além disso, no volume, não há conceito semelhante ao caminho de arquivo. Portanto, uma consulta não é mais necessária para ser executada na tabela de relacionamento de mapeamento, e uma consulta pode ser executada diretamente em metadados de volume utilizando um ID de volume para obter um número de versão de arquivo.
[00209] O módulo de geração de solicitação de tira 511 é ainda configurado para: executar uma consulta em uma tabela de relacionamento de mapeamento por utilizar o nome de arquivo, para obter um identificador de arquivo (FID) do arquivo em que os dados a serem escritos são localizados, e executar uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão de arquivo.
[00210] A tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID, e o nome de arquivo está em uma correspondência de um- para-um com o FID. A localização de armazenamento da tabela de relacionamento de mapeamento pode ser transportada na solicitação de escrita de arquivo e é obtida pelo servidor de cliente a partir da solicitação de escrita ou a tabela de relacionamento de mapeamento pode ser pré-armazenada no servidor de cliente pelo servidor de cliente, e o servidor de cliente encontra a tabela de relacionamento de mapeamento de acordo com o caminho de arquivo, ou a tabela de relacionamento de mapeamento pode ser armazenada em outro dispositivo de armazenamento.
[00211] O módulo de geração de solicitação de tira 511 pode ainda atualizar o número de versão de arquivo obtido para os metadados. Após a atualização, os metadados de arquivo registram o FID e o número de versão do arquivo, e o número de versão do arquivo pode ser obtido por executar uma consulta nos metadados de arquivo por utilizar o FID. Os metadados de arquivo podem ser armazenados em informação sobre um inode. O caminho de arquivo indica uma localização de armazenamento do inode. Pode ser aprendido a partir do anterior que, em ROW, porque o número de versão é armazenado no inode gravado em backup, o módulo de geração de solicitação de tira 511 lê o inode gravado em backup; em COW, porque o número de versão é armazenado no inode que é gerado por meio de backup, o módulo de geração de solicitação de tira 511 lê o inode que é gerado por meio de backup.
[00212] Há uma correspondência de um-para-um entre o número de versão do arquivo e o ID de instantâneo do arquivo e, após a geração do ID de instantâneo, o servidor de cliente gera o número de versão do arquivo que está em uma correspondência de um-para-um com o ID de instantâneo. Por exemplo, o ID de instantâneo pode ser utilizado diretamente como o número de versão do arquivo, ou um ID de instantâneo obtido após uma operação ser executada pode ser utilizado como o número de versão do arquivo. Se um instantâneo que é criado posteriormente tiver um ID de instantâneo maior, uma maneira opcional é: o instantâneo que é criado posteriormente tem um valor maior do ID de instantâneo; outra maneira opcional é: o instantâneo que é criado posteriormente tem um valor menor do ID de instantâneo.
[00213] O módulo de geração de solicitação de tira 511 é ainda configurado para: dividir os dados a serem escritos em múltiplas tiras que incluem uma tira a ser escrita (tira), e obter, de acordo com uma política de distribuição de tira, um deslocamento da tira a ser escrita e um ID de um objeto ao qual a tira a ser escrita pertence, onde este ID também é referido como um ID de objeto.
[00214] O servidor de cliente divide os dados em uma ou mais tiras de acordo com um tamanho de tira (Size). Uma tira é dados de um tamanho específico. Quando o tamanho dos dados a serem escritos for menor ou igual a um tamanho de uma única tira, os dados a serem escritos são divididos em uma única tira; se o tamanho dos dados a serem escritos for maior que o tamanho da única tira, os dados a serem escritos são divididos em múltiplas tiras. Os tamanhos de tiras divididas a partir de um mesmo arquivo são os mesmos. O tamanho de tira (Size) pode ser armazenado nos metadados de arquivo e, neste caso, arquivos diferentes podem utilizar tamanhos de tira diferentes. Como alternativa, o tamanho de tira pode não ser armazenado nos metadados de arquivo ao qual o objeto pertence, arquivos em todo o sistema de arquivos compartilham um tamanho de tira e, neste caso, arquivos diferentes utilizam o mesmo tamanho de tira e o tamanho de tira é armazenado no inode raiz do sistema de arquivos. Um objeto pode ser considerado como um contêiner, que pode acomodar uma tira.
[00215] Por exemplo, se os dados a serem escritos forem divididos em múltiplas tiras de dados, a tira gerada por meio de divisão refere-se a uma tira de dados obtida por meio de divisão; ou depois dos dados a serem escritos serem divididos em uma tira de dados, se múltiplas tiras de verificação forem ainda geradas para executar proteção de dados na tira de dados, a tira gerada por meio de divisão inclui tanto a tira de dados como a tira de verificação.
[00216] Uma quantidade total de tiras incluídas em cada objeto pode ser armazenada nos metadados de arquivo e, neste caso, uma quantidade total de tiras incluídas em objetos em arquivos diferentes pode ser diferente; ou uma quantidade total de tiras incluídas em cada objeto não pode ser armazenada nos metadados de arquivo ao qual o objeto pertence e, neste caso, uma quantidade total de tiras incluídas em objetos em arquivos diferentes é a mesma.
[00217] Deve ser notado que uma localização inicial dos dados a serem escritos no arquivo pode ser aprendida a partir do deslocamento dos dados a serem escritos, e uma localização final dos dados a serem escritos no arquivo pode ser aprendida a partir do deslocamento dos dados a serem escritos e o tamanho dos dados a serem escritos. Se a localização inicial dos dados a serem escritos não for um múltiplo inteiro do tamanho de tira, ou um valor de um deslocamento da localização final mais 1 não é um múltiplo inteiro do tamanho de tira, os dados a serem escritos são primeiro divididos de acordo com o tamanho de tira, e as fronteiras de divisão são múltiplos inteiros do tamanho de tira. Se os dados cujo tamanho for inferior a uma tira (este tipo de dados também pode ser referido como dados sujos de uma tira) são gerados após a divisão, os dados são suplementados para formar uma tira. Devido a uma operação de suplementação realizada pelo módulo de geração de solicitação de tira 511, a menos que seja especificado de outro modo, tanto uma tira como um deslocamento da tira que são subsequentemente mencionados referem-se a uma tira e a um deslocamento da tira que são obtidos após a suplementação.
[00218] Por exemplo, se um intervalo de deslocamento dos dados a serem escritos for 4 KB - 300 KB e o tamanho de tira é 256 KB, 0 KB e 256 KB são utilizados como fronteiras para dividir os dados a serem escritos, e dois blocos de dados são formados, onde os intervalos de deslocamento dos dois blocos de dados nos dados a serem escritos são respectivamente 4 KB - 255 KB e 256 KB - 300 KB. A suplementação é realizada nos dois blocos de dados, e são formadas duas tiras cujos tamanhos são 256 KB. Os dados (cujo tamanho é 4 KB - 0 KB = 4 KB) utilizados para suplementar um bloco de dados anteriores vêm de uma tira anterior e os dados (cujo tamanho é 511 KB - 300 KB = 211 KB) utilizados para suplementar um último bloco de dados vêm de uma tira seguinte. O deslocamento dos dados a serem escritos é uma localização relativa dos dados a serem escritos no arquivo.
[00219] Outro método de suplementação é o seguinte: Se a localização inicial dos dados a serem escritos não for um múltiplo inteiro do tamanho de tira, ou um valor de um deslocamento de localização final mais 1 não é um múltiplo inteiro do tamanho de tira, uma operação suplementar pode ser realizada nos dados a serem escritos de tira, de modo que tamanhos de tiras obtidos após a divisão são consistentes e não há margem na tira. Os dados que já são armazenados no OSD podem ser lidos e utilizados como dados para suplementar.
[00220] Por exemplo, se um intervalo de deslocamento dos dados a serem escritos for 4 KB - 300 KB e o tamanho de tira for 256 KB, os dados a serem escritos podem ser suplementados para formar dados cujo intervalo de deslocamento é 0 KB - 511 KB e, em seguida, os dados são divididos em duas tiras cujos intervalos de deslocamento são 0 KB - 255 KB e 256 KB - 511 KB, de modo que um tamanho de cada tira é 256 KB.
[00221] A política de distribuição de tira é fornecida pelo sistema de arquivos do servidor de cliente. O objeto ao qual a tira pertence é descrito, isto é, uma correspondência entre a tira e o objeto é descrita. Especificamente, a correspondência pode ser uma correspondência entre o deslocamento da tira e o objeto.
[00222] Um ID de objeto identifica unicamente um objeto, IDs de objeto que pertencem a um mesmo arquivo são diferentes, e IDs de objeto em arquivos diferentes também são diferentes.
[00223] Opcionalmente, pode haver uma correspondência entre o ID de objeto e o FID do arquivo ao qual o objeto pertence. Isto é, por exemplo, um arquivo a partir do qual um objeto representado por esse ID de objeto pode ser aprendido a partir do ID de objeto.
[00224] Por exemplo, uma maneira opcional para gerar o ID de objeto é a seguinte: O ID de objeto inclui números binários de 64 bits, onde 32 bits anteriores são um ID do arquivo ao qual o objeto pertence, os últimos 32 bits são atribuídos pelo servidor de cliente, os últimos 32 bits são únicos no arquivo, e os últimos 32 bits de objetos diferentes em um mesmo arquivo são diferentes. Por exemplo, um identificador de um objeto em um arquivo é utilizado. Desta maneira, o FID correspondente pode ser aprendido a partir dos 32 bits anteriores do ID de objeto. De modo semelhante, no sistema de blocos (block), um relacionamento entre um ID de objeto e um ID de volume também pode ser estabelecido.
[00225] Outra maneira opcional para gerar o ID de objeto é a seguinte: O ID de objeto inclui números binários de 48 bits, onde 16 bits anteriores correspondem ao arquivo e 16 bits anteriores de arquivos diferentes são diferentes; os últimos 32 bits são atribuídos pelo servidor de cliente, os últimos 32 bits são únicos no arquivo e os últimos 32 bits de objetos diferentes em um mesmo arquivo são diferentes.
[00226] Em outra modalidade, pode também não existir correspondência entre o ID e o FID do arquivo ao qual o objeto pertence.
[00227] A Figura 3A e Figura 3B mostram duas políticas de distribuição de tira diferentes. Um índice de tira descreve um relacionamento de deslocamento de uma tira em um arquivo, e o índice de tira é um inteiro maior ou igual a 0, onde o menor índice de tira é 0, o segundo menor índice de tira é 1, e o terceiro menor índice de tira é 2, ..., e assim por diante. Duas tiras com valores de índice adjacentes também têm deslocamentos adjacentes no arquivo.
[00228] Uma política de distribuição de tira opcional é mostrada na Figura 3A: (1) tamanhos de objetos que pertencem a um mesmo arquivo são fixos, e tamanhos de tiras em um mesmo arquivo são os mesmos, o que significa que uma quantidade total de tiras incluídas em objetos diferentes é a mesma; (2) um objeto anterior é preenchido primeiro e, em seguida, um próximo objeto é preenchido por tiras de acordo com uma ordem de índice, ou seja, múltiplas tiras consecutivas pertencem a um mesmo objeto de acordo com uma ordem de tamanhos de deslocamento de tiras nos dados a serem escritos. Conforme ilustrado na Figura 3A, cada objeto inclui fixamente quatro tiras. Por exemplo, um tamanho de tira é 256 KB, e cada objeto tem quatro tiras, ou seja, um tamanho de objeto é 256 KB x 4 = 1024 KB. Neste caso, o primeiro objeto armazena a tira 0 na tira 3, o segundo objeto armazena a tira 4 na tira 7, e o terceiro objeto armazena a tira 8 na tira 11,... e, consequentemente, um ID do primeiro objeto é 0, um ID do segundo objeto é 1 e um ID do terceiro objeto é 2,...
[00229] Um deslocamento de tira é utilizado para descrever uma localização relativa de uma tira em um objeto, e pode ser especificamente uma localização relativa de dados iniciais da tira no objeto. Deslocamento de tira = (Índice de tira % Quantidade de tiras em um objeto) x Tamanho de tira, onde Índice de tira % Quantidade de tiras em um objeto refere-se ao cálculo de um restante por dividir o índice de tira pela quantidade de tiras no objeto.
[00230] Outra política de distribuição de tira opcional é mostrada na Figura 3B: (1) tamanhos de objetos em um mesmo arquivo não são fixos, ou seja, objetos diferentes no mesmo arquivo podem ter diferentes quantidades totais de tiras; (2) uma quantidade total de objetos é fixa, isto é, arquivos diferentes têm objetos de uma mesma quantidade, e como mostrado na Figura 3B, há três objetos no total. Por exemplo, se um tamanho de tira é 256 KB, e uma quantidade total de objetos é fixada para 3, a primeira tira (tira 0) é localizada no primeiro objeto (objeto 0), a segunda tira (strip 1) é localizada no segundo objeto (objeto 1), ..., e por analogia, a quarta tira (tira 3) também é localizada no primeiro objeto, e a quinta tira (tira 4) também é localizada no segundo objeto. Um índice de tira é um número inteiro maior ou igual a 0, e descreve um relacionamento de localização entre tiras em um arquivo. Um deslocamento de cada tira em um objeto ao qual a tira pertence também pode ser determinado, e um identificador de um objeto no arquivo pode ser rip index é dividido por uma quantidade total de objetos no arquivo. Uma fórmula de cálculo específica pode ser: Identificador de um objeto em um arquivo = Índice de tira % Quantidade de objetos em um arquivo, e Deslocamento de tira = (Índice de tira/Quantidade de objetos) x Tamanho de tira.
[00231] O índice de tira pode ser determinado utilizando o deslocamento dos dados a serem escritos. Por exemplo, para um arquivo inteiro, dados iniciais obtidos após a divisão do arquivo são localizados em uma tira (tira 0) no primeiro objeto e o deslocamento dos dados a serem escritos atuais é localizado na quinta tira (tira 4) no objeto 1. Neste caso, em tiras geradas depois da divisão dos dados a serem escritos, um índice da primeira tira é 4, e um índice de outra tira é obtido por analogia.
[00232] O anterior descreve duas soluções para calcular o ID de objeto ao qual a tira pertence, e de acordo com diferentes políticas de distribuição de tira, pode também existir outra solução de implementação. Parâmetros utilizados em diferentes políticas de distribuição podem ser diferentes, e esses parâmetros podem ser geralmente obtidos por executar uma consulta no servidor de cliente.
[00233] Porque maneiras de processamento de todas as tiras são as mesmas, o seguinte usa somente uma "tira a ser escrita" como um exemplo para descrição.
[00234] O módulo de envio de solicitação de tira 512 é configurado para selecionar um OSD utilizado para armazenar a tira a ser escrita.
[00235] Um método de cálculo opcional é determinar, de acordo com o FID da tira a ser escrita, o OSD para armazenar a tira a ser escrita. Por exemplo, um valor de hash do FID é dividido por uma quantidade total de OSDs, e um restante é utilizado como um identificador do OSD para armazenar a tira a ser escrita, ou seja, o valor de hash do FID mod a quantidade total de OSDs. Também pode haver outra solução. Por exemplo, o servidor de cliente seleciona aleatoriamente um OSD para armazenar uma tira a ser escrita que pertence a um objeto, e tiras que pertencem a um mesmo objeto podem ser armazenadas em um mesmo OSD.
[00236] Além disso, o OSD para armazenar a tira pode também ser conjuntamente determinado de acordo com o FID e um ID de objeto que são da tira a ser escrita. Na verdade, um método de cálculo pode ser selecionado aleatoriamente fornecido que um OSD possa ser selecionado.
[00237] O módulo de envio de solicitação de tira 512 é ainda configurado para enviar uma solicitação de escrita de tira para o OSD, onde a solicitação de escrita de tira transporta a tira a ser escrita, um número de versão da tira a ser escrita, um tamanho de tira a ser escrita, o deslocamento da tira a ser escrita, e o ID de objeto ao qual a tira a ser escrita pertence.
[00238] Opcionalmente, em um caso em que o OSD suporta tanto ROW e COW, um modo de escrita pode ser enviado adicionalmente, de modo que o OSD escreve a tira a ser escrita de acordo com o modo de escrita especificado pelo servidor de cliente. O modo de escrita é ROW ou COW. Se o OSD suporta apenas um modo de escrita, o modo de escrita pode não ser enviado para o OSD.
[00239] O módulo de recepção de solicitação de tira 521 é configurado para receber a solicitação de escrita de tira e escrever a tira a ser escrita em um meio de armazenamento do OSD.
[00240] O módulo de recepção de solicitação de tira 521 pode executar o método no passo 26. Por exemplo, a escrita da tira a ser escrita pode ser implementada de uma ou mais das quatro maneiras.
[00241] O módulo de geração de solicitação de tira 511 pode ainda ser configurado para receber uma solicitação de leitura de arquivo, em que a solicitação de leitura de arquivo contém um nome de arquivo, um tamanho dos dados a serem lidos e um deslocamento dos dados a serem lidos.
[00242] Similar à solicitação de escrita de arquivo, a solicitação de leitura de arquivo pode transportar ainda um caminho de arquivo da solicitação de leitura de arquivo, onde o caminho de arquivo registra uma localização de armazenamento de uma tabela de relacionamento de mapeamento. Um arquivo pode ser determinado unicamente utilizando o caminho de arquivo e o nome de arquivo.
[00243] Especificamente, este passo pode ser executado por um programa no sistema de arquivos do servidor de cliente. A solicitação de leitura de arquivo é uma solicitação de leitura que pode ser identificada pelo sistema de arquivos. A solicitação de leitura de arquivo solicita para ler um arquivo completo ou uma parte de dados de um arquivo.
[00244] O deslocamento dos dados a serem lidos descreve uma localização relativa dos dados a serem lidos no arquivo. Especificamente, o deslocamento dos dados a serem lidos pode descrever uma distância entre uma localização inicial dos dados a serem lidos e um cabeçalho de arquivo. Se o deslocamento dos dados a serem lidos for 0, isto indica que a localização inicial dos dados a serem lidos é uma localização inicial de um arquivo a ser lido. Se o deslocamento dos dados a serem lidos for 2 KB, isto indica que uma distância entre a localização inicial dos dados a serem lidos e a localização inicial do arquivo é um tamanho de dados de 2 KB.
[00245] Opcionalmente, a solicitação de leitura de arquivo pode transportar ainda um caminho de arquivo, onde o caminho de arquivo registra uma localização de armazenamento de uma tabela de relacionamento de mapeamento. Para obter detalhes sobre a tabela de relacionamento de mapeamento, consulte a descrição do passo 21.
[00246] O nome de arquivo pode ser um nome de arquivo de um arquivo no qual os dados a serem lidos são localizados, ou pode ser um nome de arquivo de um instantâneo de um arquivo no qual os dados a serem lidos são localizados. Se o nome de arquivo é o nome de arquivo no qual os dados a serem lidos são localizados, isso indica que a solicitação de leitura de arquivo se destina a acessar dados a serem lidos mais recentes; se o nome de arquivo é o nome de arquivo do instantâneo do arquivo no qual os dados a serem lidos são localizados, isso indica que a solicitação de leitura de arquivo pretende acessar dados a serem lidos de um instantâneo. O módulo de armazenamento de tira 522 é configurado para: executar uma consulta em uma tabela de relacionamento de mapeamento por utilizar o nome de arquivo, para obter um FID de um arquivo no qual os dados a serem lidos são localizados, e efetuar uma consulta em metadados de arquivo de acordo com o FID para obter um número de versão do arquivo.
[00247] Se o nome de arquivo é o nome de arquivo no qual os dados a serem lidos são localizados, o caminho de arquivo que armazena a tabela de relacionamento de mapeamento é um caminho de arquivo do arquivo no qual os dados a serem lidos são localizados, e o número de versão do arquivo é adquirido através da realização de uma consulta nos metadados de acordo com o FID correspondente ao arquivo.
[00248] Se o nome de arquivo for o nome de arquivo do instantâneo, o caminho de arquivo na tabela de relacionamento de mapeamento é um caminho no qual um arquivo de instantâneo é localizado, e o número de versão do arquivo é adquirido por executar uma consulta nos metadados de acordo com um FID do arquivo de instantâneo.
[00249] A tabela de relacionamento de mapeamento registra um relacionamento de mapeamento entre o nome de arquivo e o FID, e o nome de arquivo está em uma correspondência de um- para-um com o FID. Para descrições do FID e um relacionamento entre o FID e o número de versão do arquivo, consulte o passo 21 e o passo 22. A localização de armazenamento da tabela de relacionamento de mapeamento pode ser transportada na solicitação de leitura de arquivo e é obtida pelo servidor de cliente a partir da solicitação de escrita, ou a tabela de relacionamento de mapeamento pode ser pré-armazenada no servidor de cliente pelo servidor de cliente, e o servidor de cliente encontra a tabela de relacionamento de mapeamento de acordo com o caminho de arquivo, ou a tabela de relacionamento de mapeamento pode ser armazenada em outro dispositivo de armazenamento.
[00250] Referindo ao passo 22, de acordo com diferentes casos específicos, os metadados podem ser armazenados no inode do arquivo ou podem ser armazenados no inode raiz do sistema de arquivos.
[00251] Há uma correspondência de um-para-um entre um ID de instantâneo e o número de versão de arquivo, de modo que o servidor de cliente pode obter o número de versão de arquivo de acordo com o ID de instantâneo. Essa correspondência pode ser armazenada nos metadados de arquivo.
[00252] O módulo de geração de solicitação de tira 511 pode ser ainda configurado para: processar a solicitação de leitura de arquivo e converter a solicitação de leitura de arquivo em múltiplas solicitações de leitura que incluem uma solicitação de leitura de tira, onde cada solicitação de leitura de tira é utilizada para solicitar a leitura de uma tira e a solicitação de leitura de tira é utilizada para solicitar a leitura de uma tira a ser lida a partir do OSD; e determinar um ID de objeto correspondente a cada solicitação de leitura, em que a solicitação de leitura de tira transporta um número de versão da tira a ser lida, um deslocamento da tira a ser lida, um tamanho de tira a ser lida, e um ID de objeto da tira a ser lida.
[00253] Especificamente, um deslocamento de cada tira que precisa ser lida, incluindo a tira a ser lida, pode ser aprendido de acordo com o tamanho dos dados a serem lidos e o deslocamento dos dados a serem lidos.
[00254] Fazendo referência a um método para gerar uma tira no passo 23, os dados a serem escritos podem ser divididos em uma tira de acordo com um tamanho de tira e por utilizar o deslocamento dos dados a serem escritos e um comprimento dos dados a serem escritos, para obter o deslocamento da tira a ser lida. De acordo com o mesmo método, neste passo, o deslocamento de cada tira que precisa ser lida pode também ser obtido por utilizar um tamanho de tira, o deslocamento dos dados a serem lidos, e um comprimento dos dados a serem lidos. O tamanho de tira pode vir do inode do arquivo e, nesse caso, arquivos diferentes podem utilizar tamanhos de tira diferentes, ou todos os arquivos em um sistema inteiro compartilham um tamanho de tira.
[00255] Depois de se obter o deslocamento da tira a ser lida, um ID de um objeto no qual a tira a ser lida é localizada pode ser obtido de acordo com um método que é o mesmo que no passo 23. Deve ser notado que, independentemente se o nome de arquivo é o nome de arquivo no qual os dados a serem lidos são localizados ou o nome de arquivo do instantâneo, um FID utilizado para consultar o ID de objeto correspondente à solicitação de leitura é o FID do arquivo no qual os dados a serem lidos são localizados.
[00256] O módulo de envio de solicitação de tira 512 pode ainda ser configurado para selecionar um OSD utilizado para receber a solicitação de leitura de tira.
[00257] Especificamente, este passo pode ser executado pelo cliente de armazenamento de objeto do servidor de cliente.
[00258] Uma solicitação de leitura de tira e uma solicitação de escrita de tira de uma mesma tira precisam ser correspondentes a um mesmo OSD. Um método viável é: utilizar um método de cálculo de seleção OSD que é o mesmo que no passo 24.
[00259] O módulo de envio de solicitação de tira 512 pode ainda ser configurado para enviar a solicitação de leitura de tira para o OSD selecionado.
[00260] O número de versão da tira a ser lida é um número de versão de um arquivo ao qual a tira a ser lida pertence.
[00261] Opcionalmente, um modo de escrita pode ser ainda enviado para o OSD, onde o modo de escrita é consistente com o modo de escrita transportado na solicitação de escrita de tira no passo 25. O ID de objeto da tira a ser lida é o ID de objeto ao qual a tira a ser lida pertence.
[00262] O módulo de recepção de solicitação de tira 521 pode ainda ser configurado para: receber a solicitação de leitura de tira, pesquisar uma localização de armazenamento da tira a ser lida, e enviar a tira a ser lida para o aparelho de servidor de cliente.
[00263] O módulo de recepção de solicitação de tira 521 pode implementar uma função no passo 32, por exemplo, leitura da tira a ser lida na Maneira 1 ou Maneira 2 mencionada no passo 32. Por conseguinte, para uma função específica do módulo de recepção de solicitação de tira 521, pode referir-se ao passo 32.
[00264] Cada aspecto da presente invenção ou uma forma possível de implementação de cada aspecto pode ser especificamente implementado como um sistema, um método ou um produto de programa de computador. Deste modo, cada aspecto da presente invenção ou uma forma possível de implementação de cada aspecto pode utilizar formas de modalidades apenas de hardware, modalidades apenas de software (incluindo firmware, software residente e semelhantes) ou modalidades com uma combinação de software e hardware, que são uniformemente referidas como "circuito", "módulo" ou "sistema" aqui. Além disso, cada aspecto da presente invenção ou forma possível de implementação de cada aspecto pode tomar uma forma de um produto de programa de computador, em que o produto de programa de computador refere-se a um código de programa legível por computador armazenado em um meio legível por computador.
[00265] O meio legível por computador pode ser um meio de sinal legível por computador ou um meio de armazenamento legível por computador. O meio de armazenamento legível por computador inclui, mas não é limitado a, um sistema, dispositivo ou aparelho eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação apropriada dos mesmos, tal como uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória somente de leitura programável apagável (EPROM ou memória flash), uma fibra óptica e uma memória somente de leitura de disco compacto (CD-ROM).
[00266] Um processador em um computador lê código de programa legível por computador armazenado em um meio legível por computador, de modo que o processador pode executar uma função e uma ação especificada em cada passo ou uma combinação de passos em um fluxograma; um aparelho é gerado para implementar uma função e uma ação especificada em cada bloco ou uma combinação de blocos em um diagrama de blocos.

Claims (6)

1. Método de armazenamento de dados, caracterizado pelo fato de que o método compreende: receber (25), por um dispositivo de armazenamento de objeto, OSD, uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID de objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID do objeto ao qual a tira a ser escrita pertence, em que o número de versão da tira a ser escrita é fixado em um intervalo de tomada de dois instantâneos; e escrever (26), pelo OSD, a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que antes de receber uma solicitação de escrita de tira enviada por um servidor de cliente, o método compreende ainda: tirar, pelo servidor de cliente, um instantâneo do arquivo ou do volume ao qual a tira a ser escrita pertence, e gerar o ID de instantâneo do instantâneo mais recente; e gerar o número de versão da tira a ser escrita de acordo com o ID de instantâneo do instantâneo mais recente.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o método compreende ainda: atualizar, pelo servidor de cliente, o número de versão da tira a ser escrita para metadados do arquivo ou do volume.
4. Método, de acordo com a reivindicação 1, 2 ou 3, caracterizado pelo fato de que antes da recepção, por um OSD, de uma solicitação de escrita de tira, o método compreende ainda: receber (21), pelo servidor de cliente, uma solicitação de escrita de arquivo, em que a solicitação de escrita de arquivo transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um nome de arquivo e os dados a serem escritos são uma parte do arquivo; obter (22), pelo servidor de cliente, um identificador de arquivo FID de acordo com o nome de arquivo, executar uma consulta nos metadados de arquivo de acordo com o FID para obter um número de versão do arquivo, e utilizar o número de versão do arquivo como o número de versão da tira a ser escrita, em que o número de versão do arquivo é correspondente ao ID de instantâneo do instantâneo mais recente do arquivo ao qual a tira a ser escrita pertence; dividir (23), pelo servidor de cliente de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, os dados a serem escritos em múltiplas tiras que compreendem a tira a ser escrita, determinar o ID de objeto ao qual a tira a ser escrita pertence, e obter o deslocamento da tira a ser escrita; e criar a solicitação de escrita de tira.
5. Método, de acordo com a reivindicação 1, 2 ou 3, caracterizado pelo fato de que antes da recepção, por um OSD, de uma solicitação de escrita de tira, o método compreende ainda: receber, pelo servidor de cliente, uma solicitação de escrita de volume, em que a solicitação de escrita de volume transporta dados a serem escritos, um deslocamento dos dados a serem escritos, e um identificador ID de volume e os dados a serem escritos são uma parte do volume; executar, pelo servidor de cliente, uma consulta nos metadados do volume de acordo com o ID de volume para obter um número de versão do volume, e utilizar o número de versão do volume como o número de versão da tira a ser escrita, em que o número de versão do volume é correspondente ao ID de instantâneo do instantâneo mais recente do volume ao qual a tira a ser escrita pertence; dividir, pelo servidor de cliente de acordo com o deslocamento dos dados a serem escritos e um tamanho dos dados a serem escritos, os dados a serem escritos em múltiplas tiras que compreendem a tira a ser escrita, determinar o ID do objeto ao qual a tira a ser escrita pertence, e obter o deslocamento da tira a ser escrita; e criar a solicitação de escrita de tira.
6. Aparelho de armazenamento de dados, caracterizado pelo fato de que o aparelho compreende: um módulo de recepção de solicitação de tira (521), configurado para receber uma solicitação de escrita de tira enviada por um servidor de cliente, em que a solicitação de escrita de tira transporta uma tira a ser escrita, um número de versão da tira a ser escrita, um deslocamento da tira a ser escrita, e um ID do objeto da tira a ser escrita, o número de versão da tira a ser escrita é correspondente a um ID de instantâneo de um instantâneo mais recente de um arquivo ou um volume ao qual a tira a ser escrita pertence, o deslocamento da tira a ser escrita descreve uma localização da tira a ser escrita em um objeto ao qual a tira a ser escrita pertence, e o ID de objeto da tira a ser escrita é um ID do objeto ao qual a tira a ser escrita pertence; em que o número de versão da tira a ser escrita é fixada em um intervalo de tomada de dois instantâneos; e um módulo de armazenamento de tira (522), configurado para escrever a tira a ser escrita em uma localização de armazenamento determinada por utilizar o ID de objeto, o número de versão da tira a ser escrita, e o deslocamento da tira a ser escrita.
BR112017011412-7A 2014-12-27 2014-12-27 Método e aparelho de armazenamento de dados BR112017011412B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/095223 WO2016101283A1 (zh) 2014-12-27 2014-12-27 一种数据处理方法装置及系统

Publications (3)

Publication Number Publication Date
BR112017011412A2 BR112017011412A2 (pt) 2018-06-26
BR112017011412A8 BR112017011412A8 (pt) 2022-09-06
BR112017011412B1 true BR112017011412B1 (pt) 2023-02-14

Family

ID=56149009

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112017011412-7A BR112017011412B1 (pt) 2014-12-27 2014-12-27 Método e aparelho de armazenamento de dados

Country Status (10)

Country Link
US (3) US11032368B2 (pt)
EP (1) EP3203386A4 (pt)
JP (1) JP6607941B2 (pt)
KR (1) KR102030786B1 (pt)
CN (2) CN105993013B (pt)
AU (1) AU2014415350B2 (pt)
BR (1) BR112017011412B1 (pt)
CA (1) CA2965715C (pt)
SG (1) SG11201703410YA (pt)
WO (1) WO2016101283A1 (pt)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021333B (zh) * 2016-11-03 2021-08-24 阿里巴巴集团控股有限公司 随机读写数据的系统、装置及方法
US10691350B2 (en) 2016-11-15 2020-06-23 StorageOS Limited Method for provisioning a volume of data including placing data based on rules associated with the volume
US10353632B2 (en) 2016-11-15 2019-07-16 StorageOS Limited System and method for storing data blocks in a volume of data
US10733305B2 (en) 2016-11-15 2020-08-04 StorageOS Limited System and method for implementing cryptography in a storage system
CN108604201B (zh) * 2016-12-30 2022-02-25 华为技术有限公司 一种快照回滚方法、装置、存储控制器和系统
CN106708443B (zh) * 2017-01-03 2020-01-17 北京百度网讯科技有限公司 数据读写方法及装置
US10652330B2 (en) * 2017-01-15 2020-05-12 Google Llc Object storage in cloud with reference counting using versions
CN110546620B (zh) * 2017-04-14 2022-05-17 华为技术有限公司 数据处理方法、存储系统和交换设备
US10547683B2 (en) * 2017-06-26 2020-01-28 Christopher Squires Object based storage systems that utilize direct memory access
US20190114232A1 (en) * 2017-10-17 2019-04-18 Christopher Squires Local and offloaded snapshots for volatile memory
CN110309100B (zh) * 2018-03-22 2023-05-23 腾讯科技(深圳)有限公司 一种快照对象生成方法和装置
CN110837479B (zh) * 2018-08-17 2023-09-01 华为云计算技术有限公司 数据处理方法、相关设备及计算机存储介质
CN110874181B (zh) * 2018-08-31 2021-12-17 杭州海康威视系统技术有限公司 一种数据更新方法及更新装置
CN109634526B (zh) * 2018-12-11 2022-04-22 浪潮(北京)电子信息产业有限公司 一种基于对象存储的数据操作方法及相关装置
CN109669634B (zh) * 2018-12-17 2022-03-04 浪潮电子信息产业股份有限公司 一种数据落盘方法、装置、设备及可读存储介质
EP3889752A4 (en) 2018-12-25 2021-12-01 Huawei Technologies Co., Ltd. DATA STORAGE METHOD AND DEVICE IN A DISTRIBUTED STORAGE SYSTEM AND COMPUTER PROGRAM PRODUCT
US11163730B2 (en) * 2019-05-13 2021-11-02 Microsoft Technology Licensing, Llc Hard link operations for files in a file system
CN110674518A (zh) * 2019-09-26 2020-01-10 海南新软软件有限公司 一种设备标识信息生成方法、装置及系统
CN110769062A (zh) * 2019-10-29 2020-02-07 广东睿江云计算股份有限公司 一种分布式存储的异地灾备方法
CN112835511B (zh) * 2019-11-25 2022-09-20 浙江宇视科技有限公司 分布式存储集群的数据写入方法、装置、设备和介质
CN111064801B (zh) * 2019-12-26 2023-06-13 浪潮电子信息产业股份有限公司 一种基于分布式文件系统的osd通信方法、装置及介质
US11609834B2 (en) * 2020-01-21 2023-03-21 Druva Inc. Event based aggregation for distributed scale-out storage systems
CN111352594B (zh) * 2020-03-12 2023-06-20 湖州旻合科技有限公司 eFuse中写入数据、读取数据的方法及装置
CN111857602B (zh) * 2020-07-31 2022-10-28 重庆紫光华山智安科技有限公司 数据处理方法、装置、数据节点及存储介质
CN111966845B (zh) * 2020-08-31 2023-11-17 重庆紫光华山智安科技有限公司 图片管理方法、装置、存储节点及存储介质
CN112261097B (zh) * 2020-10-15 2023-11-24 科大讯飞股份有限公司 用于分布式存储系统的对象定位方法及电子设备
CN114697351B (zh) * 2020-12-30 2023-03-10 华为技术有限公司 一种存储管理方法、设备及介质
CN113821377B (zh) * 2021-08-27 2023-12-22 济南浪潮数据技术有限公司 一种分布式存储集群的数据恢复方法、系统及存储介质
CN114490192A (zh) * 2021-11-03 2022-05-13 统信软件技术有限公司 一种文件备份方法、装置及计算设备
CN115981875B (zh) * 2023-03-21 2023-08-25 人工智能与数字经济广东省实验室(广州) 内存存储系统的增量更新方法、装置、设备、介质和产品

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651147B2 (en) 2001-05-08 2003-11-18 International Business Machines Corporation Data placement and allocation using virtual contiguity
US6957362B2 (en) 2002-08-06 2005-10-18 Emc Corporation Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US7209933B2 (en) * 2003-12-12 2007-04-24 Oracle International Corporation Object versioning
US7386663B2 (en) * 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
WO2006052829A2 (en) 2004-11-05 2006-05-18 Trusted Data Corporation Dynamically upgradeable fault-tolerant storage system permitting variously sized storage devices and method
US7228320B2 (en) * 2004-11-17 2007-06-05 Hitachi, Ltd. System and method for creating an object-level snapshot in a storage system
US20060204134A1 (en) * 2005-03-01 2006-09-14 James Modrall Method and system of viewing digitized roll film images
US7373366B1 (en) * 2005-06-10 2008-05-13 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for taking and managing snapshots of a storage volume
US7716171B2 (en) 2005-08-18 2010-05-11 Emc Corporation Snapshot indexing
CN100355899C (zh) * 2006-04-14 2007-12-19 清华大学 一种对具荚膜细菌发酵液过滤预处理方法
US8285758B1 (en) * 2007-06-30 2012-10-09 Emc Corporation Tiering storage between multiple classes of storage on the same container file system
US20100082538A1 (en) * 2008-09-29 2010-04-01 Heiko Rentsch Isolated replication of shared objects
US8099572B1 (en) * 2008-09-30 2012-01-17 Emc Corporation Efficient backup and restore of storage objects in a version set
JP5244979B2 (ja) 2009-02-23 2013-07-24 株式会社日立製作所 ストレージシステムおよびその制御方法
CN101515296A (zh) * 2009-03-06 2009-08-26 成都市华为赛门铁克科技有限公司 数据更新方法和装置
US8612439B2 (en) * 2009-06-30 2013-12-17 Commvault Systems, Inc. Performing data storage operations in a cloud storage environment, including searching, encryption and indexing
CN101783814A (zh) * 2009-12-29 2010-07-21 上海交通大学 海量存储系统的元数据存储方法
US8352501B2 (en) * 2010-01-28 2013-01-08 Cleversafe, Inc. Dispersed storage network utilizing revision snapshots
US8825602B1 (en) * 2010-03-15 2014-09-02 Symantec Corporation Systems and methods for providing data protection in object-based storage environments
US9852150B2 (en) 2010-05-03 2017-12-26 Panzura, Inc. Avoiding client timeouts in a distributed filesystem
US9824095B1 (en) 2010-05-03 2017-11-21 Panzura, Inc. Using overlay metadata in a cloud controller to generate incremental snapshots for a distributed filesystem
US8396905B2 (en) * 2010-11-16 2013-03-12 Actifio, Inc. System and method for improved garbage collection operations in a deduplicated store by tracking temporal relationships among copies
US9092153B2 (en) * 2011-09-14 2015-07-28 Hitachi, Ltd. Method for creating clone file, and file system adopting the same
US9804928B2 (en) 2011-11-14 2017-10-31 Panzura, Inc. Restoring an archived file in a distributed filesystem
US9635132B1 (en) 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
US9817834B1 (en) * 2012-10-01 2017-11-14 Veritas Technologies Llc Techniques for performing an incremental backup
US9092837B2 (en) 2012-11-29 2015-07-28 International Business Machines Corporation Use of snapshots to reduce risk in migration to a standard virtualized environment
US9742873B2 (en) 2012-11-29 2017-08-22 International Business Machines Corporation Adjustment to managed-infrastructure-as-a-service cloud standard
CN104079600B (zh) 2013-03-27 2018-10-12 中兴通讯股份有限公司 文件存储方法、装置、访问客户端及元数据服务器系统
US20140344539A1 (en) 2013-05-20 2014-11-20 Kaminario Technologies Ltd. Managing data in a storage system
CN103558998B (zh) * 2013-11-07 2016-03-30 华为技术有限公司 一种数据操作的方法和设备
US20150244795A1 (en) * 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9400741B1 (en) * 2014-06-30 2016-07-26 Emc Corporation Reclaiming space from file system hosting many primary storage objects and their snapshots

Also Published As

Publication number Publication date
CN108733761B (zh) 2021-12-03
CN108733761A (zh) 2018-11-02
US20170293533A1 (en) 2017-10-12
US11799959B2 (en) 2023-10-24
SG11201703410YA (en) 2017-06-29
US11032368B2 (en) 2021-06-08
KR102030786B1 (ko) 2019-10-10
AU2014415350A1 (en) 2017-05-18
WO2016101283A1 (zh) 2016-06-30
EP3203386A4 (en) 2017-12-27
CN105993013B (zh) 2018-05-04
US20210152638A1 (en) 2021-05-20
CN105993013A (zh) 2016-10-05
CA2965715A1 (en) 2016-06-30
CA2965715C (en) 2019-02-26
KR20170068564A (ko) 2017-06-19
JP2017537397A (ja) 2017-12-14
EP3203386A1 (en) 2017-08-09
JP6607941B2 (ja) 2019-11-20
BR112017011412A2 (pt) 2018-06-26
AU2014415350B2 (en) 2019-02-21
US20170295239A1 (en) 2017-10-12
BR112017011412A8 (pt) 2022-09-06

Similar Documents

Publication Publication Date Title
BR112017011412B1 (pt) Método e aparelho de armazenamento de dados
EP3477481B1 (en) Data block name based efficient restore of multiple files from deduplicated storage
JP6205650B2 (ja) 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置
US9747207B2 (en) Crash-proof cache data protection method and system
US8306950B2 (en) Managing data access requests after persistent snapshots
US9710475B1 (en) Synchronization of data
JP6501916B2 (ja) ファイルストレージにおけるインデックス付け実施方法及びシステム
WO2017041654A1 (zh) 用于分布式存储系统的写入数据、获取数据的方法和设备
WO2015034827A1 (en) Replication of snapshots and clones
US10877849B2 (en) System and method for managing different types of snapshots of storage objects
WO2019128166A1 (zh) Kv存储设备以及使用kv存储设备提供文件系统
US20200249842A1 (en) Storage system indexed using persistent metadata structures
US10776321B1 (en) Scalable de-duplication (dedupe) file system
WO2016106757A1 (zh) 一种存储数据的管理方法、存储管理器及存储系统
BR112016024412B1 (pt) Método de gerenciamento de arquivos e sistema de arquivos
EP2164005B1 (en) Content addressable storage systems and methods employing searchable blocks
WO2022140918A1 (en) Method and system for in-memory metadata reduction in cloud storage system
US20200342065A1 (en) Replicating user created snapshots
US10318159B1 (en) Method and system for physical locality repair in a storage system
WO2016137524A1 (en) File level snapshots in a file system

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 17/30

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

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 27/12/2014, OBSERVADAS AS CONDICOES LEGAIS