JP2018097450A - データ処理装置,データ処理プログラムおよびデータ処理方法 - Google Patents

データ処理装置,データ処理プログラムおよびデータ処理方法 Download PDF

Info

Publication number
JP2018097450A
JP2018097450A JP2016239179A JP2016239179A JP2018097450A JP 2018097450 A JP2018097450 A JP 2018097450A JP 2016239179 A JP2016239179 A JP 2016239179A JP 2016239179 A JP2016239179 A JP 2016239179A JP 2018097450 A JP2018097450 A JP 2018097450A
Authority
JP
Japan
Prior art keywords
data
variable
chunk
search unit
length block
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2016239179A
Other languages
English (en)
Other versions
JP6841024B2 (ja
Inventor
祐司 野村
Yuji Nomura
祐司 野村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016239179A priority Critical patent/JP6841024B2/ja
Priority to US15/826,775 priority patent/US20180165345A1/en
Priority to EP17204619.5A priority patent/EP3333730A1/en
Publication of JP2018097450A publication Critical patent/JP2018097450A/ja
Application granted granted Critical
Publication of JP6841024B2 publication Critical patent/JP6841024B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • 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/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • 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
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】、データ列におけるアクセス対象の可変長ブロックデータを容易に特定できるようにする。
【解決手段】複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを検索単位領域毎に管理し、データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定し、特定した検索単位領域に属する可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索する。
【選択図】図3

Description

本発明は、データ処理装置,データ処理プログラムおよびデータ処理方法に関する。
近年、ソフトウェアやデータなどを、インターネットなどのネットワークを通じてサービスの形で必要に応じて利用するクラウドコンピューティングシステムが知られている。
図23はクラウドコンピューティングシステムの構成例を模式的に示す図である。
この図23に示すクラウドコンピューティングシステム500は、サービスとしてストレージを提供するクラウドストレージサービスであり、業務サーバ501,バックアップサーバ502,クラウドバックアップゲートウェイ503およびクラウド504を備える。
クラウド504にはオブジェクトストレージ505が備えられている。オブジェクトストレージ505はクラウドストレージ505とも呼ばれる。バックアップサーバ502においてはバックアップソフトウェアが実行され、業務サーバ501によって生成されたデータは、このバックアップソフトウェアによってバックアップデータとしてコピーされ、オブジェクトストレージ505に格納される。
クラウドバックアップゲートウェイ503は、バックアップソフトウェアがバックアップとしてコピーしたファイルを、オブジェクトストレージ505に転送する。このクラウドバックアップゲートウェイ503は、バックアップソフトウェアとクラウドストレージ505との間のデータ転送を中継するソフトウェアによって実現される。
クラウドストレージサービスでは、データ量に応じた課金が行なわれることが多い。そのため、クラウドバックアップゲートウェイ503には、転送するデータ量を削減することが求められる。データ量を削減するための技術として、例えば重複排除が知られている。
重複排除においては、データ列を所定のサイズの複数のブロック(以下、チャンクという)に分割し、保存済のデータも含めてチャンクどうしを比較し、同一のチャンクは重複して保存しないようにすることで、保存するデータ量を削減する。以下、データ列を複数のチャンクに分割することをチャンキングという。
チャンキングには、固定長チャンキングと可変長チャンキングとが含まれる。
図24は固定長チャンキングを説明するための図、図25は可変長チャンキングを説明するための図である。
固定長チャンキングは、図24に示すように、予め決められた一定のサイズでデータを分割する方式である。これに対して、可変長チャンキングにおいては、データの内容に沿ってデータを分割する位置が計算される。従って、可変長チャンキングにおいては、図25に示すように、一つのデータ列から得られるチャンクのサイズは一定ではない。
このような可変長チャンキングは、ファイルのバックアップという目的において、固定長チャンキングよりも好適であると考えられる。
図26は可変長チャンキングを用いたファイルのバックアップを固定長チャンキングと比べて説明するための図である。
一般に、バックアップは定期実行(毎日、毎週、毎月など)で運用される。図26に示す例においては、符号(A)に示すように、前回バックアップを行なったファイルの先頭に1バイトのデータが追加されたデータのバックアップを新たに行なう場合について示す。
固定長チャンキングにおいては、チャンクサイズが一定のため、ファイルの先頭に1バイトのデータが追加されると、符号(B)に示すように、後続する全てのチャンクのデータが1バイトずつずれることになる。これにより、全てのチャンクが前回バックアップ時とは異なるデータ内容となり、重複チャンクが無くなる。すなわち、全てのチャンクが保存対象となる。
これに対して、可変長チャンキングでは、データ内容に合わせてチャンク分割がされるため、符号(C)に示すように、ファイルの先頭に1バイトのデータが追加された場合に、チャンクの境界位置が1バイトずれていくだけであり、先頭のチャンク以外の各チャンクのデータ内容は変化せず、重複チャンクとして扱うことができる。すなわち、先頭のチャンクだけが保存対象となり、他のチャンクは保存対象外となる。
このような特徴から、クラウドバックアップゲートウェイにおいて転送データのデータ量削減を行なうには、可変長チャンキングによる重複排除が適していると言える。
国際公開第2014/155668号 特開2012−141738号公報 特開2011−65268号公報
一般に、ファイルシステムにおけるデータの入出力インタフェースにおいては、ファイルに対してリードやライトのデータアクセスを行なうために、オフセット,データサイズおよびデータ格納領域の3つの情報が用いられる。
オフセットは、ファイル中におけるデータのリードもしくはライトの対象位置を示し、ファイルの先頭から何バイト目であるかを表す。データサイズは、リードもしくはライトするデータのサイズを示す。データ格納領域は、リードしたデータを格納するメモリ領域や、ライトするデータが格納されているメモリ領域を示す。
ここで、固定長チャンキングされたファイルにおいては、各チャンクのチャンクサイズが等しいので、ファイルを構成するチャンク群を単純な配列で表現することができ、入出力アクセス要求に含まれるオフセットおよびデータサイズから、アクセス対象データの先頭のチャンクと末尾のチャンクとを容易に求めることができる。
具体的には、データ先頭のチャンクインデックスは、オフセットをチャンクサイズで除算(オフセット÷チャンクサイズ)した商の整数部分により取得できる。また、データ末尾のチャンクインデックスは、(オフセット+データサイズ)をチャンクサイズで除算した商の整数部分により取得できる。
しかしながら、従来のファイルシステムにおいて、可変長チャンキングされたファイルにおいては、アクセス対象となるデータの先頭のチャンクと末尾のチャンクとを容易に求めることができない。
すなわち、アクセス対象データのオフセットおよびデータサイズ情報と、ファイルを構成する各チャンクのオフセットおよびチャンクサイズとの比較検索が必要となる。具体的には、ファイルにおける先頭のチャンクから順番にチャンクサイズの累加等の計算を行なう必要がある。
そのため、ファイルサイズが大きくなるに従ってチャンクを特定するために要する処理時間が大きくなるため、ファイルサイズが大きくなるほどリードやライトが遅くなるという課題がある。
1つの側面では、本発明は、データ列におけるアクセス対象の可変長ブロックデータを容易に特定できるようにすることを目的とする。
このため、このデータ処理装置は、複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理するブロックデータ管理部と、前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定する検索単位領域特定部と、特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索するブロック検索部とを備える。
一実施形態によれば、データ列におけるアクセス対象の可変長ブロックデータを容易に特定できる。
実施形態の一例としてのクラウドストレージシステムの構成を例示する図である。 実施形態の一例としてのクラウドバックアップゲートウェイのキャッシュ用バッファメモリを説明するための図である。 実施形態の一例としてのクラウドストレージシステムにおけるファイルの管理方法を説明するための図である。 図1に示すディレクトリテーブルの構成を示す図である。 ディレクトリテーブルによって示されるファイルやディレクトリの構成を例示する図である。 図1に示すエントリテーブルの構成を示す図である。 図1に示すチャンクマップテーブルの構成を示す図である。 図1に示すチャンクテーブルの構成を示す図である。 実施形態の一例としてのクラウドストレージシステムにおけるライトデータを説明するための図である。 実施形態の一例としてのクラウドストレージシステムにおけるライトデータの結合を説明するための図である。 ライト要求に付加される引数を説明するための図である。 実施形態の一例としてのクラウドバックアップゲートウェイにおけるファイルシステムとしてのライト処理の概要を説明するためのフローチャートである。 キャッシュ用バッファメモリにおけるライトデータの格納状態を示す図である。 キャッシュ用バッファメモリにおけるライトデータの格納状態を示す図である。 キャッシュ用バッファメモリにおけるライトデータの格納状態を示す図である。 実施形態の一例としてのクラウドストレージシステムにおけるライト処理を説明するための図である。 実施形態の一例としてのクラウドストレージシステムにおけるライト処理の詳細を説明するためのフローチャートである。 実施形態の一例としてのクラウドストレージシステムにおけるライト処理を説明するための図である。 実施形態の一例としてのクラウドストレージシステムにおけるライトデータへの既存チャンクの結合方法を説明するための図である。 リード要求の引数を示す図である。 実施形態の一例としてのクラウドストレージシステムにおけるリード処理を説明するためのフローチャートである。 実施形態の一例としてのクラウドストレージシステムにおけるリード処理を説明するための図である。 クラウドコンピューティングシステムの構成例を模式的に示す図である。 固定長チャンキングを説明するための図である。 可変長チャンキングを説明するための図である。 可変長チャンキングを用いたファイルのバックアップを固定長チャンキングと比べて説明するための図である。
以下、図面を参照して本データ処理装置,データ処理プログラムおよびデータ処理方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(A)構成
図1は実施形態の一例としてのクラウドストレージシステム1の構成を例示する図である。
クラウドストレージシステム1は、クラウド50に備えられたストレージ(クラウドストレージ51)の記憶領域をサービスとして提供するクラウドコンピューティングシステムである。
図1に例示するクラウドストレージシステム1は、クラウド50,業務サーバ52,バックアップサーバ53およびクラウドバックアップゲートウェイ10を備える。
クラウド50は、複数のサーバコンピュータ(図示省略)を備えるコンピュータネットワークシステムである。クラウド50は、クラウドストレージ51を備え、このクラウドストレージ51の記憶領域をサービスとして提供する。
クラウドストレージ51はデータのリードやライトが可能な記憶領域であり、1以上の記憶装置により実現される。クラウドストレージ51は、複数の記憶装置を用いたRAID(Redundant Arrays of Inexpensive Disks)であってもよい。
業務サーバ52,バックアップサーバ53およびクラウドバックアップゲートウェイ10は、例えばユーザのサイトに設置される。
業務サーバ52は、サーバ機能を備えるコンピュータであり、ユーザが業務等で使用するプログラムを実行することで各種機能を実現する。この業務サーバ52の記憶領域(図示省略)のデータのコピーが、バックアップサーバ53およびクラウドバックアップゲートウェイ10を介して、クラウドストレージ51に格納される。
バックアップサーバ53は、例えば、NFS(Network File System)クライアントとして機能することで、コピーしたファイルのデータをクラウドバックアップゲートウェイ10に送信する。
バックアップサーバ53は、サーバ機能を有するコンピュータであって、バックアップソフトウェアを実行することで、業務サーバ53のデータのコピーをバックアップとしてクラウドストレージ51の所定の領域に格納させる。
なお、業務サーバ52,バックアップサ−バ53およびクラウドストレージ51は既知であるので、便宜上、これらの詳細な説明は省略する。また、これらの構成の図示についても省略する。
クラウドバックアップゲートウェイ10は、バックアップサーバ53(バックアップソフトウェア)がコピーしたデータをクラウドストレージ51に転送する。すなわち、クラウドバックアップゲートウェイ10は、バックアップソフトウェアとクラウドストレージ51との間のデータ転送を中継するデータ処理装置である。以下、クラウドバックアップゲートウェイ10が処理するデータを、ファイルもしくはファイルデータという場合がある。
本実施形態においては、図1に示すように、クラウドバックアップゲートウェイ10は、CPU(Central Processing Unit)11,メモリ12および記憶装置14を備えた情報処理装置として構成される。
記憶装置14は、ハードディスクドライブ(Hard disk drive:HDD)、SSD(Solid State Drive),ストレージクラスメモリ(Storage Class Memory:SCM)等の記憶装置であって、種々のデータを格納するものである。
例えば、記憶装置14には、管理データベース240のデータが格納され、この管理データベース240には、後述する、ディレクトリテーブル241,エントリテーブル242,チャンクマップテーブル243およびチャンクテーブル244の各データが格納される。
メモリ12はROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ12のROMには、クラウドバックアップゲートウェイ10としての機能(例えば、ファイルアクセス制御や重複排除処理)を実現するためのソフトウェアプログラムやこのプログラム用のデータ類が書き込まれてもよい。なお、これらのプログラムやデータ類は記憶装置14に格納されてもよい。メモリ12上のソフトウェアプログラムは、CPU11に適宜読み込まれて実行される。また、メモリ12のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
さらに、メモリ12のRAMにおける特定の記憶領域は、キャッシュ用バッファメモリ13としても用いられる。
図2は実施形態の一例としてのクラウドバックアップゲートウェイ10のキャッシュ用バッファメモリ13を説明するための図である。
後述するファイルアクセス処理部22は、キャッシュ用バッファメモリ13に、クラウドストレージ51に書き込むためのライトデータや、クラウドストレージ51から読み出したリードデータを格納する。
なお、以下、キャッシュ用バッファメモリ13を、単にバッファメモリ13という場合がある。また、バッファメモリ13におけるライトデータを格納する領域を、ライトデータ格納領域という。また、バッファメモリ13におけるリードデータを格納する領域を、リードデータ格納領域という。
キャッシュ用バッファメモリ13に格納されたライトデータは、後述の如く、ファイルアクセス処理部22により複数の可変長チャンクに分割(チャンキング)される。すなわち、ファイルアクセス処理部22は、キャッシュ用バッファメモリ13を用いて、クラウドストレージ51に対するデータのライトやリードを行なう。
図2に示すように、キャッシュ用バッファメモリ13は、データキャッシュとして用いられるキャッシュメモリ領域13aの前後に、本クラウドストレージシステム1において予め規定された最大のチャンクサイズ(最大チャンクサイズ)の領域である最大チャンクサイズ領域13bをそれぞれ有する。
従って、キャッシュ用バッファメモリ13は、キャッシュメモリ領域13aのサイズに、最大チャンクサイズ領域13bのサイズの2倍を加算したサイズ(バッファメモリサイズ)を有する。
CPU11は、種々の制御や演算を行なう処理装置であり、メモリ12に格納されたOSやプログラムを実行することにより、種々の機能を実現する。すなわち、CPU11がデータ処理プログラムを実行することで、図1に示すように、重複排除処理部21およびファイルアクセス処理部(ブロックデータ管理部,探索単位領域特定部,ブロック探索部,ライト処理部,リード処理部)22としての機能を実現する。
なお、クラウドバックアップゲートウェイ10において、重複排除処理部21およびファイルアクセス処理部22としての機能を実現するためのプログラム(データ処理プログラム)は、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RW等),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等),ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
重複排除処理部21およびファイルアクセス処理部22としての機能を実現する際には、内部記憶装置(本実施形態ではメモリ12)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU11)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
ファイルアクセス処理部22は、処理対象のファイルデータを管理するファイル管理機能を実現する。
(a)可変長チャンキング
ファイルアクセス処理部22は、データファイルを複数のデータブロック(チャンク)に分割するデータ分割部としての機能を備える。例えば、ファイルアクセス処理部22は、バックアップサーバ53等の外部装置から受信するバックアップデータ(データファイル)を分割する。
ファイルアクセス処理部22は、データファイルアクセスを複数の可変長のチャンク(可変長チャンク,部分データ)に分割し(可変長チャンキング処理)、クラウドストレージ51に対して、チャンク単位でファイルのリード処理やライト処理を行なう。そして後述する重複排除処理部21は、これらの生成された可変長チャンク毎に重複排除処理を行なう。
ファイルアクセス処理部22は、処理対象のファイルに対して、例えばCDC(Content Defined Chunking)方式により可変長チャンクキング(可変長チャンク分割)を行なう。
CDCにおいては、ファイルが、その内容に応じて可変長のブロック(チャンク)に分割される。ファイルアクセス処理部22は、ファイル(データ列)を、その先頭から固定長のWindowを1バイトずつスライドさせながらハッシュ値を計算することで、チャンクの境界線を求める。なお、CDCは既知の手法であるので、その詳細な説明は省略する。
また、ファイルアクセス処理部22は、上記のCDCにおける計算量を減らすために、Rabin-karp rolling hashアルゴリズムを併用してもよい。なお、Rabin-karp rolling hashアルゴリズムについても既知の手法であるので、その詳細な説明は省略する。
(b)ファイルシステム管理
ファイルアクセス処理部22は、ファイルシステム管理機能を備え、クラウドストレージ51に対してデータのリードやライトを行なう。
例えば、ファイルアクセス処理部22は、NFSサーバとして機能することで、バックアップサーバ53によってコピーされたデータをファイルとしてクラウドストレージ51に送信して格納させる。
図3は実施形態の一例としてのクラウドストレージシステム1におけるファイルの管理方法を説明するための図である。
図3に例示するファイルは、チャンク0〜3の4つの可変長チャンクにより構成されている。
ファイルアクセス処理部22は、図3に示すように、ファイルを、その先頭から固定長(図3に示す例では200バイト)の複数(図3に示す例では2つ)の検索単位領域(リージョン)に区分け(区画,分割)する。以下、検索単位領域をリージョンという。リージョンのサイズは、チャンクサイズよりも大きい。従って、各リージョンには1つ以上のチャンクが含まれる。
これにより、ファイルを構成する可変長チャンクは、いずれかのリージョンに含まれることになる。すなわち、ファイルにおいて可変長チャンクはいずれかのリージョンに割り当てられる。
本クラウドストレージシステム1においては、リージョンをリージョン番号を用いて特定する。
図3に示す例においては、リージョン番号“0”のリージョンをリージョン0と表し、リージョン番号“1”のリージョンをリージョン1と表す。
リージョンはファイルを等間隔で区分けするので、このリージョンを用いることでファイルにおける位置を特定することができる。すなわち、リージョンは、チャンクのインデックスとして機能する。従って、ファイルアクセス処理部22は、ファイルを固定長を有する複数のリージョンで等間隔に区分けすることで、可変長チャンクによって構成されるファイルを固定長化していると言える。
図3に示す例においては、チャンク0,1,2がリージョン0に属し、チャンク3がリージョン1に属している。本実施形態においては、チャンクの位置をその先頭位置で表しているが、これに限定されるものではない。例えば、チャンクの末尾や中央でその位置を表してもよく、適宜変更して実施することができる。
ファイルアクセス処理部22は、ディレクトリテーブル241,エントリテーブル242,チャンクマップテーブル243およびチャンクテーブル244を用いて、ファイル管理を行なう。これらのディレクトリテーブル241,エントリテーブル242,チャンクマップテーブル243およびチャンクテーブル244は、例えば、図1に示すように、管理データベース240に登録されて管理される。
図4は図1に示すディレクトリテーブル241の構成を示す図である。また、図5はディレクトリテーブル241によって示されるファイルやディレクトリの構成を例示する図である。
ディレクトリテーブル241は、ディレクトリ階層を表す管理情報である。図4に示すように、ディレクトリテーブル241は、項目parent,nameおよびinoを対応付けて構成される。parentは、親ディレクトリのinode番号であり、データ型(型)は数値である。inodeは、ファイルシステムにおいてファイルやディレクトリについての情報を記録した管理データである。
nameはエントリの名前であり、ディレクトリ名とファイル名との組合せ(ディレクトリ名/ファイル名)として登録される。nameのデータ型は文字列である。inoは、エントリのinode番号であり、データ型は数値である。
ディレクトリテーブル241は、項目inoをキーとするハッシュテーブルとして構成され、図5に示すように、inoとparentとを用いてリンクをたどることで、指定したinoのレコードを高速に検索することができる。なお、ディレクトリテーブル241を一般的なSQL(Structured Query Language)データベースで実現してもよい。また、ディレクトリテーブル241には、図4に示した以外の項目を備えてもよい。
図6は図1に示すエントリテーブル242の構成を示す図である。
エントリテーブル242は、ディレクトリやファイルのメタデータを表す管理情報である。図6に示すように、エントリテーブル242は、項目ino,mode,nlink,uid,gid,size,atime,mtimeおよびctimeを対応付けて構成されている。
inoは、inode番号を表しディレクトリテーブル241のinoにヒモ付けられる。modeは権限情報を表す。nlinkはハードリンクの数を表し、uidは所有者のユーザIDを表す。gidは所有者のグループIDを表し、sizeはファイルサイズを表す。atimeは、最終アクセス時刻を表し、mtimeは最終更新時刻を表す。また、ctimeは最終状態変更時刻を表す。これらのino,mode,nlink,uid,gid,size,atime,mtimeおよびctimeのデータ型は、いずれも数値である。
エントリテーブル242は、項目inoをキーとするハッシュテーブルとして構成され、これにより、指定したinoのレコードを高速に検索することができる。なお、エントリテーブル242を一般的なSQLデータベースで実現してもよい。また、エントリテーブル242には、図6に示した以外の項目を備えてもよい。
図7は図1に示すチャンクマップテーブル243の構成を示す図である。
チャンクマップテーブル243は、ファイルを構成するチャンクを表す管理情報であり、ファイルがどのようなチャンクで構成されているかを示す。図7に示すように、チャンクマップテーブル243は、項目ino,region,offset,sizeおよびhashを対応付けて構成されている。
inoは、inode番号を表し、エントリテーブル242のinoにヒモ付けられる。regionは、リージョン番号を示す。このregionは、当該チャンクがファイル内においてどのリージョンに含まれる(属する)かを示す。
チャンクマップテーブル243に、管理項目としてこのregionを備えることにより、チャンクに、ファイル内でのリージョン番号が関連付けられる。ファイルアクセス処理部22は、このチャンクマップテーブル243を作成し、更新・管理を行なうことで、ファイルを構成する複数の可変長チャンクを、リージョン毎に管理するブロックデータ管理部として機能するのである。
図3に示す例においては、チャンク0,1,2がリージョン0に属しており、チャンク3がリージョン1に属している。
offsetは、オフセットの値を示し、ファイルの先頭からの位置を示す。sizeは、チャンクサイズを示す。hashは、当該チャンクのハッシュ値であり、チャンクの内容の特定に用いられる。
なお、ino,region,offsetおよびsizeのデータ型は、いずれも数値であり、hashのデータ型はバイト列である。
チャンクマップテーブル243は、項目regionをキーとするハッシュテーブルとして構成され、指定したregionのレコードを高速に検索することができる。なお、チャンクマップテーブル243を一般的なSQLデータベースで実現してもよい。なお、チャンクマップテーブル243には、図7に示した以外の項目を備えてもよい。
図8は図1に示すチャンクテーブル244の構成を示す図である。
チャンクテーブル244は、チャンクを表す管理情報である。図8に示すように、チャンクテーブル244は、項目size,hash,refcntおよびchunkを対応付けて構成されている。
sizeは、そのチャンクのチャンクサイズを示す。hashは、当該チャンクのハッシュ値であり、チャンクの内容の特定に用いられる。このhashは、チャンクマップテーブル243のhashにヒモ付けられる。refcntは、当該チャンクを有するファイルの数を示す。chunkは、チャンクデータの実態(実データ)である。なお、チャンクテーブル244にchunkとしてチャンクの実データを備える代わりに、他の記憶領域にチャンクの実データを格納し、チャンクテーブル244のchunkには、その記憶領域へのポインタ情報等を設定してもよく、種々変形して実施することができる。
なお、size,hashおよびrefcntのデータ型は、いずれも数値であり、chunkのデータ型はバイト列である。
チャンクテーブル244は、項目hashをキーとするハッシュテーブルとして構成され、指定したhushのレコードを高速に検索することができる。なお、チャンクテーブル244を一般的なSQLデータベースで実現してもよい。また、チャンクテーブル244には、図8に示した以外の項目を備えてもよい。そして、重複排除処理部21は、このチャンクテーブル244を用いることで、重複排除処理を実現する。
ファイルアクセス処理部22によるクラウドストレージ51へのライト処理について説明する。
ファイルアクセス処理部22によるファイルデータの書き込みは、クラウドストレージ51に対する所定サイズのライト要求を複数回繰り返して行なうことで実現され、最後にファイルのフラッシュやクローズが行なわれる。
図9は実施形態の一例としてのクラウドストレージシステム1におけるライトデータを説明するための図、図10は実施形態の一例としてのクラウドストレージシステム1におけるライトデータの結合を説明するための図である。
図9に示すように、1回のライト要求で受け渡されるライトデータが、複数のチャンクに分割される場合がある。ライトデータを、その先頭から順番に複数のチャンクに分割した後に残る余りの部分(余りデータ)が1つのチャンクとして分割されるとは限らない。ファイルアクセス処理部22は、このように1つのチャンクとすることができない余りデータを、次のライト要求のライトデータの先頭部分と結合することで1つのチャンクを生成する。
このような余りデータの結合処理は、書き込み処理性能の劣化に繋がる。そのため、ファイルアクセス処理部22は、図10に示すように、複数回分のライトデータをバッファメモリ13上にキャッシュし、できるだけ大きいサイズでチャンキング処理することにより、結合処理の回数を減らして処理性能の劣化を抑制する。
図11はライト要求に付加される引数を説明するための図である。
この図11に示すように、ライト要求には、例えば、ino, offset, sizeおよびdataが引数として付加される。すなわち、ライト要求をwrite(ino, offset, size, data)と表すことができる。
引数inoは、ライト要求に割り当てられたinode番号である。offsetは、データ(data)を書き込むファイルの位置(ファイル先頭からのバイト数)を表す。sizeは、ライトデータ(data)のサイズ(バイト)であり、dataはライトデータそのものである。offsetやsizeは、ファイルにおけるデータアクセス(ライト)対象の位置を示す位置情報として用いられる。
重複排除処理部21は、チャンク単位で重複排除処理を行なう。例えば、重複排除処理部21クラウドストレージ51にデータファイルのライトを行なう際に、クラウドストレージ51に既に同一のチャンクが格納されている場合には、当該チャンクをクラウドストレージ51に格納することを阻止することで重複排除を実現する。
重複排除処理部21は、複数のチャンク間において重複排除を実行し、重複排除を実行して得られたチャンクをクラウドストレージ51に記憶させる。
重複排除処理部21は、チャンクのFP(フィンガープリント:Finger Print)、すなわち、当該チャンクに含まれるデータのハッシュ値を相互に比較することによりチャンクの一致/不一致を判断し、これによりチャンクの重複を判断する。また、重複排除処理部21は、チャンクのFPをクラウドストレージ51に格納されている既存の各チャンクのFPと比較することでもチャンクの重複を判断する。すなわち、重複排除処理部21は、重複記憶判定を行なう。
本実施形態においては、重複排除処理部21は、FPが同一のチャンクは同一のデータブロックであると判断する。
重複排除処理部21は、例えば、ファイルをクラウドストレージ51に格納する際に、そのファイルを構成する個々のチャンクについて、それぞれ、チャンクテーブル244を参照して複記憶判定を行なう。
チャンクテーブル244は、前述の如く、各チャンクのhashを備えており、このhashが、チャンクを特定するFP情報として機能する。すなわち、チャンクテーブル244は、重複排除処理部21が重複排除に用いる重複排除情報として機能する。
重複排除処理部21は、チャンクテーブル244のhashを用いることによりチャンクの一致/不一致を判断し、これによりチャンクの重複を判断する。このhashは、既知の種々の手法を用いて実現することができ、その詳細な説明は省略する。
重複排除処理部21は、チャンクテーブル244(重複排除情報)を参照することで、各チャンクと同一のチャンクがクラウドストレージ51に記憶されているか否かを判定する。
また、重複排除処理部21は、例えば、ファイルをクラウドストレージ51に格納する際に、処理対象のチャンクと同一のチャンクがクラウドストレージ51に格納されていると判断した場合には、その処理対象のチャンクを廃棄し、その処理対象チャンクのクラウドストレージ51における重複保存を抑止する。すなわち、重複排除処理部21は、同一のhashのデータブロックを一のクラウドストレージ51においては1つしか記憶させない、重複排除(デデュープ:De-dupulication)を実現する。
重複排除処理部21は、クラウドストレージ51中には1つだけ記憶させたチャンクを複数のファイルで共用することにより、ファイルの記憶領域を削減する。すなわち、重複排除処理部21は、重複排除エンジンとして機能する。
なお、重複排除には、例えば、ファイルのデータを重複排除処理部21で比較しながらクラウドストレージ51に記憶するインライン方式を用いることができる。なお、これに限定されるものではなく、例えば、いわゆるポストプロセス方式やクライアント方式等の他の手法を用いてもよく、適宜変更して実施することができる。
また、重複排除処理部21は、チャンク毎に行なったhashやチャンク構成の作成等の結果を、チャンクテーブル244に保存する。
さらに、重複排除処理部21は、クラウドストレージ51からファイルを読み出す際には、そのクラウドストレージ51に記憶されたボリュームについてのチャンクテーブル244を読み出す。
重複排除処理部21は、データの読み出し時において、チャンクからボリュームを復元する。重複排除処理部21は、例えば、チャンクテーブル244を参照し、クラウドストレージ51から読み出したチャンクを用いてファイルの復元を行なう。すなわち、重複排除処理部21は、チャンクテーブル244に従って、チャンクの複写等を行なうことによりファイルを作成する。
なお、チャンクテーブル244に基づくチャンクを用いたファイルの復元方法は、既知の種々の手法を用いて実現され、その詳細な説明は省略する。
(B)動作
上述の如く構成された実施形態の一例としてのクラウドストレージシステム1におけるクラウドバックアップゲートウェイ10における処理を説明する。
(a)ファイルシステムとしてのライト処理
図12は実施形態の一例としてのクラウドバックアップゲートウェイ10におけるファイルシステムとしてのライト処理の概要を説明するためのフローチャート(ステップA1〜A4)である。
以下においては、新規にファイルを作成する場合の処理を示す。
ステップA1において、ファイルアクセス処理部22は、ディレクトリテーブル241のレコードを作成し、保存する。
ファイルアクセス処理部22は、新規に作成するファイルに対してinode番号を新規に割り当てる。
ステップA2において、ファイルアクセス処理部22は、エントリテーブル242のレコードを作製し、保存する。
ステップA3において、ファイルアクセス処理部22は、クラウドストレージ51に対するデータ書き込みを行なう。
ここで、ファイルアクセス処理部22は、可変長チャンキングによるチャンク作成と保存とを行なう。また、併せて、ファイルアクセス処理部22は、チャンクマップテーブル243およびチャンクテーブル244の作成も行なう。
ファイルアクセス処理部22は、以下の処理(1)〜(3)に従って、ライト要求を処理する。
図13〜図15は、それぞれキャッシュ用バッファメモリ13におけるライトデータの格納状態を示す図である。
(1)クラウドバックアップゲートウェイ10において、バックアップサーバ53から最初のライト要求を受信すると、ファイルアクセス処理部22は、図13に示すように、キャッシュ用バッファメモリ13におけるキャッシュメモリ領域13aの先頭位置にライトデータ(data)をsize分コピーする。 なお、sizeはライト要求に引数として付加されていた値である。
すなわち、size分のライトデータ(data)をコピーして、キャッシュ用バッファメモリ13におけるキャッシュメモリ領域13aの先頭位置に格納する。
また、ファイルアクセス処理部22は、offsetにsizeを加算した値(offset+size)をメモリ12等の所定の領域に記憶する。
(2)ファイルアクセス処理部22は、次のライト要求を受信すると、offsetとoffset+sizeとを比較する。
比較の結果、offsetとoffset+sizeとが一致した場合には、ファイルアクセス処理部22は、処理中のライト要求が上記処理(1)と連続したライト要求であると判断し、図14に示すように、キャッシュメモリ領域13aにおける、前回格納したデータに後続する位置に、ライトデータ(data)を格納する。
ここで、キャッシュメモリ領域13aにライトデータを格納できるだけの空きがない場合には、ファイルアクセス処理部22は、キャッシュメモリ領域13aにあるデータを、可変長チャンキング処理を行なった上でクラウドストレージ51に移動させる。
また、この可変長チャンキング処理により余りデータが生じた場合には、ファイルアクセス処理部22は、図15に示すように、この余りデータをキャッシュメモリ領域13aの先頭位置に移動させる。
そして、ファイルアクセス処理部22は、キャッシュメモリ領域13aに空きがなくて格納できなかったライトデータを、キャッシュメモリ領域13aにおける、余りデータに後続する位置に格納する。
一方、比較の結果、offsetとoffset+sizeとが不一致である場合には、ファイルアクセス処理部22は、新たに受信したライト要求は、先に処理したライト要求とは異なる(不連続の)ものであると判断する。ファイルアクセス処理部22は、キャッシュメモリ領域13aにあるデータを、可変長チャンキング処理を行なった上でクラウドストレージ51に移動させる。また、ファイルアクセス処理部22は、offsetにsizeを加算した値(offset+size)をメモリ12等の所定の領域に記憶する。
(3)ファイルアクセス処理部22は、ファイルのフラッシュ/クローズを行なう。すなわち、ファイルアクセス処理部22は、キャッシュ用バッファメモリ13に格納されているデータを、可変長チャンキング処理を行なった上でクラウドストレージ51に移動させる。なお、ファイルアクセス処理部22による可変長チャンキング処理の詳細については、図18等を用いて後述する。
また、ファイルアクセス処理部22は、可変長チャンキングを行なうことにより、キャッシュメモリ領域13aにおいて余った余りデータを、そのままチャンクとして扱い、クラウドストレージ51に保存する。
その後、ステップA4において、ファイルアクセス処理部22は、エントリテーブル242のレコード更新および保存を行なう。具体的には、ファイルアクセス処理部22は、サイズ情報(size)や時刻情報(atime)等の更新を行なう。
(b)ライト処理
次に、ファイルアクセス処理部22によるライト処理の詳細について説明する。
ファイルアクセス処理部22は、キャッシュ用バッファメモリ13上のデータに対して、可変長チャンキングを行なうことでチャンク(可変長チャック)を作成し保存する。
クラウドバックアップゲートウェイ10は、キャッシュ用バッファメモリ13に関して、offsetとsizeとの2つの入力情報を管理する。
ここで、入力情報offsetは、キャッシュ用バッファメモリ13内のデータを書き込むファイルの位置(ファイル先頭からのバイト数)である。また、入力情報sizeは、 キャッシュ用バッファメモリ13内の有効なデータのサイズ(バイト)である。
図16は実施形態の一例としてのクラウドストレージシステム1におけるファイルアクセス処理部22によるライト処理を説明するための図である。
ライト要求が既存ファイルに対する追記である場合、このoffsetの直前のチャンクが存在することになるが、そのチャンクは、可変長チャンキングとして余ったデータ(余りデータ)である可能性がある。なお、余りデータとは、チャンクとして区切りよく(きれいに)分割されていないデータを意味する。
また、ライト要求が既存ファイルに対する更新である場合、このoffsetとsizeに重なるチャンクが存在する。
このような既存チャンクは、新しいデータと結合することでチャンク境界が変化する可能性があるため、バッファメモリ上にコピーする必要がある。
図16に示すように、ファイルアクセス処理部22は、余りデータに後続させてライトデータを追加する。
上述の如く構成された実施形態の一例としてのクラウドストレージシステム1におけるライト処理の詳細を、図18を参照しながら、図17に示すフローチャート(ステップB1〜B4)に従って説明する。なお、図18は本クラウドストレージシステム1におけるライト処理を説明するための図である。
図18においては、可変長チャンキングされたファイルに、オフセット700からサイズ2000バイトのデータ(ライトデータ)をライトする例について示す。
ステップB1において、ファイルアクセス処理部22は、ライトデータの先頭に関連するチャンク情報の習得を行なう。
具体的には、先ず、ライト要求に引数として付加されたoffsetをリージョンサイズで除算した値(offset÷リージョンサイズ)を算出し、その商の整数部分をリージョン番号として判断することで、ライトデータの先頭に対応するチャンクが属するリージョンを特定する。
図18に示す例においては、ファイルアクセス処理部22は、以下の式を算出することで、ライトデータの先頭に対応するチャンクが属するリージョン番号を取得する。以下の式においては、商の整数部分がリージョン番号として用いられる。
700(オフセット)÷1000(リージョンサイズ)≒0(=リージョン0)
これにより、ライトデータの先頭部分に対応するチャンクは、リージョン0に属していることがわかる。
このように、ファイルアクセス処理部22は、ライト要求に含まれる位置情報(offset&size)に基づいて、ファイルにおける、ライトデータの先頭が書き込まれるチャンク(第1の可変長ブロックデータ)が属するリージョン(第1のリージョン,第1の検索単位領域)を特定する。
次に、ファイルアクセス処理部22は、チャンクマップテーブル243を参照して、先に特定したリージョン番号を有するレコード(チャンク)を取得する。図18に示す例においては、チャンク0,1,2が、リージョン0に属する。
その後、ファイルアクセス処理部22は、取得した各レコードのoffsetおよびsizeと、入力されたライトデータ(入力情報)のoffsetおよびsizeとを比較する。そして、ファイルアクセス処理部22は、offsetおよびsizeが、入力情報のoffsetおよびsizeに相当するレコードを選択する。
図18に示す例においては、ライトデータのオフセットが700であるので、オフセット500〜800であるチャンク1が、このライトデータと部分的に重なる。また、チャンク0のオフセットは0〜500であるので、ライトデータとは重ならない。ライトデータは、オフセット700を始点として、2000バイトのデータサイズを有するので、オフセット800を始点とし、サイズ700のチャンク2の全てがライトデータに重合する。すなわち、チャンク2はライトデータによって全体が上書き(変更)される。
従って、ファイルアクセス処理部22は、ライトデータの先頭に関連するチャンクとして、チャンク1を特定する。このように、ファイルアクセス処理部22は、特定した第1のリージョンに含まれるチャンクに対してオフセット検索を行なうことで、ライトデータの先頭に関連するチャンクを検索する。
ステップB2において、ファイルアクセス処理部22は、ライトデータの末尾に関連するチャンク情報の習得を行なう。ファイルアクセス処理部22は、ステップB1と同様の手法で、ライトデータの末尾に関連するチャンクを特定する。
図18に示す例においては、ファイルアクセス処理部22は、以下の式を算出することで、ライトデータの末尾に対応するチャンクが属するリージョン番号を取得する。
なお、ファイルアクセス処理部22は、“(offset+size)÷リージョンサイズ”を算出することでライトデータの末尾に関連するチャンクのリージョン(第2のリージョン)を求める。ファイルアクセス処理部22は以下の式を算出する。以下の式においては、商の整数部分がリージョン番号として用いられる。
2700(オフセット)÷1000(リージョンサイズ)≒2(=リージョン2)
これにより、ライトデータの末尾部分に対応するチャンクは、リージョン2に属していることがわかる。
このように、ファイルアクセス処理部22は、ライト要求に含まれる位置情報(offset&size)に基づいて、ファイルにおける、ライトデータの末尾が書き込まれるチャンク(第2の可変長ブロックデータ)が属するリージョン(第2のリージョン,第2の検索単位領域)を特定する。
そして、ファイルシステム処理部22は、ファイルに対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報(offset&size)に基づいて、アクセス対象の可変長チャンクが属するリージョンを特定する検索単位領域特定部として機能するのである。
また、図18に示す例においては、ライトデータのオフセットが700であり、且つ、データサイズが2000バイトである。
従って、オフセット2700〜3000のチャンク6が、このライトデータの末尾と部分的に重なる。また、チャンク5のオフセットは2300〜2700であるので、この「チャンク5の全てがライトデータと重合する。ライトデータは、オフセット700を始点として、2000バイトのデータサイズを有するので、オフセット2300を始点とし、サイズ400のチャンク5の全てがライトデータに重合する。すなわち、チャンク5はライトデータによって全体が上書き(変更)される。
従って、ファイルアクセス処理部22は、ライトデータの末尾に関連するチャンクとして、チャンク6を特定する。このように、ファイルアクセス処理部22は、特定した第2のリージョンに含まれるチャンクに対してオフセット検索を行なうことで、ライトデータの末尾に関連するチャンクを検索する。
このように、ファイルアクセス処理部22は、特定したリージョンに属する可変長チャンクを対象に、データアクセス対象の可変長チャンクを検索するブロック検索部として機能するのである。
ステップB3において、ファイルアクセス処理部22は、ライトデータに、ステップB1,B2でそれぞれ特定した、ライトデータの先頭および末尾にそれぞれ重なる既存のチャンク(既存チャンク)を結合する。
すなわち、ファイルアクセス処理部22は、チャンクマップテーブル243を参照して、ステップB1で求めた、ライトデータの始点(先頭)に重なるチャンクのhashを取得する。ファイルアクセス処理部22は、取得したhashに基づいてチャンクテーブル244を参照し、このhashと同じ値を有するレコードのchunk(チャンクデータ)を第1の既存チャンク(第1の可変長ブロックデータ)として読み出す。
また、ファイルアクセス処理部22は、チャンクマップテーブル243を参照して、ステップB2で求めた、ライトデータの末尾に重なるチャンクのhashを取得する。ファイルアクセス処理部22は、取得したhashに基づいてチャンクテーブル244を参照し、このhashと同じ値を有するレコードのchunk(チャンクデータ)を第2の既存チャンク(第2の可変長ブロックデータ)として読み出す。
ファイルアクセス処理部22は、読み出した第1の既存チャンクを、ライトデータの先頭に、また、第2の既存チャンクをライトデータの末尾にそれぞれ結合することで、処理対象ファイルに対する更新データを作成する。
図19は実施形態の一例としてのクラウドストレージシステム1におけるライトデータへの既存チャンクの結合方法を説明するための図である。
ファイルアクセス処理部22は、キャッシュ用バッファメモリ13を用いて、ライトデータに既存チャンクを結合する。
図19においては、キャッシュメモリ領域13aにライトデータが格納され、ライトデータの先頭に既存チャンク1(チャンク1)を、また、ライトデータの末尾に既存チャンク6(チャンク6)を、それぞれ結合する例を示す。
ライトデータに既存チャンクを結合するに際して、ライトデータと既存チャンクとで重なる部分については、新しいデータであるライトデータを用いる。
そして、このように、ライトデータの先頭と末尾とにそれぞれ既存チャンクが結合されたデータ(更新データ)が、可変長チャンキングの処理対象となる。
その後、ステップB4において、ファイルアクセス処理部22は、キャッシュ用バッファメモリ13に格納された、可変長チャンキングの処理対象のデータをチャンク分割する。また、ファイルアクセス処理部22は、チャンクマップテーブル243およびチャンクテーブル244の各レコードを生成し、保存する。
具体的には、ファイルアクセス処理部22は、キャッシュ用バッファメモリ13のデータをチャンク分割する。ファイルアクセス処理部22は、生成したチャンクデータに基づき、チャンクのオフセット(offset),サイズ(size),リージョン番頭(region)およびハッシュ値(hash)をそれぞれ求める。
なお、リージョン番号は、offset÷リージョンサイズを算出し、その商の整数値により求められる。
ファイルアクセス処理部22は、求めた各値を用いて、例えば、チャンクマップテーブル243のレコードを作成し、保存する。
また、ここで、重複排除処理部21は、生成したチャンクのhashに基づいてチャンクテーブル244を参照し、チャンクテーブル244からhashに対応するレコードを取得できるか否かを確認する。
チャンクテーブル244から同一のhashのレコードを取得できない場合には、新規チャンクとして、チャンクテーブル244にレコードを作成して保存する。
また、チャンクテーブル244から同一のhashのレコードを取得できた場合には、重複排除処理部21は、チャンクテーブル244における、取得したレコードのrefcntを1加算(インクリメント)して、チャンクテーブル244の当該レコードを更新する。重複排除処理部21は、チャンクテーブル244に同一のhashのレコードが既に格納されているので、重複排除のために生成したチャンクのhashは廃棄する。
このようにして、重複排除処理部21は、ファイルアクセス処理部22によって可変長チャンキングが行なわれた各チャンクについて、重複排除処理を行なう。
また、このように重複排除処理が行なわれた後の更新データを用いてファイルの更新が行なわれる。従って、ファイルアクセス処理部22は、更新データでファイルを部分的に置換するライト処理部として機能するのである。
(c)リード処理
次に、実施形態の一例としてのクラウドストレージシステム1におけるリード処置について説明する。
図20はリード要求の引数を示す図である。リード要求には、図20に示すように、ino,offset,sizeおよびdataが引数として付加される。すなわち、リード要求をread(ino, offset, size, data)と表すことができる。
なお、引数inoは、リード要求に割り当てられたinode番号である。offsetは、リードデータ(data)を読み出すファイルの位置(ファイル先頭からのバイト数)を表す。sizeは、リードするデータ(data)のサイズ(バイト)であり、dataはリードデータを格納する領域を示す。offsetやsizeは、ファイルにおけるデータアクセス(リード)対象の位置を示す位置情報として用いられる。
実施形態の一例としてのクラウドストレージシステム1におけるリード処理を、図22を参照しながら、図21に示すフローチャート(ステップC1〜C4)に従って説明する。なお、図22はリード処理を説明するための図である。
図22においては、可変長チャンキングされたファイルに、offset700からsize2000バイトのデータ(リードデータ)をリードする例について示す。
ステップC1において、ファイルアクセス処理部22は、リード要求範囲の先頭に関連するチャンク情報を取得する。
具体的には、先ず、リード要求に引数として付加されたoffsetをリージョンサイズで除算した値(offset÷リージョンサイズ)を算出し、その商の整数部分をリージョン番号として判断することで、リード要求範囲の先頭部分に対応するチャンクが属するリージョンを特定する。
図22に示す例においては、ファイルアクセス処理部22は、以下の式を算出することで、リード要求範囲の先頭に対応するチャンクが属するリージョン番号を取得する。以下の式においては、商の整数部分がリージョン番号として用いられる。
700(オフセット)÷1000(リージョンサイズ)≒0(=リージョン0)
これにより、リード要求範囲の先頭部分に対応するチャンクは、リージョン0に属していることがわかる。
このように、ファイルアクセス処理部22は、リード要求に含まれる位置情報(offset&size)に基づいて、ファイルにおける、リード範囲の先頭となるチャンク(第1の可変長ブロックデータ)が属するリージョン(第1のリージョン,第1の検索単位領域)を特定する。
次に、ファイルアクセス処理部22は、チャンクマップテーブル243を参照して、先に特定したリージョン番号を有するレコード(チャンク)を取得する。図22に示す例においては、チャンク0,1,2が、リージョン0に属する。
その後、ファイルアクセス処理部22は、取得した各レコードのoffsetおよびsizeと、入力されたリード要求にかかるデータ(入力情報)のoffsetおよびsizeとを比較する。そして、ファイルアクセス処理部22は、offsetおよびsizeが、入力情報のoffsetおよびsizeに相当するレコードを選択する。
図22に示す例においては、リードデータのオフセットが700であるので、オフセット500〜800のチャンク1にリードデータの範囲が重なる。また、チャンク0のオフセットは0〜500であるので、リードデータの範囲とは重ならない。このチャンク0のように、重なるレコード(図22に示す例ではチャンク1)よりも前のレコードは不要である。
リード要求にかかるデータは、オフセット700を始点として、2000バイトのデータサイズを有するので、オフセット800を始点とし、サイズ700のチャンク2の全てがリードデータの範囲に重合する。
従って、ファイルアクセス処理部22は、リード要求範囲の先頭に関連するチャンクとして、チャンク1を特定する。このように、ファイルアクセス処理部22は、特定した第1のリージョンに含まれるチャンクに対してオフセット検索を行なうことで、リードデータの先頭に関連するチャンクを検索する。
ステップC2において、ファイルアクセス処理部22は、リード要求範囲の末尾に関連するチャンク情報を取得する。
ファイルアクセス処理部22は、ステップB1と同様の手法で、リード要求範囲の末尾に関連するチャンクを特定する。
図22に示す例においては、ファイルアクセス処理部22は、以下の式を算出することで、リード要求範囲の領域のデータの末尾に対応するチャンクが属するリージョン番号を取得する。
なお、ファイルアクセス処理部22は、“(offset+size)÷リージョンサイズ”を算出することでリード要求範囲の末尾に関連するチャンクのリージョン(第2のリージョン)を求める。ファイルアクセス処理部22は以下の式を算出する。以下の式においては、商の整数部分がリージョン番号として用いられる。
2700(オフセット)÷1000(リージョンサイズ)≒2(=リージョン2)
これにより、リード要求範囲の末尾部分に対応するチャンクは、リージョン2に属していることがわかる。
このように、ファイルアクセス処理部22は、リード要求に含まれる位置情報(offset&size)に基づいて、ファイルにおける、リードデータの末尾となるチャンク(第2の可変長ブロックデータ)が属するリージョン(第2のリージョン,第2の検索単位領域)を特定する。
そして、ファイルシステム処理部22は、ファイルに対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報(offset&size)に基づいて、アクセス対象の可変長チャンクが属するリージョンを特定する検索単位領域特定部として機能するのである。
また、図22に示す例においては、リード要範囲のoffsetオフセット(offset)が700であり、且つ、データサイズ(size)が2000バイトである。
従って、オフセット2700〜3000のチャンク6が、このリード要求範囲の末尾と部分的に重なる。ファイルアクセス処理部22は、リード要求範囲の末尾と重なるチャンク6を選択する。
このように、ファイルアクセス処理部22は、特定した第2のリージョンに含まれるチャンクに対してオフセット検索を行なうことで、リードデータの末尾に関連するチャンクを検索する。
このように、ファイルアクセス処理部22は、特定したリージョンに属する可変長チャンクを対象に、データアクセス対象の可変長チャンクを検索するブロック検索部として機能するのである。
ステップC3において、ファイルアクセス処理部22は、リード要求範囲の先頭に重なるチャンクと、その末尾に重なるチャンクとの間のチャンク情報を取得する。
ファイルアクセス処理部22は、リード要求範囲の先頭に対応するリージョン(先頭リージョン)と、リード要求範囲の末尾に対応するリージョン(末尾リージョン)とが同一でなく、かつ、隣接していない場合、先頭リージョンと末尾リージョンとの間のすべてのリージョン番号を求める。
図22に示す例においては、先頭リージョンがリージョン0であり、末尾リージョンがリージョン2である。従って、これらの先頭リージョンと末尾リージョンとの間にあるリージョン(中間リージョン)はリージョン1である。
ファイルアクセス処理部22は、チャンクマップテーブル243を参照して、中間リージョンのリージョン番号(region)を持つレコードを取得する。
図22に示す例においては、ファイルアクセス処理部22は、中間リージョンのリージョン番号(region)を持つレコードとして、チャンク3,4のレコードを取得する。
ステップC4において、ファイルアクセス処理部22は、リードデータの構築を行なう。
具体的には、ファイルアクセス処理部22は、チャンクテーブル244を参照して、上記C1〜C3の各処理で取得した全てのレコードのhashと同じ値を持つレコードを取得し、チャンクデータを読み取る。そして、ファイルアクセス処理部22は、先頭と末尾との各チャンクについてリード要求範囲をはみ出る部分を除いて、キャッシュ用バッファメモリ13のリードデータ格納領域にコピーする。
従って、ファイルアクセス処理部22は、ファイルにおける、第1の可変長チャンクから第2の可変長チャンクまでの範囲内から、リードデータを抽出するリード処理部として機能するのである。
(C)効果
このように、実施形態の一例としてのクラウドストレージシステム1によれば、ファイルアクセス処理部22が可変長チャンキングを行ない、重複排除処理部21が、可変長チャンキングが行なわれた各チャンクについて、重複排除処理を行なう。
これにより、ライト要求等により、例えば、一部のチャンクに1バイト分のデータの増加等が行なわれた場合であっても、他のチャンクへの影響が及ぶことがなく、重複排除を効率よく行なうことができる。
ファイルアクセス処理部22が、可変長チャンキングされたファイルを、ファイルアクセス処理部22が、固定長の複数のリージョン(領域)に区分けする。
そして、データアクセス要求(ライト要求もしくはリード要求)が行なわれた場合に、ファイルアクセス処理部22が、先ず、アクセス対象のリージョンの特定を行ない、この特定されたリージョンに属するチャンクに対して検索を行なうことで、データアクセス先のチャンクを短時間で特定することができる。従ってデータアクセス性能を向上させることができる。
データアクセス先のチャンクを特定するために、可変長チャンキングが行なわれたファイルの先頭から順番に、チャンクサイズの累加等の演算処理を繰り返し行なう必要がなく、効率的にデータアクセス先のチャンクを特定することができる。
(D)その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
上述した実施形態においては、クラウドバックアップゲートウェイ10が、CPU11,メモリ12および記憶装置14を備えた情報処理装置として構成され、CPU11がデータ処理プログラムを実行することで、その機能を実現しているが、これに限定されるものではない。例えば、バックアップサーバ53や業務サーバ52に備えられたプロセッサがデータ処理プログラムを実行することで、その機能を実現してもよく、種々変形して実施することができる。また、上述した重複排除に加えて、ファイルに対してデータ圧縮を行なってもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理するブロックデータ管理部と、
前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定する検索単位領域特定部と、
特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索するブロック検索部と
を備えることを特徴とする、データ処理装置。
(付記2)
前記データアクセスとして、前記データ列にライトデータをライトする場合に、
前記検索単位領域特定部が、ライト要求に含まれる前記位置情報に基づいて、前記データ列における、前記ライトデータの先頭が書き込まれる第1の可変長ブロックデータが属する第1の検索単位領域と、前記ライトデータの末尾が書き込まれる第2の可変長ブロックデータが属する第2の検索単位領域とを特定し、
前記ブロック検索部が、前記第1の検索単位領域から前記第1の可変長ブロックデータを抽出するとともに、前記第2の検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記ライトデータの先頭に前記第1の可変長ブロックを、前記ライトデータの末尾に前記第2の可変長ブロックを、それぞれ結合することで更新データを作成し、当該更新データで前記データ列を部分的に置換するライト処理部
を備えることを特徴とする、付記1記載のデータ処理装置。
(付記3)
前記更新データを複数の可変長ブロックデータに分割し、各可変長ブロックデータについて重複排除処理を行なう重複排除処理部
を備えることを特徴とする、付記2記載のデータ処理装置。
(付記4)
前記データアクセスとして、前記データ列からリードデータをリードする場合に、
前記検索単位領域特定部が、リード要求に含まれる前記位置情報に基づいて、前記データ列における、前記リードデータの先頭となる第1の可変長ブロックデータが属する第1の検索単位領域と、前記リードデータの末尾となる第2の可変長ブロックデータが属する第2の検索単位領域とを特定し、
前記ブロック検索部が、前記第1の検索単位領域から前記第1の可変長ブロックデータを抽出するとともに、前記第2の検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記データ列における、前記第1の可変長ブロックから前記第2の可変長ブロックまでの範囲内から、前記リードデータを抽出するリード処理部
を備えることを特徴とする、付記1〜3のいずれか1項に記載のデータ処理装置。
(付記5)
複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理し、
前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定し、
特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索する
処理をコンピュータに実行させることを特徴とする、データ処理プログラム。
(付記6)
前記データアクセスとして、前記データ列にライトデータをライトする場合に、
ライト要求に含まれる前記位置情報に基づいて、前記データ列における、前記ライトデータの先頭が書き込まれる第1の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第1の可変長ブロックデータを抽出し、
前記位置情報に基づいて、前記データ列における、前記ライトデータの末尾が書き込まれる第2の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記ライトデータの先頭に前記第1の可変長ブロックを、前記ライトデータの末尾に前記第2の可変長ブロックを、それぞれ結合することで、更新データを作成し、当該更新データで前記データ列を部分的に置換する
処理を、前記コンピュータに実行させることを特徴とする、付記5記載のデータ処理プログラム。
(付記7)
前記更新データを複数の可変長ブロックデータに分割し、各可変長ブロックデータについて重複排除処理を行なう
処理を、前記コンピュータに実行させることを特徴とする、付記6記載のデータ処理プログラム。
(付記8)
前記データアクセスとして、前記データ列からリードデータをリードする場合に、
リード要求に含まれる前記位置情報に基づいて、前記データ列における、前記リードデータの先頭となる第1の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第1の可変長ブロックデータを抽出し、
前記位置情報に基づいて、前記データ列における、前記リードデータの末尾となる第2の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記データ列における、前記第1の可変長ブロックから前記第2の可変長ブロックまでの範囲内から、前記リードデータを抽出する
処理を、前記コンピュータに実行させることを特徴とする、付記5〜7のいずれか1項に記載のデータ処理プログラム。
(付記9)
複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理し、
前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定し、
特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索する
ことを特徴とする、データ処理方法。
(付記10)
前記データアクセスとして、前記データ列にライトデータをライトする場合に、
ライト要求に含まれる前記位置情報に基づいて、前記データ列における、前記ライトデータの先頭が書き込まれる第1の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第1の可変長ブロックデータを抽出し、
前記位置情報に基づいて、前記データ列における、前記ライトデータの末尾が書き込まれる第1の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記ライトデータの先頭に前記第2の可変長ブロックを、前記ライトデータの末尾に前記第2の可変長ブロックを、それぞれ結合することで、更新データを作成し、当該更新データで前記データ列を部分的に置換する
ことを特徴とする、付記9記載のデータ処理方法。
(付記11)
前記更新データを複数の可変長ブロックデータに分割し、各可変長ブロックデータについて重複排除処理を行なう
ことを特徴とする、付記10記載のデータ処理方法。
(付記12)
前記データアクセスとして、前記データ列からリードデータをリードする場合に、
リード要求に含まれる前記位置情報に基づいて、前記データ列における、前記リードデータの先頭となる第1の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第1の可変長ブロックデータを抽出し、
前記位置情報に基づいて、前記データ列における、前記リードデータの末尾となる第2の可変長ブロックデータが属する検索単位領域を特定して、当該検索単位領域から前記第2の可変長ブロックデータを抽出し、
前記データ列における、前記第1の可変長ブロックから前記第2の可変長ブロックまでの範囲内から、前記リードデータを抽出する
ことを特徴とする、付記9〜11のいずれか1項に記載のデータ処理方法。
1 クラウドストレージシステム
11 CPU
12 メモリ
13 キャッシュ用バッファメモリ
13a キャッシュメモリ領域
13b 最大チャンクサイズ領域
14 記憶装置
21 重複排除処理部
22 ファイルアクセス処理部
50 クラウド
51 クラウドストレージ
52 業務サーバ
53 バックアップサーバ
240 管理データベース
241 ディレクトリテーブル
242 エントリテーブル
243 チャンクマップテーブル
244 チャンクテーブル

Claims (6)

  1. 複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理するブロックデータ管理部と、
    前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定する検索単位領域特定部と、
    特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索するブロック検索部と
    を備えることを特徴とする、データ処理装置。
  2. 前記データアクセスとして、前記データ列にライトデータをライトする場合に、
    前記検索単位領域特定部が、ライト要求に含まれる前記位置情報に基づいて、前記データ列における、前記ライトデータの先頭が書き込まれる第1の可変長ブロックデータが属する第1の検索単位領域と、前記ライトデータの末尾が書き込まれる第2の可変長ブロックデータが属する第2の検索単位領域とを特定し、
    前記ブロック検索部が、前記第1の検索単位領域から前記第1の可変長ブロックデータを抽出するとともに、前記第2の検索単位領域から前記第2の可変長ブロックデータを抽出し、
    前記ライトデータの先頭に前記第1の可変長ブロックを、前記ライトデータの末尾に前記第2の可変長ブロックを、それぞれ結合することで更新データを作成し、当該更新データで前記データ列を部分的に置換するライト処理部
    を備えることを特徴とする、請求項1記載のデータ処理装置。
  3. 前記更新データを複数の可変長ブロックデータに分割し、各可変長ブロックデータについて重複排除処理を行なう重複排除処理部
    を備えることを特徴とする、請求項2記載のデータ処理装置。
  4. 前記データアクセスとして、前記データ列からリードデータをリードする場合に、
    前記検索単位領域特定部が、リード要求に含まれる前記位置情報に基づいて、前記データ列における、前記リードデータの先頭となる第1の可変長ブロックデータが属する第1の検索単位領域と、前記リードデータの末尾となる第2の可変長ブロックデータが属する第2の検索単位領域とを特定し、
    前記ブロック検索部が、前記第1の検索単位領域から前記第1の可変長ブロックデータを抽出するとともに、前記第2の検索単位領域から前記第2の可変長ブロックデータを抽出し、
    前記データ列における、前記第1の可変長ブロックから前記第2の可変長ブロックまでの範囲内から、前記リードデータを抽出するリード処理部
    を備えることを特徴とする、請求項1〜3のいずれか1項に記載のデータ処理装置。
  5. 処理装置とメモリとを備えたコンピュータにおいて、
    複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理し、
    前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定し、
    特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索する
    処理を前記処理装置に実行させることを特徴とする、データ処理プログラム。
  6. 複数の可変長ブロックデータからなるデータ列を、所定長の複数の検索単位領域に区分けし、各可変長ブロックデータを前記検索単位領域毎に管理し、
    前記データ列に対してデータアクセスを行なうに際して、データアクセス要求に含まれる位置情報に基づいて、アクセス対象の可変長ブロックデータが属する検索単位領域を特定し、
    特定した前記検索単位領域に属する前記可変長ブロックデータを対象に、データアクセス対象の可変長ブロックデータを検索する
    ことを特徴とする、データ処理方法。
JP2016239179A 2016-12-09 2016-12-09 データ処理装置,データ処理プログラムおよびデータ処理方法 Active JP6841024B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016239179A JP6841024B2 (ja) 2016-12-09 2016-12-09 データ処理装置,データ処理プログラムおよびデータ処理方法
US15/826,775 US20180165345A1 (en) 2016-12-09 2017-11-30 Data processing device, computer-readable recording medium having recorded therein data processing program and data processing method
EP17204619.5A EP3333730A1 (en) 2016-12-09 2017-11-30 Data processing device, data processing program and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016239179A JP6841024B2 (ja) 2016-12-09 2016-12-09 データ処理装置,データ処理プログラムおよびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2018097450A true JP2018097450A (ja) 2018-06-21
JP6841024B2 JP6841024B2 (ja) 2021-03-10

Family

ID=60569672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016239179A Active JP6841024B2 (ja) 2016-12-09 2016-12-09 データ処理装置,データ処理プログラムおよびデータ処理方法

Country Status (3)

Country Link
US (1) US20180165345A1 (ja)
EP (1) EP3333730A1 (ja)
JP (1) JP6841024B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020047107A (ja) * 2018-09-20 2020-03-26 株式会社日立製作所 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
US11995050B2 (en) 2021-07-28 2024-05-28 Granica Computing, Inc. Systems and methods for sketch computation

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017158794A1 (ja) * 2016-03-17 2017-09-21 楽天株式会社 ファイル管理システム、ファイル管理方法、収集プログラム、ならびに、非一時的なコンピュータ読取可能な情報記録媒体
US10831775B2 (en) * 2017-01-06 2020-11-10 International Business Machines Corporation Efficient representation, access and modification of variable length objects
US10652265B2 (en) * 2018-01-12 2020-05-12 Lianqun YANG Method and apparatus for network forensics compression and storage
US10922281B2 (en) * 2018-10-25 2021-02-16 EMC IP Holding Company LLC Application aware deduplication
US11449465B2 (en) * 2019-09-11 2022-09-20 International Business Machines Corporation Fixed chunk size deduplication with variable-size chunking
CN114579808B (zh) * 2022-01-17 2022-11-29 深圳市慧视通科技股份有限公司 目标所处位置的索引方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03280136A (ja) * 1990-03-29 1991-12-11 Nec Corp 順編成ファイルのレコード位置付け方式
JP2000285014A (ja) * 1999-03-29 2000-10-13 Nec Ic Microcomput Syst Ltd 不定長データの格納方法および検索方法
US20060184505A1 (en) * 2004-04-26 2006-08-17 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US20120290537A1 (en) * 2011-05-09 2012-11-15 International Business Machines Corporation Identifying modified chunks in a data set for storage

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4960417B2 (ja) 2009-09-15 2012-06-27 株式会社東芝 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP5485866B2 (ja) 2010-12-28 2014-05-07 株式会社日立ソリューションズ 情報管理方法、及び情報提供用計算機
US8745003B1 (en) * 2011-05-13 2014-06-03 Emc Corporation Synchronization of storage using comparisons of fingerprints of blocks
CN104813310A (zh) * 2012-09-05 2015-07-29 印度理工学院卡哈拉格普尔分校 多级别内联数据去重
CN104246722B (zh) 2013-03-29 2017-02-22 株式会社东芝 用于基于哈希表排除数据重复的存储系统,存储控制器及方法
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03280136A (ja) * 1990-03-29 1991-12-11 Nec Corp 順編成ファイルのレコード位置付け方式
JP2000285014A (ja) * 1999-03-29 2000-10-13 Nec Ic Microcomput Syst Ltd 不定長データの格納方法および検索方法
US20060184505A1 (en) * 2004-04-26 2006-08-17 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
JP2007535068A (ja) * 2004-04-26 2007-11-29 ストアウィズ インク 記憶のためのファイル圧縮および圧縮ファイルの操作の方法およびシステム
US20120290537A1 (en) * 2011-05-09 2012-11-15 International Business Machines Corporation Identifying modified chunks in a data set for storage

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020047107A (ja) * 2018-09-20 2020-03-26 株式会社日立製作所 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
US11627207B2 (en) 2019-12-18 2023-04-11 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11995050B2 (en) 2021-07-28 2024-05-28 Granica Computing, Inc. Systems and methods for sketch computation

Also Published As

Publication number Publication date
JP6841024B2 (ja) 2021-03-10
US20180165345A1 (en) 2018-06-14
EP3333730A1 (en) 2018-06-13

Similar Documents

Publication Publication Date Title
US10585857B2 (en) Creation of synthetic backups within deduplication storage system by a backup application
JP6841024B2 (ja) データ処理装置,データ処理プログラムおよびデータ処理方法
US8386521B2 (en) System for backing up and restoring data
US8315985B1 (en) Optimizing the de-duplication rate for a backup stream
US8990171B2 (en) Optimization of a partially deduplicated file
US9928210B1 (en) Constrained backup image defragmentation optimization within deduplication system
KR102187127B1 (ko) 데이터 연관정보를 이용한 중복제거 방법 및 시스템
CN113535670A (zh) 一种虚拟化资源镜像存储系统及其实现方法
US11397706B2 (en) System and method for reducing read amplification of archival storage using proactive consolidation
US10108647B1 (en) Method and system for providing instant access of backup data
US9971797B1 (en) Method and system for providing clustered and parallel data mining of backup data

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210201

R150 Certificate of patent or registration of utility model

Ref document number: 6841024

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150