記録媒体に記録されたデータの移行のための装置及び方法
【課題】データを移行する際に真にアクセス頻度を考慮してパフォーマンスを向上する。
【解決手段】テープドライブのコントローラ16において、コマンド処理部61が、データの読出し命令を受けると、チャネル入出力部63が、テープからデータを読み出し、テープ上の各データに対し、読出しのためのマウントの回数であるRam-countが保持され、読み出したデータに対し、読み出された回数の履歴であるDm-readfreqが保持される。データ移行時には、CM入出力部64が、Ram-countとDm-readfreqを読み出し、頻度算出部65が、例えばDm-readfreqが示す回数のRam-countに対する比率をアクセス頻度として求め、移行制御部66が、移行元テープから読み出されたデータが移行先テープにアクセス頻度の順に記録されるようバッファ管理部62等を制御する。
【解決手段】テープドライブのコントローラ16において、コマンド処理部61が、データの読出し命令を受けると、チャネル入出力部63が、テープからデータを読み出し、テープ上の各データに対し、読出しのためのマウントの回数であるRam-countが保持され、読み出したデータに対し、読み出された回数の履歴であるDm-readfreqが保持される。データ移行時には、CM入出力部64が、Ram-countとDm-readfreqを読み出し、頻度算出部65が、例えばDm-readfreqが示す回数のRam-countに対する比率をアクセス頻度として求め、移行制御部66が、移行元テープから読み出されたデータが移行先テープにアクセス頻度の順に記録されるようバッファ管理部62等を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記録媒体に記録されたデータの移行のための装置及び方法に関する。特に、本発明は、記録媒体に記録されたデータのその記録媒体又は他の記録媒体への移行を支援する装置及び方法に関する。
【背景技術】
【0002】
媒体に記録されたデータは、媒体や媒体ドライブ装置の寿命等により、別の新しい媒体へ移行されることがある。また、別の媒体への移行は、運用上の理由、例えば、よりコストパフォーマンスが高い媒体への切り替え等の理由により行われる場合もある。
かかるデータの移行時においては、より多くのアクセスがあるデータをパフォーマンス的に有利な位置に記録することが望ましい。例えば、データオブジェクトのように、複数のデータを1つのデータ群としてアクセスする場合、パフォーマンス的に最も不利な位置に記録されているデータが、データ群全体のパフォーマンスに影響を及ぼす場合があるからである。
【0003】
従来、媒体に記録されたデータを自身又は他の媒体に移行する場合に、データへのアクセス頻度を考慮することによりパフォーマンスを向上させる技術は知られていた(例えば、特許文献1〜3参照)。
特許文献1では、アクセス頻度の高い論理ボリュームを長時間通電モードのRAIDグループに、アクセス頻度が中程度の論理ボリュームを第1短時間通電モードのRAIDグループに、アクセス頻度が少ない論理ボリュームを第2短時間通電モードのRAIDグループに、それぞれ配置させるべく再配置計画を作成し、RAIDグループへのアクセス頻度に基づいて、再配置計画の実行時期を決定している。
【0004】
特許文献2では、複数のブロックで構成されるファイル単位のアクセス頻度を記憶し、このアクセス頻度が所定値以上でかつ相関関係のある複数のファイルを1つのグループとして抽出し、この抽出された各ファイルの各ブロックのデータを光ディスクから読み出してその光ディスク上の連続するブロック或いは近傍のブロックに順次書込むようにしている。
特許文献3では、テープカセットのカートリッジ内にメモリを設け、このメモリに各パーティション毎のアクセス頻度に関する情報を記録しておき、テープを複製する際には、このアクセス頻度情報を読み取り、アクセス頻度の高い順に、テープの先頭からデータを記録している。
【0005】
【特許文献1】特開2007−164650号公報
【特許文献2】特開平8−263335号公報
【特許文献3】特開平11−31376号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、引用文献1〜3におけるアクセス頻度は、複数のデータを含むデータ群(論理ボリューム、ファイル、パーティション)について記録されるものである。そのデータ群の中には、古くから存在しているデータと、最近作成されたデータとが混在しているかもしれない。そのような作成時期の異なるデータについて時間軸を基準にアクセス頻度を求めたのでは、本当の意味でのアクセス頻度は得られない。従って、引用文献1〜3の技術では、データを移行する際に真のアクセス頻度を考慮してパフォーマンスを向上することはできないという問題点があった。
【0007】
本発明の目的は、データを移行する際に、時間軸を用いない真のアクセス頻度を考慮してパフォーマンスを向上することにある。
【課題を解決するための手段】
【0008】
かかる目的のもと、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置であって、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定する決定部とを含む、装置を提供する。
【0009】
ここで、この装置は、第1の記録媒体から特定のデータが読み出された場合に、各データについて、第1の情報を更新し、特定のデータについて、第2の情報を更新する更新部を更に含む、ものであってよい。その場合、特定のデータは、主データと、主データの付加情報であるメタデータとを含み、更新部は、第1の記録媒体から主データ及びメタデータの少なくとも何れか一方が読み出された場合に、特定のデータが読み出されたと判定する、ものであってよい。
また、第1の情報は、第1の記録媒体に各データが書き込まれた後に第1の記録媒体が記憶装置にマウントされた回数によって、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す、ものであってよい。
更に、把握部は、第1の情報が示す回数に対する第2の情報が示す回数の比率を、アクセス頻度として把握する、ものであってもよいし、第1の情報が示す回数が所定の範囲にあるデータについて、第2の情報を用いて、アクセス頻度を把握する、ものであってもよい。
また、第2の情報は、各データの読出しの履歴を複数のビット値で表す情報であって、第1の記録媒体からのM回のデータの読出しのうち各データが読み出された回数を、複数のビット値のうちN(N<M)個のビット値で表す、ものであってよい。
更に、決定部は、アクセス頻度が高いデータが第2の記録媒体における第1の記録位置に記録され、かつ、アクセス頻度が低いデータが第2の記録媒体における第1の記録位置よりもデータの読出しに時間がかかる第2の記録位置に記録されるように、第2の記録媒体における各データの記録位置を決定する、ものであってよい。その場合、第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始されるテープ媒体であり、第2の記録位置は、第1の記録位置よりも第2の端部に近い位置である、ものであってもよいし、第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始され、かつ、長手方向の少なくとも1つの位置で分割することで形成された複数の領域を有するテープ媒体であり、第1の記録位置は、複数の領域のうちの第1の領域内の位置であり、第2の記録位置は、複数の領域のうち、第1の領域よりも第2の端部に近い第2の領域内の位置である、ものであってもよい。
【0010】
また、本発明は、記録媒体におけるデータの再配置を支援する装置であって、記録媒体に記録された各データについて、記録媒体に各データが書き込まれた後に記録媒体から何れかのデータが読み出された回数を示す第1の情報と、記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、記録媒体における各データの記録位置を決定する決定部とを含む、装置も提供する。
【0011】
また、本発明は、第1のテープ媒体に記録されたデータを第2のテープ媒体に移行する装置であって、第1のテープ媒体に記録され、主データと、主データの付随情報を示すメタデータとを含む各データについて、第1のテープ媒体に各データが書き込まれた後に第1のテープ媒体が何れかのデータの読出しのためにテープドライブにマウントされた回数を示す第1の情報と、第1のテープ媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報が示す回数に対する第2の情報が示す回数の比率を、各データのアクセス頻度として把握する把握部と、把握部により把握されたアクセス頻度が高いデータから順に第2のテープ媒体に書き込む書込み部とを含む、装置も提供する。
【0012】
更に、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する方法であって、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得するステップと、取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握するステップと、把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定するステップとを含む、方法も提供する。
【0013】
更にまた、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置としてコンピュータを機能させるプログラムであって、コンピュータを、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定する決定部として機能させる、プログラムも提供する。
【発明の効果】
【0014】
本発明によれば、データを移行する際に、時間軸を用いない真のアクセス頻度を考慮してパフォーマンスを向上することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。尚、本発明は如何なる記録媒体に対しても適用可能であるが、ここでは、テープ媒体(以下、単に「テープ」という)を例にとり説明する。増え続ける大量のデータの全てを高速な記憶装置に保管することが困難になってきている現状において、テープドライブ等の低速な記憶装置に保管するデータに関してもアクセス頻度を考慮したデータの配置が重要となっているからである。
【0016】
まず、本実施の形態が適用されるディジタルデータアーカイブ装置(以下、単に「アーカイブ装置」という)について説明する。
図1は、本実施の形態が適用されるアーカイブ装置100の構成例を示した図である。
図示するように、アーカイブ装置100は、テープドライブ10と、制御機構30と、アクセッサ40と、カートリッジスロット50とを備える。
このうち、テープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、書込みヘッド14aと、読出しヘッド14bと、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ(以下、単に「カートリッジ」という)20が挿入されることにより装填可能となっているので、ここでは、カートリッジ20も図示している。このカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0017】
また、カートリッジ20は、カートリッジメモリ24も含む。このカートリッジメモリ24は、例えば、テープ23上にどのようにデータが書かれたかの情報を記録する。そして、例えばRFインターフェイスを用いて非接触でテープ23に書かれたデータのインデックスやテープ23の使用状況等を調べることにより、データへの高速アクセスを可能としている。尚、図では、このRFインターフェイスのようなカートリッジメモリ24へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス(以下、「CMI/F」という)19として示している。
【0018】
ここで、ホストI/F11は、制御機構30を介してホスト200との通信を行う。例えば、ホスト200から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト200に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【0019】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAM(Dynamic Random Access Memory)によって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
チャネル13は、テープ23に書き込むべきデータを書込みヘッド14aに送ったり、テープ23から読み出されたデータを読出しヘッド14bから受け取ったりするために用いられる通信経路である。
書込みヘッド14aは、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込み、読出しヘッド14bは、テープ23が長手方向に移動するとき、テープ23から情報を読み出す。
モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0020】
コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。
ヘッド位置制御システム17は、書込みヘッド14a及び読出しヘッド14bが所望の1つ又は複数のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド14a及び読出しヘッド14bを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。
【0021】
また、制御機構30は、ホスト200からの指示に応じて、アクセッサ40及びテープドライブ10を制御する機構である。即ち、アクセッサ40に対しては、ホスト200から指示されたデータを読み出したり書き込んだりできるように、カートリッジ20をテープドライブ10に装填するように指示し、テープドライブ10に対しては、ホスト200から指示されたデータをアクセッサ40によって装填されたカートリッジ20から読み出すように又はカートリッジ20に書き込むように指示する。
アクセッサ40は、制御機構30の制御により、カートリッジ20をカートリッジスロット50から取り出してテープドライブ10に装填する。
カートリッジスロット50は、読み書きが行われていないカートリッジ20を保管しておくための場所である。ここでは、カートリッジスロット50を1つの矩形で示したが、実際には、複数のカートリッジをそれぞれ格納する複数のスロットである。
【0022】
尚、図では、1台のテープドライブ10しか示していないが、複数台のテープドライブ10を設けてもよい。その場合、制御機構30は、読出し命令又は書込み命令の送り先であるテープドライブ10の識別情報をアクセッサ40に伝えることで、そのテープドライブ10へのカートリッジ20の装填を指示することになる。また、図では、1つのカートリッジ20のみ装填可能なテープドライブ10を示しているが、複数のカートリッジ20を装填可能なテープドライブ10を用いてもよい。
【0023】
ところで、テープドライブ10によってテープ23に記録されるデータへのアクセス性能は、テープ23上の記録位置によって大きく異なってくる。従って、テープ23にデータを移行する際に、データへのアクセス頻度を考慮しないと、アクセス頻度の高いデータへのアクセス速度が遅くなり、データへのアクセス性能が低下するという問題が生じる。
【0024】
また、テープドライブ10を、写真データ、映像データ等のアーカイブとして使用することが多くなっている現状において、データ(主データ)そのものだけでなく、その付加情報であるメタデータも、長期保管されるべきデータとして重要になってきている。ここで、メタデータとしては、例えば写真データに対しては、写真の撮影場所、日時、被写体、撮影者、撮影機器、記録フォーマット、ファイル名、ファイルサイズ等が考えられる。このように、メタデータはデータとの関連が強く一緒に扱われることが多いので、データをアーカイブとしてテープ23に保管する場合に、メタデータも同じテープ23上に保管するのであれば、データとメタデータを適切に配置しないと、アクセスのパフォーマンスが低下するという問題が生じる。
【0025】
そこで、本実施の形態では、テープ23上に記録された互いに関連するデータのアクセス頻度を記録し、そのアクセス頻度を用いてデータを移行する。これにより、データ移行におけるデータやメタデータ群のパフォーマンス的に適切な配置を実現する。
具体的には、以下のような構成を採用している。
即ち、データとメタデータをdm-idによって関連付けておき、データ又はメタデータへのアクセスが発生する都度、そのdm-idに対応するアクセスカウンタ変数(以下、単に「カウンタ」という)群にアクセス履歴を記録しておく。この場合、カウンタ群へのアクセス履歴の記録は、テープという順次アクセス記録媒体の特性に鑑み、時間を軸とするのではなく、データ読出しのためのテープ23のマウント回数を軸とすることにより行う。尚、カウンタ群は、テープ23の可搬性を考え、テープ23に付属する半導体メモリに記録する。
【0026】
このようにアクセス履歴を記録した後、ある記録媒体Aから別の記録媒体Bへデータを移行する際には、まず、記録媒体Aにおけるdm-idによって関連付けられるデータ及びメタデータへのアクセス頻度を、カウンタ群に基づくポリシーに則って算出する。そして、アクセス性能の観点から、アクセス頻度の高い順に記録媒体B上に再配置する。尚、ここでは、再配置の手法として、関連付けられるデータ及びメタデータを1つのまとまりとしてテープ23の先頭から順次書き出す手法を採用する。これにより、データ及びメタデータを最初から順次に読み出す場合のアクセス性能を向上させる。
【0027】
以下、このような動作を実現する構成について詳細に説明する。
その前提として、まず、データ及びメタデータの関連付けについて説明する。
図2は、データとメタデータを関連付けるときの様子を模式的に示した図である。
(a)に示すように、まず、ホスト200は、データとメタデータの関連を任意の識別番号dm-idを割り当てることで作成する。そして、データは、データポートを介して制御機構30に渡し、メタデータは、メタデータポートを介して制御機構30に渡す。
【0028】
次に、制御機構30では、データポートを介して渡された情報がデータとして扱われ、ID生成部31がd-idを生成してデータに割り当てる。ここで、d-idは、データの識別番号であって、少なくともアーカイブ装置100が動作する環境においてユニークな値である。また、メタデータポートを介して渡された情報がメタデータとして扱われ、ID生成部31がm-idを生成してメタデータに割り当てる。ここで、m-idは、メタデータの識別番号であって、少なくともアーカイブ装置100が動作する環境内においてユニークな値である。尚、データとメタデータは時間的に離れて渡されたとしても、アーカイブ装置100内でdm-idによってそれらの関係を構築することができる。
【0029】
これにより、制御機構30は、dm-idに基づくデータとメタデータの関係をdm-aテーブル(以下、単に「dm-a」という)としてデータベース(DB)32に記録する。(b)にdm-aの形式を示す。ここでは、1つのデータに対して1つのメタデータが関連付けられているが、データとメタデータはM対Nの関係を持つことも可能である(M,Nは自然数)。
加えて、制御機構30は、データとメタデータのアーカイブ装置100内での記録場所をdm-lテーブル(以下、単に「dm-l」という)として個々のデータ及びメタデータごとにDB32に記録する。(c)にdm-lの形式を示す。ここで、アーカイブ装置100内に複数のストレージ空間が実装され、それらの空間にデータ又はメタデータの複数のコピーが存在する場合、そのコピーの数だけdm-lにエントリが登録されることになる。図では、そのようなエントリをLocation-1、Location-2、…で表している。
【0030】
ここで、データ及びメタデータの関連付けについて具体例を用いて説明する。
図3は、データ及びメタデータの関連付けの具体例を示した図である。
(a)は、媒体名が「A001」の記録媒体に、d-idで識別されるデータとm-idで識別されるメタデータとがdm-idで識別される関連を持って記録されている状態を表している。具体的には、d-idがd3のデータとm-idがm4、m6、m8のメタデータとがdm-idがdm03の関連を持って記録され、d-idがd1のデータとm-idがm1、m7のメタデータとがdm-idがdm01の関連を持って記録され、d-idがd2のデータとm-idがm5のメタデータとがdm-idがdm02の関連を持って記録され、d-idがd5のデータとm-idがm9のメタデータとがdm-idがdm04の関連を持って記録されている。尚、本明細書では、このようにdm-idによって関連付けられたデータとメタデータの組み合わせを「DM」と呼ぶことにする。
また、(b)は、dm-idがdm03のDMの識別子(d-id、m-id)がdm-aにリストされている様子を示している。
【0031】
ところが、テープ23へのデータやメタデータの書込みはその準備が整った時点で行われることから、テープ23上のデータやメタデータの記録順序は一意的には決まらない。
従って、データとメタデータの間の関係がdm-idによって論理的に構築されていても、それらがテープ23上に記録された際には、テープ23上の物理的な記録位置は分散する可能性がある。
【0032】
図4は、このように分散記録されたテープ23上のデータ及びメタデータの例を示した図である。図示するように、テープ23上には、複数のラップが存在している。また、図中、白抜きの矢印がデータの書込み方向を示しており、実線の矢印がテープ23の走行方向が逆転することを示している。
ここでは、まず、ラップ#0に対して順方向に、m-idがm6のメタデータ、d-idがd3のデータ、m-idがm1のメタデータ、d-idがd1のデータ、m-idがm4のメタデータが書き込まれている。次に、ラップ#1に対して逆方向に、m-idがm5のメタデータ、d-idがd2のデータが書き込まれている。その後、ラップ#2に対して再び順方向に、m-idがm7のメタデータ、m-idがm9のメタデータ、d-idがd5のデータ、m-idがm8のメタデータが書き込まれている。
【0033】
即ち、ある記録媒体に図3(a)に示したようなデータとメタデータ群が保管されていたとしても、それらをテープ23に移行すると、データとメタデータの関連付けに関係なく配置されてしまう可能性がある。この場合、複数回のテープ23の位置合わせを行わなければ、あるdm-idのDMを読み出すことはできないので、テープ23の位置合わせの分だけアクセス性能が低下することになる。
【0034】
そこで、本実施の形態では、このように記録されたデータ及びメタデータを移行する際に、データ及びメタデータのアクセス頻度に基づいてそれらを再配置する。
ここでは、各DMに対して、以下の3つのカウンタを定義する。
【0035】
(1)Read Access Mount カウンタ(Ram-count)
このRam-countは、dm-idごとに定義されるカウンタである。dm-idによって関連付けられたデータ及びメタデータがテープ23に書かれた時点以降における読出しのためのテープ23のマウントの回数を保持する。尚、本実施の形態では、データを読み出す必要が生じる都度、そのデータが記録されたテープ23がテープドライブ10にマウントされることを想定している。以下、この読出しのためのテープ23のマウントを「読出しマウント」と呼ぶことにする。
【0036】
Ram-countをこのように定義すると、最も大きいRam-countを有するdm-idが、最も古くにテープ23に書かれたデータやメタデータを関連付けるdm-idとなる。また、各dm-idに割り当てられたRam-countを参照することにより、どのデータやメタデータが比較的古いか新しいかということや、そのデータやメタデータへの読出しアクセスの確率も知ることができる。尚、このカウンタは、ラップしないように大きな値を保持できるよう定義すべきだが、もしラップしたら、0にリセットする。
【0037】
(2)Read Frequency カウンタ(Dm-readfreq)
このDm-readfreqも、dm-idごとに定義されるカウンタである。Ram-countで示される回数の読出しマウントが発生する間にこのdm-idによって関連付けられるデータやメタデータの読出しがどの程度行われてきたかの履歴を保持する。このカウンタは、データ、メタデータの何れかが読み出されることで更新されるものとする。
【0038】
ここで、例えば、Ram-countの最大値が16であるとする。つまり、過去16回の読出しマウントの履歴だけをカウントするものとする。この場合、Dm-readfreqの各ビットによってこのdm-idのデータやメタデータが読み出されたかどうかを表現することにすると、Dm-readfreqは16ビットで表わされることになる。
ところが、1回の読出しマウントに1ビットを割り当ててしまうと、例えば過去256回の読出しマウントの履歴から頻度を量りたいような場合に、32バイト(=256ビット)分のメモリ領域が必要となってしまう。
【0039】
そこで、複数回の読出しマウントを1ビットで表す方法を考える。
例えば、8回の読出しマウントを1ビットで表現するようにすると、4バイト(=256ビット/8=32ビット)のメモリ領域で済む。尚、このような方法を採用すると、Dm-readfreqとは別に過去8回の読出しマウントのうちのdm-idのデータの読出し回数を保持するDmアクセスカウンタ(後述)が必要となる。
但し、この方法だと、過去8回の読出しマウントでdm-idのデータが1回でも読み出されれば、カウンタは1となる。そのため、8回の読出しマウントにおけるdm-idのデータの読出し回数が8回だったのか1回だったのか分からなくなる。
【0040】
そこで、複数回の読出しマウントを複数ビットで表す方法を考える。
例えば、8回の読出しマウントを2ビットで表現するようにすると、8バイト(=256ビット/8×2=32ビット×2)のメモリ領域が必要となる。尚、この場合も、Dm-readfreqとは別に過去8回の読出しマウントのうちのdm-idのデータの読出し回数を保持するDmアクセスカウンタ(後述)が必要となる。
この方法では、2ビットを使って、例えば以下の頻度を表現することができる。
“00”:アクセスなし
“01”:1回から2回
“10”:3回から5回
“11”:6回から8回
この定義は頻度算定のポリシーによって変更することも可能である。
【0041】
(3)Dmアクセス・カウンタ(Dm-count)
このDm-countは、上述のDm-readfreqにおいて、M回の読出しマウントを一単位としてN(<M)ビットで表現する場合に、M回の読出しマウントのうちこのdm-idのDMが読み出された回数を保持するカウンタである。
例えば、過去8回の読出しマウントを一単位とした場合、8回全ての読出しマウントでこのdm-idのデータが読み出されれば、Dm-countは8となる。また、2回読み出されれば、Dm-countは2となる。
尚、読出しマウントの一単位、例えば8回テープ23に読出しマウントがあれば、Dm-countは0にリセットされる。ここで、8回という一単位を数えるためには、上述のRam-countを使う。即ち、8の倍数の回数の読出しマウントがあると、Dm-countをリセットする。
【0042】
さて、これら3つのカウンタを用いると、次のような情報を得ることができる。
・過去X回のテープ23への読出しマウントのうち、対象のdm-idのDMが読み出された頻度
・対象のdm-idのDMが読み出された回数
・過去X回のテープ23への読出しマウントのうち、対象のdm-idのDMが読み出された回数に基づいて算出されるアクセス確率
・X回の読出しマウントにおけるアクセスの傾向、つまり、最近アクセスが多いのか、過去にアクセスが多いのか
【0043】
一般には、データへのアクセス頻度を語る場合、時間軸が考慮される。しかしながら、テープのようなリムーバル記録媒体においては、記憶装置から排出されている場合や、記憶装置の中でもテープへのアクセスがない場合は、ある意味「時間が止まった」状態になる。従って、本実施の形態では、時間軸を考慮に入れる代わりに、テープが読出し目的でマウントされたという実例を軸としている。
【0044】
これら3つのカウンタのサイズを確定する要素は以下の通りである。
・過去何回の読出しマウントを対象とするか
・何回の読出しマウントを何ビットで表現するか
例えば、上記で示した通り、過去256回の読出しマウントをアクセス頻度を量る対象とする場合、Ram-countは1バイトとなる。
また、8回の読出しマウントを一単位とし、それを2ビットで表現する場合、Dm-readfreqは8バイトとなり、Dm-countは4ビットとなる。
【0045】
図5に、この場合の3つのカウンタについて示す。
ここでは、各dm-idに対して3つのカウンタを設けているので、dm-idも示している。
但し、上記でdm-idに割り当てるビット数は規定していないので、単純に1つの矩形で表している。
一方、3つのカウンタに割り当てるビット数は規定したので、1つのビットを1つの細長い矩形に対応付けて表している。具体的には、Ram-countは8ビットなので、8つの矩形で表している。Dm-countは4ビットなので、8つの矩形を示し、そのうち4つには網かけを施すことで未使用であることを示している。Dm-readfreqは64ビットなので、64個の矩形で表している。また、特に、このDm-readfreqにおいては、8回の読出しマウントを一単位として2ビットで表していることから、右端の2ビットを例として、その意味付けも示している。
【0046】
そして、これら3つのカウンタの値は、dm-idごとにdmアクセスカウンタテーブルに記録されていく。
図6に、dmアクセスカウンタテーブルの一例を示す。
図において、Ram-countの欄には、dm-idが「dm01」のDMが書かれてから215回の読出しマウントがあったこと、dm-idが「dm02」のDMが書かれてから24回の読出しマウントがあったこと、dm-idが「dm03」のDMが書かれてから13回の読出しマウントがあったこと、dm-idが「dm04」のDMが書かれてから156回の読出しマウントがあったこと、dm-idが「dm05」のDMが書かれてから79回の読出しマウントがあったことが示されている。
【0047】
また、Dm-countの欄には、dm-idが「dm01」のDM及びdm-idが「dm02」のDMが過去8回の読出しマウントのうち1回も読み出されていないこと、dm-idが「dm03」のDMが過去8回の読出しマウントのうち4回読み出されたこと、dm-idが「dm04」のDMが過去8回の読出しマウントのうち1回読み出されたこと、dm-idが「dm05」のDMが過去8回の読出しマウントのうち7回読み出されたことが示されている。そして、これらの回数は、Dm-readfreqの右端の2ビットに反映されている。
【0048】
更に、Dm-readfreqの欄には、8ビットでDMの読出しを示している。8回の読出しマウントにおけるDMの読出し回数を2ビットで表しているので、図では、25回から32回の読出しマウントにおけるDMの読出し回数が示されていることなる。尚、Dm-readfreqのビット列の左側の「. . . . .」は、ビット値が省略されていることを示している。また、dm-id「dm02」については、Ram-countが24なので、Dm-readfreqは6ビットで十分であり、dm-id「dm03」については、Ram-countが13なので、Dm-readfreqは4ビットで十分であるが、この場合も、左側を0のビット列で埋めて8ビットで示している。
【0049】
次に、これら3つのカウンタの更新について具体例により説明する。
図7は、テープドライブ10がWriteコマンドやReadコマンドを受けることにより、カートリッジ20に記憶された各カウンタがどのように更新されるかを示した図である。尚、これまでの説明では言及しなかったが、ここではTotal Readカウンタについても示している。このTotal Readカウンタは、dm-idごとではなく、テープ23ごとのカウンタであり、テープ23が読出しのためにマウントされると更新されるカウンタである。一方で、この図では、Dm-readfreqについては省略している。また、この図において、D1〜D3は、DMを一般化し、データとして示したものである。
【0050】
まず、Aに示すように、D1を対象とするWriteコマンドが送られてきたとする。この場合のTotal Readカウンタは0であるとする。また、D1のRam-countとDm-countは作成されるが、その値は0である。
次に、Bに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは1となる。また、D1のRam-countとDm-countも1となる。
次いで、Cに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは2となる。また、D1のRam-countとDm-countも2となる。
【0051】
また、Dに示すように、D2を対象とするWriteコマンドが送られてきたとする。この場合、Total Readカウンタは2のままで、D1のRam-countとDm-countも2のままである。また、D2のRam-countとDm-countは作成されるが、その値は0である。
次に、Eに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは3となる。また、D1のRam-countも3となり、D1が読み出されたので、D1のDm-countも3となる。一方、D2のRam-countは1となるが、D2が読み出されたわけではないので、D2のDm-countは0のままである。
次いで、Fに示すように、D2を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは4となる。一方、D1のRam-countは4となるが、D1が読み出されたわけではないので、D1のDm-countは3のままである。また、D2のRam-countは2となり、D2が読み出されたので、D2のDm-countは1となる。
【0052】
その後、G、H、IでWriteコマンド及びReadコマンドが送られてきた場合も、上記と同様に、Total Readカウンタ、D1、D2、D3のRam-count、Dm-countは更新される。
【0053】
次に、データ及びメタデータを別のテープ23に移行するときのアクセス頻度に基づく再配置について説明する。
テープ23上のデータ及びメタデータを別のテープ23(又はそのテープ23自身)に移行(migration)する場合、図6に示したdmアクセスカウンタテーブルでアクセス頻度が高いものから、テープ23上のアクセス性能上有利な場所にそのdm-idに対応するデータ及びメタデータを記録する。
【0054】
このアクセス頻度の決定方法としては、Dm-count/Total Readカウンタを計算することによる方法が最も基本的である(以下、この決定方法を「基本的方法」と呼ぶことにする)。しかしながら、この基本的方法でアクセス頻度を求めると、DMがどの時点でテープ23に書かれたかによって結果にぶれが生じる。例えば、テープ23に最初に書かれたDMと既にRam-countが100になった後に書かれたDMとでは単純に比較できない。
そこで、本実施の形態では、次のようなアクセス頻度の決定方法を採用する。
【0055】
(第1の決定方法)
第1の決定方法は、Dm-count/Ram-countを計算することにより、DMに対する相対的なアクセス頻度を導き出す方法である。
これを図6に示した例で説明する。但し、ここでは、図6のDm-readfreqの省略部分「. . . . .」には、0のビット値の並びが存在しているものと仮定する。
まず、基本的方法を用いた場合、Total Readカウンタが250とすると、dm01のアクセス頻度は0.02(=5/250)、dm02のアクセス頻度は0、dm03のアクセス頻度は0.012(=3/250)、dm04のアクセス頻度は0.016(=4/250)、dm05のアクセス頻度は0.016(=4/250)となる。即ち、dm01、dm05、dm04、dm03、dm02の順にアクセス頻度が高くなっている(ポイントが同じ場合は、より最近のアクセス回数が多い方をアクセス頻度が高いと定義している)。
一方、第1の決定方法を用いた場合、dm01のアクセス頻度は0.023(=5/215)、dm02のアクセス頻度は0、dm03のアクセス頻度は0.231(=3/13)、dm04のアクセス頻度は0.026(=4/156)、dm05のアクセス頻度は0.051(=4/79)となる。即ち、dm03、dm05、dm04、dm01、dm02の順にアクセス頻度が高くなっており、基本的方法を用いた場合とは順序が異なっている。
【0056】
(第2の決定方法)
第2の決定方法は、各DMについて保持したRam-countを、アクセス頻度を算出するDMのクライテリアとする方法である。
例えば、最近書かれたDMをアクセス頻度を算出する対象から除外するような場合が考えられる。この場合は、Ram-countが例えば3以下のDMを除外するとよい。
また、過去のカートリッジの読出しマウントを何回目から何回目というように限定して、即ち、ある期間に限定して、DMへのアクセス頻度を量りたい場合も考えられる。この場合は、例えば、アクセス頻度を算出する対象のDMを、Ram-countが100から70のものに限定する。そして、読出しマウントの100回目から70回目に当たるDMへのアクセス回数をDm-readfreqから算出し、それらを比較して頻度の高い順に並べるとよい。
尚、この第2の決定方法で考慮されるRam-countの範囲は、アクセス頻度を把握する対象を限定するための所定の範囲の一例である。
【0057】
このようにしてアクセス頻度が算出されると、テープドライブ10は、このアクセス頻度に基づいて、あるテープから別のテープへデータを移行する。
図8は、データ移行後のテープ23上のデータ及びメタデータの例を示した図である。ここでも、図4と同様、テープ23上には、複数のラップが存在しており、白抜きの矢印がデータの書込み方向を、実線の矢印がテープ23の走行方向が逆転することをそれぞれ示している。また、この例では、アクセス頻度が高い方から、dm02、dm03、dm01、dm04であるとする。
ここでは、まず、ラップ#0に対して順方向に、dm-idがdm02のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1に対して逆方向に、dm-idがdm03のDMのうちメタデータが書き込まれている。その後、ラップ#2に対して再び順方向に、dm-idがdm04のDMのうちデータが書き込まれ、dm-idがdm04のDMが、メタデータ、データの順に書き込まれている。
即ち、データの移行後は、図4の例とは異なり、データ及びメタデータは、図3に示した論理的な関連付けごとに記録されている。これにより、データ及びメタデータをテープ23から順次に読み出していく場合に、不必要なテープ23の位置合わせをする必要がないので、アクセス性能が向上する。
【0058】
このようなデータの移行方法では、本実施の形態で算出されるアクセス頻度によってデータが配置されるので、真にアクセス頻度の高いデータへのアクセス時間が短縮される。
また、移行前のテープ23に分散して配置されていたデータ及びメタデータをある規則で(本実施の形態では、順に)再配置することにより、データ及びメタデータのアクセス性能を高めることができる。
ディジタルデータのアーカイブシステム等では、大量のデータを保管するための階層化ストレージの実装形式として、テープ23を2次、3次ストレージとして用いる形式を採用することがある。その場合、アーカイブといえどもアクセス頻度の高いデータは存在し、実際にアクセスされることが前提である。本実施の形態は、それらのデータへのアクセス性能の向上にも寄与するものである。
【0059】
ところで、上記では、移行元のテープ23に分散して配置されていたデータ及びメタデータをdm-idごとに順次に移行先のテープ23に記憶していった。しかしながら、移行先のテープ23における配置方法は、これに限られるものではない。
以下、他の配置方法について説明する。尚、ここで述べる配置方法は、データをテープ23上で再配置する際に、テープという媒体の特性を考えて、テープ23のマウント後に短時間でアクセスできる位置にアクセス頻度が高いデータを配置するものである。
【0060】
まず、テープ記憶装置の特性として、データを読み込むために次のような準備動作を行う点が挙げられる。
1.カートリッジを記憶装置にマウントする。
2.読み込むべきデータが記憶されている先頭の位置にテープ23の位置を合わせる。
即ち、カートリッジがマウントされた直後において、記憶装置のヘッドはテープ23の先頭に位置付けられることになる。従って、テープ23の先頭に近い位置に配置されたデータの方がテープ23の終端に近い位置に配置されたデータよりもアクセス速度が速いと言える。なぜなら、テープ23の終端の近くにデータが記録されている場合、テープ23をそこまで走らせて位置合わせをする必要があるからである。
【0061】
図9(a)に、LTO(Linear Tape-Open)規格に準拠したテープ23上での通常のデータの読み書きについて示す。
まず、矢印201で示すようにラップ#0に右方向にデータの読み書きを行った後、矢印202で示すようにテープ23の走行方向を逆転する。次に、ラップ#1に左方向にデータの読み書きを行った後、矢印203で示すようにテープ23の走行方向を逆転する。更に、ラップ#2に右方向にデータの読み書きを行った後、矢印204で示すようにテープ23の走行方向を逆転する。そして、最後は矢印205で示すようにラップ#55に左方向にデータの読み書きを行う。
【0062】
このように、LTOでは、テープ23上に複数定義されているラップと呼ばれるデータ記憶域をテープ23の先頭から終端まで往復しながら、データの読み書きを行う。順次読み書きを行う場合は、このようにラップ上を往復するが、テープ23の幅方向にヘッドを移動させてラップを切り替える機械的動作は短時間で終了するので、このようなLTOフォーマットにおいても、テープ23の先頭に近い位置の方がテープ23の終端に近い位置よりも短時間でアクセスできる。
従って、テープ23の先頭に近い側にアクセス頻度が高いデータを配置し、テープ23の終端に近い側にアクセス頻度が低いデータを配置するという配置方法が好ましい。ここで、テープ23の先頭は第1の端部の一例であり、テープ23の終端は第2の端部の一例である。
【0063】
また、テープ記憶装置によっては、セグメンテーションという機能が実装されているものがある。セグメンテーションとは、テープ23を複数のセグメントに分割し、最初のセグメントから順次データを書いていく手法である。ここで、セグメントは、長手方向の少なくとも1つの位置で分割することで形成された複数の領域の一例である。
図9(b)に、セグメンテーションを利用した場合のデータの読み書きについて示す。
まず、矢印211で示すようにラップ#0のセグメント#1の部分に右方向にデータの読み書きを行った後、矢印212で示すようにテープ23の走行方向を逆転する。次に、ラップ#1のセグメント#1の部分に左方向にデータの読み書きを行った後、矢印213で示すようにテープ23の走行方向を逆転する。更に、ラップ#2のセグメント#1の部分に右方向にデータの読み書きを行った後、矢印214で示すようにテープ23の走行方向を逆転する。そして、矢印215で示すようにラップ#55のセグメント#1の部分に左方向にデータの読み書きを行う。
【0064】
その後、矢印220で示すように、ヘッドの位置をラップ#0のセグメント#2の部分に移動する。そして、矢印221で示すようにラップ#0のセグメント#2の部分に右方向にデータの読み書きを行った後、矢印222で示すようにテープ23の走行方向を逆転する。次に、ラップ#1のセグメント#2の部分に左方向にデータの読み書きを行った後、矢印223で示すようにテープ23の走行方向を逆転する。更に、ラップ#2のセグメント#2の部分に右方向にデータの読み書きを行った後、矢印224で示すようにテープ23の走行方向を逆転する。そして、最後は矢印225で示すようにラップ#55のセグメント#2の部分に左方向にデータの読み書きを行う。
【0065】
このように、セグメント#1の方が、セグメント#2よりもアクセス速度が速い。3つ以上のセグメントを設けたとすると、一般に、テープ23の先頭に近いセグメントの方が、テープ23の終端に近いセグメントよりもアクセス速度が速いと言える。
従って、この特性を利用して、データをテープ23に移行する際に、アクセス頻度の高いデータ及びメタデータをテープ23の先頭に近いセグメントに配置し、アクセス頻度の低いデータ及びメタデータをテープ23の終端に近いセグメントに配置するのが好ましい。ここで、テープ23の先頭に近いセグメントは第1の領域の一例であり、テープ23の終端に近いセグメントは第2の領域の一例である。
【0066】
図10は、セグメンテーションを利用したデータ移行後のテープ23上のデータ及びメタデータの例を示した図である。ここでも、図4と同様、テープ23上には、複数のラップが存在しており、白抜きの矢印がデータの書込み方向を、実線の矢印がテープ23の走行方向が逆転することをそれぞれ示している。また、この例でも、アクセス頻度が高い方から、dm02、dm03、dm01、dm04であるとする。
ここでは、まず、ラップ#0のセグメント#1の部分に対して順方向に、dm-idがdm02のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1のセグメント#1の部分に対して逆方向に、dm-idがdm02のDMのうちのデータの残りの部分が書き込まれている。その後、ラップ#2のセグメント#1の部分に対して再び順方向に、dm-idがdm03のDMが、メタデータ、データの順に書き込まれている。尚、d-idがd3のデータに続きがある場合は、図示しないが、ラップ#3のセグメント#1の部分に書き込まれる。
【0067】
その後、ラップ#0のセグメント#2の部分に対して順方向に、dm-idがdm01のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1のセグメント#2の部分に対して逆方向に、dm-idがdm04のDMが、メタデータ、データの順に書き込まれている。
即ち、データの移行後は、図4の例とは異なり、データ及びメタデータは、図3に示した論理的な関連付けごとに記録されている。これにより、データ及びメタデータをテープ23から順次に読み込んでいく場合に、不必要なテープ23の位置合わせをする必要がないので、アクセス性能が向上する。
【0068】
尚、ここでは、データの移行先のテープ23を1つとしたが、複数のテープ23を移行先としてもよい。その場合は、1つ目のテープ23のセグメント#1を使い、それを使い切ったら2つ目のテープ23のセグメント#1を使い、それを使い切ったら3つ目のテープ23のセグメント#1を使い、これを移行先の全てのテープ23のセグメント#1を使い切るまで繰り返す。そして、移行先の全てのテープ23のセグメント#1を使い切ると、1つ目のテープ23から順にセグメント#2を使うようにするとよい。
【0069】
このように、移行先のテープ23を複数用意することによって、より大きな記憶空間を提供でき、アクセス性能が高いセグメント#1に書き込めるデータやメタデータの量を増やすことが可能となる。即ち、短時間でアクセス可能なデータ、メタデータの量が増えることになる。
また、この手法では、移行先のテープ23の本数とセグメント定義の仕方を変更することで、移行元のテープ23上のデータのアクセス頻度に応じた記憶空間の提供ができる。例えば、アクセス頻度の高いデータが少ない場合は、最初のセグメントをテープ23の先頭よりに定義すればよい。また、アクセス頻度の高いデータが多い場合は、移行先のテープ23を多くしたり、必要に応じて最初のセグメントを大きく定義したりすることが考えられる。更に、アクセス頻度にばらつきがある場合は、セグメントの数を増やして、頻度ごとにデータをグルーピングしてそれぞれのセグメントに書き込むようにすることが考えられる。
【0070】
このようなデータの移行方法では、本実施の形態で算出されるアクセス頻度によってデータが配置されるので、真にアクセス頻度の高いデータへ個別にアクセスが行われる場合のアクセス性能が向上する。
ディジタルデータのアーカイブシステム等では、大量のデータを保管するための階層化ストレージの実装形式として、テープ23を2次、3次ストレージとして用いる形式を採用することがある。その場合、アーカイブといえどもアクセス頻度の高いデータは存在し、実際にアクセスされることが前提である。本実施の形態は、それらのアーカイブされたデータが個別にアクセスされる状況下で、過去のアクセス頻度が高かったデータのアクセス性能の向上にも寄与するものである。
【0071】
尚、上記では、データ及びメタデータを読み出す場合のアクセス性能に着目して、データ及びメタデータの配置方法について考えてきた。しかしながら、データ及びメタデータを読み出す場合のアクセス性能に拘らない配置方法を採用してもよい。
【0072】
次に、これまでに述べてきたような動作を行うテープドライブ10について詳細に説明する。尚、ここでは、dmアクセスカウンタテーブルはカートリッジメモリ24に記憶されているものとする。また、図1では1つのカートリッジ20のみを装填可能なテープドライブ10を示したが、ここでは2つのカートリッジ20を装填可能なテープドライブ10を想定し、一方のカートリッジ20から他方のカートリッジ20へのデータの移行を、カートリッジ20を入れ替えることなく1つのテープドライブ10で行うことができるものとする。
【0073】
図11は、テープドライブ10のコントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部61と、バッファ管理部62と、チャネル入出力部63と、カートリッジメモリ入出力部(以下、「CM入出力部」という)64と、頻度算出部65と、移行制御部66と、ヘッド位置管理部67と、テープ走行管理部68とを備える。
【0074】
このうち、コマンド処理部61は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込むことを指示する同期コマンド、テープ23からデータを読み出すことを指示するReadコマンド等がある。
【0075】
バッファ管理部62は、コマンド処理部61がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部61が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部63に出力する。更に、コマンド処理部61がReadコマンドを受け取った場合は、対象となるデータがバッファ12内になければチャネル入出力部63に対してそのデータを読み出すように指示し、対象となるデータがバッファ12内にあればそのデータをコマンド処理部61を介してホスト200に返す。
【0076】
チャネル入出力部63は、バッファ管理部62がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ管理部62に出力したりする。
【0077】
CM入出力部64は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルにCMI/F19を介して情報を書き込んだり、dmアクセスカウンタテーブルからCMI/F19を介して情報を読み出したりする。本実施の形態では、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部の一例として、また、第1の情報と第2の情報とを更新する更新部の一例として、CM入出力部64を設けている。
【0078】
頻度算出部65は、CM入出力部64が読み出した情報に基づいて、各DMに対するアクセス頻度を算出する。本実施の形態では、各データのアクセス頻度を把握する把握部の一例として、頻度算出部65を設けている。
移行制御部66は、頻度算出部65が算出したアクセス頻度に基づいて、データの移行を制御する。即ち、アクセス頻度が高いdm-idの順に、移行元のテープ23からデータ及びメタデータを読み出して移行先のテープ23に書き込むよう、バッファ管理部62に指示する。このように、アクセス頻度が高いdm-idに対応するデータ及びメタデータから順次移行先のテープ23に書き込むので、移行制御部66は、移行先のテープ23上のデータ及びメタデータの位置を決定していると言うことができる。つまり、本実施の形態では、第2の記録媒体における各データの記録位置を決定する決定部の一例として、移行制御部66を設けている。
【0079】
ヘッド位置管理部67は、テープ23に対する書込みヘッド14a及び読出しヘッド14bの位置をテープ23の幅方向へオフセットさせる信号をヘッド位置制御システム17に出力する。また、書込みヘッド14a及び読出しヘッド14bのテープ23上の幅方向における現在位置に関する情報を取得する。
テープ走行管理部68は、テープ23を順方向に走行させるための信号や、テープ23を逆方向に走行させるための信号をモータドライバ18に出力する。
【0080】
次に、本実施の形態におけるテープドライブ10の動作について詳細に説明する。
まず、ホスト200からWriteコマンドが送られてきた場合のテープドライブ10の動作について説明する。
ホスト200は、データとメタデータを関連付けるdm-idを伴うWriteコマンドをアーカイブ装置100に送ってくる。すると、アーカイブ装置100では、制御機構30が、このデータを識別するd-idと、このメタデータを識別するm-idとを生成し、dm-idとd-idとm-idとを関連付けてdm-aとして登録する。また、データとメタデータを書き込むカートリッジ20を決定し、d-idとm-idとカートリッジ20とを関連付けてdm-lとして登録し、そのカートリッジ20をテープドライブ10に装填するようアクセッサ40に指示する。そして、制御機構30は、dm-id、d-id、m-id、データ、メタデータを伴うWriteコマンドをテープドライブ10に送る。これにより、テープドライブ10の動作が開始する。
【0081】
図12は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。
コントローラ16では、まず、コマンド処理部61が、ホストI/F11を介してdm-id、d-id、m-id、データ、メタデータを伴うWriteコマンドを受け取る(ステップ601)。このとき、dm-id、d-id、m-id、データ、メタデータは、バッファ管理部62に渡され、バッファ管理部62によってバッファ12に蓄積される。
【0082】
次に、コントローラ16は、データとメタデータを、テープドライブ10に装填されたカートリッジ20のテープ23に書き込む(ステップ602)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して書込みヘッド14aのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、バッファ管理部62がバッファ12からデータ及びメタデータを読み出してチャネル入出力部63に渡し、チャネル入出力部63がチャネル13を介してデータ及びメタデータを書込みヘッド14aに出力する。
尚、このとき、チャネル入出力部63は、テープ23上のデータ及びメタデータの長手方向の記憶位置の情報をサーボヘッドからチャネル13を介して受け取り、ヘッド位置管理部67は、テープ23上のデータ及びメタデータの幅方向の記憶位置の情報をヘッド位置制御システム17から受け取る。そして、これらの記録位置の情報はバッファ管理部62に渡され、バッファ管理部62が、バッファ12から読み出したd-idとm-idとこれらの記録位置の情報をCM入出力部64に出力する。そして、CM入出力部64が、d-idとデータの記録位置との対応情報、及び、m-idとメタデータの記録位置との対応情報をCMI/F19を介してカートリッジメモリ24に書き込む。これにより、d-idをキーとしたデータの読出し、m-idをキーとしたメタデータの読出しが可能となる。
【0083】
その後、コントローラ16は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルにdm-idに対応するエントリを作成する(ステップ603)。
具体的には、バッファ管理部62がバッファ12からdm-idを読み出してCM入出力部64に渡し、CM入出力部64がdm-idを含むレコードをCMI/F19を介してカートリッジメモリ24に書き込む。
【0084】
次いで、ホスト200からReadコマンドが送られてきた場合のテープドライブ10の動作について説明する。尚、ここでは、ホスト200からデータ及びメタデータの読出し要求がある都度、読出し対象のカートリッジ20がテープドライブ10にマウントされるものとする。
ホスト200は、dm-idを伴うReadコマンドをアーカイブ装置100に送ってくる。すると、アーカイブ装置100では、制御機構30が、dm-idに関連付けられたd-idとm-idをdm-aに基づいて特定する。また、d-idとm-idに関連付けられたカートリッジ20をdm-lに基づいて特定し、そのカートリッジ20をテープドライブ10に装填するようアクセッサ40に指示する。そして、制御機構30は、dm-id、d-id、m-idを伴うReadコマンドをテープドライブ10に送る。これにより、テープドライブ10の動作が開始する。
【0085】
図13は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。
コントローラ16では、まず、コマンド処理部61が、ホストI/F11を介してdm-id、d-id、m-idを伴うReadコマンドを受け取る(ステップ621)。このとき、dm-id、d-id、m-idは、バッファ管理部62に渡される。
【0086】
次に、コントローラ16は、d-idに対応するデータと、m-idに対応するメタデータとを、テープドライブ10に装填されたカートリッジ20のテープ23から読み出す(ステップ622)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して読出しヘッド14bのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、読出しヘッド14bが読み出したデータ及びメタデータをチャネル入出力部63がチャネル13を介して取得してバッファ管理部62に渡し、バッファ管理部62がデータ及びメタデータをバッファ12に蓄積する。そして、バッファ12に蓄積されたデータ及びメタデータは、ホスト200に送信される。
【0087】
その後、コントローラ16は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルの更新処理を行う。この更新処理は、CM入出力部64がカートリッジメモリ24からCMI/F19を介して自身のメモリ領域にdmアクセスカウンタテーブルを読み込むことにより開始する。
更新処理において、まず、CM入出力部64は、dmアクセスカウンタテーブルから1レコードを読み込む(ステップ623)。そして、読み込んだレコードに含まれるRam-countが8の倍数であるかどうかを判定する(ステップ624)。その結果、Ram-countが8の倍数であれば、今回の読出しマウントから8回を一単位とした新たな読出しマウントの単位が始まる。そこで、Dm-countに0を代入することによって初期化し、Dm-readfreqに右端に“00”を付加する(ステップ625)。一方、Ram-countが8の倍数でなければ、そのまま次の処理へ進む。
【0088】
次に、CM入出力部64は、読み込んだレコードに含まれるRam-countに1を加算する(ステップ626)。そして、読み込んだレコードに含まれるdm-idが、Readコマンドで指定されたdm-idと一致するかどうかを判定する(ステップ627)。その結果、dm-idが一致すれば、Dm-countに1を加算し、その結果に応じて、Dm-readfreqの右端の2ビットを更新する(ステップ628)。例えば、Dm-countの値とDm-readfreqの2ビットとの関係が図5に示したようなものであるとする。この場合、1を加算した後のDm-countが0であれば、Dm-readfreqの右端の2ビットが“00”となるように更新し、1を加算した後のDm-countが1又は2であれば、Dm-readfreqの右端の2ビットが“01”となるように更新し、1を加算した後のDm-countが3〜5であれば、Dm-readfreqの右端の2ビットが“10”となるように更新し、1を加算した後のDm-countが6〜8であれば、Dm-readfreqの右端の2ビットが“11”となるように更新する。尚、Dm-countの値に応じたDm-readfreqの更新の規則は、プログラムに直接コーディングしておいてもよいし、プログラム外部のテーブルに定義しておき、プログラムがテーブルを参照することで取得してもよい。
【0089】
その後、CM入出力部64は、dmアクセスカウンタテーブルから読み込んだレコードが最後のレコードであるかどうかを判定する(ステップ629)。そして、最後のレコードでなければ、次のレコードについて、ステップ623〜628の処理を繰り返す。また、最後のレコードであれば、処理を終了する。
【0090】
このようにしてdmアクセスカウンタテーブルが更新された後の任意の時点で、テープドライブ10は、データ移行に関する処理を行う。
図14は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。尚、ここでは、移行先のテープ23において、データ及びメタデータを図10に示したように配置することを前提に説明する。
【0091】
テープドライブ10では、まず、CM入出力部64がカートリッジメモリ24からCMI/F19を介してdmアクセスカウンタテーブルを読み込み、頻度算出部65に受け渡す(ステップ641)。
すると、頻度算出部65は、上述した第1の決定方法又は第2の決定方法を用いてdm-idごとのアクセス頻度を算出し、アクセス頻度が高い順にdmアクセスカウンタテーブルのレコードを並べ替え、並べ替え後のdmアクセスカウンタテーブルを移行制御部66に受け渡す(ステップ642)。
【0092】
これにより、移行制御部66は、一方のテープ23から他方のテープ23へデータを移行する。
即ち、まず、移行制御部66は、並べ替え後のdmアクセスカウンタテーブルから1レコードを読み込み、バッファ管理部62に伝える(ステップ643)。すると、バッファ管理部62は、読み込んだレコードに含まれるdm-idに対応するデータ及びメタデータを移行元のテープ23から読み出す(ステップ644)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して読出しヘッド14bのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、読出しヘッド14bが読み出したデータ及びメタデータをチャネル入出力部63がチャネル13を介して取得してバッファ管理部62に渡し、バッファ管理部62がデータ及びメタデータをバッファ12に蓄積する。尚、dm-idに対応するデータ及びメタデータを読み出す際のキーとなるd-id及びm-idは、例えば、制御機構30に問い合わせることによって特定するとよい。
【0093】
次に、バッファ管理部62は、データ及びメタデータを移行先のテープ23の現在のラップに書けるかどうか判定する(ステップ645)。具体的には、チャネル入出力部63が、テープ23上のデータ及びメタデータの長手方向の記憶位置の情報をサーボヘッドからチャネル13を介して受け取るので、その情報に基づいて判定する。
その結果、現在のラップに書けると判定すれば、そのままデータ及びメタデータを移行先のテープ23に書き込む(ステップ649)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して書込みヘッド14aのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、バッファ管理部62がバッファ12からデータ及びメタデータを読み出してチャネル入出力部63に渡し、チャネル入出力部63がチャネル13を介してデータ及びメタデータを書込みヘッド14aに出力する。
【0094】
一方、現在のラップに書けないと判定すれば、現在のラップが最後のラップであるかどうかを判定する(ステップ646)。具体的には、ヘッド位置管理部67が、テープ23上のデータ及びメタデータの幅方向の記憶位置の情報をヘッド位置制御システム17から受け取るので、その情報に基づいて判定する。
そして、現在のラップが最後のラップでなければ、次のラップに切り替えて(ステップ647)、データ及びメタデータを移行先のテープ23に書き込む(ステップ649)。尚、ラップの切り替えは、ヘッド位置管理部67がヘッド位置制御システム17を制御することで行われる。
また、現在のラップが最後のラップであれば、次のセグメントのラップ#1に切り替えて(ステップ648)、データ及びメタデータを移行先のテープ23に書き込む(ステップ649)。尚、セグメントの切り替えは、テープ走行管理部68がモータドライバ18を制御することで行われ、ラップの切り替えは、ヘッド位置管理部67がヘッド位置制御システム17を制御することで行われる。
【0095】
その後、移行制御部66は、dmアクセスカウンタテーブルから読み込んだレコードが最後のレコードであるかどうかを判定する(ステップ650)。そして、最後のレコードでなければ、次のレコードについて、ステップ643〜649の処理を繰り返す。また、最後のレコードであれば、処理を終了する。
【0096】
尚、この動作例では、同時に2つのカートリッジ20を装填可能なテープドライブ10にて、2つのカートリッジ20を入れ替えることなくデータの移行を行うようにした。しかしながら、このようなデータの移行の制御は、制御機構30で行ってもよい。その場合、1つのカートリッジ20のみ装填可能な2台のテープドライブ10を制御機構30が制御することで、データの移行を行うようにすればよい。
【0097】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0098】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【0099】
【図1】本発明の実施の形態が適用されるアーカイブ装置の構成を示したブロック図である。
【図2】本発明の実施の形態におけるdm-id、d-id、m-idの関連付けについて説明するための図である。
【図3】本発明の実施の形態におけるdm-id、d-id、m-idの関連付けの具体例を示した図である。
【図4】本発明の実施の形態でデータを移行する前にデータ及びメタデータがテープ上に分散配置された状態を示した図である。
【図5】本発明の実施の形態で用いるカウンタについて具体的に説明するための図である。
【図6】本発明の実施の形態で用いるdmアクセスカウンタテーブルの一例を示した図である。
【図7】本発明の実施の形態におけるカウンタの更新について具体的に説明するための図である。
【図8】本発明の実施の形態でデータを移行した後にデータ及びメタデータがテープ上にアクセス頻度順に配置された状態を示した図である。
【図9】テープにおけるアクセス頻度の速い部分と遅い部分について説明するための図である。
【図10】本発明の実施の形態でデータを移行した後にデータ及びメタデータがテープ上にアクセス頻度順に配置された状態の変形例を示した図である。
【図11】本発明の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図12】本発明の実施の形態におけるWriteコマンド受信時のコントローラの動作例を示したフローチャートである。
【図13】本発明の実施の形態におけるReadコマンド受信時のコントローラの動作例を示したフローチャートである。
【図14】本発明の実施の形態におけるデータ移行時のコントローラの動作例を示したフローチャートである。
【符号の説明】
【0100】
10…テープドライブ、11…ホストI/F、12…バッファ、13…チャネル、14a…書込みヘッド、14b…読出しヘッド、15…モータ、16…コントローラ、17…ヘッド位置制御システム、18…モータドライバ、19…CMI/F、20…カートリッジ、30…制御機構、40…アクセッサ、50…カートリッジスロット、100…アーカイブ装置、200…ホスト
【技術分野】
【0001】
本発明は、記録媒体に記録されたデータの移行のための装置及び方法に関する。特に、本発明は、記録媒体に記録されたデータのその記録媒体又は他の記録媒体への移行を支援する装置及び方法に関する。
【背景技術】
【0002】
媒体に記録されたデータは、媒体や媒体ドライブ装置の寿命等により、別の新しい媒体へ移行されることがある。また、別の媒体への移行は、運用上の理由、例えば、よりコストパフォーマンスが高い媒体への切り替え等の理由により行われる場合もある。
かかるデータの移行時においては、より多くのアクセスがあるデータをパフォーマンス的に有利な位置に記録することが望ましい。例えば、データオブジェクトのように、複数のデータを1つのデータ群としてアクセスする場合、パフォーマンス的に最も不利な位置に記録されているデータが、データ群全体のパフォーマンスに影響を及ぼす場合があるからである。
【0003】
従来、媒体に記録されたデータを自身又は他の媒体に移行する場合に、データへのアクセス頻度を考慮することによりパフォーマンスを向上させる技術は知られていた(例えば、特許文献1〜3参照)。
特許文献1では、アクセス頻度の高い論理ボリュームを長時間通電モードのRAIDグループに、アクセス頻度が中程度の論理ボリュームを第1短時間通電モードのRAIDグループに、アクセス頻度が少ない論理ボリュームを第2短時間通電モードのRAIDグループに、それぞれ配置させるべく再配置計画を作成し、RAIDグループへのアクセス頻度に基づいて、再配置計画の実行時期を決定している。
【0004】
特許文献2では、複数のブロックで構成されるファイル単位のアクセス頻度を記憶し、このアクセス頻度が所定値以上でかつ相関関係のある複数のファイルを1つのグループとして抽出し、この抽出された各ファイルの各ブロックのデータを光ディスクから読み出してその光ディスク上の連続するブロック或いは近傍のブロックに順次書込むようにしている。
特許文献3では、テープカセットのカートリッジ内にメモリを設け、このメモリに各パーティション毎のアクセス頻度に関する情報を記録しておき、テープを複製する際には、このアクセス頻度情報を読み取り、アクセス頻度の高い順に、テープの先頭からデータを記録している。
【0005】
【特許文献1】特開2007−164650号公報
【特許文献2】特開平8−263335号公報
【特許文献3】特開平11−31376号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、引用文献1〜3におけるアクセス頻度は、複数のデータを含むデータ群(論理ボリューム、ファイル、パーティション)について記録されるものである。そのデータ群の中には、古くから存在しているデータと、最近作成されたデータとが混在しているかもしれない。そのような作成時期の異なるデータについて時間軸を基準にアクセス頻度を求めたのでは、本当の意味でのアクセス頻度は得られない。従って、引用文献1〜3の技術では、データを移行する際に真のアクセス頻度を考慮してパフォーマンスを向上することはできないという問題点があった。
【0007】
本発明の目的は、データを移行する際に、時間軸を用いない真のアクセス頻度を考慮してパフォーマンスを向上することにある。
【課題を解決するための手段】
【0008】
かかる目的のもと、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置であって、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定する決定部とを含む、装置を提供する。
【0009】
ここで、この装置は、第1の記録媒体から特定のデータが読み出された場合に、各データについて、第1の情報を更新し、特定のデータについて、第2の情報を更新する更新部を更に含む、ものであってよい。その場合、特定のデータは、主データと、主データの付加情報であるメタデータとを含み、更新部は、第1の記録媒体から主データ及びメタデータの少なくとも何れか一方が読み出された場合に、特定のデータが読み出されたと判定する、ものであってよい。
また、第1の情報は、第1の記録媒体に各データが書き込まれた後に第1の記録媒体が記憶装置にマウントされた回数によって、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す、ものであってよい。
更に、把握部は、第1の情報が示す回数に対する第2の情報が示す回数の比率を、アクセス頻度として把握する、ものであってもよいし、第1の情報が示す回数が所定の範囲にあるデータについて、第2の情報を用いて、アクセス頻度を把握する、ものであってもよい。
また、第2の情報は、各データの読出しの履歴を複数のビット値で表す情報であって、第1の記録媒体からのM回のデータの読出しのうち各データが読み出された回数を、複数のビット値のうちN(N<M)個のビット値で表す、ものであってよい。
更に、決定部は、アクセス頻度が高いデータが第2の記録媒体における第1の記録位置に記録され、かつ、アクセス頻度が低いデータが第2の記録媒体における第1の記録位置よりもデータの読出しに時間がかかる第2の記録位置に記録されるように、第2の記録媒体における各データの記録位置を決定する、ものであってよい。その場合、第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始されるテープ媒体であり、第2の記録位置は、第1の記録位置よりも第2の端部に近い位置である、ものであってもよいし、第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始され、かつ、長手方向の少なくとも1つの位置で分割することで形成された複数の領域を有するテープ媒体であり、第1の記録位置は、複数の領域のうちの第1の領域内の位置であり、第2の記録位置は、複数の領域のうち、第1の領域よりも第2の端部に近い第2の領域内の位置である、ものであってもよい。
【0010】
また、本発明は、記録媒体におけるデータの再配置を支援する装置であって、記録媒体に記録された各データについて、記録媒体に各データが書き込まれた後に記録媒体から何れかのデータが読み出された回数を示す第1の情報と、記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、記録媒体における各データの記録位置を決定する決定部とを含む、装置も提供する。
【0011】
また、本発明は、第1のテープ媒体に記録されたデータを第2のテープ媒体に移行する装置であって、第1のテープ媒体に記録され、主データと、主データの付随情報を示すメタデータとを含む各データについて、第1のテープ媒体に各データが書き込まれた後に第1のテープ媒体が何れかのデータの読出しのためにテープドライブにマウントされた回数を示す第1の情報と、第1のテープ媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報が示す回数に対する第2の情報が示す回数の比率を、各データのアクセス頻度として把握する把握部と、把握部により把握されたアクセス頻度が高いデータから順に第2のテープ媒体に書き込む書込み部とを含む、装置も提供する。
【0012】
更に、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する方法であって、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得するステップと、取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握するステップと、把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定するステップとを含む、方法も提供する。
【0013】
更にまた、本発明は、第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置としてコンピュータを機能させるプログラムであって、コンピュータを、第1の記録媒体に記録された各データについて、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部と、取得部により取得された第1の情報と第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、把握部により把握されたアクセス頻度に基づいて、第2の記録媒体における各データの記録位置を決定する決定部として機能させる、プログラムも提供する。
【発明の効果】
【0014】
本発明によれば、データを移行する際に、時間軸を用いない真のアクセス頻度を考慮してパフォーマンスを向上することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。尚、本発明は如何なる記録媒体に対しても適用可能であるが、ここでは、テープ媒体(以下、単に「テープ」という)を例にとり説明する。増え続ける大量のデータの全てを高速な記憶装置に保管することが困難になってきている現状において、テープドライブ等の低速な記憶装置に保管するデータに関してもアクセス頻度を考慮したデータの配置が重要となっているからである。
【0016】
まず、本実施の形態が適用されるディジタルデータアーカイブ装置(以下、単に「アーカイブ装置」という)について説明する。
図1は、本実施の形態が適用されるアーカイブ装置100の構成例を示した図である。
図示するように、アーカイブ装置100は、テープドライブ10と、制御機構30と、アクセッサ40と、カートリッジスロット50とを備える。
このうち、テープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、書込みヘッド14aと、読出しヘッド14bと、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ(以下、単に「カートリッジ」という)20が挿入されることにより装填可能となっているので、ここでは、カートリッジ20も図示している。このカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0017】
また、カートリッジ20は、カートリッジメモリ24も含む。このカートリッジメモリ24は、例えば、テープ23上にどのようにデータが書かれたかの情報を記録する。そして、例えばRFインターフェイスを用いて非接触でテープ23に書かれたデータのインデックスやテープ23の使用状況等を調べることにより、データへの高速アクセスを可能としている。尚、図では、このRFインターフェイスのようなカートリッジメモリ24へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス(以下、「CMI/F」という)19として示している。
【0018】
ここで、ホストI/F11は、制御機構30を介してホスト200との通信を行う。例えば、ホスト200から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト200に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【0019】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAM(Dynamic Random Access Memory)によって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
チャネル13は、テープ23に書き込むべきデータを書込みヘッド14aに送ったり、テープ23から読み出されたデータを読出しヘッド14bから受け取ったりするために用いられる通信経路である。
書込みヘッド14aは、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込み、読出しヘッド14bは、テープ23が長手方向に移動するとき、テープ23から情報を読み出す。
モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0020】
コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。
ヘッド位置制御システム17は、書込みヘッド14a及び読出しヘッド14bが所望の1つ又は複数のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド14a及び読出しヘッド14bを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。
【0021】
また、制御機構30は、ホスト200からの指示に応じて、アクセッサ40及びテープドライブ10を制御する機構である。即ち、アクセッサ40に対しては、ホスト200から指示されたデータを読み出したり書き込んだりできるように、カートリッジ20をテープドライブ10に装填するように指示し、テープドライブ10に対しては、ホスト200から指示されたデータをアクセッサ40によって装填されたカートリッジ20から読み出すように又はカートリッジ20に書き込むように指示する。
アクセッサ40は、制御機構30の制御により、カートリッジ20をカートリッジスロット50から取り出してテープドライブ10に装填する。
カートリッジスロット50は、読み書きが行われていないカートリッジ20を保管しておくための場所である。ここでは、カートリッジスロット50を1つの矩形で示したが、実際には、複数のカートリッジをそれぞれ格納する複数のスロットである。
【0022】
尚、図では、1台のテープドライブ10しか示していないが、複数台のテープドライブ10を設けてもよい。その場合、制御機構30は、読出し命令又は書込み命令の送り先であるテープドライブ10の識別情報をアクセッサ40に伝えることで、そのテープドライブ10へのカートリッジ20の装填を指示することになる。また、図では、1つのカートリッジ20のみ装填可能なテープドライブ10を示しているが、複数のカートリッジ20を装填可能なテープドライブ10を用いてもよい。
【0023】
ところで、テープドライブ10によってテープ23に記録されるデータへのアクセス性能は、テープ23上の記録位置によって大きく異なってくる。従って、テープ23にデータを移行する際に、データへのアクセス頻度を考慮しないと、アクセス頻度の高いデータへのアクセス速度が遅くなり、データへのアクセス性能が低下するという問題が生じる。
【0024】
また、テープドライブ10を、写真データ、映像データ等のアーカイブとして使用することが多くなっている現状において、データ(主データ)そのものだけでなく、その付加情報であるメタデータも、長期保管されるべきデータとして重要になってきている。ここで、メタデータとしては、例えば写真データに対しては、写真の撮影場所、日時、被写体、撮影者、撮影機器、記録フォーマット、ファイル名、ファイルサイズ等が考えられる。このように、メタデータはデータとの関連が強く一緒に扱われることが多いので、データをアーカイブとしてテープ23に保管する場合に、メタデータも同じテープ23上に保管するのであれば、データとメタデータを適切に配置しないと、アクセスのパフォーマンスが低下するという問題が生じる。
【0025】
そこで、本実施の形態では、テープ23上に記録された互いに関連するデータのアクセス頻度を記録し、そのアクセス頻度を用いてデータを移行する。これにより、データ移行におけるデータやメタデータ群のパフォーマンス的に適切な配置を実現する。
具体的には、以下のような構成を採用している。
即ち、データとメタデータをdm-idによって関連付けておき、データ又はメタデータへのアクセスが発生する都度、そのdm-idに対応するアクセスカウンタ変数(以下、単に「カウンタ」という)群にアクセス履歴を記録しておく。この場合、カウンタ群へのアクセス履歴の記録は、テープという順次アクセス記録媒体の特性に鑑み、時間を軸とするのではなく、データ読出しのためのテープ23のマウント回数を軸とすることにより行う。尚、カウンタ群は、テープ23の可搬性を考え、テープ23に付属する半導体メモリに記録する。
【0026】
このようにアクセス履歴を記録した後、ある記録媒体Aから別の記録媒体Bへデータを移行する際には、まず、記録媒体Aにおけるdm-idによって関連付けられるデータ及びメタデータへのアクセス頻度を、カウンタ群に基づくポリシーに則って算出する。そして、アクセス性能の観点から、アクセス頻度の高い順に記録媒体B上に再配置する。尚、ここでは、再配置の手法として、関連付けられるデータ及びメタデータを1つのまとまりとしてテープ23の先頭から順次書き出す手法を採用する。これにより、データ及びメタデータを最初から順次に読み出す場合のアクセス性能を向上させる。
【0027】
以下、このような動作を実現する構成について詳細に説明する。
その前提として、まず、データ及びメタデータの関連付けについて説明する。
図2は、データとメタデータを関連付けるときの様子を模式的に示した図である。
(a)に示すように、まず、ホスト200は、データとメタデータの関連を任意の識別番号dm-idを割り当てることで作成する。そして、データは、データポートを介して制御機構30に渡し、メタデータは、メタデータポートを介して制御機構30に渡す。
【0028】
次に、制御機構30では、データポートを介して渡された情報がデータとして扱われ、ID生成部31がd-idを生成してデータに割り当てる。ここで、d-idは、データの識別番号であって、少なくともアーカイブ装置100が動作する環境においてユニークな値である。また、メタデータポートを介して渡された情報がメタデータとして扱われ、ID生成部31がm-idを生成してメタデータに割り当てる。ここで、m-idは、メタデータの識別番号であって、少なくともアーカイブ装置100が動作する環境内においてユニークな値である。尚、データとメタデータは時間的に離れて渡されたとしても、アーカイブ装置100内でdm-idによってそれらの関係を構築することができる。
【0029】
これにより、制御機構30は、dm-idに基づくデータとメタデータの関係をdm-aテーブル(以下、単に「dm-a」という)としてデータベース(DB)32に記録する。(b)にdm-aの形式を示す。ここでは、1つのデータに対して1つのメタデータが関連付けられているが、データとメタデータはM対Nの関係を持つことも可能である(M,Nは自然数)。
加えて、制御機構30は、データとメタデータのアーカイブ装置100内での記録場所をdm-lテーブル(以下、単に「dm-l」という)として個々のデータ及びメタデータごとにDB32に記録する。(c)にdm-lの形式を示す。ここで、アーカイブ装置100内に複数のストレージ空間が実装され、それらの空間にデータ又はメタデータの複数のコピーが存在する場合、そのコピーの数だけdm-lにエントリが登録されることになる。図では、そのようなエントリをLocation-1、Location-2、…で表している。
【0030】
ここで、データ及びメタデータの関連付けについて具体例を用いて説明する。
図3は、データ及びメタデータの関連付けの具体例を示した図である。
(a)は、媒体名が「A001」の記録媒体に、d-idで識別されるデータとm-idで識別されるメタデータとがdm-idで識別される関連を持って記録されている状態を表している。具体的には、d-idがd3のデータとm-idがm4、m6、m8のメタデータとがdm-idがdm03の関連を持って記録され、d-idがd1のデータとm-idがm1、m7のメタデータとがdm-idがdm01の関連を持って記録され、d-idがd2のデータとm-idがm5のメタデータとがdm-idがdm02の関連を持って記録され、d-idがd5のデータとm-idがm9のメタデータとがdm-idがdm04の関連を持って記録されている。尚、本明細書では、このようにdm-idによって関連付けられたデータとメタデータの組み合わせを「DM」と呼ぶことにする。
また、(b)は、dm-idがdm03のDMの識別子(d-id、m-id)がdm-aにリストされている様子を示している。
【0031】
ところが、テープ23へのデータやメタデータの書込みはその準備が整った時点で行われることから、テープ23上のデータやメタデータの記録順序は一意的には決まらない。
従って、データとメタデータの間の関係がdm-idによって論理的に構築されていても、それらがテープ23上に記録された際には、テープ23上の物理的な記録位置は分散する可能性がある。
【0032】
図4は、このように分散記録されたテープ23上のデータ及びメタデータの例を示した図である。図示するように、テープ23上には、複数のラップが存在している。また、図中、白抜きの矢印がデータの書込み方向を示しており、実線の矢印がテープ23の走行方向が逆転することを示している。
ここでは、まず、ラップ#0に対して順方向に、m-idがm6のメタデータ、d-idがd3のデータ、m-idがm1のメタデータ、d-idがd1のデータ、m-idがm4のメタデータが書き込まれている。次に、ラップ#1に対して逆方向に、m-idがm5のメタデータ、d-idがd2のデータが書き込まれている。その後、ラップ#2に対して再び順方向に、m-idがm7のメタデータ、m-idがm9のメタデータ、d-idがd5のデータ、m-idがm8のメタデータが書き込まれている。
【0033】
即ち、ある記録媒体に図3(a)に示したようなデータとメタデータ群が保管されていたとしても、それらをテープ23に移行すると、データとメタデータの関連付けに関係なく配置されてしまう可能性がある。この場合、複数回のテープ23の位置合わせを行わなければ、あるdm-idのDMを読み出すことはできないので、テープ23の位置合わせの分だけアクセス性能が低下することになる。
【0034】
そこで、本実施の形態では、このように記録されたデータ及びメタデータを移行する際に、データ及びメタデータのアクセス頻度に基づいてそれらを再配置する。
ここでは、各DMに対して、以下の3つのカウンタを定義する。
【0035】
(1)Read Access Mount カウンタ(Ram-count)
このRam-countは、dm-idごとに定義されるカウンタである。dm-idによって関連付けられたデータ及びメタデータがテープ23に書かれた時点以降における読出しのためのテープ23のマウントの回数を保持する。尚、本実施の形態では、データを読み出す必要が生じる都度、そのデータが記録されたテープ23がテープドライブ10にマウントされることを想定している。以下、この読出しのためのテープ23のマウントを「読出しマウント」と呼ぶことにする。
【0036】
Ram-countをこのように定義すると、最も大きいRam-countを有するdm-idが、最も古くにテープ23に書かれたデータやメタデータを関連付けるdm-idとなる。また、各dm-idに割り当てられたRam-countを参照することにより、どのデータやメタデータが比較的古いか新しいかということや、そのデータやメタデータへの読出しアクセスの確率も知ることができる。尚、このカウンタは、ラップしないように大きな値を保持できるよう定義すべきだが、もしラップしたら、0にリセットする。
【0037】
(2)Read Frequency カウンタ(Dm-readfreq)
このDm-readfreqも、dm-idごとに定義されるカウンタである。Ram-countで示される回数の読出しマウントが発生する間にこのdm-idによって関連付けられるデータやメタデータの読出しがどの程度行われてきたかの履歴を保持する。このカウンタは、データ、メタデータの何れかが読み出されることで更新されるものとする。
【0038】
ここで、例えば、Ram-countの最大値が16であるとする。つまり、過去16回の読出しマウントの履歴だけをカウントするものとする。この場合、Dm-readfreqの各ビットによってこのdm-idのデータやメタデータが読み出されたかどうかを表現することにすると、Dm-readfreqは16ビットで表わされることになる。
ところが、1回の読出しマウントに1ビットを割り当ててしまうと、例えば過去256回の読出しマウントの履歴から頻度を量りたいような場合に、32バイト(=256ビット)分のメモリ領域が必要となってしまう。
【0039】
そこで、複数回の読出しマウントを1ビットで表す方法を考える。
例えば、8回の読出しマウントを1ビットで表現するようにすると、4バイト(=256ビット/8=32ビット)のメモリ領域で済む。尚、このような方法を採用すると、Dm-readfreqとは別に過去8回の読出しマウントのうちのdm-idのデータの読出し回数を保持するDmアクセスカウンタ(後述)が必要となる。
但し、この方法だと、過去8回の読出しマウントでdm-idのデータが1回でも読み出されれば、カウンタは1となる。そのため、8回の読出しマウントにおけるdm-idのデータの読出し回数が8回だったのか1回だったのか分からなくなる。
【0040】
そこで、複数回の読出しマウントを複数ビットで表す方法を考える。
例えば、8回の読出しマウントを2ビットで表現するようにすると、8バイト(=256ビット/8×2=32ビット×2)のメモリ領域が必要となる。尚、この場合も、Dm-readfreqとは別に過去8回の読出しマウントのうちのdm-idのデータの読出し回数を保持するDmアクセスカウンタ(後述)が必要となる。
この方法では、2ビットを使って、例えば以下の頻度を表現することができる。
“00”:アクセスなし
“01”:1回から2回
“10”:3回から5回
“11”:6回から8回
この定義は頻度算定のポリシーによって変更することも可能である。
【0041】
(3)Dmアクセス・カウンタ(Dm-count)
このDm-countは、上述のDm-readfreqにおいて、M回の読出しマウントを一単位としてN(<M)ビットで表現する場合に、M回の読出しマウントのうちこのdm-idのDMが読み出された回数を保持するカウンタである。
例えば、過去8回の読出しマウントを一単位とした場合、8回全ての読出しマウントでこのdm-idのデータが読み出されれば、Dm-countは8となる。また、2回読み出されれば、Dm-countは2となる。
尚、読出しマウントの一単位、例えば8回テープ23に読出しマウントがあれば、Dm-countは0にリセットされる。ここで、8回という一単位を数えるためには、上述のRam-countを使う。即ち、8の倍数の回数の読出しマウントがあると、Dm-countをリセットする。
【0042】
さて、これら3つのカウンタを用いると、次のような情報を得ることができる。
・過去X回のテープ23への読出しマウントのうち、対象のdm-idのDMが読み出された頻度
・対象のdm-idのDMが読み出された回数
・過去X回のテープ23への読出しマウントのうち、対象のdm-idのDMが読み出された回数に基づいて算出されるアクセス確率
・X回の読出しマウントにおけるアクセスの傾向、つまり、最近アクセスが多いのか、過去にアクセスが多いのか
【0043】
一般には、データへのアクセス頻度を語る場合、時間軸が考慮される。しかしながら、テープのようなリムーバル記録媒体においては、記憶装置から排出されている場合や、記憶装置の中でもテープへのアクセスがない場合は、ある意味「時間が止まった」状態になる。従って、本実施の形態では、時間軸を考慮に入れる代わりに、テープが読出し目的でマウントされたという実例を軸としている。
【0044】
これら3つのカウンタのサイズを確定する要素は以下の通りである。
・過去何回の読出しマウントを対象とするか
・何回の読出しマウントを何ビットで表現するか
例えば、上記で示した通り、過去256回の読出しマウントをアクセス頻度を量る対象とする場合、Ram-countは1バイトとなる。
また、8回の読出しマウントを一単位とし、それを2ビットで表現する場合、Dm-readfreqは8バイトとなり、Dm-countは4ビットとなる。
【0045】
図5に、この場合の3つのカウンタについて示す。
ここでは、各dm-idに対して3つのカウンタを設けているので、dm-idも示している。
但し、上記でdm-idに割り当てるビット数は規定していないので、単純に1つの矩形で表している。
一方、3つのカウンタに割り当てるビット数は規定したので、1つのビットを1つの細長い矩形に対応付けて表している。具体的には、Ram-countは8ビットなので、8つの矩形で表している。Dm-countは4ビットなので、8つの矩形を示し、そのうち4つには網かけを施すことで未使用であることを示している。Dm-readfreqは64ビットなので、64個の矩形で表している。また、特に、このDm-readfreqにおいては、8回の読出しマウントを一単位として2ビットで表していることから、右端の2ビットを例として、その意味付けも示している。
【0046】
そして、これら3つのカウンタの値は、dm-idごとにdmアクセスカウンタテーブルに記録されていく。
図6に、dmアクセスカウンタテーブルの一例を示す。
図において、Ram-countの欄には、dm-idが「dm01」のDMが書かれてから215回の読出しマウントがあったこと、dm-idが「dm02」のDMが書かれてから24回の読出しマウントがあったこと、dm-idが「dm03」のDMが書かれてから13回の読出しマウントがあったこと、dm-idが「dm04」のDMが書かれてから156回の読出しマウントがあったこと、dm-idが「dm05」のDMが書かれてから79回の読出しマウントがあったことが示されている。
【0047】
また、Dm-countの欄には、dm-idが「dm01」のDM及びdm-idが「dm02」のDMが過去8回の読出しマウントのうち1回も読み出されていないこと、dm-idが「dm03」のDMが過去8回の読出しマウントのうち4回読み出されたこと、dm-idが「dm04」のDMが過去8回の読出しマウントのうち1回読み出されたこと、dm-idが「dm05」のDMが過去8回の読出しマウントのうち7回読み出されたことが示されている。そして、これらの回数は、Dm-readfreqの右端の2ビットに反映されている。
【0048】
更に、Dm-readfreqの欄には、8ビットでDMの読出しを示している。8回の読出しマウントにおけるDMの読出し回数を2ビットで表しているので、図では、25回から32回の読出しマウントにおけるDMの読出し回数が示されていることなる。尚、Dm-readfreqのビット列の左側の「. . . . .」は、ビット値が省略されていることを示している。また、dm-id「dm02」については、Ram-countが24なので、Dm-readfreqは6ビットで十分であり、dm-id「dm03」については、Ram-countが13なので、Dm-readfreqは4ビットで十分であるが、この場合も、左側を0のビット列で埋めて8ビットで示している。
【0049】
次に、これら3つのカウンタの更新について具体例により説明する。
図7は、テープドライブ10がWriteコマンドやReadコマンドを受けることにより、カートリッジ20に記憶された各カウンタがどのように更新されるかを示した図である。尚、これまでの説明では言及しなかったが、ここではTotal Readカウンタについても示している。このTotal Readカウンタは、dm-idごとではなく、テープ23ごとのカウンタであり、テープ23が読出しのためにマウントされると更新されるカウンタである。一方で、この図では、Dm-readfreqについては省略している。また、この図において、D1〜D3は、DMを一般化し、データとして示したものである。
【0050】
まず、Aに示すように、D1を対象とするWriteコマンドが送られてきたとする。この場合のTotal Readカウンタは0であるとする。また、D1のRam-countとDm-countは作成されるが、その値は0である。
次に、Bに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは1となる。また、D1のRam-countとDm-countも1となる。
次いで、Cに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは2となる。また、D1のRam-countとDm-countも2となる。
【0051】
また、Dに示すように、D2を対象とするWriteコマンドが送られてきたとする。この場合、Total Readカウンタは2のままで、D1のRam-countとDm-countも2のままである。また、D2のRam-countとDm-countは作成されるが、その値は0である。
次に、Eに示すように、D1を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは3となる。また、D1のRam-countも3となり、D1が読み出されたので、D1のDm-countも3となる。一方、D2のRam-countは1となるが、D2が読み出されたわけではないので、D2のDm-countは0のままである。
次いで、Fに示すように、D2を対象とするReadコマンドが送られてきたとする。この場合、Total Readカウンタは4となる。一方、D1のRam-countは4となるが、D1が読み出されたわけではないので、D1のDm-countは3のままである。また、D2のRam-countは2となり、D2が読み出されたので、D2のDm-countは1となる。
【0052】
その後、G、H、IでWriteコマンド及びReadコマンドが送られてきた場合も、上記と同様に、Total Readカウンタ、D1、D2、D3のRam-count、Dm-countは更新される。
【0053】
次に、データ及びメタデータを別のテープ23に移行するときのアクセス頻度に基づく再配置について説明する。
テープ23上のデータ及びメタデータを別のテープ23(又はそのテープ23自身)に移行(migration)する場合、図6に示したdmアクセスカウンタテーブルでアクセス頻度が高いものから、テープ23上のアクセス性能上有利な場所にそのdm-idに対応するデータ及びメタデータを記録する。
【0054】
このアクセス頻度の決定方法としては、Dm-count/Total Readカウンタを計算することによる方法が最も基本的である(以下、この決定方法を「基本的方法」と呼ぶことにする)。しかしながら、この基本的方法でアクセス頻度を求めると、DMがどの時点でテープ23に書かれたかによって結果にぶれが生じる。例えば、テープ23に最初に書かれたDMと既にRam-countが100になった後に書かれたDMとでは単純に比較できない。
そこで、本実施の形態では、次のようなアクセス頻度の決定方法を採用する。
【0055】
(第1の決定方法)
第1の決定方法は、Dm-count/Ram-countを計算することにより、DMに対する相対的なアクセス頻度を導き出す方法である。
これを図6に示した例で説明する。但し、ここでは、図6のDm-readfreqの省略部分「. . . . .」には、0のビット値の並びが存在しているものと仮定する。
まず、基本的方法を用いた場合、Total Readカウンタが250とすると、dm01のアクセス頻度は0.02(=5/250)、dm02のアクセス頻度は0、dm03のアクセス頻度は0.012(=3/250)、dm04のアクセス頻度は0.016(=4/250)、dm05のアクセス頻度は0.016(=4/250)となる。即ち、dm01、dm05、dm04、dm03、dm02の順にアクセス頻度が高くなっている(ポイントが同じ場合は、より最近のアクセス回数が多い方をアクセス頻度が高いと定義している)。
一方、第1の決定方法を用いた場合、dm01のアクセス頻度は0.023(=5/215)、dm02のアクセス頻度は0、dm03のアクセス頻度は0.231(=3/13)、dm04のアクセス頻度は0.026(=4/156)、dm05のアクセス頻度は0.051(=4/79)となる。即ち、dm03、dm05、dm04、dm01、dm02の順にアクセス頻度が高くなっており、基本的方法を用いた場合とは順序が異なっている。
【0056】
(第2の決定方法)
第2の決定方法は、各DMについて保持したRam-countを、アクセス頻度を算出するDMのクライテリアとする方法である。
例えば、最近書かれたDMをアクセス頻度を算出する対象から除外するような場合が考えられる。この場合は、Ram-countが例えば3以下のDMを除外するとよい。
また、過去のカートリッジの読出しマウントを何回目から何回目というように限定して、即ち、ある期間に限定して、DMへのアクセス頻度を量りたい場合も考えられる。この場合は、例えば、アクセス頻度を算出する対象のDMを、Ram-countが100から70のものに限定する。そして、読出しマウントの100回目から70回目に当たるDMへのアクセス回数をDm-readfreqから算出し、それらを比較して頻度の高い順に並べるとよい。
尚、この第2の決定方法で考慮されるRam-countの範囲は、アクセス頻度を把握する対象を限定するための所定の範囲の一例である。
【0057】
このようにしてアクセス頻度が算出されると、テープドライブ10は、このアクセス頻度に基づいて、あるテープから別のテープへデータを移行する。
図8は、データ移行後のテープ23上のデータ及びメタデータの例を示した図である。ここでも、図4と同様、テープ23上には、複数のラップが存在しており、白抜きの矢印がデータの書込み方向を、実線の矢印がテープ23の走行方向が逆転することをそれぞれ示している。また、この例では、アクセス頻度が高い方から、dm02、dm03、dm01、dm04であるとする。
ここでは、まず、ラップ#0に対して順方向に、dm-idがdm02のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1に対して逆方向に、dm-idがdm03のDMのうちメタデータが書き込まれている。その後、ラップ#2に対して再び順方向に、dm-idがdm04のDMのうちデータが書き込まれ、dm-idがdm04のDMが、メタデータ、データの順に書き込まれている。
即ち、データの移行後は、図4の例とは異なり、データ及びメタデータは、図3に示した論理的な関連付けごとに記録されている。これにより、データ及びメタデータをテープ23から順次に読み出していく場合に、不必要なテープ23の位置合わせをする必要がないので、アクセス性能が向上する。
【0058】
このようなデータの移行方法では、本実施の形態で算出されるアクセス頻度によってデータが配置されるので、真にアクセス頻度の高いデータへのアクセス時間が短縮される。
また、移行前のテープ23に分散して配置されていたデータ及びメタデータをある規則で(本実施の形態では、順に)再配置することにより、データ及びメタデータのアクセス性能を高めることができる。
ディジタルデータのアーカイブシステム等では、大量のデータを保管するための階層化ストレージの実装形式として、テープ23を2次、3次ストレージとして用いる形式を採用することがある。その場合、アーカイブといえどもアクセス頻度の高いデータは存在し、実際にアクセスされることが前提である。本実施の形態は、それらのデータへのアクセス性能の向上にも寄与するものである。
【0059】
ところで、上記では、移行元のテープ23に分散して配置されていたデータ及びメタデータをdm-idごとに順次に移行先のテープ23に記憶していった。しかしながら、移行先のテープ23における配置方法は、これに限られるものではない。
以下、他の配置方法について説明する。尚、ここで述べる配置方法は、データをテープ23上で再配置する際に、テープという媒体の特性を考えて、テープ23のマウント後に短時間でアクセスできる位置にアクセス頻度が高いデータを配置するものである。
【0060】
まず、テープ記憶装置の特性として、データを読み込むために次のような準備動作を行う点が挙げられる。
1.カートリッジを記憶装置にマウントする。
2.読み込むべきデータが記憶されている先頭の位置にテープ23の位置を合わせる。
即ち、カートリッジがマウントされた直後において、記憶装置のヘッドはテープ23の先頭に位置付けられることになる。従って、テープ23の先頭に近い位置に配置されたデータの方がテープ23の終端に近い位置に配置されたデータよりもアクセス速度が速いと言える。なぜなら、テープ23の終端の近くにデータが記録されている場合、テープ23をそこまで走らせて位置合わせをする必要があるからである。
【0061】
図9(a)に、LTO(Linear Tape-Open)規格に準拠したテープ23上での通常のデータの読み書きについて示す。
まず、矢印201で示すようにラップ#0に右方向にデータの読み書きを行った後、矢印202で示すようにテープ23の走行方向を逆転する。次に、ラップ#1に左方向にデータの読み書きを行った後、矢印203で示すようにテープ23の走行方向を逆転する。更に、ラップ#2に右方向にデータの読み書きを行った後、矢印204で示すようにテープ23の走行方向を逆転する。そして、最後は矢印205で示すようにラップ#55に左方向にデータの読み書きを行う。
【0062】
このように、LTOでは、テープ23上に複数定義されているラップと呼ばれるデータ記憶域をテープ23の先頭から終端まで往復しながら、データの読み書きを行う。順次読み書きを行う場合は、このようにラップ上を往復するが、テープ23の幅方向にヘッドを移動させてラップを切り替える機械的動作は短時間で終了するので、このようなLTOフォーマットにおいても、テープ23の先頭に近い位置の方がテープ23の終端に近い位置よりも短時間でアクセスできる。
従って、テープ23の先頭に近い側にアクセス頻度が高いデータを配置し、テープ23の終端に近い側にアクセス頻度が低いデータを配置するという配置方法が好ましい。ここで、テープ23の先頭は第1の端部の一例であり、テープ23の終端は第2の端部の一例である。
【0063】
また、テープ記憶装置によっては、セグメンテーションという機能が実装されているものがある。セグメンテーションとは、テープ23を複数のセグメントに分割し、最初のセグメントから順次データを書いていく手法である。ここで、セグメントは、長手方向の少なくとも1つの位置で分割することで形成された複数の領域の一例である。
図9(b)に、セグメンテーションを利用した場合のデータの読み書きについて示す。
まず、矢印211で示すようにラップ#0のセグメント#1の部分に右方向にデータの読み書きを行った後、矢印212で示すようにテープ23の走行方向を逆転する。次に、ラップ#1のセグメント#1の部分に左方向にデータの読み書きを行った後、矢印213で示すようにテープ23の走行方向を逆転する。更に、ラップ#2のセグメント#1の部分に右方向にデータの読み書きを行った後、矢印214で示すようにテープ23の走行方向を逆転する。そして、矢印215で示すようにラップ#55のセグメント#1の部分に左方向にデータの読み書きを行う。
【0064】
その後、矢印220で示すように、ヘッドの位置をラップ#0のセグメント#2の部分に移動する。そして、矢印221で示すようにラップ#0のセグメント#2の部分に右方向にデータの読み書きを行った後、矢印222で示すようにテープ23の走行方向を逆転する。次に、ラップ#1のセグメント#2の部分に左方向にデータの読み書きを行った後、矢印223で示すようにテープ23の走行方向を逆転する。更に、ラップ#2のセグメント#2の部分に右方向にデータの読み書きを行った後、矢印224で示すようにテープ23の走行方向を逆転する。そして、最後は矢印225で示すようにラップ#55のセグメント#2の部分に左方向にデータの読み書きを行う。
【0065】
このように、セグメント#1の方が、セグメント#2よりもアクセス速度が速い。3つ以上のセグメントを設けたとすると、一般に、テープ23の先頭に近いセグメントの方が、テープ23の終端に近いセグメントよりもアクセス速度が速いと言える。
従って、この特性を利用して、データをテープ23に移行する際に、アクセス頻度の高いデータ及びメタデータをテープ23の先頭に近いセグメントに配置し、アクセス頻度の低いデータ及びメタデータをテープ23の終端に近いセグメントに配置するのが好ましい。ここで、テープ23の先頭に近いセグメントは第1の領域の一例であり、テープ23の終端に近いセグメントは第2の領域の一例である。
【0066】
図10は、セグメンテーションを利用したデータ移行後のテープ23上のデータ及びメタデータの例を示した図である。ここでも、図4と同様、テープ23上には、複数のラップが存在しており、白抜きの矢印がデータの書込み方向を、実線の矢印がテープ23の走行方向が逆転することをそれぞれ示している。また、この例でも、アクセス頻度が高い方から、dm02、dm03、dm01、dm04であるとする。
ここでは、まず、ラップ#0のセグメント#1の部分に対して順方向に、dm-idがdm02のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1のセグメント#1の部分に対して逆方向に、dm-idがdm02のDMのうちのデータの残りの部分が書き込まれている。その後、ラップ#2のセグメント#1の部分に対して再び順方向に、dm-idがdm03のDMが、メタデータ、データの順に書き込まれている。尚、d-idがd3のデータに続きがある場合は、図示しないが、ラップ#3のセグメント#1の部分に書き込まれる。
【0067】
その後、ラップ#0のセグメント#2の部分に対して順方向に、dm-idがdm01のDMが、メタデータ、データの順に書き込まれている。次に、ラップ#1のセグメント#2の部分に対して逆方向に、dm-idがdm04のDMが、メタデータ、データの順に書き込まれている。
即ち、データの移行後は、図4の例とは異なり、データ及びメタデータは、図3に示した論理的な関連付けごとに記録されている。これにより、データ及びメタデータをテープ23から順次に読み込んでいく場合に、不必要なテープ23の位置合わせをする必要がないので、アクセス性能が向上する。
【0068】
尚、ここでは、データの移行先のテープ23を1つとしたが、複数のテープ23を移行先としてもよい。その場合は、1つ目のテープ23のセグメント#1を使い、それを使い切ったら2つ目のテープ23のセグメント#1を使い、それを使い切ったら3つ目のテープ23のセグメント#1を使い、これを移行先の全てのテープ23のセグメント#1を使い切るまで繰り返す。そして、移行先の全てのテープ23のセグメント#1を使い切ると、1つ目のテープ23から順にセグメント#2を使うようにするとよい。
【0069】
このように、移行先のテープ23を複数用意することによって、より大きな記憶空間を提供でき、アクセス性能が高いセグメント#1に書き込めるデータやメタデータの量を増やすことが可能となる。即ち、短時間でアクセス可能なデータ、メタデータの量が増えることになる。
また、この手法では、移行先のテープ23の本数とセグメント定義の仕方を変更することで、移行元のテープ23上のデータのアクセス頻度に応じた記憶空間の提供ができる。例えば、アクセス頻度の高いデータが少ない場合は、最初のセグメントをテープ23の先頭よりに定義すればよい。また、アクセス頻度の高いデータが多い場合は、移行先のテープ23を多くしたり、必要に応じて最初のセグメントを大きく定義したりすることが考えられる。更に、アクセス頻度にばらつきがある場合は、セグメントの数を増やして、頻度ごとにデータをグルーピングしてそれぞれのセグメントに書き込むようにすることが考えられる。
【0070】
このようなデータの移行方法では、本実施の形態で算出されるアクセス頻度によってデータが配置されるので、真にアクセス頻度の高いデータへ個別にアクセスが行われる場合のアクセス性能が向上する。
ディジタルデータのアーカイブシステム等では、大量のデータを保管するための階層化ストレージの実装形式として、テープ23を2次、3次ストレージとして用いる形式を採用することがある。その場合、アーカイブといえどもアクセス頻度の高いデータは存在し、実際にアクセスされることが前提である。本実施の形態は、それらのアーカイブされたデータが個別にアクセスされる状況下で、過去のアクセス頻度が高かったデータのアクセス性能の向上にも寄与するものである。
【0071】
尚、上記では、データ及びメタデータを読み出す場合のアクセス性能に着目して、データ及びメタデータの配置方法について考えてきた。しかしながら、データ及びメタデータを読み出す場合のアクセス性能に拘らない配置方法を採用してもよい。
【0072】
次に、これまでに述べてきたような動作を行うテープドライブ10について詳細に説明する。尚、ここでは、dmアクセスカウンタテーブルはカートリッジメモリ24に記憶されているものとする。また、図1では1つのカートリッジ20のみを装填可能なテープドライブ10を示したが、ここでは2つのカートリッジ20を装填可能なテープドライブ10を想定し、一方のカートリッジ20から他方のカートリッジ20へのデータの移行を、カートリッジ20を入れ替えることなく1つのテープドライブ10で行うことができるものとする。
【0073】
図11は、テープドライブ10のコントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部61と、バッファ管理部62と、チャネル入出力部63と、カートリッジメモリ入出力部(以下、「CM入出力部」という)64と、頻度算出部65と、移行制御部66と、ヘッド位置管理部67と、テープ走行管理部68とを備える。
【0074】
このうち、コマンド処理部61は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込むことを指示する同期コマンド、テープ23からデータを読み出すことを指示するReadコマンド等がある。
【0075】
バッファ管理部62は、コマンド処理部61がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部61が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部63に出力する。更に、コマンド処理部61がReadコマンドを受け取った場合は、対象となるデータがバッファ12内になければチャネル入出力部63に対してそのデータを読み出すように指示し、対象となるデータがバッファ12内にあればそのデータをコマンド処理部61を介してホスト200に返す。
【0076】
チャネル入出力部63は、バッファ管理部62がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ管理部62に出力したりする。
【0077】
CM入出力部64は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルにCMI/F19を介して情報を書き込んだり、dmアクセスカウンタテーブルからCMI/F19を介して情報を読み出したりする。本実施の形態では、第1の記録媒体に各データが書き込まれた後に第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、第1の記録媒体から各データが読み出された回数を示す第2の情報とを取得する取得部の一例として、また、第1の情報と第2の情報とを更新する更新部の一例として、CM入出力部64を設けている。
【0078】
頻度算出部65は、CM入出力部64が読み出した情報に基づいて、各DMに対するアクセス頻度を算出する。本実施の形態では、各データのアクセス頻度を把握する把握部の一例として、頻度算出部65を設けている。
移行制御部66は、頻度算出部65が算出したアクセス頻度に基づいて、データの移行を制御する。即ち、アクセス頻度が高いdm-idの順に、移行元のテープ23からデータ及びメタデータを読み出して移行先のテープ23に書き込むよう、バッファ管理部62に指示する。このように、アクセス頻度が高いdm-idに対応するデータ及びメタデータから順次移行先のテープ23に書き込むので、移行制御部66は、移行先のテープ23上のデータ及びメタデータの位置を決定していると言うことができる。つまり、本実施の形態では、第2の記録媒体における各データの記録位置を決定する決定部の一例として、移行制御部66を設けている。
【0079】
ヘッド位置管理部67は、テープ23に対する書込みヘッド14a及び読出しヘッド14bの位置をテープ23の幅方向へオフセットさせる信号をヘッド位置制御システム17に出力する。また、書込みヘッド14a及び読出しヘッド14bのテープ23上の幅方向における現在位置に関する情報を取得する。
テープ走行管理部68は、テープ23を順方向に走行させるための信号や、テープ23を逆方向に走行させるための信号をモータドライバ18に出力する。
【0080】
次に、本実施の形態におけるテープドライブ10の動作について詳細に説明する。
まず、ホスト200からWriteコマンドが送られてきた場合のテープドライブ10の動作について説明する。
ホスト200は、データとメタデータを関連付けるdm-idを伴うWriteコマンドをアーカイブ装置100に送ってくる。すると、アーカイブ装置100では、制御機構30が、このデータを識別するd-idと、このメタデータを識別するm-idとを生成し、dm-idとd-idとm-idとを関連付けてdm-aとして登録する。また、データとメタデータを書き込むカートリッジ20を決定し、d-idとm-idとカートリッジ20とを関連付けてdm-lとして登録し、そのカートリッジ20をテープドライブ10に装填するようアクセッサ40に指示する。そして、制御機構30は、dm-id、d-id、m-id、データ、メタデータを伴うWriteコマンドをテープドライブ10に送る。これにより、テープドライブ10の動作が開始する。
【0081】
図12は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。
コントローラ16では、まず、コマンド処理部61が、ホストI/F11を介してdm-id、d-id、m-id、データ、メタデータを伴うWriteコマンドを受け取る(ステップ601)。このとき、dm-id、d-id、m-id、データ、メタデータは、バッファ管理部62に渡され、バッファ管理部62によってバッファ12に蓄積される。
【0082】
次に、コントローラ16は、データとメタデータを、テープドライブ10に装填されたカートリッジ20のテープ23に書き込む(ステップ602)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して書込みヘッド14aのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、バッファ管理部62がバッファ12からデータ及びメタデータを読み出してチャネル入出力部63に渡し、チャネル入出力部63がチャネル13を介してデータ及びメタデータを書込みヘッド14aに出力する。
尚、このとき、チャネル入出力部63は、テープ23上のデータ及びメタデータの長手方向の記憶位置の情報をサーボヘッドからチャネル13を介して受け取り、ヘッド位置管理部67は、テープ23上のデータ及びメタデータの幅方向の記憶位置の情報をヘッド位置制御システム17から受け取る。そして、これらの記録位置の情報はバッファ管理部62に渡され、バッファ管理部62が、バッファ12から読み出したd-idとm-idとこれらの記録位置の情報をCM入出力部64に出力する。そして、CM入出力部64が、d-idとデータの記録位置との対応情報、及び、m-idとメタデータの記録位置との対応情報をCMI/F19を介してカートリッジメモリ24に書き込む。これにより、d-idをキーとしたデータの読出し、m-idをキーとしたメタデータの読出しが可能となる。
【0083】
その後、コントローラ16は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルにdm-idに対応するエントリを作成する(ステップ603)。
具体的には、バッファ管理部62がバッファ12からdm-idを読み出してCM入出力部64に渡し、CM入出力部64がdm-idを含むレコードをCMI/F19を介してカートリッジメモリ24に書き込む。
【0084】
次いで、ホスト200からReadコマンドが送られてきた場合のテープドライブ10の動作について説明する。尚、ここでは、ホスト200からデータ及びメタデータの読出し要求がある都度、読出し対象のカートリッジ20がテープドライブ10にマウントされるものとする。
ホスト200は、dm-idを伴うReadコマンドをアーカイブ装置100に送ってくる。すると、アーカイブ装置100では、制御機構30が、dm-idに関連付けられたd-idとm-idをdm-aに基づいて特定する。また、d-idとm-idに関連付けられたカートリッジ20をdm-lに基づいて特定し、そのカートリッジ20をテープドライブ10に装填するようアクセッサ40に指示する。そして、制御機構30は、dm-id、d-id、m-idを伴うReadコマンドをテープドライブ10に送る。これにより、テープドライブ10の動作が開始する。
【0085】
図13は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。
コントローラ16では、まず、コマンド処理部61が、ホストI/F11を介してdm-id、d-id、m-idを伴うReadコマンドを受け取る(ステップ621)。このとき、dm-id、d-id、m-idは、バッファ管理部62に渡される。
【0086】
次に、コントローラ16は、d-idに対応するデータと、m-idに対応するメタデータとを、テープドライブ10に装填されたカートリッジ20のテープ23から読み出す(ステップ622)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して読出しヘッド14bのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、読出しヘッド14bが読み出したデータ及びメタデータをチャネル入出力部63がチャネル13を介して取得してバッファ管理部62に渡し、バッファ管理部62がデータ及びメタデータをバッファ12に蓄積する。そして、バッファ12に蓄積されたデータ及びメタデータは、ホスト200に送信される。
【0087】
その後、コントローラ16は、カートリッジメモリ24に記憶されたdmアクセスカウンタテーブルの更新処理を行う。この更新処理は、CM入出力部64がカートリッジメモリ24からCMI/F19を介して自身のメモリ領域にdmアクセスカウンタテーブルを読み込むことにより開始する。
更新処理において、まず、CM入出力部64は、dmアクセスカウンタテーブルから1レコードを読み込む(ステップ623)。そして、読み込んだレコードに含まれるRam-countが8の倍数であるかどうかを判定する(ステップ624)。その結果、Ram-countが8の倍数であれば、今回の読出しマウントから8回を一単位とした新たな読出しマウントの単位が始まる。そこで、Dm-countに0を代入することによって初期化し、Dm-readfreqに右端に“00”を付加する(ステップ625)。一方、Ram-countが8の倍数でなければ、そのまま次の処理へ進む。
【0088】
次に、CM入出力部64は、読み込んだレコードに含まれるRam-countに1を加算する(ステップ626)。そして、読み込んだレコードに含まれるdm-idが、Readコマンドで指定されたdm-idと一致するかどうかを判定する(ステップ627)。その結果、dm-idが一致すれば、Dm-countに1を加算し、その結果に応じて、Dm-readfreqの右端の2ビットを更新する(ステップ628)。例えば、Dm-countの値とDm-readfreqの2ビットとの関係が図5に示したようなものであるとする。この場合、1を加算した後のDm-countが0であれば、Dm-readfreqの右端の2ビットが“00”となるように更新し、1を加算した後のDm-countが1又は2であれば、Dm-readfreqの右端の2ビットが“01”となるように更新し、1を加算した後のDm-countが3〜5であれば、Dm-readfreqの右端の2ビットが“10”となるように更新し、1を加算した後のDm-countが6〜8であれば、Dm-readfreqの右端の2ビットが“11”となるように更新する。尚、Dm-countの値に応じたDm-readfreqの更新の規則は、プログラムに直接コーディングしておいてもよいし、プログラム外部のテーブルに定義しておき、プログラムがテーブルを参照することで取得してもよい。
【0089】
その後、CM入出力部64は、dmアクセスカウンタテーブルから読み込んだレコードが最後のレコードであるかどうかを判定する(ステップ629)。そして、最後のレコードでなければ、次のレコードについて、ステップ623〜628の処理を繰り返す。また、最後のレコードであれば、処理を終了する。
【0090】
このようにしてdmアクセスカウンタテーブルが更新された後の任意の時点で、テープドライブ10は、データ移行に関する処理を行う。
図14は、このときのテープドライブ10のコントローラ16の動作例を示したフローチャートである。尚、ここでは、移行先のテープ23において、データ及びメタデータを図10に示したように配置することを前提に説明する。
【0091】
テープドライブ10では、まず、CM入出力部64がカートリッジメモリ24からCMI/F19を介してdmアクセスカウンタテーブルを読み込み、頻度算出部65に受け渡す(ステップ641)。
すると、頻度算出部65は、上述した第1の決定方法又は第2の決定方法を用いてdm-idごとのアクセス頻度を算出し、アクセス頻度が高い順にdmアクセスカウンタテーブルのレコードを並べ替え、並べ替え後のdmアクセスカウンタテーブルを移行制御部66に受け渡す(ステップ642)。
【0092】
これにより、移行制御部66は、一方のテープ23から他方のテープ23へデータを移行する。
即ち、まず、移行制御部66は、並べ替え後のdmアクセスカウンタテーブルから1レコードを読み込み、バッファ管理部62に伝える(ステップ643)。すると、バッファ管理部62は、読み込んだレコードに含まれるdm-idに対応するデータ及びメタデータを移行元のテープ23から読み出す(ステップ644)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して読出しヘッド14bのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、読出しヘッド14bが読み出したデータ及びメタデータをチャネル入出力部63がチャネル13を介して取得してバッファ管理部62に渡し、バッファ管理部62がデータ及びメタデータをバッファ12に蓄積する。尚、dm-idに対応するデータ及びメタデータを読み出す際のキーとなるd-id及びm-idは、例えば、制御機構30に問い合わせることによって特定するとよい。
【0093】
次に、バッファ管理部62は、データ及びメタデータを移行先のテープ23の現在のラップに書けるかどうか判定する(ステップ645)。具体的には、チャネル入出力部63が、テープ23上のデータ及びメタデータの長手方向の記憶位置の情報をサーボヘッドからチャネル13を介して受け取るので、その情報に基づいて判定する。
その結果、現在のラップに書けると判定すれば、そのままデータ及びメタデータを移行先のテープ23に書き込む(ステップ649)。
具体的には、バッファ管理部62から指示を受けたヘッド位置管理部67がヘッド位置制御システム17を制御して書込みヘッド14aのテープ23の幅方向における位置合わせを行うと共に、バッファ管理部62から指示を受けたテープ走行管理部68がモータドライバ18を制御してテープ23を走行させる。一方で、バッファ管理部62がバッファ12からデータ及びメタデータを読み出してチャネル入出力部63に渡し、チャネル入出力部63がチャネル13を介してデータ及びメタデータを書込みヘッド14aに出力する。
【0094】
一方、現在のラップに書けないと判定すれば、現在のラップが最後のラップであるかどうかを判定する(ステップ646)。具体的には、ヘッド位置管理部67が、テープ23上のデータ及びメタデータの幅方向の記憶位置の情報をヘッド位置制御システム17から受け取るので、その情報に基づいて判定する。
そして、現在のラップが最後のラップでなければ、次のラップに切り替えて(ステップ647)、データ及びメタデータを移行先のテープ23に書き込む(ステップ649)。尚、ラップの切り替えは、ヘッド位置管理部67がヘッド位置制御システム17を制御することで行われる。
また、現在のラップが最後のラップであれば、次のセグメントのラップ#1に切り替えて(ステップ648)、データ及びメタデータを移行先のテープ23に書き込む(ステップ649)。尚、セグメントの切り替えは、テープ走行管理部68がモータドライバ18を制御することで行われ、ラップの切り替えは、ヘッド位置管理部67がヘッド位置制御システム17を制御することで行われる。
【0095】
その後、移行制御部66は、dmアクセスカウンタテーブルから読み込んだレコードが最後のレコードであるかどうかを判定する(ステップ650)。そして、最後のレコードでなければ、次のレコードについて、ステップ643〜649の処理を繰り返す。また、最後のレコードであれば、処理を終了する。
【0096】
尚、この動作例では、同時に2つのカートリッジ20を装填可能なテープドライブ10にて、2つのカートリッジ20を入れ替えることなくデータの移行を行うようにした。しかしながら、このようなデータの移行の制御は、制御機構30で行ってもよい。その場合、1つのカートリッジ20のみ装填可能な2台のテープドライブ10を制御機構30が制御することで、データの移行を行うようにすればよい。
【0097】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0098】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【0099】
【図1】本発明の実施の形態が適用されるアーカイブ装置の構成を示したブロック図である。
【図2】本発明の実施の形態におけるdm-id、d-id、m-idの関連付けについて説明するための図である。
【図3】本発明の実施の形態におけるdm-id、d-id、m-idの関連付けの具体例を示した図である。
【図4】本発明の実施の形態でデータを移行する前にデータ及びメタデータがテープ上に分散配置された状態を示した図である。
【図5】本発明の実施の形態で用いるカウンタについて具体的に説明するための図である。
【図6】本発明の実施の形態で用いるdmアクセスカウンタテーブルの一例を示した図である。
【図7】本発明の実施の形態におけるカウンタの更新について具体的に説明するための図である。
【図8】本発明の実施の形態でデータを移行した後にデータ及びメタデータがテープ上にアクセス頻度順に配置された状態を示した図である。
【図9】テープにおけるアクセス頻度の速い部分と遅い部分について説明するための図である。
【図10】本発明の実施の形態でデータを移行した後にデータ及びメタデータがテープ上にアクセス頻度順に配置された状態の変形例を示した図である。
【図11】本発明の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図12】本発明の実施の形態におけるWriteコマンド受信時のコントローラの動作例を示したフローチャートである。
【図13】本発明の実施の形態におけるReadコマンド受信時のコントローラの動作例を示したフローチャートである。
【図14】本発明の実施の形態におけるデータ移行時のコントローラの動作例を示したフローチャートである。
【符号の説明】
【0100】
10…テープドライブ、11…ホストI/F、12…バッファ、13…チャネル、14a…書込みヘッド、14b…読出しヘッド、15…モータ、16…コントローラ、17…ヘッド位置制御システム、18…モータドライバ、19…CMI/F、20…カートリッジ、30…制御機構、40…アクセッサ、50…カートリッジスロット、100…アーカイブ装置、200…ホスト
【特許請求の範囲】
【請求項1】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置であって、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定する決定部と
を含む、装置。
【請求項2】
前記第1の記録媒体から特定のデータが読み出された場合に、各データについて、前記第1の情報を更新し、当該特定のデータについて、前記第2の情報を更新する更新部を更に含む、請求項1の装置。
【請求項3】
前記特定のデータは、主データと、当該主データの付加情報であるメタデータとを含み、
前記更新部は、前記第1の記録媒体から前記主データ及び前記メタデータの少なくとも何れか一方が読み出された場合に、前記特定のデータが読み出されたと判定する、請求項2の装置。
【請求項4】
前記第1の情報は、前記第1の記録媒体に各データが書き込まれた後に当該第1の記録媒体が記憶装置にマウントされた回数によって、当該第1の記録媒体に各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す、請求項1の装置。
【請求項5】
前記把握部は、前記第1の情報が示す回数に対する前記第2の情報が示す回数の比率を、前記アクセス頻度として把握する、請求項1の装置。
【請求項6】
前記把握部は、前記第1の情報が示す回数が所定の範囲にあるデータについて、前記第2の情報を用いて、前記アクセス頻度を把握する、請求項1の装置。
【請求項7】
前記第2の情報は、各データの読出しの履歴を複数のビット値で表す情報であって、前記第1の記録媒体からのM回のデータの読出しのうち当該各データが読み出された回数を、当該複数のビット値のうちN(N<M)個のビット値で表す、請求項1の装置。
【請求項8】
前記決定部は、前記アクセス頻度が高いデータが前記第2の記録媒体における第1の記録位置に記録され、かつ、前記アクセス頻度が低いデータが当該第2の記録媒体における当該第1の記録位置よりもデータの読出しに時間がかかる第2の記録位置に記録されるように、当該第2の記録媒体における各データの記録位置を決定する、請求項1の装置。
【請求項9】
前記第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始されるテープ媒体であり、
前記第2の記録位置は、前記第1の記録位置よりも前記第2の端部に近い位置である、請求項8の装置。
【請求項10】
前記第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始され、かつ、長手方向の少なくとも1つの位置で分割することで形成された複数の領域を有するテープ媒体であり、
前記第1の記録位置は、前記複数の領域のうちの第1の領域内の位置であり、
前記第2の記録位置は、前記複数の領域のうち、前記第1の領域よりも前記第2の端部に近い第2の領域内の位置である、請求項8の装置。
【請求項11】
記録媒体におけるデータの再配置を支援する装置であって、
前記記録媒体に記録された各データについて、当該記録媒体に当該各データが書き込まれた後に当該記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記記録媒体における各データの記録位置を決定する決定部と
を含む、装置。
【請求項12】
第1のテープ媒体に記録されたデータを第2のテープ媒体に移行する装置であって、
前記第1のテープ媒体に記録され、主データと、当該主データの付随情報を示すメタデータとを含む各データについて、当該第1のテープ媒体に当該各データが書き込まれた後に当該第1のテープ媒体が何れかのデータの読出しのためにテープドライブにマウントされた回数を示す第1の情報と、当該第1のテープ媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報が示す回数に対する前記第2の情報が示す回数の比率を、各データのアクセス頻度として把握する把握部と、
前記把握部により把握された前記アクセス頻度が高いデータから順に前記第2のテープ媒体に書き込む書込み部と
を含む、装置。
【請求項13】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する方法であって、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得するステップと、
取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握するステップと、
把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定するステップと
を含む、方法。
【請求項14】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定する決定部と
して機能させる、プログラム。
【請求項1】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置であって、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定する決定部と
を含む、装置。
【請求項2】
前記第1の記録媒体から特定のデータが読み出された場合に、各データについて、前記第1の情報を更新し、当該特定のデータについて、前記第2の情報を更新する更新部を更に含む、請求項1の装置。
【請求項3】
前記特定のデータは、主データと、当該主データの付加情報であるメタデータとを含み、
前記更新部は、前記第1の記録媒体から前記主データ及び前記メタデータの少なくとも何れか一方が読み出された場合に、前記特定のデータが読み出されたと判定する、請求項2の装置。
【請求項4】
前記第1の情報は、前記第1の記録媒体に各データが書き込まれた後に当該第1の記録媒体が記憶装置にマウントされた回数によって、当該第1の記録媒体に各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す、請求項1の装置。
【請求項5】
前記把握部は、前記第1の情報が示す回数に対する前記第2の情報が示す回数の比率を、前記アクセス頻度として把握する、請求項1の装置。
【請求項6】
前記把握部は、前記第1の情報が示す回数が所定の範囲にあるデータについて、前記第2の情報を用いて、前記アクセス頻度を把握する、請求項1の装置。
【請求項7】
前記第2の情報は、各データの読出しの履歴を複数のビット値で表す情報であって、前記第1の記録媒体からのM回のデータの読出しのうち当該各データが読み出された回数を、当該複数のビット値のうちN(N<M)個のビット値で表す、請求項1の装置。
【請求項8】
前記決定部は、前記アクセス頻度が高いデータが前記第2の記録媒体における第1の記録位置に記録され、かつ、前記アクセス頻度が低いデータが当該第2の記録媒体における当該第1の記録位置よりもデータの読出しに時間がかかる第2の記録位置に記録されるように、当該第2の記録媒体における各データの記録位置を決定する、請求項1の装置。
【請求項9】
前記第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始されるテープ媒体であり、
前記第2の記録位置は、前記第1の記録位置よりも前記第2の端部に近い位置である、請求項8の装置。
【請求項10】
前記第2の記録媒体は、第1の端部から第2の端部へ向けてデータの読出しが開始され、かつ、長手方向の少なくとも1つの位置で分割することで形成された複数の領域を有するテープ媒体であり、
前記第1の記録位置は、前記複数の領域のうちの第1の領域内の位置であり、
前記第2の記録位置は、前記複数の領域のうち、前記第1の領域よりも前記第2の端部に近い第2の領域内の位置である、請求項8の装置。
【請求項11】
記録媒体におけるデータの再配置を支援する装置であって、
前記記録媒体に記録された各データについて、当該記録媒体に当該各データが書き込まれた後に当該記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記記録媒体における各データの記録位置を決定する決定部と
を含む、装置。
【請求項12】
第1のテープ媒体に記録されたデータを第2のテープ媒体に移行する装置であって、
前記第1のテープ媒体に記録され、主データと、当該主データの付随情報を示すメタデータとを含む各データについて、当該第1のテープ媒体に当該各データが書き込まれた後に当該第1のテープ媒体が何れかのデータの読出しのためにテープドライブにマウントされた回数を示す第1の情報と、当該第1のテープ媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報が示す回数に対する前記第2の情報が示す回数の比率を、各データのアクセス頻度として把握する把握部と、
前記把握部により把握された前記アクセス頻度が高いデータから順に前記第2のテープ媒体に書き込む書込み部と
を含む、装置。
【請求項13】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する方法であって、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得するステップと、
取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握するステップと、
把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定するステップと
を含む、方法。
【請求項14】
第1の記録媒体に記録されたデータの第2の記録媒体への移行を支援する装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記第1の記録媒体に記録された各データについて、当該第1の記録媒体に当該各データが書き込まれた後に当該第1の記録媒体から何れかのデータが読み出された回数を示す第1の情報と、当該第1の記録媒体から当該各データが読み出された回数を示す第2の情報とを取得する取得部と、
前記取得部により取得された前記第1の情報と前記第2の情報とを用いて、各データのアクセス頻度を把握する把握部と、
前記把握部により把握された前記アクセス頻度に基づいて、前記第2の記録媒体における各データの記録位置を決定する決定部と
して機能させる、プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−152603(P2010−152603A)
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願番号】特願2008−329430(P2008−329430)
【出願日】平成20年12月25日(2008.12.25)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願日】平成20年12月25日(2008.12.25)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
[ Back to top ]