JP6884128B2 - データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム - Google Patents

データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム Download PDF

Info

Publication number
JP6884128B2
JP6884128B2 JP2018176443A JP2018176443A JP6884128B2 JP 6884128 B2 JP6884128 B2 JP 6884128B2 JP 2018176443 A JP2018176443 A JP 2018176443A JP 2018176443 A JP2018176443 A JP 2018176443A JP 6884128 B2 JP6884128 B2 JP 6884128B2
Authority
JP
Japan
Prior art keywords
data
storage
stored
storage unit
finger print
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.)
Active
Application number
JP2018176443A
Other languages
English (en)
Other versions
JP2020047107A (ja
Inventor
鎮平 野村
鎮平 野村
光雄 早坂
光雄 早坂
潤 根本
潤 根本
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018176443A priority Critical patent/JP6884128B2/ja
Priority to US16/287,242 priority patent/US10949405B2/en
Publication of JP2020047107A publication Critical patent/JP2020047107A/ja
Application granted granted Critical
Publication of JP6884128B2 publication Critical patent/JP6884128B2/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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • 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
    • 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/1469Backup restoration techniques
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/1466Management of the backup or restore process to make the backup process non-disruptive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Description

本発明は、格納対象データについて重複を排除して格納させるデータ重複排除装置等に関する。
ブロックチェーン(BC)技術は、複数の取引主体間で合意をとったトランザクションのみを受領し、また取引データをブロックチェーンと呼ばれるデータ構造で管理することでデータの改竄を困難にする。BC技術の適用により、第三者機関による取引の管理なしに、利用者間での直接取引が可能なシステムが構築可能となる。これにより、取引の迅速化やコストの低減が見込まれる。BC技術は金融や産業など多くの分野での活用が期待される。
ブロックチェーン(BC)システムでは、取引データの改竄を困難とするため、BCブロックという単位に、複数の取引データと一つ前のブロックから算出したハッシュ値とを合わせて格納するデータ構造をとる。このBCブロックは取引を重ねる毎に数が増え続ける上、BCシステムに参加している全てのBCサーバへとデータが複製される。このようなBCシステムでの増大するデータの格納や管理を低コストで行うためには、ストレージシステムでのティアリングが有効である。また、操作ミスなどにより生じるデータ不正への対策としてストレージシステムへのバックアップも必要となる。
BCサーバのデータを高速にストレージシステムへティアリングしたり、またはバックアップしたりする方法として、特許文献1の技術が知られている。特許文献1は、事前にサーバでデータ重複排除を行い、非重複データのみをリモートのストレージシステムに転送する技術を開示する。重複排除は、ストレージシステムの格納データのうち、内容が重複するデータ(重複データ)の存在を検知し、この重複データを削減することでデータの転送量や格納量を減らす技術である。特許文献1の技術では、重複排除に必要な情報の一部を、ストレージシステムがサーバからの要求に応じて配布し、各サーバで重複排除処理を分散実行することにより性能向上を図っている。
米国特許第9952936号
重複排除では格納データを複数に分割し、この分割したデータ間の内容の重複を判定する。以降、重複判定するデータの単位を「チャンク」と呼ぶ。チャンクのサイズは、例えば、数キロバイト以上であるので、重複判定のためチャンク同士を比較するには多くの時間とコストを要する。そこで、各チャンクからメッセージダイジェストを算出し、このメッセージダイジェストの値を比較することで、重複判定を代替することにより、処理時間やコストを低減する。ここで、メッセージダイジェストの出力結果を「FP(Finger Print)」と呼ぶ。FPには、例えば、SHA(Secure Hash Algorithm)−2、SHA−3といった強い衝突耐性を持つハッシュ関数のハッシュ値が用いられる。格納済みデータのFPを登録したテーブル(FPT:Finger Print Table)を作成しておき、このテーブルから対象データのFPを検索することで、重複判定を行う。
例えば、特許文献1に記載の技術によると、重複排除のためにサーバでハッシュ計算を行う必要があり、このハッシュ計算による処理負荷が大きいためティアリングやバックアップの性能低下を招く問題がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、重複排除における処理負荷を低減することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るデータ重複排除装置は、格納対象データについて重複を排除して保存用記憶デバイスに格納させるデータ重複排除装置であって、格納対象データは、時系列に管理されている複数のデータ群を含むデータ集合を含み、データ群は、1以上の管理データを含み、前記データ群のハッシュ値は、前記データ群と所定の関係を有する他のデータ群に対応付けられて記憶されるようになっており、データ重複排除装置は、データ集合を記憶する記憶デバイスと、プロセッサ部を有し、プロセッサ部は、(1)データ集合における1以上のデータ群を含む格納単位データの1以上のデータ群のハッシュ値を取得し、格納単位データに対するフィンガプリントを、取得した1以上のデータ群のハッシュ値に基づいて特定し、(2)格納単位データに対応するフィンガプリントが、保存用記憶デバイスに格納されている格納済み格納単位データと同じフィンガプリントであるか否かを判定し、(3)格納単位データに対応するフィンガプリントが格納済み格納単位データと同じフィンガプリントであると判定された場合には、格納単位データを保存用記憶デバイスに格納せず、格納単位データに対応するフィンガプリントが格納済み格納単位データと同じフィンガプリントでないと判定された場合には、格納単位データを保存用記憶デバイスに格納させる。
本発明によれば、重複排除における処理負荷を低減することができる。
図1は、第1実施形態の概要を説明する図である。 図2は、第1実施形態に係るブロックチェーンシステムの全体構成図である。 図3は、第1実施形態に係るBCサーバとストレージシステムとの構成図である。 図4は、第1実施形態に係る重複排除を説明する図である。 図5は、第1実施形態に係るBCブロックを説明する図である。 図6は、第1実施形態に係るFPの算出方法を説明する図である。 図7は、第1実施形態に係るコンテンツ索引表の構成図である。 図8は、第1実施形態に係る通常FPTの構成図である。 図9は、第1実施形態に係るBC用FPTの構成図である。 図10は、第1実施形態に係るBCブロック格納先設定画面の構成図である。 図11は、第1実施形態に係るバックアップ処理のフローチャートである。 図12は、第1実施形態に係るチャンク分割/チャンク管理情報作成処理のフローチャートである。 図13は、第1実施形態に係るストレージ側重複排除処理のフローチャートである。 図14は、第1実施形態に係るリストア処理のフローチャートである。 図15は、第2実施形態に係るBCサーバとストレージシステムとの構成図である。 図16は、第2実施形態に係るバックアップ処理のフローチャートである。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」、「AAA表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」、「AAA表」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の動作主体が、プロセッサ部(或いは、プロセッサ部を有する計算機又は計算機システム)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。また、プログラムが実行されることによって実現される処理のうちの少なくとも一部が、ハードウェア回路(例えばASIC(Application Specific Integrated Circuit)又はFPGA(Field-Programmable Gate Array))によって実現されてもよい。
まず、第1実施形態の概要について説明する。
図1は、第1実施形態の概要を説明する図である。
第1実施形態に係るブロックチェーンシステム(BCシステム)1のストレージシステム(単にストレージともいう)200は、FPTとして通常チャンク300用の通常FPT900と、BCチャンクブロック400用のBC用FPT800とを保有する。ストレージ200は、重複判定時に、複数のBCブロック500を含むチャンクであるBCブロックチャンク400を検知し、BCブロックチャンク400を構成するBCブロック500のそれぞれの次のBCブロック500から各BCブロック500についてのハッシュ値を取得し、取得したこれらハッシュ値に基づいて、BCブロックチャンク400に対応するFP410を生成する。ストレージ200は、BC用FPT800を参照して、生成したFP410を検索して、同じFP410が登録されているかにより、重複判定を行う。また、ストレージ200は、BCブロックチャンク400として検知されなかった通常チャンク300については、通常チャンク300を入力として所定のハッシュ関数による出力値を算出して、通常FP310とし、通常FPT900を参照して、通常FP310が登録されているかにより、重複判定を行う。そして、ストレージ200は、重複判定の結果に応じてデータの格納等を行う。
次に、第1実施形態について詳細に説明する。
図2は、第1実施形態に係るブロックチェーンシステムの全体構成図である。
BCシステム1は、1つ以上のクライアント11と、1つ以上のデータ重複排除装置の一例としてのBCサーバ100と、データ重複排除装置の一例としてのストレージ200と、管理端末12とを備えている。クライアント11、BCサーバ100、ストレージ、管理端末12は、ネットワーク10を介して相互に接続されている。ネットワーク10は、例えばWAN(Wide Area Network)、LAN(Local Area Network)、インターネットなどを含む通信回線により構成してもよい。
クライアント11は、例えば、PC(Personal Computer)で構成されており、例えばプロセッサ、メモリ、入出力装置、ネットワークインタフェース等のハードウェアを有する。クライアント11は、BCブロック(データ群の一例)を利用可能なBCサービスを活用するアプリケーションプログラムを実行する。クライアント11は、アプリケーションプログラムを実行することにより、トランザクションを生成し、BCサーバ100へトランザクションを発行する。なお、アプリケーションプログラムをBCサーバ100で動作させるようにして、BCサーバ100と、クライアント11とを同一の装置で実現してもよく、また、アプリケーションプログラムを管理端末12で動作させるようにして、管理端末12と、クライアント11とを同一の装置で実現するようにしてもよい。なお、複数のBCサーバ100は、複数の組織に分散されて管理されていてもよい。
管理端末12は、例えば、PCにより構成され、ストレージ200や、BCサーバ100などへの管理操作を行うための計算機である。管理端末12は、キーボード及びディスプレイなどの入出力装置を備え、管理者は、入出力装置を介して、ストレージ200やBCサーバ100へ設定の指示を行うことができる。また,管理端末12は、ストレージ200やBCサーバ100の状態を出力装置に表示することができる。なお、管理端末12は、ストレージ200に内蔵されてもよい。
図3は、第1実施形態に係るBCサーバとストレージシステムとの構成図である。
BCサーバ100は、クライアント11に対してBCサービスを提供する計算機である。BCサーバ100は、例えば、プロセッサ部の一例としてのプロセッサ110と、メモリ120と、記憶デバイス130と、ネットワークインタフェース140とを有する。プロセッサ110、メモリ120、記憶デバイス130、及びネットワークインタフェース140は、バス150を介して相互接続されている。
プロセッサ110は、例えば、CPU等を含む演算装置として機能し、メモリ120に格納されるプログラム、演算パラメータ等に従って、BCサーバ100の動作を制御する。
メモリ120は、例えばRAM(Random Access Memory)であり、BCサーバ100がクライアント11にBCサービスを提供するためのBCプログラム121を格納する。また、メモリ120は、バックアッププログラム122と、リストアプログラム123とを格納する。また、メモリ120は、記憶デバイス130から読み出された各種情報を記憶したり、プロセッサ110のワークメモリとして用いられたりする。
また、メモリ120は、バックアッププログラム122、及びリストアプログラム123の実行時に重複判定情報として参照される、コンテナ索引表920、820を格納する。なお、コンテナ索引表920、820は、記憶デバイス130に格納しておき、バックアッププログラム122及びリストアプログラム123が参照する際に必要に応じてメモリ120にロールインするようにしてもよい。
記憶デバイス130は、例えば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)等であり、各種ソフトウェアや管理情報、バックアップの対象となりうるコンテンツのデータ(格納対象データ)などが格納されている。なお、BCプログラム121、バックアッププログラム122、及びリストアプログラム123を記憶デバイス130に格納しておき、これらのプログラムをプロセッサ110が実行する際に記憶デバイス130からメモリ120に読み出すようにしてもよい。
BCプログラム121は、プロセッサ110に実行されることにより、クライアント11から取引データ(管理データの一例)であるトランザクションを受領し、BCシステム1に参加する他のBCサーバ100と、トランザクションの受領に関する合意形成を行い、トランザクションを含むBCブロック(データ群)500を生成して、トランザクションをBCシステム1のデータベースへコミットする処理を実施し、クライアント11へトランザクションの処理結果を通知する。
バックアッププログラム122は、プロセッサ110に実行されることにより、バックアップ対象のデータ(バックアップデータ)の決定や重複判定処理などのデータ処理を行う機能を提供し、ネットワークインタフェース140を介して、ストレージ200へバックアップデータを送信する。また、バックアッププログラム122は、ネットワークインタフェース140を介してストレージ200から重複判定に必要な情報を受信する。
リストアプログラム123は、プロセッサ110に実行されることにより、ネットワークインタフェース140を介して,ストレージ200からリストア処理に必要なバックアップデータを受信して、元データの復元(リストア)を行う。
ストレージ200は、データを格納する装置(計算機)であり、プロセッサ部の一例としてもプロセッサ210と、メモリ220と、保存用記憶デバイスの一例としての記憶デバイス230と、ネットワークインタフェース240とを有する。プロセッサ210、メモリ220、記憶デバイス230、及びネットワークインタフェース240は、バス250を介して相互接続されている。
プロセッサ210は、CPUなどを含む演算装置として機能し、メモリ220に記憶されているプログラム、演算パラメータに従ってストレージ200を制御する。
メモリ220は、例えばRAM(Random Access Memory)であり、ストレージ200側のバックアッププログラム221と、リストアプログラム222とを格納する。メモリ220は、記憶デバイス230から読み出された各種情報を記憶するために用いられたり、プロセッサ210のワークメモリとして用いられたりする。
メモリ220は、バックアッププログラム221及びリストアプログラム222の実行時に参照される重複判定情報として参照されるFPT900、800や、バックアップデータを復元するために利用されるコンテンツ索引表600を格納する。FPT900、800やコンテンツ索引表600は、記憶デバイス230に格納しておき、バックアッププログラム221及びリストアプログラム222が参照する際に必要に応じてメモリ220にロールインしてもよい。
記憶デバイス230は、例えば、HDD(Hard Disk Drive)や、SSD(Solid State Drive)等であり、各種ソフトウェアや管理情報、バックアップ処理後のデータであるコンテナ31、BCブロックコンテナ41のデータなどを格納する。
バックアッププログラム221は、プロセッサ210に実行されることにより、BCサーバ100から受領したバックアップ対象データを対象に重複排除処理を行い、重複排除処理後のデータを記憶デバイス230に格納する。またバックアッププログラム221は、プロセッサ210に実行されることにより、ネットワークインタフェース240を介して重複判定処理に必要な情報をBCサーバ100へ送信する。
リストアプログラム222は、プロセッサ210に実行されることにより、BCサーバ100からのリストア要求を受領して、対応するデータを記憶デバイス230から読み出し、ネットワークインタフェース240を介してBCサーバ100へ転送する。
次に、本実施形態に係る重複排除機能の概要を説明する。
本実施形態においては、BCサーバ100のバックアッププログラム122、及びストレージ200のバックアッププログラム221に,バックアップ対象データのデータ量を削減する処理機能が搭載される。データ量を削減する処理機能には、例えばファイル圧縮処理や重複排除処理がある。ファイル圧縮処理は、1ファイル内に含まれる同一内容のデータセグメント(単位データ)を縮約して、データ量を削減する処理である。一方、重複排除処理は、複数ファイル(コンテンツ)間で検出される同一データセグメントを縮約することにより、ファイルシステムやストレージシステムに格納されるデータの総量を削減する処理である。
図4は、第1実施形態に係る重複排除を説明する図である。図4では、バックアップ対象データと、重複排除処理によって縮約された後のデータとの関係を示している。
本実施形態では、バックアップ対象データについての重複排除を行う単位となるデータセグメント(格納単位データの一例)を「チャンク」といい、複数のチャンクをまとめたデータを「コンテナ」という。また、記憶デバイス130,230に格納する単位である論理的にまとまったデータを「コンテンツ」(データ集合の一例)という。コンテンツには、通常のファイルに加え、アーカイブファイル、バックアップファイル、仮想ボリュームファイルなどの通常のファイルを縮約したファイルを含む。
本実施形態では、1つのコンテナには、互いに関連性の高いチャンクが集約されるように作成している。例えば、コンテナへの格納可能なチャンク数を定め、同一コンテンツから生成されるチャンクを、許容する数だけまとめて同一のコンテナに含めることで、関連性の高いチャンクを含むコンテナを作成できる。例えば、図4に示すように、BCブロックコンテンツ40Bの各BCブロックチャンク(400B1〜400B3)は、BCブロックコンテナ41bに格納される。このように関連性の高いチャンクによりコンテナを構成することで、例えばリストア処理においてコンテンツを復元する際、単一のコンテナを読み出すことにより、コンテンツを構成する複数のチャンクを取得できるため、記憶デバイス230からの読み出し回数の削減が期待でき、リストア処理を迅速に行うことができる。
本実施形態では,重複判定処理の効率化のため、コンテンツについて、BCブロック500を含むBCブロックコンテンツ40と、その他の通常コンテンツ30とに分けて処理している。また、チャンクについてもBCブロック500を含むBCブロックチャンク400と、その他のチャンクである通常チャンク(他種格納単位データ)300とにわけ、BCブロックチャンク400を含むコンテナをBCブロックコンテナ41とし、通常チャンク300を含むコンテナを通常コンテナ31としている。
本実施形態では、図4に示すように、複数のBCブロックコンテンツ40(40Bと40B’)における同一のBCブロックチャンク400(400B1〜400B3)は、同一のBCブロックコンテナ41bにそれぞれ1つずつ格納されるようになっている。したがって、同一のBCブロックチャンク400を重複して記憶デバイス230に格納しないようにできる。また、通常コンテンツ30(30A、30A’)における同一の通常チャンク300(300A1〜300A3)についても同様に1つずつ通常コンテナ31aに格納されるようになっている。したがって、同一の通常チャンク300を重複して記憶デバイス230に格納しないようにできる。
次に、記憶デバイス130に格納されるBCブロックコンテンツ40及びBCブロック500のデータ構造を説明する。
図5は、第1実施形態に係るBCブロックを説明する図である。
BCブロック500は、BCシステム1における取引データ(管理データの一例)510の改竄を困難化するためのデータ構造であり、1以上の取引データ510と、1つ前に生成されたBCブロック500から算出されたハッシュ(ハッシュ値)520を含んだデータである。この構造によると、或るBCブロック500のハッシュ520は、次のBCブロック500に含まれるため、BCブロック500で改竄が生じた場合には、そのBCブロック500から算出されるハッシュ520と、後続するBCブロック500中のハッシュ520との整合性が取れなくなり、改竄されたことの検知が可能となる。このような、他のBCブロック500のハッシュ520をBCブロック500内に保持することにより改竄が困難となるBCブロック500の集合を「チェーン」と呼ぶ。チェーン4においては、全てのBCブロック500はBCシステム1を構成する全てのBCサーバ100へ複製されるため、1つのBCサーバ100でBCブロック500の改竄が生じた場合に、他のBCサーバ100からBCブロック500を取得することで復旧が可能である。BCブロック500には、生成した順序で連続した識別子が付与されており、この識別子により、BCブロック500の生成順序の判別が可能である。
BCブロック500は、BCブロック500を1以上含むファイルとして記憶デバイス130に格納される。このファイルがBCブロックコンテンツ40である。重複排除処理では、BCブロックコンテンツ40を重複排除の単位となるチャンク(BCブロックチャンク400)へ分割するが、BCブロックチャンク400への分割時には、BCブロック500の境界に合わせて分割する。具体的には、BCブロックチャンク400には、1以上の整数個のBCブロック500が格納されるように分割される。BCブロックコンテンツ40から生成されるチャンク400は、BCブロック500のみから構成されるBCブロックチャンク400と、BCブロック500以外のデータから構成される通常チャンク300とが含まれる場合がある。BCブロックコンテンツ40におけるBCブロック500以外のデータとしては、例えば、ヘッダ、フッタ等に該当するデータがある。
一般的にチャンクのサイズは、数キロバイト以上である。そのため、重複判定処理でチャンク全体の比較を、全てのチャック同士で行うには、大きな処理時間とコストを要する。そこで、本実施形態のストレージ200では、チャンクのメッセージダイジェストを利用し、処理時間とコストとを削減する。メッセージダイジェストとは、任意の長さのデータ入力に対して、所定の固定長のダイジェストを出力する技術である。ここで、メッセージダイジェストによる出力結果を「FP(Finger Print):フィンガプリント)」と呼ぶ。本実施形態では、通常チャンク300から算出する通常FPと、BCブロックチャンク400から算出するFP410とを使い分けるようにしている。
図6は、第1実施形態に係るFPの算出方法を説明する図である。
まず、通常FP310を生成する方法を説明する。本実施形態では、通常FP310は、通常チャンク300(例えば、所定のデータ長以下)のデータを入力として、強い衝突耐性を持つハッシュ関数(例えば、SHA−2、SHA−3)により得られた出力としている。このように強い衝突耐性を持つハッシュ関数をメッセージダイジェストに利用することで、異なる内容のチャンクに対して誤って重複判定を下すことを防ぐことができる。
次に、FP410を生成する方法を説明する。上述したように、BCブロックチャンク400は、1以上のBCブロック500から構成されており、それぞれのBCブロック500のハッシュ520は、次の順番のBCブロック500中に格納されている。
そこで、BCブロックチャンク400を構成する全BCブロック500のハッシュ520を、それぞれのBCブロック500の次のBCブロック500から取得し、取得した複数のハッシュ520に基づいて、BCブロックチャンク400のFP410を決定(算出)する。例えば、図6のBCブロックチャンク400B1のFP410B1を算出する場合には、BCブロック500−1,500−2,500−3のそれぞれの次のBCブロック、すなわち、BCブロック500−2,500−3,500−4からハッシュ520−2,520−3、520−4を取得して、これら取得したハッシュ520−2,520−3、520−4に基づいて、FP410B1を生成する。
取得した複数のハッシュ520からBCブロックチャンク400のFP410を生成する方法としては、例えば、複数のハッシュ520について排他的論理和を取った結果をFP410としてもよく、複数のハッシュ520を入力として、所定のハッシュ関数により1つのハッシュを算出してFP410としてもよく、複数のハッシュの所定の部分(例えば、最初から所定バイトの範囲)の値を繋ぎ合わせた結果をFP410としてもよい。
ここで、或るBCブロックの次のBCブロック500の格納場所は、BCプログラム121により決まっており、例えば、或るBCブロック500が含まれるBCブロックコンテンツ40における記憶領域に連続する次の記憶領域に格納されている。なお、次のBCブロック500が未作成などの理由でハッシュ値が未算出である場合には、そのBCブロック500については、そのBCブロック500を入力として所定のハッシュ関数により、ハッシュを算出して、そのハッシュをFP410としてもよい。
なお、通常チャンク300と、BCブロックチャンク400とで、チャンクサイズを変更してもよい。例えば,通常チャンク300を4KB以下とし、BCブロックチャンク400を128KB以下として、上限を異なるサイズに設定してもよい。一般的に重複排除処理では、チャンクのサイズが小さいほど重複データが生じやすく、データ削減効果が大きい。例えば、格納済みコンテンツから一部分を変更したコンテンツについて重複判定処理を行う場合に、変更部分を含むチャンクだけが非重複データとして扱われるが、このときにチャンクのサイズが小さいほど非重複データとして扱うデータのサイズは小さくなる。しかし、BCブロックチャンク400は、ノード間で複製されたBCブロック500の完全一致が期待されるため、一部分が異なるコンテンツが生じづらく、チャンクサイズを大きくしたとしても、データ削減効果が低下しないことが期待される。
次に、本実施形態におけるFPTの構成について説明する。
本実施形態のFPTとしては、通常チャンク300の重複判定処理に使用する通常FPT900と、BCブロックチャンク400の重複判定処理に使用するBC用FPT800との2つがある。
図8は、第1実施形態に係る通常FPTの構成図である。
通常FPT900は、通常チャンク索引表910と、1以上の通常コンテナ索引表920(920a、920c)とを含む。通常コンテナ索引表920は、通常コンテナ31単位で作成され、記憶デバイス230に格納された通常コンテナ31中の通常チャンク300(格納済み格納単位データ)を管理するためのテーブルである。通常チャンク索引表910は、記憶デバイス230に格納された通常チャンク300の格納先の通常コンテナ31を管理するためのテーブルである。ここで、通常チャンク索引表910及び通常コンテナ索引表920は、第2フィンガプリント情報の一例である。
通常コンテナ索引表920は、記憶デバイス230に格納された通常コンテナ中の通常チャンク300毎に対応するエントリを格納する。通常コンテナ索引表920のエントリは、FP921と、オフセット値922と、チャンク長923との項目を有する。FP921には、エントリに対応する通常チャンク300のフィンガプリントが格納される。オフセット値922には、エントリに対応するチャンクの通常コンテナ内における先頭位置を示すオフセット値が格納される。チャンク長923には、エントリに対応する通常チャンク300の長さを表す値が格納される。
通常チャンク索引表910は、記憶デバイス230に格納された通常チャンク300毎に対応するエントリを格納する。通常チャンク索引表910のエントリは、FP911と、コンテナID912との項目を有する。FP911には、エントリに対応する通常チャンク300の通常FP310が格納される。コンテナID912には、エントリに対応する通常チャンク300が格納されている通常コンテナ31を表す識別子(コンテナID)が格納される。コンテナID912に格納される識別子は、対応するコンテナの通常コンテナ索引表920を参照するためのポインタ情報としての機能を持つ。例えば、コンテナID912のコンテナIDと対応する通常コンテナ索引表920をUUID(Universally Unique Identifier)と呼ばれる共通な識別子によって管理する。
図9は、第1実施形態に係るBC用FPTの構成図である。
BC用FPT800は、BC用チャンク索引表810と、BC用コンテナ索引表820とを有する。BC用コンテナ索引表820は、記憶デバイス230に格納されたBCブロックコンテナ41単位で作成され、BCブロックコンテナ41中のBCブロックチャンク400を管理するためのテーブルである。BC用チャンク索引表810は、記憶デバイス230に格納されたBCブロックチャンク400の格納先のBCブロックコンテナ41を管理するためのテーブルである。ここで、BC用チャンク索引表810及びBC用コンテナ索引表820は、フィンガプリント情報及び第1フィンガプリント情報の一例である。
BC用コンテナ索引表820は、記憶デバイス230に格納されたBCブロックチャンク400(格納済み格納単位データ)毎に対応するエントリを格納する。BC用コンテナ索引表820のエントリは、チェーンID821と、先頭BCブロックID822と、末尾BCブロックID823と、FP824と、オフセット値825と、チャンク長826との項目を有する。チェーンID821には、エントリに対応するBCブロックチャンク400を構成するBCブロック500が属するチェーン4の識別子(チェーンID)が格納される。先頭BCブロックID822には、エントリに対応するBCブロックチャンク400を構成するBCブロック500のうちの先頭のBCブロック500の識別子(BCブロックID)が格納される。末尾BCブロックID823には、エントリに対応するBCブロックチャンク400を構成するBCブロック500のうちの末尾のBCブロック500の識別子が格納される。BCブロック500の識別子としては、BCブロック500が生成された順序で連続した値を付与するようにしているため、先頭と末尾との識別子によって、BCブロックチャンク400を構成する全てのBCブロック500の識別子を特定することができる。FP824には、BCブロックチャンク400に対応するFPが格納される。オフセット値825には、エントリに対応するBCブロックチャンク400のBCブロックコンテナ41内における先頭位置を示すオフセット値が格納される。チャンク長826には、エントリに対応するBCブロックチャンク400の長さを表す値が格納される。
BC用チャンク索引表810は、記憶デバイス230に格納されたBCブロックチャンク400(格納済み格納単位データ)毎に対応するエントリを格納する。BC用チャンク索引表810のエントリは、チェーンID811と、先頭BCブロックID812と、末尾BCブロックID813と、FP814と、コンテナID815との項目を有する。チェーンID811には、エントリに対応するBCブロックチャンク400を構成するBCブロック500が属するチェーン4の識別子(チェーンID)が格納される。先頭BCブロックID812には、エントリに対応するBCブロックチャンク400を構成するBCブロック500のうちの先頭のBCブロック500の識別子(BCブロックID)が格納される。末尾BCブロックID813には、エントリに対応するBCブロックチャンク400を構成するBCブロック500のうちの末尾のBCブロック500の識別子が格納される。FP814には、BCブロックチャンク400に対応するFPが格納される。コンテナID815には、エントリに対応するBCブロックチャンク400が格納されているBCブロックコンテナ41を表す識別子(コンテナID)が格納される。
本実施形態のBC用FPT800においては、チェーンIDと、先頭BCブロックIDと、末尾BCブロックIDとを含み、BCブロックチャンク400を構成するBCブロック500を識別可能としている。BCブロック500は、生成順序に準じた識別子が付与されるため、先頭BCブロックIDと末尾BCブロックIDを使い、構成するBCブロック500の識別子の連続するBCブロックチャンク400とその管理情報とをまとめて格納することで、局所性による記憶デバイス230へのアクセス頻度の低減効果が見込まれる。例えば、BC用チャンク索引表810のエントリを、チェーンID811と先頭BCブロックID812と末尾BCブロックID813との値でソートして格納することで、連続したBCブロック500に関するBC用チャンク索引表810の参照を、連続した領域への1回のアクセスで済ませることができる。なお、BC用FPT800として通常FPT900と同様の構成をとり、BC用FPT800と通常FPT900とを結合した単一のFPTとしてもよい。
次に、リストア処理実行時に使用するコンテンツ索引表600と、BCブロックコンテンツ索引表700について説明する。
図7は、第1実施形態に係るコンテンツ索引表の構成図である。
コンテンツ索引表600(600A、600B)は、コンテンツ毎に作成されるテーブルであり、コンテンツに含まれるチャンクを管理するテーブルである。コンテンツ索引表600は、チャンク毎に対応するエントリを格納する。
コンテンツ索引表600のエントリは、チャンクID601と、FP602と、コンテナID603と、オフセット604と、チャンク長605と、BCブロックチャンク判定606との項目を有する。
チャンクID601には、エントリに対応するチャンクの識別子(チャンクID)が格納される。FP602には、エントリに対応するチャンクのFPが格納される。コンテナID603には、エントリに対応するチャンクが含まれるコンテナの識別子が格納される。オフセット604には、エントリに対応するチャンクのコンテンツ内での位置(オフセット)を示す情報(オフセット値)が格納される。チャンク長605には、エントリに対応するチャンクの長さを表す情報が格納される。BCブロックチャンク判定フラグ606には、エントリに対応するチャンクがBCブロックチャンク400であるか、通常チャンク300であるかを示す情報(チャンク判定フラグ)が格納される。BCブロックチャンク判定フラグ606には、エントリに対応するチャンクがBCブロックチャンク400であれば、「True」が格納され、通常チャンク300あれば、「False」が格納される。
上記実施形態では、通常コンテンツ30とBCブロックコンテンツ40とを、同一フォーマットのコンテンツ索引表600により管理するようにしているが、通常コンテンツ30と、BCブロックコンテンツ40とで異なるフォーマットのコンテンツ索引表により管理するようにしてもよい。例えば、BCブロックコンテンツ40のコンテンツ索引表として、上記したコンテンツ索引表600のエントリに、BCブロックコンテンツ40を構成するBCブロックチャンク400に含まれるBCブロック500の識別子を格納する項目を追加してもよい。
次に、BCブロックコンテンツ40のBCサーバ100における格納場所について管理するためのBCブロック格納先設定画面1000について説明する。
図10は、第1実施形態に係るBCブロック格納先設定画面の構成図である。
BCブロック格納先設定画面1000は、例えば、BCシステム1のシステム設定時に、管理端末12により管理端末12の出力装置に表示される。BCブロック格納先設定画面1000は、BC基盤ソフトウェア1001と、バージョン1002と、チェーンID1003と、非重複時アラート1004と、サーバID1005と、格納ディレクトリ1006と、ファイル名1007との設定項目を含む。BC基盤ソフトウェア1001は、BCシステム1で使用されるBCプログラムの種類を設定するための項目である。バージョン1002は、BCシステム1で使用されるBCプログラムのバージョンを設定するための項目である。チェーンID1003は、格納先を設定するBCブロックコンテンツ40に含まれるBCブロック500が属するチェーン4の識別子を設定するための項目である。非重複時アラート1004は、非重複時のアラートを有効とするか否かを設定するための項目である。サーバID1005、格納ディレクトリ1006、ファイル名1007は、BCブロックコンテンツ40の格納先を設定する項目である。ここで、サーバID1005、格納ディレクトリ1006、及びファイル名1007に設定された値が、データ集合格納先情報の一例である。サーバID1005は、格納先のBCサーバ100の識別子を設定する項目であり、格納ディレクトリ1006は、格納先のディレクトリを設定する項目であり、ファイル名1007は、格納先のファイル名を設定する項目である。格納ディレクトリ1006や、ファイル名1007には、正規表現による記述を設定してもよい。図10のファイル名1007の設定例では、「blockfile_」に6桁の数字(正規表現:[0−9]{6})を付与したファイル名である設定となっている。なお、BCブロックコンテンツ40の格納先を、ディレクトリやファイル名ではなく、ストレージ200が提供する格納先の識別子、例えば、ストレージ200がオブジェクトストレージであれば、バケットの識別子で設定してもよい。
次に、本実施形態に係るBCシステム1の処理動作について説明する。
まず、BCシステム1におけるバックアップ処理について説明する。
図11は、第1実施形態に係るバックアップ処理のフローチャートである。図11は、1つのコンテンツに対するバックアップ処理を示している。
バックアップ処理は、例えば、BCサーバ100が管理端末12からのバックアップ処理開始指示を受信したことや、BCサーバ100が記憶デバイス130の使用量が所定の閾値を超過したことを検知したことを契機として開始される。
ステップS101では、BCサーバ100のバックアッププログラム122(厳密には、バックアッププログラム122を実行するプロセッサ110)は、バックアップ対象のコンテンツ(対象コンテンツ)の識別子をストレージ200から取得する。ここで、対象コンテンツの識別子は、複数のBCサーバ100から対象コンテンツが格納されるストレージ200内で固有の値を付ける必要があり、ストレージ200内にて管理するため、BCサーバ100は、ストレージ200へ要求を送り、対象コンテンツの識別子を取得する必要がある。
次に、ステップS102では、BCサーバ100のバックアッププログラム122は、対象コンテンツを複数のチャンクに分割し、それぞれのチャンクからのFPの導出と、各チャンクの管理情報の生成を行うためのチャンク分割/チャンク管理情報作成処理(図12参照)を実行する。管理情報には、チャンクが属するコンテンツの識別子、チャンクのFP、コンテンツ内でのチャンクの位置、チャンク長、BCブロックチャンク400であるか否かを示す判定フラグ、さらに、BCブロックチャンク400の場合には、チェーンID、先頭BCブロックID、末尾BCブロックIDなどを含む。なお、ステップS102での対象コンテンツのチャンク分割数は、バックアッププログラム122中で管理される。ここで、図11及び図11の説明においては、チャンク分割数をnとする。
次に、ステップS103では、BCサーバ100のバックアッププログラム122は、以下のループ処理(S104〜S109)の実行回数を格納するカウンタiの値を0に初期化する。カウンタiの値は、ループ処理の実施回数とともにループで処理対象とするチャンクを表し、カウンタi=kとなっているループ処理では、コンテンツの先頭からk+1番目のチャンクを処理対象としていることを表す。
次に、ステップS104では、BCサーバ100のバックアッププログラム122は、ループ処理での処理対象のチャンク(処理対象チャンク)がBCブロックチャンク400であるか否かを判定する。例えば、チャンク分割/チャンク管理情報作成処理(S102)で作成したチャンクの管理情報内の、BCブロックチャンク400であるか否かを示す判定フラグに基づいて判定する。
この判定の結果、処理対象チャンクがBCブロックチャンク400である場合(S104:Yes)には、ステップS105へ処理を移行する一方、処理対象チャンクがBCブロックチャンク400でない場合(S104:No)には、処理をステップS106へ移行する。
ステップS105では、BCサーバ100のバックアッププログラム122は、ステップS102で作成したチャンクの管理情報に基づいて、BC用コンテナ索引表820を検索し、一致するエントリが存在するか否かを判定する。具体的には、バックアッププログラム122は、BC用コンテナ索引表820を参照し、チャンクの管理情報と、チェーンID821、先頭BCブロックID822、末尾BCブロックID823、FP824、及びチャンク長826の値が一致するエントリが存在するか否かを判定する。
この結果、管理情報と値が一致するエントリが存在する場合(ステップS105:Yes)には、重複するデータがあることを示しているので、BCサーバ100のバックアッププログラム122は、一致したエントリの情報を重複するデータの情報としてストレージ200に転送し、処理をステップS109へ移行する。一方、管理情報と値が一致するエントリが存在しない場合(ステップS105:No)には、重複するデータがないことを示しているので、処理をステップS107に移行する。なお、本実施形態では、BC用コンテナ索引表820に、BCブロックチャンク400の固有の情報であるチェーンID821、先頭BCブロックID822、及び末尾BCブロックID823を含ませておき、これをもとに処理対象チャンクと対応するエントリを探索するようにしているが、BC用コンテナ索引表にBCブロックチャンク400固有の情報を含まないようにしている場合には、後述するステップS106と同様に、FPとチャンク長とが一致することをFP824とチャンク長826との値から確認することにより、重複データがあるか否かを判定するようにしてもよい。
ステップS106では、BCサーバ100のバックアッププログラム122は、ステップS102で作成したチャンクの管理情報に基づいて、通常コンテナ索引表920を検索し、一致するエントリが存在するか否かを判定する。具体的には、バックアッププログラム122は、通常コンテナ索引表920を参照し、チャンクの管理情報と、FP921及びチャンク長923の値が一致するエントリが存在するか否かを判定する。
この結果、管理情報と値が一致するエントリが存在する場合(ステップS106:Yes)には、重複するデータがあることを示しているので、BCサーバ100のバックアッププログラム122は、処理をステップS109へ移行する一方、管理情報と値が一致するエントリが存在しない場合(ステップS106:No)には、重複するデータがないことを示しているので、処理をステップS107に移行する。
ステップS107では、BCサーバ100のバックアッププログラム122は、処理対象チャンクの管理情報をストレージ200へ転送する。
次に、ステップS108では、ステップS107において処理対象チャンクの管理情報が転送されたストレージ200のバックアッププログラム221は、処理対象チャンクについての重複排除を行うストレージ側重複排除処理(図13参照)を実行する。ステップS108によると、ストレージ200には、処理対象チャンクの重複データの格納先に関する情報、または新たに記憶デバイス230へ書き込まれたライトデータの格納先に関する情報が生成される。ステップS108の完了後に、バックアッププログラム221は、処理をステップS109に移行する。
ステップS109では、バックアッププログラム221は、処理対象チャンクの格納先に関する情報をコンテンツ索引表600に登録する。具体的には、ストレージ200のバックアッププログラム221は、処理対象チャンクの管理情報から、コンテンツ索引表600のチャンクID601、FP602、オフセット604、チャンク長605に設定する値を取得し、また、重複データまたはライトデータの格納先情報よりコンテナID603に設定する値を取得して、これらの値を含む新たなエントリをコンテンツ索引表600に登録する。ストレージ200のバックアッププログラム221は、ステップS109の完了後、処理をステップS110へ移行する。
ステップS110では、BCサーバ100のバックアッププログラム122が処理対象コンテンツ内の全てのチャンクに対する処理を完了したか確認する。具体的には、カウンタiの値がn−1未満の場合(S110:Yes)は、未処理のチャンクがあることを意味しているので、BCサーバ100のバックアッププログラム122は、バックアップ処理を継続するために、処理をステップS111へ移行する一方、カウンタiがn−1以上である場合(S110:No)には、全てのチャンクの処理を完了したことを意味しているので、BCサーバ100のバックアッププログラム122は、処理をステップS112へ移行する。
ステップS111では、BCサーバ100のバックアッププログラム122は、処理対象チャンクを処理対象コンテンツ内の次のチャンクへ変更し、処理をステップS104に移行する。具体的には、バックアッププログラム122は、カウンタiの値に1を加算し、処理対象チャンクを変更する。例えば、カウンタi=kである場合には、i=i+1に更新することにより、処理対象チャンクを処理対象コンテンツの先頭からk+2番目のチャンクに変更する。
ステップS112では、BCサーバ100のバックアッププログラム122は、リストア用のスタブファイルを記憶デバイス130のファイルに対応する格納位置に格納する。スタブファイルは、リストア処理実行時に、リストアするコンテンツに対応するコンテンツ索引表600を特定するために必要なコンテンツ識別子などを含む。なお、ステップS112は、リストア時に必要なコンテンツ識別子などの情報を記憶デバイス130へ格納して保持することが目的であり、情報の格納形態はスタブファイルに限定されず、例えばコンテンツ識別子の管理テーブルに格納するようにしてもよい。
ステップS112の完了後、BCサーバ100のバックアッププログラム122は、バックアップ処理を終了する。
次に、チャンク分割/チャンク管理情報作成処理(図11のステップS102)について詳細に説明する。
図12は、第1実施形態に係るチャンク分割/チャンク管理情報作成処理のフローチャートである。なお、図12は、1コンテンツに対する処理のフローチャートを示している。
ステップS201では、BCサーバ100のバックアッププログラム122は、処理対象コンテンツがBCブロックコンテンツ40であるか否かを判定する。具体的には、バックアッププログラム122は、まず、BCブロック格納先設定画面1000での設定に基づき、処理対象コンテンツがBCブロックコンテンツ40の候補であるかを判断する。例えば、バックアッププログラム122は、サーバID1005に指定されたサーバIDのBCサーバ100において格納ディレクトリ1006に指定されたディレクトリに格納され、ファイル名1007に指定されたルールに従うファイル名のコンテンツを、BCブロックコンテンツ40の候補とする。次に、バックアッププログラム122は、コンテンツがBCブロックコンテンツ40であるかを、BCブロック格納先設定画面1000に基づき、コンテンツのデータを確認して判定する。例えば、コンテンツに含まれる各BCブロック500について、BCブロック500の先頭に含まれる固定値の有無や、BCブロック500に付与される電子証明の正しさの検証により、BCブロック500が正しいフォーマットとなっていることを確認することにより判定する。コンテンツがBCブロックコンテンツ40であると判定された場合(S201:Yes)には、バックアッププログラム122は、処理をステップS202に移行する一方、コンテンツがBCブロックコンテンツでない、すなわち、通常コンテンツ30であると判定した場合(S201:No)には、処理をステップS203に移行する。
ステップS202では、BCサーバ100のバックアッププログラム122は、BCブロックコンテンツ40をBCブロックチャンク400に分割する。バックアッププログラム122は、BCブロックコンテンツ40の分割時には、BCブロックコンテンツ40に含まれるBCブロック500を認識し、BCブロック500の境界に合わせてBCブロックチャンク400に分割する、すなわち、BCブロックチャンク400に1以上の整数のBCブロック400が含まれるように分割する。例えば、あるサイズ以内のチャンクサイズとなる範囲で最大数のBCブロック500を含むようにBCブロックチャンク400を決定する。なお、BCブロックコンテンツ40がBCブロック500以外のヘッダやメタデータを含む場合には、例えば、BCブロック500以外のデータを通常チャンク300となるように分割してもよい。BCブロックコンテンツ40の分割後、バックアッププログラム122は、各チャンクがBCブロックチャンク400であるか、通常チャンク300であるかを示す情報を生成して保持する。
ステップS203では、BCサーバ100のバックアッププログラム122は、通常コンテンツ30を通常チャンク300に分割する。バックアッププログラム122は、例えば、通常コンテンツ30を、設定されたサイズ毎の通常チャンク300に分割する。
ここで、ステップS202又はステップS203でのコンテンツのチャンクへの分割数は、バックアッププログラム122中で管理される。なお、図12及び図12の説明においては、チャンクの分割数をnとする。
ステップS204では、BCサーバ100のバックアッププログラム122は、以下のループ処理(S205〜S210)の実行回数を格納するカウンタiの値を0に初期化する。カウンタiの値は、ループ処理の実施回数とともにループで処理対象とするチャンクを表し、カウンタi=kとなっているループ処理では、コンテンツの先頭からk+1番目のチャンクを処理対象としていることを表す。
次に、ステップS205では、BCサーバ100のバックアッププログラム122は、ループ処理での処理対象のチャンク(処理対象チャンク)がBCブロックチャンク400であるか否かを判定する。例えば、ステップS202で作成した情報(BCブロックチャンクであることを示す情報)に基づいて判定する。
この判定の結果、処理対象チャンクがBCブロックチャンク400である場合(S205:Yes)には、バックアッププログラム122は、ステップS206へ処理を移行する一方、処理対象チャンクがBCブロックチャンク400でない場合(S205:No)には、処理をステップS207へ移行する。
ステップS206では、BCサーバ100のバックアッププログラム122は、処理対象チャンクのFPを算出する。ステップS206における処理対象チャンクは、BCブロックチャンク400に該当するため、バックアッププログラム122は、例えば、図6に示したFP410の算出方法によりFPを算出する。具体的には、バックアッププログラム122は、まず、BCブロックチャンク400を構成するBCブロック500単位に切り分ける。次に、バックアッププログラム122は、切り分けた各BCブロック500の次のBCブロック500から、各BCブロック500に対応するハッシュ520を取得する。なお、BCブロック500がBCブロックコンテンツ40の終端に位置するため、次のBCブロック500の取得が困難である場合や、次のBCブロック500の作成前に処理を実施している場合には、該当するBCブロック500のハッシュ520を計算により算出してもよい。次に、バックアッププログラム122は、各BCブロック500に対応するハッシュ520の排他的論理をとり、その結果を処理対象チャンクのFPとする。
ステップS207では、BCサーバ100のバックアッププログラム122は、処理対象チャンクのFP(通常FP)を算出する。ステップS207における処理対象チャンクは、通常チャンク300に該当するため、バックアッププログラム122は、例えば、図6に示した通常FP310の算出方法により通常FPを算出する。具体的には、バックアッププログラム122は、処理対象チャンク(通常チャンク300)の全体をハッシュ関数の入力として、ハッシュ関数による出力値を通常FPとする。
次に、ステップS208では、BCサーバ100のバックアッププログラム122は、処理対象チャンクの管理情報を生成する。管理情報は、処理対象チャンクが属するコンテンツの識別子、処理対象チャンクのFP、コンテンツ内での処理対象チャンクの位置、チャンク長、BCブロックチャンク400であるか否かを示す情報、更に、処理対象チャンクがBCブロックチャンク400である場合には、チェーンID、先頭BCブロックID、末尾BCブロックID等を含む。
次に、ステップS209では、BCサーバ100のバックアッププログラム122は、処理対象コンテンツ内の全てのチャンクに対する処理を完了したか確認する。具体的には、カウンタiの値がn−1未満の場合(S209:Yes)は、未処理のチャンクがあることを意味しているので、BCサーバ100のバックアッププログラム122は、バックアップ処理を継続するために、処理をステップS210へ移行する。一方、カウンタiがn−1以上である場合(S209:No)には、全てのチャンクの処理を完了したことを意味しているので、BCサーバ100のバックアッププログラム122は、チャンク分割及びチャンク管理情報生成処理を終了する。
ステップS210では、BCサーバ100のバックアッププログラム122は、処理対象チャンクを処理対象コンテンツ内の次のチャンクへ変更し、処理をステップS205に移行する。具体的には、バックアッププログラム122は、カウンタiの値に1を加算し、処理対象チャンクを変更する。例えば、カウンタi=kである場合には、i=i+1に更新することにより、処理対象チャンクを処理対象コンテンツの先頭からk+2番目のチャンクに変更する。
次に、ストレージ側重複排除処理(図11のステップS108)について詳細に説明する。
図13は、第1実施形態に係るストレージ側重複排除処理のフローチャートである。なお、図13は、1チャンクに対する処理のフローチャートを示している。
ステップS301では、ストレージ200のバックアッププログラム221は、処理対象チャンクがBCブロックチャンク400であるか否かを判定する。具体的には、バックアッププログラム221は、例えば、ステップS107でBCサーバ100からストレージ200が受信したチャンクの管理情報内のBCブロックチャンク400であるか否かを示す判定フラグに基づき判定する。判定の結果、処理対象チャンクがBCブロックチャンク400である場合(S301:Yes)には、バックアッププログラム221は、処理をステップS302に移行する一方、コンテンツがBCブロックコンテンツでない、すなわち、通常コンテンツ30であると判定した場合(S301:No)には、処理をステップS303に移行する。
ステップS302では、ストレージ200のバックアッププログラム221は、BC用FPT800を検索し、処理対象チャンクと重複するデータ(重複データ)が存在するか否かを判定する。具体的には、バックアッププログラム221は、まず、BCサーバ100から受信したチャンクの管理情報に基づき、BC用チャンク索引表810を参照し、チェーンID811、先頭BCブロックID812、末尾BCブロックID813、FP814の値が管理情報と一致するエントリを検索する。一致するエントリが見つかった場合に、バックアッププログラム221は、このエントリのコンテナID815に格納された値に対応するBC用コンテナ索引表820を読み出す。次に、バックアッププログラム221は、読み出したBC用コンテナ索引表820を参照し、チェーンID821、先頭BCブロックID822、末尾BCブロックID823、FP824、チャンク長826の値が処理対象チャンクの管理情報と一致するエントリを検索する。バックアッププログラム221は、一致するエントリが見つかった場合には、処理対象チャンクに対する重複データが存在すると判定し、一致するエントリが見つからなかった場合には、処理対象チャンクに対する重複データが存在しないと判定する。
ストレージ200のバックアッププログラム221は、処理対象チャンクに対する重複データが存在すると判定した場合(S302:Yes)には、一致したエントリを重複データの情報として自身が保持し、ステップS304に処理を移行する一方、処理対象チャンクに対する重複データが存在しないと判定した場合(S302:No)、すなわち、BC用チャンク索引表810の検索またはBC用コンテナ索引表820の検索において、一致するエントリが見つからなかった場合には、ステップS305に処理を移行する。
なお、本実施形態では、BC用チャンク索引表810とBC用コンテナ索引表820とにBCブロックチャンク400固有の情報であるチェーンID821、先頭BCブロックID822、末尾BCブロックID823を含むようにし、処理対象チャンクと情報の一致するエントリを検索して、重複データが存在するか否かを判定するようにしていたが、BC用チャンク索引表とBC用コンテナ索引表とにBCブロックチャンク400の固有の情報を含まないようにしてもよく、この場合には、BC用FPTからチャンク長が一致するエントリを検索し、一致するエントリが見つかった場合に重複データが存在すると判定するようにしてもよい。
ステップS303では、ストレージ200のバックアッププログラム221は、通常コンテナ索引表920を検索し、処理対象チャンクと重複するデータ(重複データ)が存在するか否かを判定する。具体的には、バックアッププログラム221は、まず、BCサーバ100から受信したチャンクの管理情報に基づき、通常チャンク索引表910を参照し、FP911の値が管理情報と一致するエントリを検索する。一致するエントリが見つかった場合には、バックアッププログラム221は、このエントリのコンテナID912に格納された値に対応する通常コンテナ索引表920を読み出す。次に、バックアッププログラム221は、読み出した通常コンテナ索引表920を参照し、処理対象チャンクの管理情報と、FP921及びチャンク長923の値が一致するエントリを検索する。一致するエントリが見つかった場合には、バックアッププログラム221は、処理対象チャンクに対する重複データが存在すると判定し、一致するエントリが見つからなかった場合には,重複データが存在しないと判定する。
ストレージ200のバックアッププログラム221は、この判定の結果、処理対象チャンクに対する重複データが存在すると判定した場合(S303:Yes)には、一致したエントリを重複データの情報として自身が保持し、ステップS304に処理を移行する一方、処理対象チャンクに対する重複データが存在しないと判定した場合(S303:No)、すなわち、通常チャンク索引表910の検索または通常コンテナ索引表920の検索において、一致するエントリが見つからなかった場合には、ステップS307に処理を移行する。
ステップS304では、ストレージ200のバックアッププログラム221は、ステップS302で一致するとされたエントリが含まれるBC用コンテナ索引表820、又はステップS303で一致するとされたエントリが含まれる通常コンテナ索引表920を、BCサーバ100へ転送し、ストレージ側重複排除処理を終了する。ここで、同一のコンテナには関連性の高いデータが含まれるため、連続して重複排除処理されるチャンクが同じコンテナ内の含まれる可能性が高い。
このため、一致するエントリが含まれるBC用コンテナ索引表820または通常コンテナ索引表920が転送されたBCサーバ100においては、転送されたBC用コンテナ索引表820または通常コンテナ索引表920を用いて、バックアップ処理におけるステップS105、ステップS106の処理を実行することにより、重複データが存在することを高精度に判定できる。これにより、BCサーバ100からストレージ200への重複データが存在するチャンクの転送を低減することができる。
なお、バックアッププログラム221は、一致するエントリが含まれたBC用コンテナ索引表820または通常コンテナ索引表920と関連性高いBC用コンテナ索引表820または通常コンテナ索引表920を読み出して、BCサーバ100へ転送するようにしてもよい。例えば、ステップS304において、処理対象チャンクがBCブロックチャンク400である場合に、このBCブロックチャンク400に含まれるBCブロック500の識別子以降の連続する識別子のBCブロック500に関する重複判定用の情報を含んだBC用コンテナ索引表820をBCサーバ100に転送するようにしてもよく、この場合にも、同様な効果が期待できる。また、バックアッププログラム221は、関連性の強いBC用コンテナ索引表820をストレージ200の記憶デバイス230からメモリ220に読み出しておくようにしてもよく、このようにすると、以降のBCブロックチャンク400の重複排除処理において、記憶デバイス230からメモリ220に対して、BC用コンテナ索引表820を読み出さずに済むので応答性能の向上が期待できる。
ステップS305では、バックアッププログラム221は、BCブロックチャンク400の非重複時のアラートが有効であるか、又は無効であるかを確認し、また、処理対象のBCブロックチャンク400と同一のBCブロック500を含むBCブロックチャンク400のエントリがBC用FPT800に存在するか否かを確認する。ここで、BCブロックチャンク400の非重複時のアラートの設定が有効であるか、又は無効であるかについては、ブロック格納先設定画面1000の非重複時アラート設定1004に設定された値に基づいて確認することができる。また、処理対象のBCブロックチャンク400と同一のBCブロック500を含むBCブロックチャンク400のエントリが存在するか否かについては、BC用チャンク索引表810内に、チェーンID811、先頭BCブロックID812、及び末尾BCブロックID813の値が、処理対象チャンクの情報と一致するエントリが存在するか否かにより判断することができる。一致するエントリが存在する場合には、同一のBCブロック500を含むBCブロックチャンク400がBC用FPT800に登録済みであると判断できる。
アラートの設定が有効であり、かつ処理対象のBCブロックチャンク400と同一のBCブロック500を含むBCブロックチャンク400のエントリが存在する場合(S305:Yes)には、バックアッププログラム221は、処理をステップS306に移行する一方、それ以外の場合(S305:No)には、処理をステップS307に移行する。
ステップS306では、ストレージ200のバックアッププログラム221は、同一のチェーン4の同一のBCブロック500を含む、複数のBCサーバ100で複製されているBCブロックチャンク400のデータが不一致であるという状況が見込まれ、データ改竄などBCシステム1で問題が発生した可能性があるため、アラートを上げる(通知する)。ここで、アラートの通知先としては、例えば、BCサーバ100や管理端末12である。
ステップS307では、ストレージ200のバックアッププログラム221は、処理対象チャンクのデータを記憶デバイス230へ書き込む。処理対象チャンクのデータの記憶デバイス230への書き込みは、例えば、空き領域のあるコンテナへの追記や、新規コンテナを作成し、その先頭から書きこむなどの方法で行う。バックアッププログラム221は、ライトしたデータ(ライトデータ)の格納先情報として、格納先のコンテナIDやコンテナのオフセットを保持する。
次に、ステップS308では、ストレージ200のバックアッププログラム221は、ステップS307におけるライトデータの情報をFPT(800,900)に追加する。
具体的には、バックアッププログラム221は、まず、コンテナ索引表(820,920)にエントリを追加する。バックアッププログラム221は、処理対象チャンクがBCブロックチャンク400の場合には、BC用コンテナ索引表820にエントリを追加し、処理対象チャンクが通常チャンク300の場合には、通常コンテナ索引表920にエントリを追加する。次に、ストレージ200のバックアッププログラム221は、チャンク索引表(810,910)にエントリを追加する。ストレージ200のバックアッププログラム221は、処理対象チャンクがBCブロックチャンク400の場合には、BC用チャンク索引表810にエントリを追加し、処理対象チャンクが通常チャンク300の場合には、通常チャンク索引表910にエントリを追加する。コンテナ索引表(820,920)とチャンク索引表(810,910)に追加するエントリの情報は、BCサーバ100から受信した処理対象チャンクの管理情報と、ステップS307で作成したライトデータの格納先情報とに基づいて決定する。ステップS308の完了後に、ストレージ200のバックアッププログラム221は、ストレージ側重複排除処理を終了する。
以上説明したように、本実施形態に係るバックアップ処理によると、BCブロックチャンク400の重複排除処理におけるハッシュの計算が不要となる又は低減されるため、バックアップ処理の処理負荷を軽減でき、処理性能が向上する。上記実施形態では、バックアップ処理における重複排除処理について説明していたが、本発明はこれに限られず、BCサーバ100上のコンテンツのデータを重複排除してストレージ200に書き込むケースであれば、本処理を適用することができる。例えば、ティアリング時のコンテンツデータをBCサーバ100からストレージ200へ移動させるケースや、BCサーバ100からのライトリクエストによるコンテンツデータをストレージ200へ書き込みケースにも適用することができる。
次に、本実施形態に係るBCシステム1におけるリストア処理を説明する。
図14は、第1実施形態に係るリストア処理のフローチャートである。なお、図14のリストア処理は、1つのコンテンツに対するBCシステム1の処理のフローチャートである。
リストア処理は、例えば管理端末12からのリストア処理開始指示や、BCサーバ100でのバックアップしたコンテンツの読み出し要求を契機として開始される。
ステップS401では、BCサーバ100のリストアプログラム123が、リストア対象のコンテンツの識別子を取得し、コンテンツ識別子を含んだコンテンツのリストア要求をストレージ200に通知する。リストアプログラム123は、例えば、バックアップ処理におけるステップS112で生成したスタブファイルからコンテンツの識別子を取得する。
次に、ステップS402では、ストレージ200のリストアプログラム222がBCサーバ100から受領したリストア要求に含まれるコンテンツ識別子に対応するコンテンツ索引表600を読み出す。そして、リストアプログラム222は、コンテンツ索引表600のエントリに記載されるリストア処理対象のコンテンツを構成するチャンクの管理情報を取得して保持する。
次に、ステップS403では、BCサーバ100のリストアプログラム222は、以下のループ処理(S404〜S407)の実行回数を格納するカウンタiの値を0に初期化する。カウンタiの値は、ループ処理の実施回数とともにループで処理対象とするチャンクを表し、カウンタi=kとなっているループ処理では、コンテンツの先頭からk+1番目のチャンクを処理対象としていることを表す。
次に、ステップS404では、ストレージ200のリストアプログラム222は、コンテナ索引表(820,920)から、処理対象のチャンク(処理対象チャンク)の情報を取得する。まず、リストアプログラム222は、処理対象チャンクに対応したコンテンツ索引表600のエントリのコンテナID603の値に基づいて、対応するコンテナのコンテナ索引表(820,920)を取得する。なお、リストアプログラム222は、コンテンツ索引表600のエントリのBCブロックチャンク判定606が「True」の場合には、BC用コンテナ索引表820を取得し、BCブロックチャンク判定606が「False」の場合には、通常コンテナ索引表920を取得する。
次に、リストアプログラム222は、取得したコンテナ索引表から、コンテンツ索引表600のエントリのFP及びチャンク長の値が一致するエントリを検索し、検索により得られた一致したエントリの情報を処理対象チャンクの管理情報として保持する。
次に、ステップS405では、ストレージ200のリストアプログラム222は、記憶デバイス230から処理対象チャンクのデータを読み出す。具体的には、リストアプログラム222は、ステップS402でコンテンツ索引表より取得したコンテナID及びチャンク長と、ステップS404でコンテナ索引表より取得したオフセットとに基づいて、記憶デバイス230における処理対象チャンクの格納場所を特定し、特定した格納場所のデータを読み出して保持する。
次に、ステップS406では、ストレージ200のリストアプログラム222は、処理対象コンテンツ内の全てのチャンクに対する処理を完了したか確認する。具体的には、カウンタiの値がn−1未満の場合(S406:Yes)は、未処理のチャンクがあることを意味しているので、ストレージ200のリストアプログラム222は、リストア処理を継続するために、処理をステップS407へ移行する。一方、カウンタiがn−1以上である場合(S406:No)には、全てのチャンクの処理を完了したことを意味しているので、ストレージ200のリストアプログラム222は、処理をステップS408に移行する。
ステップS407では、ストレージ200のリストアプログラム222は、処理対象チャンクを処理対象コンテンツ内の次のチャンクへ変更し、処理をステップS404に移行する。具体的には、ストレージ200のリストアプログラム222は、カウンタiの値に1を加算し、処理対象チャンクを変更する。例えば、カウンタi=kである場合には、i=i+1に更新することにより、処理対象チャンクを処理対象コンテンツの先頭からk+2番目のチャンクに変更する。
ステップS408では、ストレージ200のリストアプログラム222は、読み出したチャンクを結合してリストア対象のコンテンツを復元する。具体的には、リストアプログラム222は、ステップS405で取得した各チャンクをコンテンツ索引表600のオフセット604と、チャンク長605とに指定される位置に配置することにより、コンテンツを復元する。
次に、ステップS409では、ストレージ200のリストアプログラム222は、復元したコンテンツをBCサーバ100へ転送し、コンテンツの転送が完了した後にリストア処理を終了する。
なお、バックアップ処理に対応するリストア処理について説明したが、BCサーバ100からストレージ200に格納したコンテンツを、BCサーバ100から取得する処理であれば、リストア処理と同様な処理で実現することができる。具体的には、例えば、ティアリング時のコンテンツデータのBCサーバ100への移動や、BCサーバ100からのリードリクエストに対応するコンテンツデータのストレージ200からの取得などに同様な処理を行うことができる。
以上説明したように、上記実施形態に係るBCシステム1によると、BCブロック500のデータ構造を活用し、コンテンツデータの重複排除処理におけるハッシュの計算処理を削減することで、効率的な重複排除処理を実現することができる。
また、上記実施形態では、複数のBCブロック500を含むチャンク400に対するFP410を管理するようにしたので、BC用FPT800のエントリ数を抑制することができ、BC用FPT800のサイズの肥大化や検索処理負荷の増大を防止することができる。このため、BC用FPT800に関わる記憶デバイスの使用量、I/O負荷、ネットワーク帯域負荷等を低減することができる。
次に、第2実施形態に係るBCシステム1Aについて説明する。
本実施形態に係るBCシステム1Aは、図2に示す第1実施形態に係るBCシステム1と同様な構成をしている。
図15は、第2実施形態に係るBCサーバとストレージシステムとの構成図である。なお、図15においては、第1実施形態に係る構成と同様な部分については、同一の符号を付し、重複する説明を省略する。
第2実施形態に係るBCサーバ100Aは、第1実施形態に係るBCサーバ100において、コンテナ索引表920,820を備えないようにするとともに、バックアップ処理時に重複判定処理を実施しないようにしたものである。
図16は、第2実施形態に係るバックアップ処理のフローチャートである。
ステップS501〜S503は、ストレージ200のバックアッププログラム221が実行する処理であり、処理内容は、図11のステップS101〜S103と同様である。ステップS504〜S510は、図13のステップS302、S303、S305〜S308と同様である。ステップS511〜S513は、ストレージ200のバックアッププログラム221が実行する処理であり、処理内容は、図11のステップS109〜S111と同様である。ステップS514は、図11のステップS112と同様である。
第2実施形態に係るバックアップ処理においては、BCサーバ100Aは、重複排除処理を実行しないで、ストレージ200が実行することとなる。
第2実施形態に係るBCシステム1Aにおけるリストア処理は、図14に示す第1実施形態に係るリストア処理と実質的には同様である。
上記した第2実施形態によると、BCサーバ100Aに重複排除機能を有していなくても、サーバ200によりデータの重複排除を適切に行うことができる。このため、BCサーバ100Aの処理負荷の増加を低減しつ、データの重複排除を行うことができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、BCシステム1の全てのBCサーバ100を対象に重複排除を行うようにしていたが、本発明はこれに限れず、例えば、BCシステム1を複数の組織のBCサーバ100で構成する場合において、或る1つの組織に属するBCサーバ100で管理するデータ(コンテンツ)を対象に重複排除を行うようにしてもよい。
また、上記実施形態では、1つのBCブロックチャンク400に複数のBCブロック500を含めるようにしていたが、本発明はこれに限られず、1つのBCブロックチャンク400に1つのBCブロック500を含めるようにしてもよい。
また、上記実施形態では、1以上の取引データ510と直前のブロック500のハッシュ値とをブロック500として構成したブロックチェーン4を例に挙げていたが、本発明はこれに限られず、例えば、奇数番目のブロックを1以上の取引データと1つ前の奇数番目のブロックのハッシュ値とで構成し、偶数番目のブロックを1以上の取引データと1つ前の偶数番目のブロックのハッシュ値とで構成するようにしてもよく、また、奇数番目のブロックを1以上の取引データで構成し、偶数番目のブロックを1以上の取引データと1つ前のブロックのハッシュ値と2つの前のブロックのハッシュ値とで構成してもよく、要は、或るブロックについて、そのハッシュ値を格納した他のブロックを特定できるように管理していればよく、換言すれば、或るブロックと、所定の関係を有する他のブロックがその或るブロックのハッシュ値を管理していればよい。また、例えば、1以上の取引データ(取引データ群)と、直前のブロックに相当するデータ群(ブロック相当データ群:取引データ群及び直前のブロック相当データ群のハッシュ値)のハッシュ値とをブロック化せずに対応付けて管理するようにし、各ブロック相当データ群を発生順に従ってチェーン化した構造としてもよく、要は、ブロック相当データ群から、対応するハッシュ値を特定して取得できるデータ構造であればよい。
また、上記実施形態において、プロセッサが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
1、1A…BCシステム、10…ネットワーク、11…クライアント、12…管理端末、30,40…コンテンツ、31,41…コンテナ、100,100A…BCサーバ、200…ストレージ、400…BCブロックチャンク、410…BC用FP、500…BCブロック、800…BC用FPT、900…通常FPT





Claims (12)

  1. 格納対象データについて重複を排除して保存用記憶デバイスに格納させるデータ重複排除装置であって、
    前記格納対象データは、時系列に管理されている複数のデータ群を含むデータ集合を含み、
    前記データ群は、1以上の管理データを含み、前記データ群のハッシュ値は、前記データ群と所定の関係を有する他のデータ群に記憶されるようになっており、
    前記データ重複排除装置は、前記データ集合を記憶する記憶デバイスと、プロセッサ部を有し、
    前記プロセッサ部は、
    (1)前記データ集合における1以上のデータ群を含む格納単位データの前記1以上のデータ群のハッシュ値を取得し、前記格納単位データに対するフィンガプリントを、取得した前記1以上のデータ群のハッシュ値に基づいて特定し、
    (2)前記格納単位データに対応するフィンガプリントが、前記保存用記憶デバイスに格納されている格納済み格納単位データと同じフィンガプリントであるか否かを判定し、
    (3)前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントであると判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納せず、前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントでないと判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納させる
    データ重複排除装置。
  2. 前記データ集合における前記データ群は、1以上の前記管理データと、直前のデータ群のハッシュ値とを含むブロックとして形成されており、前記データ群の前記管理データと前記ハッシュ値に基づいて生成されるハッシュ値が他のデータ群に格納されている
    請求項1に記載のデータ重複排除装置。
  3. 前記格納単位データは、複数のデータ群を含み、
    前記プロセッサ部は、前記格納単位データに含まれる各データ群のハッシュ値について、排他的論理和をとった値を、前記格納単位データに対応するフィンガプリントとする
    請求項1又は請求項2に記載のデータ重複排除装置。
  4. 前記記憶デバイスは、
    前記保存用記憶デバイスに格納されている1以上の前記格納済み格納単位データのフィンガプリントを含むフィンガプリント情報を記憶する
    請求項1から請求項3のいずれか一項に記載のデータ重複排除装置。
  5. 前記記憶デバイスは、
    前記データ集合の格納先として設定されているデータ集合格納先情報を記憶し、
    前記プロセッサ部は、
    前記格納対象データについて、前記データ集合格納先情報が示す格納先に格納されているか否かによりデータ集合であるか否かを判定し、データ集合である場合には、前記(1)〜(3)を実行する
    請求項1から請求項4のいずれか一項に記載のデータ重複排除装置。
  6. 前記格納対象データは、前記データ集合と、前記データ集合以外のデータとを含み、
    前記プロセッサ部は、
    前記データ集合以外のデータについて、所定のサイズに分割して他種格納単位データを生成し、
    前記他種格納単位データのフィンガプリントを生成し、
    前記他種格納単位データに対応するフィンガプリントが、前記保存用記憶デバイスに格納されている格納済み格納単位データと同じフィンガプリントであるか否かを判定し、
    前記他種格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントであると判定された場合には、前記他種格納単位データを前記保存用記憶デバイスに格納せず、前記他種格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントでないと判定された場合には、前記他種格納単位データを前記保存用記憶デバイスに格納させる
    請求項1から請求項5のいずれか一項に記載のデータ重複排除装置。
  7. 前記格納単位データと、前記他種格納単位データとのサイズを異ならせる
    請求項6に記載のデータ重複排除装置。
  8. 前記記憶デバイスは、
    前記保存用記憶デバイスに格納されている前記格納単位データに対応する前記格納済み格納単位データのフィンガプリントを含む第1フィンガプリント情報と、前記保存用記憶デバイスに格納されている前記他種格納単位データに対応する前記格納済み格納単位データのフィンガプリントを含む第2フィンガプリント情報と、を記憶する
    請求項6又は請求項7に記載のデータ重複排除装置。
  9. 前記データ重複排除装置は、
    前記保存用記憶デバイスを備えるストレージシステムであり、
    前記記憶デバイスは、前記保存用記憶デバイスに格納されている1以上の格納済み格納単位データのフィンガプリントを含むフィンガプリント情報を格納し、
    前記プロセッサ部は、
    他のデータ重複排除装置から格納単位データ及び前記格納単位データのフィンガプリントを受信した場合に、前記フィンガプリント情報に前記受信したフィンガプリントと同じフィンガプリントの格納済み格納単位データが格納されている場合には、前記格納済み格納単位データとの関連性が強い他の格納済み格納単位データのフィンガプリントを、前記他のデータ重複排除装置に送信する
    請求項1から請求項8のいずれか一項に記載のデータ重複排除装置。
  10. 前記プロセッサ部は、
    前記格納単位データのフィンガプリントが、前記格納単位データと同一のデータ群を含む格納済み格納単位データのフィンガプリントと一致しないことを検出した場合に、アラートを発する
    請求項1から請求項9のいずれか一項に記載のデータ重複排除装置。
  11. 格納対象データについて重複を排除して保存用記憶デバイスに格納させるデータ重複排除装置によるデータ重複排除方法であって、
    前記格納対象データは、時系列に管理されている複数のデータ群を含むデータ集合を含み、
    前記データ群は、1以上の管理データを含み、前記データ群のハッシュ値は、前記データ群と所定の関係を有する他のデータ群に記憶されるようになっており、
    前記データ重複排除装置は、
    前記データ集合における1以上のデータ群を含む格納単位データの前記1以上のデータ群のハッシュ値を取得し、前記格納単位データに対するフィンガプリントを、取得した前記1以上のデータ群のハッシュ値に基づいて特定し、
    前記格納単位データに対応するフィンガプリントが、前記保存用記憶デバイスに格納されている格納済み格納単位データと同じフィンガプリントであるか否かを判定し、
    前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントであると判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納せず、前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントでないと判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納させる
    データ重複排除方法。
  12. 格納対象データについて重複を排除して保存用記憶デバイスに格納させるデータ重複排除装置を構成するコンピュータにより実行されるデータ重複排除プログラムであって、
    前記格納対象データは、時系列に管理されている複数のデータ群を含むデータ集合を含み、
    前記データ群は、1以上の管理データを含み、前記データ群のハッシュ値は、前記データ群と所定の関係を有する他のデータ群に記憶されるようになっており、
    前記データ重複排除プログラムは、
    前記コンピュータを、
    前記データ集合における1以上のデータ群を含む格納単位データの前記1以上のデータ群のハッシュ値を取得し、前記格納単位データに対するフィンガプリントを、取得した前記1以上のデータ群のハッシュ値に基づいて特定し、
    前記格納単位データに対応するフィンガプリントが、前記保存用記憶デバイスに格納されている格納済み格納単位データと同じフィンガプリントであるか否かを判定し、
    前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントであると判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納せず、前記格納単位データに対応するフィンガプリントが前記格納済み格納単位データと同じフィンガプリントでないと判定された場合には、前記格納単位データを前記保存用記憶デバイスに格納させる
    ように機能させるデータ重複排除プログラム。
JP2018176443A 2018-09-20 2018-09-20 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム Active JP6884128B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018176443A JP6884128B2 (ja) 2018-09-20 2018-09-20 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム
US16/287,242 US10949405B2 (en) 2018-09-20 2019-02-27 Data deduplication device, data deduplication method, and data deduplication program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018176443A JP6884128B2 (ja) 2018-09-20 2018-09-20 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム

Publications (2)

Publication Number Publication Date
JP2020047107A JP2020047107A (ja) 2020-03-26
JP6884128B2 true JP6884128B2 (ja) 2021-06-09

Family

ID=69883441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018176443A Active JP6884128B2 (ja) 2018-09-20 2018-09-20 データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム

Country Status (2)

Country Link
US (1) US10949405B2 (ja)
JP (1) JP6884128B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11310137B2 (en) 2017-02-05 2022-04-19 Veritas Technologies Llc System and method to propagate information across a connected set of entities irrespective of the specific entity type
CN111045856A (zh) * 2018-10-12 2020-04-21 伊姆西Ip控股有限责任公司 用于管理应用系统的方法、设备和计算机程序产品
US11853575B1 (en) 2019-06-08 2023-12-26 Veritas Technologies Llc Method and system for data consistency across failure and recovery of infrastructure
CN112131041A (zh) * 2019-06-24 2020-12-25 伊姆西Ip控股有限责任公司 用于管理数据放置的方法、设备和计算机程序产品
US20210117389A1 (en) * 2019-10-18 2021-04-22 Vmware, Inc. Network traffic optimization using deduplication information from a storage system
US11531604B2 (en) 2020-02-28 2022-12-20 Veritas Technologies Llc Methods and systems for data resynchronization in a replication environment
US11429640B2 (en) 2020-02-28 2022-08-30 Veritas Technologies Llc Methods and systems for data resynchronization in a replication environment
US11928030B2 (en) * 2020-03-31 2024-03-12 Veritas Technologies Llc Optimize backup from universal share
US11592992B1 (en) * 2020-06-26 2023-02-28 EMC IP Holding Company LLC Verification microservice for a deduplicated object storage system
CN112148220B (zh) * 2020-09-17 2024-03-19 合肥大唐存储科技有限公司 一种实现数据处理的方法、装置、计算机存储介质及终端
CN112199420A (zh) * 2020-10-16 2021-01-08 成都房联云码科技有限公司 一种房产隐私字段信息模糊搜索方法
CN112463774B (zh) * 2020-10-23 2021-10-12 完美世界控股集团有限公司 文本数据的去重方法、设备及存储介质
JP7430625B2 (ja) * 2020-12-07 2024-02-13 株式会社日立製作所 バージョン検証装置、バージョン検証システム及びバージョン検証方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014087508A1 (ja) 2012-12-05 2014-06-12 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US20150213049A1 (en) * 2014-01-30 2015-07-30 Netapp, Inc. Asynchronous backend global deduplication
JP6632945B2 (ja) * 2016-08-02 2020-01-22 Kddi株式会社 重複検出装置、重複検出方法及び重複検出プログラム
JP6841024B2 (ja) * 2016-12-09 2021-03-10 富士通株式会社 データ処理装置,データ処理プログラムおよびデータ処理方法
JP2018106636A (ja) * 2016-12-28 2018-07-05 富士通株式会社 情報処理装置、情報処理方法およびデータ管理プログラム

Also Published As

Publication number Publication date
US10949405B2 (en) 2021-03-16
US20200097452A1 (en) 2020-03-26
JP2020047107A (ja) 2020-03-26

Similar Documents

Publication Publication Date Title
JP6884128B2 (ja) データ重複排除装置、データ重複排除方法、及びデータ重複排除プログラム
US9792306B1 (en) Data transfer between dissimilar deduplication systems
US7478113B1 (en) Boundaries
JP5732536B2 (ja) 重複排除に基づくストレージシステムにおけるスケーラブル参照管理のためのシステム、方法及び非一時的なコンピュータ可読ストレージ媒体
US8880824B1 (en) Global de-duplication in shared architectures
US9305005B2 (en) Merging entries in a deduplication index
US8504528B2 (en) Duplicate backup data identification and consolidation
US9239843B2 (en) Scalable de-duplication for storage systems
US8315985B1 (en) Optimizing the de-duplication rate for a backup stream
US20160196070A1 (en) Systems and methods for retaining and using data block signatures in data protection operations
US9002800B1 (en) Archive and backup virtualization
CN102378973A (zh) 用于数据重复删除的系统及方法
JP2012513069A (ja) コンテンツアウェア・データ分割およびデータ重複排除のための方法ならびに装置
US11544150B2 (en) Method of detecting source change for file level incremental backup
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
US8943024B1 (en) System and method for data de-duplication
JP2012093827A (ja) ファイルの重複を排除する装置及び方法
US20140156607A1 (en) Index for deduplication
EP3477462B1 (en) Tenant aware, variable length, deduplication of stored data
US8126852B1 (en) Merged collections
US11593304B2 (en) Browsability of backup files using data storage partitioning
US20220245097A1 (en) Hashing with differing hash size and compression size
CN109408290B (zh) 一种基于InnoDB的碎片文件恢复方法、装置及存储介质
WO2024082525A1 (zh) 一种文件快照方法、系统、电子设备及存储介质
CN111625186B (zh) 数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201020

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201125

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: 20210420

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210511

R150 Certificate of patent or registration of utility model

Ref document number: 6884128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150