説明

テープ媒体にデータを書き込む装置及び方法

【課題】エラーに対する耐性を確保しつつ、テープ媒体への書込みのパフォーマンスを向上する。
【解決手段】テープドライブのコントローラ16において、CM入出力部44がテープフォーマットを認識し、テープ変数取得部45がテープフォーマットに対応するテープ変数を取得し、設定変数取得部46が設定変数を取得し、最小数算出部47が、バーストエラーに対する耐性を確保するために書き込むべきサブデータセットの最小数mをテープ変数と設定変数とを用いて算出する。コマンド処理部41が同期コマンドを受け取ると、バッファ管理部42が、バッファ内のデータを格納するn個のサブデータセットを生成し、nがmより小さければ、パディングしてm個のサブデータセットを書込みデータとし、nがm以上であれば、n個のサブデータセットを書込みデータとし、チャネル入出力部43が書込みデータをテープに書き込む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テープ媒体にデータを書き込む装置及び方法に関する。特に、本発明は、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて受信データをテープ媒体に書き込む装置及び方法に関する。
【背景技術】
【0002】
磁気テープ等のテープ媒体にデータを書き込むテープドライブでは、データを一旦バッファに蓄積しておき、所定のタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。このようなバッファからテープ媒体への書込みを、「書込みの同期」又は「バッファフラッシュ」という(以下では、単に「同期」という)。
ところで、テープ媒体を停止させずに同期を行った場合、先行する同期にて書き込まれたデータと、次の同期にて書き込まれたデータとの間に、長いギャップが生じる。その結果、テープ媒体の記録領域が無駄になってしまう。そのため、先行する同期にて書き込まれたデータの後にそれほど長いギャップを伴わずに次の同期にてデータが書き込まれるよう、バックヒッチを行う必要がある。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、書き込むべき位置まで戻る、という動作のことである。従って、このバックヒッチのために、同期に多くの時間が費やされるという状況が生じていた。
【0003】
そこで、かかる状況を回避するための技術として、RABF(Recursive Accumulating Backhitchless Flush)が提案されている(例えば、特許文献1、2参照)。
この特許文献1、2からも分かるように、RABFは次のような手法と捉えることができる。
即ち、まず、テープドライブが、同期要求を受けた際に、テープにまだ書かれていないバッファ内のデータを、テープ媒体の走行を継続させたまま、テープ媒体上に予約されている一時記録領域(ABFラップ)に書き出す。尚、この書出しは、先行する同期にて書き込まれたデータと次の同期にて書き込まれたデータとの間のギャップが問題とならないため、バックヒッチを行わないバッファフラッシュ(Backhitchless Flush)である。一方で、テープドライブは、データをバッファに蓄積し(Accumulate)、バッファ又は一時記録領域に空きがなくなった際に通常の記録領域(通常ラップ)に書き戻す(リライトする)動作を反復的に(Recursive)行う。
このように、RABFでは、同期を行う際に、次の同期に備えてバックヒッチを行うことが必要とならないため、同期に要する時間の短縮が図れる。特に、データ量に対する同期要求の頻度が高い場合において、大幅なパフォーマンス向上を実現するものである。
【0004】
一方、エンタープライズ向けテープドライブ(IBM3592等)やLTO規格に則ったテープドライブでは、ホストから送られてきた可変長のデータを再編成し、データセットという固定長の単位でテープ媒体にデータを書き込む。その際、通常、複数(例えば16本)のトラックに同時にデータを書き込む。つまり、各トラックには、データセットの内容が例えば1/16ずつ書き込まれる。また、データセットは、ホストから送られてきたデータ以外にエラー訂正符号等も含む。エラー訂正符号としては、書込み時や読込み時におけるバイト単位のランダムエラーを訂正可能なC1符号と、テープドライブの書込み端子やテープの傷等によるバーストエラーを訂正するC2符号との積符号が採用されている。更に、データセット内ではデータをインターリーブしている。つまり、データの配置をばらつかせている。こうすることにより、データセット内の何れかの場所の2割程度のデータが欠損しても、残されたデータから全てのデータを回復できるようにしている。
ところが、近年、記録密度の向上により単位データ当たりの記録長が短くなり、テープ媒体上の傷やゴミの影響によりデータセットの一部のデータを読み出せない事態が生じ易くなっている。そこで、読み出せないデータをエラー訂正符号を用いても回復できないような事態が発生することを防止するための対策の一つとして、データセットの容量が、世代が進むに従って徐々に大きくなっていく傾向にある。
【0005】
尚、公報記載の技術として、エラー訂正手段から外部バッファに訂正データを戻す際に、エラー訂正された一部のサブユニットのみを転送するものもある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第6856479号明細書
【特許文献2】米国特許第6865043号明細書
【特許文献3】国際公開第2006/070668号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、このようにデータセットの容量が大きくなってくると、トランザクションサイズ、つまり、ある同期から次の同期までの間にホストから書き込まれるデータ量がデータセットのサイズに比べて十分に小さい場合、データセットを書き込む時間がRABFのボトルネックとなる。具体的には、RABFでデータセットを書き込むのに要する時間の半分以上は、純粋にデータセットに含まれるビット数に比例することが知られている。例えば、トランザクションサイズが4KBの場合、残りの部分がパディングされた1つのデータセットがテープ媒体に書き込まれる。即ち、データセットのサイズが403KBの世代であれば、403KBのデータを書き込めば十分であったが、データセットのサイズが1.6MBの世代になると、1.6MBのデータがテープ媒体に書き込まれることになる。従って、データセットのサイズが1.6MBの世代において、データセットのサイズが403KBの世代におけるパフォーマンスを実現できないという問題が生じる。
そして、このような問題は、RABFだけでなく、通常の書込みにおいても生じる可能性がある。
尚、特許文献3の技術は、このような問題を解決するための有効な手段を提供するものではない。
【0008】
本発明の目的は、エラーに対する耐性を確保しつつ、テープ媒体への書込みのパフォーマンスを向上することにある。
【課題を解決するための手段】
【0009】
かかる目的のもと、本発明は、テープ媒体にデータを書き込む際に参照される情報を設定する装置であって、テープ媒体上で発生する不具合の影響を受けるテープ媒体上の領域のサイズを取得するサイズ取得部と、テープ媒体に書き込まれたデータの一部が読み出せなくてもデータの全体を回復できる場合の一部の全体に対する比率を取得する比率取得部と、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じてテープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、サイズ取得部により取得されたサイズと、比率取得部により取得された比率とを用いて、書込みデータの一部が不具合により読み出せなくても書込みデータの全体を回復できるように決定する決定部とを含む、装置を提供する。
【0010】
ここで、この装置は、同期命令を受け付ける受付部と、受付部が同期命令を受け付けた場合に、決定部により決定された個数のデータ断片よりも受信データが小さければ、受信データを含み個数のデータ断片からなる書込みデータを生成し、決定部により決定された個数のデータ断片よりも受信データが大きければ、受信データを含むのに最低限必要な個数のデータ断片からなる書込みデータを生成する生成部と、生成部により生成された書込みデータをテープ媒体に書き込む書込み部とを更に含む、ものであってよい。
また、この装置は、書込み部により書込みデータがテープ媒体に書き込まれた後にバックヒッチが行われないようにテープ媒体の走行を制御する走行制御部を更に含む、ものであってよい。
更に、この装置は、テープ媒体上のフォーマットの種別を認識する認識部を更に含み、比率取得部は、認識部により認識されたフォーマットの種別に応じた比率を取得する、ものであってよい。
【0011】
また、本発明は、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて受信データをテープ媒体に書き込む装置であって、同期命令に応じてテープ媒体に書き込まれる書込みデータの一部がテープ媒体上で発生する不具合により読み出せなくても書込みデータの全体を回復できるようにするための書込みデータを構成するデータ断片の最低限の個数を取得する個数取得部と、同期命令を受け付ける受付部と、受付部が同期命令を受け付けた場合に、個数取得部により取得された個数のデータ断片よりも受信データが小さければ、受信データを含み個数のデータ断片からなる書込みデータを生成し、個数取得部により取得された個数のデータ断片よりも受信データが大きければ、受信データを含むのに最低限必要な個数のデータ断片からなる書込みデータを生成する生成部と、生成部により生成された書込みデータをテープ媒体に書き込む書込み部とを含む、装置も提供する。
【0012】
ここで、この装置は、不具合の影響を受けるテープ媒体上の領域のサイズを取得するサイズ取得部と、テープ媒体に書き込まれたデータの一部が読み出せなくてもデータの全体を回復できる場合の一部の全体に対する比率を取得する比率取得部と、サイズ取得部により取得されたサイズと、比率取得部により取得された比率とを用いて、個数取得部により取得される個数を決定する決定部とを更に含む、ものであってよい。
【0013】
また、本発明は、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて受信データをテープ媒体に書き込む装置であって、テープ媒体上で発生する不具合の影響を受けるテープ媒体上の領域のサイズを取得するサイズ取得部と、テープ媒体に書き込まれたデータの一部が読み出せなくてもデータの全体を回復できる場合の一部の全体に対する比率を取得する比率取得部と、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じてテープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、サイズ取得部により取得されたサイズと、比率取得部により取得された比率とを用いて、書込みデータの一部が不具合により読み出せなくても書込みデータの全体を回復できるように決定する決定部と、同期命令を受け付ける受付部と、受付部が同期命令を受け付けた場合に、決定部により決定された個数のデータ断片よりも受信データが小さければ、受信データにパディングデータを付加することにより個数のデータ断片からなる書込みデータを生成し、決定部により決定された個数のデータ断片よりも受信データが大きければ、受信データを含むのに最低限必要な個数のデータ断片からなる書込みデータを生成する生成部と、生成部により生成された書込みデータをテープ媒体に書き込む書込み部とを含む、装置も提供する。
【0014】
更に、本発明は、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて受信データをテープ媒体に書き込む方法であって、同期命令に応じてテープ媒体に書き込まれる書込みデータの一部がテープ媒体上で発生する不具合により読み出せなくても書込みデータの全体を回復できるようにするための書込みデータを構成するデータ断片の最低限の個数を取得するステップと、同期命令を受け付けるステップと、同期命令を受け付けた場合に、取得された個数のデータ断片よりも受信データが小さければ、受信データを含み個数のデータ断片からなる書込みデータを生成し、取得された個数のデータ断片よりも受信データが大きければ、受信データを含むのに最低限必要な個数のデータ断片からなる書込みデータを生成するステップと、生成された書込みデータをテープ媒体に書き込むステップとを含む、方法も提供する。
【0015】
更にまた、本発明は、テープ媒体にデータを書き込む際に参照される情報を設定する装置としてコンピュータを機能させるプログラムであって、コンピュータを、テープ媒体上で発生する不具合の影響を受けるテープ媒体上の領域のサイズを取得するサイズ取得部と、テープ媒体に書き込まれたデータの一部が読み出せなくてもデータの全体を回復できる場合の一部の全体に対する比率を取得する比率取得部と、上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じてテープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、サイズ取得部により取得されたサイズと、比率取得部により取得された比率とを用いて、書込みデータの一部が不具合により読み出せなくても書込みデータの全体を回復できるように決定する決定部として機能させる、プログラムも提供する。
【発明の効果】
【0016】
本発明によれば、エラーに対する耐性を確保しつつ、テープ媒体への書込みのパフォーマンスを向上することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態が適用されるテープドライブの構成を示したブロック図である。
【図2】本発明の実施の形態と他の技術との効果の違いを数値で示した図である。
【図3】本発明の実施の形態と他の技術との効果の違いを模式的に示した図である。
【図4】本発明の実施の形態と他の技術との効果の違いを模式的に示した図である。
【図5】本発明の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図6】本発明の実施の形態のコントローラにおけるサブデータセットの最小数を決定する際の動作例を示したフローチャートである。
【図7】本発明の実施の形態のコントローラにおけるサブデータセットを書き込む際の動作例を示したフローチャートである。
【発明を実施するための形態】
【0018】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図1は、本実施の形態が適用されるテープドライブ10の構成例を示した図である。このテープドライブ10は、ホストインターフェイス(以下、「ホストI/F」という)11と、バッファ12と、チャネル13と、ヘッド14と、モータ15とを含む。また、コントローラ16と、ヘッド位置制御システム17と、モータドライバ18とを含む。更に、テープドライブ10には、テープカートリッジ20が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ20も図示している。このテープカートリッジ20は、リール21、22に巻かれたテープ23を含む。テープ23は、リール21、22の回転に伴い、リール21からリール22の方向へ、又は、リール22からリール21の方向へ、長手方向に移動する。尚、テープ23としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【0019】
また、テープカートリッジ20は、カートリッジメモリ24も含む。このカートリッジメモリ24は、例えば、テープ23上にどのようにデータが書かれたかの情報を記録する。そして、例えばRFインターフェイスを用いて非接触でテープ23に書かれたデータのインデックスやテープ23の使用状況等を調べることにより、データへの高速アクセスを可能としている。尚、図では、このRFインターフェイスのようなカートリッジメモリ24へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス(以下、「CMI/F」という)19として示している。
【0020】
ここで、ホストI/F11は、上位装置の一例であるホスト30との通信を行う。例えば、ホスト30から、テープ23へのデータの書込みを指示するコマンド、テープ23を目的の位置に移動させるコマンド、テープ23からのデータの読出しを指示するコマンドを受け取る。尚、このホストI/F11で用いる通信規格としては、SCSIが例示される。SCSIの場合、1つ目のコマンドは、Writeコマンドに相当し、2つ目のコマンドは、LocateコマンドやSpaceコマンドに相当し、3つ目のコマンドは、Readコマンドに相当する。また、ホストI/F11は、ホスト30に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【0021】
バッファ12は、テープ23に書き込むべきデータやテープ23から読み出されたデータを蓄積するメモリである。例えば、DRAM(Dynamic Random Access Memory)によって構成される。また、バッファ12は、複数のバッファセグメントからなり、各バッファセグメントが、テープ23に対する読み書きの単位であるデータセットを格納している。
チャネル13は、テープ23に書き込むべきデータをヘッド14に送ったり、テープ23から読み出されたデータをヘッド14から受け取ったりするために用いられる通信経路である。
ヘッド14は、テープ23が長手方向に移動するとき、テープ23に対して情報を書き込んだり、テープ23から情報を読み出したりする。
モータ15は、リール21、22を回転させる。尚、図では、1つの矩形でモータ15を表しているが、モータ15としては、リール21、22の各々に1つずつ、合計2個設けるのが好ましい。
【0022】
一方、コントローラ16は、テープドライブ10の全体を制御する。例えば、ホストI/F11で受け付けたコマンドに従って、データのテープ23への書込みやテープ23からの読出しを制御する。また、ヘッド位置制御システム17やモータドライバ18の制御も行う。
ヘッド位置制御システム17は、所望のラップを追跡するシステムである。ここで、ラップとは、テープ23上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド14を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム17で行う。
モータドライバ18は、モータ15を駆動する。尚、上述したように、モータ15を2個使用する場合であれば、モータドライバ18も2個設けられる。
CMI/F19は、例えば、RFリーダライタにより実現され、カートリッジメモリ24への情報の書込みや、カートリッジメモリ24からの情報の読出しを行う。
【0023】
本実施の形態では、かかる構成を有するテープドライブ10において、更新された情報を含むデータだけでなく、更新された情報を含まないデータの塊(例えばサブデータセット)も必要に応じて一緒に書き込むことにより、バーストエラーに対する耐性を確保する。
尚、如何なる場面におけるテープ媒体へのデータの書込みに対しても本実施の形態は適用可能であるが、以下では、最も好適な例として、RABFにおけるテープ媒体へのデータの書込みに本実施の形態を適用した場合について説明する。
【0024】
まず、本実施の形態のアルゴリズムについて述べる。
RABFでは、トランザクションサイズが小さい場合に、データセットの単位でデータをテープ媒体に書き込むとオーバーヘッドが大きくなる。一方、更新されたデータをサブデータセットの単位でテープ媒体に書き込むと、サブデータセットを小さく設定すればバーストエラーに対する耐性を確保できず、サブデータセットを大きく設定すればデータセットの単位でデータを書き込む場合と同様、オーバーヘッドが無視できなくなる。
そこで、本実施の形態では、サブデータセットを小さめに設定し、一度に(1回の同期時に)書き込むサブデータセットの最小数をトランザクションサイズによらず一定とする。
【0025】
具体的には、一度に書き込むサブデータセットの最小数m[sds]を、次の式を満たす最小の整数とする。
m>mdl*ld*not/csds/rr*fs
但し、各変数は以下のように定義されているとする。
mdl[m]:maximum defect length(回復することが期待されるテープ媒体上の傷の大きさの最大値)
ld[byte/m]:linear density(トラック当たりの記録線密度)
not:number of tracks(あるデータセットの書込みに用いられるトラックの本数)
csds[byte/sds]:capacity of sub dataset(サブデータセットの容量)
rr:recoverable ratio(C2符号によって回復できる部分の全体に対する最大限の比率である最大回復率)
fs:factor of safety(安全係数)
【0026】
次に、第3世代のエンタープライズ向けテープドライブ(以下、「エンタープライズ3」という)のフォーマットに本実施の形態を適用した場合の効果を、具体的な数値を用いて説明する。
まず、テープ媒体上に発生する傷の大きさは不定であるが、回復することが期待される傷の大きさの最大値は、エンタープライズ3の規約における追記時の制限事項等を考慮すると約3[mm]と考えるのが自然である。また、安全係数は2とする。
そして、エンタープライズ3のフォーマットに従い、トラック当たりの記録線密度を795[byte/mm]、トラックの本数を16[本]とする。また、エンタープライズ3のフォーマットでは、データセットが1616940[byte]であるが、1つのデータセットが64個のサブデータセットから構成されるものとし、サブデータセットの容量を25272[byte]とする。更に、エンタープライズ3のフォーマットに従い、64個のサブデータセットのうち10個のサブデータセットが失われてもC2符号によって全体を回復できるものとする。
【0027】
すると、RABFにおいて書き込むべきサブデータセットの最小数mは、以下の式から20となる。
m>3*795*16/25272/(20/128)*2=19.3
即ち、20個のサブデータセットを書き込めば、3mmまでの傷に対する耐性を確保することができると言える。
【0028】
ここで、本実施の形態の効果と他の技術の効果とを数値によって比較する。
図2は、本実施の形態と他の技術の効果の違いを数値で示した図である。
尚、図中、従来例は、「背景技術」の項で述べた、RABF中にデータセット単位で書き込む技術を指す。また、比較例は、RABF中に更新されたサブデータセットのみを書き込む技術を指す。但し、エラーに対する耐性を確保するため、20個のサブデータセットを新サブデータセットと定義し、新サブデータセット単位でデータを書き込むこととしている。そして、発明例が、本実施の形態に対応する。
【0029】
また、図では、トランザクションサイズごとに、従来例で同期を行う場合の所要時間を「100」とし、比較例及び発明例で同期を行う場合の所要時間としては、従来例の所要時間に対する相対所要時間を示している。
そして、現在、RABFにおいて同期時に1つのデータセットを書き込む場合、同期処理の所要時間における実際にテープ媒体にデータセットを書き込む処理の所要時間の割合は約50%であることが知られている。残りの時間は、空き領域のパディングやエラー訂正符号の付加等に費やされている。従って、ここでは、従来例における所要時間「100」を、実際にテープ媒体にデータセットを書き込む処理以外の処理の所要時間である第1項の「50」と、実際にテープ媒体にデータセットを書き込む処理の所要時間である第2項の「50」とに分け、第2項の「50」がどの程度短縮されるかを考察している。
【0030】
この図から、本実施の形態では、トランザクションサイズがデータセットの容量に比べて十分に小さい場合(トランザクションサイズが4096バイトの場合)、データセット単位でデータを書き込む従来例と比較して約65%の時間で同期処理を完了できることが分かる。
また、本実施の形態と比較例とを比べると、トランザクションサイズが4096バイトの場合は差が出ないものの、トランザクションサイズが1010882バイトの場合は、本実施の形態の方が、約15%所要時間を短縮できることが分かる。
つまり、本実施の形態では、テープ媒体に書き込むデータの単位として小容量のサブデータセットを採用しつつも、更新された情報を持たないサブデータセットも必要に応じて一緒に書き込むようにしている。これによって、トランザクションサイズによらず一度に書き込むべき最低限のデータ量を維持しており、このことはRABFのパフォーマンスの向上に効果的であると言える。
【0031】
尚、図2の比較例の場合、実際には64の約数の中で20以上の最小の数である32を採用し、32個のサブデータセットを新サブデータセットと定義するのが自然であるが、新サブデータセットをどのように定義したとしても本実施の形態の優位性は揺らがない。
【0032】
また、本実施の形態の効果と他の技術の効果とを、テープ媒体に書き込まれるデータを模式的に示した図によって比較する。
図3は、トランザクションサイズが4096バイトである場合において同期時にテープ媒体に書き込まれるデータについて示したものである。左から順に、1回目の同期、2回目の同期、3回目の同期で書き込まれたデータを示している。また、図中、「ds」はデータセットを、「sds」はサブデータセットを示している。
【0033】
(a)は、従来例において同期時にテープ媒体に書き込まれたデータについて示したものである。従来例では、ホストから送られたデータ以外の部分を、斜線ハッチングで示したようにパディングすることでデータセットを構成し、このデータセットを単位としてデータを書き込んでいる。図では、あるデータセットにサブデータセットA,B,Cが溜まっており、データセット単位で書き込んでいる。従って、2回目の同期時には更新された情報を含むサブデータセットBだけでなく既に書き込んだサブデータセットAも一緒にテープ媒体に書き込むようになっており、3回目の同期時には更新された情報を含むサブデータセットCだけでなく既に書き込んだサブデータセットA,Bも一緒にテープ媒体に書き込むようになっている。
【0034】
(b)は、比較例において同期時にテープ媒体に書き込まれたデータについて示したものである。比較例では、ホストから送られたデータ以外の部分を、斜線ハッチングで示したようにパディングすることで新サブデータセット(サブデータセット20個分)を構成し、この新サブデータセットを単位としてデータを書き込んでいる。図では、データセットを構成するサブデータセットのうち1番目のサブデータセットから20番目のサブデータセットまでを毎回書き込んでいる。従って、2回目の同期時には更新された情報を含むサブデータセットBだけでなく既に書き込んだサブデータセットAも一緒にテープ媒体に書き込むようになっており、3回目の同期時には更新された情報を含むサブデータセットCだけでなく既に書き込んだサブデータセットA,Bも一緒にテープ媒体に書き込むようになっている。尚、比較例としては、サブデータセット20個分を新サブデータセットと定義せずに、更新されたサブデータセットのみをテープ媒体に書き込む例も考えられるが、この例ではエラーに対する耐性が極めて低くなるので、図示していない。
【0035】
(c)は、発明例において同期時にテープ媒体に書き込まれたデータについて示したものである。発明例では、ホストから送られたデータ以外の部分を、斜線ハッチングで示したようにパディングすることで最低限書き込むべき個数のサブデータセット(上記の計算によればサブデータセット20個分)を構成し、この最低限書き込むべき個数のサブデータセットを単位としてデータを書き込んでいる。図では、データセットを構成するサブデータセットのうち1番目のサブデータセットから20番目のサブデータセットまでを毎回書き込んでいる。従って、2回目の同期時には更新された情報を含むサブデータセットBだけでなく既に書き込んだサブデータセットAも一緒にテープ媒体に書き込むようになっており、3回目の同期時には更新された情報を含むサブデータセットCだけでなく既に書き込んだサブデータセットA,Bも一緒にテープ媒体に書き込むようになっている。
【0036】
図4は、トランザクションサイズが505442バイトである場合において同期時にテープ媒体に書き込まれるデータについて示したものである。左から順に、1回目の同期、2回目の同期、3回目の同期で書き込まれたデータを示している。また、図中、「ds」はデータセットを、「sds」はサブデータセットを示している。
【0037】
(a)は、従来例において同期時にテープ媒体に書き込まれたデータについて示したものである。従来例では、ホストから送られたデータ以外の部分を、斜線ハッチングで示したようにパディングすることでデータセットを構成し、このデータセットを単位としてデータを書き込んでいる。図では、あるデータセットにサブデータセットA,B,Cが溜まっており、データセット単位で書き込んでいる。従って、2回目の同期時には更新された情報を含むサブデータセットBだけでなく既に書き込んだサブデータセットAも一緒にテープ媒体に書き込むようになっており、3回目の同期時には更新された情報を含むサブデータセットCだけでなく既に書き込んだサブデータセットA,Bも一緒にテープ媒体に書き込むようになっている。
【0038】
(b)は、比較例において同期時にテープ媒体に書き込まれたデータについて示したものである。比較例では、ホストから送られたデータ以外の部分を、斜線ハッチングで示したようにパディングすることで新サブデータセット2個分(サブデータセット40個分)を構成し、この新サブデータセット2個分を単位としてデータを書き込んでいる。図では、1回目の同期時に、データセットを構成するサブデータセットのうち1番目のサブデータセットから40番目のサブデータセットまでを書き込み、2回目の同期時に、データセットを構成するサブデータセットのうち22番目のサブデータセットから61番目のサブデータセットまでを書き込む、といった書き込みを行っている。従って、同期時には更新された情報を含むサブデータセットのみをテープ媒体に書き込むようになっている。
【0039】
(c)は、発明例において同期時にテープ媒体に書き込まれたデータについて示したものである。発明例では、ホストから送られた505442バイトを格納するのに最低限必要な個数のサブデータセット(サブデータセット21個分)を構成し、この最低限必要な個数のサブデータセットを単位としてデータを書き込んでいる。図では、1回目の同期時に、データセットを構成するサブデータセットのうち1番目のサブデータセットから21番目のサブデータセットまでを書き込み、2回目の同期時に、データセットを構成するサブデータセットのうち22番目のサブデータセットから42番目のサブデータセットまでを書き込む、といった書き込みを行っている。従って、同期時には更新された情報を含むサブデータセットのみをテープ媒体に書き込むようになっている。
【0040】
次に、このような動作を実現するためのコントローラ16の機能構成について説明する。
図5は、コントローラ16の機能構成例を示したブロック図である。
図示するように、コントローラ16は、コマンド処理部41と、バッファ管理部42と、チャネル入出力部43と、カートリッジメモリ入出力部(以下、「CM入出力部」という)44と、テープ変数取得部45と、設定変数取得部46と、最小数算出部47と、動作信号出力部48とを備える。
【0041】
このうち、コマンド処理部41は、ホストI/F11からコマンドを受け取る。ここで、コマンドとしては、例えば、バッファ12にデータを格納することを指示するWriteコマンド、バッファ12に格納されたデータをテープ23に書き込む同期コマンド(WriteFMコマンド等)がある。本実施の形態では、同期命令の一例として、同期コマンドを用いており、同期命令を受け付ける受付部の一例として、コマンド処理部41を設けている。
バッファ管理部42は、コマンド処理部41がWriteコマンドを受け取った場合は、データをバッファ12内に用意する。また、コマンド処理部41が同期コマンドを受け取った場合は、データをバッファ12から読み出してチャネル入出力部43に出力する。本実施の形態では、同期命令に応じてテープ媒体に書き込まれる書込みデータを生成する生成部の一例として、バッファ管理部42を設けている。
チャネル入出力部43は、バッファ管理部42がバッファ12から読み出したデータをチャネル13に出力したり、チャネル13から受け取ったデータをバッファ12に格納したりする。本実施の形態では、書込みデータを書き込む書込み部の一例として、チャネル入出力部43を設けている。
【0042】
CM入出力部44は、カートリッジメモリ24に記憶された情報を取得する。ここで、カートリッジメモリ24に記憶された情報としては、テープ23のフォーマットに関する情報がある。また、CM入出力部44は、カートリッジメモリ24に対して記憶させる情報を送出する。本実施の形態では、テープ媒体上のフォーマットの種別を認識する認識部の一例として、CM入出力部44を設けている。
【0043】
テープ変数取得部45は、CM入出力部44が取得したテープ23のフォーマットに関する情報に基づいて、テープ23に関する変数(以下、「テープ変数」という)を取得する。ここで、テープ変数としては、記録線密度ld[byte/m]、トラック本数not、サブデータセットの容量csds[byte]、最大回復率rrがある。本実施の形態では、データの一部が読み出せなくてもデータの全体を回復できる場合の一部の全体に対する比率の一例として、最大回復率rrを用いており、比率を取得する比率取得部の一例として、テープ変数取得部45を設けている。
設定変数取得部46は、テープドライブ10に設定された変数(以下、「設定変数」という)を取得する。ここで、設定変数としては、傷の最大値mdl[m]、安全率fsがある。本実施の形態では、不具合の一例として、テープ23上の傷を用いており、不具合の影響を受けるテープ媒体上の領域のサイズの一例として、傷の最大値mdl[m]を用いており、サイズを取得するサイズ取得部の一例として、設定変数取得部46を設けている。
【0044】
最小数算出部47は、テープ変数取得部45が取得したテープ変数と、設定変数取得部46が取得した設定変数とを用いて、同期コマンドに応じて書き込むべきサブデータセットの最小数mを算出する。本実施の形態では、書込みデータを構成するデータ断片の一例として、サブデータセットを用いており、データ断片の最低限の個数の一例としてサブデータセットの最小数mを用いており、個数を決定する決定部の一例として、最小数算出部47を設けている。
動作信号出力部48は、ヘッド位置制御システム17に対してラップを切り替えるように指示する信号を出力し、モータドライバ18に対してテープ23を走行させるように指示する信号を出力する。本実施の形態では、テープ媒体の走行を制御する走行制御部の一例として、動作信号出力部48を設けている。
【0045】
次に、コントローラ16の動作について説明する。
図6は、コントローラ16においてサブデータセットの最小数mを決定する際の動作例を示したフローチャートである。この動作例は、新たなテープカートリッジ20が装填されたときや、テープカートリッジ20が装填された状態でそのテープ23のフォーマットが変換されたときに開始するものとする。
【0046】
コントローラ16では、まず、CM入出力部44がテープ23のフォーマットを示す情報を取得する(ステップ401)。テープドライブ10がエンタープライズ向けテープドライブである場合やLTO規格に則ったテープドライブである場合は、これらの世代によってフォーマットが特定されるので、世代を特定する情報を取得すればよい。
このように世代を特定する情報が取得されると、テープ変数取得部45は、テープ変数として、記録線密度ld[byte/m]、トラック本数not、サブデータセットの容量csds[byte]、最大回復率rrを取得する(ステップ402)。この場合、例えば世代とこれらの変数の値との対応情報を図示しないメモリに予め記憶しておき、ステップ401で認識した世代に対応する変数の値をこの対応情報を参照して取得するとよい。
【0047】
一方、設定変数取得部46は、設定変数として、傷の最大値mdl[m]、安全率fsを取得する(ステップ403)。ここで、設定変数は、テープドライブ10の出荷前に既に設定されているものであってもよいし、テープドライブ10の出荷後にユーザが設定したものであってもよい。
【0048】
これにより、最小数算出部47は、次の式を満たす最小の整数を、サブデータセットの最小数mとして求める(ステップ404)。
m>mdl*ld*not/csds/rr*fs
そして、求めた最小数mを図示しないメモリに記憶する(ステップ405)。
【0049】
図7は、コントローラ16においてサブデータセットをテープ23に書き込む際の動作例を示したフローチャートである。この動作例は、バッファ12にデータが蓄積された状態でコマンド処理部41がホスト30から同期コマンドを受信したときに開始するものとする。尚、ここでは、説明を簡単にするため、バッファ12には前回の同期後に更新された更新データのみが蓄積されているものとする。
【0050】
コントローラ16では、まず、バッファ管理部42が、ステップ405で図示しないメモリに記憶されたサブデータセットの最小数mを読み出す(ステップ421)。
また、バッファ12に蓄積された更新データを格納するサブデータセットの数nを求め、更新データを格納するn個のサブデータセットを生成する(ステップ422)。
そして、バッファ管理部42は、ステップ422で生成したサブデータセットの数nが、ステップ421で算出されたサブデータセットの最小数mよりも小さいかどうかを判定する(ステップ423)。
【0051】
その結果、サブデータセットの数nがサブデータセットの最小数mよりも小さいと判定すれば、バッファ管理部42は、ステップ422で生成したn個のサブデータセットにパディングデータを含むサブデータセットを付加することにより、m個のサブデータセットを生成する(ステップ424)。
その後、m個のサブデータセットはチャネル入出力部43に渡され、チャネル入出力部43が、m個のサブデータセットをテープ23上のRABF用の一時記憶領域に書き込む(ステップ425)。具体的には、バッファ管理部42からの指示により、動作信号出力部48が、一時記憶領域を含むラップへのラップ切り替えを指示する信号をヘッド位置制御システム17に出力し、m個のサブデータセットが一時記憶領域に書き込まれた後にバックヒッチレスのテープ走行を指示する信号をモータドライバ18に出力する。
【0052】
一方、サブデータセットの数nがサブデータセットの最小数m以上であると判定すれば、ステップ422で生成されたn個のサブデータセットはチャネル入出力部43に渡され、チャネル入出力部43が、n個のサブデータセットをテープ23上のRABF用の一時記憶領域に書き込む(ステップ425)。具体的には、バッファ管理部42からの指示により、動作信号出力部48が、一時記憶領域を含むラップへのラップ切り替えを指示する信号をヘッド位置制御システム17に出力し、n個のサブデータセットが一時記憶領域に書き込まれた後にバックヒッチレスのテープ走行を指示する信号をモータドライバ18に出力する。
【0053】
以上により、本実施の形態についての説明を終了する。
このように、本実施の形態では、更新された情報を含むデータを、データセットにしろサブデータセットにしろ固定された単位でテープ媒体に書き込むのではなく、バーストエラーに対する耐性を確保するための最低限のサブデータセット数以上の必要なサブデータセットだけ書き込むようにした。これにより、バーストエラーに対する耐性を確保しつつ、RABFにおける書込みのパフォーマンスを向上できるようになった。
【0054】
尚、本実施の形態では、サブデータセットの最小数mを「m>mdl*ld*not/csds/rr*fs」という式によって決定したが、決定方法はこれには限らない。傷の最大値mdl[m]と最大回復率rrとを用いて、テープ媒体に書き込まれたデータの一部が傷やゴミによって読み出せなくてもデータの全体を回復できるように決定する方法であれば、如何なる決定方法を採用してもよい。
【0055】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0056】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【0057】
10…テープドライブ、11…ホストI/F、12…バッファ、13…チャネル、14…ヘッド、15…モータ、16…コントローラ、17…ヘッド位置制御システム、18…モータドライバ、19…CMI/F、20…テープカートリッジ、21,22…リール、23…テープ、24…カートリッジメモリ、41…コマンド処理部、42…バッファ管理部、43…チャネル入出力部、44…CM入出力部、45…テープ変数取得部、46…設定変数取得部、47…最小数算出部、48…動作信号出力部

【特許請求の範囲】
【請求項1】
テープ媒体にデータを書き込む際に参照される情報を設定する装置であって、
前記テープ媒体上で発生する不具合の影響を受ける当該テープ媒体上の領域のサイズを取得するサイズ取得部と、
前記テープ媒体に書き込まれたデータの一部が読み出せなくても当該データの全体を回復できる場合の当該一部の当該全体に対する比率を取得する比率取得部と、
上位装置から受信した受信データを前記テープ媒体に書き込むことを命令する同期命令に応じて当該テープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、前記サイズ取得部により取得された前記サイズと、前記比率取得部により取得された前記比率とを用いて、当該書込みデータの一部が前記不具合により読み出せなくても当該書込みデータの全体を回復できるように決定する決定部と
を含む、装置。
【請求項2】
前記同期命令を受け付ける受付部と、
前記受付部が前記同期命令を受け付けた場合に、前記決定部により決定された前記個数の前記データ断片よりも前記受信データが小さければ、当該受信データを含み当該個数の当該データ断片からなる前記書込みデータを生成し、前記決定部により決定された前記個数の前記データ断片よりも前記受信データが大きければ、当該受信データを含むのに最低限必要な個数の当該データ断片からなる前記書込みデータを生成する生成部と、
前記生成部により生成された前記書込みデータを前記テープ媒体に書き込む書込み部と
を更に含む、請求項1の装置。
【請求項3】
前記書込み部により前記書込みデータが前記テープ媒体に書き込まれた後にバックヒッチが行われないように当該テープ媒体の走行を制御する走行制御部を更に含む、請求項2の装置。
【請求項4】
前記テープ媒体上のフォーマットの種別を認識する認識部を更に含み、
前記比率取得部は、前記認識部により認識された前記フォーマットの種別に応じた前記比率を取得する、請求項1乃至3の何れかの装置。
【請求項5】
上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて当該受信データを当該テープ媒体に書き込む装置であって、
前記同期命令に応じて前記テープ媒体に書き込まれる書込みデータの一部が当該テープ媒体上で発生する不具合により読み出せなくても当該書込みデータの全体を回復できるようにするための当該書込みデータを構成するデータ断片の最低限の個数を取得する個数取得部と、
前記同期命令を受け付ける受付部と、
前記受付部が前記同期命令を受け付けた場合に、前記個数取得部により取得された前記個数の前記データ断片よりも前記受信データが小さければ、当該受信データを含み当該個数の当該データ断片からなる前記書込みデータを生成し、前記個数取得部により取得された前記個数の前記データ断片よりも前記受信データが大きければ、当該受信データを含むのに最低限必要な個数の当該データ断片からなる前記書込みデータを生成する生成部と、
前記生成部により生成された前記書込みデータを前記テープ媒体に書き込む書込み部と
を含む、装置。
【請求項6】
前記不具合の影響を受ける前記テープ媒体上の領域のサイズを取得するサイズ取得部と、
前記テープ媒体に書き込まれたデータの一部が読み出せなくても当該データの全体を回復できる場合の当該一部の当該全体に対する比率を取得する比率取得部と、
前記サイズ取得部により取得された前記サイズと、前記比率取得部により取得された前記比率とを用いて、前記個数取得部により取得される前記個数を決定する決定部と
を更に含む、請求項5の装置。
【請求項7】
上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて当該受信データを当該テープ媒体に書き込む装置であって、
前記テープ媒体上で発生する不具合の影響を受ける当該テープ媒体上の領域のサイズを取得するサイズ取得部と、
前記テープ媒体に書き込まれたデータの一部が読み出せなくても当該データの全体を回復できる場合の当該一部の当該全体に対する比率を取得する比率取得部と、
上位装置から受信した受信データを前記テープ媒体に書き込むことを命令する同期命令に応じて当該テープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、前記サイズ取得部により取得された前記サイズと、前記比率取得部により取得された前記比率とを用いて、当該書込みデータの一部が前記不具合により読み出せなくても当該書込みデータの全体を回復できるように決定する決定部と、
前記同期命令を受け付ける受付部と、
前記受付部が前記同期命令を受け付けた場合に、前記決定部により決定された前記個数の前記データ断片よりも前記受信データが小さければ、当該受信データにパディングデータを付加することにより当該個数の当該データ断片からなる前記書込みデータを生成し、前記決定部により決定された前記個数の前記データ断片よりも前記受信データが大きければ、当該受信データを含むのに最低限必要な個数の当該データ断片からなる前記書込みデータを生成する生成部と、
前記生成部により生成された前記書込みデータを前記テープ媒体に書き込む書込み部と
を含む、装置。
【請求項8】
上位装置から受信した受信データをテープ媒体に書き込むことを命令する同期命令に応じて当該受信データを当該テープ媒体に書き込む方法であって、
前記同期命令に応じて前記テープ媒体に書き込まれる書込みデータの一部が当該テープ媒体上で発生する不具合により読み出せなくても当該書込みデータの全体を回復できるようにするための当該書込みデータを構成するデータ断片の最低限の個数を取得するステップと、
前記同期命令を受け付けるステップと、
前記同期命令を受け付けた場合に、取得された前記個数の前記データ断片よりも前記受信データが小さければ、当該受信データを含み当該個数の当該データ断片からなる前記書込みデータを生成し、取得された前記個数の前記データ断片よりも前記受信データが大きければ、当該受信データを含むのに最低限必要な個数の当該データ断片からなる前記書込みデータを生成するステップと、
生成された前記書込みデータを前記テープ媒体に書き込むステップと
を含む、方法。
【請求項9】
テープ媒体にデータを書き込む際に参照される情報を設定する装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記テープ媒体上で発生する不具合の影響を受ける当該テープ媒体上の領域のサイズを取得するサイズ取得部と、
前記テープ媒体に書き込まれたデータの一部が読み出せなくても当該データの全体を回復できる場合の当該一部の当該全体に対する比率を取得する比率取得部と、
上位装置から受信した受信データを前記テープ媒体に書き込むことを命令する同期命令に応じて当該テープ媒体に書き込まれる書込みデータを構成するデータ断片の最低限の個数を、前記サイズ取得部により取得された前記サイズと、前記比率取得部により取得された前記比率とを用いて、当該書込みデータの一部が前記不具合により読み出せなくても当該書込みデータの全体を回復できるように決定する決定部と
して機能させる、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−14778(P2012−14778A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−149607(P2010−149607)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】