説明

書込みレコードの重複を排除する記憶装置、及びその書込み方法

【課題】記憶装置の記録レコードの重複を排除する書込み(Deduplication)方法を提供する。
【解決手段】記憶装置は、記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2とを含み、ホストからレコード(新レコード)の書込み要求を受取るステップと、新レコードのハッシュ値(新S)を計算するステップと、バッファ2に新Sが存在するか確認するステップと、前記確認ステップでバッファ2に新Sが存在する場合、新データが新Sに対応するバッファ2に保存されたレコードと一致するかを比較するステップと、前記比較ステップで新レコードと前記レコードが一致する場合は、既に記録媒体またはバッファに保存済みレコードへのポインタ(レコードNo)を新データの書込みデータとして記録媒体に書込むステップと含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶装置において記録媒体への書込みデータ(レコードとも言う)の重複を排除する技術(Deduplication、以下、デデュプリケーション、デデュプ、またはDedupと言う)方法に関する。特に、本発明は、テープ記憶装置(テープドライブとも言う)においてテープへの書込まれたレコードの重複書込を排除する技術に関する。
【背景技術】
【0002】
ストレッジの使用量を削減する手法として、デデュプリケーションと言われる手法が存在する。ストレッジ上に同じ内容を含むファイルが複数存在する場合に、従来のように同じ内容のデータをファイルの数だけ異なる場所に保存することはしない。この技術は、データをストレッジ上の一箇所にのみ保存する。前述のどのファイルを参照する場合も同じ実体を参照し、変更が行われた場合のみその内容を新たに別の場所に保存する。この技術は、全体としてストレッジ容量の使用量を削減する手法である。削減される使用量は記憶するデータの内容に依存するが、使用方法によっては従来の1/10〜1/20にできる。
【0003】
ホストはテープにデータを書き込む場合、テープドライブに対してレコードと呼ばれる可変長の単位でデータの書き込みを行う。テープメディアの容量は、1TB程度である。テープドライブにおいてDedupを機能させる場合、新たに書き込むデータが既に書き込まれたデータと同一のものであることを確認するために時間がかかるという問題がある。
【0004】
テープドライブ(例えばIBMのエンタープライズテープドライブである TS1120)の場合 、テープ媒体に物理的位置に順に書込み読み出しを実行するシーケンシャル・デバイス(レコードを記録媒体の物理的位置に順に記録する記憶装置)である。一般にDedup技術では、書込みデータと記録データの重複か否かを示すハッシュ(hash)の生成及び対比などが必要である。シーケンシャル・デバイスが、上位装置から新たに書き込むデータを受取り、そのデータが以前書き込んだデータと同一であることが期待される。この場合、シーケンシャル・デバイスは、以前書き込んだデータを読み出すために所定のテープ位置に移動してから書込むべき元のテープ位置に戻るまで平均2分程度の時間がかかる。そのため、現在テープドライブ単体でDedup機能をサポートする製品は存在しない。
【0005】
特許文献1は、電力消費低減のため2台のストレッジの同期をとる際に差分のみをコピーする方法である。この方法は、テープドライブ単独でDedupを実施することはしない。
【0006】
特許文献2は、既にdeduplicationされたデータをテープなどにバックアップを取るための手法である。この手法は、テープドライブ単独でDedupを実施する方法ではない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−20858号公報
【特許文献2】特開2008−282382号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
以上のように、シーケンシャル・デバイス、例えばテープドライブでは、新たに書き込むデータと記録媒体上のデータとを対比するのに、テープ移動のためのオバーヘッドが大きい。そのため、現在テープドライブ単体でDedup機能を付加するとことを考慮されていない。
【0009】
本発明の目的は、記録媒体に記録されたデータの重複を排除する書込み方法、及び、その方法を実装した記憶装置(特にテープドライブ)を提供することである。
【課題を解決するための手段】
【0010】
以下ステップの番号は、図3または図4のステップの番号に対応する。
上記の目的を達成する本発明は、記憶装置への書込みレコードの重複を排除する書込み方法である。前記記憶装置は、記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2とを含む。
この方法は、
1.ホストからレコード(新レコード)の書込み要求を受取るステップと、
2.新レコードのハッシュ値(新S)を計算するステップと、
3.バッファ2に新データのハッシュ値(新S)が存在するか確認するステップと、
4.前記確認ステップ3でバッファ2に新Sが存在する場合、新データが前記新Sに対応するバッファ2に保存されたレコードと一致するかを比較するステップと、
5.前記比較ステップ4で新レコードと前記レコードが一致する場合(Yes)は、既に記録媒体またはバッファに保存済みレコードへのポインタ(レコードNo)を新データの書込みデータとして記録媒体に書込むステップと、を含む。
【0011】
この方法は更に、前記比較ステップ4で新レコードと前記バッファ2に保存されたレコードとが一致しない場合(No)、バッファ1に保存された頻度を1増分し(7.1)、新レコードの頻度が所定値以上の場合(7.2)、バッファ2に新レコード内容を新S及びポインタと併せて保存するステップと(7.3)、
9.前記ステップ7の処理後、新データを記録媒体に書込むステップと、を実行させることを特徴とする。
【0012】
この方法は更に、6.前記確認ステップ3でバッファ2に新Sが存在しない場合(No)、バッファ1に新Sが存在するかを確認するステップと、
前記確認ステップ6でバッファ1に新Sが存在する場合(Yes)、バッファ1に保存された頻度を1増分し(7.1)、新レコードの頻度が所定値以上の場合(7.2)、バッファ2に新レコード内容を新S及びポインタに併せて保存するステップと(7.3)、
9.ステップ7の処理後、新データを記録媒体に書込むステップとを含むことを特徴とする。
【0013】
この方法は更に、6.前記確認ステップ3でバッファ2に新Sが存在しない場合(No)、バッファ1に新Sが存在するかを確認するステップと、
8.前記確認ステップでバッファ1に新Sが存在しない場合(No)、新レコードの新Sについてポインタ及び頻度1をバッファ1に保存するステップと、
9.ステップ8の処理後、新データを記録媒体に書込むステップと、を含むことを特徴とする。
【0014】
この方法は、バッファ1は、テープ上に全てのレコードをハッシュ値について保存したエントリを有し、バッファ2は、前記エントリのうち書込み頻度が所定値以上について新レコードの内容を前記ハッシュ及びポインタと結びつけて保存するエントリを有することを特徴とする。
【0015】
この方法は、前記所定値が記録媒体に重複して記録された同一レコード数に対して(バッファ2の容量)/(記録媒体の容量)の値に基づいて決定されることを特徴とする。
【0016】
この方法は、前記所定値が記録媒体に重複して記録された同一レコードの数に対して設定された上限値により決定されることを特徴とする。
【0017】
上記の目的を達成する本発明は、記憶装置から記録レコードを読み出す方法である。
前記記憶装置は、記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2とを含む。この方法は、
1.ホストからポインタを指定したレコードの読出し命令を受取るステップと、
2.前記レコードに関するデータをテープから読出すステップと、
3.前記レコードのデータがテープに記録された前記レコードのポインタであるかを確認するステップと、
4.前記確認ステップ3で前記データがポインタである場合、前記ポインタに対応するレコードがバッファ2上に存在するか確認するステップと、
5.前記確認ステップでバッファ2に前記ポインタに対応するレコードが存在する場合、バッファ2から前記レコードを読み出してホストに送るステップと、を含む。
【0018】
この方法は、6.前記ポインタに対応するレコードがバッファ2に存在するか確認する4ステップで、対応レコードが存在しない場合前記データが(No)、前記ポインタが指しているテープ上のレコードを読み出すステップと、
7.前記レコードを読み出し要求の前記レコードとして読み出してホストに送るステップと、を含むことを特徴とする。
【0019】
更に上記の目的を達成する本発明は、書込みデータの重複排除するための記憶装置である。この記憶装置は、
記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、
レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2と、
記録媒体へのレコードの書込を制御する書込み制御手段とを含み、
前記書込み制御手段は、
1.ホストからレコード(新レコード)の書込み要求を受取る手段と、
2.新レコードのハッシュ値(新S)を計算する手段と、
3.バッファ2に新データのハッシュ値(新S)が存在するか確認する手段と、
4.前記確認ステップ3でバッファ2に新Sが存在する場合、新データが前記新Sに対応する(結びつく)レコードと一致するかを比較する手段と、
5.前記比較ステップ4で新レコードと前記レコードが一致する場合(Yes)は、既に記録媒体またはバッファに保存済みレコードへのポインタ(レコードNo)を新データの書込みデータとしてテープに書込む手段とを含む書込み制御を有することを特徴とする。
【0020】
本発明によれば、記憶装置における書込みデータの重複を極力排除する方法を提供して、大容量の記録媒体の有効利用を可能にする。
【図面の簡単な説明】
【0021】
【図1】本実施形態が適用されるテープドライブ10の構成例を示す。
【図2】実施例の構成要素(バッファ1、バッファ2、テープ)及び本発明の重複データの書込み及び読み出し機構を示す。
【図3】ホストからテープドライブにレコードを書き込む場合のテープドライブの重複排除の書込み方法のフローチャートを示す。
【図4】本発明の重複排除の書込み方法のより記録されたレコードを読み出すフローチャートを示す。
【発明を実施するための形態】
【0022】
以下において、本発明のテープドライブにおける重複データの排除の方法について、典型的な実施形態(以下「実施例」という)が説明される。これら実施例は例示であり、テープドライブ以外の記憶装置に提供することを排除しない。
【0023】
テープドライブ単体でDedupをサポートする手法を考案した。テープドライブが持つ一時記憶領域(例えばDRAM)を新たにDedupのための2つのバッファを用意する。バッファ1は、すでに書き込まれたレコードのレコードNoとレコードに格納されたデータのハッシュ値を対応させたテーブルを保存する。バッファ2は、書込み頻度の高いレコードをハッシュ値又はレコードNoに紐付けて保存する。書込み頻度(「頻度」とも言う)は、同じレコードについてのホストから書込み要求回数であり、一つのレコードについての重複レコードデータの数を意味する。レコードNoは、ホストが過去込み時に可変長のレコードのNo(番号)を指定する指標である。テープドライブは、Noに結びつけてレコードの内容をテープに書込み、そのNoを指定されたレコードをテープから読み出す。
【0024】
ホストからテープドライブにレコードを書き込む場合、まずそのレコードのハッシュ値を計算する。そのハッシュ値がバッファ2に格納されていれば、新たに書き込むレコードとバッファ2に格納されたそのハッシュ値に対応するレコードの内容を比較する。比較の結果が同一であることが確認された場合にはレコード本体を書き込む変わりに、すでに書き込んだ同内容のレコードNoを持つ特殊なレコードを保存する。レコードNoで指定されたテープ上のレコードは、そのレコード自体の内容を示す。
【0025】
本発明では、テープに書込むデータとして特殊なレコードとしてポインタを与える。ポインタは、レコードを特定するレコードNo及び所定の印(指標)を情報として含む。ポインタにレコードNoに含ませるのは、既にテープに書き込まれた他のレコードを特定するレコードNoに特定するためである。他のレコードNoを含んでいることを示す指標は、読取り情報がホストにより送られたレコード内容自体でなく他のレコードNoを含んでいることをテープドライブに区別させるためである。また、ポインタは、テープに書込まれたレコードNoではなくバッファ2に保存されたレコードNo(エントリNo)であってもよい。この場合、ポインタの指標は、テープのレコードNoとバッファ2に保存されたレコードのNo(エントリNo)とを区別する必要がある。なお、ポインタは、実際のレコード自体の容量より十分小さな値であるため、バッファ1及び2に容量領域を多くは占めない。バッファ1が100MB程度の場合、一般的なレコードサイズに基づくレコード数であるならば、全てレコードをバッファ1の各エントリに含ませることが出来る。
【0026】
本発明の実施例を詳述するために、テープドライブの動きについて説明する。
図1は、本実施形態が適用されるテープドライブ10の構成例を示す。テープドライブ10は、ホスト30から送られた複数のデータ(レコードとも言う)を固定長のデータセット(DS)単位でテープ記録媒体への書込み(Write)または、テープ媒体からDS単位で読み出す(Read)。DSは複数の可変長のレコードの集まりであり、固定長のフォーマット構造を有する。
【0027】
テープドライブ10は、インターフェイス11、バッファ12、チャネル13、ヘッド14、モータ15、テープ23を巻きつけるリール22、及びこれらの制御システムを含む。制御システムは、書込み読取り制御16、ヘッド位置制御システム、及びモータドライバ18を含む。モータ15は、2個のモータを設けてよい。テープドライブ10は、テープカートリッジ20を着脱可能に搭載する。
【0028】
テープカートリッジ20は、リール21に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。テープ23は、磁気テープ以外のテープ媒体でもよい。テープカートリッジは、テープのデータの記録属性(テープディレクトリと呼ばれる)の情報を、カートリッジメモリ(CM:Cartridge Memory)25と呼ばれる不揮発性メモリに保持している。テープドライブは、読み出し(Read)時に、テープカートリッジ内に装備されたCM25からディレクトリ情報を読み取り、ヘッド14に対してテープ23を目的位置まで高速に移動させる。搭載されたテープカートリッジ20のCM25は、テープドライブ10により非接触的に読み書される。CMは、テープカートリッジの属性情報が保存されたメモリマップを含む。
【0029】
書込み読取り制御16は、テープドライブ10の全体を制御する。この制御を介して、ヘッド14は、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込んだり、テープ23から情報を読出したりする。また、モータ15は、リール21、22を回転させる。1つのモータ15を表しているが、リール21、22の各々に1つずつのモータを設けるのが好ましい。
【0030】
例えば、インターフェイス11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読取りを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御、及び、書込みデータへの訂正符号の付加・読取りデータのエラー訂正も行う。モータドライバ18は、モータ15を駆動する。
【0031】
インターフェイス11は、上位装置の一例であるホスト30との通信を行う。ホスト30から、テープ23を目的の位置に移動させるコマンド、テープ23へのデータの書込みを指示するコマンド、テープ23からのデータの読取りを指示するコマンドを受け取る。それぞれは、位置決めコマンド、Writeコマンド及び同期コマンド(Flush)、Readコマンドに相当する。また、インターフェイス11は、ホスト30に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。ホスト30は、これらコマンドに可変長のデータの位置、数を指定してテープドライブ10に発行する。
【0032】
バッファ12は、テープ23に書き込むべきデータやテープ23から読出されたデータを蓄積するメモリである。例えば、メモリはDRAMによって構成される。また、バッファ12は、複数の固定長のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるDSを格納している。1つのデータセットは、ホスト30から送られるデータの1つの一部分、または、複数のデータから構成される。読み書きチャネル13を介して渡されたデータはDS単位(例えば400KBまたは1.6MB)として、ヘッド14によりテープ23に書込まれる。同期コマンドはバッファ内に保管されたデータをテープに書く込み命令である。
【0033】
図2は、実施例の構成要素、及び本発明の重複データの書込み及び読み出し機構を示す。バッファ1及び2を用いて頻出データについて重複データを管理する本発明の実施例の説明をする。Dedup用のバッファとして、テープドライブ上に1〜4GB程度の一時記憶域(バッファ、例えばDRAM)を確保できる。テープメディアの容量が1TB程度であることから、このバッファ容量では当然ならが全てのレコードをバッファに保存することはできない。言い換えると、バッファ容量は絶対的にテープ容量に比べて0.1〜0.4%と小さいためバッファに保存するレコードを取捨選択する必要がある。
【0034】
バッファ1にはハッシュ値毎のエントリを保存し、各エントリには更に1または複数のレコードNoを対応させて含ませてもよい。バッファ2にはハッシュ値及びレコードNoに加えレコードの内容そのものを保存する。バッファ2には、レコードNoの代わりにレコードNoを特定するポインタを含ませてもよい。バッファ1は、全てのデータのハッシュ値とその書込頻度を記録するために利用する。バッファ2は、バッファ1 より書込み頻度が高いことが確認されたデータの本体を記録するために利用する。書込み頻度の観測するためのバッファ1と、レコード本体を保持するバッファ2とを区別する。2つのバッファの独立に管理することにより、任意の時点で書込み頻度の高いデータのみを動的にバッファ2に残すことができる。
【0035】
図2は、バッファ1及び2を用いて頻出データについて重複データを管理する図の説明を示す。バッファ1は、すでにテープ書込まれた全てのレコードについて、そのレコードの・ハッシュ値、及び、・書込み頻度を記録する。バッファ1の各エントリ(各枠)は、ハッシュ値についてテープに記録されている全てのレコード(A,B,C・・・)を保存したエントリを含むディレクトリのようなものである。各エントリは、レコードNoを含ませてもよい。全てのレコードについてこれらの値を保存しても100MB程度のバッファ容量で足りる。レコードA,Bは同じハッシュ値を有するとして同じエントリに含まれている。頻度は同じハッシュ値を与える全てのレコードについての値である。ここでハッシュ値は、可変長なレコードを代表する数値を得る少ない桁数の固定長データで集約して代表値である。なおハッシュ値が同じでも最終的にレコード内容が一致するとか限らない。最終的にはハッシュ値が同一であることを前提として、レコードの内容自体を対比することにより最終的な一致を確認する。
【0036】
バッファ2を構成する各エントリに、レコード内容をレコードNo及びハッシュ値に紐付けて保存する。図2ではレコードA、B、C・・・のそれぞれのハッシュ値に結びつけて保存される。レコードA、B、Cは比較的頻度の大きいデータであるため、バッファ2に保存されている。バッファ1及び2は合計でも1〜4GBであり、テープ容量(〜1TB程度)に対して0.5%以下である。書込み頻度の所定値は、テープの全容量に対してバッファ2の大きさを考慮して決定される。書込み頻度が所定値以上のレコードについて、レコード内容をハッシュ及びポインタと結びつけてバッファ2に保存される。なお図2では、簡単のために各エントリにはポインタではなく単にレコードNoのみを表示している。レコードが所定値以上の書込み頻度であれば、今後も書込み要求される可能性が高いとしてバッファ2に保存する。一定以上の書込み頻度のレコードを、限られた容量のバッファ2に保持しておけば、レコードの対比確認のパフォーマンス、テープ容量の節約、及び読みよりパフォーマンスに向上が図られる。所定値は、テープに重複して記録された同一レコードの数に対して(バッファ2の容量)/(テープ容量)の値に基づいて与えられる。また所定値は、テープに記録され重複レコード数の上限値により決定されてもよい。所定値が、少なくとも3以上であるとしてもよい。新たに書込み要求されたレコードの頻度は所定値より小さい場合は、バッファに保存されず、テープ上のデータを参照するのみである。また、バッファ2に保存されるレコードに容量の不足が生じた場合、所定値を変動させて空き領域を確保できる。所定値を大きくすることにより、既に保存されていたレコードであっても、頻度が所定値より小さくなったものをバッファ2から削除する。バッファ2から削除による整理が行われても、テープ上には本来のレコードNoにレコード内容は記録されているので、データの保全性(Data Intergirity)は保証される。
【0037】
図2に基づいて、重複の書込み機構を説明する。ホストから新たなレコード(新レコード)を受け取ると、テープドライブはデータバッファ上に保管された新レコードのハッシュ値を算出する。このハッシュ値をバッファ2の各エントリに保存されたハッシュ値と対比して存在を確認する。この確認は、バッファ2の各エントリに保管されたデータと新レコードとの間で行われ、テープから読み出す必要はない。この確認においてデータが一致した場合は、テープにはバッファ2のエントリに一致したレコードNoのテープ上に既に書き込まれたレコードA,B,C・・・のNoを含むポインタを書込む。テープドライブは、このポインタはテープ上にレコードAのNoを指している。この比較確認においてバッファ2には同一ハッシュ値は存在するがエントリも存在しない場合、所定値以上のテープ上に重複レコードがないことを意味する。この場合はレコード書込みの頻度が所定値に達するまでテープドライブは通常の書込みをテープに行う。バッファ1においてエントリも存在しないレコードの場合、バッファ1に新レコードのエントリ(ハッシュ値、頻度、及びレコードNo)を新たに設ける。バッファ2にレコードの内容自体をデータNo及びハッシュ値に結びつけて保持する。なお、バッファ2でのレコード内容の保存は、容量を限定するする必要上所定値以上の頻度ものに限定される。言い換えると、レコードの書込み頻度が所定値に達するまではテープには重複してレコードの書込が行われる。
【0038】
図2に基づいて、本発明により書込まれたレコードの読み出し機構を説明する。ホストからレコードNoを指定してレコードを読み出す命令を受け取った場合、テープドライブはテープ上のポインタを読み取ったかを確認する。ポインタの存在は、バッファ2でのレコードの保持の可能性を確認できる。読み出し要求レコードがバッファ2に存在する場合は、バッファ2から読み出してテープ自体の元来のデータを読みだす必要はない。読み出しレコードがバッファ2に存在しない場合は、通常通りテープから読み出す操作を行う。
【0039】
図3は、ホストからテープドライブにレコードを書き込む場合のテープドライブの重複排除の書込み方法のフローチャートを示す。
(1)ホストから新たなレコード(新レコード)の書き込み要求をテープドライブは受取る。
(2)テープドライブは、新レコードのハッシュ値(新S)を計算する。
(3)バッファ2に新Sが存在するか確認する。
なおバッファ1において頻度が所定値以上である場合にバッファ2にSのレコード内容が存在すると判断してもよい。
(4)確認ステップ3においてバッファ2に新Sが存在する判断された場合、新データがバッファ2のエントリ中において新Sに結びつくレコードと一致するかを比較する。
(5)比較ステップ4において新レコードとバッファ2に保存されたレコードが一致する場合(Yes)、既にテープに書込み済みレコードのNoを含むポインタを新レコードの書込みデータとしてテープに書込む。図2を参照すると、テープに書込むポインタA,B,Cの確保には、既にバッファ2の各エントリに保存されたレコードA,B,CのNoを利用できる。ポインタは、後でテープドライブが読み取りデータがレコードNoであることを判断できるようにその指標も含む。
(6)ステップ3でバッファ2に新Sが存在しない場合(No)、バッファ1に新Sが存在するかを確認する。
(7.1)確認ステップ6においてバッファ1に新Sが存在する場合(Yes)、または、比較ステップ4においてバッファ2に保存されたレコードと一致しない場合(No)、バッファ1に所定のエントリの頻度のカウンターを1つ増加させる。頻度は同一のハッシュ値のレコード書込みの頻度を示す。
(7.2)バッファに保存された新レコードの頻度が所定値以上か確認する。
(7.3)確認ステップ(7.2)において頻度が所定値以上の場合(Yes)、バッファ2のエントリに、新レコードの内容を新しいハッシュ値及び新レコードのNoと併せて保存する。
(8)テープドライブは、確認ステップ6でバッファ1に新Sが存在しない場合(No)、新レコードの新SについてレコードNo及び頻度=1をバッファ1に保存する。
(9)テープドライブは、レコードをテープに書き込む。
・ステップ8の処理後、新データをテープに書込む。
・確認するステップ(7.2)において新レコードの書込み頻度は所定値以下の場合(No)、バッファ2への新レコードNo及びレコード内容の保存はスキップされる。その後、このステップ9において通常のレコード書込みを行う。この通常書込みは、頻度が所定値に達するまではテープに同一レコードの書込みを許容する。バッファ2の容量にテープ容量に対して制限的な値1%以下であるため、完全なレコードの重複書込を排除するのは現実的でない。本発明の方法は、大容量の記憶装置に対してレコードの重複回数の上限値を設けることが出来でき、容量の有効利用できる点で意義はある。
【0040】
図4は、本発明の重複排除の書込み方法のより記録されたレコードを読み出すフローチャートを示す。一つの実装例として、ホストからテープドライブにデータを読み出す場合のテープドライブの振る舞いを読み出し方法のステップを説明する。
(1)テープドライブは、ホストからレコードの読み出し要求を受取る。
ホストは、レコードNoを指定してテープドライブにレコードの読出し命令を出す。
(2)テープドライブは、テープから指定されたレコードを読み出す。
(3)テープドライブは、読み出したレコードがテープに記録された他のレコードへのポインタかを確認する。読み出されたデータが、ポインタである場合は所定の指標でもってレコードNoであることがわかる。なお、その指標がレコードNoまたはバッファ2のエントリNoのどちらかを示す。
・指標がテープのレコードの場合、レコードNoで指定されたレコードが読み出し対象である。
・指標がバッファ2のレコードの場合、バッファ2のエントリNoで指定されたエントリ内のレコード内容を読み出し対象である。
・なお、このステップ3においてポインタでない場合(No)、ステップ7において通常通りのテープからレコードを読み出す。
(4)ステップ3においてポインタである場合(Yes)、ポインタに対応するレコードがバッファ2に存在するかを確認する。
(5)ステップ4においてレコードが存在する場合(Yes)、バッファ2 に格納されたポインタに対応するレコードを読み出してホストに送る。また、ポインタがバッファ2のエントリへの指標である場合、そのエントリNoで指定されたレコードが読み出し対象となる。
(6)ステップ4においてレコードが存在しない場合(No)、ポインタが指し示すレコードをテープから読み出す。ポインタがテープのレコードのレコードNoのための指標と確認される場合である。その指標により、テープドライブは、テープから読み取られたレコードNoで指定されたレコードが読み出し対象とされる。
(7)テープドライブは通常通り読み出したレコードをホストに送る。
・読み出しステップ6において読み出されたレコードをホストに送る。
・確認ステップ3においてレコードがポインタでない場合(No)、読み出したレコードをホストに送る。
【0041】
バッファ1及びバッファ2の内容の保持には、既存のテープドライブが詳細なテープディレクトリを保存するための特別なデータセット(Housekeeping データセット)を利用できる。テープドライブは、テープカートリッジを取り出すとき、このデータセットにバッファ1及び2のエントリの内容を保存する。テープをテープドライブに挿入した直後に、テープディレクトリを読み出す手法を用いることにより、テープに記録された特別なデータセットからバッファ1及び2の内容を引き出せばよい。また、テープドライブは、不揮発性メモリ(例えばCM)を利用することによりテープドライブからテープ媒体を取り出す操作が行われてもバッファ1及びバッファ2の内容を保持し続けることができる。
【0042】
本発明の書込み方法は、テープへのアクセスを省略できるため書込みパフォーマンスに大きな影響を与えることなくDedupを可能とし、テープ容量を有効利用できる。
【0043】
以上の本発明の実施は、典型的なシーケンシャル・デバイスであるテープドライブについて説明された。2つの区別された一時記憶装置ランダムアクセスはメインの記憶容量に対して1%に満たない容量である。この一時記憶領域を本発明のように利用することは、重複したレコードの書込み回数を管理できる点で有利である。したがって、本発明の適用範囲はテープドライブに限定されず、本発明はランダムアクセスの記憶装置、典型的にはDASDにも適用できる。
【符号の説明】
【0044】
10…テープドライブ、
11…インターフェイス、
12…バッファ(DRAM)、
13…読み書きチャネル、
14…ヘッド、
15…モータ、
16…書込み読取り制御(コントローラ)、
17…ヘッド位置制御システム、
18…モータドライバ、
20…カートリッジ、
21,22…リール、

【特許請求の範囲】
【請求項1】
記憶装置への書込みレコードの重複を排除する書込み方法であって、
前記記憶装置は、記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2とを含む、前記方法であって、
ホストからレコード(新レコード)の書込み要求を受取るステップと、
新レコードのハッシュ値(新S)を計算するステップと、
バッファ2に新データのハッシュ値(新S)が存在するか確認するステップと、
前記確認ステップでバッファ2に新Sが存在する場合、新データが新Sに対応するバッファ2に保存されたレコードと一致するかを比較するステップと、
前記比較ステップで新レコードと前記レコードが一致する場合は、既に記録媒体またはバッファに保存済みレコードへのポインタ(レコードNo)を新レコードの書込みデータとして記録媒体に書込むステップと、
を含む重複排除の書込み方法。
【請求項2】
前記方法は更に、前記比較ステップで新レコードと前記バッファ2に保存されたレコードとが一致しない場合、バッファ1に記録された頻度を1増分し、新レコードの頻度が所定値以上の場合、バッファ2に新レコード内容を新S及びポインタと併せて保存するステップと、
前記保存ステップの処理後、新データを記録媒体に書込むステップと、を実行させる請求項1に記載の方法。
【請求項3】
前記方法は更に、前記確認ステップでバッファ2に新Sが存在しない場合、バッファ1に新Sが存在するかを確認するステップと、
前記確認ステップでバッファ1に新Sが存在する場合、バッファ1に記録された頻度を1増分し、新レコードの頻度が所定値以上の場合、バッファ2に新レコード内容を新S及びポインタを保存するステップと、
前記保存ステップの処理後、新データを記録媒体に書込むステップと、を含む請求項1に記載の方法。
【請求項4】
前記方法は更に、前記確認ステップでバッファ2に新Sが存在しない場合、バッファ1に新Sが存在するかを確認するステップと、
前記バッファ1での確認ステップでバッファ1に新Sが存在しない場合、新レコードの新Sについてポインタ及び頻度1をバッファ1に保存するステップと、
前記バッファ1での保存ステップの処理後、新データを記録媒体に書込むステップと、を実行させる請求項1に記載の方法。
【請求項5】
バッファ1は、記録媒体に記録された全てのレコードをハッシュ値について保存したエントリを有し、
バッファ2は、前記エントリのうち書込み頻度が所定値以上について新レコードの内容を前記ハッシュ及びポインタと結びつけて保存するエントリを有す、請求項1〜4の何れか1に記載の方法。
【請求項6】
前記所定値は、記録媒体に重複して記録された同一レコードの数に対して(バッファ2の容量)/(記録媒体の容量)の値に基づいて決定される請求項5に記載の方法。
【請求項7】
前記所定値は、記録媒体に重複して記録された同一レコードの数に対して設定された上限値により決定された請求項6に記載の方法。
【請求項8】
記憶装置から記録レコードを読み出す方法であって、
前記記憶装置は、記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2とを含む、前記方法であって、
ホストからポインタを指定したレコードの読出し命令を受取るステップと、
前記レコードに関するデータを記録媒体から読出すステップと、
前記レコードのデータが記録媒体に記録された前記レコードのポインタであるかを確認するステップと、
前記確認ステップで前記データがポインタである場合、前記ポインタに対応するレコードがバッファ2上に存在するか確認するステップと、
前記確認ステップでバッファ2に前記ポインタに対応するレコードが存在する場合、バッファ2から前記レコードを読み出してホストに送るステップと、
を実行する読み出し方法。
【請求項9】
前記ポインタに対応するレコードがバッファ2に存在するか確認するステップで、対応レコードが存在しない場合前記データが、前記ポインタが指している記録媒体上のレコードを読み出すステップと、
前記レコードを読み出し要求の前記レコードとして読み出してホストに送るステップと、を含む請求項8に記載の方法。
【請求項10】
書込みレコードの重複を排除する記憶装置であって、
記録媒体に記録されたレコードのNo、レコードのハッシュ値、及び書込み頻度を保存するバッファ1と、
レコードの内容を前記レコードNo及びハッシュ値に結びつけて保存するバッファ2と、
記録媒体へのレコードの書込を制御する書込み制御手段とを含み、
前記書込み制御手段は、
ホストからレコード(新レコード)の書込み要求を受取る手段と、
新レコードのハッシュ値(新S)を計算する手段と、
バッファ2に新データのハッシュ値(新S)が存在するか確認する手段と、
前記確認ステップでバッファ2に新Sが存在する場合、新データが新Sに対応するバッファ2に保存されたレコードと一致するかを比較する手段と、
前記レコードの一致の比較ステップで新レコードと前記レコードが一致する場合は、既に記録媒体またはバッファに保存済みレコードへのポインタ(レコードNo)を新データの書込みデータとして記録媒体に書込む手段とを含む書込み制御を有する、記憶装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−94220(P2012−94220A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−242238(P2010−242238)
【出願日】平成22年10月28日(2010.10.28)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】