(57)【特許請求の範囲】
【請求項１】
テープ媒体に対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われ、前記テープ媒体を有する１つの（テープ）カートリッジを搭載され、上位装置から（それぞれが移動命令（Position）により指定されたテープ位置に移動して）読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、複数の前記Ｒｅａｄは（順に第１、第２、・・・第ｍ、第ｎ・・・；ｍ、ｎ＝ｍ＋１）を含む前記コマンド列を受取るテープ記録装置であって、
読出し及び書込みに関わるデータを保管するバッファと、
前記バッファに保管されたデータを記録するテープと、
前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、
読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、追記書込み命令に応じて前記バッファに保管されたデータを前記テープの追記データ終端位置（ＥＯＤ）から書込む制御手段とを備え、
更に、書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、
前記制御手段は、
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）から保管し、
（ｂ）前記バッファ内データが前記不揮発メモリに書込まれた際に前記上位装置に前記追記書込み命令の完了を返し、
（ｃ）前記不揮発性メモリに保管されたデータに対して、前記追記書込み命令を受け取った後の第ｍのＲｅａｄの読込みデータのテープ上の終端位置から第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書込むべきテープ書込み位置（ＥＯＤ）に移動して追記書込みを実行し、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み命令を受けた場合に、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前の場合に、前記上書きデータ位置を追記データ終端位置（ＥＯＤ）として更新し、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後の場合に、前記上書きデータ位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新する、テープ記録装置。
【請求項２】
前記判断基準は、前記テープの書込むべきデータ終端位置（ＥＯＤ）が前記移動距離間（前記終端位置から前記開始位置の間）に存在する場合である請求項１に記載の装置。
【請求項３】
前記制御手段は、更新された前記データ終端位置（ＥＯＤ）を前記不揮発性メモリに保管する請求項１に記載の装置。
【請求項４】
前記制御手段は、更新された前記データ終端位置（ＥＯＤ）を前記テープを含むカートリッジが有する不揮発性メモリに保管する請求項１に記載の装置。
【請求項５】
読出し及び追記書込みに関わるデータを一時保管するバッファと、前記バッファに保管されたデータを記録するテープと、前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、追記書込み命令に応じて前記バッファに保管されたデータを前記テープの追記データ終端位置（ＥＯＤ）から書込む制御手段とを備え、前記テープに対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われるテープ記録装置において、前記テープ媒体を有する１つのテープカートリッジを搭載され、上位装置から読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、複数の前記Ｒｅａｄは順に第１、第２、・・・第ｍ、第ｎ・・・（ｍ、ｎ＝ｍ＋１）を含む前記コマンド列を受取った場合の、書込み方法であって、
前記装置又はカートリッジに書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）に保管するステップと、
（ｂ）前記バッファ内データが前記不揮発性メモリに書き込まれた際に上前記位装置に前記追記書込み命令の完了を返すステップと、
（ｃ）前記不揮発性メモリに保管されたデータに対して、第ｍのＲｅａｄの読込みデータのテープ上の終端位置から連続する第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書き込むべきテープ書込み位置（ＥＯＤ）に移動して追記書き込むステップと、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み命令を受けた場合に、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前の場合に、前記上書きデータ終端位置を追記データ終端位置（ＥＯＤ）として更新するステップと、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後の場合に、前記上書きデータ終端位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新するステップと、を含むことを特徴とする、追記書込み方法。
【請求項６】
読出し及び追記書込みに関わるデータを一時保管するバッファと、  前記バッファに保管されたデータを記録するテープと、前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、書込み命令に応じて前記バッファに保管されたデータを前記テープから書込む制御手段とを備えたテープ記録装置において、テープ媒体に対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われ、前記テープ媒体を有する１つのテープカートリッジを搭載され、上位装置から読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、複数の前記Ｒｅａｄは順に第１、第２、・・・第ｍ、第ｎ・・・（ｍ、ｎ＝ｍ＋１）を含む前記コマンド列を受取った場合の、書込みのためのプログラムであって、
前記装置又は前記カートリッジに、書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）に保管するステップと、
（ｂ）前記バッファ内データが前記不揮発性メモリに書き込まれた際に前記上位装置に前記追記書込み命令の完了を返すステップと、
（ｃ）前記不揮発性メモリに保管されたデータに対して、第ｍのＲｅａｄの読込みデータのテープ上の終端位置から連続する第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書き込むべきテープ書込み位置（ＥＯＤ）に移動して追記書き込むステップと、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み命令を受けた場合に、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前の場合に、前記上書きデータ終端位置を追記データ終端位置（ＥＯＤ）として更新するステップと、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後の場合に、前記上書きデータ終端位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新するステップと、をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読出し及び書込み命令（Read及びWrite）の混在するコマンド列を受け取った場合における最適な書込みを実行するリニア記録方式のテープ記憶装置、その方法、及びプログラムに関する。
【背景技術】
【０００２】
テープ記録装置（テープドライブ）は、シーケンシャルアクセスデバイスである。ドライブの動作には、テープカートリッジの取込み／搭載 (Mount/Load)と、吐出し(Unmount、Unload)がある。また、テープ動作には、テープ媒体に対する位置移動（Position命令)、書込み（Write命令)、読出し（Read命令)と、同期(Sync命令：Synchronize)がある。【０００３】
テープ上に書かれるデータには、ユーザデータと、ユーザデータの区切りを表すファイルマーク(ＦＭ：Ｆｉｌｅ  Ｍａｒｋｅｒ)がある。Write動作は、テープ上の最終データの後へ移動してから書込む追記方式か、古いデータの上に新たに書き直す上書き方式のいずれかになる。【０００４】
通常、テープドライブでは、読出し動作と書込み動作は混在できる。その際、移動動作と同期動作（ｆｌｕｓｈ）を伴う。同期動作と移動動作はテープの長さ方向の移動を発生させるため、テープドライブのRead/Writeのパフォーマンスを悪くする要因となっている。なお、同期動作は、バッファに一時保管されたデータをテープ媒体に書いたことを確実にする動作である。【０００５】
階層ストレージ管理システム（HSM：HierarchicalStorage Management）ではテープドライブに対する読出し/書き込み動作が混在している。
テープドライブもHSMの下層のテープライブラリに含まれている。全体の読出し・書込み処理の全体のパフォーマンスの低下を避けるために単一テープドライブに対してRead/Write動作の混在は行っていない。【０００６】
その代わり、テープカートリッジのマウント毎にWriteもしくはRead動作の何れかだけを行っている。または、複数のテープドライブをWrite用と Read用に分けている。これらの方法は、より多くのテープドライブを必要とし、また時間（手間）のかかるマウント動作を増やし処理パフォーマンスを低下させる。【０００７】
非特許文献１及び２は、テープカートリッジがＲｅａｄ及びＷｒｉｔｅ専用に使用される利用環境を例示する。大規模な科学技術計算では特に、１つのテープカートリッジにＷｒｉｔｅ・Ｒｅａｄ混在で使用するとパフォーマンスの向上が図れない。この点は通常のテープ記憶装置を含む記憶装置階層化システムにおいても同様である。【０００８】
特許文献１は、テープドライブが１つのカートリッジにおいて、Read/Write動作の混在させた操作（オペレーション）を実現させる発明を提供する。ここで、この発明で考慮されているＷｒｉｔｅ方式は、追記書込み（Append  Write、追記Ｗｒｉｔｅ）である。テープドライブのシーケンシャルの移動方式より、追記Ｗｒｉｔｅは、テープ上の書込みデータの終端位置（ＥＯＤ：End  ｏｆ  Ｄａｔａ）を順次後退させる書込み方式である。【０００９】
しかし、テープドライブのWrite方式には、追記Writの他に上書き書込み（Over  Write、上書きWrite）がある。上書きWriteは、追記Writeによりデータが書込み済みのテープ位置（例えばデータセット）に、新たなデータを上書きするコマンドである。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特願２００９−２９４３０９
【非特許文献】
【００１１】
【非特許文献１】http://castor.web.cern.ch/castor/presentations/2006/Review/Ｃastor_Monitoring.pdf
【非特許文献２】https://twiki.cern.ch/twiki/pub/FIOgroup/TapeRefCernUsageNov2007/tape_usage_efficiency_v05.pdf
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従って、一つのテープドライブ及びテープカートリッジにおけるRead/Writeの混在操作において、上書きＷｒｉｔｅが受けた場合も考慮する必要である。【００１３】
そこで、本発明の目的は、Read/Write動作の混在するオペレーションの最中に上書きＷｒｉｔｅを受ける場合の、最適な書込み方法を有する（リニア記録方式）テープ記憶装置、その方法、及びプログラムを提供することである。
【課題を解決するための手段】
【００１４】
上記の目的を達成する本発明は、テープ媒体に対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われ、読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、上位装置から複数の前記Ｒｅａｄは順に第１、第２、・・・第ｍ、第ｎ・・・（ｍ、ｎ＝ｍ＋１）を与える前記コマンド列を受取るテープ記録装置である。
この装置は、読出し及び書込みに関わるデータを保管するバッファと、
前記バッファに保管されたデータを記録するテープと、
前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、
読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、追記書込み命令に応じて前記バッファに保管されたデータを前記テープのデータ書込み追記データ終端位置（ＥＯＤ）から書込む制御手段とを備え、
更に、書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、前記制御手段は、更に
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）から保管し、
（ｂ）前記バッファ内データが前記不揮発メモリに書込まれた際に前記上位装置に前記追記書込み命令の完了を返し、
（ｃ）前記不揮発性メモリに保管されたデータに対して、前記追記書込み命令を受け取った後の第ｍのＲｅａｄの読込みデータのテープ上の終端位置から第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書込むべきテープ書込み位置（ＥＯＤ）に移動して書込むことを実行し、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み（Over  Write）命令を受けた場合であって、前記上書き書込み命令は書き込まれたデータの終端がデータ終端位置（ＥＯＤ）となるコマンドであり、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前（小さな値）の場合に、前記上書きデータ位置を追記データ終端位置（ＥＯＤ）として更新し、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後（大きな値）の場合に、前記上書きデータ位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新する、ことを特徴とする。【００１５】
この装置は、前記判断基準が前記テープの書込むべきデータ終端位置（ＥＯＤ）が前記移動距離間（前記終端位置から前記開始位置の間）に存在する場合であることを特徴とする。【００１６】
この装置の制御手段は、更新された前記データ終端位置（ＥＯＤ）を前記不揮発性メモリに保管することを特徴とする。【００１７】
この装置の制御手段は、更新された前記データ終端位置（ＥＯＤ）を前記テープを含むカートリッジが有する不揮発性メモリに保管することを特徴とする。【００１８】
更に上記の目的を達成する本発明は、読出し及び追記書込みに関わるデータを一時保管するバッファと、前記バッファに保管されたデータを記録するテープと、前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、追記書込み命令に応じて前記バッファに保管されたデータを前記テープから書込む制御手段とを備えたテープ記録装置において、テープ媒体に対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われるテープ記録装置において、前記テープ媒体を有する１つのカートリッジを搭載され、上位装置から（それぞれが移動命令（Position）により指定されたテープ位置に移動して）読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、複数の前記Ｒｅａｄは順に第１、第２、・・・第ｍ、第ｎ・・・（ｍ、ｎ＝ｍ＋１）を含む前記コマンド列を受取った場合の、書込みの方法である。
この方法は、更に、前記装置又はカートリッジに書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）に保管するステップと、
（ｂ）前記バッファ内データが前記不揮発性メモリに書き込まれた際に前記上位装置に前記追記書込み（同期）命令の完了を返すステップと、
（ｃ）前記不揮発性メモリに保管されたデータに対して、第ｍのＲｅａｄの読込みデータのテープ上の終端位置から連続する第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書き込むべきテープ書込み位置（ＥＯＤ）に移動して書き込むステップとを実行し、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み（Over  Write）命令を受けた場合であって、前記上書き書込み命令は書き込まれたデータの終端がデータ終端位置（ＥＯＤ）となるコマンドであり、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前（小さな値）の場合に、前記上書きデータ位置を追記データ終端位置（ＥＯＤ）として更新するステップと、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後（大きな値）の場合に、前記上書きデータ位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新するステップと、を実行することを特徴とする。【００１９】
更に上記の目的を達成する本発明は、読出し及び追記書込みに関わるデータを一時保管するバッファと、  前記バッファに保管されたデータを記録するテープと、前記テープからデータを前記バッファに読出し、前記バッファからのデータを前記テープに書込みをする、読み書きヘッドと、読出し命令に応じて前記テープの指定位置からデータを読出して前記バッファに保管し、書込み命令に応じて前記バッファに保管されたデータを前記テープから書込む制御手段とを備えたテープ記録装置において、テープ媒体に対する、位置移動、読出し、書込みの動作が前記テープ媒体の長手方向に往復して行われ、前記テープ媒体を有する１つのテープカートリッジを搭載され、上位装置から（それぞれが移動命令（Position）により指定されたテープ位置に移動して）読出し命令（Ｒｅａｄ）と、上書き書込み及び追記書込みの命令（Ｗｒｉｔｅ）を混在させたコマンド列であって、複数の前記Ｒｅａｄは順に第１、第２、・・・第ｍ、第ｎ・・・（ｍ、ｎ＝ｍ＋１）を含む前記コマンド列を受取った場合の書込みのためのプログラムである。
このプログラムは、更に、前記装置又はテープカートリッジに書込み命令により前記バッファ内に保管されたデータを保管する不揮発性メモリを設け、
（ａ）前記追記書込み命令を受取った際に、前記バッファ内保管データを前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）に保管するステップと、
（ｂ）前記バッファ内データが前記不揮発性メモリに書き込まれた際に前記上位装置に前記追記書込み（同期）命令の完了を返すステップと、
（ｃ）前記不揮発性メモリに保管されたデータに対して、第ｍのＲｅａｄの読込みデータのテープ上の終端位置から連続する第ｎのＲｅａｄの読込み開始位置まで移動の際に、前記ヘッドに対する前記テープの走行する移動距離が最小になるように所定の判断基準で、前記不揮発性メモリに一時保管されたデータを移動して書き込むべきテープ書込み位置（ＥＯＤ）に移動して書き込むステップと、
（ｄ）前記混在させたコマンド列の間に、所定のテープの位置にデータの上書き書込み（Over  Write）命令を受けた場合であって、前記上書き書込み命令は書き込まれたデータの終端がデータ終端位置（ＥＯＤ）となるコマンドであり、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より前（小さな値）の場合に、前記上書きデータ位置を追記データ終端位置（ＥＯＤ）として更新するステップと、
前記データの上書き書込みのテープ位置が前記テープの追記データ終端位置（ＥＯＤ）より後（大きな値）の場合に、前記上書きデータ位置を前記不揮発性メモリ内の追記データ終端位置（メモリ内ＥＯＤ）として更新するステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００２０】
以上のように本発明によれば、本発明のテープ記録装置は、上位装置から読出しと追記書き込みの混在するコマンド列に上書き書込みが介在した場合でも、全体の混在オペレーティングのパフォーマンスの向上を実現できる。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態が適用されるテープドライブを含むテープライブラリ１００の構成例を示した図である。
【図２】テープドライブのテープ２３上での通常の移動、読み、書き、についての動作について示す。
【図３】従来のRead/Writeの混在動作の例を示す。
【図４】同期動作を省略するとテープの移動距離が短縮できることを示す。
【図５】実施例の書き込み・同期動作の省略による移動距離の短縮を示す。
【図６】同期動作省略及びその後の書き直し動作と移動距離増加の増減関係（図５の１−ａ〜４−ｂケース）をまとめた表を示す。
【図７】１−ａのケースにおいて移動の途中において書込み位置が存在することを示す。
【図８】不揮発性記憶領域に空き領域が無くなった場合テープ上にデータを書く態様を示す。
【図９】データ追記書き出し（Ｗｒｉｔｅ）動作フローを示す。
【図１０】追記Write/Readの混在の際、上書きWrite及び追記Ｗｒｉｔｅの両方を受け付ける場合のフローを示す。
【図１１】同期（Ｓｙｎｃ）の動作フローを示す。
【図１２】２点間の移動における移動において、書込み位置が存在する場合の移動（Ｐｏｓｉｔｉｏｎ）の動作フローを示す。
【発明を実施するための形態】
【００２２】
以下において、リニア記録方式であり、１つのテープカートリッジを搭載されホストから読出し及び追記書込み（Append  Write）の命令を混在するコマンド列を受取ったテープドライブにおいて、上書き書込み（Over Write）が介在する場合の新規な追記書込みの方法を実施形態（以下「実施例」という）が説明される。これら実施例は、例示であり本発明の追記書込するテープ記録装置、その方法およびプログラムを限定するものではない。
【００２３】
テープドライブが搭載された１つのテープカートリッジ（カートリッジ）に対して追記書込みと読出しが混在する動作をする場合に、読み書きヘッドに対する総テープ移動距離及び時間を短くすることを考える。このために本発明の概要は、次の発明特定事項（構成）を実行するように与えられる。
１．バッファに書かれたデータの同期（テープへの書込み）が必要となった際には、同期されるべきデータを一時的な不揮発性記憶領域に書込む。
２．一時的な記憶領域は、テープの移動が不要となる場所、あるいは、本来の場所に記録する場合と比べてテープの総移動距離・時間が短くなるような場所を使用する。また書き込み時間は、通常の書き込み時間と同じか、より速くなるものを使用する。
３．一時的に記憶されたデータは、後で本来記録されるべき位置に書き直す。
通常はバッファにデータを残しておき、書き直しの際に一時的な記憶領域からの読み直しは不要とする。
４．書き直し動作は、その後の移動動作の一部として行う。
５．電源が落ちるなどしてバッファのデータが損失した場合には、エラーからの復旧処理として、不揮発性の一時的な記憶領域から読出して、本来の記録位置に書き直す。
【００２４】
まず、本実施の形態が適用されるテープドライブ及びそれを含むテープライブラリについて説明する。
図１は、本実施の形態が適用されるテープドライブを含むテープライブラリ１００の構成例を示した図である。
図示するように、テープライブラリ１００は、テープドライブ１０と、ライブラリ制御機構３０と、アクセッサ４０と、カートリッジスロット５０とを備える。
このうち、テープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、チャネル１３と、書込みヘッド１４ａと、読出しヘッド１４ｂと、モータ１５とを含む。また、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ（以下、単に「カートリッジ」という）２０が挿入されることにより装填可能となっているので、ここでは、カートリッジ２０も図示している。このカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。尚、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００２５】
また、カートリッジ２０は、カートリッジメモリ２４も含む。このカートリッジメモリ２４は、例えば、テープ２３上にどのようにデータが書かれたかの情報を記録する。そして、例えばＲＦインターフェイスを用いて非接触でテープ２３に書かれたデータのインデックスやテープ２３の使用状況等を調べることにより、データへの高速アクセスを可能としている。尚、図では、このＲＦインターフェイスのようなカートリッジメモリ２４へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス（以下、「ＣＭＩ／Ｆ」という）１９として示している。
【００２６】
ここで、ホストＩ／Ｆ１１は、ホスト２００との通信を行う。例えば、ホスト２００から、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。尚、このホストＩ／Ｆ１１で用いる通信規格としては、ＳＣＳＩが例示される。ＳＣＳＩの場合、１つ目のコマンドは、Ｗｒｉｔｅコマンドに相当する。２つ目のコマンドはテープの移動動作のためとして、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに相当する。３つ目のコマンドは、Ｒｅａｄコマンドに相当する。また、ホストＩ／Ｆ１１は、ホスト２００に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【００２７】
バッファ１２にバッファリングされたデータは、同期動作（Ｆｌｕｓｈ）によりテープ２３に書き込まれる。Ｗｒｉｔｅ後の同期は、命令で明示される場合（Write Filemarkコマンドなど）と、暗示される場合（位置移動のコマンドLocate、Space、Rewind、Unloadなど）がある。また、 Writeコマンド自身のオプションで同期が完了するまで、Writeコマンドそのものが完了しない場合もある。
【００２８】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読出されたデータを蓄積するメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
チャネル１３は、テープ２３に書き込むべきデータを書込みヘッド１４ａに送ったり、テープ２３から読出されたデータを読出しヘッド１４ｂから受け取ったりするために用いられる通信経路である。
書込みヘッド１４ａは、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込み、読出しヘッド１４ｂは、テープ２３が長手方向に移動するとき、テープ２３から情報を読出す。
モータ１５は、リール２１、２２を回転させる。尚、図では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００２９】
コントローラ１６は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。ヘッド位置制御システム１７は、書込みヘッド１４ａ及び読出しヘッド１４ｂが所望のラップを追跡するよう制御するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、書込みヘッド１４ａ及び読出しヘッド１４ｂを電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１７で行う。
モータドライバ１８は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１８も２個設けられる。
【００３０】
また、ライブラリ制御機構３０は、ホスト２００からの指示に応じて、アクセッサ４０及びテープドライブ１０を制御する機構である。即ち、アクセッサ４０に対しては、ホスト２００から指示されたデータを読出したり書き込んだりできるように、カートリッジ２０をテープドライブ１０に装填するように指示し、テープドライブ１０に対しては、ホスト２００から指示されたデータをアクセッサ４０によって装填されたカートリッジ２０から読出すように又はカートリッジ２０に書き込むように指示する。
アクセッサ４０は、ライブラリ制御機構３０の制御により、カートリッジ２０をカートリッジスロット５０から取り出してテープドライブ１０に装填する。
カートリッジスロット５０は、読み書きが行われていないカートリッジ２０を保管しておくための場所である。ここでは、カートリッジスロット５０を１つの矩形で示したが、実際には、複数のカートリッジをそれぞれ格納する複数のスロットである。
【００３１】
尚、図では、１台のテープドライブ１０しか示していないが、複数台のテープドライブ１０を設けてもよい。その場合、ライブラリ制御機構３０は、読出し命令又は書込み命令の送り先であるテープドライブ１０の識別情報をアクセッサ４０に伝えることで、そのテープドライブ１０へのカートリッジ２０の装填を指示することになる。
【００３２】
図２に、テープドライブのテープ２３上での通常のデータの位置移動（ｐｏｓｉｔｉｏｎ命令）、読み（Ｒｅａｄ命令）、追記書込み（Ｗｒｉｔｅ命令）、についての動作について示す。テープドライブは、リニア記録方式のエンタープライズ・テープ製品（ＩＢＭ  ＴＳxx シリーズ）またはＬＴＯ（Ｌｉｎｅａｒ  Ｔａｐｅ  Ｏｐｅｎ）規格に準拠したものである。まず、矢印２０１で示すようにラップ＃０に右方向にデータの読み書きを行った後、矢印２０２で示すようにテープ２３の走行方向を逆転する。次に、ラップ＃１に左方向にデータの読み書きを行った後、矢印２０３で示すようにテープ２３の走行方向を逆転する。更に、ラップ＃２に右方向にデータの読み書きを行った後、矢印２０４で示すようにテープ２３の走行方向を逆転する。そして、最後は矢印２０５で示すようにラップ＃５５に左方向にデータの読み書きを行う。
【００３３】
このように、リニア記録方式のテープドライブでは、テープ２３上に複数定義されているラップと呼ばれるデータ記憶域をテープ２３の先頭（ＢＯＴ：Ｂｅｇｉｎｎｉｎｇ  ｏｆ  Ｔａｐｅ）から終端（ＥＯＴ：Ｅｎｄ  ｏｆ  Ｔａｐｅ）まで往復しながら、データの読み書きを行う。ラップはテープの幅方向に離間して並行配置された複数トラックの集合である。１つの読み書きヘッド１４ａ、１４ｂは複数のチャネル（８または１６の読み書き素子）を含んでもよい。このヘッドにより、同一ラップ内の複数トラックを並列して移動、Ｒｅａｄ、Ｗｒｉｔｅできる。順次読み書きを行う場合は、このようにラップ上を往復する。ここで、テープ２３の先頭は第１の端部の一例であり、テープ２３の終端は第２の端部の一例である。
【００３４】
ところで、ホスト２００から、階層ストレージ管理（ＨＳＭ）システムを介して最下層のライブラリ１００には読出し/書き込み動作が混在するコマンド列を受取る。このようなコマンド列を、１つのテープドライブが受取る場合において、コマンド列全体の動作処理をパフォーマンス性能の向上を高める実施例を与える。本実施の形態では、テープドライブが、搭載された１つのテープカートリッジに対して追記書込みと読出しが混在する動作をする場合に、テープの総移動距離・時間を短くすることを実現する。
【００３５】
実施例を説明する前にＲｅａｄとＷｒｉｔｅの混在動作において、同期動作がいかなる移動距離の増分を与えるか説明する。そして、同期動作の移動距離を実質的に省略することにより、全パフォーマンスの向上を発揮する実施例を与える。まず、実施例の説明の前提として従来のＲｅａｄ及びＷｒｉｔｅの混在の動作における無駄な移動距離が発生する例を理解する。
【００３６】
図３は、従来のRead/Writeの混在動作の例を示す。
トラックに対してリニアに右から左、左から右というようにテープを走行させた場合にＲｅａｄとＷｒｉｔｅが混在するコマンド列を受取る例を説明する。
上記のコマンド列（１）−（９）に示した様に、Ｗｒｉｔｅ（追記書込み）の後に移動してＲｅａｄを行い、さらにＷｒｉｔｅを行う。
Ｗｒｉｔｅ  ｄａｔａ９→(2)ＷｒｉｔｅＦＭ９ ｗ／Ｓｙｎｃ（ＦｉｌｅＭａｒｋｅｒ９の書込みと同時に同期（Ｆｌｕｓｈ）が行われる）(3)Ｐｏｓｉｔｉｏｎ toＣ（位置Ｃへの移動命令）→(4) Ｒｅａｄ  ｄａｔａ３  ｄａｔａ３→(5) Ｐｏｓｉｔｉｏｎ  ｔｏＢ→(6) Ｗｒｉｔｅ  ｄａｔａ１０→(7) ＷｒｉｔｅＦＭ１０  ｗ／Ｓｙｎｃ→(8)Ｐｏｓｉｔｏｎ  ｔｏＦ→(9)Ｒｅａｄｄａｔａ７である。
【００３７】
テープドライブの動作は次の様になる。ユーザデータをｄａｔａ１〜１０、データの区切りとしてファイルマーカ（ＦＭ：ＦｉｌｅＭａｒｋｅｒ）をＦＭ１〜１０としている。
１．位置Ａでｄａｔａ９をバッファリングする（（１））。
２．同期動作としてバッファからｄａｔａ９を書き込んだ後、ＦＭ９を書き込む（（２））。ｄａｔａ９、ＦＭ９の書込みの結果、位置ＡからＢへ移動
３．位置ＢからＣへ移動（（３））
４．ｄａｔａ３の読出し（（４））。ｄａｔａ３の読出しの結果位置Ｃから位置Ｄへ移動
５．位置Ｄより位置Ｂへ移動（５）
６．ｄａｔａ１０をバッファリング（（６））
７．同期動作としてｄａｔａ10を書き込んだ後、ＦＭ10を書き込む（（７））。位置Ｂから位置Ｅへ移動
８．位置Ｅより位置Fへの移動（８）
９．ｄａｔａ７の読出し。位置FからGへ移動（９）
上記動作によりテープ全長の模式の図３（下図）に示した様に、一連の動作におけるテープの移動距離は、位置Ａ → Ｂ → Ｃ →Ｄ → Ｂ → Ｅ → F → G となる。書込み動作と読出し動作の間には必ず同期動作（例えばＳｙｎｃ命令によるＦｌｕｓｈ）と移動動作（Ｐｏｓｉｔｉｏｎ命令）が発生している。
この混在動作では、テープの移動距離が長くなる。このケースで混在動作とは、同期動作とその後の目標位置Ｆの途中の移動の重複部分（Ｂ→Ｅ）とが増加分となる。すなわち、従来の動作では、この増加分だけ移動動作に要する時間が長くなる問題が発生する。よって、同期動作とその後の移動重複分を省略できるか検討する。
【００３８】
図４は、同期動作を省略するとテープの移動距離が短縮できることを示す。従来の動作（図３）に対して、同じコマンド列（（１）〜（９））に対して、同期命令によるテープメディアへの書き込みを省略すると、移動距離を短縮できる。前頁と同じコマンド列でのテープドライブの動作は次の様になる。
１．位置Ａで、ｄａｔａ9のバッファリング（（１））。
２．同期動作としてバッファからｄａｔａ9を書き込んだ後、ＦＭ9を書き込む（２）。位置ＡからＢへ移動。
３．位置ＢからＣへ移動（（３））。
４．ｄａｔａ3の読出し（（４））。位置Ｃから位置Ｄへ移動。
５．位置Ｄより位置Ｂへの移動（（５））を省略し、
６．ｄａｔａ10のバッファリング（（６））
７．ｄａｔａ10およびＦＭ10に対する同期動作（（７））を省略して、バッファリングしたままにする。
８．位置Ｄより位置F（（８））へ移動
９．ｄａｔａ7の読出し（（９））。位置FからGへ移動
移動距離は位置Ａ → Ｂ → Ｃ →Ｄ → Ｆ→Ｇとなる。同期動作を含む前述の例では３つの移動動作（Ｄ→Ｂ→Ｅ→Ｆ）が、位置Ｄ→Ｆへの移動動作１つになり、移動距離が短縮される。具体的には、次の３つの動作において図３の場合より移動距離が短縮される。
・5番目の命令による、位置ＤからＢへの移動動作
・7番目の命令による、位置ＢからＥへの移動を伴うｄａｔａ10とＦＭ10の同期書込み動作
・8番目の命令による、位置ＥからFへの移動動作
【００３９】
しかしながら、同期命令に対する完了報告時には、メディアへの書込みが正しくなされ、将来のアクセスが保証されていることが必要である。本発明では、ホストに対して同期動作を実質的に保証することを担保する。同時に、次の実施例においてＷｒｉｔｅの介在のよりＲｅａｄ・Ｗｒｉｔｅの混在するコマンド列の移動距離の増加を抑える追記書込み方法を開示する。
【００４０】
本発明では、バッファに保管されたデータに対してホストに対して同期動作を保証するために以下の構成を考える。
１．テープカートリッジまたはテープドライブに新たに一時的な不揮発性記憶領域を持たせる。この不揮発性記憶領域を設けることにより、同期動作を短縮させる、アクセス特性を持つ。不揮発性記憶域として、カートリッジやドライブに付随したフラッシュメモリ等の不揮発性メモリ、テープ媒体上の特殊記憶領域などである。
２．テープドライブは、一時的に追記データを不揮発性記憶域に保管して、本来のテープの書込みデータの終端位置（物理ＥＯＤ：Ｅｎｄ  ｏｆ  Ｄａｔａ）に、テープの追記書込み動作を行うことを遅延させる。別途都合のよいときに本来のテープ上のデータ終端位置（ＥＯＤ）からの書き直し動作を行う。
（１）ホストからの同期要求に対する完了報告以後、必ずテープカートリッジ（または、テープドライブ）から読めることを保証するために使う。
（２）ホストからは隠蔽されたものとする。つまり、書込み後に読出し動作が発生した場合は、あたかも本来の位置に書かれているものとしてこの不揮発性記憶域から読出す。
【００４１】
テープドライブは、不揮発性領域を新たに設けることにより、ホストから送られるＲｅａｄとＷｒｉｔｅとが混在するコマンド列を受取る。一般的にはＲｅａｄは読出し位置が指定された後に読むケースが多い。同様に、追記の場合のＷｒｉｔｅは書込み位置がＥＯＤと指定された後に書くことになるが、読出し位置と書込み位置は、関連しないことが多い。追記Ｗｒｉｔｅ動作をテープの目標位置（物理ＥＯＤ）への書込み動作（実質同期動作）をを、Ｒｅａｄ間の移動の途中でできる場合を実行できれば、余計なテープ移動距離を抑えることができる。不揮発性領域に保管された書込みデータをそれ以後の複数のＲｅａｄの移動地点間に、テープ書込み位置（物理ＥＯＤ）が存在すれば、その移動の際に同時にテープ書込むことによりコマンド列の全体としてのパフォーマンスの向上になる。
【００４２】
１．実施例では、追記書込み命令（Ｗｒｉｔｅ）に続く同期動作により、バッファ保管データは不揮発性記憶領域に保管される。
２．不揮発記憶領域に一時保管されたデータを、本来のテープの書込み位置（ＥＯＤ：Ｅｎｄ  ｏｆ  ｄａｔａ）に書き込む動作が必要である。
書き直し動作での移動距離は、書き込み・同期動作時の移動距離と逆関係の関係である。つまり同期動作の省略により距離短縮と書き直し動作による移動距離の増加は同じである。従来の動作より移動距離・時間を短縮できるときに書き直す。例えば、複数のＲｅａｄ間の移動動作中に、書き直すべき（追記）位置（ＥＯＤ）を通過する場合には、書き直し動作のための移動をせずに書き直せる。
【００４３】
本発明の同期動作のためのデータ保管を確実にするために、一時的な記憶領域に空きがなくなる状態を防ぐ必要がある。同期命令を受けたときに、書き直しのための移動距離と一時的に記憶されているデータ量により不揮発性記憶領域の空き領域（未使用率）が低下する場合がある。最終的には完全に、不揮発性記憶領域が一杯になっている場合には、無条件で不揮発性記憶領域のデータをテープのＥＯＤから書き直しを行う。書き直し動作後、継続して通常のテープ書込み動作を行う。また、カートリッジの頭出し(Rewind)、排出(Unload)命令を受け取ったときRewind/Unloadはテープカートリッジの使用終了を意味するため、無条件で書き直し動作を行う。
【００４４】
図５は、不揮発性記憶領域を用いて実質的な同期動作を保証する追記書き直し動作時の移動距離を示す。図５は、実施例の同期動作の省略及び書き直し動作による移動距離の増減を示す。
・テープの長さ方向の距離を考える。
・現在位置Aから移動目標位置B(,C, D, E)への移動の際に、書き直しを行うものとする。
・現在位置Aから見た、書き直し開始位置X、完了位置Yと移動目標位置B(, C,D, E)の関係を分類する。
１．移動目標位置Bは、書き直し開始位置Xと完了位置Yと同方向にあり、位置Ｘ，Ｙよりも遠い。
２．移動目標位置Cは、書き直し開始位置Xと完了位置Yと同方向にあり、位置Xと位置Yの中間にある。
３．移動目標位置Dは、書き直し開始位置Xと完了位置Yと同方向にあり、位置X,Yよりも近い。
４．移動目標位置Eは、書き直し開始位置Xと完了位置Yと逆方向にある。
・さらに位置A->B (, C, D, E)への移動方向に対して書込み方向の違いが影響する。書込み方向は移動方向と同方向（上図）と書込み方向が移動方向と逆方向（下図）である。
・上記それぞれで、移動動作での距離：位置A->B(, C, D, E)と、書き直し動作の追加による移動距離：位置A->X->Y->B(,C, D, E)の関係は次の通りである。
１．同方向の場合、書き直しによる移動距離は増加しない(１−ａ)。逆方向のときは、位置A->Bの移動はA->X->Bと同じなので、位置X<->Y間の1往復分増加する(１−ｂ)。
２．同方向の場合、位置X->Y->Cから位置X->Cの差分だけ増加する(２−ａ)。逆方向の場合、位置A->Cの移動はA->Y->Cと同じ。よって位置Y<->X間の1往復分増加する(２−ｂ)。
３．同方向の場合、位置A->Xの移動は位置A->D->Xと同じなので、位置D->X->Y->Dの距離が増加する(3-ａ)。逆方向の場合、位置A->Xの移動は、位置A->D->Y->Xと同じ。よって、位置D->Y->X->Y->Dの距離が増加する(3-ｂ)。
４．どちらの方向も、位置A->X->Y->Aの距離が増加する(４−ａ,４−ｂ)。
書き込み・同期動作を省略することにより、書込み後の移動目標に寄らず移動距離は等しいか、短縮できる。書き直し動作で移動距離を短縮できるのは、同期動作とは逆関係にある。
【００４５】
図６は、同期動作省略及びその後の書き直し動作と移動距離増加の増減関係（図５の１−ａ〜４−ｂケース）をまとめた表を示す。
１．テープ媒体への同期動作の省略による移動距離の短縮量と、書き直し動作による移動距離は逆関係にあることは図５のところで説明した通りであることがわかる。
２．同期動作の省略と書き直し動作の発生が１：１の時、総移動距離は変わらない。本発明では、同期動作に対して全てのバッファ保管データは不揮発性記憶領域（不揮発性メモリ）に保管する。不揮発性メモリにデータ保管することにより、テープ移動を伴う書き直しを省略できる。次に、書き直しのための移動を省略できれば、全体の総移動距離を短縮できる。完全に書き直し動作のための移動距離を省略できる場合が１−ａのケースである。１−ａのケースは、テープの書き直し位置（物理ＥＯＤ）が２つのＲｅａｄの移動距離間（第１のＲｅａｄ（読出し）テープのデータ終端位置から第２のＲｅａｄ（読出し）テープのデータ先端位置の間の移動）の間に存在する場合である。１−ａのケースでは、同期動作により不揮発性メモリに保管されたデータを、後続の移動の途中においてテープに書き直す動作である。
３．複数の同期動作が複数回省略され、かつ、不揮発性メモリに保管されたデータの書き直し動作が後続の複数のＲｅａｄ動作の移動途中で実行できる場合には、混在したコマンド列の総移動距離は必ず短縮される。
【００４６】
本発明の実施例において、移動動作での書き直し処理が次のように判定される。
・移動パターン：１−ａケースの時
移動動作の開始前において、書き直し動作の実施を判定は、移動パターンが1-ａの時は、書き直し動作のために移動距離が増加することが無い。つまり、移動距離の増加がゼロとなるので、後続のＲｅａｄのため移動において必ず書き直しを行う。図５を参照すると、書込みテープ位置（Ｘ→Ｙ）がテープの２つのテープ位置間（Ａ→Ｂ）の移動途中に存在する場合である。
・移動パターン：1-ｂと2-ａ,２−ｂケースの時
書き直し動作により移動距離の増加が発生する。
増加率は、本来の移動距離：位置Ａ→Ｂ(, Ｃ, Ｄ, Ｅ)、書き直し開始位置Xと書き直すデータ量（Ｘ←→Ｙ）に依存する位置Yに依存する。
後述する、一時的に記憶しているデータ量と書き直しによる移動量の関係より実施を判断する。不揮発性メモリ保管データ（Ｘ→Ｙ）の書き直しは、Ｘ→Ｙの書込み途中までは増分無しで出来る。しかし、２点間（Ａ→Ｃ，Ｄ，Ｅ）移動の際に、その移動距離間にＸ−Ｙが重ならない場合がある場合には、書き直し動作による増分がある。この増分が小さい場合には、ほとんど移動距離間で書き直せることになる。ただし、一部のテープの書込みのための移動の増分が生じることから、このケースでは場合ではＲｅａｄ途中で書き込む利益が余り得られない。
・移動パターン：３−ａ、３−ｂと４−ａ、４−ｂのケース時
書き直し動作による移動動作により、本来の移動距離が大幅に増加するため、書き直しは行わない。明らかに後続の複数のＲｅａｄでの移動途中において書き込むべきデータ位置（Ｘ→Ｙ）が重ならない場合であるので、コマンド列全体での利益は得られない。
【００４７】
追記書込み命令及び同期命令を受け取った場合、次の２つの動作が考えられる。
１．移動動作を行わず、一時的な記憶領域に新たなユーザデータを書き込む。
（利点）書込み処理のために移動はしないので、移動距離を短縮できる。
（欠点）書き込み途中で、一時的な記憶領域が不足する可能性がある。
２．一時的な記憶領域には書き込まず、書き直し動作を行ったうえで、本来の位置に書き込む
（利点）一時的な記憶領域を空けることができる。
（欠点）書き直し開始位置Xへ移動して書き直しを行う必要がある。
上記２つの動作の利点・欠点は、次の2つと相関関係にある。
一時的な不揮発性記憶領域に保管されているデータ量（使用率）と、現在位置から書き直し開始位置までの移動距離によって判定される。
例えば移動パターン1-ｂと２-ａ,２−ｂの場合は、読出しの為の２点間の移動の対する増分が大きい場合はテープへの書き直し動作を行なわないことを選択することを原則とする。また、読出し動作の間の途中の書き直し動作により多少の移動距離の増加が発生したとしても、一時的な記憶領域への書き込みによる距離の短縮量が上回る場合がある。かかる場合には、Ｒｅａｄのための移動の途中において書き直し動作を実行する選択も可能である。
【００４８】
図７は、１−ａのケースにおいて移動の途中において追記書込み位置であるＥＯＤが存在する場合を示す。バッファに保管されたデータをテープへの追記書込みせず不揮発性記憶領域に保管する。Ｒｅａｄの移動がＡ→Ｂの場合には、その移動の途中において、通常の同期動作のための追記書込みテープ位置（物理ＥＯＤ）及び書込み距離（間隔Ｘ−Ｙ）が含まれる。テープへのデータの書込み方向（Ｘ→Ｙ）もＲｅａｄの移動方向（Ａ→Ｂ）と同方向である。このように同期命令の後の後続の移動において追記書込み位置（物理ＥＯＤ）とテープ書込み長さ（データ量）が移動距離間に含まれる。また、Ｒｅａｄ方向が書き直し方向が一致する場合にはその移動の際に不揮発性記憶領域に保管されたデータの書き直し動作を行う利益がある。
【００４９】
図８は、不揮発性記憶領域に空き領域な無くなった場合テープ上にデータを書く態様を示す。
・一時的な記憶領域へ書き込み中に空きがなくなった場合は、無条件で書き直し動作を行う。テープへの書き直し動作を行わないと、不揮発性記憶領域に空きがないため書き込み動作を継続できない。書き直し動作後、継続して通常のテープ書き込み動作を行ってもよい。
・通常の書き込み・同期動作との移動距離の違いは次の通りである。
一時的な記憶領域に、ｄａｔａ10とＦＭ10が既にある。
新たにｄａｔａ11を受け取っている途中に、空きがなくなった場合現在位置Ａから書き直し開始位置Xへの移動方向と、書き込み方向が同じ場合（上図、１−ａケース）、移動距離は変わらない。現在位置Ａから書き直し開始位置Xへの移動方向と、書き込み方向が逆の場合（下図、１−ｂケース）、位置Y<→X間一往復分増加する。この移動距離の増加は、一時的な記憶領域への書き込みによる距離の短縮より小さい場合が通常であるので本発明の追記書込みを実行できる。
【００５０】
カートリッジの頭出し(Rewind)、排出(Unload)命令を受け取ったときは、無条件で書き直しを行う。Rewind/Unloadはテープカートリッジの使用終了を意味するためである。このときの移動目標は、位置ＢまたはＥがテープの先頭(ＢＯＴ)である状態である。位置Ｃ,Ｄ（図５）が移動目標、すなわちＢＯＴであることはない。該当する移動パターンは、１−ａ,１−ｂもしくは４−ａ、４−ｂである。書き直し動作により、移動距離が大幅に増加することがある。例えば、移動パターン４−ａ,ｂに該当した場合が該当する。データの保全と再度マウントされたときに通常通り使用するためには書き直し動作が必要である。一時的な記憶領域への書き込みによる距離の短縮により相殺される。例外は、現在位置Ａが書き直し開始位置XよりＢＯＴ側にある状態で移動パターン４−ａが連続するときである。
【００５１】
本発明の実施例は、Ｒｅａｄ、Ｗｒｉｔｅの為の位置の移動がテープ媒体の長手方向に往復して行われるリニア記録方式である。データがシーケンシャルにＲｅａｄ・Ｗｒｉｔｅをテープに行う場合に、テープドライブ内のテープ移動の追記書込みの適用がある。本発明の実施例は、テープドライブに１つのカートリッジを搭載された場合において、上位装置（ホスト）からＲｅａｄとＷｒｉｔｅが混在するコマンド列を受け取った場合に適用される。ホストがテープドライブに発行するコマンド列に含まれる混在するＲｅａｄ＆Ｗｒｉｔｅを実行する。以下では、追記書込み命令（Ｗｒｉｔｅ）、読出し命令（Ｒｅａｄ）、Ｒｅａｄの前提の移動命令（ｐｏｓｉｔｏｎ）についての動作フローチャートを説明する。
【００５２】
図９は、データ追記書き込み（Ｗｒｉｔｅ）動作フローを示す。
１．テープドライブはテープ位置Ａ（図５）においてＷｒｉｔｅ命令をホストから受け取る。ホストから送られた追記書込みデータはバッファに保管される。テープ上の追記されるべきテープ位置（物理ＥＯＤ）は位置Ｘ（図５）である。追記されると位置Ｙ（Ｘ→Ｙ）がＥＯＤとなる。位置Ｘへの移動はＰｏｓｉｔｉｏｎ命令によりなされる。追記後のＥＯＤはＹとなる。Ｙからの例えばBへの移動は移動命令（Ｐｏｓｉｔｉｏｎ命令）にされる。本発明の場合、Ｒｅａｄ後においてテープの位置Ａに位置している場合、次のＲｅａｄのため目標位置Ｂに直接移動する場合を想定する。後述するがこの移動間にＸ−Ｙが同一ラップ内に存在するのでテープへの追記書込みを行うために（図１２）、不揮発性メモリにデータを保管する。
２．ＮＶキャッシュ（不揮発性記憶メモリ）に書き込めるか確認する。ＮＶキャッシュに空きがなければ通常どおりの書込みをする。
３．空きがある場合、ＮＶキャッシュにデータを保管する。
４．空きがない場合、テープに通常の書込みを行う。
５．上記２つのケースにおいてもＷｒｉｔｅ完了をホストに返す。
【００５３】
これまでは、Write命令を追記書込みのみとして説明されてきた。テープドライブのシーケンシャルの移動方式より、追記Ｗｒｉｔｅは、テープ上の書込みデータの終端位置（ＥＯＤ：End  ｏｆ  Ｄａｔａ）を順次後退させる書込み方式である。
【００５４】
テープドライブのWrite方式には、追記Writeの他に上書きWriteがある。上書きWriteは、追記Writeによりデータが書込み済みのテープ位置（例えば、データセット）に、新たなデータを上書きするコマンドである。上書きWriteがされると、上書きデータ終端がテープのデータ終端位置（ＥＯＤ）となり、後続の書込みデータは無いものとして扱われる。
【００５５】
図１０は、追記Write/Readの混在の際、上書きWrite及び追記Ｗｒｉｔｅの両方を受け付ける場合のフローを示す。図１０のステップ１〜１００の各々を説明する。
１．テープドライブは、ReadとWriteの混在オペレーション中において書込み命令（Write）の受け取る。混在オペレーション中に受取るWriteの多くは追記Writeであると思われる。本発明では、この混在オペレーション中に上書きWriteを受けることも想定する。
１０．テープドライブは受取ったWriteが上書きWriteか追記Writeかを確認する。
追記Writeの場合は、ステップ７で追記処理（図９のステップ２〜５相当）を行う。
２．上書きWriteを受け取った場合、ステップ３又は５に行く。
３．上書きWriteの場合であって、テープ上のデータを上書きする場合である。
上書きWriteによりデータ書込みを指定されたテープ物理位置のデータ終端をテープの追記データ終端位置（ＥＯＤ）として更新し保管する。この時点では、その指定テープ物理位置にデータを書き込むことはしない。後続のステップ７において、一時的に不揮発性メモリ（NVキャシュ）にデータを保管する。最終的には、後続の移動動作時の最適なとき（図１２のステップ１０→１１→１２）にNVキャシュに保管されたデータを、指定テープの物理位置に書込む。なお、上書きWrite方式は、このＥＯＤ以降のテープ上のデータは無効（即ち、空）として扱う。更に、上書きWrite以前に受けた追記WriteのためのデータであってNVキャシュに一時保管されているが未だテープに移動していないデータについても無効として扱う。ＥＯＤの一時保管は、NVキャシュ、カートリッジメモリ（CM：テープカートリッジが有する不揮発性メモリ）、データセット（テープ上のデータ）などの不揮発性メモリに行う。
５．上書きWriteの場合であって、NVキャシュ上のデータを上書きする場合である。
上書きWrite以前に受けた追記WriteのためのデータであってNVキャシュに一時保管されているが未だテープに移動していないデータが存在する場合がある。このNVキャシュ上のデータを上書きする。キャシュ内の上書きデータの終端位置をキャシュ内の追記データ終端位置（キャシュ内ＥＯＤ）として、不揮発性メモリに更新し保管する。NVキャシュ内ＥＯＤ以降のデータは無効（即ち、空）として取り扱う。最終的に、更新されたキャシュ内ＥＯＤまでのデータを、後続の移動動作時の最適なとき（図１２のステップ１０→１１→１２）に、テープの追記データ終端位置（ＥＯＤ）から書込む。
６．上書きWriteにより、テープ上の追記データ終端位置（テープ上ＥＯＤ）と、NVキャシュ上の追記データ終端位置（キャシュ内ＥＯＤ）を、論理ＥＯＤとして保管する。上位装置（ホスト）は、追記データがNV上またはテープ上にあるかは認識しない。
７．上書き・追記Writeの共通のステップである。
追記Ｗｒｉｔｅのフロー（図９）において説明したように、図９のステップ２→（３または４）→５のフローと同等のステップを実行する。本発明の場合、図９のステップ３において、上書きWriteのデータはNVキャシュに一時保管される場合を考えている。NVキャシュに保管できない場合は図９のステップ４の場合と同様である。
１００：上書きデータがNVキャシュに保管されると、Write完了をホストに返す。
【００５６】
図１１は、同期（Ｓｙｎｃ）命令の動作フローを示す。
１．テープドライブはホストから同期命令（Ｓｙｎｃ）を受取る。Ｗｒｉｔｅ命令が同期動作の伴うものであってもよい。さらに、バッファにＷｒｉｔｅ命令によるデータが残っている状態における位置移動命令による暗示された同期要求であってもよい。
２．既にテープに書込み中かを確認する。
３．書込み中の場合には、通常の同期動作処理によりテープに通常の追記書込みを行う。
４．書込み中でない場合には、ＮＶキャッシュに書き込めるか確認する。即ち、下記領域があるか無いかで、この確認がされる。
５．ＮＶキャッシュに空きがある場合、同キャッシュにデータを保管し、同期完了をホストに返す（８）。
６．ＮＶキャッシュに空きがない場合、通常の書込みを行い（３）、同期完了をホストに返す（８）。
【００５７】
図１２は、２点間の移動における移動において、書込み位置が存在する場合の移動動作フローを示す。
１．ホストから移動コマンドを受取る。
２．論理ＥＯＤであるか。
論理ＥＯＤは、ドライブがホストに報告するデータを書き終わった位置であり、ホストのためのものである。ある。物理ＥＯＤは、ドライブ内部的にデータの終端位置である。物理ＥＯＤは、テープ上の、ドライブがデータを書き終わった位置である。不揮発性メモリ内にデータが書かれている状態では、「テープ上のＥＯＤ」「不揮発性メモリ内のＥＯＤ」の２箇所の物理ＥＯＤがある。不揮発性メモリ内にデータが書かれていない状態では、物理ＥＯＤは「テープ上のＥＯＤ」の１箇所だけである。この場合の論理ＥＯＤは、テープ上のＥＯＤと一致する。
３．現在位置がＥＯＤ（テープ上のＥＯＤまたはＮＶキャッシュ内のＥＯＤ）である場合、移動不要である。移動完了をホストに返す（４）。Ｗｒｉｔｅフロー（６，図９又は図１０）→同期命令フロー（７，図１１）を実行する。
８．現在位置が論理ＥＯＤでない場合（２）、ＮＶキャッシュにデータが存在するか確認する。
９．ＮＶキャッシュ内にデータが存在しない場合、ホストからのＲｅａｄのための移動命令（Ａ→Ｂ）を行う。移動完了をホストに返す（１３）。
１０．ＮＶキャッシュ内にデータが存在する場合、移動中に書くことか判定する。例えば移動途中に書込むべきＥＯＤが存在する場合である。
１１．書くべき場合には、テープ上のＥＯＤからＮＶキャッシュのデータをテープに書き直す（１２）。
１２．通常の移動を行う（９）。また、１０の判定で移動中に書くべきでない場合には、単に移動（Ａ→Ｂ）（９）する。移動完了をホストに返す（１３）。
【００５８】
上述の実施例は、Ｗｒｉｔｅ及びＲｅａｄの混在するコマンド列においてＲｅａｄ間移動について主に説明されてきた。本発明の範囲はこの実施例に限定されない。不揮発性記憶領域への書込みにおいて同期動作完了を保証することを前提とする。後発的にテープ移動において不揮発性記憶領域に保管されたデータを目的のテープ位置に後で遭遇する機会があれば、実質的にテープ上に書くことが含まれる。階層されたストレッジ管理システムにおいて、Ｒｅａｄ及びＷｒｉｔｅが混在するコマンド列を最下層のテープライブラリが受取ることが通常である。１つのカートリッジを搭載したテープドライブは書込み命令及び同期命令のテープ書込み位置が後続のＲｅａｄの為の移動において重なる機会が多い。新たな不揮発性記憶領域を、テープドライブまたはカートリッジに設け、所定の容量（例えば１００Ｍバイト以上）を有する限り、テープへの追記書込みを先延ばしして全体としコマンド列のオペレーティングのパフォーマンスが担保できる。
【００５９】
以上のように、本発明のライブラリシステムは、書込み及び読出し専用カートリッジのＵｎｌｏａｄ・Ｌｏａｄによる交換を回避できる有利な効果を奏する。本発明のシステムは、書き込みに伴う移動動作を最小化することによりＲｅａｄとＷｒｉｔｅの混在オペレーティングにおいて上書きＷｒｉｔｅを含む場合であっても全体として高速化を実現できる有利な効果を有する。
【符号の説明】
【００６０】
１０…テープドライブ、１１…ホストＩ／Ｆ、１２…バッファ、１３…チャネル、１４ａ…書込みヘッド、１４ｂ…読出しヘッド、１５…モータ、１６…コントローラ、１７…ヘッド位置制御システム、１８…モータドライバ、１９…ＣＭＩ／Ｆ、２０…カートリッジ、３０…ライブラリ制御機構、４０…アクセッサ、５０…カートリッジスロット、１００…テープライブラリ、２００…ホスト
【図１】
0005552195.tif 000002
【図２】
0005552195.tif 000003
【図３】
0005552195.tif 000004
【図４】
0005552195.tif 000005
【図５】
0005552195.tif 000006
【図６】
0005552195.tif 000007
【図７】
0005552195.tif 000008
【図８】
0005552195.tif 000009
【図９】
0005552195.tif 000010
【図１０】
0005552195.tif 000011
【図１１】
0005552195.tif 000012
【図１２】
0005552195.tif 000013