(57)【要約】  【課題】  テープ上の適切な位置にＬＥＯＴを設定する。  【解決手段】  テープに書き込むべきデータセットをホストから受け取るホストＩ/Ｆ部３１と、受け取ったデータセットをバッファメモリ３３に格納するデータ格納部３２と、バッファメモリ３３に格納されたデータを取り出してヘッドに転送するデータ転送部３４と、バッファメモリ３３に格納されているデータセットの数を管理するバッファ管理部３５と、テープ上の現在の書込み位置の情報を管理する現在位置管理部３６と、バッファ管理部３５が管理する情報と現在位置管理部３６が管理する情報とを照合することによりＬＥＯＴをホストに通知すべきかどうか判定するＬＥＯＴ決定部３７とを備える。  【選択図】  図２
2006221695.tif 000002
【特許請求の範囲】
【請求項１】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、
前記データを一時的に格納するバッファメモリと、
前記バッファメモリに格納された前記データの容量と、前記テープ媒体における現在のデータ書込み位置とに基づいて、当該テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段と
を備えた、装置。
【請求項２】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項１記載の装置。
【請求項３】
前記決定手段は、前記バッファメモリにデータを格納する命令をホストコンピュータから受けた際に、当該ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して前記出力時期を決定する、請求項１記載の装置。
【請求項４】
前記テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、
前記決定手段は、前記管理手段により管理される前記記録状況も加味して前記出力時期を決定する、請求項１記載の装置。
【請求項５】
前記決定手段は、前記バッファメモリに格納された前記データを記録するために必要なテープ長を前記記録状況に基づいて予測し、当該予測されたテープ長と、前記現在のデータ書込み位置から前記テープ媒体の終端までのテープ長との比較結果に基づいて、前記出力時期を決定する、請求項４記載の装置。
【請求項６】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項４記載の装置。
【請求項７】
前記特定のトラックは、現在記録しているトラックとは異なるトラックであり、
前記特定の区間は、現在記録している位置と前記テープ媒体の終端とに挟まれた区間である、請求項６記載の装置。
【請求項８】
前記特定のトラックは、現在記録しているトラックであり、
前記特定の区間は、既にデータを記録した区間である、請求項６記載の装置。
【請求項９】
データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、
前記データをバッファメモリに格納するステップと、
前記バッファメモリに格納されているデータの容量を取得するステップと、
前記テープ媒体における現在のデータ書込み位置を特定するステップと、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップと
を含む、方法。
【請求項１０】
前記格納するステップでは、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定するステップでは、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項９記載の方法。
【請求項１１】
前記テープ媒体におけるデータの記録状況を採取するステップを更に含み、
前記判定するステップでは、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項９記載の方法。
【請求項１２】
前記判定するステップは、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第１のテープ長を求めるステップと、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第２のテープ長を求めるステップと、
前記第１のテープ長と前記第２のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定するステップと
を更に含む、請求項１１記載の方法。
【請求項１３】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項１１記載の方法。
【請求項１４】
データの記録に用いられるテープ媒体を駆動するテープドライブに、
前記データをバッファメモリに格納する機能と、
前記バッファメモリに格納されているデータの容量を取得する機能と、
前記テープ媒体における現在のデータ書込み位置を特定する機能と、
取得された前記データの容量と、特定された前記現在のデータ書込み位置とに基づいて、前記テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能と
を実現させる、プログラム。
【請求項１５】
前記格納する機能では、ホストコンピュータから命令に応じて、前記テープ媒体に記録すべきデータを前記バッファメモリに格納し、
前記判定する機能では、前記ホストコンピュータからの次の命令で渡されることが予想されるデータの容量も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項１４記載のプログラム。
【請求項１６】
前記テープドライブに、
前記テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、
前記判定する機能では、採取した前記記録状況も加味して、前記接近に関する情報を出力するかどうかを判定する、請求項１４記載のプログラム。
【請求項１７】
前記判定する機能は、
前記バッファメモリに格納されているデータの容量と、前記記録状況とに基づいて、当該データを記録するために必要な第１のテープ長を求める機能と、
前記現在のデータ書込み位置に基づいて、前記テープ媒体におけるデータを記録可能な第２のテープ長を求める機能と、
前記第１のテープ長と前記第２のテープ長との比較結果に基づいて、前記接近に関する情報を出力するかどうかを判定する機能と
を更に実現させる、請求項１６記載のプログラム。
【請求項１８】
前記記録状況は、前記テープ媒体の特定のトラックの特定の区間におけるデータの記録の密度に関する情報である、請求項１６記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テープ媒体を駆動するテープドライブを制御する装置等に関し、より詳しくは、テープの終端に近づいた際にその旨を通知する機能を有する装置等に関する。
【背景技術】
【０００２】
テープに対する書込み/読出しを行うテープドライブは、通常、テープの終端が近づくとその事実を通知する機能を有する。テープの終端が近づいている旨は、例えば、ホストコンピュータ(以下、「ホスト」という)からのＷｒｉｔｅコマンドに対するエラーとして、ホストに通知される。尚、本明細書では、テープの終端をＰＥＯＴ(Physical End of Tape)と呼び、ＰＥＯＴの接近を通知するテープ上の位置をＬＥＯＴ(Logical End of Tape)と呼ぶ。
【０００３】
ところで、このような通知を行った場合、テープドライブは、それまでにホストから送られた全てのデータをテープ上に記録しなければならない。
一般に、テープドライブは、そのパフォーマンスの向上のため、大きなバッファメモリを持っている。ホストから送られたデータは、このバッファメモリに一時的に格納され、その後、テープに記録されることとなる。従って、ＰＥＯＴの接近を通知する時点で、バッファメモリに格納されている全てのデータを記録できるだけの余裕がテープ上に残っていなければならない。
【０００４】
従来、このような余裕として、一律にバッファサイズの容量を採用していた。即ち、ＰＥＯＴよりも前に、バッファサイズの容量分のデータを記録できるだけの余裕を持たせて、ＬＥＯＴを決定していた(例えば、特許文献１参照)。
【０００５】
【特許文献１】特開平８−６３９４５号公報(第７−８頁、第２図)
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このように、従来技術においては、一律な余裕を持たせてＬＥＯＴを決定していた。例えば、特許文献１では、ＰＥＯＴよりも約１５ｍ前の位置をＬＥＯＴとして決定している。
しかしながら、このように一律にＬＥＯＴを決定したのでは、テープ上の記録領域を無駄にしてしまう可能性があるという問題点が生ずる。
特許文献１では、１５ｍの余裕を持たせているが、バッファメモリが大きくなれば、その余裕分も増えることとなってしまうからである。しかも、バッファメモリに応じた余裕分を持たせてＬＥＯＴを決定しても、バッファメモリ内に書き込むべきデータが少ししかなければ、テープの容量は一層無駄になってしまうのである。
【０００７】
この問題点を、図１１(ａ)を参照して説明する。
図１１(ａ)では、バッファメモリが２５６データセットの容量を持ち、１データセット当たりのテープ長が７０ｍｍであるとしている。この場合、バッファメモリ内の全てのデータセットを記録するとした場合のテープ長は、７０ｍｍ×２５６＝約１８ｍとなる。そこで、１０ｍの余裕を持たせて、ＰＥＯＴよりも約２８ｍ前の位置にＬＥＯＴを設定している。
ところが、バッファメモリに実際には１つのデータセットしか記憶されていなかったとする。その場合、図の黒の帯状の部分にしかデータが記録されず、白の帯状の部分は無駄になってしまう。
【０００８】
また、テープのフォーマットの規格によっては、テープ上の損傷等があるエリアをスキップしてデータを記録する場合もある。例えば、ＩＢＭ、ヒューレットパッカード、シーゲイトテクノロジ(現サータンス)の３社が共同で策定した新規格ＬＴＯ(Linear Tape-Open)では、このような方式によるデータの記録が許されている。ＬＴＯでは、スキップ可能なテープ長は最大４ｍである。従って、最大限のスキップを行うと、１データセット当たりのテープ長は４ｍとなる。一方、スキップを行わなければ、１データセット当たりのテープ長は７０ｍｍで済む。つまり、前者は、後者の約５７倍にもなってしまうのである。
現状では、全てのデータセットでスキップ必要となるのは非常に稀であると考え、スキップがないと仮定した場合のテープ長に幾分かの余裕を持たせたテープ長を、ＬＥＯＴを決定する際の余裕分として採用している。しかしながら、スキップの頻度が想定を超えることはあり得るので、この方法は、バッファメモリ内のデータセットをテープに書ききれないというリスクを容認することとなっている。
【０００９】
この問題点を、図１１(ｂ)を参照して説明する。
図１１(ｂ)でも、図１１(ａ)と同様の考え方で、ＰＥＯＴよりも約２８ｍ前の位置にＬＥＯＴを設定している。
ところが、図示するようにスキップが頻繁に発生すると、ＰＥＯＴの左側に黒の帯で示したように、書ききれないデータが出て来てしまう。
【００１０】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、テープ上の適切な位置にＬＥＯＴを設定することにある。
また、本発明の他の目的は、テープの記録領域に無駄が生じないような位置にＬＥＯＴを設定することにある。
更に、本発明の他の目的は、テープの記録領域に無駄が生じず、かつ、テープの記録領域の不足も生じないような位置にＬＥＯＴを設定することにある。
【課題を解決するための手段】
【００１１】
かかる目的のもと、本発明では、現在バッファメモリに格納されているデータの量を指標として、ＬＥＯＴを報告するタイミングを動的に変更するようにした。即ち、本発明の装置は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する装置であって、データを一時的に格納するバッファメモリと、バッファメモリに格納されたデータの容量と、テープ媒体における現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報の出力時期を決定する決定手段とを備えている。これにより、バッファサイズ分の余裕をみてＬＥＯＴを報告してしまうことによる容量の損失を抑えることができる。
【００１２】
また、本発明は、往復して記録されるテープ上の特定範囲内のデータセットの個数の履歴に基づいてその範囲で書込み時にスキップが起こる可能性を判断し、実際に記録するデータの量にスキップの起こる可能性を加味してＬＥＯＴを報告する時点を決定するように構成することもできる。その場合、本発明の装置は、テープ媒体におけるデータの記録状況を管理する管理手段を更に備え、決定手段は、管理手段により管理される記録状況も加味して出力時期を決定するというものである。これにより、スキップが非常に起こりやすい場合にも、ＬＥＯＴを報告する適切なタイミングを算出することができる。
【００１３】
更に、本発明は、ＬＥＯＴを報告する適切なタイミングを決定する方法として捉えることもできる。その場合、本発明の第１の方法は、データの記録に用いられるテープ媒体を駆動するテープドライブを制御する方法であって、データをバッファメモリに格納するステップと、バッファメモリに格納されているデータの容量を取得するステップと、テープ媒体における現在のデータ書込み位置を特定するステップと、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定するステップとを含んでいる。また、第２の方法は、第１の方法において、テープ媒体におけるデータの記録状況を採取するステップを更に含み、判定するステップでは、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【００１４】
一方、本発明は、コンピュータに所定の機能を実現させるプログラムとして捉えることもできる。その場合、本発明の第１のプログラムは、データの記録に用いられるテープ媒体を駆動するテープドライブに、データをバッファメモリに格納する機能と、バッファメモリに格納されているデータの容量を取得する機能と、テープ媒体における現在のデータ書込み位置を特定する機能と、取得されたデータの容量と、特定された現在のデータ書込み位置とに基づいて、テープ媒体の終端の接近に関する情報を出力するかどうかを判定する機能とを実現させるものである。また、第２のプログラムは、第１のプログラムにおいて、テープドライブに、テープ媒体におけるデータの記録状況を採取する機能を更に実現させ、判定する機能では、採取した記録状況も加味して、接近に関する情報を出力するかどうかを判定するというものである。
【発明の効果】
【００１５】
本発明によれば、テープ上の適切な位置にＬＥＯＴを設定することができる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
図１は、本実施の形態が適用されるコンピュータシステムの構成を示した図である。このコンピュータシステムは、ホスト１０と、テープドライブ２０とから構成される。
ホスト１０は、パーソナルコンピュータ等の一般的なコンピュータである。即ち、コンピュータ全体の動作を制御するＣＰＵ(Central Processing Unit)や、ＣＰＵが直接アクセスするプログラム及びデータを記憶するメインメモリを備える。また、処理の指示やデータを入力するためのキーボード、マウス等の入力装置や、処理結果を表示するためのディスプレイ等の出力装置を更に備えていてもよい。
【００１７】
テープドライブ２０は、制御部３０と、ヘッド４０と、リール５０及び５１とを備える。そして、テープ６０が、リール５０とリール５１とにまたがって巻かれている。
ヘッド４０は、テープ６０へのデータの書込み及びテープ６０からのデータの読出しを行う機構である。また、本実施の形態において、テープ６０には、データを記録するデータバンドの他に、サーボバンドが設けられている。このサーボバンドには、テープ６０の長手方向の位置を表すサーボフレイムが記録されており、ヘッド４０は、このサーボフレイムに基づいてテープ６０における現在の書込み位置を検知するようになっている。
【００１８】
リール５０及び５１は、回転することによって、リール５０からリール５１の方向へ、又は、リール５１からリール５０の方向へテープ６０を移動させる機構である。
また、制御部３０は、ホスト１０からの指示に従い、テープ６０へのデータの書込み及びテープ６０からのデータの読出しを制御する機能を有する部分である。尚、制御部３０を実現するため、テープドライブ２０もホスト１０と同様、ＣＰＵやメインメモリを備えている。
【００１９】
本実施の形態では、この制御部３０の制御によりテープ上の適切な位置にＬＥＯＴを設定することを可能としている。以下、この制御部３０について詳細に説明する。
(第１の実施の形態)
図２は、第１の実施の形態における制御部３０の機能構成を示した図である。この制御部３０は、ホストインターフェース部(以下、「ホストＩ/Ｆ部」という)３１と、データ格納部３２と、バッファメモリ３３と、データ転送部３４とを備える。また、バッファ管理部３５と、現在位置管理部３６と、ＬＥＯＴ決定部３７とを更に備える。
【００２０】
ホストＩ/Ｆ部３１は、テープ６０に書き込むべきデータセットをホスト１０から受け取ったり、それに対する応答としてＬＥＯＴを通知したりする。
データ格納部３２は、ホストＩ/Ｆ部３１からデータセットを受け取る。そして、例えば、２５６個のデータセットを格納できるだけの容量を持つバッファメモリ３３にそのデータセットを格納する。一方、データ転送部３４は、バッファメモリ３３に格納されたデータを取り出してテープ６０に記録するためにヘッド４０に転送したり、テープ６０上の現在の書込み位置の情報(以下、「現在位置情報」という)をヘッド４０から受け取ったりする。
【００２１】
バッファ管理部３５は、バッファメモリ３３に格納されているデータセットの数を管理し、現在位置管理部３６は、データ転送部３４から現在位置情報を受け取って管理する。
ＬＥＯＴ決定部３７は、バッファ管理部３５が管理する情報と現在位置管理部３６が管理する情報とを照合することにより、現在の書込み位置をＬＥＯＴとして決定すべきかどうか判定する。ＬＥＯＴを決定するという点で決定手段として把握できる部分である。
【００２２】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、テープドライブ２０のＣＰＵが、ホストＩ/Ｆ部３１、データ格納部３２、データ転送部３４、バッファ管理部３５、現在位置管理部３６、ＬＥＯＴ決定部３７の各機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
【００２３】
次に、制御部３０の動作の一例について説明する。
図３は、制御部３０のうち、ホストＩ/Ｆ部３１、データ格納部３２、ＬＥＯＴ決定部３７の動作を示したフローチャートである。
ホスト１０からＷｒｉｔｅコマンドが送られると、まず、ホストＩ/Ｆ部３１が、Ｗｒｉｔｅコマンドを受け取る(ステップ１０１)。
次に、Ｗｒｉｔｅコマンドによって指定されたデータセットは、データ格納部３２に渡され、データ格納部３２がバッファメモリ３３に格納する(ステップ１０２)。一方、バッファ管理部３５は、バッファメモリ３３に格納されたデータセットの数Ｎを管理している。そこで、データ格納部３２は、このときバッファメモリ３３に格納したデータセットの数をＮに加算するようバッファ管理部３５に指示する(ステップ１０３)。これにより、現在バッファメモリ３３に格納されているデータセットの数が、バッファ管理部３５が管理するデータセットの数Ｎにも反映されることになる。
【００２４】
その後、データ格納部３２からＬＥＯＴ決定部３７へ制御が渡され、ＬＥＯＴ決定部３７が、バッファ管理部３５で管理されるＮの値を取得する(ステップ１０４)。また、現在位置管理部３６は、現在位置情報を管理している。そこで、ＬＥＯＴ決定部３７は、この現在位置情報に基づいて、現在の書込み位置からＰＥＯＴまでのテープ長Ｌを求める(ステップ１０５)。
そして、ＬＥＯＴ決定部３７は、ＬＥＯＴを通知すべきかどうかを判断する。
ＬＥＯＴを通知すべきかどうかの判断は、具体的には、次のような考え方に従って行う。
まず、バッファメモリ３３内にＮ個のデータセットが残されている場合は、現在位置からＰＥＯＴまでの領域にそのＮ個のデータセットを記録できるだけの余裕があればよい。従って、１データセット当たりのテープ長をＤとすると、現在位置からＰＥＯＴまでのテープ長ＬがＮ×Ｄになった時点でＬＥＯＴを通知すればよいことになる。
【００２５】
但し、ここで注意しなければならないのは、ＬＥＯＴは、Ｗｒｉｔｅコマンドに対する応答として通知されるという点である。即ち、ＬＥＯＴをホスト１０に通知した後、次のＷｒｉｔｅコマンドでホスト１０からデータセットが送られてくる可能性がある。従って、次のＷｒｉｔｅコマンドを受けた後のバッファメモリ３３内のデータセットの個数と現在のテープ上の位置との関係で、ＬＥＯＴを通知するかどうかを判断する必要がある。１回のＷｒｉｔｅコマンドがバッファメモリ３３内に最大Ｎｚ個のデータセットを増やすと仮定すると、現在位置からＰＥＯＴまでのテープ長Ｌが(Ｎ＋Ｎｚ)×Ｄになった時点でＬＥＯＴを通知することになる。
【００２６】
このことを、図４を参照して説明する。
図４(ａ)は、ＬＥＯＴを通知した後のＷｒｉｔｅコマンドによってバッファメモリ３３内のデータセットが増えることを考慮しない場合のＬＥＯＴの位置を示した図である。バッファメモリ３３に５つのデータセット(斜線部)が残っているため、ＰＥＯＴまでにこの５つのデータセットを記録する余裕(斜線部)を設けただけである。
一方、図４(ｂ)は、ＬＥＯＴを通知した後のＷｒｉｔｅコマンドによってバッファメモリ３３内のデータセットが増えることを考慮した場合のＬＥＯＴの位置を示した図である。この場合、図４(ａ)のＬＥＯＴの位置よりも手前に更に余裕を設けている。この余裕は、ＬＥＯＴを通知した後のＷｒｉｔｅコマンドによってバッファメモリ３３に追加されるデータセットを記録するために設けられるものである。ここでは、Ｗｒｉｔｅコマンドによって３つのデータセット(濃い斜線部)が追加されるものとし、図４(ａ)のＬＥＯＴよりも手前に、３つのデータセットの記録する余裕を設け、その手前をＬＥＯＴとしている。
図４(ａ)のＬＥＯＴの位置では、ＬＥＯＴを通知した後のＷｒｉｔｅコマンドによってバッファメモリ３３に追加されたデータセットを記録することができなくなってしまうが、図４(ｂ)のＬＥＯＴの位置であれば、データセットが追加されたとしても、記録領域の不足は生じない。
【００２７】
このようなことから、ＬＥＯＴ決定部３７は、Ｌが(Ｎ＋Ｎｚ)×Ｄよりも小さいかどうかを判定する(ステップ１０６)。
その結果、Ｌが(Ｎ＋Ｎｚ)×Ｄよりも小さいと判定されれば、ＬＥＯＴを通知する(ステップ１０７)。一方、Ｌが(Ｎ＋Ｎｚ)×Ｄよりも小さくないと判定されれば、ＬＥＯＴを通知せずに処理を終了する。
例えば、１データセット当たりのテープ長Ｄが７０ｍｍであり、１回のＷｒｉｔｅコマンドでバッファメモリ３３に格納する最大のデータセットの数Ｎｚが３２個であるとする。この場合、ＬＥＯＴは、ＰＥＯＴまでのテープ長が(Ｎ＋３２)×７０(ｍｍ)になった時点で通知される。
【００２８】
ところで、以上の動作において、データ格納部３２は、ホスト１０から受け取ったデータをバッファメモリ３３に格納するのみである。従って、このままでは、テープ６０への実際の書き込みは行われていないことになる。そこで、データ転送部３４が、所定のタイミングでバッファメモリ３３に格納されたデータセットを取り出し、ヘッド４０に転送する。
尚、この転送のタイミングとしては、種々のものが考えられるが、本実施の形態ではそのタイミングを特に限定しない。例えば、バッファメモリ３３に格納されたデータセットの容量がバッファメモリ３３の全容量の一定割合に達したタイミングでデータを転送するようにしてもよい。また、バッファメモリ３３に格納された全てのデータセットをテープ６０に書き込むよう、データ転送部３４がホスト１０から指示された場合に、データを転送するようにしてもよい。
【００２９】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部３４は図５に示すような動作を行う。
即ち、まず、データ転送部３４は、テープ６０への書き込みの単位であるデータセットをバッファメモリ３３から１つ取り出してヘッド４０に転送する(ステップ１１１)。これにより、ヘッド４０が、このデータセットを実際にテープ６０に書き込むことになる。
また、この時、データ転送部３４は、バッファ管理部３５が管理するバッファメモリ３３内のデータセットの数Ｎから１を減算する(ステップ１１２)。
【００３０】
一方、データ転送部３４は、ヘッド４０から現在位置情報を受け取る(ステップ１１３)。そして、現在位置管理部３６が管理する現在位置情報を最新の状態に更新する(ステップ１１４)。
つまり、データ転送部３４がバッファ管理部３５及び現在位置管理部３６が管理する情報を常に最新状態に更新しておくことにより、ＬＥＯＴ決定部３７は、この最新の情報に基づいてＬＥＯＴを決定することができるのである。
【００３１】
以上により、第１の実施の形態の動作は終了する。
尚、上述したＬＥＯＴの決定方法は、あくまで一例であり、バッファメモリ３３に格納されたデータの容量に基づいてＬＥＯＴを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
また、この第１の実施の形態では、制御部３０の動作において、ＬＥＯＴを既に通知したかどうかは考慮していない。これは、ＬＥＯＴをホスト１０に一度通知した後も、ホスト１０からＷｒｉｔｅコマンドを受け取る都度、図３のような評価を行い、ＬＥＯＴを通知し続ける方が好ましいと考えたためである。しかしながら、ＬＥＯＴを通知済かどうかを制御部３０が記憶しておき、通知済であれば、図３のような評価を行わないような変形例も考えられる。
【００３２】
このように、第１の実施の形態では、Ｗｒｉｔｅコマンドに基づく処理を完了する度に、テープ６０上の現在位置から記録不可エリアの開始位置(ＰＥＯＴ)までの距離Ｌと、(Ｎ＋Ｎｚ)×Ｄとを比較し、前者が後者より下回った時点でＬＥＯＴを通知することとした。これにより、バッファメモリ３３内に残っているデータの量を反映した適切なＬＥＯＴの通知時期を決定することができる。
【００３３】
この効果について更に具体的な数値を用いて説明する。
バッファメモリ３３が約４００ＫＢのデータセットを２５６個格納でき、１データセットがフォーマット上許される最大の距離４ｍを使って記録されたとする。即ち、１データセットを記録するのに、最大限のスキップが行われた場合を考える。この場合、ＬＥＯＴは、ＰＥＯＴまで１０２４(＝２５６×４)ｍの位置となる。
仮にこの範囲で何の障害もなくデータセットがきれいに並んで記録されたとすると、１つのデータセット当たりのテープ長を７０ｍｍとして、１４６２８(＝１０２４×１０００／７０)個のデータセットが記録されるはずである。
従って、５７４８(＝(１４６２８−２５６)×０．４)ＭＢの容量の損失となる。
【００３４】
(第２の実施の形態)
図６は、第２の実施の形態における制御部３０の機能構成を示した図である。この制御部３０は、第１の実施の形態における制御部３０に対し、記録状況管理部３８を追加したものである。
記録状況管理部３８は、テープ６０上のデータの記録状況を管理する。記録状況を管理するという点で管理手段として把握できる部分である。この記録状況管理部３８も、テープドライブ２０のＣＰＵが、その機能を実現するプログラムを、図示しない磁気ディスク装置等からメインメモリに読み込むことにより実現される。
尚、制御部３０にてテープ６０における記録状況を管理できるようにするために、本実施の形態では、第１の実施の形態におけるヘッド４０及びデータ転送部３４の機能に対し、幾つかの新たな機能を追加している。即ち、ヘッド４０には、制御部３０から受け取ったデータセットをテープ６０に書き込んだ後、その書き込んだデータセットを再度読み出して制御部３０に返送する機能が追加されている。また、データ転送部３４には、読み出されたデータセットをヘッド４０から受け取り、それが書き込みを指示したデータセットと一致するかどうかを検証する機能が追加されている。
【００３５】
ところで、第１の実施の形態では、１データセット当たりのテープ長Ｄとして予め決められた値を用いたが、この第２の実施の形態では、実際の記録状況に基づいて、１データセットの記録に必要なテープ長を求める。
リニア方式のテープドライブでは、ヘッド４０がテープ６０上を複数回往復することによりデータを記録する。従って、テープ６０に損傷がある場合、そのエリアを通る度にその損傷を回避するためのスキップを行うことが多い。本実施の形態では、このような動作に着目して、一定のエリアにどの程度の数のデータセットを記録できるかを予測する。即ち、テープ６０の同じエリアに過去に記録されたデータセットの個数を観測し、その観測結果に基づいてそのエリアにどの程度のデータセットを記録できるか予測する。
【００３６】
このことを、図７を参照して具体的に説明する。
例えば、ＬＴＯの第２世代では、テープ６０上をヘッド４０が３２往復する。図７では、一番上の右方向への矢印が第１回目の往路を、その下の左方向への矢印が第１回目の復路を表している。また、その下の右方向への矢印が第２回目の往路を、その下の左方向への矢印が第２回目の復路を、以下、同様にして、一番下の左方向への矢印が第３２回目の復路を表している。そして、この第３２回目の復路の終端がＰＥＯＴになっている。
現在の書込み位置がこの最後の復路の位置Ｐである時にＬＥＯＴを通知すべきかどうかを判断する場合を考える。この場合は、テープ６０の位置ＰとＰＥＯＴの間のエリアにおけるこれまでの３１．５往復分の記録状況に基づいて、１データセット当たりのテープ長を求める。即ち、図７において網掛けで示した部分の記録状況を参照する。
【００３７】
そのために、本実施の形態では、記録状況管理部３８が図８に示すような情報(テープマップ)を採取するようにしている。
図において、横軸はラップ(Wrap)を示している。ラップとは、テープ６０上のヘッド４０の経路の片道のことである。即ち、ヘッド４０がテープ６０上を３２往復する場合は、テープ６０上には６４ラップが存在することになる。図では、ラップを０〜６３で表している。一方、縦軸はリジョン(Region)を示している。リジョンとは、テープ６０の全長を分割してできたエリアのことである。図では、テープ６０を１２８分割し、リジョンを０〜１２７で表している。そして、各ラップの各リジョンに記録できたデータセットの数を管理している。
【００３８】
尚、偶数ラップは往路であり、奇数ラップは復路であるが、いずれのラップにおいても、リジョンは、経路に沿って採番されるものとする。即ち、偶数ラップの場合、リジョン０は、ＢＯＴ(Beginning of Tape)、ＥＯＴ(End of Tape)が存在する側(図７では左側)となり、リジョン１２７は、ＢＯＴ、ＥＯＴが存在しない側(図７では右側)となる。逆に、奇数ラップの場合、リジョン０は、ＢＯＴ、ＥＯＴが存在しない側(図７では右側)となり、リジョン１２７は、ＢＯＴ、ＥＯＴが存在する側(図７では左側)となる。
【００３９】
従って、ＬＥＯＴであるかどうかの判定は、通常、ラップ６３のリジョン１２７の幾つか手前で行われることになる。
例えば、ラップ６３のリジョン１２０でＬＥＯＴを判定する場合は、図中、四角囲みした部分の記録状況を用いる。具体的には、これらの部分の記録状況から、ラップごとの１データセット当たりのテープ長を求め、その平均値や最小値を、ＬＥＯＴの決定に用いる１データセット当たりのテープ長Ｍとする。
【００４０】
このような記録状況を用いたＬＥＯＴ決定を行う本実施の形態の動作について説明する。
図９は、制御部３０のうち、ホストＩ/Ｆ部３１、データ格納部３２、ＬＥＯＴ決定部３７の動作を示したフローチャートである。
ホスト１０からＷｒｉｔｅコマンドが送られると、まず、ホストＩ/Ｆ部３１が、Ｗｒｉｔｅコマンドを受け取る(ステップ２０１)。
次に、Ｗｒｉｔｅコマンドによって指定されたデータセットは、データ格納部３２に渡され、データ格納部３２がバッファメモリ３３に格納する(ステップ２０２)。一方、バッファ管理部３５は、バッファメモリ３３に格納されたデータセットの数Ｎを管理している。そこで、データ格納部３２は、このときバッファメモリ３３に格納したデータセットの数をＮに加算するようバッファ管理部３５に指示する(ステップ２０３)。これにより、現在バッファメモリ３３に格納されているデータセットの数が、バッファ管理部３５が管理するデータセットの数Ｎにも反映されることになる。
【００４１】
その後、データ格納部３２からＬＥＯＴ決定部３７へ制御が渡され、ＬＥＯＴ決定部３７が、バッファ管理部３５で管理されるＮの値を取得する(ステップ２０４)。また、現在位置管理部３６は、現在位置情報を管理している。そこで、ＬＥＯＴ決定部３７は、この現在位置情報に基づいて、現在の書込み位置からＰＥＯＴまでのテープ長Ｌを求める(ステップ２０５)。
【００４２】
更に、本実施の形態では、記録状況管理部３８が、現在までのテープ６０に対する記録状況であるテープマップを管理している。そこで、ＬＥＯＴ決定部３７は、このテープマップを参照して、１データセット当たりのテープ長Ｍを求める(ステップ２０６)。
【００４３】
そして、ＬＥＯＴ決定部３７は、ＬＥＯＴを通知すべきかどうかを判断する。
第１の実施の形態では、１データセット当たりのテープ長として予め決められた固定の値Ｄを用いていたが、本実施の形態では、ステップ２０６で求めたＭを用いる。即ち、現在位置からＰＥＯＴまでのテープ長Ｌが(Ｎ＋Ｎｚ)×Ｍよりも小さいかどうかを判定する(ステップ２０７)。
その結果、Ｌが(Ｎ＋Ｎｚ)×Ｍよりも小さいと判定されれば、ＬＥＯＴを通知する(ステップ２０８)。一方、Ｌが(Ｎ＋Ｎｚ)×Ｍよりも小さくないと判定されれば、ＬＥＯＴを通知せずに処理を終了する。
【００４４】
ところで、以上の動作において、データ格納部３２は、ホスト１０から受け取ったデータをバッファメモリ３３に格納するのみである。従って、このままでは、テープ６０への実際の書き込みは行われていないことになる。そこで、データ転送部３４が、所定のタイミングでバッファメモリ３３に格納されたデータセットを取り出し、ヘッド４０に転送する。尚、このタイミングとしては、第１の実施の形態でも述べた通り、種々のものが考えられる。
【００４５】
動作するタイミングの違いはあるが、いずれの場合においても、データ転送部３４は図１０に示すような動作を行う。
即ち、まず、データ転送部３４は、テープ６０への書き込みの単位であるデータセットをバッファメモリ３３から１つ取り出してヘッド４０に転送する(ステップ２１１)。これにより、ヘッド４０が、このデータセットを実際にテープ６０に書き込むことになる。
また、この時、データ転送部３４は、バッファ管理部３５が管理するバッファメモリ３３内のデータセットの数Ｎから１を減算する(ステップ２１２)。
【００４６】
一方、データ転送部３４は、ヘッド４０から現在位置情報及び読み出したデータセットを受け取る(ステップ２１３)。そして、まず、現在位置管理部３６が管理する現在位置情報を最新の状態に更新する(ステップ２１４)。次に、バッファメモリ３３から取り出してヘッド４０に転送したデータセットと、ヘッド４０から受け取ったデータセットとが一致するかどうかを検証する(ステップ２１５)。そして、その検証の結果に基づいて、記録状況管理部３８が管理する記録状況を更新する(ステップ２１６)。
つまり、データ転送部３４がバッファ管理部３５、現在位置管理部３６、記録状況管理部３８が管理する情報を常に最新状態に更新しておくことにより、ＬＥＯＴ決定部３７は、この最新の情報に基づいてＬＥＯＴを決定することができるのである。
【００４７】
以上により、第２の実施の形態の動作は終了する。
尚、この第２の実施の形態では、他のラップの同じリジョンの記録状況に基づいてＬＥＯＴを決定するようにした。
しかしながら、往路と復路とで異なるヘッドを用いるテープドライブ２０の場合は、同じ復路であるラップ１、３、…、５９、６１の同じリジョンの記録状況のみを調べるようにしてもよい。また、この場合、復路の全てのラップの記録状況を用いるのではなく、ラップ６３の近傍のラップにおける記録状況のみを用いることも考えられる。
一方、ラップ６４における現在位置の少し前の記録状況を用いることも有効である。例えば、ヘッドに粉塵が溜まることによりデータの記録に不具合が生ずる場合がある。そのような場合は、同じラップにおける直前の記録状況が今後も続くと考えられるからである。
或いは、他のラップにおける同じリジョンの記録状況と、同じラップにおける直前の記録状況との両方を加味して、１データセット当たりのテープ長Ｍを求めるようにしてもよい。
【００４８】
また、上述したＬＥＯＴの決定方法は、あくまで一例であり、バッファメモリ３３に格納されたデータの容量及びテープ６０におけるデータの記録状況に基づいてＬＥＯＴを決定するものであれば、具体的な決定方法としては種々の方法を採用することができる。
更に、この第２の実施の形態では、制御部３０の動作において、ＬＥＯＴを既に通知したかどうかは考慮していない。これは、ＬＥＯＴをホスト１０に一度通知した後も、ホスト１０からＷｒｉｔｅコマンドを受け取る都度、図９のような評価を行い、ＬＥＯＴを通知し続ける方が好ましいと考えたためである。しかしながら、ＬＥＯＴを通知済かどうかを制御部３０が記憶しておき、通知済であれば、図９のような評価を行わないような変形例も考えられる。
【００４９】
このように、第２の実施の形態では、Ｗｒｉｔｅコマンドに基づく処理を完了する度に、テープ６０上の現在位置から記録不可エリアの開始位置(ＰＥＯＴ)までの距離Ｌと、(Ｎ＋Ｎｚ)×Ｍとを比較し、前者が後者より下回った時点でＬＥＯＴを通知することとした。これにより、バッファメモリ３３内に残っているデータの量及びそのデータを書き込む際のスキップの予測を反映した正確な時点でのＬＥＯＴレポートを達成することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施の形態におけるコンピュータシステムの全体構成を示したブロック図である。
【図２】本発明の第１の実施の形態における制御部の機能構成を示したブロック図である。
【図３】本発明の第１の実施の形態における制御部のホストＩ/Ｆ部、データ格納部、ＬＥＯＴ決定部による動作を示したフローチャートである。
【図４】本発明の実施の形態におけるＬＥＯＴの決定方法について説明するための図である。
【図５】本発明の第１の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図６】本発明の第２の実施の形態における制御部の機能構成を示したブロック図である。
【図７】本発明の第２の実施の形態においてＬＥＯＴを決定する際に記録状況が用いられるテープ上の位置を説明するための図である。
【図８】本発明の第２の実施の形態において記録状況管理部によって管理される情報の一例を示した図である。
【図９】本発明の第２の実施の形態における制御部のホストＩ/Ｆ部、データ格納部、ＬＥＯＴ決定部による動作を示したフローチャートである。
【図１０】本発明の第２の実施の形態における制御部のデータ転送部による動作を示したフローチャートである。
【図１１】従来技術における問題点について具体的に説明するための図である。
【符号の説明】
【００５１】
１０…ホスト、２０…テープドライブ、３０…制御部、３１…ホストＩ/Ｆ部、３２…データ格納部、３３…バッファメモリ、３４…データ転送部、３５…バッファ管理部、３６…現在位置管理部、３７…ＬＥＯＴ決定部、３８…記録状況管理部、４０…ヘッド、５０，５１…リール、６０…テープ
【図１】
2006221695.tif 000003
【図２】
2006221695.tif 000004
【図３】
2006221695.tif 000005
【図４】
2006221695.tif 000006
【図５】
2006221695.tif 000007
【図６】
2006221695.tif 000008
【図７】
2006221695.tif 000009
【図８】
2006221695.tif 000010
【図９】
2006221695.tif 000011
【図１０】
2006221695.tif 000012
【図１１】
2006221695.tif 000013