JP5418719B2 - ストレージ装置 - Google Patents

ストレージ装置 Download PDF

Info

Publication number
JP5418719B2
JP5418719B2 JP2013506368A JP2013506368A JP5418719B2 JP 5418719 B2 JP5418719 B2 JP 5418719B2 JP 2013506368 A JP2013506368 A JP 2013506368A JP 2013506368 A JP2013506368 A JP 2013506368A JP 5418719 B2 JP5418719 B2 JP 5418719B2
Authority
JP
Japan
Prior art keywords
data
block
storage device
block data
stored
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
JP2013506368A
Other languages
English (en)
Other versions
JP2013541055A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JP2013541055A publication Critical patent/JP2013541055A/ja
Application granted granted Critical
Publication of JP5418719B2 publication Critical patent/JP5418719B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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
    • 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/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/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/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストレージ装置にかかり、特に、同一内容のデータの重複記憶を排除するストレージ装置に関する。
近年、コンピュータの発達及び普及に伴い、種々の情報がデジタルデータ化されている。このようなデジタルデータを保存しておく装置として、磁気テープや磁気ディスクなどの記憶装置がある。そして、保存すべきデータは日々増大し、膨大な量となるため、大容量なストレージシステムが必要となっている。また、記憶装置に費やすコストを削減しつつ、信頼性も必要とされる。これに加えて、後にデータを容易に取り出すことが可能であることも必要である。その結果、自動的に記憶容量や性能の増大を実現できると共に、重複記憶を排除して記憶コストを削減し、さらには、冗長性の高いストレージシステムが望まれている。
このような状況に応じて、近年では、特許文献1に示すように、コンテンツアドレスストレージシステムが開発されている。このコンテンツアドレスストレージシステムは、データを分散して複数の記憶装置に記憶すると共に、このデータの内容に応じて特定される固有のコンテンツアドレスによって、当該データを格納した格納位置が特定される。また、コンテンツアドレスストレージシステムの中には、所定のデータを複数のフラグメントに分割すると共に、冗長データとなるフラグメントをさらに付加して、これら複数のフラグメントをそれぞれ複数の記憶装置にそれぞれ格納する、というものもある。
そして、上述したようなコンテンツアドレスストレージシステムでは、後に、コンテンツアドレスを指定することにより、当該コンテンツアドレスにて特定される格納位置に格納されているデータつまりフラグメントを読み出し、複数のフラグメントから分割前の所定のデータを復元することができる。
また、上記コンテンツアドレスは、データの内容に応じて固有となるよう生成される値、例えばデータのハッシュ値、に基づいて生成される。このため、重複データであれば同じ格納位置のデータを参照することで、同一内容のデータを取得することができる。従って、重複データを別々に格納する必要がなく、重複記録を排除し、データ容量の削減を図ることができる。
特開2005−235171号公報
ここで、上述したような重複記憶を排除する機能を有するストレージシステムでは、ファイルなど書き込み対象となるデータを所定容量の複数のブロックデータに分割して記憶装置に書き込む。このように、ブロックデータ単位で重複記憶を排除することで、データ容量の削減を図っている。
ところが、書き込み対象データを構成する複数のブロックデータのうちのいくつかが、記憶装置に記憶されていない新たなブロックデータである場合には、当該新たなブロックデータは、現在、所定のデータが格納されている領域の最後に格納される。そして、書き込み対象データが更新される度に新たにブロックデータが格納されることが繰り返されると、当該書き込み対象データを構成する複数のブロックデータが、記憶装置内の記憶領域全体に拡散して格納されることとなる。すると、後にデータを読み出す際には、記憶装置全体に拡散したブロックデータを読み出すべく、膨大な数のディスクを走査しなければならず、読み出し性能が低下する、という問題が生じる。
このため、本発明の目的は、上述した課題である、重複記憶排除機能を有するストレージ装置において、読み出し性能の低下という問題を解決すること、にある。
本発明の一形態であるストレージ装置は、
書き込み対象データを複数のブロックデータに分割するデータ分割手段と、
前記データ分割手段にて分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べるブロック検出手段と、
前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段と、を備え、
前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
という構成をとる。
また、本発明の他の形態であるプログラムは、
情報処理装置に、
書き込み対象データを複数のブロックデータに分割するデータ分割手段と、
前記データ分割手段にて分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べるブロック検出手段と、
前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段と、を実現させると共に、
前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
ことを実現させるためのプログラムである。
また、本発明の他の形態である情報処理方法は、
書き込み対象データを複数のブロックデータに分割し、
分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べ、
分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させることによりデータを書き込む情報処理方法であり、
前記書き込み対象データをブロックデータに分割した後に、当該分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
検出した前記共通割合に応じて、分割した前記ブロックデータを、新たに記憶装置に記憶する、
という構成をとる。
本発明は、以上のように構成されるため、重複記憶排除機能を有するストレージ装置における読み出し性能の低下を抑制することができる。
本発明の実施形態1におけるストレージシステムを含むシステム全体の構成を示すブロック図である。 本発明の実施形態1におけるストレージシステムの構成の概略を示すブロック図である。 本発明の実施形態1におけるストレージシステムの構成を示す機能ブロック図である。 図3に開示したストレージシステムにおけるデータ書き込み処理の様子を説明するための説明図である。 図3に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。 図3に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。 図3に開示したストレージシステムにおけるデータ書き込み処理の様子を説明する説明図である。 図3に開示したストレージシステムにおけるデータ書き込み処理の動作を示すフローチャートである。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の実施形態2で説明する論文で参照する図である。 本発明の付記1におけるストレージ装置の構成を示すブロック図である。
<実施形態1>
本発明の第1の実施形態を、図1乃至図8を参照して説明する。図1は、システム全体の構成を示すブロック図である。図2は、ストレージシステムの概略を示すブロック図であり、図3は、ストレージシステムの構成を示す機能ブロック図である。図4乃至図7は、ストレージシステムにおけるデータ書き込み処理の動作を説明するための説明図である。図8は、ストレージシステムの動作を示すフローチャートである。
ここで、本実施形態は、後述する付記に記載のストレージ装置等の具体的な一例を示すものである。そして、以下では、ストレージシステムが、複数台のサーバコンピュータが接続されて構成されている場合を説明する。但し、本発明におけるストレージシステムは、複数台のコンピュータにて構成されることに限定されず、1台のコンピュータで構成されていてもよい。
図1に示すように、本発明におけるストレージシステム1は、ネットワークNを介してバックアップ処理を制御するバックアップシステム4に接続している。そして、バックアップシステム4は、ネットワークNを介して接続されたバックアップ対象装置5に格納されているバックアップ対象データ(書き込み対象となるデータ)を取得し、ストレージシステム1に対して記憶するよう要求する。これにより、ストレージシステム1は、記憶要求されたバックアップ対象データをバックアップ用に記憶する。
そして、図2に示すように、本実施形態におけるストレージシステム1は、複数のサーバコンピュータが接続された構成を採っている。具体的に、ストレージシステム1は、ストレージシステム1自体における記憶再生動作を制御するサーバコンピュータであるアクセラレータノード2と、データを格納する記憶装置を備えたサーバコンピュータであるストレージノード3と、を備えている。なお、アクセラレータノード2の数とストレージノード3の数は、図2に示したものに限定されず、さらに多くの各ノード2,3が接続されて構成されていてもよい。
さらに、本実施形態におけるストレージシステム1は、データを分割及び冗長化し、分散して複数の記憶装置に記憶すると共に、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定するコンテンツアドレスストレージシステムである。このコンテンツアドレスストレージシステムについては、後に詳述する。
なお、以下では、ストレージシステム1が1つのシステムであるとして、当該ストレージシステム1が備えている構成及び機能を説明する。つまり、以下に説明するストレージシステム1が有する構成及び機能は、アクセラレータノード2あるいはストレージノード3のいずれに備えられていてもよい。なお、ストレージシステム1は、図2に示すように、必ずしもアクセラレータノード2とストレージノード3とを備えていることに限定されず、いかなる構成であってもよく、例えば、1台のコンピュータにて構成されていてもよい。さらには、ストレージシステム1は、コンテンツアドレスストレージシステムであることにも限定されず、重複排除機能を有しているストレージシステムであればよい。
図3に、本実施形態におけるストレージシステム1の構成を示す。この図に示すように、ストレージシステム1は、サーバコンピュータにて構成され、所定の演算処理を行う演算装置(図示せず)と、記憶装置20と、を備える。そして、ストレージシステム1は、上記演算装置にプログラムが組み込まれることで構築された、データ分割部11と、ブロック検出部12と、データ書き込み部13と、データ読み出し部14と、を備えている。
なお、実際には、上述したストレージシステム1が備える構成は、図2に示したアクセラレータノード2及びストレージノード3がそれぞれ備えているCPU(Central Processing Unit)などの演算装置やハードディスクドライブなどの記憶装置にて構成されている。
ここで、上述したように、本実施形態におけるストレージシステム1は、コンテンツアドレスストレージシステムである。このため、ストレージシステム1は、コンテンツアドレスを利用してデータを記憶装置20に格納する機能を有しており、以下に説明するように、データを分割及び分散し、かつ、コンテンツアドレスにて格納位置を特定して、データを格納する。以下、ストレージシステム1にてコンテンツアドレスを利用したデータ書き込み処理について、図4、図5、図8を参照して説明する。
まず、図4及び図5の矢印Y1に示すように、ストレージシステム1が書き込み要求されたファイルAの入力を受ける。すると、データ分割部11が、図4及び図5の矢印Y2に示すように、ファイルAを所定容量(例えば、64KB)のブロックデータDに分割する(図8のステップS1)。
続いて、ブロック検出部11は、分割されたブロックデータDのデータ内容に基づいて、当該データ内容を代表する固有のハッシュ値Hを算出する(図5の矢印Y3)。例えば、ハッシュ値Hは、予め設定されたハッシュ関数を用いて、ブロックデータDのデータ内容から算出する。
続いて、ブロック検出部11は、ファイルAのブロックデータDのハッシュ値Hを用いて、当該ブロックデータDが既に格納されているか否かを調べる(図8のステップS2)。具体的には、まず、既に格納されているブロックデータDは、そのハッシュ値Hと格納位置を表すコンテンツアドレスCAとが、関連付けられてMFI(Main Fragment Index)ファイルに登録されている。従って、格納前に算出したブロックデータDのハッシュ値HがMFIファイル内に存在している場合には、既に同一内容のブロックデータDが格納されていると判断できる(図5の矢印Y4、図8のステップS3でYes)。この場合には、格納前のブロックデータDのハッシュ値Hと一致したMFI内のハッシュ値Hに関連付けられているコンテンツアドレスCAを、当該MFIファイルから取得する。そして、このコンテンツアドレスCAを、書き込み要求されたブロックデータDのコンテンツアドレスCAとして返却する。
そして、データ書き込み部13は、返却されたコンテンツアドレスCAが参照する既に格納されているデータを、書き込み要求されたブロックデータDとして使用する(図8のステップS8)。つまり、書き込み要求されたブロックデータDの格納先として、返却されたコンテンツアドレスCAが参照する領域を指定することで、当該書き込み要求されたブロックデータDを記憶したこととする。これにより、書き込み要求にかかるブロックデータDを、実際に記憶装置20内に記憶する必要がなくなる。
また、上記ブロック検出部11にて、書き込み要求にかかるブロックデータDがまだ記憶されていないと判断された場合には(図8のステップS3でNo)、以下のようにして、データ書き込み部13にて書き込み要求にかかるブロックデータDの書き込みを行う(図8のステップS7)。まず、書き込み要求にかかるブロックデータDを圧縮して、図5の矢印Y5に示すように、複数の所定の容量のフラグメントデータに分割する。例えば、図4の符号D1〜D9に示すように、9つのフラグメントデータ(分割データ41)に分割する。そしてさらに、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう冗長データを生成し、上記分割したフラグメントデータ41に追加する。例えば、図4の符号D10〜D12に示すように、3つのフラグメントデータ(冗長データ42)を追加する。これにより、9つの分割データ41と、3つの冗長データとにより構成される12個のフラグメントデータからなるデータセット40を生成する。
続いて、上述したように生成されたデータセットを構成する各フラグメントデータを、記憶装置に形成された各記憶領域に、それぞれ分散して格納する。例えば、図4に示すように、12個のフラグメントデータD1〜D12を生成した場合には、複数の記憶装置内にそれぞれ形成したデータ格納ファイルに、各フラグメントデータD1〜D12を1つずつそれぞれ格納する(図5の矢印Y6参照)。
続いて、ストレージシステム1は、上述したように格納したフラグメントデータD1〜D12の格納位置、つまり、当該フラグメントデータD1〜D12にて復元されるブロックデータDの格納位置を表すコンテンツアドレスCAを生成して管理する。具体的には、格納したブロックデータDの内容に基づいて算出したハッシュ値Hの一部(ショートハッシュ)(例えば、ハッシュ値Hの先頭8B(バイト))と、論理格納位置を表す情報と、を組み合わせて、コンテンツアドレスCAを生成する。そして、このコンテンツアドレスCAを、ストレージシステム1内のファイルシステムに返却する(図5の矢印Y7)。すると、ストレージシステム1は、バックアップ対象データのファイル名などの識別情報と、コンテンツアドレスCAとを関連付けてファイルシステムで管理する。
また、ブロックデータDのコンテンツアドレスCAと、当該ブロックデータDのハッシュ値Hと、を関連付けて、各ストレージノード3がMFIファイルにて管理する。このように、上記コンテンツアドレスCAは、ファイルを特定する情報やハッシュ値Hなどと関連付けられて、アクセラレータノード2やストレージノード3の記憶装置に格納される。
さらに、ストレージシステム1は、上述したように格納したファイルを読み出す制御を、データ読み出し部14により行う。例えば、ストレージシステム1に対して、特定のファイルを指定して読み出し要求があると、まず、ファイルシステムに基づいて、読み出し要求にかかるファイルに対応するハッシュ値の一部であるショートハッシュと論理位置の情報からなるコンテンツアドレスCAを指定する。そして、コンテンツアドレスCAがMFIファイルに登録されているか否かを調べる。登録されていなければ、要求されたデータは格納されていないため、エラーを返却する。
一方、読み出し要求にかかるコンテンツアドレスCAが登録されている場合には、上記コンテンツアドレスCAにて指定される格納位置を特定し、この特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。このとき、各フラグメントが格納されているデータ格納ファイルと、当該データ格納ファイルのうち1つのフラグメントデータの格納位置が分かれば、同一の格納位置から他のフラグメントデータの格納位置を特定することができる。
そして、読み出し要求に応じて読み出した各フラグメントデータからブロックデータDを復元する。さらに、復元したブロックデータDを複数連結し、ファイルAなどの一群のデータに復元して返却する。
ここで、上記のようにストレージシステム1にて書き込み要求にかかるデータを書き込むと、上述したように、当該データを分割した複数のブロックデータが記憶装置内に拡散して格納されることがある。すると、読み出し性能が低下するおそれがあるが、かかる問題を解決するために、本実施形態におけるストレージシステム1は、以下の機能も備える。以下、図6乃至図8を参照して詳述する。
まず、ブロック検出部12は、上述したように、書き込み要求にかかるデータAを分割したブロックデータと同じ内容のブロックデータが、記憶装置20に既に格納されているか否かを調べる(図8のステップS1,ステップS2)。例えば、図6に示す例では、まず、書き込み要求にかかるデータAを分割したブロックデータ1を、今、記憶処理する対象となる対象ブロックとし、これと同じ内容のブロックデータが、記憶装置20内に記憶されたデータBに存在するか否かを調べる。
そして、図6の斜線に示すように、記憶装置20内にも対象ブロックと同じ内容のブロックデータ1が存在している場合には(図8のステップS3でYes)、ブロック検出部12は、書き込み要求にかかるデータA内の対象ブロック(ブロックデータ1)から連続する複数のブロックデータも取得する。図6に示す例では、書き込み要求にかかるデータA中の所定範囲を構成するブロックデータ1〜8からなる連続ブロックデータA1を取得する。これと共に、ブロック検出部12は、記憶装置20内に記憶されたデータBのうち、上記対象ブロックと同一内容のブロックデータ1から連続する領域に格納された複数のブロックデータ、つまり、図6に示す例では、データB中の所定範囲を構成するブロック1、C,B,7,Gからなる連続ブロックデータB1を取得する。なお、書き込み要求にかかるデータAから取得する連続ブロックデータA1は、例えば、5MB容量に相当する数のブロックデータであり、記憶装置20内のデータBから取得する連続ブロックデータB1は、例えば、2MB容量に相当する数のブロックデータである。このように、各連続ブロックデータA1,B1は、相互に容量が異なっていてもよく、あるいは、同一であってもよい。
さらに、ブロック検出部12は、上述したように書き込み要求にかかるデータAから取得した連続ブロックデータA1に含まれる各ブロックデータと、記憶装置20内から取得した連続ブロックデータB1に含まれる各ブロックデータと、の共通部分の割合を表す共通割合を検出する(図8のステップS4)。例えば、上述したように各ブロックデータのハッシュ値を用いて、一致するブロックデータの数を検出する。図6の例では、各連続ブロックデータA1,B1において、2つのブロックデータ1,7が共通しており、その割合を共通割合として検出する。
その後、データ書き込み部13は、上述したようにブロック検出部12にて検出した共通割合の値に応じて、以下のようにブロックデータの書き込みを行う。まず、共通割合が予め設定された値より大きい場合(例えば、50%より大きい場合)には(図8のステップS5でNo)、書き込み要求にかかるデータAの対象ブロック(ブロックデータ1)について通常の書き込み処理を行う。つまり、書き込み要求にかかるデータAの対象ブロックは、同一内容のブロックデータが既に記憶装置20に格納されているため、この記憶装置20に既に格納されているブロックデータを参照する処理を行い、重複記憶を行わない(図8のステップS8)。
このように、各連続ブロックデータの共通割合が大きい場合には、書き込み要求にかかるデータAの対象ブロックに続く他のブロックデータも、記憶装置20内の対象ブロックと同一内容のブロックデータから後ろの所定範囲の領域に記憶されていると言えるため、上述したように対象ブロックについて通常の格納処理を行う。そして、その後は、書き込み要求にかかるデータAの次のブロックデータ2を対象ブロックとして、上述同様の処理を行う。これにより、書き込み要求にかかるデータAを後に読み出す際には、既に記憶されているデータBの連続するブロックデータを読み出すことで、効率よくデータAを読み出すことができる。また、ブロックデータの重複記憶排除も行われているため、記憶容量の削減を図ることができる。
一方で、共通割合が予め設定された値以下である場合(例えば、10%以下の場合)には(図8のステップS5でYes)、書き込み要求にかかるデータAの対象ブロック(ブロックデータ1)を、新たに記憶装置20に書き込む(図8のステップS6)。つまり、図6の例の場合には、一致する共通ブロックが2つのみであり、共通割合が予め設定された値以下となるため、ブロックデータ1が記憶装置20に既に記憶されているものの、当該ブロックデータ1を再書き込みブロックデータとして、記憶装置20に書き込む(図7参照)。このとき、再書き込みされるブロックデータ1は、記憶装置20内においてデータが既に書き込まれている領域の最後に書き込まれる。その後は、書き込み要求にかかるデータAの次のブロックデータ2に対して、上述同様に、図8のステップS1からS8までの処理が行われる。例えば、ブロックデータ2が記憶装置20内にまだ記憶されていない場合には、当該記憶装置20内において、上述したように再書き込みされたブロックデータ1の次の領域に書き込まれることとなる。
このように、各連続ブロックデータの共通割合が小さい場合には、書き込み要求にかかるデータAの対象ブロック及びこれに続く各ブロックデータが、記憶装置20内に分散して記憶されていると言えるため、書き込み要求にかかるデータAの対象ブロックを新たに書き込む。これにより、後にデータAを後に読み出す際には、記憶装置20内の連続する領域に書き込まれたブロックデータを読み出すことで、データAを構成する複数のブロックデータをまとめて読み出せる可能性が高くなり、読み出し性能の向上を図ることができる。
ここで、上述したブロック検出部12にて書き込み要求にかかる連続ブロックデータと既に記憶されている連続ブロックデータとの共通割合を検出する際には、各連続ブロックデータ内における各ブロックデータの並び順は関係ない。つまり、両方の連続ブロックデータ内のいずれかの位置に、同一内容のブロックデータが存在していれば、そのブロックデータは共通していると検出される。そして、ブロックデータが共通している数によって、共通割合を検出する。なお、共通割合の値は、ブロックデータが共通している数の値でもよく、連続ブロックデータ内でブロックデータが共通する割合でもよい。このように、各連続ブロックデータ内における各ブロックデータの並び順を考慮せず共通割合を検出する理由は、上述したように読み出しの際に、記憶装置20内の連続する領域に書き込まれた連続ブロックデータを読み出すことで、近傍にある関連するブロックを一度に読み出しすることができるためである。
また、データ書き込み部13は、上述したように、いかなる場合も新たにブロックデータを書き込むわけではなく、以下の条件を満たす場合にのみ新たにブロックデータを書き込む。例えば、データ書き込み部13は、書き込み要求にかかるデータA(一例として、現在の書き込み要求にかかる一連のストリームデータ)のうち既に記憶装置20に書き込んだデータの容量に対する、重複して新たに記憶装置20に書き込んだブロックデータの容量の割合を算出し、その割合が所定の割合(例えば、5%)以下である場合に、ブロックデータの書き込みを行う。これにより、記憶装置20に対して重複記憶されるブロックデータの容量を抑制することができる。また、記憶装置20への再書き込みの容量を抑制することで、再書き込みによる書き込み速度の低下を抑制することができる。なお、ブロックデータを再度書き込む条件は任意であり、例えば、書き込んだブロックデータの容量が、記憶装置20の容量に応じて予め設定された容量以下である、ことを条件としてもよい。
以上のように、本実施形態におけるストレージシステムによると、重複記憶排除を行いつつ、記憶装置内の記憶領域全体に対するブロックデータの拡散を抑制することができる。このため、後にデータを読み出す際には、多くの数のディスクを走査することを抑制することができ、読み出し性能の低下を抑制することができる。一方で、読み出し性能の低下を抑制するために、ブロックデータの重複記憶を許容しているが、その容量を抑制することで、記憶容量の増加も抑制することができる。
<実施形態2>
本発明の第2の実施形態を、以下の論文形式にて説明する。
<第1章 序論>
重複排除は、約10年の間、ストレージ装置においては話題となっている。ある文献では、バックアップを実行するために必要な時間と、バックアップデータを保持するために必要な記憶領域と、の両方を削減する方法の効果が記載され検証されている。今日では、重複排除機能を有するストレージシステムは、バックアップ性能の新しい記録を発表し、市場には多くのベンダーによって提案された様々な重複排除技術があふれている。そして、実際には、重複排除はバックアップシステムの特性として必須のものとなっている。
元来、重複排除システムの性能は、データの重複排除率、最大書き込み能力、リストア処理能力によって表される。各作業環境においてユーザによって達成される実際の性能は、様々な理由からよく異なる。特に、通常、読み出し処理性能は、空のシステムに記憶される最初のバックアップに対しては非常によいが、その後のバックアップに対しては低下する。このことの主な原因は、結果として過去の複数のバックアップに分散された最近のバックアップに論理的に属するデータとなるインライン重複排除により導入されたデータの断片化である。実際に、ますます多くのデータが過去のバックアップに配置されるため、データの断片化の影響は、バックアップ毎に増大する。我々による性能実験では、データの特徴やバックアップパターンといったデータセットに応じて、最大で50%以上も少ない読み出し性能の減少を示している。我々のデータセットは多くて15の後述するバックアップをカバーしているので、より多くのバックアップが実行される時に、これ以上のパーセンテージを期待している。
後に行われるバックアップにおける断片化の増加は、post-process (off-line)
forward-pointing 重複排除と呼ばれる技術で完全に回避させることができる。最新バックアップが重複排除なしで保存され、その後に、バックグランド処理にて、ブロックの最新コピーが保存されるという方法の処理が実行される。この方法では、最新バックアップがいつも断片化されず、バックアック世代に伴い断片化が増加する。通常、我々は最新バックアップをリストアするので、このような方法は優れているように見える。しかし、かかる方法は、たくさんの問題があり、最も深刻なことは、重複排除前のデータが必要とする領域による記憶容量が増加することと、重複データの新しいコピーの書き込みは、データインラインのように通常重複排除するよりもずっと遅いため、書き込み性能が大幅に減少することである。そして、新しいデータを書き込むことはネットワークを介したデータ転送とディスクへの格納を必要とするため、上述した後者の問題が起こる。ハッシュ値に基づいた重複排除は、ブロックハッシュをシステムに格納されたブロックハッシュと比較することだけを必要とする。
The holy grailは、ここでは、書き込み性能が低下せず、また、重複排除の効果に影響を及ぼすことなく、リストア性能の低下を避けることである。言い換えると、重複排除技術は、断片化によって引き起こされるいかなる性能の低下なしに、インライン方式の高い書込み量と高いリストア性能を達成すべきである。
本論文では、以下のことを説明する。次の章では、本発明の動機付けを説明すると共に、本発明に至るまでの問題の重要性を示すいくつかの例を説明する。第3章では、断片化の問題の本質に迫り、解決に必要なものを確認する。第4章では、我々の解決手法が適用できるバックアップシステムについての条件の詳細を示す。第5章では、context-based
rewriting(いわゆるCBR)と呼ばれる解決手法を示し、その後にその議論及び将来的な拡張について示す。第6章では、性能試験の前提と方法を示す。性能結果の検討を含む我々のアルゴリズムの改良は、第7章で示す。第8章では、断片化の問題に対する他の解決策と共に、関連する研究を説明する。最後に、第9章では、結論と今後の研究に対する方向性を示す。
<第2章 動機づけ>
(2.1 問題の序論)
問題を説明するために、1つのファイルシステムのフルバックアップが毎週行われることを想定する。加えて、例えば、ブロックの最も古いコピーが保持されるといった、backward-pointing重複排除機能を有するバックアップシステムを想定する。これは、新しいコピーが書き込まれないようなインライン重複排除と同様のケースである。
通常、ファイルシステムは、2つのバックアップ間では大きな変更はなされず、その後の第2バックアップの多くの重複が検出され、重複して記憶されない。最終的には、第1バックアップが連続する記憶領域に格納され、第2バックアップの新しいブロックが全て、現在格納されている領域の最後に記憶される(図9参照)。(図9:重複排除によるバックアップ断片化のプロセス)
後述するバックアップ中では、以下のようなシナリオが継続する。いくつかのバックアップの後には、最新バックアップのブロックは、全ての記憶領域中に拡散している。すると、最新バックアップを読み出すために必要とされる走査ディスクの数が膨大な数になり、その結果、図9の最新バックアップにおけるリストアプロセスに示すように、非常に低い読み出し性能となってしまう。
データが拡散されるプロセスは断片化と呼ばれ、重要なリストア時には非常に有害となりうる。ここで重大なことは、上述したシナリオは典型的であり、ユーザデータが消失したときにリストアのために必要とされることがもっともあり得る最新に書き込まれたバックアップが、最も高い断片化に至ってしまうことである。
(2.2 問題の重大さ)
断片化の問題は明らかではあるが、その重大性から今後の研究が必要である。このため、我々は、インライン重複排除ストレージシステムに対して4つのバックアップデータセットを書き込むことをシミュレーションする。次に、我々は、固定サイズ先読みを用いて各バックアップのリストアをシミュレーションした。実験中、最大限可能な重複排除率を確保するために、全ての重複ブロック(8KBのサイズに要求され、「ロビンフラグメントチャンキングアルゴリズム」で生成された)は排除された。各バックアップ後、リストア性能を、システムで1つのバックアップだけが存在しているときに達成される最大性能に対するパーセンテージとして計測した。
分析を簡単にするために、本研究において、読み出し性能は、リストア中に実行されるデータ入出力処理の数に反比例していると仮定する。もちろん性能が他の障害に影響をうけるシステムがあるが、性能と固定サイズの入出力の数とを関連付けることで、ネットワークやCPU速度のような二次的な要素を無視して、断片化問題の核心に集中することができる。
図10は、バックアップストリームの世代間の断片化無しの各バックアップにおいて得られた「100」を基準とした最大性能に対して、様々なバックアップセットに対するリストア性能を示す。ここで、「45」という数字は、特定のバックアップセット及びバックアップ回数において最大リストア性能の約45%だけが得られた、ということを意味している。つまり、そのようなバックアップのリストアでは、バックアップストリームを横断する断片化のため、2回以上遅くなる。
図10を見ると、いくつかの興味深いデータとなっている。第一に、時間が経つにつれて、断片化が拡大し、増加している傾向にある(いくつか珍しい例外があるが)。第二に、達成できる読み出し性能が、7回の課題格納バックアップ後に最大性能の45%から、8回のwikiバックアップ後に最大性能の約88%へと変化しているように、各データセットにおける要素の異なる影響がある。(図10:各バックアップにおける最大可能性能に対する割合での読み出し性能(リストアに必要なI/O数に反比例))
結果としてそのような変化がもたらす最も重要な要素は、以下の通りである。
−ストリームにおける重複の数:一般的に、重複の少ない断片は、結果として小さい断片化になる。しかし、このルールに例外も起こり得る。
−重複した新しいデータパターンの特徴:新しいデータが連続して配置されるか、あるいは、重複間で短く連続するか。また、オリジナルな書き込みのとき、最新バックアップで長く連続して重複が現れるか、あるいは、ランダムであるか。
−既にバックアップしたストリームのバージョン数:多くのバックアップが、重複排除に反するストリームを意味しており、その結果、より高い断片化の可能性がある。
−ストリームのサイズ:大きなストリームは、通常めったに変更されないいくつかルートデータを有しており、そのようなデータは、全体としてストリームの断片化が減少するため、小さなストリームで高い断片化を引き起こすことはより容易である。
本論文では、バックアップ断片化におけるこれらの要素のそれぞれによる影響の個々の解析を行わない。我々の決定は、一方では、本論文に利用可能な限られた範囲によって動機づけられているが、他方では、これら要因の多くは、通常、変わることがないユーザデータに固有の特徴とバックアップ記憶方法とに関連している。しかしながら、これら要素の検討は、特別なユーザにとっての断片化問題の重大さを予測するためにおいて確かな理由となる。
<第3章 重複排除バックアップVS断片化>
断片化は、重複排除の副産物(もっと正確にいえば、無駄)である。バックアップ間で干渉なく個別の連続したディスク領域に各バックアップを保持することによって、完全に断片化を排除することは可能である。しかし、このような場合には、重複排除はない。
リストア性能における断片化の影響を実質的に排除する別の方法としては、重複排除に期待される大きなブロックサイズを用いることである。このような場合、各ブロックに対するディスクシークを必要とするとはいえ、シークタイムは、読み出しブロックデータに必要とされる時間によって決定されるため、断片化が起きてもリストア速度はあまり低下しない。
例えば、4MBの要求されたブロックサイズで、40MB/sの読み出しディスク性能及び5msシークタイムでは、各ブロック読み出しにおけるシーク動作では、約5%リストア時間が増加する。しかしながら、重複排除にとって最適なブロックサイズは、特別なデータパターンやストレージシステムの特徴に応じて、4KBと16KBの間で変化する。(ここで留意すべきは、重複排除の有効性を計算することにおいてブロックメタデータを含むことを必要とする。)より大きなブロックでは、重複排除はより有効ではなくなる。従って、そのような大きなブロックを使用することは現実的ではない。
(3.1 断片化の影響を減少させるアイデア)
重複排除のため、全てのバックアップにおいて断片化を完全に排除できないが、書き込み性能や重複排除の有効性のような他の性能の測定基準がさらに悪くなることなしに、大部分のケースにおいて断片化によって生じるリストア速度の低下を排除しようとすることはできる。その方法は、故障後のデータリストアの通常のケースでは、最新(あるいは、最新に近い)のデータバックアップから実行されるという観測に基づいている。これは、ユーザは通常、最も最近のデータにリストアされることを希望するためである。
上記観測に基づいて、より古いものを犠牲にすることなく最新バックアップに対する断片化を排除しようとしている。その方法の一例を図11に示す。この図は、世代と共に断片化が減少している7つのバックアップストリーム(「オリジナル」の曲線)による基本的な断片化と、オフラインで断片化をしないで再び行われた同じバックアップ(「断片化なし」)、つまり、バックアップ世代と共に断片化が増加し、結果として連続的にディスクに書き込まれた最新バックアップと、を表している。我々は、まだ漠然としたオンライン非断片化プロセスで同様の効果を得たい。(図11は、オフライン重複排除[各バックアップ(7つの開発計画バックアップの実例)を書き込む]後における各バックアップ断片化を示す。)
(3.2 課題解決に必要なもの)
断片化の問題は、重複排除システムの他の重要な測定基準において負の効果のない解決策を必要とする。想定している解決方法は以下の通りである。
−最新バックアップに対するリストア性能の低下を解消する(1つのバックアップだけがシステム全体に格納されている場合に達成される性能と比較して)。
−進行中のバックアップに対する非常に小さい性能低下をとりいれる(解決策なしの場合と比較)。
−重複の効果を低下せず、一般的に小さな追加領域を使用する
−ディスク性能、スピンドルや演算処理の性能のように、多くの追加リソースを必要としない。
−アドレス指定による選択領域の指定を処理しやすいこと。
<第4章 インライン重複排除機能を有するバックアップシステム>
次のセクションで示す本発明の重複排除方法を実現するために、バックアップストレージが以下の特徴を備えていることとする。
−コンテンツアドレス機能:
これは、以下に示す特徴に有益な基本となる特徴である。
−ブロックハッシュの存在をチェックすることに基づく重複排除クエリ機能:
ハッシュやメタデータはブロック全体よりもずっと小さく、ストリーミングアクセスにおいて簡単に先読み(プリフェッチ)できるので、そのようなクエリが、ハッシュを用いて作動し、メタデータだけを読み出すことは、極めて重要である。より重要なことは、ブロックを全て読み出すことによって重複排除することは、結果として断片化されたストリームを読み出すことになり、総合して非常に低い書き込み性能となることである。ここで我々は、高い断片化では、ブロックメタデータでさえ十分早く読み出すスピンドルを有していないことに注意すべきである。しかしながら、フラッシュメモリに基づいてこの問題を解決する方法が存在する。但し、SSDは、すべてのバックアップデータを保持するためにはあまりに小さく、高価である。
−ディスク隣接ブロックの高速決定機能:
与えられた2つのブロックがそれぞれ近接する異なるディスクに存在するかどうかを、迅速に決定することができる。これは、多くの方法で実現できるが、簡単にするために、システム内におけるブロックの存在を確認する各重複排除クエリが、ディスク上のブロックの位置を返却することとする。2つのブロックが近接するディスクに存在することを確かめる別の方法は、ディスク上のブロックの1つに近いブロックのハッシュを取得し、第2ブロックのハッシュが、取得したハッシュの1つであるかをチェックすることである。これらの方法を結合することも可能である。
−システムに既に存在するブロックを書き込む機能:
これは、読み出し性能を向上させるために再びブロックを格納させる決定がなされるときに必要とされる。既に格納されている全てのバックアップが、古いコピーの代わりに新しいコピーを使用することができる方法においては、上述した再書き込みは、効果的にこれまでのコピーを無効にする。
上記特徴は非常に単純であるため、次のセクションで示すアルゴリズムは、インライン重複排除機能を有するほとんどのシステムに適用可能なよう、非常に一般的で簡単に見える。
<第5章 CBR:リライトに基づくコンテキスト>
(5.1 ブロックコンテキスト)
本発明におけるアルゴリズムは、ディスクコンテキストとストリームコンテキストといった重複の2つのコンテキストを利用する。データブロックのブロックストリームコンテキストは、このブロックのすぐ後にこのストリームで書き込まれるブロックセットとして定義される。また、データブロックのディスクコンテキストを、ディスク上でそのすぐ後に続くブロックとして定義する(図12参照)。これら2つのコンテキストの共通部分が多いときには、この共通部分において先読みすることによりブロックの読み出しが非常に高速である。実際、これは、特に初期バックアップに対して、かなり頻繁に起こり得る。(図12:ブロックのディスクコンテキストとストリームコンテキスト)
ディスクコンテキストがストリームコンテキストの少しだけのデータを含むとき、読み出し性能が低下するという問題が生じる。これは、同じブロックが論理的に複数のストリームの位置(各位置において異なる近隣ブロックを有する)に存在するとき、重複排除のために起こり得る。そのようなシナリオは、以下の状況で起こる。
−異なる論理的バックアップにおいて、重複が存在する場合(グローバル重複)
−同じストリームにおいて、重複が存在する場合(インターナル重複)
−同じストリームの過去のバージョンの一つに対して重複が存在する場合、例えば、1週間前にバックアップされた同じファイルシステム(インターバージョン重複)
同じデータのバックアップが繰り返されることから、一般的に最も多いのは、最後のケースである。さらに、各バックアップで一般的に増加するインターバージョン重複によって断片化が生じる。その結果、以下では、このケースに焦点を当てる。インターナル重複の効果は、セクション6.4で説明するようにときどき重要であるが、通常はバックアップの回数の増加に伴って悪化しない。本論文では、全ての実験においてインターナル重複によって生じる断片化の影響を検討しているが(つまり、本研究で示す各I/O計測はこの影響を含むが)、この問題の解決には焦点は当てない。
(5.2 アルゴリズムの概要)
解決方法の基本的な考え方は、非常に断片化された重複を再書き込みすることである。つまり、ブロックのオリジナルコピーがいくつかの古いバックアップに書き込まれているとき、最新バックアップのストリームコンテキストに対応するブロックは、既存のディスクコンテキストとははっきりと異なる。そのようなブロックを再書き込みすることによって、両コンテキストを類似させようとする。再書き込み後、ブロックの新しいコピーは読み出し処理に用いられ、古いコピーは最終的にはバックグランドで回収される。
各再書き込みは、バックアップ速度の低下と、ブロックの古いコピーが回収されるまで追加領域の消費をもたらすため、少量のブロックだけを再書き込みする。書き込み限度と呼ばれるパラメータは、初期設定では、全てのブロックの5%にセットされる。この値は、セクション6.2.3に詳細を示すように、アルゴリズムがバックアップの書き込み速度をどのくらい低下させるか、ということに影響を与える。
まだ再書き込み判定をしていない現在のポイントの後、アルゴリズムのメインループは、次の重複ブロックを見つける。そのようなブロックを判定ブロックと呼ぶ。アルゴリズムは、現在のディスクコンテキストとストリームコンテキストとを比較することによって、それを再書き込みするかどうかを判定する。これら2つのコンテキストの共通部分が小さい場合には、少しの有用なデータを読み出すための追加ディスクシークを避けるよう、判定ブロックを再書き込みさせる。
逆に、2つのコンテキストの共通部分が多い場合には、たくさんの有益なデータを読み出すために必要な時間によって追加シークタイムが費やされるので、再書き込みは望ましくない。そのようなケースでは、共通部分における全てのブロックを再書き込みしないよう判定する。つまり、それらを重複したままとする。従って、ディスクコンテキストの全体サイズに対する、ストリームコンテキストに属さないブロックのディスクコンテキストにおける当該ディスクコンテキストのサイズ、のような重複の再書き込み有効度を定義する。例えば、ディスクコンテキストにおけるブロックの70%がストリームコンテキストにも表れる場合には、30%の有効度を意味する。アルゴリズムは、再書き込み有効度が閾値よりも小さくないときにだけ、再書き込み有効性の現在の閾値を保持し、判定ブロックを再書き込みする。
上述したような判定を行った後、まだ再書き込み判定していないストリームの次の重複に対して、メインループの次の繰り返しにより全体プロセスが繰り返される。
重複を再書き込みリライトするかどうかの判定がオンライン(今後の知識なしに)で行われるので、例えば、再書き込みすると判定することによって、その再書き込みの「信用」が後のストリームにおける別の重複のためにさらに保存されうるが(全てのブロックの5%以下で再書き込みされる)、与えられた重複にとって常に予備的に選択を行うことができる。あるいは、重複を再書き込みしないことの判定によって後のストリームにおいてよい候補が現れるかもしれない。しかし、実際には、そのような候補は将来において姿を表わさない。
従って、アルゴリズムの課題は、よい再書き込み判定を行うことである。このため、2つの再書き込み閾値、最小再書き込み有効度閾値と、現在有効度閾値を保持する。
(5.2.1 最小限の再書き込み有効度)
「最小有効度」は、アルゴリズムのパラメータであり、現在の再書き込みの有効度の閾値がそれ以下に決して低下しないことを保障している。このとき、リストア性能がほんのわずか改善される再書き込み判定を回避する。最小有効度は、多く再書き込みされないケースでは、あまり高い値ではなく、再書き込みがあまりに多く生じるケースでは、低すぎないような値である。従って、その閾値は、20%の値を検討する。
しかしながら、結果として、わずかな改良のみを提供する大事な再書き込みの影響を消滅させる多くの再書き込みがあるとき、そのような値はあまりにも低すぎるとわかった。例えば、正確にブロックの5%が重複し、全てが再書き込み有効度20%を有するバックアップを仮定する。このような場合、全ての重複ブロックを再書き込みすることは、約1%だけリストア性能を改善する。そのような重複が全て再書き込み有効度50%を有する場合には、約5%増加するが、正当な再書き込みにはまだ十分ではない。結果として、最低限の有効度を70に選択する。5%が重複するバックアップにおいては、かかる重複を全て再書き込みすることは、約12%リストア性能を改善し、これは再書き込みを正当化する十分な理由である。
全ての重複が、最小有効度以下の再書き込み有効度を有しているが、断片化からはっきりと受けたバックアップがあることに注目する。しかしながら、そのようなバックアップに対する断片化によって引き起こされるリストア性能低下を減少させるため、5%以上のブロックを再書き込みすることを必要としている。
(5.2.2 現在の再書き込み有効度)
上述したように、現在の再書き込み有効度は、各判定ブロックが、再書き込みされるかどうかを決定するために用いられる。この値は、それぞれ処理されたブロックで調整される。これに対して、私たちは、バックアップストリームでここまで見られたすべてのブロックの再書き込みの最適値である5%として定義されたブロックの「最適5%セット」を導入する。各再書き込みブロックが重複でなければならいことに着目すると、ある場合には、ストリーム内に十分な重複がないかもしれないので、全てのブロックの5%未満にこのセットを保ってもよい。
アルゴリズムによってとられる実際の動作をアカウントに取り入れることなしに最適5%を確立するために、これまでのところ1つであると見られる各重複を再書き込みすることの有効度を算出する。アルゴリズムの各ループにおいて、最適5%ブロックの最も悪いものを再書き込みすることの有効度に、現在の再書き込み有効度の閾値をセットする(最小有効度より低くはない)。この閾値が、バックアップの開始から現時点まで各判定ブロックのために現在の有効度閾値として用いられるなら、そのような選択は、大雑把を意味し、重複の最適5%を再書き込みする。
(5.3 アルゴリズム詳細)
以下に示すアルゴリズムは、それぞれ入力されるデータストリーム上で別々に実行される。それは次のフェーズから成る。
1.各重複に対してコンテキストに基づく再書き込み決定を含むメインループ。
2.再書き込みされたブロックの古いコピーを回収するバックグラウンドオペレーション。
(5.3.1 メインループ)
アルゴリズムのメインループは、以前のループのうちの1つの中で読み飛ばされてマークされていない入力ストリーム中の次に入ってくるブロックである判定ブロックに対して行われる。
1.ディスクコンテキストのセットアップ:
判定ブロックに対して、データの信頼できるハッシュ(例えば、SHA-1)に基づいて変更重複排除クエリを出す。重複が検出されると、変更クエリは、以前に確定されたディスク上のこのブロックの位置を返す。このクエリは、このアルゴリズムの以前のループのうちの1つでまだ出されていないときにだけ、出される。
2.非重複に対する書き込み完了:
判定ブロックが重複していない場合には、標準の書き込み処理が行われる。
3.再書き込み決定への到達:
一方で、ブロックが重複し、読み飛ばされてマークされていないならば、再書き込みが必要かどうか判定する必要がある。
(a)ストロームコンテキストのセットアップ:
ストリームコンテキスト(デフォルト値5MB)は、十分な書き込みリクエストがこのバッファを満たすまで、判定ブロックの書き込みの完了を遅延させることにより満たされる。ストリームバッファ内の各書き込みリクエストに対して(アルゴリズムの前のループのうちの1つによって既に満たされたそのような情報を有していない場合に)、新しい重複排除クエリを出すことによって、その重複状態を解決する。
(b)コンテキスト共通部分の計算:
ストリームコンテキストに書き込まれている間、与えられたブロックが、判定ブロックのディスクコンテキストに既に表れて重複するかどうか、2つのブロック間のディスク上の距離の比較によりチェックする(重複排除クエリによって返された両ブロックに対するディスク位置情報を持っていることに着目する)。そのような方法で、そのディスクコンテキストおよびそのストリームコンテキストの共通部分が決定される。
(c)再書き込み決定:
前のステップの結果、2つのコンテキストの共通部分中のすべてのブロックの合計サイズを取得する。これにより、上述したように、判定ブロックを再書き込みする有効度を決定する。この有効度が、現在の再書き込み有効度の閾値より小さくない場合、判定ブロックが再書き込みされる。しかし、このブロックだけ、5%再書き込み限度に従う(ここまで見られたすべてのストリームブロックに基づいて上記限界が計算されるので、より多くのブロックを処理する際に、多くのブロックが再書き込みにより変更される)。一方で、共通する全てのブロックが再書き込みされず、それらは今のストリームに重複するとして処理される。
判定ブロックだけを書き直すか、あるいは、共通部分にある全てのブロックを重複としてマークするか、決定が非対称であることに着目する。すなわち、判定ブロックが再書き込みされることになっても、再書き込みの必要がないほど十分大きなコンテキスト共通部分を有しているかもしれないため、共通部分における他のブロックを再書き込みすることを今決定したくない。しかしながら、一旦、重複するとして判定ブロックを保存することに決めたらならば、共通部分における残りのブロックも重複するものとして保存すべきであり、判定ブロックの読み取りが、これらの追加のブロックを読み出すことも保障される(つまり、判定ブロックの再書き込み有効度が低いまま)。
(d)読み飛ばし判定ブロックのマーク
重複すると決定した共通部分における全てのブロックは、このアルゴリズムの後のループによって読み飛ばされるようマークされる。
4.再書き込み有効度閾値の調整
再書き込み決定にかかわらず、次のループの繰り返しの中で使用される再書き込み有効度閾値を更新する。最良5%の有効度の維持が非実用的であるので、有効度バケット(例えば、10000)の定数を維持する。各バケットは、それぞれ再書き込み有効度のサブ範囲に等しく割り当てられ、全てのバケットは有効度範囲全体をカバーしている。そして、各バケットは、これまでにバケット範囲で有効度が減少して見られたブロックの数を維持する。そのような構造で、各バケットに割り当てられた有効度の範囲で、合理的な精度で最良5%ブロックの最悪の状態の再書き込み有効度に近づくことができる。
5.次の反復のセットアップ:
アルゴリズムは、スキップされない次のブロックに移り、再書き込み有効度閾値を調整し、メインループを再び繰り返す。上記アルゴリズムは、ストリーム内の全てのブロックに対して繰り返される。最初に、再書き込み有効度閾値は、最小有効度閾値に設定される。更新の際、現在の再書き込み有効度閾値は、この最小値以下にはならない。
ブロックの再書き込みが、ストリームとディスクのコンテキストの共通部分のサイズを増加させることを必ずしも保証するとは限らないことに着目する。例えば、ストリームコンテキストは重複を含んでいるかもしれず、残りが連続しているため、それらのまさに1つを再書き込みすると決定してもよい。そのような場合、共通する部分のサイズは増加しない。しかし、再書き込みされたブロックは、他の新しいブロックあるいは再書き込みされたブロックに近いディスクの最後に位置する。そのようなブロックが先読みされると、それらはたいがいリードキャッシュに存続し、リストアに必要なI/O回数は減少し、再書き込みはまだ有益である。
(5.3.2 バックグラウンドオペレーション)
上述されたアルゴリズムは、再書き込みされたブロックの古いコピーを削除するバックグラウンドプロセスを要求する。そのようなタスクは、ときどき実行される削除、データ除去、データ分類といった他のメンテナンスタスクと一緒に実行される。メンテナンスタスクが実行されるまで、再書き込みによって使用される追加領域は、重複排除率を一時的に減少させる。そのようなデータのパーセンテージが制限されて、メンテナンスタスクが、通常、かなり頻繁に実行されるため、そのような解決方法は許容される。
(5.3.3 読み取りオペレーションへの変更)
データブロックがコンテンツアドレスによる場合、古くコピーと新しいコピーは両方とも同じアドレスで指し示される。このため、データブロックへのポインタは、古いコピーを同じブロックの新しいコピーに置き換える際に変更する必要がない。最新のバックアップのよいリストア性能を保証するために、ブロックの最新コピーにアクセスする読み取り処理を変更する必要がある。
(5.4 議論)
以上のようなブロックのみを見ると、そのようなアルゴリズムは明らかにオンラインである。例えば、ストリームにおける各重複を再書き込みする有効度が同じであるとき、あるいは、ストリームにおける重複の増加位置と共に有効度が減少するとき、あるケースでは最適である。
最悪のケースは、ストリームを横切って分散された再書き込みの上記最小有効度ではないが、低い有効度を有する重複がストリームの初めに多くあるとき、ストリームの終わりに互いに接近している、高い有効度の多くの重複が後に続くことである。そのような場合、上記アルゴリズムは多くの低い有効度の重複を再書き込みし、高い有効度のものはわずかとなる(例えば、5%)。ところが、後には、高い有効度の重複だけを再書き込みするであろう。下記セクション5.5.7で説明するように、以前のバックアップからの統計に基づいた現在のバックアップの最小を調節すれば、このケースに対応することができる。
コストを削減し、利点を維持するように見えるCBRアルゴリズムの単純な修正がある。まず、ブロックが再書き込みされることを確認し、バックアップが終了した後に、それらをオフラインで再書き込みする。しかしながら、再書き込みが断片化されたブロックを読む必要があるため、それは非常に遅くなり、うまくいかない(正確には、それらが最も断片化されているため)。CBRのオンラインバージョンでは、ユーザがデータを書き込むとき、私たちはただでこれらのブロックを得る。
(5.5 アルゴリズムの拡張)
上記コンテキストベースの再書き込みアルゴリズムを改善し、独特な重複排除パターンにより強くするいくつかの拡張は可能である。全ての拡張はいくつかのシナリオにおいて非常に重要であるが、私たちはそれらを別々に分析せず、代わりに、限りある領域の利用のために、最も面白いものについて説明することとした。
(5.5.1 書き込み時のアルゴリズムシミュレーションの読み取り)
各バックアップシステムは、全面的な設計およびデータ構造に最も適した異なる読み取りアルゴリズムを使用しうる。書込み中に読み取りアルゴリズムをシミュレートし、ブロックがシステムキャッシュに存在しているときに当該ブロックが再書き込みされないようにする小さなコンポーネントが実行される。
(5.5.2 拡張されたストリームコンテキスト)
ストリームコンテキストは、ブロックの後に書かれているブロックばかりでなく、以前に書かれたブロックによっても定義される。特別なコンポーネントは、書かれているブロックをモニターし、最も最近書き込まれたものについて、いくつかのメタデータを保持している。そのような最適化は、コンテキスト解析をより正確にし、再書き込みされたブロックの数を低下させうる。
(5.5.3 タイムスタンプに基づく再書き込み)
我々は、例えば、すべてのビット0のような一般的なブロックや、2つのファイルシステムが同時にバックアップされ、それらに両方のいくつかの共通のはさまれた部分(グローバルな重複排除)がある場合に、あまりに高頻度に、再書き込みされないよう注意すべきである。これについては、ブロック書き込みのタイムスタンプは使用することができる。ブロックが最も最近書かれたとき、それは、同じブロックを何度も再書き込みするおそれをなくす再書き込み用候補としては使用されない。
(5.5.4 クライアントストリーム分類)
この最適化は、1台のディスクコンテナの中で同時に書き込まれている多数のストリームをインタリーブするシステムに役立つ。そのようなケースでは、同じストリームのブロックがディスク上にともに格納される場合、最良の結果を達成することができる。1つの解決法は、クライアント上の少数のブロックを蓄積し、次に、それらを一緒に書くことである。そのような解決のおかげで、より少数のリクエストは、ネットワークを通って伝送され、それらの全ては一緒に書かれるために適切なサイズを有している。結果として、増加した書き込み待ち時間のコスト面で、低いI/O数とよいリストア製法が保証される。
(5.5.5 開放領域モニタリング)
再書き込みされたブロックは、ストレージシステムで追加領域を消費する。たとえ、占有領域が非常に小さく、短時間後に開放されたとしても、そのようなケースでは、システムが一杯に近いと、あまりにも早く領域の不足の報告を引き起こす。この問題を防ぐために、利用可能なキャパシティーをモニターし、ストレージ領域が少ないとき断片化解消の特徴を停止する必要がある。
(5.5.6 先読みサイズの調節)
ディスクから読み取るとき、基本アルゴリズムは固定サイズを先読みすると仮定した。代わりに、リストアスピードを上げるために、調節可能サイズの先読みを使用することができる。調節は、最近の先読みの有効性に基づいて行われる。これは、断片化の影響を除くことはできないが、減少させるであろう。
(5.5.7 以前のバックアップ統計による閾値の調節)
最小有効度は、高すぎるか低くすぎる値に設定される。以前のバックアップの統計を保持し、それを現在のバックアップのための最小有効度を設定するために使用することができる。このことは、常にそうではないが、明らかにストレージシステムによってバックアップ境界の知識を要求している。
そのようなアプローチでは、(1)再書き込み信用が十分でないために再書き込みできなかった高い有効度のブロックの数、(2)それぞれ異なる有効度の範囲が割り当てられた各バケツにグループ分けされ発行された再書き込みの数、(3)再書き込み閾値が最小閾値以下であるため、再書き込みができなった重複の数(また、バケツによってグループ分けされた)、をカウントする。
上記1番目の数が実質的に0を超えるものである場合、最小有効度は低く設定されすぎており、そのようなケースでは、閾値を増加させる必要がある。あるいは、再書き込みの信用を消耗しておらず、上記3番目の数が0でない場合には、閾値を低くする必要がある(しかし、再書き込みが意味をなさないような絶対最小値以下でない)。全ての再書き込みの信用を使用し、現在のバックアップが以前のものに似ていると仮定する最大有効度となる重複を再書き込みする、という方法で、増加あるいは減少のサイズは、割り当てたバケツのサイズとそれに付随する範囲によって決められる。このような調節が経験則のみに基づくことと、共通のケースではうまく機能するが、機能することが保証されないことに注意すべきである。
<第6章 実験方法論>
(6.1 選択されたデータセットの詳細)
断片化の影響とアルゴリズムの有効性を評価するために、4セットのバックアップトレースを使用した。
−開発プロジェクトバックアップ−大規模なC++プロジェクトの7回の毎週のバックアップ(それぞれ約14GB)
−課題格納バックアップ−ソフトウェア製品に関係する課題を報告しフォローするために使用される課題格納データの7回の毎週のバックアップ(それぞれ約18GB)
−wikiバックアップ−営利会社によって使用されたwikiの8回の毎週のバックアップ(それぞれ約9GB)
−一般的なファイルサーババックアップ−ITからのホームディレクトリーの14回の毎週のバックアップ(それぞれ約78GB)
(6.2 ベースモデル)
シミュレートされたストレージシステム環境は、全く単純であり、次の主な条件に基づく。
−システムは各測定のはじめには空である。
−バックアップ用の記憶領域は連続的である(大きな1つのディスクのようなもの)
−1つのユーザファイルシステム/ディレクトリだけがシステムにバックアップされる(毎週の現行バージョン)
−分割は、Rabin fingerprintingによって予定された8KBサイズの可変ブロックサイズで行われる。
上記の条件で、今日のバックアップシステムに存在するあまりにも多くの詳細な実験を不明瞭にすることのないソリューションの問題および効率の重大性を評価するために、優先度を与える。
(6.2.1 読み取りアルゴリズムのシミュレート)
2MBの一定の先読みと、512MBの専用LRU読み取りキャッシュを用いた、単純な読み取りアルゴリズムをシミュレートした。キャッシュサイズは、各バックアップのごく一部分だけを保持するために選択された(せいぜい6%)。先読みサイズの選択はセクション7.3で説明する。
(6.2.2 ストリームコンテキストサイズ)
ストリームコンテキストサイズとしてとして5MBを使用する。これは、このコンテキストが小さいことにより、アルゴリズムが十分に効果的で有効で、書き込み待ち時間の増加を小さくさせるには、十分大きいためである。今日、バックアップシステムは、1つのストリームに対して容易に200 MB/sで実行し、ストリームコンテキストに書き入れるにはわずか25msしかかからないであろう。それらのコンテキストが見つかり(通常数ミリセカンドの後に)、25msで再書き込みするブロック(すべてのブロックの約5%)と既に重大な待ち時間がある非重複とを取得するとすぐに、ほとんどの重複ブロックが解放されるであろうことに注意すべきである。我々は、より大きなストリームコンテキストサイズを試したが、断片化解消の効果をあまり改善できなかった。1つの顕著な結果は、再書き込みされる重複の数が減縮したことである。
(6.2.3 再書き込みのコスト)
ソリューションのコストを評価する場合、再書き込みによりバックアップがどのくらい遅くなるかを予測する必要がある。我々は、重複に対するチェックをしないよう商用バックアップシステムHYDRAstorの書き込みパスを修正し、重複を100%書く場合において上述したソリューションの性能と未変更システムの性能とを比較した。その結果、後者は前者より3倍大きかった。この結果に基づいて、我々は、ブロックを書くことと、ブロックが重複していないこととに対する3つの減速の要因を用いる。例えば、5%の再書き込みされたブロックは、15%の減速を引き起こす。全ての再書き込みブロックが重複しているので、実際の減速はオリジナルストリームにおける重複のパーセンテージによる。パーセンテージが高くなればなるほどより減速し、ストリームのブロックがすべて重複である場合には、15%減速する。
(6.3 除外された要因)
分析を単純するために、我々はいくつかの要因を無視した。
−グローバルな重複排除−上述したように、グローバルな重複によって引き起こされた断片化は、我々の研究における着目点ではない。
−ディスクに対するデータの低い階層への配置−どのようなデータがディスクに保存されるかによるため、ストレージシステムでの実データの断片化は、我々のモデルにおける断片化よりも明らかに大きい。我々は、重複排除のみによって引き起こされる断片化の影響を研究したいので、この要因を無視した。
−多くのディスクドライブ/サーバー−我々のシステムにおけるリストアが全ての利用可能なディスクの性能を使用できる場合に、多くのディスクを備えたシステムでの断片化の問題は、1枚のディスクのみにおける場合よりも少なくとも重大である。他方で、リストアにある程度の性能だけを必要とするなら、我々は追求すべき多くの軸があり、そのような追求は必ずしもリストア性能を低下させるわけではないので、複数のディスクを利用することの上述した重大さは減少する。
この研究では、我々は、前者のケースを仮定し、1枚のディスクのみを有する場合の断片化について研究する。
(6.4 インターナルストリームの重複)
インターナルストリームの重複−ブロックが現在のバックアップストリームに二度以上現われる場合−は、2つの異なる方向でリストア性能に影響を与えうる。
−肯定的に−重複データが既にキャッシュにあり、ディスクオペレーションが読み取りを必要としていないとき。
−否定的に−データがキャッシュから既に出力されているとき。そのようなケースでは、ディスクから再びそれをダウンロードすることは、現在のストリームコンテキストと異なる古いディスクコンテキストの読み取りが生じうる。そのようなデータはキャッシュに入れられるが、今後(要求されたブロックとは別に)使用されないかもしれない。
我々の調査では、図13に示すように、インターナル重複が比較的高い割合で生じる。このため、これらの影響は、インターナルバックアップのリストア性能が47%減少から12%増加というように、ときどき明確に現れる。(図13は、データセット特性を示す。(*最初のバックアップを除いたデータ))
リストア速度におけるインターナル重複の影響は、我々のソリューションと比較されるベースレベル性能を調節する。確かに、インターナル断片化は、アドレス指定される必要があり、問題が残ったままであるが、それは我々の研究では焦点を当てない。インターナル断片化をアドレス指定するいくつかの可能なオプションは、より性能向上のためにより適切な方法でディスク上のデータをキャッシュしている。
<第7章 評価>
(7.1 必要条件を満たすこと)
図15a−15dによって示されるように、上述したCBRアルゴリズムは最新ストリームの将来の読み取り性能を最適化する。結果として最新バックアップのリストア性能は、完全な断片化解消(例えば、オフライン重複排除による)の後に実行される最適なリストアの数パーセント内であるため、我々のアルゴリズムによる断片化の解消は、すべてのトレースにおいて非常に有効である。断片化の解消なしで、インライン重複排除を有する最新バックアップからのリストア性能は、課題格納に対する最適なものの50%未満であり、また、他のバックアップセットに対する85%-88%である。
図15a−15d:3つのケースのリストア速度を示す。(1)CBR断片化解消の後、(2)断片化解消のないインライン重複排除、(3)オフライン重複排除:インターバージョン断片化無しで各バックアップのリストア速度を100に規格化した。
重複を直ちに削除することを前提とすることは、新しいブロックとして重複を書き込むよりも3倍速い。また、我々がすべてのブロックのせいぜい5%を再書き込みするので、CBRにより、書き込み性能が多くて15%減少する。図14に示すように、我々のアルゴリズムは、全てのブロックの目標の5%よりも低いパーセンテージで再書き込みを行う。これは、我々の最小再書き込み有効度が70%で高くセットされ、常にバックアップストリームを処理する間に5%の限界を観測しているので、非常に控えめであるからである。その結果、我々のアルゴリズムでは、1%-5%だけ書き込み性能が減少する(図14で書き込み時間増加カラムを参照)。(図14は、各バックアップセットの最新バックアップにおけるCBR断片化解消の影響を示す。インターバージョン断片化無しにおけるリストアの最適性能を100に規格化した。)
我々のアルゴリズムは、再書き込みされた重複ブロックを除いて、追加領域を使用しない。従って、CBRは、追加領域による消費は、すべてのブロックの5%未満であることを保証する。実際には、0.52%と2.61%の間のように、はるかに低い値である。ブロックの古いコピーは、例えば、定期的に実行される削除プロセスの一部といったバックグラウンドで削除される。従って、上記領域の消費は一時的である。
追加ディスク性能の消費も、再起書き込みブロックを書き込むことを制限している。さらに、アルゴリズムは、再書き込みされるブロックの割合を設定することによって、容易に調整可能である。割合が高くなると、書き込み性能の大きな低下と再書き込みされたブロックの一時的な古いコピーを記憶するために必要なディスク領域の増加を犠牲にして、リストア性能がよりよくなる。
(7.2 再書き込み制限の設定)
再書き込み制限の最適な値を選択するために、最小の再書き込み有効度を70%で変更せず、1%から7%の間でこの制限値を変える一連の実験を行った。各バックアップセットにおける最新のバックアップに対する結果は、図16のようになる。リストア性能が最悪の減少となる再書き込み制限5%において、課題格納以外のすべてのセットで、2%またはたった1%のような低い値の制限値で良く機能する。制限値が5%を越えて増加させることは行っておらず、すべての実験においても5%の制限値を設定することに決めた。(図6は、リストア性能における再書き込み制限の影響)
(7.3 ディスクコンテキスト/先読みサイズ)
ディスク上で連続的なデータを読むために、より大きな先読みサイズであることが一般的には望ましいが、図17に示すように、断片化データにとっては正しくない。(図17は、断片化解消前の、各バックアップセットにおける最新バックアップの先読みサイズに対する読み取り時間の関係を示す。)
ここで、ほとんどすべてのケースでは、最良の固定先読みサイズは2MBである。1つの例外は課題格納バックアップであり、512KBの先読みサイズが望ましい。ここでは異なる先読みサイズを用いることを比較しているため、単にI/Oの数に基づく性能の推定はできない。代わりに、得られた性能について説明できるように、標準ディスク特性を想定する。
これらの結果に基づいて、我々は、CBRアルゴリズムを備えたシステムで2MBの先読みを用いることを決めた。コンテキストに基づく再書き込みでいくつか他の先読みサイズが望ましく、このアルゴリズムの効率の評価は、課題格納以外のすべてのセットにとっては控えめであることに着目する。我々は、I/Oの数に基づく性能を推定するので、そのように行い、また、異なる先読みサイズで、追加条件なしでは可能ではない。
課題格納バックアップセットについては、テストによる最適な先読みサイズは512KBであるので、この先読みサイズを用いたCBRアルゴリズムを備えた、あるいは、備えていない両システムでシミュレートした。そのようなケースでは、断片化がリストア性能の25%低下を引き起こした(代わりに、2MBの先読みにおいては45%)。しかしながら、CBRアルゴリズムは、この低下を約5%減少させることができた。2MBの先読みサイズに設定されたCBRは、12%であるが、さらにこの低下を減少させた(ここでは、インターバージョン断片化が行われないときに、512KBの先読みで達成されるリストア性能を100%とする)。
(7.4 圧縮の影響)
これまでは、バックアップデータは圧縮しないと仮定してきた。先読みサイズを2MBと一定にした場合、圧縮可能データは結果として断片化に重大な問題を引き起こし、CBRアルゴリズムはさらによいリストア性能における改良を提供する。例えば、50%圧縮データにおいては、リストア性能の低下は、12-55%から15-65%に増加するのに対し、CBR断片化の解消は、この低下を3-6%(圧縮のない場合における4-7%に代わって)に減少させる。明らかに、例えばデータの圧縮率に基づいて異なる先読みサイズを選択することが、これらの結果を変更することができる。しかし、我々は、すべてのタイプのデータ(圧縮不可能なデータについては最適化されている)の先読みサイズを1つに固定することとする。
(7.5 潜在的に不要な再書き込み)
将来的に、いくつかの再書き込みは不要かもしれない。これは、そのストリームコンテキストにはない決定ブロックのディスクコンテキスト内のブロックは、実際にはそのストリームの後に現れるかもしれないためである。そのような再書き込みの多くがどのように生じるかを予測するために、ストリーム内の現在位置からストリームの終わりまでを計測する可変サイズまで、標準5MBを構成するストリームコンテキストサイズを拡張する。
そのような拡張されたストリームコンテキストで計算された決定ブロックの再書き込み有効度が最小書き込み有効度である場合に、再書き込みを潜在的に不要なものとする。潜在的に不要な再書き込みの割合が、バックアップセットにより少なくともバックアップに対する30-40%と比較的高いことがわかる。標準のストリームコンテキストサイズを増加させることによって、これらの再書き込みのいくつかを回避することができる。例えば、それを5MBから20MBに増加させることで、22-37%にこの割合が減少する。これらの割合は高いが、含まれているこれらの潜在的に不要な再書き込みでさえも、全てのストリームブロックの非常に小さな割合でもまだ再書き込みする。
(第8章 関連する研究)
上述したように、断片化は重複排除の必要悪である。最も単純なソリューションは、断片化解消を除いたポストプロセス重複排除であるが、セクション8.1で議論するが、他のいくつかの重大な問題がある。EMCのようないくつかのベンダーは、清掃プロセスを消費する時間とリソースで、断片化に対応しようとしている。このプロセスの詳細は公表されていないが、1つの可能なアプローチは、バックグラウンドで重複のサブセットを選択的に再書き込みすることである。つまり、ある意味では、我々のCBRアプローチに似ているが、オフサインで行われる。さらに、そのようなアルゴリズムについてはセクション8.2で説明する。HYDRAstorのような他のシステムは、重複排除率の減少を犠牲にするが、断片化問題の重大さを減少するより大きなブロック・サイズ(64KBブロック)を使用する。
(8.1 オフライン重複排除を有して断片化を除去)
上記の必要条件のうちのいくつかを満たす簡単な1つのソリューションは、既に現在市場に存在し、オフライン重複排除と呼ばれる。その最も簡単な形式では、現在のバックアップからの全てのデータは、ディスクに連続的に格納される。そして、重複排除は、最新のバックアップからのブロックが、より古いバックアップから重複を除外するための基礎となることと同じ方法で、バックグラウンドで実行される。その結果、現在書き込まれたストリームは断片化せず、古いバックアップは世代に比例して断片化される。たとえアルゴリズムが断片化に対応するよう設計されなかったとしても、最近のバックアップでそれを除去することに非常に有効である。
残念ながら、そのようなアプローチは他の多くの問題に苦しむ。1つの致命的なことは、上述したセクション1で説明したように、低い書き込み性能である。バックアップにおける重複のパーセンテージはデータパターンにより変わるが、通常、バックアップ間で小さなデータが変更されるので、その比率は75%以上である。セクション6.2.3に説明したように、データを書かない断片化解消は、データを最初に書き、その後、バックグラウンドで重複排除するよりも3倍速くなりうる。バックアップストリームが重複の75%を含むと控えめに仮定すること、オフライン重複排除を使用することは、インライン重複排除を備えたシステムにこのバックアップを書き込むことと比較して、結果として、70%以上のバックアップウィンドウとなる。仮に通常バックアップウィンドウが拡張できないとしても、これは明らかに受け入れがたい。
(8.2 断片化解消のソリューションの比較)
オフライン重複排除とオンラインで行われたCBRを超えて、既にセクション5.4で説明したように、バックグラウンドつまりオフラインでコンテキストベースの再書き込みを実行する少なくとも1つのオプションがある。そのようなソリューションは、少しもバックアップ書き込みに影響しないが、断片化を引き起こす重複のストリームコンテキストの実質的部分を再書き込みしなければならないので、オンラインアプローチよりさらに多くのブロックを再書き込みする必要があるであろう。従って、このアプローチの主な欠点は、断片化されたデータを読み、バックグラウンドで再び選択されたブロックを再書き込みするために必要とされるリソースを含み、ブロックを再書き込みすることが完了する前に試みられたリストアの読み取り性能が低くなる、ということである。
すべての言及された選択肢の比較を図18に示す。両方のオフラインオプションの記憶消費が、ステージングつまりバックアップを書き込むプロセスの背後であるが並列に重複を削除する(あるいはそれらをいくつか再書き込みする)プロセスを実行することにより、改善されうることに着目する。しなしながら、ステージングは、利用可能なディスク性能とスピンドルのようなリソースをより必要とする。(図18は、断片化解消ソリューションの比較である。)
(8.3 残りの関連研究)
一般に、たとえ既に長い間知られていても、データ断片化の問題に関する文献は多くはない。いくつかの文献は、より高速に重複除去のために読まれたメタデータを改善する問題に取り組んでいる。Zhuらの研究は、ブルームフィルタとストリーム指向メタデータ先読みを用いるソリューションを記述している。ところが、Lillibridgeらは、わずかなインデックスソリューション(以前に選択されたわずかな大きなセグメント内でのみ重複を除去する)がより小さなメモリ消費のためよいと主張する。SSDのような追加ハードウェアは、ランダムな重複を除去するために使用することができる。このようなソリューションは、よりきめの細かい重複を検出できるため、断片化問題をさらに厳しくするであろう。さらに、上記のアプローチのいずれも、断片化されたデータを読み取ることの問題を解決せず、全ての場合において後のバックアップで断片化が増大する。
重複排除の有効性を下げない断片化解消ソリューションにおける要求を緩和させると、データのサブセット内でのみ重複を除去しようとすることができ、断片化を減少させることができるかもしれない。わずかなインデックス付けに加えて、そのようなアプローチは、極端な破棄や、ProtectTier、サブ分割重複排除、さらに、Pasticheやデータドメイングローバル拡張のようなノードのサブセットに重複排除を限定するマルチノードシステムで可能である。残念なことに、現在のセグメントを重複排除するために以前のバックアップのほんのわずかなセグメント(2−3)を考慮しても(わずかなインデックスのように)、より古いセグメントからの重複も含んでいるかもしれないので、それらセグメントが既にディスク上では連続的ではないかもしれない。
最後に、我々は、大量のブロックまたはオブジェクトの重複を除去することにより、断片化を減少させるかより解消することができる。EMC Centeraの初期バージョンでは、重複排除ユニットは、Centeraがターゲットとするマーケットつまりファイル保管に対して機能する全ファイルであるが、重複排除の有効性が低いため、バックアップに対する正しいソリューションではない。
<第9章 結論および今後の研究>
この研究では、インライン重複排除機能を有するストレージシステムにおけるデータ断片化のことを記述しており、インターバージョン重複排除によって生じる断片化のリストア性能に対する影響を定量化している。その問題は非常に厳しく、実際のバックアップトレースとレートのセットによって実行された実験(各バックアップセットにおいて7−14回のバックアップ)により確認されたように、バックアップ特性により、結果として50%を超えるリストア速度の低下となる。より大きなセットでは、数か月あるいは数年にもまたがるバックアップとなり、この問題がさらに大きいことが予想される。さらに、この問題は、たいていリストアに使用される最新のバックアップに最も影響する。
その問題に対処するために、我々は、全てのブロックの5%以下で、選択されたいくつかの重複を再書き込みするコンテキストベースの再書き込みアルゴリズムを提案した。提案したアルゴリズムは、めったにリストアに用いられないより古いバックアップに対して断片化が増加する最新バックアップのリストア速度を改善する。再書き込みされた古いコピーは、例えば、重複排除機能を有するストレージシステムで既に必要とされている周期的削除プロセスや領域再生プロセスといったバックグラウンド処理で削除される。
我々のトレース実行シミュレーション実験では、少数の選択されたブロックを再書き込みすることで書き込み性能が少し低下すると示したが、実質的に、最新のバックアップに対するリストア速度の低下を抑制する(最適性能の4-7%以内)。
今後の研究において、我々は、CBRアルゴリズムをそれほど控えめとせず(再書き込みブロックの望ましい割合を一時的に超えることを許容する)、断片化の除去の影響を詳しく調べ、また、その有効性へのアルゴリズム拡張の影響を調べることを計画している。さらに、我々は、商用バックアップシステムで提案されたソリューションを評価することも計画している。
今後の調査において重要な1つの課題は、さらにインターナル重複によって引き起こされた断片化に有効に対処する方法である。我々の実験では、いくつかのバックアップについて、1つのバックアップセット内で多数のバックアップストリームにわたる重複によって引き起こされるような重複に似ている断片化が、リストアの減速を引き起こすことを示している。
この論文では、毎週、異なるバージョンに書き込まれる1つの論理ストリームによって生じる断片化に集中している。たとえ、これが有力なケースであっても、問題のあと2つの原因がまだ調べられていない。異なるバックアップセット間におけるインターナル重複の除去とグローバル重複排除とは両方とも、読み取り性能に関する問題につながるかもしれない。それらの解決は、重要なリストアの最適化において、別のステップとなるであろう。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置(図19参照)、プログラム、情報処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
書き込み対象データを複数のブロックデータに分割するデータ分割手段111と、
前記データ分割手段にて分割した前記各ブロックデータが、記憶装置120に既に記憶されているか否かを調べるブロック検出手段112と、
前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段113と、を備え、
前記ブロック検出手段112は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
前記データ書き込み手段113は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
ストレージ装置100。
(付記2)
付記1に記載のストレージ装置であって、
前記ブロック検出手段は、前記データ分割手段にて分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
ストレージ装置。
(付記3)
付記1又は2に記載のストレージ装置であって、
前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータのそれぞれが、当該連続する複数のブロックデータの並び順に関係なく、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータのそれぞれと一致する割合を、前記共通割合として検出する、
ストレージ装置。
(付記4)
付記1乃至3のいずれかに記載のストレージ装置であって、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合が予め設定された値以下である場合に、前記データ分割手段にて分割した前記ブロックデータを新たに記憶装置に記憶する、
ストレージ装置。
(付記5)
付記1乃至4のいずれかに記載のストレージ装置であって、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータの容量が、所定の容量以下となるよう設定する、
ストレージ装置。
(付記6)
付記1乃至4のいずれかに記載のストレージ装置であって、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
ストレージ装置。
(付記7)
付記6に記載のストレージ装置であって、
前記データ書き込み手段は、前記再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、5%以下となるよう設定する、
ストレージ装置。
(付記8)
情報処理装置に、
書き込み対象データを複数のブロックデータに分割するデータ分割手段と、
前記データ分割手段にて分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べるブロック検出手段と、
前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段と、を実現させると共に、
前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
ことを実現させるためのプログラム。
(付記9)
付記8に記載のプログラムであって、
前記ブロック検出手段は、前記データ分割手段にて分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
プログラム。
(付記10)
付記8又は9に記載のプログラムであって、
前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
プログラム。
(付記11)
書き込み対象データを複数のブロックデータに分割し、
分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べ、
分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させることによりデータを書き込む情報処理方法であり、
前記書き込み対象データをブロックデータに分割した後に、当該分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
検出した前記共通割合に応じて、分割した前記ブロックデータを、新たに記憶装置に記憶する、
情報処理方法。
(付記12)
付記11に記載の情報処理方法であって、
前記書き込み対象データをブロックデータに分割した後に、当該分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
情報処理方法。
(付記13)
付記11又は12に記載の情報処理方法であって、
検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
情報処理方法。
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記実施形態や付記を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
1 ストレージシステム
2 アクセラレータノード
3 ストレージノード
4 バックアップシステム
5 バックアップ対象装置
11 データ分割部
12 ブロック検出部
13 データ書き込み部
14 データ読み出し部
20 記憶装置
100 ストレージ装置
111 データ分割手段
112 ブロック検出手段
113 データ書き込み手段
120 記憶装置

Claims (13)

  1. 書き込み対象データを複数のブロックデータに分割するデータ分割手段と、
    前記データ分割手段にて分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べるブロック検出手段と、
    前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段と、を備え、
    前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
    ストレージ装置。
  2. 請求項1に記載のストレージ装置であって、
    前記ブロック検出手段は、前記データ分割手段にて分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
    ストレージ装置。
  3. 請求項1又は2に記載のストレージ装置であって、
    前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータのそれぞれが、当該連続する複数のブロックデータの並び順に関係なく、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータのそれぞれと一致する割合を、前記共通割合として検出する、
    ストレージ装置。
  4. 請求項1乃至3のいずれかに記載のストレージ装置であって、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合が予め設定された値以下である場合に、前記データ分割手段にて分割した前記ブロックデータを新たに記憶装置に記憶する、
    ストレージ装置。
  5. 請求項1乃至4のいずれかに記載のストレージ装置であって、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータの容量が、所定の容量以下となるよう設定する、
    ストレージ装置。
  6. 請求項1乃至4のいずれかに記載のストレージ装置であって、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
    ストレージ装置。
  7. 請求項6に記載のストレージ装置であって、
    前記データ書き込み手段は、前記再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、5%以下となるよう設定する、
    ストレージ装置。
  8. 情報処理装置に、
    書き込み対象データを複数のブロックデータに分割するデータ分割手段と、
    前記データ分割手段にて分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べるブロック検出手段と、
    前記データ分割手段にて分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させるデータ書き込み手段と、を実現させると共に、
    前記ブロック検出手段は、前記データ分割手段にて分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記データ分割手段にて分割した前記ブロックデータを、新たに記憶装置に記憶する、
    ことを実現させるためのプログラム。
  9. 請求項8に記載のプログラムであって、
    前記ブロック検出手段は、前記データ分割手段にて分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
    プログラム。
  10. 請求項8又は9に記載のプログラムであって、
    前記データ書き込み手段は、前記ブロック検出手段にて検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
    プログラム。
  11. 書き込み対象データを複数のブロックデータに分割し、
    分割した前記各ブロックデータが、記憶装置に既に記憶されているか否かを調べ、
    分割した前記各ブロックデータを記憶装置に記憶すると共に、当該記憶装置に既に記憶されているブロックデータと同一内容の他のブロックデータを記憶装置に記憶する場合には、当該記憶装置に既に記憶されているブロックデータを前記他のブロックデータとして参照させることによりデータを書き込む情報処理方法であり、
    前記書き込み対象データをブロックデータに分割した後に、当該分割した前記ブロックデータのうち前記書き込み対象データ中の所定範囲を構成する連続する複数のブロックデータと、記憶装置に既に連続して記憶されている所定範囲の複数のブロックデータと、の共通部分の割合を表す共通割合を検出し、
    検出した前記共通割合に応じて、分割した前記ブロックデータを、新たに記憶装置に記憶する、
    情報処理方法。
  12. 請求項11に記載の情報処理方法であって、
    前記書き込み対象データをブロックデータに分割した後に、当該分割した特定の前記ブロックデータが記憶装置に既に記憶されていることを検出した場合に、前記書き込み対象データ中の所定範囲を構成する前記特定のブロックデータから連続する複数のブロックデータと、記憶装置内に既に記憶されている前記特定のブロックデータと同一内容のブロックデータから連続する所定範囲の複数のブロックデータと、の前記共通割合を検出し、
    検出した前記共通割合に応じて、前記特定のブロックデータを新たに記憶装置に記憶する、
    情報処理方法。
  13. 請求項11又は12に記載の情報処理方法であって、
    検出した前記共通割合に応じて新たに記憶装置に記憶する前記ブロックデータである再書き込みブロックデータの容量が、前記書き込み対象データのうち既に記憶装置に記憶されているデータの容量に対して、予め設定された割合以下となるよう設定する、
    情報処理方法。
JP2013506368A 2011-09-16 2012-09-10 ストレージ装置 Active JP5418719B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161535734P 2011-09-16 2011-09-16
US61/535,734 2011-09-16
PCT/JP2012/005700 WO2013038632A1 (en) 2011-09-16 2012-09-10 Storage system

Publications (2)

Publication Number Publication Date
JP2013541055A JP2013541055A (ja) 2013-11-07
JP5418719B2 true JP5418719B2 (ja) 2014-02-19

Family

ID=47882885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013506368A Active JP5418719B2 (ja) 2011-09-16 2012-09-10 ストレージ装置

Country Status (5)

Country Link
US (1) US9671974B2 (ja)
EP (1) EP2756403B1 (ja)
JP (1) JP5418719B2 (ja)
CN (1) CN103797470B (ja)
WO (1) WO2013038632A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122692B1 (en) * 2011-09-15 2015-09-01 Symantec Corporation Systems and methods for reducing file-system fragmentation when restoring block-level backups utilizing an identification module, an optimization module, and a restore module
US9361028B2 (en) * 2013-05-07 2016-06-07 Veritas Technologies, LLC Systems and methods for increasing restore speeds of backups stored in deduplicated storage systems
JP6089970B2 (ja) * 2013-05-29 2017-03-08 三菱電機株式会社 映像データ削減装置および再生装置
US9256612B1 (en) 2013-06-11 2016-02-09 Symantec Corporation Systems and methods for managing references in deduplicating data systems
US9298724B1 (en) 2013-06-14 2016-03-29 Symantec Corporation Systems and methods for preserving deduplication efforts after backup-job failures
US9582194B2 (en) * 2013-09-27 2017-02-28 Veritas Technologies Llc Techniques for improving performance of a backup system
US10430102B2 (en) 2014-06-27 2019-10-01 Nec Corporation Storage device, program, and information processing method
WO2016031051A1 (ja) * 2014-08-29 2016-03-03 株式会社日立製作所 ストレージ装置
US10031691B2 (en) * 2014-09-25 2018-07-24 International Business Machines Corporation Data integrity in deduplicated block storage environments
US20160283390A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Storage cache performance by using compressibility of the data as a criteria for cache insertion
US9696931B2 (en) 2015-06-12 2017-07-04 International Business Machines Corporation Region-based storage for volume data and metadata
US10853181B1 (en) * 2015-06-29 2020-12-01 EMC IP Holding Company LLC Backing up volumes using fragment files
US20170052889A1 (en) * 2015-08-17 2017-02-23 Strato Scale Ltd. Cache-aware background storage processes
US10324919B2 (en) 2015-10-05 2019-06-18 Red Hat, Inc. Custom object paths for object storage management
US10582401B2 (en) * 2016-03-08 2020-03-03 Aurora Insight Inc. Large scale radio frequency signal information processing and analysis system
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
CN106066818B (zh) * 2016-05-25 2019-05-17 重庆大学 一种提高重复数据删除备份系统恢复性能的数据布局方法
US9588976B1 (en) * 2016-07-22 2017-03-07 Red Hat, Inc. Delayed allocation for a direct access non-volatile file system
US9886449B1 (en) * 2016-07-22 2018-02-06 Red Hat, Inc. Delayed allocation for data object creation
WO2018092288A1 (ja) * 2016-11-18 2018-05-24 株式会社日立製作所 ストレージ装置及びその制御方法
JP6341307B1 (ja) 2017-03-03 2018-06-13 日本電気株式会社 情報処理装置
US11809384B2 (en) * 2017-03-06 2023-11-07 Microsoft Technology Licensing, Llc Optimized data storage for fast retrieval
US10789002B1 (en) * 2017-10-23 2020-09-29 EMC IP Holding Company LLC Hybrid data deduplication for elastic cloud storage devices
CN110858191A (zh) * 2018-08-24 2020-03-03 北京三星通信技术研究有限公司 文件处理方法、装置、电子设备及可读存储介质
CN110955614B (zh) * 2018-09-26 2022-05-03 Oppo广东移动通信有限公司 文件缓存的回收方法、装置、存储介质及终端
US10963436B2 (en) 2018-10-31 2021-03-30 EMC IP Holding Company LLC Deduplicating data at sub-block granularity
KR20210034897A (ko) 2019-09-23 2021-03-31 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
CN113448491B (zh) * 2020-03-26 2024-05-17 伊姆西Ip控股有限责任公司 存储系统的数据迁移

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08115238A (ja) * 1994-10-18 1996-05-07 Fuji Xerox Co Ltd ファイルシステム
US7444389B2 (en) 2003-12-09 2008-10-28 Emc Corporation Methods and apparatus for generating a content address to indicate data units written to a storage system proximate in time
JP4975724B2 (ja) * 2005-03-11 2012-07-11 ロックソフト リミテッド 低冗長記憶システム内のサブブロックの存在を検出する方法
US8214517B2 (en) * 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
US20100082636A1 (en) * 2008-09-25 2010-04-01 Nec Laboratories America, Inc. Methods and Apparatus for Content-Defined Node Splitting
US8108638B2 (en) 2009-02-06 2012-01-31 International Business Machines Corporation Backup of deduplicated data
US20110161607A1 (en) * 2009-04-14 2011-06-30 Hitachi ,Ltd. Storage system and control method therefor
US20120311113A1 (en) * 2010-02-10 2012-12-06 Nec Corporation Storage device
US8499131B2 (en) 2010-04-13 2013-07-30 Hewlett-Packard Development Company, L.P. Capping a number of locations referred to by chunk references
US20120036113A1 (en) * 2010-08-04 2012-02-09 Mark David Lillibridge Performing deduplication of input data at plural levels
EP2671160A2 (en) * 2011-02-01 2013-12-11 Drobo, Inc. System, apparatus, and method supporting asymmetrical block-level redundant storage
JP5561425B2 (ja) 2011-02-28 2014-07-30 日本電気株式会社 ストレージシステム
US9823981B2 (en) * 2011-03-11 2017-11-21 Microsoft Technology Licensing, Llc Backup and restore strategies for data deduplication

Also Published As

Publication number Publication date
EP2756403B1 (en) 2018-08-01
EP2756403A4 (en) 2015-05-06
EP2756403A1 (en) 2014-07-23
JP2013541055A (ja) 2013-11-07
US9671974B2 (en) 2017-06-06
CN103797470B (zh) 2017-02-15
WO2013038632A1 (en) 2013-03-21
US20140025917A1 (en) 2014-01-23
CN103797470A (zh) 2014-05-14

Similar Documents

Publication Publication Date Title
JP5418719B2 (ja) ストレージ装置
Kaczmarczyk et al. Reducing impact of data fragmentation caused by in-line deduplication
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US20210157523A1 (en) Storage system
US9645750B2 (en) System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US10176190B2 (en) Data integrity and loss resistance in high performance and high capacity storage deduplication
US9824092B2 (en) File storage system including tiers
US9772949B2 (en) Apparatus, system and method for providing a persistent level-two cache
US20150363134A1 (en) Storage apparatus and data management
JP6711121B2 (ja) 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
US20230098965A1 (en) Resource allocation for synthetic backups
JP6805816B2 (ja) 情報処理装置、情報処理システム、情報処理方法及びプログラム
US20190026191A1 (en) Managing Data in a Storage System
US9369527B2 (en) File server, file server control method, and storage system
KR20200140534A (ko) 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
US10282127B2 (en) Managing data in a storage system
KR101473837B1 (ko) Ssd 기반 스토리지 시스템에서 입출력 성능 향상을 위한 ssd 스토리지의 무효데이터 재활용 방법
US20140359228A1 (en) Cache allocation in a computerized system
KR101382273B1 (ko) Ssd 저장장치의 마모도 감소를 위한 ssd 기반 서버급 저장장치의 복합적 데이터 중복제거 방법
US11593021B2 (en) Writing a container index to persistent storage
Bae et al. Dedup-for-speed: storing duplications in fast programming mode for enhanced read performance
Liu et al. I/O Causality Based In-line Data Deduplication for Non-Volatile Memory Enabled Storage Systems
Tan et al. Multi-objective Based Performance Evaluation of Deduplication Approaches

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131104

R150 Certificate of patent or registration of utility model

Ref document number: 5418719

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150