JP2010146308A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2010146308A
JP2010146308A JP2008323077A JP2008323077A JP2010146308A JP 2010146308 A JP2010146308 A JP 2010146308A JP 2008323077 A JP2008323077 A JP 2008323077A JP 2008323077 A JP2008323077 A JP 2008323077A JP 2010146308 A JP2010146308 A JP 2010146308A
Authority
JP
Japan
Prior art keywords
hash value
hash
acquired
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.)
Granted
Application number
JP2008323077A
Other languages
English (en)
Other versions
JP4962483B2 (ja
Inventor
Masayoshi Matsuura
正承 松浦
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
Priority to JP2008323077A priority Critical patent/JP4962483B2/ja
Priority to EP09833104.4A priority patent/EP2362317A4/en
Priority to PCT/JP2009/005336 priority patent/WO2010070794A1/ja
Priority to US13/129,757 priority patent/US8396837B2/en
Publication of JP2010146308A publication Critical patent/JP2010146308A/ja
Application granted granted Critical
Publication of JP4962483B2 publication Critical patent/JP4962483B2/ja
Expired - Fee Related 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/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
    • 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

Landscapes

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

Abstract

【課題】ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することが可能な情報処理装置を提供すること。
【解決手段】この装置100Aは、データを含む書込要求が受け付けられた場合、第1のハッシュ関数に基づいて第1のハッシュ値を取得するとともに第2のハッシュ関数に基づいて第2のハッシュ値を取得する。装置は、取得された第1のハッシュ値及び第2のハッシュ値が対応付けて記憶装置110Aに記憶されていない場合、データと第1のハッシュ値と第2のハッシュ値と参照回数情報とを対応付けて記憶装置に記憶させる。一方、装置は、取得された第1のハッシュ値及び第2のハッシュ値が対応付けて記憶装置に記憶されている場合、第1のハッシュ値及び第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
【選択図】図20

Description

本発明は、データを記憶装置に記憶させる情報処理装置に関する。
データを含む書込要求を受け付けるとともに、受け付けた書込要求に含まれるデータを記憶装置に記憶させる情報処理装置が知られている。
この種の情報処理装置の一つとして特許文献1に記載の情報処理装置は、データを記憶装置に記憶させる際、そのデータをハッシュ関数に入力することにより、ハッシュ値を取得する。そして、情報処理装置は、取得されたハッシュ値と同一のハッシュ値が記憶装置に記憶されていない場合、データと、ハッシュ値と、当該データが参照されている回数を表す参照回数情報と、を対応付けて記憶装置に記憶させる。
一方、取得されたハッシュ値と同一のハッシュ値が記憶装置に記憶されている場合、情報処理装置は、そのハッシュ値と対応付けて記憶装置に記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
この情報処理装置によれば、同一のデータが重複して記憶装置に記憶されることを回避することができるので、記憶装置に記憶されるデータ量を減少させることができる。
特開2007−234026号公報
ところで、ハッシュ関数は、異なるデータが入力されても、同一のハッシュ値を出力する(ハッシュ値の衝突が発生する)場合がある。従って、上記情報処理装置においては、ハッシュ値の衝突が発生した場合に、2つの異なるデータが誤って同一のデータとして認識され、一方のデータを消失してしまう場合が生じるという問題があった。
また、仮に、ハッシュ値が同一である2つのデータの少なくとも一部を直接比較することによりデータが同一であるか否かを検知するように上記情報処理装置を構成した場合には、情報処理装置の処理負荷が過大となってしまうという問題があった。
このため、本発明の目的は、上述した課題である「ハッシュ値の衝突が発生した場合に、処理負荷が過大となることなくデータが同一であるか否かを検知することができないこと」を解決することが可能な情報処理装置を提供することにある。
かかる目的を達成するため本発明の一形態である情報処理装置は、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を備える。
また、本発明の他の形態である情報処理システムは、
記憶装置を備えるとともに、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を備える。
また、本発明の他の形態である情報処理方法は、
データを含む書込要求を受け付ける書込要求受付工程と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理工程と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理工程と、
を含む。
また、本発明の他の形態であるプログラムは、
情報処理装置に、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を実現させるためのプログラムである。
本発明は、以上のように構成されることにより、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。
本発明の一形態である情報処理装置は、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を備える。
これによれば、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生した場合であっても、他方を比較することによりデータが同一であるか否かを検知することができる。即ち、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。これにより、2つの異なるデータを誤って同一のデータとして認識することを回避しながら、同一のデータが重複して記憶装置に記憶されることを回避することができる。この結果、記憶装置に記憶されるデータ量を減少させることができる。
この場合、上記情報処理装置は、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備えることが好適である。即ち、ハッシュ関数変更処理手段により、ハッシュ値の衝突が発生したハッシュ関数を他のハッシュ関数に置換することができる。
これによれば、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生する状態が継続することを回避することができる。従って、第1のハッシュ値及び第2のハッシュ値のいずれか一方を比較するだけで、そのデータと同一のデータが記憶されているか否かを検知することができる。即ち、情報処理装置の処理量を低減することができる。
また、ハッシュ値の衝突が発生した場合、ハッシュ値の衝突が発生する基となったデータを、予め定められた規則に従って空き領域に記憶させ、且つ、データの読み出し時にその規則に従って当該データを読み出すように、情報処理装置が構成されている場合であっても、そのデータを読み出すために要する時間が過大となることを防止することができる。
この場合、
上記第1のハッシュ関数は、基本となるハッシュ関数である第1の基本ハッシュ関数に、上記入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、当該第1の基本ハッシュ関数から出力されたハッシュ値を出力するように構成され、
上記第2のハッシュ関数は、基本となるハッシュ関数である第2の基本ハッシュ関数に、上記入力されたデータと、予め定められ且つ上記第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、当該第2の基本ハッシュ関数から出力されたハッシュ値を出力するように構成されることが好適である。
この場合、上記第1の基本ハッシュ関数と、上記第2の基本ハッシュ関数と、は、同一の基本ハッシュ関数であることが好適である。
これによれば、基本ハッシュ関数を1つ用意するだけで、容易に複数のハッシュ関数を用意することができる。
また、上記情報処理装置の他の態様において、上記第1の基本ハッシュ関数と、上記第2の基本ハッシュ関数と、は、異なる基本ハッシュ関数であることが好適である。
これによれば、あるデータに対して、第1のハッシュ値及び第2のハッシュ値の両方においてハッシュ値の衝突が発生する可能性を低減することができる。
この場合、
上記記憶処理手段は、上記書込要求に含まれるデータを上記記憶装置に記憶させる際、当該記憶装置内の複数のセル領域のそれぞれに、当該データを記憶させるように構成されることが好適である。
これによれば、1つのセル領域に記憶されているデータが消失した場合であっても、他のセル領域に記憶されているデータを取得することができる。即ち、記憶装置に記憶されているデータの冗長性を確保することができる。
この場合、
上記ハッシュ値取得処理手段は、上記書込要求が受け付けられた場合、少なくとも3つの互いに異なるハッシュ関数のそれぞれに当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行うように構成され、
上記記憶処理手段は、上記書込要求に含まれるデータを上記記憶装置に記憶させる際、上記複数のセル領域のそれぞれに、上記データと、上記取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させることにより、当該複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように構成されることが好適である。
これによれば、1つのハッシュ値の衝突が発生した場合であっても、複数のセル領域に共通して記憶されているハッシュ値であり且つ衝突が発生していないハッシュ値を2つ以上確保することができる。この結果、例えば、ハッシュ値の衝突が発生した場合に、そのハッシュ値を、他のハッシュ関数に基づくハッシュ値に更新するように、情報処理装置が構成されている場合において、ハッシュ値の更新処理中に書込要求が受け付けられたときであっても、上述した効果を奏することができる。
この場合、上記情報処理装置は、
上記記憶装置内のセル領域の数が予め設定された数よりも少ない場合において、上記記憶装置に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、上記記憶処理手段が上記データを記憶させるセル領域の数を増加させる処理を行うセル領域生成処理手段を備えることが好適である。
これによれば、記憶装置に新たに記憶可能なデータ量が閾値量よりも多い場合には、予め設定された数までセル領域の数を増加させることができる。
この場合、上記情報処理装置は、
上記取得されたハッシュ値のうちの1つである第1のハッシュ値と同一の第1のハッシュ値と、上記取得されたハッシュ値のうちの他の1つである第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置内の上記第1のセル領域に記憶されている場合、上記記憶処理手段が上記データを記憶させるセル領域から当該第1のセル領域を消去する処理を行うセル領域消滅処理手段を備えることが好適である。
この場合、
上記書込要求に含まれるデータは、ファイルとして取り扱われる一連のデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントであることが好適である。
これによれば、ファイルの一部のみが重複している場合に、その重複している部分が記憶装置に重複して記憶されることを防止することができる。この結果、記憶装置に記憶されるデータ量をより一層減少させることができる。
また、本発明の他の形態である情報処理システムは、
記憶装置を備えるとともに、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を備える。
この場合、上記情報処理システムは、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備えることが好適である。
また、本発明の他の形態である情報処理方法は、
データを含む書込要求を受け付ける書込要求受付工程と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理工程と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理工程と、
を含む。
この場合、上記情報処理方法は、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理工程を含むことが好適である。
また、本発明の他の形態であるプログラムは、
情報処理装置に、
データを含む書込要求を受け付ける書込要求受付手段と、
上記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて上記記憶装置に記憶されていない場合、上記書込要求に含まれるデータと、上記取得された第1のハッシュ値と、上記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、上記取得された第1のハッシュ値と同一の第1のハッシュ値と上記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
を実現させるためのプログラムである。
この場合、上記プログラムは、
上記情報処理装置に、更に、
上記取得された第1のハッシュ値と同一の第1のハッシュ値と、上記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて上記記憶装置に記憶されている場合、以降において上記ハッシュ値取得処理手段が上記第1のハッシュ値を取得するために用いるハッシュ関数を、上記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を実現させるためのプログラムであることが好適である。
上述した構成を有する、情報処理システム、情報処理方法、又は、プログラム、の発明であっても、上記情報処理装置と同様の作用を有するために、上述した本発明の目的を達成することができる。
以下、本発明に係る、情報処理装置、情報処理システム、情報処理方法、及び、プログラム、の実施形態について図1〜図20を参照しながら説明する。
<実施形態>
図1に示したように、実施形態に係る情報処理システム1は、情報処理装置100と、外部記憶装置(記憶装置)110と、を含む。
情報処理装置100は、図示しない中央処理装置(CPU;Central Processing Unit)、及び、内部記憶装置(メモリ及びハードディスク駆動装置(HDD))を備える。情報処理装置100は、内部記憶装置に記憶されているプログラム(例えば、オペレーティングシステム)をCPUが実行することにより、後述する機能を実現するように構成されている。
外部記憶装置110は、情報を記憶(保持)するための記憶媒体を備える。外部記憶装置110は、情報処理装置100からの書込指示に応じて、情報を記憶媒体に記憶させる。また、外部記憶装置110は、情報処理装置100からの読出指示に応じて、記憶媒体に記憶されている情報を情報処理装置100へ伝達する。
図2は、上記のように構成された情報処理システム1の機能を表すブロック図である。この機能は、情報処理装置100のCPUが内部記憶装置に記憶されているプログラム等を実行することにより、実現される。
この情報処理装置100の機能は、ファイルシステム制御部11と、書込要求受付部(書込要求受付手段)12と、ハッシュ値取得処理部(ハッシュ値取得処理手段)13と、記憶処理部(記憶処理手段)14と、ハッシュ関数変更処理部(ハッシュ関数変更処理手段、ハッシュ関数変更処理工程)15と、セル領域消滅処理部(セル領域消滅処理手段)16と、セル領域生成処理部(セル領域生成処理手段)17と、読出要求受付部(読出要求受付手段)18と、を含む。
ファイルシステム制御部11は、情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)が、外部記憶装置110に記憶されているデータをファイルとして取り扱う(例えば、ファイルを読み出す、又は、ファイルを書き出す)ための機能を提供する。
ファイルシステム制御部11は、図3に示したファイルシステム情報D30を内部記憶装置に記憶させている。ファイルシステム情報D30は、ファイル管理情報D31と、ハッシュ関数情報D32と、セル領域情報D33と、を含む。
ファイル管理情報D31は、ファイルのメタ情報を含む。メタ情報は、各ファイルのファイルシステムにおける位置(パス)、アクセス制御権、作成日、及び、更新日等を表す情報を含む。また、ファイル管理情報D31は、ファイルとセグメントとを対応付けるための情報を含む。ここで、セグメントは、ファイルとして取り扱われる一連のデータ(ファイルを構成するデータ)を所定のデータサイズ毎に分割したデータブロックである。
本例では、ファイル管理情報D31は、図4に示したファイルメタ情報テーブル、図5に示したノード関係テーブル、図6に示したファイル構成セグメントテーブル、及び、図7に示したセグメントハッシュ管理テーブル、を含む。
ファイルメタ情報テーブルは、図4に示したように、ノード(i−node)番号と、先頭セグメント番号と、ディレクトリフラグと、ファイル名と、作成日と、からなる情報を複数含む。なお、ファイルメタ情報テーブルは、更新日、及び、アクセス権等の他の情報を含んでいてもよい。
ノード番号は、ファイルを管理するためのファイルシステムにてファイルを識別するための情報である。ファイルシステムは、階層構造(本例では、木(ツリー)構造)を有している。即ち、ファイルシステムは、ファイルと、ディレクトリと、を有し、ディレクトリは、ファイル及び/又はディレクトリを格納するための特殊ファイルである。以下、本明細書においては、ファイルfaがディレクトリdaに格納されている場合、「da/fa」と表す。また、この場合、ディレクトリdaを「親」と呼び、ファイルfaを「子」と呼ぶ。
本例では、ファイルメタ情報テーブルに、ノード番号として「0」、「1」、「50」、及び、「300」のそれぞれを有する情報を含んでいる状態とする。なお、ノード番号「0」により識別されるファイルは、ファイルシステムにおける最上階層に位置する(全てのファイルの親となる)ファイル(即ち、ルートファイル)である。
ディレクトリフラグは、そのファイルが特殊ファイルとしてのディレクトリであるか否かを表す情報である。ディレクトリフラグは、「1」である場合にそのファイルがディレクトリであることを表し、「0」である場合にそのファイルが通常の(即ち、データを表す)ファイルであることを表す。
先頭セグメント番号は、ファイル内の先頭に位置するセグメントを識別するためのセグメント番号である。セグメント番号は、セグメントを識別するための情報である。
なお、本例では、ディレクトリは、セグメントを有しない。従って、ディレクトリに対する先頭セグメント番号は、「0」に設定されている。ディレクトリがデータを有する場合には、「0」以外のセグメント番号が設定されてもよい。
ファイル名は、ノード番号により識別されるファイル(又は、ディレクトリ)の名称を表す情報である。情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)がファイルシステムにアクセスする(即ち、ファイルを読み出す、又は、ファイルを書き込む)場合には、ファイル名によりアクセスの対象となるファイルが特定される。
ノード関係テーブルは、図5に示したように、ノード番号と、そのノード番号により識別されるファイルを格納するファイルを識別するための親ノード番号と、からなる情報を複数含む。即ち、ノード関係テーブルは、ファイルの階層構造(親子関係)を表す情報である。ルートファイルを格納するファイルは存在しないため、ルートファイルのノード番号と対応付けられた親ノード番号は「0」に設定される。
本例では、ルートファイルの直下の階層には、ノード番号「1」により識別されるファイルが存在している。ノード番号により階層構造を表すと、「0/1」と表すことができ、ファイル名により階層構造を表すと、「/home」と表すことができる。
ファイル構成セグメントテーブルは、図6に示したように、ノード番号と、セグメント番号と、そのノード番号により識別されるファイルにおいてそのセグメント番号により識別されるセグメントに後続するセグメントを識別するためのセグメント番号である後続セグメント番号と、からなる情報を複数含む。
本例では、ノード番号「300」により識別されるファイルは、6個のセグメントにより構成される。即ち、このファイルは、セグメント番号「101」〜「106」により識別されるセグメントがこの順に並んだデータからなる。
セグメントハッシュ管理テーブルは、図7に示したように、セグメント番号と、第1のハッシュ値と、第2のハッシュ値と、第3のハッシュ値と、からなる情報を複数含む。第1のハッシュ値〜第3のハッシュ値のそれぞれは、後述するハッシュ関数を用いて算出された値である。
ハッシュ関数情報D32は、複数のハッシュ関数のそれぞれを表す情報を含む。各ハッシュ関数は、入力されたデータを変換することにより、そのデータよりもデータサイズが小さいハッシュ値を出力する関数である。各ハッシュ関数は、入力されるデータと出力されるハッシュ値とをn対1(nは、1を含む整数)に対応させるように構成されている。
本例では、ハッシュ関数HA(「hashA」)は、基本となるハッシュ関数である基本ハッシュ関数(第1の基本ハッシュ関数)に、入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、その基本ハッシュ関数から出力されたハッシュ値を出力するように構成される。
同様に、ハッシュ関数HB(「hashB」)は、基本ハッシュ関数(第2の基本ハッシュ関数)に、入力されたデータと、予め定められ且つ第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、その基本ハッシュ関数から出力されたハッシュ値を出力するように構成される。
なお、第1の基本ハッシュ関数と第2の基本ハッシュ関数とは、異なる基本ハッシュ関数であってもよい。この場合、あるデータに対して、第1のハッシュ値及び第2のハッシュ値の両方においてハッシュ値の衝突が発生する可能性を低減することができる。
また、ハッシュ関数HC(「hashC」)は、第1の付加データ及び第2の付加データのいずれとも異なる第3の付加データを第2の付加データに代えて用いる点においてのみハッシュ関数HBと相違している。同様に、ハッシュ関数HD(「hashD」)は、第1の付加データ、第2の付加データ及び第3の付加データのいずれとも異なる第4の付加データを第3の付加データに代えて用いる点においてのみハッシュ関数HCと相違している。
このように、情報処理装置100は、付加データを変更することにより、複数のハッシュ関数を構成する。これによれば、容易に複数のハッシュ関数を用意することができる。
なお、ハッシュ関数HA〜HDは、互いに異なるアルゴリズムに基づいて構成されていてもよい。
セル領域情報D33は、図8に示したように、領域特定情報D81と、ハッシュ関数特定情報D82と、各セル領域に対応付けられたセグメント管理テーブルD83と、を含む。
本例では、セル領域情報D33は、第1のセル領域〜第3のセル領域からなる3つのセル領域を特定するための情報を含む。
領域特定情報D81は、各セル領域に対応付けられた、外部記憶装置110を特定するための情報と、外部記憶装置110内の記憶領域(記憶位置(アドレス)の範囲)を特定するための情報と、を含む。
ハッシュ関数特定情報D82は、各セル領域に対応付けられた、ハッシュ関数を特定するための情報を含む。本例では、ハッシュ関数特定情報D82は、図9に示したハッシュ関数テーブルを含む。
ハッシュ関数テーブルは、ハッシュ関数を特定するための情報と、不使用フラグと、そのハッシュ関数を使用するセル領域を特定するための情報と、からなる情報を複数含む。不使用フラグは、ハッシュ関数の使用を禁止するか否かを表す情報である。不使用フラグに値が設定されていることは、ハッシュ関数の使用が禁止されていることを表す。一方、不使用フラグに値が設定されていないことは、ハッシュ関数の使用が許可されていることを表す。
本例では、情報処理装置100は、セグメント管理テーブルD83を、各セル領域の先頭の領域に記憶する。セグメント管理テーブルD83は、セル領域が新たに設定された場合に作成される。
第1のセル領域に対応付けられたセグメント管理テーブルD83は、図10に示したように、第1のハッシュ値と、第2のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。セグメント管理テーブルD83内の各情報は、第1のハッシュ値と、第2のハッシュ値と、セグメントハッシュ管理テーブルと、ハッシュ関数テーブルと、を介して、セグメント番号と対応付けられている。
第1のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第1のハッシュ関数に入力することにより出力されたハッシュ値である。同様に、第2のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第2のハッシュ関数に入力することにより出力されたハッシュ値である。
参照回数情報は、セグメント(データ)が参照されている回数を表す情報である。また、アドレスは、セグメントが記憶されている記憶位置を表す情報である。
同様に、第2のセル領域に対応付けられたセグメント管理テーブルD83は、第2のハッシュ値と、第3のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。第3のハッシュ値は、セグメントを、ハッシュ関数テーブルにてセル領域と対応付けられた第3のハッシュ関数に入力することにより出力されたハッシュ値である。同様に、第3のセル領域に対応付けられたセグメント管理テーブルD83は、第3のハッシュ値と、第1のハッシュ値と、参照回数情報と、アドレスと、からなる情報を複数含む。
ファイルシステム制御部11は、情報処理装置100が実行するプログラム(例えば、アプリケーションプログラム等)からのファイル書込要求又はファイル読出要求を受け付ける。ファイル書込要求は、ファイルを構成するデータと、そのファイルのパスと、を含む。ファイル読出要求は、ファイルシステムにおけるファイル名(パスを含むファイル名)を含む。
ファイルシステム制御部11は、ファイル書込要求を受け付けると、受け付けたファイル書込要求に含まれるファイルを構成するデータを分割することによりセグメントを生成する。ファイルシステム制御部11は、生成したセグメントを含む書込要求を書込要求受付部12へ出力する。
また、ファイルシステム制御部11は、ファイル読出要求を受け付けると、受け付けたファイル読出要求に含まれるファイル名と、図4〜図7に示したテーブルと、に基づいて、そのファイル名により特定されるファイルを構成するセグメントと対応付けられたハッシュ値(本例では、第1のハッシュ値〜第3のハッシュ値)を取得する。そして、ファイルシステム制御部11は、取得したハッシュ値を含む読出要求を読出要求受付部18へ出力する。
書込要求受付部12は、ファイルシステム制御部11により出力された書込要求を受け付ける。
ハッシュ値取得処理部13は、書込要求受付部12により書込要求が受け付けられた場合、ハッシュ関数テーブルを参照することにより、いずれかのセル領域に対して使用することが設定されているハッシュ関数のそれぞれに、当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行う。
例えば、図9に示したように、第1のセル領域(「cell1」)に対してハッシュ関数HA(「hashA」)及びハッシュ関数HB(「hashB」)を使用し、第2のセル領域(「cell2」)に対してハッシュ関数HB(「hashB」)及びハッシュ関数HC(「hashC」)を使用し、第3のセル領域(「cell3」)に対してハッシュ関数HC(「hashC」)及びハッシュ関数HA(「hashA」)を使用する。
従って、ハッシュ値取得処理部13は、ハッシュ関数HA(第1のハッシュ関数)に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得し、且つ、ハッシュ関数HB(第2のハッシュ関数)に当該データを入力することにより第2のハッシュ値を取得し、且つ、ハッシュ関数HC(第3のハッシュ関数)に当該データを入力することにより第3のハッシュ値を取得する処理を行う。
即ち、ハッシュ値取得処理部13は、3つの互いに異なるハッシュ関数HA〜HCのそれぞれに書込要求に含まれるデータを入力することにより、3つのハッシュ値を取得する処理を行う。
記憶処理部14は、書込要求受付部12により書込要求が受け付けられた場合、セル領域情報D33にて設定されている複数のセル領域のそれぞれに、受け付けられた書込要求に含まれるデータを記憶させる。
このとき、記憶処理部14は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて第1のセル領域に記憶されているか否かを判定する。
記憶処理部14は、記憶されていないと判定した場合、書込要求に含まれるセグメントと、ハッシュ値取得処理部13により取得された第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と、当該セグメントが参照されている回数としての所定の初期値(本例では、「1」)を表す参照回数情報と、を対応付けて第1のセル領域に新たに記憶させる。
一方、記憶処理部14は、記憶されていると判定した場合、上記第1のハッシュ値及び上記第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
同様に、記憶処理部14は、ハッシュ値取得処理部13により取得された第2のハッシュ値と同一の第2のハッシュ値と、ハッシュ値取得処理部13により取得された第3のハッシュ値と同一の第3のハッシュ値と、が対応付けて第2のセル領域に記憶されているか否かを判定する。
そして、記憶処理部14は、記憶されていないと判定した場合、セグメントと、第2のハッシュ値と、第3のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第2のセル領域に新たに記憶させ、一方、記憶されていると判定した場合、第2のハッシュ値及び第3のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
同様に、記憶処理部14は、ハッシュ値取得処理部13により取得された第3のハッシュ値と同一の第3のハッシュ値と、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、が対応付けて第3のセル領域に記憶されているか否かを判定する。
そして、記憶処理部14は、記憶されていないと判定した場合、セグメントと、第3のハッシュ値と、第1のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第3のセル領域に新たに記憶させ、一方、記憶されていると判定した場合、第3のハッシュ値及び第1のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
なお、記憶処理部14は、取得されたハッシュ値と同一のハッシュ値が記憶されているか否かを判定する際に、記憶されているハッシュ値を1つずつ順に取り出し、取り出したハッシュ値と取得されたハッシュ値とを比較することにより上記判定を行う。また、記憶処理部14は、取得されたハッシュ値と同一のハッシュ値が記憶されているか否かを判定する際に、二分探索法等の方法を用いてもよい。
ハッシュ関数変更処理部15は、各セル領域に対して、ハッシュ値取得処理部13により取得されたハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づくハッシュ値の一方と同一のハッシュ値と、他方と異なるハッシュ値と、が対応付けてそのセル領域に記憶されている場合、以降において、ハッシュ値取得処理部13が当該他方のハッシュ値を取得するために用いるハッシュ関数を他のハッシュ関数に変更する処理を行う。
即ち、例えば、ハッシュ関数変更処理部15は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて第1のセル領域に記憶されている場合、以降において、ハッシュ値取得処理部13が第1のハッシュ値を取得するために用いるハッシュ関数を、第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行う。
なお、本実施形態の変形例において、ハッシュ関数変更処理部15は、入力されるデータと出力されるハッシュ値とをn対1(nは、1を含む整数)に対応させることが可能なデータの範囲が第1のハッシュ関数よりも広いハッシュ関数を第4のハッシュ関数として選択するように構成されていてもよい。
これによれば、ハッシュ関数を変更することにより、以降においてハッシュ値の衝突が発生する可能性をより一層低減することができる。
具体的には、ハッシュ関数変更処理部15は、ハッシュ関数テーブルにて、第1のハッシュ関数として設定されていたハッシュ関数HAと対応付けられた不使用フラグに真を表す所定の値を設定する。
セル領域消滅処理部16は、各セル領域に対して、ハッシュ値取得処理部13により取得されたハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づくハッシュ値の一方と同一のハッシュ値と、他方と異なるハッシュ値と、が対応付けてそのセル領域に記憶されている場合、記憶処理部14がセグメントを記憶させるセル領域から当該セル領域を消去する処理を行う。
従って、例えば、セル領域消滅処理部16は、ハッシュ値取得処理部13により取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13により取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて第1のセル領域に記憶されている場合、記憶処理部14がセグメントを記憶させるセル領域から当該第1のセル領域を消去する処理を行う。
また、セル領域生成処理部17は、外部記憶装置110内のセル領域の数が予め設定された数(本例では、3つ)よりも少ない場合において、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、記憶処理部14がセグメントを記憶させるセル領域の数を増加させる処理を行う。
ハッシュ関数変更処理部15は、セル領域生成処理部17によりセル領域が新たに追加された場合、そのセル領域に対して使用するハッシュ関数として、ハッシュ関数テーブルにて、値が設定されていない不使用フラグと対応付けられたハッシュ関数(例えば、第4のハッシュ関数)を設定する。
読出要求受付部18は、ファイルシステム制御部11により出力された読出要求を受け付ける。読出要求受付部18は、受け付けた読出要求に含まれるハッシュ値と、図10に示したセグメント管理テーブルと、に基づいて、各セル領域に記憶されているセグメントを読み出す。そして、読出要求受付部18は、読み出したセグメントをファイルシステム制御部11へ出力する。
ファイルシステム制御部11は、読出要求受付部18により出力されたセグメントからファイルを生成し、生成したファイルを、ファイル読出要求を出力したプログラムに対して出力する。
次に、上述した情報処理システム1の作動について具体的に述べる。
先ず、ファイルシステムを管理するための情報処理システム1の作動について、図11を参照しながら説明する。
外部記憶装置110の記憶領域には、セル領域が形成される。情報処理システム1は、セル領域の数が不足している場合にはセル領域を増加(生成)させ、一方、ハッシュ値の衝突が発生した場合にはセル領域を減少(消滅)させる。即ち、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、且つ、未使用フラグに値が設定されていない予備のハッシュ関数が存在している場合、外部記憶装置110の記憶領域は、セル領域を用いて自律的に管理される。
先ず、情報処理装置100は、ユーザからの指示に基づくファイルシステム作成要求を受け付ける(ステップ1105)。ファイルシステム作成要求は、アクティブな(使用する)セル領域の最大数を表す情報と、1つのセル領域に対して使用するハッシュ関数の数を表す情報と、を含む。本例では、使用するセル領域の最大数が3つであり、1つのセル領域に対して使用するハッシュ関数の数が2つである場合を想定する。
次いで、情報処理装置100は、ファイルシステムの初期化を行う(ステップ1110)。具体的には、情報処理システム1は、外部記憶装置110の記憶領域に記憶されているデータを消去し、内部記憶装置に記憶されているファイルシステム情報D30を予め設定された初期値に設定する。
そして、情報処理装置100は、ステップ1115にて、1つのセル領域を設定(生成)する処理を行うため、図12のステップ1205へ進む。
次いで、情報処理装置100は、既に設定されているセル領域が存在するか否かを判定する。
この状態においては、セル領域は1つも設定されていないので、情報処理装置100は、「No」と判定してステップ1210に進む。そして、情報処理装置100は、図9に示したハッシュ関数テーブルを参照しながら、値が設定されていない不使用フラグと対応付けられたハッシュ関数を2つ(ここでは、ハッシュ関数HA及びハッシュ関数HB)選択する。更に、情報処理装置100は、セル領域として割り当てる記憶領域を特定する(ステップ1210)。
更に、情報処理装置100は、特定した記憶領域の先頭の領域にセグメント管理テーブルを作成する(記憶させる)(ステップ1215)。
次に、情報処理装置100は、ステップ1120へ進み、設定されたセル領域の数が上記最大数(本例では、3つ)以下であるか否かを判定する。この状態においては、情報処理装置100は、「Yes」と判定してステップ1125に進み、セル領域を生成するためのリソースが十分であるか否かを判定する。
情報処理装置100は、外部記憶装置110に新たに記憶可能なデータ量が所定の閾値量よりも多く、且つ、不使用フラグに値が設定されておらず、現在使用されていないハッシュ関数(値が設定されていない不使用フラグと対応付けられたハッシュ関数)が存在する場合には、リソースが十分であると判定する。
情報処理装置100は、ステップ1125にて「Yes」と判定した場合、ステップ1130に進み、ステップ1115と同様に、1つのセル領域を生成する処理を行うため、図12のステップ1205へ進む。
次いで、情報処理装置100は、既に設定されているセル領域が存在するか否かを判定する。この状態においては、セル領域は1つ設定されているので、情報処理装置100は、「Yes」と判定してステップ1220に進む。
情報処理装置100は、図9に示したハッシュ関数テーブルを参照しながら、値が設定されていない不使用フラグと対応付けられたハッシュ関数を1つ(ここでは、ハッシュ関数HC)選択する。更に、情報処理装置100は、セル領域として割り当てる記憶領域を特定する。
次いで、情報処理装置100は、廃棄されたセル領域が存在するか否かを判定する(ステップ1225)。廃棄されたセル領域は、後述するように、ハッシュ値の衝突が発生したことにより消滅させられたセル領域である。
この状態においては、廃棄されたセル領域が存在しないので、情報処理装置100は、「No」と判定してステップ1230に進み、既に設定されているセル領域の中から任意のセル領域を選択し、選択したセル領域に基づいて新たなセル領域を生成する処理を行う。
具体的には、情報処理装置100は、図13に概念的に示したように、既に設定されているセル領域(ここでは、第1のセル領域)に記憶されているデータ(セグメント)及びセグメント管理テーブルを、新たに生成したセル領域(第2のセル領域)に記憶させる。
更に、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、第1のセル領域に対して使用するハッシュ関数の一方(ここでは、ハッシュ関数HB)を第2のセル領域に承継させる。加えて、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、上記ステップ1220にて選択したハッシュ関数(ハッシュ関数HC)を第2のセル領域に対して使用するハッシュ関数として設定する。
次いで、情報処理装置100は、ステップ1235にて、上記ステップ1220にて選択したハッシュ関数(ハッシュ関数HC)に、第2のセル領域に記憶されている各セグメントを入力することにより出力されたハッシュ値により、第2のセル領域に記憶されているセグメント管理テーブル内の対応するハッシュ値(第3のハッシュ値)を置換する。
そして、情報処理装置100は、ステップ1135に進み、ハッシュ値の衝突が発生したか否かを判定する。ハッシュ値の衝突の詳細については後述する。
この状態においては、ハッシュ値の衝突は発生していないので、情報処理装置100は、「No」と判定して、ステップ1120へ戻る。
そして、情報処理装置100がステップ1120〜ステップ1135の処理を繰り返し実行することにより、第2のセル領域と同様に第3のセル領域が生成される。これにより、外部記憶装置110には、図14に概念的に示したように、第1のセル領域〜第3のセル領域が形成される。
なお、情報処理装置100は、複数のセル領域から任意の1対のセル領域を取り出した場合において、取り出したセル領域のうちの一方のセル領域に対して使用するハッシュ関数の一部が他方のセル領域に対して使用するハッシュ関数の一部と同一であり、且つ、一方のセル領域に対して使用するハッシュ関数の他部が他方のセル領域に対して使用するハッシュ関数の他部と異なるように、各セル領域に対してハッシュ関数を割り当てる。
換言すると、情報処理装置100は、上記書込要求に含まれるデータを記憶装置に記憶させる際、上記複数のセル領域のそれぞれに、当該データと、取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させる。このとき、情報処理装置100は、複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように、データ及びハッシュ値を各セル領域に記憶させる。
従って、本例では、第1のセル領域に対して使用するハッシュ関数として、ハッシュ関数HA及びハッシュ関数HBが設定され、且つ、第2のセル領域に対して使用するハッシュ関数として、ハッシュ関数HB及びハッシュ関数HCが設定され、且つ、第3のセル領域に対して使用するハッシュ関数として、ハッシュ関数HC及びハッシュ関数HAが設定される。即ち、ハッシュ関数テーブルは、図9に示したように、情報が設定される。
次に、ハッシュ値の衝突が発生した場合について説明する。
この場合、情報処理装置100がステップ1135に進んだとき、情報処理装置100は、「Yes」と判定してステップ1140に進み、発生した衝突に係るハッシュ値を取得する基となったハッシュ関数を使用するセル領域を消滅させる。
具体的には、情報処理装置100は、セル領域情報D33内の上記セル領域を特定するための情報に、当該セル領域を廃棄する旨を表す情報を設定する。これにより、情報処理装置100は、以降において、このセル領域を廃棄されたセル領域として取り扱う。
更に、情報処理装置100は、図9に示したハッシュ関数テーブル内の、発生した衝突に係るハッシュ値を取得する基となったハッシュ関数と対応付けられた不使用フラグに、真を表す値を設定する。これにより、情報処理装置100は、以降において、このハッシュ関数を使用しない。
次に、廃棄されたセル領域が存在している場合において、情報処理装置100がセル領域の生成を行う場合について説明する。
この場合、情報処理装置100がステップ1225に進んだとき、情報処理装置100は、「Yes」と判定してステップ1240に進み、廃棄されたセル領域の中から任意のセル領域を選択し、選択したセル領域に基づいて新たなセル領域を生成する処理を行う。
具体的には、情報処理装置100は、廃棄されたセル領域に記憶されているデータ(セグメント)及びセグメント管理テーブルを、新たに生成したセル領域に記憶させる。
更に、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、廃棄されたセル領域に対して使用するハッシュ関数の一方を新たに生成したセル領域に承継させる。加えて、情報処理装置100は、図9に示したハッシュ関数テーブルの情報を変更することにより、上記ステップ1220にて選択したハッシュ関数を新たに生成したセル領域に対して使用するハッシュ関数として設定する。
次いで、情報処理装置100は、ステップ1235にて、上記ステップ1220にて選択したハッシュ関数に、新たに生成したセル領域に記憶されている各セグメントを入力することにより出力されたハッシュ値により、新たに生成したセル領域に記憶されているセグメント管理テーブル内の対応するハッシュ値を置換する。
これにより、セル領域を生成するための情報処理装置100の処理負荷を軽減することができる。
なお、情報処理装置100は、ハッシュ値の置換後に、活動している正常セルとのデータ同期を行うように構成されることが好適である。
また、情報処理装置100は、複数のセル領域のそれぞれに対して、同一のハッシュ関数に基づくハッシュ値を算出する場合、1つのセル領域に対して算出したハッシュ値を他のセル領域に対して設定するように構成されていてもよい。
例えば、図15に示したように、第1のセル領域に対して、ハッシュ関数HDを用いて第1のハッシュ値を取得するとともに、第3のセル領域に対して、ハッシュ関数HDを用いて第1のハッシュ値を取得する場合を想定する。
この場合、情報処理装置100は、第1のセル領域に記憶されているセグメントのうちの先頭側の半分に対して、第1のハッシュ値を取得し、取得した第1のハッシュ値を第1のセル領域に対して設定する。そして、情報処理装置100は、取得した第1のハッシュ値を第3のセル領域に対しても設定する。
一方、情報処理装置100は、第3のセル領域に記憶されているセグメントのうちの末尾側の半分に対して、第1のハッシュ値を取得し、取得した第1のハッシュ値を第3のセル領域に対して設定する。そして、情報処理装置100は、取得した第1のハッシュ値を第1のセル領域に対しても設定する。
これによれば、情報処理装置100が、第1のセル領域に記憶されているセグメントのすべてに対して、第1のハッシュ値を取得し、且つ、第3のセル領域に記憶されているセグメントのすべてに対して、第1のハッシュ値を取得するように構成されている場合と比較して、ハッシュ値を取得するための情報処理装置100の処理負荷を軽減することができる。
次に、ファイルを構成するデータを外部記憶装置110に記憶させるための情報処理システム1の作動について、図16を参照しながら説明する。
先ず、情報処理装置100は、ファイル書込要求を受け付ける(ステップ1605、書込要求受付工程)。そして、情報処理装置100は、ファイル書込要求に含まれるファイルを構成するデータを分割することによりセグメントを生成する。次いで、情報処理装置100は、図9に示したハッシュ関数テーブルを参照することにより、いずれかのセル領域に対して使用することが設定されているハッシュ関数のそれぞれに、生成したセグメントを入力することによりハッシュ値を取得する処理を行う(ステップ1610、ハッシュ値取得処理工程)。
本例では、図17に示したように、情報処理装置100は、ファイルを6個のセグメントS1〜S6に分割し、ハッシュ関数HA、ハッシュ関数HB及びハッシュ関数HCの3つを用いてそれぞれのハッシュ値(第1のハッシュ値〜第3のハッシュ値)HA1〜HC6を取得する。
次いで、情報処理装置100は、ファイル書込要求に含まれるパスと、ファイルメタ情報テーブルと、ノード関係テーブルと、に基づいて、そのパスに対応するノード番号及び先頭セグメント番号を取得する。更に、情報処理装置100は、取得したノード番号及び先頭セグメント番号と、ファイル構成セグメントテーブルと、に基づいて上記ファイルを構成するすべてのセグメント番号を取得する。そして、情報処理装置100は、取得したセグメント番号と、セグメントハッシュ管理テーブルと、に基づいてそのセグメント番号により特定されるセグメント(既に外部記憶装置110に記憶されているセグメント)のハッシュ値を取得する。
そして、情報処理装置100は、各セル領域に対して、図10に示したセグメント管理テーブルにて、取得したハッシュ値のうちのそのセル領域に対して使用するハッシュ関数に基づく2つのハッシュ値と同一の2つのハッシュ値と対応付けられた参照回数情報を、その参照回数情報が表す参照回数を1だけ減少させるように、変更する(ステップ1615)。
次いで、情報処理装置100は、図10に示したセグメント管理テーブルにて、1以下の参照回数を表す参照回数情報と対応付けられたセグメントを、各セル領域から消去する(ステップ1620)。
そして、情報処理装置100は、セル領域毎に独立して記憶処理を実行する(ステップ1625、記憶処理工程)。ここでは、第1のセル領域に対する記憶処理について説明するが、他のセル領域に対する記憶処理も同様に行われる。
情報処理装置100は、第1のセル領域に対して記憶処理を実行するため、ステップ1805に進む。情報処理装置100は、上記ステップ1610にて取得されたハッシュ値のうちの、そのセル領域に対して設定されている2つのハッシュ関数に基づくハッシュ値(即ち、第1のハッシュ値及び第2のハッシュ値)と同一の2つのハッシュ値が対応付けて記憶されているか否かを判定する。
即ち、情報処理装置100は、上記ステップ1610にて取得されたハッシュ値のうちの第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得されたハッシュ値のうちの第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて第1のセル領域に記憶されているか否かを判定する。
いま、上記ステップ1610にて取得された第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けられて第1のセル領域に記憶されている場合を想定して説明を続ける。
この場合、情報処理装置100は、「Yes」と判定してステップ1810に進み、図10に示したセグメント管理テーブルにて上記2つのハッシュ値と対応付けられた参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
また、上記ステップ1610にて取得された第1のハッシュ値と異なる第1のハッシュ値のみが第1のセル領域に記憶され、且つ、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値のみが第1のセル領域に記憶されている場合を想定して説明を続ける。
この場合、情報処理装置100は、ステップ1805にて「No」と判定し、ステップ1815に進む。そして、情報処理装置100は、上記ステップ1610にて取得された第1のハッシュ値と異なる第1のハッシュ値のみが第1のセル領域に記憶され、且つ、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値のみが第1のセル領域に記憶されているか否かを判定する。
上記仮定に従えば、情報処理装置100は、「Yes」と判定してステップ1820に進み、上記ステップ1610にて生成されたセグメントと、上記ステップ1610にて取得された第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と、初期値を表す参照回数情報と、を対応付けて第1のセル領域に新たに記憶させる。具体的には、情報処理装置100は、セグメントが記憶される位置を表すアドレスと、2つのハッシュ値と、参照回数情報と、からなる情報を図10に示したセグメント管理テーブルに追加する。
また、上記ステップ1610にて取得された第1のハッシュ値と同一の第1のハッシュ値と、上記ステップ1610にて取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けられて第1のセル領域に記憶されている場合を想定して説明を続ける。
この場合、情報処理装置100は、ステップ1815にて「No」と判定してステップ1825に進み、第1のハッシュ値の衝突が発生したことを検知する。これにより、情報処理装置100が図11のステップ1135に進んだとき、情報処理装置100は、「Yes」と判定してステップ1140に進み、第1のセル領域を消滅させるとともに、ハッシュ関数HAと対応付けられた不使用フラグに真を表す値を設定する。
次に、外部記憶装置110に記憶されているセグメントからなるファイルを読み出すための情報処理システム1の作動について、図19を参照しながら説明する。
先ず、情報処理装置100は、ファイル読出要求を受け付ける(ステップ1905)。そして、情報処理装置100は、ファイル読出要求に含まれるパスと、ファイルメタ情報テーブルと、ノード関係テーブルと、に基づいて、そのパスに対応するノード番号及び先頭セグメント番号を取得する。
更に、情報処理装置100は、取得したノード番号及び先頭セグメント番号と、ファイル構成セグメントテーブルと、に基づいて上記ファイルを構成するすべてのセグメント番号を取得する。そして、情報処理装置100は、取得したセグメント番号と、セグメントハッシュ管理テーブルと、に基づいてそのセグメント番号により特定されるセグメント(既に外部記憶装置110に記憶されているセグメント)のハッシュ値を取得する。
そして、情報処理装置100は、図10に示したセグメント管理テーブルにて、取得したハッシュ値のうちの2つと同一のハッシュ値と対応付けられたアドレスにて記憶されているセグメントを取得する(ステップ1910)。
次いで、情報処理装置100は、取得したセグメントと、ファイル構成セグメントテーブルと、に基づいてファイルを生成し、生成したファイルを、ファイル読出要求を出力したプログラムに対して出力する(ステップ1915)。
以上、説明したように、本発明による情報処理システムの実施形態によれば、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生した場合であっても、他方を比較することによりデータ(セグメント)が同一であるか否かを検知することができる。即ち、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。これにより、2つの異なるデータを誤って同一のデータとして認識することを回避しながら、同一のデータが重複して外部記憶装置110(記憶装置)に記憶されることを回避することができる。この結果、記憶装置に記憶されるデータ量を減少させることができる。
更に、上記実施形態において、情報処理装置100は、取得された第1のハッシュ値と同一の第1のハッシュ値と、取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて記憶装置(第1のセル領域)に記憶されている場合、以降において、第1のハッシュ値を取得するために用いるハッシュ関数を、第1のハッシュ関数(ハッシュ関数HA)から当該第1のハッシュ関数と異なる第4のハッシュ関数(ハッシュ関数HD)に変更する処理を行う。
これによれば、あるデータを含む書込要求を受け付けた場合に、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生する状態が継続することを回避することができる。従って、第1のハッシュ値及び第2のハッシュ値のいずれか一方を比較するだけで、そのデータと同一のデータが記憶されているか否かを検知することができる。即ち、情報処理装置100の処理量を低減することができる。
また、ハッシュ値の衝突が発生した場合、ハッシュ値の衝突が発生する基となったデータを、予め定められた規則に従って空き領域に記憶させ、且つ、データの読み出し時にその規則に従って当該データを読み出すように、情報処理装置が構成されている場合であっても、そのデータを読み出すために要する時間が過大となることを防止することができる。
また、上記実施形態において、情報処理装置100は、書込要求に含まれるデータを外部記憶装置110(記憶装置)に記憶させる際、外部記憶装置110内の複数のセル領域のそれぞれに、当該データを記憶させる。
これによれば、1つのセル領域に記憶されているデータが消失した場合であっても、他のセル領域に記憶されているデータを取得することができる。即ち、外部記憶装置110に記憶されているデータの冗長性を確保することができる。
また、上記実施形態によれば、1つのハッシュ値の衝突が発生した場合であっても、複数のセル領域に共通して記憶されているハッシュ値であり且つ衝突が発生していないハッシュ値を2つ以上確保することができる。この結果、例えば、ハッシュ値の衝突が発生した場合に、そのハッシュ値を、他のハッシュ関数に基づくハッシュ値に更新するように、情報処理装置が構成されている場合において、ハッシュ値の更新処理中に書込要求が受け付けられたときであっても、上述した効果を奏することができる。
更に、上記実施形態において、情報処理装置100は、外部記憶装置110(記憶装置)内のセル領域の数が予め設定された数よりも少ない場合において、外部記憶装置110に新たに記憶可能なデータ量が閾値量よりも多い場合、データを記憶させるセル領域の数を増加させる処理を行う。
これによれば、外部記憶装置110に新たに記憶可能なデータ量が閾値量よりも多い場合には、予め設定された数までセル領域の数を増加させることができる。
また、上記実施形態において、書込要求に含まれるデータは、ファイルを構成するデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントである。
これによれば、ファイルの一部のみが重複している場合に、その重複している部分が外部記憶装置110(記憶装置)に重複して記憶されることを防止することができる。この結果、外部記憶装置110に記憶されるデータ量をより一層減少させることができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、情報処理システム1は、互いに独立した2つの装置として、情報処理装置100と外部記憶装置110とを備えていたが、情報処理装置100及び外部記憶装置110を含む1つの装置を備えていてもよい。また、情報処理装置100の内部記憶装置に記憶されている情報は、外部記憶装置110に記憶されていてもよい。
また、上記実施形態において、情報処理システム1は、1つの外部記憶装置110を備えていたが、複数の外部記憶装置110を備えていてもよい。加えて、上記実施形態においては、使用するセル領域の最大数は、3つであったが、1つ又は2つであってもよく、4つ以上であってもよい。同様に、1つのセル領域に対して使用するハッシュ関数の数も、3つ以上であってもよい。
また、上記実施形態の変形例において、図20に示したように、情報処理装置100Aの機能は、書込要求受付部12Aと、ハッシュ値取得処理部13Aと、記憶処理部14Aと、を含んでいてもよい。
書込要求受付部12Aは、データを含む書込要求を受け付ける。
ハッシュ値取得処理部13Aは、書込要求受付部12Aにより書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行う。
記憶処理部14Aは、ハッシュ値取得処理部13Aにより取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13Aにより取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて記憶装置110Aに記憶されていない場合、書込要求に含まれるデータと、取得された第1のハッシュ値と、取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置110Aに新たに記憶させる。
一方、記憶処理部14Aは、ハッシュ値取得処理部13Aにより取得された第1のハッシュ値と同一の第1のハッシュ値と、ハッシュ値取得処理部13Aにより取得された第2のハッシュ値と同一の第2のハッシュ値と、が対応付けて当該記憶装置110Aに記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する。
この変形例によれば、上記実施形態と同様に、第1のハッシュ値及び第2のハッシュ値のいずれか一方の衝突が発生した場合であっても、他方を比較することによりデータが同一であるか否かを検知することができる。即ち、ハッシュ値の衝突が発生した場合に、処理負荷が過大となることを防止しながらデータが同一であるか否かを検知することができる。これにより、2つの異なるデータを誤って同一のデータとして認識することを回避しながら、同一のデータが重複して記憶装置に記憶されることを回避することができる。この結果、記憶装置に記憶されるデータ量を減少させることができる。
なお、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
本発明は、データを記憶する記憶装置を複数備えるストレージシステム等に適用可能である。
本発明の実施形態に係る情報処理システムの概略構成を表す図である。 図1に示した情報処理システムの機能の概略を表すブロック図である。 図1に示した情報処理装置が記憶しているファイルシステム情報である。 図1に示した情報処理装置が記憶しているファイルメタ情報テーブルである。 図1に示した情報処理装置が記憶しているノード関係テーブルである。 図1に示した情報処理装置が記憶しているファイル構成セグメントテーブルである。 図1に示した情報処理装置が記憶しているセグメントハッシュ管理テーブルである。 図1に示した情報処理装置が記憶しているセル領域情報である。 図1に示した情報処理装置が記憶しているハッシュ関数テーブルである。 図1に示した情報処理装置が記憶しているセグメント管理テーブルである。 図1に示した情報処理装置が、ファイルシステムを管理するために実行するプログラムを示したフローチャートである。 図1に示した情報処理装置が、セル領域を生成するために実行するプログラムを示したフローチャートである。 第1のセル領域に基づいて第2のセル領域が生成される際に、セル領域間で継承される情報を概念的に示した説明図である。 生成されたセル領域を概念的に示した説明図である。 第1のセル領域及び第3のセル領域のそれぞれに対して、ハッシュ関数HDに基づく第1のハッシュ値を算出する場合における情報処理装置の作動を概念的に示した説明図である。 図1に示した情報処理装置が、ファイル書込要求に応じてファイルを書き込むために実行するプログラムを示したフローチャートである。 ファイルを構成するセグメントと、セグメント毎に取得されたハッシュ値と、を概念的に示した説明図である。 図1に示した情報処理装置が、セグメントを記憶装置に記憶させるために実行するプログラムを示したフローチャートである。 図1に示した情報処理装置が、ファイル読出要求に応じてファイルを読み出すために実行するプログラムを示したフローチャートである。 本発明の実施形態の変形例に係る情報処理システムの機能の概略を表すブロック図である。
符号の説明
1 情報処理システム
11 ファイルシステム制御部
12 書込要求受付部
12A 書込要求受付部
13 ハッシュ値取得処理部
13A ハッシュ値取得処理部
14 記憶処理部
14A 記憶処理部
15 ハッシュ関数変更処理部
16 セル領域消滅処理部
17 セル領域生成処理部
18 読出要求受付部
100 情報処理装置
100A 情報処理装置
110 外部記憶装置
110A 記憶装置

Claims (14)

  1. データを含む書込要求を受け付ける書込要求受付手段と、
    前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
    を備える情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備える情報処理装置。
  3. 請求項1又は請求項2に記載の情報処理装置であって、
    前記第1のハッシュ関数は、基本となるハッシュ関数である第1の基本ハッシュ関数に、前記入力されたデータと、予め定められた第1の付加データと、からなるデータを入力することにより、当該第1の基本ハッシュ関数から出力されたハッシュ値を出力するように構成され、
    前記第2のハッシュ関数は、基本となるハッシュ関数である第2の基本ハッシュ関数に、前記入力されたデータと、予め定められ且つ前記第1の付加データと異なる第2の付加データと、からなるデータを入力することにより、当該第2の基本ハッシュ関数から出力されたハッシュ値を出力するように構成された情報処理装置。
  4. 請求項1乃至請求項3のいずれか一項に記載の情報処理装置であって、
    前記記憶処理手段は、前記書込要求に含まれるデータを前記記憶装置に記憶させる際、当該記憶装置内の複数のセル領域のそれぞれに、当該データを記憶させるように構成された情報処理装置。
  5. 請求項4に記載の情報処理装置であって、
    前記ハッシュ値取得処理手段は、前記書込要求が受け付けられた場合、少なくとも3つの互いに異なるハッシュ関数のそれぞれに当該書込要求に含まれるデータを入力することによりハッシュ値を取得する処理を行うように構成され、
    前記記憶処理手段は、前記書込要求に含まれるデータを前記記憶装置に記憶させる際、前記複数のセル領域のそれぞれに、前記データと、前記取得されたハッシュ値のうちの少なくとも2つのハッシュ値と、を対応付けて記憶させることにより、当該複数のセル領域の任意の1つである第1のセル領域に当該データと対応付けて記憶されている1つのハッシュ値が、当該第1のセル領域以外の第2のセル領域に当該データと対応付けて記憶され、且つ、当該第1のセル領域に当該データと対応付けて記憶されている他の1つのハッシュ値が、当該第1のセル領域及び当該第2のセル領域以外の第3のセル領域に当該データと対応付けて記憶されるように構成された情報処理装置。
  6. 請求項4又は請求項5に記載の情報処理装置であって、
    前記記憶装置内のセル領域の数が予め設定された数よりも少ない場合において、前記記憶装置に新たに記憶可能なデータ量が所定の閾値量よりも多い場合、前記記憶処理手段が前記データを記憶させるセル領域の数を増加させる処理を行うセル領域生成処理手段を備える情報処理装置。
  7. 請求項5又は請求項6に記載の情報処理装置であって、
    前記取得されたハッシュ値のうちの1つである第1のハッシュ値と同一の第1のハッシュ値と、前記取得されたハッシュ値のうちの他の1つである第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置内の前記第1のセル領域に記憶されている場合、前記記憶処理手段が前記データを記憶させるセル領域から当該第1のセル領域を消去する処理を行うセル領域消滅処理手段を備える情報処理装置。
  8. 請求項1乃至請求項7のいずれか一項に記載の情報処理装置であって、
    前記書込要求に含まれるデータは、ファイルとして取り扱われる一連のデータを所定のデータサイズ毎に分割したデータブロックとしてのセグメントである情報処理装置。
  9. 記憶装置を備えるとともに、
    データを含む書込要求を受け付ける書込要求受付手段と、
    前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて前記記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
    を備える情報処理システム。
  10. 請求項9に記載の情報処理システムであって、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を備える情報処理システム。
  11. データを含む書込要求を受け付ける書込要求受付工程と、
    前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理工程と、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理工程と、
    を含む情報処理方法。
  12. 請求項11に記載の情報処理方法であって、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理工程を含む情報処理方法。
  13. 情報処理装置に、
    データを含む書込要求を受け付ける書込要求受付手段と、
    前記書込要求が受け付けられた場合、第1のハッシュ関数に当該書込要求に含まれるデータを入力することにより第1のハッシュ値を取得するとともに第2のハッシュ関数に当該データを入力することにより第2のハッシュ値を取得する処理を行うハッシュ値取得処理手段と、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて前記記憶装置に記憶されていない場合、前記書込要求に含まれるデータと、前記取得された第1のハッシュ値と、前記取得された第2のハッシュ値と、当該データが参照されている回数としての所定の初期値を表す参照回数情報と、を対応付けて当該記憶装置に新たに記憶させ、一方、前記取得された第1のハッシュ値と同一の第1のハッシュ値と前記取得された第2のハッシュ値と同一の第2のハッシュ値とが対応付けて当該記憶装置に記憶されている場合、当該第1のハッシュ値及び当該第2のハッシュ値と対応付けて記憶されている参照回数情報を、その参照回数情報が表す回数が1だけ増加するように変更する記憶処理手段と、
    を実現させるためのプログラム。
  14. 請求項13に記載のプログラムであって、
    前記情報処理装置に、更に、
    前記取得された第1のハッシュ値と同一の第1のハッシュ値と、前記取得された第2のハッシュ値と異なる第2のハッシュ値と、が対応付けて前記記憶装置に記憶されている場合、以降において前記ハッシュ値取得処理手段が前記第1のハッシュ値を取得するために用いるハッシュ関数を、前記第1のハッシュ関数から当該第1のハッシュ関数と異なる第4のハッシュ関数に変更する処理を行うハッシュ関数変更処理手段を実現させるためのプログラム。
JP2008323077A 2008-12-19 2008-12-19 情報処理装置 Expired - Fee Related JP4962483B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2008323077A JP4962483B2 (ja) 2008-12-19 2008-12-19 情報処理装置
EP09833104.4A EP2362317A4 (en) 2008-12-19 2009-10-14 INFORMATION PROCESSING DEVICE
PCT/JP2009/005336 WO2010070794A1 (ja) 2008-12-19 2009-10-14 情報処理装置
US13/129,757 US8396837B2 (en) 2008-12-19 2009-10-14 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008323077A JP4962483B2 (ja) 2008-12-19 2008-12-19 情報処理装置

Publications (2)

Publication Number Publication Date
JP2010146308A true JP2010146308A (ja) 2010-07-01
JP4962483B2 JP4962483B2 (ja) 2012-06-27

Family

ID=42268480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008323077A Expired - Fee Related JP4962483B2 (ja) 2008-12-19 2008-12-19 情報処理装置

Country Status (4)

Country Link
US (1) US8396837B2 (ja)
EP (1) EP2362317A4 (ja)
JP (1) JP4962483B2 (ja)
WO (1) WO2010070794A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152341B2 (en) 2013-03-29 2015-10-06 Kabushiki Kaisha Toshiba Storage system, storage controller, and method for eliminating data duplication based on hash table
WO2021015203A1 (ja) * 2019-07-23 2021-01-28 株式会社ソニー・インタラクティブエンタテインメント ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11126418B2 (en) * 2012-10-11 2021-09-21 Mcafee, Llc Efficient shared image deployment
US9172698B1 (en) 2012-10-12 2015-10-27 Ut-Battelle, Llc System and method for key generation in security tokens
US20140143680A1 (en) * 2012-11-21 2014-05-22 Guidance Software, Inc. Segmented graphical review system and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH021052A (ja) * 1988-06-08 1990-01-05 Nec Corp 多段構成ハッシュ表によるシンボル登録・検索方式
JPH0962697A (ja) * 1995-08-29 1997-03-07 Nec Corp 商品コード検索方式
WO2006094366A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for indexing in a reduced-redundancy storage system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7310644B2 (en) * 2001-06-06 2007-12-18 Microsoft Corporation Locating potentially identical objects across multiple computers
AU2004214014B2 (en) * 2003-02-21 2009-10-22 Datacore Software Corporation Additional hash functions in content-based addressing
US7600125B1 (en) * 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US7805470B2 (en) * 2005-06-23 2010-09-28 Emc Corporation Methods and apparatus for managing the storage of content in a file system
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US7831793B2 (en) 2006-03-01 2010-11-09 Quantum Corporation Data storage system including unique block pool manager and applications in tiered storage
US7937428B2 (en) * 2006-12-21 2011-05-03 International Business Machines Corporation System and method for generating and using a dynamic bloom filter

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH021052A (ja) * 1988-06-08 1990-01-05 Nec Corp 多段構成ハッシュ表によるシンボル登録・検索方式
JPH0962697A (ja) * 1995-08-29 1997-03-07 Nec Corp 商品コード検索方式
WO2006094366A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for indexing in a reduced-redundancy storage system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152341B2 (en) 2013-03-29 2015-10-06 Kabushiki Kaisha Toshiba Storage system, storage controller, and method for eliminating data duplication based on hash table
WO2021015203A1 (ja) * 2019-07-23 2021-01-28 株式会社ソニー・インタラクティブエンタテインメント ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム
JPWO2021015203A1 (ja) * 2019-07-23 2021-01-28
JP7282892B2 (ja) 2019-07-23 2023-05-29 株式会社ソニー・インタラクティブエンタテインメント ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム

Also Published As

Publication number Publication date
EP2362317A1 (en) 2011-08-31
US8396837B2 (en) 2013-03-12
WO2010070794A1 (ja) 2010-06-24
US20110238639A1 (en) 2011-09-29
JP4962483B2 (ja) 2012-06-27
EP2362317A4 (en) 2015-01-07

Similar Documents

Publication Publication Date Title
JP6804668B2 (ja) ブロックデータ検証方法および装置
US10102218B2 (en) File system with per-extent checksums
EP3547168A1 (en) Block chain based data processing method and device
US8719237B2 (en) Method and apparatus for deleting duplicate data
CN109766341B (zh) 一种建立哈希映射的方法、装置、存储介质
JP4962483B2 (ja) 情報処理装置
US20120323972A1 (en) Concurrently accessed hash table
US9733835B2 (en) Data storage method and storage server
JPWO2012124178A1 (ja) 分散記憶システムおよび分散記憶方法
WO2018133762A1 (zh) 文件合并方法和装置
JP2011170667A (ja) ファイル同期システム、ファイル同期方法およびファイル同期プログラム
EP3314459A1 (en) Multimodal sharing of content between documents
JP2016009344A (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
WO2015087509A1 (ja) 状態保存復元装置、状態保存復元方法、および、記憶媒体
US10969970B2 (en) Storage optimization of database in volatile and non-volatile storing unit
US10776334B2 (en) Random walking and cluster-based random walking method, apparatus and device
JP2012088940A (ja) 情報処理装置、情報処理方法、及びプログラム
US20140325271A1 (en) Terminal device, information processing method, and computer program product
CN113127376A (zh) 固态驱动器的控制方法、装置及设备
KR20210077975A (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
KR101318420B1 (ko) 메타데이터의 위치를 검색하기 위한 방법, 시스템 및 컴퓨터 판독 가능 기록 매체
JP5953262B2 (ja) データ索引装置、データ索引方法及びプログラム
JP5434500B2 (ja) 木構造処理装置及びプログラム
Pintér et al. Comparison of Source Code Storage Methods
JP2007286983A (ja) データi/o処理方法、プログラム、及び情報処理システム

Legal Events

Date Code Title Description
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: 20120228

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120312

R150 Certificate of patent or registration of utility model

Ref document number: 4962483

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees