テープドライブを制御する装置、方法、及びプログラム
【課題】 テープ上の適切な位置にLEOTを設定する。
【解決手段】 テープに書き込むべきデータセットをホストから受け取るホストI/F部31と、受け取ったデータセットをバッファメモリ33に格納するデータ格納部32と、バッファメモリ33に格納されたデータを取り出してヘッドに転送するデータ転送部34と、バッファメモリ33に格納されているデータセットの数を管理するバッファ管理部35と、テープ上の現在の書込み位置の情報を管理する現在位置管理部36と、バッファ管理部35が管理する情報と現在位置管理部36が管理する情報とを照合することによりLEOTをホストに通知すべきかどうか判定するLEOT決定部37とを備える。
【解決手段】 テープに書き込むべきデータセットをホストから受け取るホストI/F部31と、受け取ったデータセットをバッファメモリ33に格納するデータ格納部32と、バッファメモリ33に格納されたデータを取り出してヘッドに転送するデータ転送部34と、バッファメモリ33に格納されているデータセットの数を管理するバッファ管理部35と、テープ上の現在の書込み位置の情報を管理する現在位置管理部36と、バッファ管理部35が管理する情報と現在位置管理部36が管理する情報とを照合することによりLEOTをホストに通知すべきかどうか判定するLEOT決定部37とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テープ媒体を駆動するテープドライブを制御する装置等に関し、より詳しくは、テープの終端に近づいた際にその旨を通知する機能を有する装置等に関する。
【背景技術】
【0002】
テープに対する書込み/読出しを行うテープドライブは、通常、テープの終端が近づくとその事実を通知する機能を有する。テープの終端が近づいている旨は、例えば、ホストコンピュータ(以下、「ホスト」という)からのWriteコマンドに対するエラーとして、ホストに通知される。尚、本明細書では、テープの終端をPEOT(Physical End of Tape)と呼び、PEOTの接近を通知するテープ上の位置をLEOT(Logical End of Tape)と呼ぶ。
【0003】
ところで、このような通知を行った場合、テープドライブは、それまでにホストから送られた全てのデータをテープ上に記録しなければならない。
一般に、テープドライブは、そのパフォーマンスの向上のため、大きなバッファメモリを持っている。ホストから送られたデータは、このバッファメモリに一時的に格納され、その後、テープに記録されることとなる。従って、PEOTの接近を通知する時点で、バッファメモリに格納されている全てのデータを記録できるだけの余裕がテープ上に残っていなければならない。
【0004】
従来、このような余裕として、一律にバッファサイズの容量を採用していた。即ち、PEOTよりも前に、バッファサイズの容量分のデータを記録できるだけの余裕を持たせて、LEOTを決定していた(例えば、特許文献1参照)。
【0005】
【特許文献1】特開平8−63945号公報(第7−8頁、第2図)
【発明の開示】
【発明が解決しようとする課題】
【0006】
このように、従来技術においては、一律な余裕を持たせてLEOTを決定していた。例えば、特許文献1では、PEOTよりも約15m前の位置をLEOTとして決定している。
しかしながら、このように一律にLEOTを決定したのでは、テープ上の記録領域を無駄にしてしまう可能性があるという問題点が生ずる。
特許文献1では、15mの余裕を持たせているが、バッファメモリが大きくなれば、その余裕分も増えることとなってしまうからである。しかも、バッファメモリに応じた余裕分を持たせてLEOTを決定しても、バッファメモリ内に書き込むべきデータが少ししかなければ、テープの容量は一層無駄になってしまうのである。
【0007】
この問題点を、図11(a)を参照して説明する。
図11(a)では、バッファメモリが256データセットの容量を持ち、1データセット当たりのテープ長が70mmであるとしている。この場合、バッファメモリ内の全てのデータセットを記録するとした場合のテープ長は、70mm×256=約18mとなる。そこで、10mの余裕を持たせて、PEOTよりも約28m前の位置にLEOTを設定している。
ところが、バッファメモリに実際には1つのデータセットしか記憶されていなかったとする。その場合、図の黒の帯状の部分にしかデータが記録されず、白の帯状の部分は無駄になってしまう。
【0008】
また、テープのフォーマットの規格によっては、テープ上の損傷等があるエリアをスキップしてデータを記録する場合もある。例えば、IBM、ヒューレットパッカード、シーゲイトテクノロジ(現サータンス)の3社が共同で策定した新規格LTO(Linear Tape-Open)では、このような方式によるデータの記録が許されている。LTOでは、スキップ可能なテープ長は最大4mである。従って、最大限のスキップを行うと、1データセット当たりのテープ長は4mとなる。一方、スキップを行わなければ、1データセット当たりのテープ長は70mmで済む。つまり、前者は、後者の約57倍にもなってしまうのである。
現状では、全てのデータセットでスキップ必要となるのは非常に稀であると考え、スキップがないと仮定した場合のテープ長に幾分かの余裕を持たせたテープ長を、LEOTを決定する際の余裕分として採用している。しかしながら、スキップの頻度が想定を超えることはあり得るので、この方法は、バッファメモリ内のデータセットをテープに書ききれないというリスクを容認することとなっている。
【0009】
この問題点を、図11(b)を参照して説明する。
図11(b)でも、図11(a)と同様の考え方で、PEOTよりも約28m前の位置にLEOTを設定している。
ところが、図示するようにスキップが頻繁に発生すると、PEOTの左側に黒の帯で示したように、書ききれないデータが出て来てしまう。
【0010】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、テープ上の適切な位置にLEOTを設定することにある。
また、本発明の他の目的は、テープの記録領域に無駄が生じないような位置にLEOTを設定することにある。
更に、本発明の他の目的は、テープの記録領域に無駄が生じず、かつ、テープの記録領域の不足も生じないような位置にLEOTを設定することにある。
【課題を解決するための手段】
【0011】
かかる目的のもと、本発明では、現在バッファメモリに格納されているデータの量を指標として、LEOTを報告するタイミングを動的に変更するようにした。即ち、本発明の装置は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、データを一時的に格納するバッファメモリと、バッファメモリに格納されたデータの容量と、テープ媒体における現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段とを備えている。これにより、バッファサイズ分の余裕をみてLEOTを報告してしまうことによる容量の損失を抑えることができる。
【0012】
また、本発明は、往復して記録されるテープ上の特定範囲内のデータセットの個数の履歴に基づいてその範囲で書込み時にスキップが起こる可能性を判断し、実際に記録するデータの量にスキップの起こる可能性を加味してLEOTを報告する時点を決定するように構成することもできる。その場合、本発明の装置は、テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、決定手段は、管理手段により管理される記録状況も加味して出力時期を決定するというものである。これにより、スキップが非常に起こりやすい場合にも、LEOTを報告する適切なタイミングを算出することができる。
【0013】
更に、本発明は、LEOTを報告する適切なタイミングを決定する方法として捉えることもできる。その場合、本発明の第1の方法は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、データをバッファメモリに格納するステップと、バッファメモリに格納されているデータの容量を取得するステップと、テープ媒体における現在のデータ書込み位置を特定するステップと、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップとを含んでいる。また、第2の方法は、第1の方法において、テープ媒体におけるデータの記録状況を採取するステップを更に含み、判定するステップでは、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【0014】
一方、本発明は、コンピュータに所定の機能を実現させるプログラムとして捉えることもできる。その場合、本発明の第1のプログラムは、データの記録に用いられるテープ媒体を駆動するテープドライブに、データをバッファメモリに格納する機能と、バッファメモリに格納されているデータの容量を取得する機能と、テープ媒体における現在のデータ書込み位置を特定する機能と、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能とを実現させるものである。また、第2のプログラムは、第1のプログラムにおいて、テープドライブに、テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、判定する機能では、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【発明の効果】
【0015】
本発明によれば、テープ上の適切な位置にLEOTを設定することができる。
【発明を実施するための最良の形態】
【0016】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
図1は、本実施の形態が適用されるコンピュータシステムの構成を示した図である。このコンピュータシステムは、ホスト10と、テープドライブ20とから構成される。
ホスト10は、パーソナルコンピュータ等の一般的なコンピュータである。即ち、コンピュータ全体の動作を制御するCPU(Central Processing Unit)や、CPUが直接アクセスするプログラム及びデータを記憶するメインメモリを備える。また、処理の指示やデータを入力するためのキーボード、マウス等の入力装置や、処理結果を表示するためのディスプレイ等の出力装置を更に備えていてもよい。
【0017】
テープドライブ20は、制御部30と、ヘッド40と、リール50及び51とを備える。そして、テープ60が、リール50とリール51とにまたがって巻かれている。
ヘッド40は、テープ60へのデータの書込み及びテープ60からのデータの読出しを行う機構である。また、本実施の形態において、テープ60には、データを記録するデータバンドの他に、サーボバンドが設けられている。このサーボバンドには、テープ60の長手方向の位置を表すサーボフレイムが記録されており、ヘッド40は、このサーボフレイムに基づいてテープ60における現在の書込み位置を検知するようになっている。
【0018】
リール50及び51は、回転することによって、リール50からリール51の方向へ、又は、リール51からリール50の方向へテープ60を移動させる機構である。
また、制御部30は、ホスト10からの指示に従い、テープ60へのデータの書込み及びテープ60からのデータの読出しを制御する機能を有する部分である。尚、制御部30を実現するため、テープドライブ20もホスト10と同様、CPUやメインメモリを備えている。
【0019】
本実施の形態では、この制御部30の制御によりテープ上の適切な位置にLEOTを設定することを可能としている。以下、この制御部30について詳細に説明する。
(第1の実施の形態)
図2は、第1の実施の形態における制御部30の機能構成を示した図である。この制御部30は、ホストインターフェース部(以下、「ホストI/F部」という)31と、データ格納部32と、バッファメモリ33と、データ転送部34とを備える。また、バッファ管理部35と、現在位置管理部36と、LEOT決定部37とを更に備える。
【0020】
ホストI/F部31は、テープ60に書き込むべきデータセットをホスト10から受け取ったり、それに対する応答としてLEOTを通知したりする。
データ格納部32は、ホストI/F部31からデータセットを受け取る。そして、例えば、256個のデータセットを格納できるだけの容量を持つバッファメモリ33にそのデータセットを格納する。一方、データ転送部34は、バッファメモリ33に格納されたデータを取り出してテープ60に記録するためにヘッド40に転送したり、テープ60上の現在の書込み位置の情報(以下、「現在位置情報」という)をヘッド40から受け取ったりする。
【0021】
バッファ管理部35は、バッファメモリ33に格納されているデータセットの数を管理し、現在位置管理部36は、データ転送部34から現在位置情報を受け取って管理する。
LEOT決定部37は、バッファ管理部35が管理する情報と現在位置管理部36が管理する情報とを照合することにより、現在の書込み位置をLEOTとして決定すべきかどうか判定する。LEOTを決定するという点で決定手段として把握できる部分である。
【0022】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、テープドライブ20のCPUが、ホストI/F部31、データ格納部32、データ転送部34、バッファ管理部35、現在位置管理部36、LEOT決定部37の各機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
【0023】
次に、制御部30の動作の一例について説明する。
図3は、制御部30のうち、ホストI/F部31、データ格納部32、LEOT決定部37の動作を示したフローチャートである。
ホスト10からWriteコマンドが送られると、まず、ホストI/F部31が、Writeコマンドを受け取る(ステップ101)。
次に、Writeコマンドによって指定されたデータセットは、データ格納部32に渡され、データ格納部32がバッファメモリ33に格納する(ステップ102)。一方、バッファ管理部35は、バッファメモリ33に格納されたデータセットの数Nを管理している。そこで、データ格納部32は、このときバッファメモリ33に格納したデータセットの数をNに加算するようバッファ管理部35に指示する(ステップ103)。これにより、現在バッファメモリ33に格納されているデータセットの数が、バッファ管理部35が管理するデータセットの数Nにも反映されることになる。
【0024】
その後、データ格納部32からLEOT決定部37へ制御が渡され、LEOT決定部37が、バッファ管理部35で管理されるNの値を取得する(ステップ104)。また、現在位置管理部36は、現在位置情報を管理している。そこで、LEOT決定部37は、この現在位置情報に基づいて、現在の書込み位置からPEOTまでのテープ長Lを求める(ステップ105)。
そして、LEOT決定部37は、LEOTを通知すべきかどうかを判断する。
LEOTを通知すべきかどうかの判断は、具体的には、次のような考え方に従って行う。
まず、バッファメモリ33内にN個のデータセットが残されている場合は、現在位置からPEOTまでの領域にそのN個のデータセットを記録できるだけの余裕があればよい。従って、1データセット当たりのテープ長をDとすると、現在位置からPEOTまでのテープ長LがN×Dになった時点でLEOTを通知すればよいことになる。
【0025】
但し、ここで注意しなければならないのは、LEOTは、Writeコマンドに対する応答として通知されるという点である。即ち、LEOTをホスト10に通知した後、次のWriteコマンドでホスト10からデータセットが送られてくる可能性がある。従って、次のWriteコマンドを受けた後のバッファメモリ33内のデータセットの個数と現在のテープ上の位置との関係で、LEOTを通知するかどうかを判断する必要がある。1回のWriteコマンドがバッファメモリ33内に最大Nz個のデータセットを増やすと仮定すると、現在位置からPEOTまでのテープ長Lが(N+Nz)×Dになった時点でLEOTを通知することになる。
【0026】
このことを、図4を参照して説明する。
図4(a)は、LEOTを通知した後のWriteコマンドによってバッファメモリ33内のデータセットが増えることを考慮しない場合のLEOTの位置を示した図である。バッファメモリ33に5つのデータセット(斜線部)が残っているため、PEOTまでにこの5つのデータセットを記録する余裕(斜線部)を設けただけである。
一方、図4(b)は、LEOTを通知した後のWriteコマンドによってバッファメモリ33内のデータセットが増えることを考慮した場合のLEOTの位置を示した図である。この場合、図4(a)のLEOTの位置よりも手前に更に余裕を設けている。この余裕は、LEOTを通知した後のWriteコマンドによってバッファメモリ33に追加されるデータセットを記録するために設けられるものである。ここでは、Writeコマンドによって3つのデータセット(濃い斜線部)が追加されるものとし、図4(a)のLEOTよりも手前に、3つのデータセットの記録する余裕を設け、その手前をLEOTとしている。
図4(a)のLEOTの位置では、LEOTを通知した後のWriteコマンドによってバッファメモリ33に追加されたデータセットを記録することができなくなってしまうが、図4(b)のLEOTの位置であれば、データセットが追加されたとしても、記録領域の不足は生じない。
【0027】
このようなことから、LEOT決定部37は、Lが(N+Nz)×Dよりも小さいかどうかを判定する(ステップ106)。
その結果、Lが(N+Nz)×Dよりも小さいと判定されれば、LEOTを通知する(ステップ107)。一方、Lが(N+Nz)×Dよりも小さくないと判定されれば、LEOTを通知せずに処理を終了する。
例えば、1データセット当たりのテープ長Dが70mmであり、1回のWriteコマンドでバッファメモリ33に格納する最大のデータセットの数Nzが32個であるとする。この場合、LEOTは、PEOTまでのテープ長が(N+32)×70(mm)になった時点で通知される。
【0028】
ところで、以上の動作において、データ格納部32は、ホスト10から受け取ったデータをバッファメモリ33に格納するのみである。従って、このままでは、テープ60への実際の書き込みは行われていないことになる。そこで、データ転送部34が、所定のタイミングでバッファメモリ33に格納されたデータセットを取り出し、ヘッド40に転送する。
尚、この転送のタイミングとしては、種々のものが考えられるが、本実施の形態ではそのタイミングを特に限定しない。例えば、バッファメモリ33に格納されたデータセットの容量がバッファメモリ33の全容量の一定割合に達したタイミングでデータを転送するようにしてもよい。また、バッファメモリ33に格納された全てのデータセットをテープ60に書き込むよう、データ転送部34がホスト10から指示された場合に、データを転送するようにしてもよい。
【0029】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部34は図5に示すような動作を行う。
即ち、まず、データ転送部34は、テープ60への書き込みの単位であるデータセットをバッファメモリ33から1つ取り出してヘッド40に転送する(ステップ111)。これにより、ヘッド40が、このデータセットを実際にテープ60に書き込むことになる。
また、この時、データ転送部34は、バッファ管理部35が管理するバッファメモリ33内のデータセットの数Nから1を減算する(ステップ112)。
【0030】
一方、データ転送部34は、ヘッド40から現在位置情報を受け取る(ステップ113)。そして、現在位置管理部36が管理する現在位置情報を最新の状態に更新する(ステップ114)。
つまり、データ転送部34がバッファ管理部35及び現在位置管理部36が管理する情報を常に最新状態に更新しておくことにより、LEOT決定部37は、この最新の情報に基づいてLEOTを決定することができるのである。
【0031】
以上により、第1の実施の形態の動作は終了する。
尚、上述したLEOTの決定方法は、あくまで一例であり、バッファメモリ33に格納されたデータの容量に基づいてLEOTを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
また、この第1の実施の形態では、制御部30の動作において、LEOTを既に通知したかどうかは考慮していない。これは、LEOTをホスト10に一度通知した後も、ホスト10からWriteコマンドを受け取る都度、図3のような評価を行い、LEOTを通知し続ける方が好ましいと考えたためである。しかしながら、LEOTを通知済かどうかを制御部30が記憶しておき、通知済であれば、図3のような評価を行わないような変形例も考えられる。
【0032】
このように、第1の実施の形態では、Writeコマンドに基づく処理を完了する度に、テープ60上の現在位置から記録不可エリアの開始位置(PEOT)までの距離Lと、(N+Nz)×Dとを比較し、前者が後者より下回った時点でLEOTを通知することとした。これにより、バッファメモリ33内に残っているデータの量を反映した適切なLEOTの通知時期を決定することができる。
【0033】
この効果について更に具体的な数値を用いて説明する。
バッファメモリ33が約400KBのデータセットを256個格納でき、1データセットがフォーマット上許される最大の距離4mを使って記録されたとする。即ち、1データセットを記録するのに、最大限のスキップが行われた場合を考える。この場合、LEOTは、PEOTまで1024(=256×4)mの位置となる。
仮にこの範囲で何の障害もなくデータセットがきれいに並んで記録されたとすると、1つのデータセット当たりのテープ長を70mmとして、14628(=1024×1000/70)個のデータセットが記録されるはずである。
従って、5748(=(14628−256)×0.4)MBの容量の損失となる。
【0034】
(第2の実施の形態)
図6は、第2の実施の形態における制御部30の機能構成を示した図である。この制御部30は、第1の実施の形態における制御部30に対し、記録状況管理部38を追加したものである。
記録状況管理部38は、テープ60上のデータの記録状況を管理する。記録状況を管理するという点で管理手段として把握できる部分である。この記録状況管理部38も、テープドライブ20のCPUが、その機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
尚、制御部30にてテープ60における記録状況を管理できるようにするために、本実施の形態では、第1の実施の形態におけるヘッド40及びデータ転送部34の機能に対し、幾つかの新たな機能を追加している。即ち、ヘッド40には、制御部30から受け取ったデータセットをテープ60に書き込んだ後、その書き込んだデータセットを再度読み出して制御部30に返送する機能が追加されている。また、データ転送部34には、読み出されたデータセットをヘッド40から受け取り、それが書き込みを指示したデータセットと一致するかどうかを検証する機能が追加されている。
【0035】
ところで、第1の実施の形態では、1データセット当たりのテープ長Dとして予め決められた値を用いたが、この第2の実施の形態では、実際の記録状況に基づいて、1データセットの記録に必要なテープ長を求める。
リニア方式のテープドライブでは、ヘッド40がテープ60上を複数回往復することによりデータを記録する。従って、テープ60に損傷がある場合、そのエリアを通る度にその損傷を回避するためのスキップを行うことが多い。本実施の形態では、このような動作に着目して、一定のエリアにどの程度の数のデータセットを記録できるかを予測する。即ち、テープ60の同じエリアに過去に記録されたデータセットの個数を観測し、その観測結果に基づいてそのエリアにどの程度のデータセットを記録できるか予測する。
【0036】
このことを、図7を参照して具体的に説明する。
例えば、LTOの第2世代では、テープ60上をヘッド40が32往復する。図7では、一番上の右方向への矢印が第1回目の往路を、その下の左方向への矢印が第1回目の復路を表している。また、その下の右方向への矢印が第2回目の往路を、その下の左方向への矢印が第2回目の復路を、以下、同様にして、一番下の左方向への矢印が第32回目の復路を表している。そして、この第32回目の復路の終端がPEOTになっている。
現在の書込み位置がこの最後の復路の位置Pである時にLEOTを通知すべきかどうかを判断する場合を考える。この場合は、テープ60の位置PとPEOTの間のエリアにおけるこれまでの31.5往復分の記録状況に基づいて、1データセット当たりのテープ長を求める。即ち、図7において網掛けで示した部分の記録状況を参照する。
【0037】
そのために、本実施の形態では、記録状況管理部38が図8に示すような情報(テープマップ)を採取するようにしている。
図において、横軸はラップ(Wrap)を示している。ラップとは、テープ60上のヘッド40の経路の片道のことである。即ち、ヘッド40がテープ60上を32往復する場合は、テープ60上には64ラップが存在することになる。図では、ラップを0〜63で表している。一方、縦軸はリジョン(Region)を示している。リジョンとは、テープ60の全長を分割してできたエリアのことである。図では、テープ60を128分割し、リジョンを0〜127で表している。そして、各ラップの各リジョンに記録できたデータセットの数を管理している。
【0038】
尚、偶数ラップは往路であり、奇数ラップは復路であるが、いずれのラップにおいても、リジョンは、経路に沿って採番されるものとする。即ち、偶数ラップの場合、リジョン0は、BOT(Beginning of Tape)、EOT(End of Tape)が存在する側(図7では左側)となり、リジョン127は、BOT、EOTが存在しない側(図7では右側)となる。逆に、奇数ラップの場合、リジョン0は、BOT、EOTが存在しない側(図7では右側)となり、リジョン127は、BOT、EOTが存在する側(図7では左側)となる。
【0039】
従って、LEOTであるかどうかの判定は、通常、ラップ63のリジョン127の幾つか手前で行われることになる。
例えば、ラップ63のリジョン120でLEOTを判定する場合は、図中、四角囲みした部分の記録状況を用いる。具体的には、これらの部分の記録状況から、ラップごとの1データセット当たりのテープ長を求め、その平均値や最小値を、LEOTの決定に用いる1データセット当たりのテープ長Mとする。
【0040】
このような記録状況を用いたLEOT決定を行う本実施の形態の動作について説明する。
図9は、制御部30のうち、ホストI/F部31、データ格納部32、LEOT決定部37の動作を示したフローチャートである。
ホスト10からWriteコマンドが送られると、まず、ホストI/F部31が、Writeコマンドを受け取る(ステップ201)。
次に、Writeコマンドによって指定されたデータセットは、データ格納部32に渡され、データ格納部32がバッファメモリ33に格納する(ステップ202)。一方、バッファ管理部35は、バッファメモリ33に格納されたデータセットの数Nを管理している。そこで、データ格納部32は、このときバッファメモリ33に格納したデータセットの数をNに加算するようバッファ管理部35に指示する(ステップ203)。これにより、現在バッファメモリ33に格納されているデータセットの数が、バッファ管理部35が管理するデータセットの数Nにも反映されることになる。
【0041】
その後、データ格納部32からLEOT決定部37へ制御が渡され、LEOT決定部37が、バッファ管理部35で管理されるNの値を取得する(ステップ204)。また、現在位置管理部36は、現在位置情報を管理している。そこで、LEOT決定部37は、この現在位置情報に基づいて、現在の書込み位置からPEOTまでのテープ長Lを求める(ステップ205)。
【0042】
更に、本実施の形態では、記録状況管理部38が、現在までのテープ60に対する記録状況であるテープマップを管理している。そこで、LEOT決定部37は、このテープマップを参照して、1データセット当たりのテープ長Mを求める(ステップ206)。
【0043】
そして、LEOT決定部37は、LEOTを通知すべきかどうかを判断する。
第1の実施の形態では、1データセット当たりのテープ長として予め決められた固定の値Dを用いていたが、本実施の形態では、ステップ206で求めたMを用いる。即ち、現在位置からPEOTまでのテープ長Lが(N+Nz)×Mよりも小さいかどうかを判定する(ステップ207)。
その結果、Lが(N+Nz)×Mよりも小さいと判定されれば、LEOTを通知する(ステップ208)。一方、Lが(N+Nz)×Mよりも小さくないと判定されれば、LEOTを通知せずに処理を終了する。
【0044】
ところで、以上の動作において、データ格納部32は、ホスト10から受け取ったデータをバッファメモリ33に格納するのみである。従って、このままでは、テープ60への実際の書き込みは行われていないことになる。そこで、データ転送部34が、所定のタイミングでバッファメモリ33に格納されたデータセットを取り出し、ヘッド40に転送する。尚、このタイミングとしては、第1の実施の形態でも述べた通り、種々のものが考えられる。
【0045】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部34は図10に示すような動作を行う。
即ち、まず、データ転送部34は、テープ60への書き込みの単位であるデータセットをバッファメモリ33から1つ取り出してヘッド40に転送する(ステップ211)。これにより、ヘッド40が、このデータセットを実際にテープ60に書き込むことになる。
また、この時、データ転送部34は、バッファ管理部35が管理するバッファメモリ33内のデータセットの数Nから1を減算する(ステップ212)。
【0046】
一方、データ転送部34は、ヘッド40から現在位置情報及び読み出したデータセットを受け取る(ステップ213)。そして、まず、現在位置管理部36が管理する現在位置情報を最新の状態に更新する(ステップ214)。次に、バッファメモリ33から取り出してヘッド40に転送したデータセットと、ヘッド40から受け取ったデータセットとが一致するかどうかを検証する(ステップ215)。そして、その検証の結果に基づいて、記録状況管理部38が管理する記録状況を更新する(ステップ216)。
つまり、データ転送部34がバッファ管理部35、現在位置管理部36、記録状況管理部38が管理する情報を常に最新状態に更新しておくことにより、LEOT決定部37は、この最新の情報に基づいてLEOTを決定することができるのである。
【0047】
以上により、第2の実施の形態の動作は終了する。
尚、この第2の実施の形態では、他のラップの同じリジョンの記録状況に基づいてLEOTを決定するようにした。
しかしながら、往路と復路とで異なるヘッドを用いるテープドライブ20の場合は、同じ復路であるラップ1、3、…、59、61の同じリジョンの記録状況のみを調べるようにしてもよい。また、この場合、復路の全てのラップの記録状況を用いるのではなく、ラップ63の近傍のラップにおける記録状況のみを用いることも考えられる。
一方、ラップ64における現在位置の少し前の記録状況を用いることも有効である。例えば、ヘッドに粉塵が溜まることによりデータの記録に不具合が生ずる場合がある。そのような場合は、同じラップにおける直前の記録状況が今後も続くと考えられるからである。
或いは、他のラップにおける同じリジョンの記録状況と、同じラップにおける直前の記録状況との両方を加味して、1データセット当たりのテープ長Mを求めるようにしてもよい。
【0048】
また、上述したLEOTの決定方法は、あくまで一例であり、バッファメモリ33に格納されたデータの容量及びテープ60におけるデータの記録状況に基づいてLEOTを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
更に、この第2の実施の形態では、制御部30の動作において、LEOTを既に通知したかどうかは考慮していない。これは、LEOTをホスト10に一度通知した後も、ホスト10からWriteコマンドを受け取る都度、図9のような評価を行い、LEOTを通知し続ける方が好ましいと考えたためである。しかしながら、LEOTを通知済かどうかを制御部30が記憶しておき、通知済であれば、図9のような評価を行わないような変形例も考えられる。
【0049】
このように、第2の実施の形態では、Writeコマンドに基づく処理を完了する度に、テープ60上の現在位置から記録不可エリアの開始位置(PEOT)までの距離Lと、(N+Nz)×Mとを比較し、前者が後者より下回った時点でLEOTを通知することとした。これにより、バッファメモリ33内に残っているデータの量及びそのデータを書き込む際のスキップの予測を反映した正確な時点でのLEOTレポートを達成することができる。
【図面の簡単な説明】
【0050】
【図1】本発明の実施の形態におけるコンピュータシステムの全体構成を示したブロック図である。
【図2】本発明の第1の実施の形態における制御部の機能構成を示したブロック図である。
【図3】本発明の第1の実施の形態における制御部のホストI/F部、データ格納部、LEOT決定部による動作を示したフローチャートである。
【図4】本発明の実施の形態におけるLEOTの決定方法について説明するための図である。
【図5】本発明の第1の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図6】本発明の第2の実施の形態における制御部の機能構成を示したブロック図である。
【図7】本発明の第2の実施の形態においてLEOTを決定する際に記録状況が用いられるテープ上の位置を説明するための図である。
【図8】本発明の第2の実施の形態において記録状況管理部によって管理される情報の一例を示した図である。
【図9】本発明の第2の実施の形態における制御部のホストI/F部、データ格納部、LEOT決定部による動作を示したフローチャートである。
【図10】本発明の第2の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図11】従来技術における問題点について具体的に説明するための図である。
【符号の説明】
【0051】
10…ホスト、20…テープドライブ、30…制御部、31…ホストI/F部、32…データ格納部、33…バッファメモリ、34…データ転送部、35…バッファ管理部、36…現在位置管理部、37…LEOT決定部、38…記録状況管理部、40…ヘッド、50,51…リール、60…テープ
【技術分野】
【0001】
本発明は、テープ媒体を駆動するテープドライブを制御する装置等に関し、より詳しくは、テープの終端に近づいた際にその旨を通知する機能を有する装置等に関する。
【背景技術】
【0002】
テープに対する書込み/読出しを行うテープドライブは、通常、テープの終端が近づくとその事実を通知する機能を有する。テープの終端が近づいている旨は、例えば、ホストコンピュータ(以下、「ホスト」という)からのWriteコマンドに対するエラーとして、ホストに通知される。尚、本明細書では、テープの終端をPEOT(Physical End of Tape)と呼び、PEOTの接近を通知するテープ上の位置をLEOT(Logical End of Tape)と呼ぶ。
【0003】
ところで、このような通知を行った場合、テープドライブは、それまでにホストから送られた全てのデータをテープ上に記録しなければならない。
一般に、テープドライブは、そのパフォーマンスの向上のため、大きなバッファメモリを持っている。ホストから送られたデータは、このバッファメモリに一時的に格納され、その後、テープに記録されることとなる。従って、PEOTの接近を通知する時点で、バッファメモリに格納されている全てのデータを記録できるだけの余裕がテープ上に残っていなければならない。
【0004】
従来、このような余裕として、一律にバッファサイズの容量を採用していた。即ち、PEOTよりも前に、バッファサイズの容量分のデータを記録できるだけの余裕を持たせて、LEOTを決定していた(例えば、特許文献1参照)。
【0005】
【特許文献1】特開平8−63945号公報(第7−8頁、第2図)
【発明の開示】
【発明が解決しようとする課題】
【0006】
このように、従来技術においては、一律な余裕を持たせてLEOTを決定していた。例えば、特許文献1では、PEOTよりも約15m前の位置をLEOTとして決定している。
しかしながら、このように一律にLEOTを決定したのでは、テープ上の記録領域を無駄にしてしまう可能性があるという問題点が生ずる。
特許文献1では、15mの余裕を持たせているが、バッファメモリが大きくなれば、その余裕分も増えることとなってしまうからである。しかも、バッファメモリに応じた余裕分を持たせてLEOTを決定しても、バッファメモリ内に書き込むべきデータが少ししかなければ、テープの容量は一層無駄になってしまうのである。
【0007】
この問題点を、図11(a)を参照して説明する。
図11(a)では、バッファメモリが256データセットの容量を持ち、1データセット当たりのテープ長が70mmであるとしている。この場合、バッファメモリ内の全てのデータセットを記録するとした場合のテープ長は、70mm×256=約18mとなる。そこで、10mの余裕を持たせて、PEOTよりも約28m前の位置にLEOTを設定している。
ところが、バッファメモリに実際には1つのデータセットしか記憶されていなかったとする。その場合、図の黒の帯状の部分にしかデータが記録されず、白の帯状の部分は無駄になってしまう。
【0008】
また、テープのフォーマットの規格によっては、テープ上の損傷等があるエリアをスキップしてデータを記録する場合もある。例えば、IBM、ヒューレットパッカード、シーゲイトテクノロジ(現サータンス)の3社が共同で策定した新規格LTO(Linear Tape-Open)では、このような方式によるデータの記録が許されている。LTOでは、スキップ可能なテープ長は最大4mである。従って、最大限のスキップを行うと、1データセット当たりのテープ長は4mとなる。一方、スキップを行わなければ、1データセット当たりのテープ長は70mmで済む。つまり、前者は、後者の約57倍にもなってしまうのである。
現状では、全てのデータセットでスキップ必要となるのは非常に稀であると考え、スキップがないと仮定した場合のテープ長に幾分かの余裕を持たせたテープ長を、LEOTを決定する際の余裕分として採用している。しかしながら、スキップの頻度が想定を超えることはあり得るので、この方法は、バッファメモリ内のデータセットをテープに書ききれないというリスクを容認することとなっている。
【0009】
この問題点を、図11(b)を参照して説明する。
図11(b)でも、図11(a)と同様の考え方で、PEOTよりも約28m前の位置にLEOTを設定している。
ところが、図示するようにスキップが頻繁に発生すると、PEOTの左側に黒の帯で示したように、書ききれないデータが出て来てしまう。
【0010】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、テープ上の適切な位置にLEOTを設定することにある。
また、本発明の他の目的は、テープの記録領域に無駄が生じないような位置にLEOTを設定することにある。
更に、本発明の他の目的は、テープの記録領域に無駄が生じず、かつ、テープの記録領域の不足も生じないような位置にLEOTを設定することにある。
【課題を解決するための手段】
【0011】
かかる目的のもと、本発明では、現在バッファメモリに格納されているデータの量を指標として、LEOTを報告するタイミングを動的に変更するようにした。即ち、本発明の装置は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、データを一時的に格納するバッファメモリと、バッファメモリに格納されたデータの容量と、テープ媒体における現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段とを備えている。これにより、バッファサイズ分の余裕をみてLEOTを報告してしまうことによる容量の損失を抑えることができる。
【0012】
また、本発明は、往復して記録されるテープ上の特定範囲内のデータセットの個数の履歴に基づいてその範囲で書込み時にスキップが起こる可能性を判断し、実際に記録するデータの量にスキップの起こる可能性を加味してLEOTを報告する時点を決定するように構成することもできる。その場合、本発明の装置は、テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、決定手段は、管理手段により管理される記録状況も加味して出力時期を決定するというものである。これにより、スキップが非常に起こりやすい場合にも、LEOTを報告する適切なタイミングを算出することができる。
【0013】
更に、本発明は、LEOTを報告する適切なタイミングを決定する方法として捉えることもできる。その場合、本発明の第1の方法は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、データをバッファメモリに格納するステップと、バッファメモリに格納されているデータの容量を取得するステップと、テープ媒体における現在のデータ書込み位置を特定するステップと、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップとを含んでいる。また、第2の方法は、第1の方法において、テープ媒体におけるデータの記録状況を採取するステップを更に含み、判定するステップでは、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【0014】
一方、本発明は、コンピュータに所定の機能を実現させるプログラムとして捉えることもできる。その場合、本発明の第1のプログラムは、データの記録に用いられるテープ媒体を駆動するテープドライブに、データをバッファメモリに格納する機能と、バッファメモリに格納されているデータの容量を取得する機能と、テープ媒体における現在のデータ書込み位置を特定する機能と、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能とを実現させるものである。また、第2のプログラムは、第1のプログラムにおいて、テープドライブに、テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、判定する機能では、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【発明の効果】
【0015】
本発明によれば、テープ上の適切な位置にLEOTを設定することができる。
【発明を実施するための最良の形態】
【0016】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
図1は、本実施の形態が適用されるコンピュータシステムの構成を示した図である。このコンピュータシステムは、ホスト10と、テープドライブ20とから構成される。
ホスト10は、パーソナルコンピュータ等の一般的なコンピュータである。即ち、コンピュータ全体の動作を制御するCPU(Central Processing Unit)や、CPUが直接アクセスするプログラム及びデータを記憶するメインメモリを備える。また、処理の指示やデータを入力するためのキーボード、マウス等の入力装置や、処理結果を表示するためのディスプレイ等の出力装置を更に備えていてもよい。
【0017】
テープドライブ20は、制御部30と、ヘッド40と、リール50及び51とを備える。そして、テープ60が、リール50とリール51とにまたがって巻かれている。
ヘッド40は、テープ60へのデータの書込み及びテープ60からのデータの読出しを行う機構である。また、本実施の形態において、テープ60には、データを記録するデータバンドの他に、サーボバンドが設けられている。このサーボバンドには、テープ60の長手方向の位置を表すサーボフレイムが記録されており、ヘッド40は、このサーボフレイムに基づいてテープ60における現在の書込み位置を検知するようになっている。
【0018】
リール50及び51は、回転することによって、リール50からリール51の方向へ、又は、リール51からリール50の方向へテープ60を移動させる機構である。
また、制御部30は、ホスト10からの指示に従い、テープ60へのデータの書込み及びテープ60からのデータの読出しを制御する機能を有する部分である。尚、制御部30を実現するため、テープドライブ20もホスト10と同様、CPUやメインメモリを備えている。
【0019】
本実施の形態では、この制御部30の制御によりテープ上の適切な位置にLEOTを設定することを可能としている。以下、この制御部30について詳細に説明する。
(第1の実施の形態)
図2は、第1の実施の形態における制御部30の機能構成を示した図である。この制御部30は、ホストインターフェース部(以下、「ホストI/F部」という)31と、データ格納部32と、バッファメモリ33と、データ転送部34とを備える。また、バッファ管理部35と、現在位置管理部36と、LEOT決定部37とを更に備える。
【0020】
ホストI/F部31は、テープ60に書き込むべきデータセットをホスト10から受け取ったり、それに対する応答としてLEOTを通知したりする。
データ格納部32は、ホストI/F部31からデータセットを受け取る。そして、例えば、256個のデータセットを格納できるだけの容量を持つバッファメモリ33にそのデータセットを格納する。一方、データ転送部34は、バッファメモリ33に格納されたデータを取り出してテープ60に記録するためにヘッド40に転送したり、テープ60上の現在の書込み位置の情報(以下、「現在位置情報」という)をヘッド40から受け取ったりする。
【0021】
バッファ管理部35は、バッファメモリ33に格納されているデータセットの数を管理し、現在位置管理部36は、データ転送部34から現在位置情報を受け取って管理する。
LEOT決定部37は、バッファ管理部35が管理する情報と現在位置管理部36が管理する情報とを照合することにより、現在の書込み位置をLEOTとして決定すべきかどうか判定する。LEOTを決定するという点で決定手段として把握できる部分である。
【0022】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、テープドライブ20のCPUが、ホストI/F部31、データ格納部32、データ転送部34、バッファ管理部35、現在位置管理部36、LEOT決定部37の各機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
【0023】
次に、制御部30の動作の一例について説明する。
図3は、制御部30のうち、ホストI/F部31、データ格納部32、LEOT決定部37の動作を示したフローチャートである。
ホスト10からWriteコマンドが送られると、まず、ホストI/F部31が、Writeコマンドを受け取る(ステップ101)。
次に、Writeコマンドによって指定されたデータセットは、データ格納部32に渡され、データ格納部32がバッファメモリ33に格納する(ステップ102)。一方、バッファ管理部35は、バッファメモリ33に格納されたデータセットの数Nを管理している。そこで、データ格納部32は、このときバッファメモリ33に格納したデータセットの数をNに加算するようバッファ管理部35に指示する(ステップ103)。これにより、現在バッファメモリ33に格納されているデータセットの数が、バッファ管理部35が管理するデータセットの数Nにも反映されることになる。
【0024】
その後、データ格納部32からLEOT決定部37へ制御が渡され、LEOT決定部37が、バッファ管理部35で管理されるNの値を取得する(ステップ104)。また、現在位置管理部36は、現在位置情報を管理している。そこで、LEOT決定部37は、この現在位置情報に基づいて、現在の書込み位置からPEOTまでのテープ長Lを求める(ステップ105)。
そして、LEOT決定部37は、LEOTを通知すべきかどうかを判断する。
LEOTを通知すべきかどうかの判断は、具体的には、次のような考え方に従って行う。
まず、バッファメモリ33内にN個のデータセットが残されている場合は、現在位置からPEOTまでの領域にそのN個のデータセットを記録できるだけの余裕があればよい。従って、1データセット当たりのテープ長をDとすると、現在位置からPEOTまでのテープ長LがN×Dになった時点でLEOTを通知すればよいことになる。
【0025】
但し、ここで注意しなければならないのは、LEOTは、Writeコマンドに対する応答として通知されるという点である。即ち、LEOTをホスト10に通知した後、次のWriteコマンドでホスト10からデータセットが送られてくる可能性がある。従って、次のWriteコマンドを受けた後のバッファメモリ33内のデータセットの個数と現在のテープ上の位置との関係で、LEOTを通知するかどうかを判断する必要がある。1回のWriteコマンドがバッファメモリ33内に最大Nz個のデータセットを増やすと仮定すると、現在位置からPEOTまでのテープ長Lが(N+Nz)×Dになった時点でLEOTを通知することになる。
【0026】
このことを、図4を参照して説明する。
図4(a)は、LEOTを通知した後のWriteコマンドによってバッファメモリ33内のデータセットが増えることを考慮しない場合のLEOTの位置を示した図である。バッファメモリ33に5つのデータセット(斜線部)が残っているため、PEOTまでにこの5つのデータセットを記録する余裕(斜線部)を設けただけである。
一方、図4(b)は、LEOTを通知した後のWriteコマンドによってバッファメモリ33内のデータセットが増えることを考慮した場合のLEOTの位置を示した図である。この場合、図4(a)のLEOTの位置よりも手前に更に余裕を設けている。この余裕は、LEOTを通知した後のWriteコマンドによってバッファメモリ33に追加されるデータセットを記録するために設けられるものである。ここでは、Writeコマンドによって3つのデータセット(濃い斜線部)が追加されるものとし、図4(a)のLEOTよりも手前に、3つのデータセットの記録する余裕を設け、その手前をLEOTとしている。
図4(a)のLEOTの位置では、LEOTを通知した後のWriteコマンドによってバッファメモリ33に追加されたデータセットを記録することができなくなってしまうが、図4(b)のLEOTの位置であれば、データセットが追加されたとしても、記録領域の不足は生じない。
【0027】
このようなことから、LEOT決定部37は、Lが(N+Nz)×Dよりも小さいかどうかを判定する(ステップ106)。
その結果、Lが(N+Nz)×Dよりも小さいと判定されれば、LEOTを通知する(ステップ107)。一方、Lが(N+Nz)×Dよりも小さくないと判定されれば、LEOTを通知せずに処理を終了する。
例えば、1データセット当たりのテープ長Dが70mmであり、1回のWriteコマンドでバッファメモリ33に格納する最大のデータセットの数Nzが32個であるとする。この場合、LEOTは、PEOTまでのテープ長が(N+32)×70(mm)になった時点で通知される。
【0028】
ところで、以上の動作において、データ格納部32は、ホスト10から受け取ったデータをバッファメモリ33に格納するのみである。従って、このままでは、テープ60への実際の書き込みは行われていないことになる。そこで、データ転送部34が、所定のタイミングでバッファメモリ33に格納されたデータセットを取り出し、ヘッド40に転送する。
尚、この転送のタイミングとしては、種々のものが考えられるが、本実施の形態ではそのタイミングを特に限定しない。例えば、バッファメモリ33に格納されたデータセットの容量がバッファメモリ33の全容量の一定割合に達したタイミングでデータを転送するようにしてもよい。また、バッファメモリ33に格納された全てのデータセットをテープ60に書き込むよう、データ転送部34がホスト10から指示された場合に、データを転送するようにしてもよい。
【0029】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部34は図5に示すような動作を行う。
即ち、まず、データ転送部34は、テープ60への書き込みの単位であるデータセットをバッファメモリ33から1つ取り出してヘッド40に転送する(ステップ111)。これにより、ヘッド40が、このデータセットを実際にテープ60に書き込むことになる。
また、この時、データ転送部34は、バッファ管理部35が管理するバッファメモリ33内のデータセットの数Nから1を減算する(ステップ112)。
【0030】
一方、データ転送部34は、ヘッド40から現在位置情報を受け取る(ステップ113)。そして、現在位置管理部36が管理する現在位置情報を最新の状態に更新する(ステップ114)。
つまり、データ転送部34がバッファ管理部35及び現在位置管理部36が管理する情報を常に最新状態に更新しておくことにより、LEOT決定部37は、この最新の情報に基づいてLEOTを決定することができるのである。
【0031】
以上により、第1の実施の形態の動作は終了する。
尚、上述したLEOTの決定方法は、あくまで一例であり、バッファメモリ33に格納されたデータの容量に基づいてLEOTを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
また、この第1の実施の形態では、制御部30の動作において、LEOTを既に通知したかどうかは考慮していない。これは、LEOTをホスト10に一度通知した後も、ホスト10からWriteコマンドを受け取る都度、図3のような評価を行い、LEOTを通知し続ける方が好ましいと考えたためである。しかしながら、LEOTを通知済かどうかを制御部30が記憶しておき、通知済であれば、図3のような評価を行わないような変形例も考えられる。
【0032】
このように、第1の実施の形態では、Writeコマンドに基づく処理を完了する度に、テープ60上の現在位置から記録不可エリアの開始位置(PEOT)までの距離Lと、(N+Nz)×Dとを比較し、前者が後者より下回った時点でLEOTを通知することとした。これにより、バッファメモリ33内に残っているデータの量を反映した適切なLEOTの通知時期を決定することができる。
【0033】
この効果について更に具体的な数値を用いて説明する。
バッファメモリ33が約400KBのデータセットを256個格納でき、1データセットがフォーマット上許される最大の距離4mを使って記録されたとする。即ち、1データセットを記録するのに、最大限のスキップが行われた場合を考える。この場合、LEOTは、PEOTまで1024(=256×4)mの位置となる。
仮にこの範囲で何の障害もなくデータセットがきれいに並んで記録されたとすると、1つのデータセット当たりのテープ長を70mmとして、14628(=1024×1000/70)個のデータセットが記録されるはずである。
従って、5748(=(14628−256)×0.4)MBの容量の損失となる。
【0034】
(第2の実施の形態)
図6は、第2の実施の形態における制御部30の機能構成を示した図である。この制御部30は、第1の実施の形態における制御部30に対し、記録状況管理部38を追加したものである。
記録状況管理部38は、テープ60上のデータの記録状況を管理する。記録状況を管理するという点で管理手段として把握できる部分である。この記録状況管理部38も、テープドライブ20のCPUが、その機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
尚、制御部30にてテープ60における記録状況を管理できるようにするために、本実施の形態では、第1の実施の形態におけるヘッド40及びデータ転送部34の機能に対し、幾つかの新たな機能を追加している。即ち、ヘッド40には、制御部30から受け取ったデータセットをテープ60に書き込んだ後、その書き込んだデータセットを再度読み出して制御部30に返送する機能が追加されている。また、データ転送部34には、読み出されたデータセットをヘッド40から受け取り、それが書き込みを指示したデータセットと一致するかどうかを検証する機能が追加されている。
【0035】
ところで、第1の実施の形態では、1データセット当たりのテープ長Dとして予め決められた値を用いたが、この第2の実施の形態では、実際の記録状況に基づいて、1データセットの記録に必要なテープ長を求める。
リニア方式のテープドライブでは、ヘッド40がテープ60上を複数回往復することによりデータを記録する。従って、テープ60に損傷がある場合、そのエリアを通る度にその損傷を回避するためのスキップを行うことが多い。本実施の形態では、このような動作に着目して、一定のエリアにどの程度の数のデータセットを記録できるかを予測する。即ち、テープ60の同じエリアに過去に記録されたデータセットの個数を観測し、その観測結果に基づいてそのエリアにどの程度のデータセットを記録できるか予測する。
【0036】
このことを、図7を参照して具体的に説明する。
例えば、LTOの第2世代では、テープ60上をヘッド40が32往復する。図7では、一番上の右方向への矢印が第1回目の往路を、その下の左方向への矢印が第1回目の復路を表している。また、その下の右方向への矢印が第2回目の往路を、その下の左方向への矢印が第2回目の復路を、以下、同様にして、一番下の左方向への矢印が第32回目の復路を表している。そして、この第32回目の復路の終端がPEOTになっている。
現在の書込み位置がこの最後の復路の位置Pである時にLEOTを通知すべきかどうかを判断する場合を考える。この場合は、テープ60の位置PとPEOTの間のエリアにおけるこれまでの31.5往復分の記録状況に基づいて、1データセット当たりのテープ長を求める。即ち、図7において網掛けで示した部分の記録状況を参照する。
【0037】
そのために、本実施の形態では、記録状況管理部38が図8に示すような情報(テープマップ)を採取するようにしている。
図において、横軸はラップ(Wrap)を示している。ラップとは、テープ60上のヘッド40の経路の片道のことである。即ち、ヘッド40がテープ60上を32往復する場合は、テープ60上には64ラップが存在することになる。図では、ラップを0〜63で表している。一方、縦軸はリジョン(Region)を示している。リジョンとは、テープ60の全長を分割してできたエリアのことである。図では、テープ60を128分割し、リジョンを0〜127で表している。そして、各ラップの各リジョンに記録できたデータセットの数を管理している。
【0038】
尚、偶数ラップは往路であり、奇数ラップは復路であるが、いずれのラップにおいても、リジョンは、経路に沿って採番されるものとする。即ち、偶数ラップの場合、リジョン0は、BOT(Beginning of Tape)、EOT(End of Tape)が存在する側(図7では左側)となり、リジョン127は、BOT、EOTが存在しない側(図7では右側)となる。逆に、奇数ラップの場合、リジョン0は、BOT、EOTが存在しない側(図7では右側)となり、リジョン127は、BOT、EOTが存在する側(図7では左側)となる。
【0039】
従って、LEOTであるかどうかの判定は、通常、ラップ63のリジョン127の幾つか手前で行われることになる。
例えば、ラップ63のリジョン120でLEOTを判定する場合は、図中、四角囲みした部分の記録状況を用いる。具体的には、これらの部分の記録状況から、ラップごとの1データセット当たりのテープ長を求め、その平均値や最小値を、LEOTの決定に用いる1データセット当たりのテープ長Mとする。
【0040】
このような記録状況を用いたLEOT決定を行う本実施の形態の動作について説明する。
図9は、制御部30のうち、ホストI/F部31、データ格納部32、LEOT決定部37の動作を示したフローチャートである。
ホスト10からWriteコマンドが送られると、まず、ホストI/F部31が、Writeコマンドを受け取る(ステップ201)。
次に、Writeコマンドによって指定されたデータセットは、データ格納部32に渡され、データ格納部32がバッファメモリ33に格納する(ステップ202)。一方、バッファ管理部35は、バッファメモリ33に格納されたデータセットの数Nを管理している。そこで、データ格納部32は、このときバッファメモリ33に格納したデータセットの数をNに加算するようバッファ管理部35に指示する(ステップ203)。これにより、現在バッファメモリ33に格納されているデータセットの数が、バッファ管理部35が管理するデータセットの数Nにも反映されることになる。
【0041】
その後、データ格納部32からLEOT決定部37へ制御が渡され、LEOT決定部37が、バッファ管理部35で管理されるNの値を取得する(ステップ204)。また、現在位置管理部36は、現在位置情報を管理している。そこで、LEOT決定部37は、この現在位置情報に基づいて、現在の書込み位置からPEOTまでのテープ長Lを求める(ステップ205)。
【0042】
更に、本実施の形態では、記録状況管理部38が、現在までのテープ60に対する記録状況であるテープマップを管理している。そこで、LEOT決定部37は、このテープマップを参照して、1データセット当たりのテープ長Mを求める(ステップ206)。
【0043】
そして、LEOT決定部37は、LEOTを通知すべきかどうかを判断する。
第1の実施の形態では、1データセット当たりのテープ長として予め決められた固定の値Dを用いていたが、本実施の形態では、ステップ206で求めたMを用いる。即ち、現在位置からPEOTまでのテープ長Lが(N+Nz)×Mよりも小さいかどうかを判定する(ステップ207)。
その結果、Lが(N+Nz)×Mよりも小さいと判定されれば、LEOTを通知する(ステップ208)。一方、Lが(N+Nz)×Mよりも小さくないと判定されれば、LEOTを通知せずに処理を終了する。
【0044】
ところで、以上の動作において、データ格納部32は、ホスト10から受け取ったデータをバッファメモリ33に格納するのみである。従って、このままでは、テープ60への実際の書き込みは行われていないことになる。そこで、データ転送部34が、所定のタイミングでバッファメモリ33に格納されたデータセットを取り出し、ヘッド40に転送する。尚、このタイミングとしては、第1の実施の形態でも述べた通り、種々のものが考えられる。
【0045】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部34は図10に示すような動作を行う。
即ち、まず、データ転送部34は、テープ60への書き込みの単位であるデータセットをバッファメモリ33から1つ取り出してヘッド40に転送する(ステップ211)。これにより、ヘッド40が、このデータセットを実際にテープ60に書き込むことになる。
また、この時、データ転送部34は、バッファ管理部35が管理するバッファメモリ33内のデータセットの数Nから1を減算する(ステップ212)。
【0046】
一方、データ転送部34は、ヘッド40から現在位置情報及び読み出したデータセットを受け取る(ステップ213)。そして、まず、現在位置管理部36が管理する現在位置情報を最新の状態に更新する(ステップ214)。次に、バッファメモリ33から取り出してヘッド40に転送したデータセットと、ヘッド40から受け取ったデータセットとが一致するかどうかを検証する(ステップ215)。そして、その検証の結果に基づいて、記録状況管理部38が管理する記録状況を更新する(ステップ216)。
つまり、データ転送部34がバッファ管理部35、現在位置管理部36、記録状況管理部38が管理する情報を常に最新状態に更新しておくことにより、LEOT決定部37は、この最新の情報に基づいてLEOTを決定することができるのである。
【0047】
以上により、第2の実施の形態の動作は終了する。
尚、この第2の実施の形態では、他のラップの同じリジョンの記録状況に基づいてLEOTを決定するようにした。
しかしながら、往路と復路とで異なるヘッドを用いるテープドライブ20の場合は、同じ復路であるラップ1、3、…、59、61の同じリジョンの記録状況のみを調べるようにしてもよい。また、この場合、復路の全てのラップの記録状況を用いるのではなく、ラップ63の近傍のラップにおける記録状況のみを用いることも考えられる。
一方、ラップ64における現在位置の少し前の記録状況を用いることも有効である。例えば、ヘッドに粉塵が溜まることによりデータの記録に不具合が生ずる場合がある。そのような場合は、同じラップにおける直前の記録状況が今後も続くと考えられるからである。
或いは、他のラップにおける同じリジョンの記録状況と、同じラップにおける直前の記録状況との両方を加味して、1データセット当たりのテープ長Mを求めるようにしてもよい。
【0048】
また、上述したLEOTの決定方法は、あくまで一例であり、バッファメモリ33に格納されたデータの容量及びテープ60におけるデータの記録状況に基づいてLEOTを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
更に、この第2の実施の形態では、制御部30の動作において、LEOTを既に通知したかどうかは考慮していない。これは、LEOTをホスト10に一度通知した後も、ホスト10からWriteコマンドを受け取る都度、図9のような評価を行い、LEOTを通知し続ける方が好ましいと考えたためである。しかしながら、LEOTを通知済かどうかを制御部30が記憶しておき、通知済であれば、図9のような評価を行わないような変形例も考えられる。
【0049】
このように、第2の実施の形態では、Writeコマンドに基づく処理を完了する度に、テープ60上の現在位置から記録不可エリアの開始位置(PEOT)までの距離Lと、(N+Nz)×Mとを比較し、前者が後者より下回った時点でLEOTを通知することとした。これにより、バッファメモリ33内に残っているデータの量及びそのデータを書き込む際のスキップの予測を反映した正確な時点でのLEOTレポートを達成することができる。
【図面の簡単な説明】
【0050】
【図1】本発明の実施の形態におけるコンピュータシステムの全体構成を示したブロック図である。
【図2】本発明の第1の実施の形態における制御部の機能構成を示したブロック図である。
【図3】本発明の第1の実施の形態における制御部のホストI/F部、データ格納部、LEOT決定部による動作を示したフローチャートである。
【図4】本発明の実施の形態におけるLEOTの決定方法について説明するための図である。
【図5】本発明の第1の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図6】本発明の第2の実施の形態における制御部の機能構成を示したブロック図である。
【図7】本発明の第2の実施の形態においてLEOTを決定する際に記録状況が用いられるテープ上の位置を説明するための図である。
【図8】本発明の第2の実施の形態において記録状況管理部によって管理される情報の一例を示した図である。
【図9】本発明の第2の実施の形態における制御部のホストI/F部、データ格納部、LEOT決定部による動作を示したフローチャートである。
【図10】本発明の第2の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図11】従来技術における問題点について具体的に説明するための図である。
【符号の説明】
【0051】
10…ホスト、20…テープドライブ、30…制御部、31…ホストI/F部、32…データ格納部、33…バッファメモリ、34…データ転送部、35…バッファ管理部、36…現在位置管理部、37…LEOT決定部、38…記録状況管理部、40…ヘッド、50,51…リール、60…テープ
【特許請求の範囲】
【請求項1】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、
前記データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された前記データの容量と、前記テープ媒体における現在のデータ書込み位置とに基づいて、当該テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段と
を備えた、装置。
【請求項2】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項1記載の装置。
【請求項3】
前記決定手段は、前記バッファメモリにデータを格納する命令をホストコンピュータから受けた際に、当該ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して前記出力時期を決定する、請求項1記載の装置。
【請求項4】
前記テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、
前記決定手段は、前記管理手段により管理される前記記録状況も加味して前記出力時期を決定する、請求項1記載の装置。
【請求項5】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長を前記記録状況に基づいて予測し、当該予測されたテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項4記載の装置。
【請求項6】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項4記載の装置。
【請求項7】
前記特定のトラックは、現在記録しているトラックとは異なるトラックであり、
前記特定の区間は、現在記録している位置と前記テープ媒体の終端とに挟まれた区間である、請求項6記載の装置。
【請求項8】
前記特定のトラックは、現在記録しているトラックであり、
前記特定の区間は、既にデータを記録した区間である、請求項6記載の装置。
【請求項9】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、
前記データをバッファメモリに格納するステップと、
前記バッファメモリに格納されているデータの容量を取得するステップと、
前記テープ媒体における現在のデータ書込み位置を特定するステップと、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップと
を含む、方法。
【請求項10】
前記格納するステップでは、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定するステップでは、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項9記載の方法。
【請求項11】
前記テープ媒体におけるデータの記録状況を採取するステップを更に含み、
前記判定するステップでは、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項9記載の方法。
【請求項12】
前記判定するステップは、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第1のテープ長を求めるステップと、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第2のテープ長を求めるステップと、
前記第1のテープ長と前記第2のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定するステップと
を更に含む、請求項11記載の方法。
【請求項13】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項11記載の方法。
【請求項14】
データの記録に用いられるテープ媒体を駆動するテープドライブに、
前記データをバッファメモリに格納する機能と、
前記バッファメモリに格納されているデータの容量を取得する機能と、
前記テープ媒体における現在のデータ書込み位置を特定する機能と、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能と
を実現させる、プログラム。
【請求項15】
前記格納する機能では、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定する機能では、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項14記載のプログラム。
【請求項16】
前記テープドライブに、
前記テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、
前記判定する機能では、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項14記載のプログラム。
【請求項17】
前記判定する機能は、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第1のテープ長を求める機能と、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第2のテープ長を求める機能と、
前記第1のテープ長と前記第2のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定する機能と
を更に実現させる、請求項16記載のプログラム。
【請求項18】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項16記載のプログラム。
【請求項1】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、
前記データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された前記データの容量と、前記テープ媒体における現在のデータ書込み位置とに基づいて、当該テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段と
を備えた、装置。
【請求項2】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項1記載の装置。
【請求項3】
前記決定手段は、前記バッファメモリにデータを格納する命令をホストコンピュータから受けた際に、当該ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して前記出力時期を決定する、請求項1記載の装置。
【請求項4】
前記テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、
前記決定手段は、前記管理手段により管理される前記記録状況も加味して前記出力時期を決定する、請求項1記載の装置。
【請求項5】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長を前記記録状況に基づいて予測し、当該予測されたテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項4記載の装置。
【請求項6】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項4記載の装置。
【請求項7】
前記特定のトラックは、現在記録しているトラックとは異なるトラックであり、
前記特定の区間は、現在記録している位置と前記テープ媒体の終端とに挟まれた区間である、請求項6記載の装置。
【請求項8】
前記特定のトラックは、現在記録しているトラックであり、
前記特定の区間は、既にデータを記録した区間である、請求項6記載の装置。
【請求項9】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、
前記データをバッファメモリに格納するステップと、
前記バッファメモリに格納されているデータの容量を取得するステップと、
前記テープ媒体における現在のデータ書込み位置を特定するステップと、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップと
を含む、方法。
【請求項10】
前記格納するステップでは、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定するステップでは、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項9記載の方法。
【請求項11】
前記テープ媒体におけるデータの記録状況を採取するステップを更に含み、
前記判定するステップでは、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項9記載の方法。
【請求項12】
前記判定するステップは、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第1のテープ長を求めるステップと、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第2のテープ長を求めるステップと、
前記第1のテープ長と前記第2のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定するステップと
を更に含む、請求項11記載の方法。
【請求項13】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項11記載の方法。
【請求項14】
データの記録に用いられるテープ媒体を駆動するテープドライブに、
前記データをバッファメモリに格納する機能と、
前記バッファメモリに格納されているデータの容量を取得する機能と、
前記テープ媒体における現在のデータ書込み位置を特定する機能と、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能と
を実現させる、プログラム。
【請求項15】
前記格納する機能では、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定する機能では、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項14記載のプログラム。
【請求項16】
前記テープドライブに、
前記テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、
前記判定する機能では、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項14記載のプログラム。
【請求項17】
前記判定する機能は、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第1のテープ長を求める機能と、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第2のテープ長を求める機能と、
前記第1のテープ長と前記第2のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定する機能と
を更に実現させる、請求項16記載のプログラム。
【請求項18】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項16記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2006−221695(P2006−221695A)
【公開日】平成18年8月24日(2006.8.24)
【国際特許分類】
【出願番号】特願2005−32076(P2005−32076)
【出願日】平成17年2月8日(2005.2.8)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
【公開日】平成18年8月24日(2006.8.24)
【国際特許分類】
【出願日】平成17年2月8日(2005.2.8)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】
[ Back to top ]