(57)【要約】【課題】ファイルシステム上のテープドライブ中のラップターンにおけるデータ書き込みの遅延を防止／軽減する。【解決手段】ファイルシステム上でバッファに順次蓄積したデータをテープドライブに転送しながらテープドライブ中のテープにデータを書き込む方法を提供する。その方法は、テープへのデータの書き込み時において、ラップターンを検出するステップ（Ｓ１３）と、ラップターンの間にバッファに蓄積されるであろうデータ量以上の記憶容量を有するバッファ領域を確保するステップ（Ｓ１４）と、ラップターンの間にバッファに代わってバッファ領域に書き込みデータを順次蓄積するステップ（Ｓ１５）と、ラップターンの終了後にバッファへの書き込みデータの蓄積を再開するステップ（Ｓ１１）と、バッファ領域に蓄積された書き込みデータがテープドライブに転送された後にバッファ領域を解放するステップ（Ｓ１９）と、を含む。【選択図】図５
2014215668.tif 000002
【特許請求の範囲】
【請求項１】
ファイルシステム上でバッファに順次蓄積したデータをテープドライブに転送しながらテープドライブ中のテープにデータを書き込む方法であって、
テープへのデータの書き込み時において、ラップターンを検出するステップと、
前記ラップターンの間に前記バッファに蓄積されるであろうデータ量以上の記憶容量を有するバッファ領域を確保するステップと、
前記ラップターンの間に前記バッファに代わって前記バッファ領域に書き込みデータを順次蓄積するステップと、
前記ラップターンの終了後に前記バッファへの書き込みデータの蓄積を再開するステップと、
前記バッファ領域に蓄積された書き込みデータが前記テープドライブに転送された後に前記バッファ領域を解放するステップと、を含む方法。
【請求項２】
前記ラップターンを検出するステップは、ラップ上の空き容量が所定割合以下になったことをもってラップターンが来ることを検出することを含む、請求項１の方法。
【請求項３】
前記バッファ領域は、前記バッファの一部として、前記バッファとは異なる他のバッファとして、あるいは当該他のバッファの一部として確保される、請求項１または２の方法。
【請求項４】
前記バッファに蓄積されるであろうデータ量は、前記バッファへの書き込みデータの転送速度（Ａ）と、前記ラップターンの間の時間（Ｔ）との積（Ａ・Ｔ）として求められる、請求項１〜３のいずれか１項の方法。
【請求項５】
前記ファイルシステムは、リニア・テープ・ファイル・システム（ＬＴＦＳ）である、請求項１〜４のいずれか１項の方法。
【請求項６】
ファイルシステム上でバッファに順次蓄積した書き込みデータをテープドライブに転送しながらテープドライブ中のテープにデータを書き込むためのプログラムであって、ファイルシステムに、
テープへのデータの書き込み時において、ラップターンを検出するステップと、
前記ラップターンの間に前記バッファに蓄積されるであろうデータ量以上の記憶容量を有するバッファ領域を確保するステップと、
前記ラップターンの間に前記バッファに代わって前記バッファ領域に書き込みデータを順次蓄積するステップと、
前記ラップターンの終了後に前記バッファへの書き込みデータの蓄積を再開するステップと、
前記バッファ領域に蓄積された書き込みデータが前記テープドライブに転送された後に前記バッファ領域を解放するステップと、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テープドライブへのデータ書き込みに関し、より具体的には、ファイルシステム上で利用されるテープドライブ中のテープへのデータ書き込み方法に関する。
【背景技術】
【０００２】
テープドライブは、ＨＤＤ等と同様にファイルシステム上でも利用可能である。ファイルシステム上で利用可能なテープドライブとして、例えばＬＴＯ規格（ＬＴＯ−５以降）準拠のテープドライブがある。このＬＴＯ規格準拠のテープドライブでは、テープが複数のラップ（例えば８０本）を有し、テープへのデータ書き込みの際に、１つのラップの書き込みが終わった後にテープの進行方向を反転させて次のラップへの書き込みに移動する、いわゆるラップターンと呼ばれる動作が必要となる。
【０００３】
ファイルシステムの１つにリニア・テープ・ファイル・システム（ＬＴＦＳ：Linear Tape File System）がある。ＬＴＦＳでは、テープドライブへの連続したデータの書き込みをおこなうために、バッファに蓄積したデータを順次テープドライブに転送しながらテープにデータを書き込む、いわゆる遅延書き込み機能を有している。
【０００４】
遅延書き込み機能をするＬＴＦＳ上のテープドライブでは、ラップターン動作に要する数秒の間、テープへのデータ書き込みができないので、その間の書き込みデータはバッファに蓄積されるだけの状態となる。そのためバッファの空き容量が無くなり、バッファへのデータ蓄積を中断せざるを得ない場合が発生し得る。特に、ＬＴＦＳ上のバッファは、ホストを始めとして他の周辺装置で共有されるので、バッファへのデータ蓄積の中断はラップターンの度に発生してしまう可能性がある。その結果、ＬＴＦＳ上のテープドライブへのデータ書き込みが遅延するという問題が生ずる。
【０００５】
このバッファへのデータ蓄積の中断を防ぐために、バッファの記憶容量を予め大容量にしておくことが考えられる。しかし、ＬＴＦＳが常に大容量のバッファを確保しておくことは、いわばＬＴＦＳを動かすホスト上のリソースをＬＴＦＳが占有してしまうことに繋がるので好ましくない。ＬＴＦＳと他のアプリケーションとの共存を考慮する上で、ラップターンに起因するデータ書き込み遅延を回避するために利用するバッファ容量は可能な限り小さいことが望まれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１１３７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の目的は、ファイルシステム上のテープドライブへのデータ書き込みにおいて、大容量のバッファを必要／専有することなく、ラップターンに起因するデータ書き込み遅延を回避／軽減することができるデータ書き込み方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、ファイルシステム上でバッファに順次蓄積したデータをテープドライブに転送しながらテープドライブ中のテープにデータを書き込む方法を提供する。その方法は、テープへのデータの書き込み時において、ラップターンを検出するステップと、ラップターンの間にバッファに蓄積されるであろうデータ量以上の記憶容量を有するバッファ領域を確保するステップと、ラップターンの間にバッファに代わってバッファ領域に書き込みデータを順次蓄積するステップと、ラップターンの終了後にバッファへの書き込みデータの蓄積を再開するステップと、バッファ領域に蓄積された書き込みデータがテープドライブに転送された後にバッファ領域を解放するステップと、を含む。
【０００９】
本発明によれば、ラップターンを検出した際にラップターンの間に必要となるデータ書き込み用のバッファ領域を確保し、その後そのバッファ領域を解放するので、いわば書き込みデータの蓄積に必要となるバッファの容量を動的に変えることにより、ラップターンに起因するデータ書き込み遅延を回避／軽減することができる。
【００１０】
本発明の一態様では、ラップターンを検出するステップは、ラップ上の空き容量が所定割合以下になったことをもってラップターンが来ることを検出することを含む。
【００１１】
本発明の一態様によれば、ラップターンを事前に予測／検知することができるので、ラップターン間の書き込みデータを蓄積するためのバッファ領域を確実に確保することができ、バッファへのデータ書き込みの中断を回避することができる。
【００１２】
本発明の一態様では、バッファ領域は、バッファの一部として、バッファとは異なる他のバッファとして、あるいは当該他のバッファの一部として確保される。
【００１３】
本発明の一態様によれば、ファイルシステム上で利用可能なバッファを任意に選択して利用／確保することにより、バッファの容量の動的な変化／確保の柔軟性を高めることができる。
【００１４】
本発明の一態様では、バッファに蓄積されるであろうデータ量は、バッファへの書き込みデータの転送速度（Ａ）と、ラップターンの間の時間（Ｔ）との積（Ａ・Ｔ）として求められる。
【００１５】
本発明の一態様によれば、バッファへの書き込みデータの転送速度（Ａ）に応じて、必要となるバッファ容量を適切かつ柔軟に確保することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明のファイルシステムの構成例を示す図である。
【図２】本発明のテープドライブの構成例を示す図である。
【図３】本発明のテープの構成例を示す図である。
【図４】本発明のバッファへのデータ蓄積を説明するための図である。
【図５】本発明のデータ書き込み方法のフローを示す図である。
【発明を実施するための形態】
【００１７】
図面を参照しながら本発明の実施の形態を説明する。図１は、本発明のファイルシステムの構成例を示す図である。ファイルシステム１００は、ネットワーク３６を介して相互に通信可能なテープドライブ１０、ホスト（サーバー）３０、ＰＣ（端末）３２、３４からなる。図１では、テープドライブ１０とホスト（サーバー）３０は、それぞれ１つしか描かれていないが、これはあくまで例示であって、２以上のテープドライブ１０やホスト（サーバー）３０を含むことができることは言うまでもない。
【００１８】
ファイルシステム１００は、例えばＬＴＦＳ（Linear Tape File System）とすることができる。ＬＴＦＳは、ＨＤＤやＵＳＢメモリ、あるいはＣＤ−Ｒを始めとする他のリムーバブルな記録媒体同様に、テープカートリッジをテープドライブに挿入すれば、そのテープカートリッジに保存されたファイルに直接アクセスできる仕組みである。テープドライブ上でファイルシステムを構築するためには、テープドライブがパーティション機能を有していることが必要である。ＬＴＯ−５規格では、テープが２つのパーティションに分けられる。
【００１９】
図２は、本発明のテープドライブの構成例を示す図である。テープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、チャネル１３と、ヘッド１４と、モータ１５とを含む。また、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ２０が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ２０も図示している。このテープカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。なお、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００２０】
また、テープカートリッジ２０は、カートリッジメモリ（ＣＭ）２４も含む。このＣＭ２４は、例えば、テープ２３上にどのようにデータが書かれたかの情報を記録する。そして、例えばＲＦインターフェイスを用いて非接触でテープ２３に書かれたデータのインデックスやテープ２３の使用状況等を調べることにより、データへの高速アクセスを可能としている。なお、図２では、このＲＦインターフェイスのようなＣＭ２４へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス（以下、「ＣＭＩ／Ｆ」という）１９として示している。
【００２１】
ここで、ホストＩ／Ｆ１１は、ホスト（サーバー）３０や他のＰＣ３２等との通信を行う。例えば、ホスト３０のＯＳから、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。上述したＬＴＦＳの例では、デスクトップＯＳなどから直接、テープドライブ内のデータを参照でき、ＨＤ内のファイルを扱うのと同様に、ダブルクリックでファイルを実行したり、ドラッグアンドドロップでコピーしたりできる。
【００２２】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭによって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
【００２３】
チャネル１３は、テープ２３に書き込むべきデータをヘッド１４に送ったり、テープ２３から読み出されたデータをヘッド１４から受け取ったりするために用いられる通信経路である。ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読み出したりする。モータ１５は、リール２１、２２を回転させる。なお、図２では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００２４】
一方、コントローラ１６は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。ヘッド位置制御システム１７は、所望のラップを追跡するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド１４を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１７で行う。ラップ及びその切り替えについてはさらに後述する。
【００２５】
モータドライバ１８は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１８も２個設けられる。ＣＭＩ／Ｆ１９は、例えば、ＲＦリーダライタにより実現され、ＣＭ２４への情報の書込みや、ＣＭ２４からの情報の読出しを行う。
【００２６】
図３は、本発明のテープカートリッジ２０内のテープ２３の構成例を示す図である。図３は、ＬＴＯ−５に準拠したテープ２３の一例である。図３（ａ）において、記録面は、１２．６５ｍｍ幅のテープに４本のデータバンドＤＢ０〜３を挟む形で５本のサーボバンド４０が配置されている。例えば、ＬＴＯ−５では、１本のデータバンドは３２０本のデータトラック（図示なし）を有し、合計では１２８０本のデータトラックを持っている。サーボバンド４０の各々には、ヘッド１４を正確に導く（トラッキングさせる）ためのサーボパターンが予め記録されている。テープドライブ１０は、各データバンドＤＢ０〜３を挟む２本のサーボバンド４０中のサーボパターンを読み取りながら高精度にヘッド１４を位置付けし、データの書き込みや読み出しを実現する。
【００２７】
図３（ｂ）は、（ａ）のデータバンド５０（ＤＢ０〜２）の１つに含まれるラップ５２を示す図である。ラップ５２は、既に上述したようにテープ２３上の複数のトラックのグループであり、言い換えれば、ヘッド１４がテープ２３に総容量のデータを書き込む場合に、テープ２３の長手方向に数十往復する際のその片道一回分のデータ群を意味する。例えばＬＴＯ−５では、１つのデータバンド５０に２０本のラップが含まれ、テープ全体では８０本のラップが含まれる。テープへの書き込み動作において、１つのラップの終端までいくと、テープの進行方向を反転させて、ヘッド位置制御システム１７はヘッドを隣のラップへ移動させて（矢印Ａ）書き込みを継続する。そのラップの移動／切り替えを“ラップターン”と呼び、通常そのラップターンに数秒の時間を要する。このラップターンの間は、ラップにデータを書き込みすることができない。
【００２８】
図４は、本発明のバッファへのデータ蓄積を説明するための図である。一実施形態では、バッファ６０、６４、６６は、ホスト３２内あるいはファイルシステム１００内のいずれかに配置されるバッファであり、バッファ１２は、既に説明した図２に例示されるテープドライブ１０内のバッファである。バッファ６０は、通常のデータ書き込み操作において、利用されるバッファであり、バッファ６４、６６は、本発明のラップターンの際にのみ確保／利用するバッファである。バッファ６４、６６には、ＤＲＡＭ等の半導体メモリあるいはＨＤＤ等を用いてもよい。なお、バッファ６４、６６は、テープドライブ１０内に設けることも可能である。その場合、ホストから直接そのバッファにデータが転送される。
【００２９】
ファイルシステム１００がＬＴＦＳである場合、テープドライブ１００への連続したデータの書き込みをおこなうために、バッファ６０に蓄積したデータを順次テープドライブ内のバッファ１２に転送しながらテープにデータを書き込む、いわゆる遅延書き込み機能を有している。この遅延書き込みの場合、ホストからバッファ６０に蓄積されたデータは、バッファ１２に転送され（Ｂ１）、テープのラップ５２０に連続したデータとして書き込まれる。ラップターンの際には、バッファ６０あるいはバッファ１２の空き容量が無くなり、ホストからのデータ転送（Ａ１）ができない場合が生じ得る。その場合、ラップターン専用のバッファ領域を確保する。
【００３０】
そのバッファ領域の確保の形態としては、例えば次の３つの形態がある。１つ目は、バッファ６０の所定領域６２をラップターン専用のバッファ領域として確保し、他のデバイス、アプリケーションによって利用できないようにする。２つ目は、バッファ６０とは別のバッファ６４をラップターン専用のバッファ領域として確保／利用する。この場合、ラップターン中にホストから転送されるデータは、バッファ６４に蓄積され、順次テープドライブ１０中のバッファ１２へ転送される（Ｂ２）。３つ目は、バッファ６０とは別のバッファ６６の一部の領域６８をラップターン専用のバッファ領域として確保／利用する。この場合、ラップターン中にホストから転送されるデータは、バッファ６６の一部の所定領域６８に蓄積され、順次テープドライブ１０中のバッファ１２へ転送される（Ｂ３）。
【００３１】
バッファ領域の記憶容量は、ホストからの転送速度Ａ（ＭＢ／ｓ）にラップターンの時間Ｔ（ｓ）を乗算した容量Ａ・Ｔ（ＭＢ）以上の容量として設定される。例えば、転送速度Ａが１６０ＭＢ／ｓで、ラップターンの時間が３秒の場合、バッファ容量は、少なくとも４８０ＭＢ以上必要となる。このラップターン専用のバッファ領域は、ラップターンが終了し、バッファ領域のデータが全てバッファ１２に転送された後、他のデバイス、アプリケーションが利用できるように解放される。このように、本発明では、ラップターンの際に必要なバッファ領域を確保した後は、そのバッファ領域を解放することにより、いわばバッファの容量を動的に変動させて、バッファへのデータ蓄積の遅延を確実に防止するところに特徴がある。
【００３２】
次に、図５を参照しながら本発明のデータ書き込み方法のフローについて説明する。図５のフローは、例えば図１の構成において、ホスト（サーバー）３０やＰＣ３２等で実行されるソフトウエア（ＬＴＦＳ等）により実施される。
【００３３】
ステップＳ１１において、ホストから書き込みデータが転送されバッファ６０に蓄積される。書き込みデータ（ファイル）は、所定のサイズ（例えば５１２ＫＢ）毎に順次転送され蓄積される。ステップＳ１２において、バッファ６０に蓄積された書き込みデータが、テープドライブ１０内のバッファ１２に転送されて順次テープ２３上のラップ５２に書き込まれる。
【００３４】
ステップＳ１３において、ラップターンが検出される。例えば、ラップの書き込み可能な空き容量割合（％）が、１つのラップ全体の１％あるいは０．５％といった所定の割合（％）になった場合にラップターンがあるとして検出される。あるいは、ホストからテープドライブ１０に専用のＳＣＳＩコマンドを定期的に送って、ヘッド位置制御システム１７が得たラップ位置情報を取得することにより、ラップターンがあることを検出してもよい。
【００３５】
ラップターンが検出された場合、ステップＳ１４において、バッファ領域が確保される。このバッファ領域の確保は、図４を参照しながら既に説明した通りであり、例示したバッファ領域６２、６４、または６６（６８）が確保される。ステップＳ１５において、確保したバッファ領域にラップターン中の書き込みデータが蓄積される。図４の例では、バッファ領域６２、６４、または６６（６８）へのデータ転送（蓄積）Ａ２〜Ａ４が該当する。ステップＳ１６において、バッファ領域６２、６４、または６６（６８）からデータがテープドライブ１０内のバッファ１２に転送され、テープ２３のラップ５２に連続したデータとして書き込まれる。
【００３６】
ステップＳ１７において、ラップターンが終わったか否かを判定する。この判定がＮｏの場合、ステップＳ１５とＳ１６を繰り返す。ラップターンが終わった場合、ステップＳ１８で、バッファ領域に蓄積された全てのデータがテープドライブ１０内のバッファ１２に転送されたか否かを判定する。この判定がＮｏの場合、ステップＳ１６に戻り、バッファ領域のデータ転送が終了するまではバッファ領域のデータ転送を優先的に実施して、転送後に確実にバッファ領域を開放するようにする。ステップＳ１８の判定がＹｅｓの場合、ステップＳ１９で確保したバッファ領域を解放する。次のステップＳ２０で、ホストから転送される書き込みデータが終了したか否かが判定され、その判定がＹｅｓになるまで、上述したステップＳ１１〜Ｓ１９までが繰り返される。
【００３７】
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。例えば、上述した実施形態では、主としてＬＴＦＳ、ＬＴＯ−５等に準拠したテープドライブを例にとり説明したが、本発明はこれに限られず、バッファへのデータ蓄積を利用するいわゆる遅延書き込み機能を用いた全てのテープドライブへのデータ書き込みの場合に適用可能である。さらに、本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
【符号の説明】
【００３８】
１０  テープドライブ
１１  ホストＩ／Ｆ
１２、６０、６２、６４、６６、６８  バッファ／バッファ領域
１３  チャネル
１４  ヘッド
１５  モータ
１６  コントローラ
１７  ヘッド位置制御システム
１８  モータドライバ
１９  カートリッジメモリＩ／Ｆ
２０  テープカートリッジ
２１、２２  リール
２３  テープ
２４  カートリッジメモリ（ＣＭ）
３０  サーバー（ホスト）
３２、３４  ＰＣ
３６  ネットワーク
４０  サーボバンド
５０  データバンド（ＤＢ）
５２  ラップ
１００  ファイルシステム
【図１】
2014215668.tif 000003
【図２】
2014215668.tif 000004
【図３】
2014215668.tif 000005
【図４】
2014215668.tif 000006
【図５】
2014215668.tif 000007