(57)【特許請求の範囲】
【請求項１】
それぞれテープを搭載し固定長のセグメントで分割されたバッファを有する２以上のテープ記録装置を含み、前記テープ記録装置に複数のデータと所定のタイミングで同期要求とを送るホストに接続されたテープ記録システムであって、
前記ホストに接続され、前記ホストから送られた前記複数のデータを受取り、前記セグメントに前記データが一杯に蓄積された場合に前記蓄積されたデータをテープに書き込む第１のテープ記録装置と、
前記第１のテープ記録装置に接続され、前記第１のテープ記録装置を介して前記ホストから送られた前記複数のデータを受取り、前記同期要求を受け取ったタイミングで前記セグメントに蓄積された所定の個数のデータをテープへ書き出す第２のテープ記録装置とを備え、
前記第１のテープ記録装置は、前記セグメントに蓄積されたデータをテープに書き込を完了した場合にその書込み完了を前記第２のテープ記録装置に通知して、前記データに対応する前記第２のテープ記録装置のテープの記録箇所を上書き可能な空き領域とすることを特徴とする、テープ記録システム。
【請求項２】
前記第１のテープ記録装置は、前記データに対応する同期要求を無視して前記バッファの少なくとも１つのセグメントが完全に蓄積されるまで、前記バッファ中のデータを書き込まないことを特徴とし、
前記第２のテープ記録装置は、前記同期要求のタイミングで前記セグメントに蓄積された所定の個数のデータをテープに書き出す場合に前記データにより前記セグメントの完全には蓄積されていないために前記セグメントの未充填領域をデータパディングして、前記セグメントの前記データを書き出すことを特徴とする、請求項１に記載のテープ記録システム。
【請求項３】
前記第１のテープ記録装置により書き込まれたテープは、前記セグメントに蓄積されたデータをデータセットとして書き込まれる通常の書き込みテープとして扱われ、
前記第２のテープ記録装置により書き込まれたテープは、前記セグメントに蓄積されたデータをデータセットとして書き込まれ、前記テープ上のデータセット間隔は同期要求の時間間隔を反映する請求項２に記載のテープ記録システム。
【請求項４】
前記第２のテープ記録装置は、前記第１のテープ記録装置のためのテープに書き込み済みのデータに関して、前記書き込み済みのデータを記録している前記第２のテープ記録装置のためのテープの領域を上書可能に継続的に使用できる、請求項３に記載のテープ記録システム。
【請求項５】
前記第１のテープ記録装置においてデータの書き込みエラーが生じた場合において、前記第２のテープ記録装置において前記データの書き込み済みの場合、前記データの書き込みエラーを前記ホストに報告しない、請求項４に記載のテープ記録システム。
【請求項６】
前記第２のテープ記録装置においてデータの書き込みエラーが生じた場合において、前記第１のテープ記録装置において前記データの書き込み済みの場合、前記データの書き込みエラーを前記ホストに報告しない、請求項４に記載のテープ記録システム。
【請求項７】
前記第２のテープ記録装置においてデータの書き込みエラーが生じた場合において、前記第１のテープ記録装置においてテープ書き込み済みのデータを記録する前記第２のテープ記録装置のためのテープ記録領域を含む未使用テープ領域に前記エラーのデータを再度書き込みする、請求項６に記載のテープ記録システム。
【請求項８】
前記第１のテープ記録装置においてデータの書き込みエラーが生じた場合において、前記第２のテープ記録装置のＢＦテープから前記データを読み出し、ドライブ通信接続を介して前記第１のテープ記録装置のためのテープのエラー箇所のデータを回復することを特徴とする、請求項５に記載のテープ記録システム。
【請求項９】
前記ホストと直接接続される前記第1のテープ記録装置とはファイバーチャネルまたはＳＣＳＩで通信し、前記テープ記録装置の２つの間の通信はイーサネットであることを特徴とする請求項１または８に記載のテープ記録システム。
【請求項１０】
それぞれテープを搭載し固定長のセグメントで分割されたバッファを有する２以上のテープ記録装置を含み、前記テープ記録装置に複数のデータと所定のタイミングで同期要求とを送るホストに接続されたテープ記録システムであって、
前記ホストに接続され、前記ホストから送られた前記複数のデータを受取り、前記同期要求を受け取ったタイミングで前記セグメントに蓄積された所定の個数のデータをテープに書き出す第１のテープ記録装置と、
前記第１のテープ記録装置に接続され、前記第１のテープ記録装置を介して前記ホストから送られた前記複数のデータを受け取り、前記セグメントが前記データにより一杯に蓄積された場合に、前記蓄積されたデータをテープに書き込む第２のテープ記録装置とを備え、
前記第２のテープ記録装置は、前記セグメントに蓄積されたデータをテープに書き込を完了した場合にその書込み完了を第１のテープ記録装置に通知して、前記データに対応する前記第１のテープ記録装置のテープの記録箇所を上書き可能な空き領域とすることを特徴とする、テープ記録システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストからの複数のデータの書き込みとともに同期要求の頻度が高い場合に書き込みパフォーマンスを改善する、複数のテープ記録装置を含むテープ記録システムに関する。
【背景技術】
【０００２】
テープ記録装置（以下、テープドライブ、ドライブ）がテープメディア（以下、テープ、又はテープ媒体）にデータを書き込む場合、ドライブはホストから送られたデータをすぐには書き込まない。ドライブは、一旦ドライブ内のバッファに格納し、十分な量のデータが蓄積された後書き込みを開始する。【０００３】
図1は、バッファとテープ上の書き込みデータ（データセット）との対応を示す。
バッファ１２０は固定長セグメント２０で分割されたリング状をなしている。ホストから送られた複数の可変長のデータ１０は順次セグメント２０に蓄えられる。ヘッド５０は、そのセグメント２０がデータにより完全に充填されるとその内容を、データセット４０としてテープ３０に書き込む。【０００４】
データをすべてテープ上に書き込み、バッファ１２０のセグメントが空になると、書き込み終了となる。ドライブは書き込み処理を終えると、次回の書き込み処理に備えてテープを巻き戻す。ドライブの書き込み用磁気ヘッドの位置とテープ上のデータの終端の位置を合わせる作業を行う。この動作をバックヒッチ（Ｂａｃｋｈｉｔｃｈ）とよぶ。【０００５】
バックヒッチには１回あたり５秒程度の時間がかかる。書き込みのパフォーマンスの観点から、ドライブはできる限りバックヒッチを行わずに書き続けることが望ましい。通常の書き込みではドライブ内のバッファのセグメントにデータを貯めながら書き込みを行う。ホストから順次データ１０が徐々にバッファに蓄えられセグメントが一杯になった段階で順次データセットとしてテープに書き込む。通常のホストから書き込みでは連続的にデータ送られるために書き込みの途中でバッファが完全に空になることは少なく、バックヒッチも滅多に起きない。【０００６】
一方、ホストはドライブに対し、バッファ内のデータをすべてテープに書き出す処理、即ち同期要求（Ｆｌｕｓｈ）をすることがある。同期要求は、バッファ２０に一時的に保管されたデータをテープに書き込みされたことを確認するため発行される。ドライブがＦｌｕｓｈによる書き込みを行うと、バッファ内のデータは空になるので、バックヒッチが発生する。同期要求の頻度が高いとバックヒッチの回数も増えるので、書き込みのパフォーマンスが低下する。【０００７】
パフォーマンス低下を防ぐため、ドライブはバッファに蓄えられたデータに対する同期要求に対し、バックヒッチせずに書き込むこともできる。この書き込み方法をＢａｃｋｈｉｔｃｈｌｅｓｓ Ｆｌｕｓｈという。この書き込み方法は、データセット間隔が大きい状態でデータがテープに書き込まれることになり、テープの記録密度を低下させる。【０００８】
このような同期要求間のバックヒッチを回避するために、ＩＢＭのエンタープライズ向けテープドライブはＲｅｃｕｒｓｉｖｅ Ａｃｃｕｍｕｌａｔｅ Ｂａｃｋｈｉｔｃｈｌｅｓｓ Ｆｌｕｓｈ（ＲＡＢＦ）と呼ばれる機能を実装している（特許文献１及び２）。ＢＦ（Ｂａｃｋｈｉｔｃｈｌｅｓｓ  Ｆｌｕｓｈ）とは文字通りバックヒッチ動作を発生させない書き込みを意味する。ＲＡＢＦ方式の書き込みでは、各同期要求に対してテープドライブはバックヒッチのための時間ロスと記録密度の低下を避けられる。このＲＡＢＦ機能は、図３を用いて、“発明を実施するための形態”において詳細に説明される。【０００９】
この機能はホストが頻繁に同期を要求（Ｆｌｕｓｈ）した場合に、通常任意の可変長のデータを書き込む通常のトラック領域とは別のトラック領域（ＡＢＦ領域：Ａｃｃｕｍｕｌａｔｅ  Ｂａｃｋｈｉｔｃｈｌｅｓｓ  Ｆｌｕｓｈ  ｒｅｇｉｏｎ）にバックヒッチを行わずに、データを書き込む。以下この書き込み機能をＢＦＷｒｉｔｅ（Ｂａｃｋｈｉｔｃｈｌｅｓｓ  Ｆｌｕｓｈ  Ｗｒｉｔｅ）と呼ぶ。【００１０】
一定の量のデータを書き込んだ後で、それらのデータを本来書き込むべき通常の領域に書き直す。この書き込みをＲｅＷｒｉｔｅ（Ｒｅｃｕｒｓｉｖｅ Ｗｒｉｔｅ）と呼ぶ。【００１１】
このＲＡＢＦでの動作は、ホストから後続の一連のデータが来ることを待つ必要がないためバックヒッチが介在せず、書き込みパフォーマンスの劣化を低減している。
また、テープに記録されたデータセット直後に後続のデータセットを書き込むことができるので記録密度の低下を避けられる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許第６８５６４７９号明細書
【特許文献２】米国特許第６８６５０４３号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ところで、ＲＡＢＦ機能に次の問題点がある。
一台のドライブでＢＦＷｒｉｔｅとＲｅＷｒｉｔｅを交互に行う。このため、通常のトラック領域−ＡＢＦ領域を行ったり来たりするため、移動に時間がかかる。また、通常のトラック領域とＡＢＦ領域に同じデータを２度書くことになるので、その分の時間も余計にかかる。【００１４】
データ毎に同期要求が多発する場合にバックヒッチを発生させない書き込み方法を与えるＲＡＢＦ技術の特徴的効果を担保したい。同時に、更なる一層の書き込みパフォーマンスの向上も図りたい。【００１５】
そこで、本発明は、上記課題を解決するために複数のテープ記憶装置を含むテープ記録装置システムを提供するものである。【００１６】
また、本発明は、1のテープドライブにおいてデータ書き込みエラーが生じた場合に、データエラーを復元するテープ記録システムを提供するものである。
【課題を解決するための手段】
【００１７】
上記の目的を達成する本発明は、それぞれテープを搭載し固定長のセグメントで分割されたバッファを有する２以上のテープ記憶装置を含み、これらテープ記録装置に、複数のデータと所定の頻度（タイミング）で同期要求とを送るホストに接続されたテープ記憶システムである。このテープ記録システムは、ホストに接続されホストから送られた複数のデータを受取り、バッファのセグメントがデータにより一杯に蓄積（準備）された場合にその蓄積されたデータをテープに書き込む第１のテープ記憶装置と、その第１のテープ記憶装置に接続され第１のテープ記憶装置を介してホストから送られた複数のデータを受取り、同期要求を受け取ったタイミングでセグメントに蓄積された所定の個数のデータをテープへ書き出す第２のテープ記憶装置とを備える。【００１８】
このテープ記録システムの特徴は、第１のテープ記憶装置が、データに対応する同期要求を無視してバッファの少なくとも１つのセグメントが完全に蓄積されるまで、バッファ中のデータを書き込まないことを特徴とし、第２のテープ記憶装置が、その同期要求のタイミングでバッファのセグメントに蓄積された所定の個数のデータをテープに書き出す場合にデータによりセグメントの完全には蓄積されていないためにそのセグメントのデータ未充填領域をデータパディングして、セグメント内の全てのデータを書き出すことである。【００１９】
このテープ記録システムの特徴は、第１のテープ記憶装置により書き込まれたテープがバッファのセグメントに蓄積されたデータをデータセットとして書き込まれる通常の書き込みテープとして扱われ、第２のテープ記憶装置により書き込まれたテープが、セグメントに蓄積されたデータをデータセットとして書き込まれ、テープ上のデータセット間隔は同期要求の時間間隔を反映することである。【００２０】
このテープ記録システムの特徴は、第２のテープ記憶装置が、第１のテープ記憶装置のためのテープに書き込み済みのデータに関して、その書き込み済みデータを記憶している、第２のテープ記憶装置のためのテープの領域を上書可能に継続的に使用できる。【００２１】
このシステムの特徴は、前記第１のテープ記憶装置においてデータの書き込みエラーが生じた場合において、前記第２のテープ記憶装置において前記データの書き込み済みの場合、前記データの書き込みエラーを前記ホストに報告しないことである。【００２２】
このシステムの特徴は、前記第２のテープ記憶装置においてデータの書き込みエラーが生じた場合において、前記第１のテープ記憶装置において前記データの書き込み済みの場合、前記データの書き込みエラーを前記ホストに報告しないことである。【００２３】
このシステムの特徴は、前記第２のテープ記憶装置においてデータの書き込みエラーが生じた場合において、前記第１のテープ記憶装置においてテープ書き込み済みのデータを記憶する前記第２のテープ記憶装置のためのテープ記憶領域を含む未使用テープ領域に前記エラーのデータを再度書き込みすることである【００２４】
このシステムの特徴は、前記第１のテープ記憶装置においてデータ書き込みエラーが生じた場合、前記第２のテープ記憶装置のＢＦテープから前記データを読み出し、ドライブ通信接続を介して前記第１のテープ記憶装置のためのテープのエラー箇所のデータを回復することである。【００２５】
このシステムの特徴は、前記ホストと直接接続される前記ドライブとはファイバーチャネルまたはＳＣＳＩで通信し、前記ドライブ間通信はイーサネット（登録商標）であることである。【００２６】
更に上記目的を達成する本発明は、それぞれテープを搭載し固定長のセグメントで分割されたバッファを有する２以上のテープ記憶装置を含み、テープ記録装置に複数のデータと所定の頻度（タイミング）で同期要求とを送るホストに接続されたテープ記憶システムである。このシステムは、ホストに接続されホストから送られた複数のデータを受取り、同期要求を受け取ったタイミングでセグメントに蓄積された所定の個数のデータをテープに書き出す第１のテープ記憶装置と、第１のテープ記憶装置に接続されその第１のテープ記憶装置を介してホストから送られた複数のデータを受け取り、セグメントがデータにより一杯に蓄積（準備）された場合にその蓄積されたデータをテープに書き込む第２のテープ記憶装置とを備える。
【発明の効果】
【００２７】
以上のように構成された本発明の、少なくとも２以上のテープドライブを含んだテープ記録システムによれば、ホストから同期要求の多発するデータ書き込み対して、書き込みパフォーマンスを改善して、テープ記録密度を維持できる有利な効果をする。
【図面の簡単な説明】
【００２８】
【図１】バッファとテープ上の書き込みデータ（データセット）との対応を示す。
【図２】テープドライブ１００の構成図を示す。
【図３】ＲＡＢＦ書き込み方式の概念図を示す。
【図４】ＲＡＢＦ書き込みの際のＢＦＷｒｉｔｅとＲｅＷｒｉｔｅの典型的なタイムチャートを示す。
【図５】第１の実施例の書き込み処理を示す。
【図６】第２の実施例の接続の書き込み処理を示す。
【図７】ホストが２台、ドライブが３台存在する第３の実施例を示す。
【図８】第４の実施例として、ＢＦドライブ、Ｒドライブ、または、単独で機能する通常ドライブとして、テープドライブは状況に応じて働きを変える手順の一例を示す。
【発明を実施するための形態】
【００２９】
以下において、本発明のテープ記憶システムについて、ホストの接続により幾つかの典型的な実施形態（以下「実施例」という）が説明される。これら実施例は、例示であり本発明のテープ記憶システムを限定するものではない。
【００３０】
本発明では、１つのテープドライブで行うＲＡＢＦ機能を２つのテープドライブを用い、ＲｅＷｒｉｔｅ動作に伴うヘッド移動による書き込みを省略できる。本発明は、少なくとも２台のテープドライブを含むテープ記憶システムであり、このテープ記録システムがホストに接続されている。１つのドライブは、ＲＡＢＦ機能におけるＲｅＷｒｉｔｅの書き込みを行う。この１つのドライブを「Ｒドライブ」と呼ぶ。もう１つドライブでは、ホストの同期要求に応じてＢＦ書き込みを行う。この１つのドライブを「ＢＦドライブ」と呼ぶ。本発明のテープ記憶システムにおいては、これら２つの機能動作を２台のドライブで同時に行うため、ＲＡＢＦ機能よりも書き込みのパフォーマンスが向上する。
【００３１】
まず本発明の構成要素であるテープ記録装置（テープドライブ）の駆動について説明する。図２は、テープドライブ１００の構成図を示す。テープドライブ１００は、インターフェース１１０と、バッファ１２０と、記録チャネル１３０、テープ１４ａと、ヘッド１４ｂと、リール１４ｃ、１４ｄと、カートリッジメモリ（ＣＭ）２５を有するカートリッジ１４ｅと、モータ１５０と、コントローラ１６０と、ヘッド位置制御システム１７０と、モータドライバ１８５とを含む。
【００３２】
インターフェース１１０は、ホスト１０５と通信を行う。インターフェース１１０は、ホスト１０５からバッファ１２０へ転送されるデータの書き込みを指示するコマンド、バッファ１２０のデータをテープ１４ａへの書き込みを指示するコマンドを受け取る。例えばインターフェース１１０の通信の規格はＳＣＳＩまたはファイバーチャネル（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）である。ファイバーチャネルの場合、バッファへの書き込み要求（コマンド）はＷｒｉｔｅに相当する。また、バッファ中のデータ書き出しの同期要求（コマンド）はＷｒｉｔｅＦＭ０に相当する。
【００３３】
バッファ１２０は、テープ１４ａに書き込むべき可変長のデータ１０を蓄積するメモリで、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。バッファ１２０は、固定長のセグメント２０（図１）で区切られる。データ１０は、任意の長さでホスト１０５からドライブに転送される。バッファ１２０は、最後のセグメントまでデータを受け取り次は再び最初のセグメントからデータを受け取り始めるという意味でリングバッファと呼ばれる。ひとつのセグメント２０は、テープ１４ａ、３０上のひとつのデータセット４０（図１）に対応する。１つのデータセットは、ホスト１０５から送られるデータの１つの一部分、または、複数のデータから構成される。
【００３４】
書き込みのタイミングは、セグメントがデータにより完全に充填された場合と、ホストからの同期要求に応じてセグメントのデータ未充填エリアにデータパディング（ｐａｄｄｉｎｇ）により充填した場合とである。この明細書では、セグメントがデータにより充填されるこれら２つの場合を、セグメントが“準備”されたと表現することもある。
【００３５】
テープ１４ａは、データの記録手段としてのテープ媒体である。記録チャネル１３０を介して渡されたデータをデータセットとしてヘッド１４ｂによりテープ１４ａに書み込まれる。テープ１４ａは、リール１４ｃ及び１４ｄに巻かれ、これらの回転に伴い、リール１４ｃからリール１４ｄの方向へ、又は、その反対の方向へ、横方向に移動する。カートリッジ１４ｅは、テープ１４ａが巻きつけてあるリール１４ｃを収容する容器である。１４ｅと同じカートリッジにより、リール１４ｄを収容するものを設けてもよい。モータ１５０は、リール１４ｃ及び１４ｄを回転させる。
【００３６】
テープカートリッジ１４ｅは、その内部にカートリッジメモリ（ＣＭ：Cartridge Memory）２５と呼ばれる非接触不揮発性メモリを備えている。ＣＭ２５は、テープドライブ１００により非接触的に読み書きされる。テープドライブがＣＭ内のテープディレクトリの情報（書き込みデータの属性情報）を更新する。テープドライブは、データ読み取り時に、このＣＭに含まれる情報を参照して、テープを目的位置まで高速に移動により位置決めを可能とする。
【００３７】
コントローラ１６０は、テープドライブ１００の全体を制御する。コントローラ１６０は、ホスト１０５からインターフェース１１０で受け付けたコマンドに従って、データのテープ１４ａへの書き込み読取りを制御する。また、コントローラは、ヘッド位置制御システム１７０やモータドライバ１８５の制御も行う。ヘッド位置制御システム１７０は、所望の１つ又は複数のラップ（複数のトラックの集合）を追跡する。ヘッド１４ｂは、トラックを切り換える必要が生じると、ヘッド位置制御システム１７０が、ヘッド１４ｂを電気的に切り換える制御を行う。モータドライバ１８５は、直接コントローラ１６０に接続されていてもよい。
【００３８】
テープ１４ａを停止させずに次の同期要求を行った場合、先行する同期要求により書き込まれたデータと、その次の同期要求にて書き込まれたデータとの間に、長い記録領域の無駄が存在する。テープドライブ動作において、記録容量の無駄を小さくするために、テープ媒体の長手方向に書き込まれるデータセットの間隔を最小限にする必要がある。
【００３９】
バックヒッチ操作により、テープ媒体に書き込まれたデータセットの直後から次のデータが書き込まれるように、テープ媒体１４ａをヘッド１４ｂに位置決めする。ヘッド１４ｂに対して、テープ媒体１４ａは走行速度を減速して一旦停止する。その後にテープ媒体を書き込むべき位置まで戻し、次のデータを書くべきテープ位置にヘッドを位置決めための書き込みモータ１５０を駆動させる。この操作に約３〜５秒の余計な時間を費やす。ホストから複数のデータの書き込みに毎に同期要求される場合、バックヒッチ動作が頻発しホストからの転送データの書き込みパフォーマンスを低下させる。そのため、ＩＢＭの大型テープドライブでは、このような多くの同期要求を伴う書き込みの際のバックヒッチを回避するため、ＲＡＢＦという書き込み方式（特許文献１及び特許文献２）を採用する。
【００４０】
図３は、ＲＡＢＦ書き込み方式の概念図を示す。１つのテープドライブが、複数のトラックのバンド１４５を一時記憶のラップ１８０（ＡＢＦラップ）と、通常ラップ１６５とに使い分けて行う書き込む方法である。１つのヘッド１４ｂは、例えば８、１６などの書き込み読取りチャネルを有する。ラップとは、複数(例えば、８、１６)のトラックの１つのまとまりで、１のヘッド１４ｂが同時に読み書きする単位である。ＡＢＦラップ１８０（トラック１４、１５）に対して、ホストから転送されたデータは、最初にバックヒッチを行うことなく書き込みが行なわれる。ＡＢＦラップはテープに書き込みの際にデータを一時保管するバッファの拡張したものであり、かつテープ上に一時記憶されているので電源遮断時などの際の消失は防げる。通常ラップ１６５は、記憶容量を無駄にすることなく、データセットが書き込まれるトラック1〜１３で構成される。テープドライブが、同期要求を受けた際に、バッファ内のデータを、テープ媒体の走行を継続させたままバックヒッチを行わずに、ＡＢＦラップ１８０に書く。ＡＢＦラップに書かれたデータセットをバッファ１２０を介して、通常ラップ１６５に書き戻す即ちリライト（ＲｅＲｒｉｔｅ）する。各データセット（ＤＳ、ＤＳ＋１、ＤＳ＋２、・・・）は、先行する斜線のデータに対して新たに斜線のデータを逐次付加するように各データセットを同期要求の間隔において書き込む。これらデータセットの書き込みは、バックヒッチを行わないバッファフラッシュ(Ｂａｃｋｈｉｔｃｈｌｅｓｓ  Ｆｌｕｓｈ)である。この書き込みをＢＦＷｒｉｔｅ（ＢＦはＢａｃｋｈｉｔｃｈｌｅｓｓ  Ｆｌｕｓｈの略である）と呼ぶ。各データセットの矢印は、書き込み読取り制御がバッファをアクセスするポインタを示す。データセットＤＳ＋３、ＤＳ＋７、ＤＳ＋１１、ＤＳ＋１５、ＤＳ＋１９は、データで充填（準備）されたデータセットＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５である。これら準備されたデータセットＰ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５は、一定のタイミングで通常ラップ１６５（トラック１，２，３，・・・，１３)に書き込む動作を反復的に(Ｒｅｃｕｒｓｉｖｅ）する。この書き込み動作をＲｅＷｒｉｔｅ（Ｒｅｃｕｒｓｉｖｅ  Ｗｒｉｔｅ）と呼ぶ。ＲｅＷｒｉｔｅ動作により、完全にデータで充填（準備）されたデータセットＰ１〜Ｐ５が通常ラップ１６５に、記憶容量を無駄にせずに書かれる。このＲＡＢＦ方式を採用するテープドライブは、連続して発行させる同期要求に対してバックヒッチの必要がないため書き込みパフォーマンス向上も実現できる。複数のデータの書き込みと同期要求を受け取った１つのテープドライブは、ＲＡＢＦ機能を、ＢＦＷｒｉｔｅ機能とＲｅＷｒｉｔｅ機能に分けて行っている。
【００４１】
２つの動作のうち仮にＲｅＷｒｉｔｅの書き込み動作を省略した場合に、全体の書き込みパフォーマンスへの寄与を調べる。現行のテープドライブでＲＡＢＦによる書き込みを行い、処理時間を計測した。実験ではＲＡＢＦが有効な書き込み方の一例として、データ量６８０ＭＢを１ＭＢ書き込むごとに同期要求をするという処理を繰り返した。一時記憶領域（ＡＢＦラップ）として隣接する２つのラップＡＢＦ１、ＡＢＦ２を与える。この２つのラップは互いに逆方向で書き込み／読取りが行われる。これらＡＢＦ領域にＢＦＷｒｉｔｅを行った。次に通常ラップにＲｅＷｒｉｔｅを行っている。
【００４２】
図４は、ＲＡＢＦ書き込みの際のＢＦＷｒｉｔｅとＲｅＷｒｉｔｅの典型的なタイムチャートを示す。下は各イベントとそのラップタイムを示したものである。ホストは１ＭＢのデータのドライブへの転送及び毎に同期要求をしている。順次送られて来るデータ（１ＭＢ）はＡＢＦ１及び２のラップにＢＦＷｒｉｔｅでバックヒッチをせずに書き込まれる。そして、データセット分のデータが準備できた段階でかかるデータセットを通常ラップへのＲｅＷｒｉｔｅが頻発する実験である。図４及び以下イベント時間を参照すると、ＲｅＷｒｉｔｅは全体の書き込み期間において２割強を占めていることがわかる。
イベント                          ラップタイム
ＡＢＦ１  ＢＦＷｒｉｔｅ開始      ０
ＡＢＦ２  ＢＦＷｒｉｔｅ開始      ２６．１９sec
ＲｅＷｒｉｔｅ開始                ５０．６５sec
ＲｅＷｒｉｔｅ終了                ６３．８９sec
【００４３】
１台のテープドライブにおいてＲＡＢＦ機能を用いて６８０ＭＢを書き込むのに約６３．８９秒かかっている。本発明で２台のテープドライブを用いる書き込み手法では、ＲｅＷｒｉｔｅの時間を削減できるので、同じ量を書き込むのに５０.６５秒で済む。（５０.６５／６３．８９）×１００＝７９．２７％となるので、処理時間を２割強削減できることになる。これは典型的なケースの一例であり、シーケンスによっては処理時間をより削減できる場合もある。このＲｅＷｒｉｔｅ動作を２つのテープドライブを用いることにより無視できれば、1台のドライブで行うＲＡＢＦ機能よりも書き込みのパフォーマンスが向上する。
【００４４】
１つのドライブは、ホスト−ドライブ間でのデータの送受信を行う。同時に、２つのドライブは、例えば、イーサ・ネットを始めとする通信機能によりドライブ同士でのデータの送受信が可能である。
【００４５】
ＢＦドライブが、ホストへの書き込み完了報告を行う。それと同時にドライブ間通信を利用してデータをもう1台のＲドライブに送信する。もう1台のＲドライブは、ホストの同期要求に左右されず、データがバッファ１２０に十分たまった時点で書き込みを行う。
【００４６】
バックヒッチなしでＢＦＷｒｉｔｅにより書き込むテープは、記録密度が低い状態で書き込まれるため、ＲｅＷｒｉｔｅで書き込むテープに比べてテープの消費速度が速い。しかし、ＢＦＷｒｉｔｅされたテープのＡＢＦ領域は、ＲｅＷｒｉｔｅが完了するまでの一時的なキャッシュの役割である。ＲｅＷｒｉｔｅが成功裏に完了したＡＢＦ領域のデータは上書されても良い。ＢＦドライブに用いるテープを、エンドレスのテープとしてＲｅＷｒｉｔｅが書き込み完了したデータを上書きしながら用いれば、ＢＦドライブ用のテープを使い切ってしまうことはない。
【００４７】
また、書き込み完了報告済みのデータを１台のＲドライブに書き込む際にエラーが発生しても、該当データはＢＦドライブで書き込んだテープから読み出しが可能である。ＢＦドライブにおいて書き込みを完了したデータは、他方のＲドライブのテープにより回復できるため、読み出せなくなる事態は発生しない。通常は、読み出し時にはＲｅＷｒｉｔｅしたテープを用いる。ＲｅＷｒｉｔｅ用テープは、密度の高い状態で書き込まれているテープなので、読み出しのパフォーマンスも良い。
【００４８】
ホストとＢＦドライブ、Ｒドライブの位置関係にはホストにＲドライブを繋げる方法とホストにＢＦドライブを繋げる方法の２種類が考えられる。それぞれの構成での処理の手順を以下に示す。どちらの構成で書き込みを行っても、読み出し処理の手順・エラー発生時の処理の手順は同じである。
【００４９】
第１の実施例は、ホストに直接Ｒドライブを繋げる方法である。
＜テープのマウント処理＞
ホストは書き込みを行いたいテープのマウント要求をＲドライブに対して行う。ＲドライブはＲテープをマウント（搭載）し、その完了報告をホストに行う。その影で、ＢＦドライブはＢＦテープをマウントする。
【００５０】
＜書き込み処理＞
図５は、第１の実施例の書き込み処理を示す。ホストは、複数の可変長のデータをテープ記録システムに送る。ホストは、特定のデータの直後で同期要求をデータ記録システムに送る。この同期要求により、ホストはその特定のデータまでの複数のデータが確実にテープに記録できる。Ｒドライブのためのテープを「Ｒテープ」と呼ぶ。ＢＦドライブのためのテープを「ＢＦテープ」と呼ぶ。
＜１＞ホストがＲドライブにデータ書き込み（Ｗｒｉｔｅ）とその同期（Ｆｌｕｓｈ）要求を繰り返する。
＜２＞Ｒドライブはデータをドライブ内のバッファに順次蓄積する。
＜３＞Ｒドライブは、各データ毎にステップ＜２＞の処理と同時にそのデータをドライブ間通信を利用してＢＦドライブに送信し同期要求をする。
＜４＞ＢＦドライブはＲドライブから送信されたデータをバッファの１つのセグメントがデータにより完全に充填されていない状態であっても、すぐにＢＦテープに書き込む。ＢＦテープのトラックに書き込まれた各データのイメージは、図３に示されたＲＡＢＦ技術のＡＢＦラップに順次書かれたデータセット（ＤＳ、ＤＳ＋１、ＤＳ＋２、・・・）と同じでもよい。各データセットは、バックヒッチ無し（Ｂａｃｋｈｉｔｃｈｌｅｓｓ）でＢＦテープのトラックに書き込まれる。
＜５＞ＢＦドライブはドライブ間通信を利用してＲドライブに書き込み完了報告を行う。
＜６＞ＲドライブはＢＦドライブから受けた書き込み完了報告をホストに送る。
＜７＞Ｒドライブは、複数のデータによりバッファの１つのセグメントに完全に充填されたらＲテープにそのセグメントの複数のデータを書き込む。
＜８＞Ｒドライブは、ＢＦドライブに書き込み完了報告を行う。
以上の継続的な書き込み処理において、ＢＦドライブは、既にＲドライブのＲテープ上に書き込みされた（記録済み）のデータに関して、そのデータのＢＦテープ上の記録箇所を上書き可能な空き領域として扱う。
【００５１】
第２の実施例は、ホストに直接ＢＦドライブを繋げる方法である。
＜テープのマウント処理＞
ホストは書き込みを行いたいテープのマウント要求をＢＦドライブに対して行う。ＢＦドライブはドライブ間通信を用いてＲドライブにＲテープをマウントするように要求する。ＢＦドライブ自身はＢＦテープをマウントする。Ｒドライブは要求されたＲテープをマウントし、ドライブ間通信でＢＦドライブに完了報告を行う。ＢＦドライブはＲドライブからのマウント完了報告をホストに送る。これにより、ホストからはＢＦドライブがＲテープをマウントしているように見え、ホストはＲテープに書き込みを行っていると認識する。
【００５２】
＜書き込み処理＞
図６は、第２の実施例の接続の書き込み処理を示す。ホストは、複数の可変長のデータをテープ記録システムに送る。ホストは、特定のデータの直後で同期要求をデータ記録システムに送る。この同期要求により、ホストはその特定のデータまでの複数のデータが確実にテープに記録できる。
【００５３】
＜書き込み処理＞
＜１＞ホストがＢＦドライブにデータ書き込み（Ｗｒｉｔｅ）とその同期（Ｆｌｕｓｈ）要求を繰り返す。
＜２＞ＢＦドライブはデータをバッファのセグメントが一杯にならなくとも、すぐにマウントしているＢＦテープに書き込む。ＢＦテープのトラックに書き込まれた各データのイメージは、図３に示されたＲＡＢＦ技術のＡＢＦラップに順次書かれたデータセット（ＤＳ、ＤＳ＋１、ＤＳ＋２、・・・）と同じでもよい。各データセットは、バックヒッチ無しでＢＦテープのトラックに書き込まれる。
＜３＞ＢＦドライブはホストに書き込み完了報告を行う。
＜４＞ＢＦドライブはステップ＜３＞の処理と同時に、各データをドライブ間通信を利用してＲドライブに送信し書き込みを要求する。
＜５＞ＲドライブはＢＦドライブから送信された各データをバッファに順次蓄積する。
＜６＞Ｒドライブは、バッファの１つのセグメントがデータで一杯になって、データセットが準備できたらＲテープに書き込む。
＜７＞Ｒドライブは、ＢＦドライブに書き込み完了報告を行う。
以上の継続的な書き込み処理において、ＢＦドライブは、既にＲドライブのＲテープ上に書き込みされた（記録済み）データに関して、そのデータのＢＦテープ上の記録箇所を上書き可能な空き領域として扱う。
【００５４】
読み出し方法は、第１の実施例及び第２の実施例で共通である。
上記のどちらの構成で書き込みを行っても、ホストはＲテープへデータを書き込んだと認識している。そのため、読み出し時にはＲテープからの読み出しが要求される。
【００５５】
書き込みエラー時の処理は、第１の実施例及び第２の実施例で共通である。書き込み時にＢＦドライブとＲドライブのどちらかでエラーが発生する場合がある。第１及び第２の実施例のテープ記憶システムにおいては、もう一方のドライブでの該当データの書き込みが成功していれば、ホストにエラーを報告する必要はない。
【００５６】
ＢＦドライブでの書き込みエラーの処理について説明する。
ＢＦドライブは、エラーになったデータをテープの別の場所に書き直す。書き込みエラーは、テープ上の書き込み位置を変えることで回避できる可能性が高い。書き直しを開始する場所はテープの先頭などが考えられる。但し、ＢＦドライブは、ＢＦテープにおいてＲドライブで書き込みが完了していないデータの領域への上書きは避ける必要がある。Ｒドライブでのデータの書き込みを失敗した場合、そのデータをＢＦテープで修復できないからである。ＢＦテープでの書き込み時のエラー処理は、Ｒドライブでのデータ消失に注意して行う必要がある。データの消失可能性期間は、Ｒドライブのバッファにデータが存在するがテープに書き込み完了していない期間である。
【００５７】
ＢＦドライブが書き直し位置への移動をしている間もＲドライブは書き込みを続けることが可能である。ＢＦドライブでの書き直しを行って書き込みが成功しなかった場合でも、該当データがＲドライブで書き込みできれば、エラー報告の必要はない。読み出し時にはＲテープが用いられるので、ＢＦテープでのエラーは意識しなくても良い。
【００５８】
Ｒドライブでの書き込みエラーの処理について説明する。
Ｒドライブで書き込みエラーになった場合、Ｒドライブはエラーになった場所をカートリッジに搭載された不揮発性メモリ（ＣＭ）２５に記録する。ＢＦドライブはデータの上書きを防ぐために、Ｒドライブで書き込めなかったデータの範囲を上書き禁止のテープの記憶領域としてＣＭに保存している。
【００５９】
エラー発生後にホストが書き込みを要求しても、エラーの起きたＲテープには追記できない。そのため、ＲドライブはホストにＲテープの交換を要求し、別のテープを用いて続きの書き込みを行う。ＢＦドライブは、ＣＭに保存された上書きを禁止したテープの記録領域以外の記憶領域に書き込みを行う。
【００６０】
読み出しエラー時の処理は、第１の実施例及び第２の実施例で共通である。
Ｒテープでの読み出しでエラーになった場合、現行のＲＡＢＦ機能での読み出しと同様の手法が適用できる。その手法は、Ｒテープで最後に読み出せたデータセットの情報（ＤＳＩＴ：ＤａｔａＳｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）とＣＭの情報からＢＦテープ上のデータの位置を知ることができるので、ＢＦテープからデータを読み出す。
【００６１】
第１及び第２の実施例の説明では簡単のため、ホスト１台とドライブ２台の構成について述べたが、このホスト及びドライブの数に限定されるものではない。次のように複数のホストと複数のドライブを与えてもよい。
【００６２】
第３の実施例は、２つのホストとそれぞれにＲドライブを１対１に対応させ、１のＢＦドライブを共有した構成である。図７は、ホストが２台、ドライブが３台存在する第３の実施例を示す。この場合、１台のＢＦドライブは２台のＲドライブのためのキャッシュの役割を果たすことになる。この実施例における書き込み処理のフロー、読み出し方法、及び、書き込みエラー時の処理は、第１の実施例のものと同じである。ただし、１つのＢＦドライブが２つのＲドライブにより共用される。ＢＦドライブはＢＦテープに書き込まれるデータがＲドライブ1又は２のどちらのためのデータを記録しているかを区別してＢＦＷｒｉｔｅを実行する必要がある。
【００６３】
例えば、ＢＦテープの一時記録されたデータが、Ｒドライブ1又は２のどちらかのものかを次のように識別できる。ＢＦテープに記録されるデータセットに含まれる複数のデータの内最後のデータがどのＲドライブのものであるか区別する。そのために、そのデータセットの情報（ＤＳＩＴ）に、最後のデータが対象とするＲドライブ１または２のどちらかを記憶する。より詳細には、第１の実施例の書き込み処理＜４＞において、ＲＡＢＦ技術（図３）に基づくＢＦテープのトラック上の各データセット（ＤＳ、ＤＳ＋１、ＤＳ＋２、・・・）に含まれる最後のデータについて、各データセットのＤＳＩＴによりＲドライブ１または２のものであるか区別される。
【００６４】
第４の実施例として、複数のテープドライブを状況に応じてＢＦドライブ、Ｒドライブ、通常ドライブに働きを変えることが可能なテープ記録システムである。例えば、複数台のドライブで構成されているテープ記録ライブラリでは、他の使われていないドライブをＢＦドライブとして有効活用することができる。
【００６５】
複数のテープドライブを含むテープライブラリ（ライブラリ、テープ記憶システム）においては、ハードウエア上の観点からは、ＢＦドライブ、Ｒドライブ、及び通常ドライブは差異がない。テープ記録システムに含まれる複数の各種テープドライブを状況に応じて働きを変えることができれば、テープライブラリのシステム運用性は向上する。
【００６６】
図８は、ＢＦドライブ、Ｒドライブ、または、単独で機能する通常ドライブとして、テープドライブは状況に応じて働きを変える手順の一例を示す。
＜１＞ライブラリ内のあるテープドライブ（ドライブＡ）がホストから書き込み（Ｗｒｉｔｅ）及び同期（Ｆｌｕｓｈ）の要求を受ける
＜２＞ドライブＡは通常ドライブとして動き、ＲＡＢＦ機能でテープにデータを書き込む。
＜３＞ステップ＜２＞と並行して、ドライブＡはライブラリ内のドライブの中から、ホストに使用されていないテープドライブ（空きドライブ）を検索する。
＜４＞空きドライブが見つからなければ、そのままＲＡＢＦ機能による書き込みサイクルを続行する。
＜５＞ドライブＡは空きドライブ（ドライブＢ）が見つかったら、そのドライブＢを予約状態にする。
＜６＞ドライブＢはＢＦＷｒｉｔｅの準備をする。ＢＦテープのカートリッがマウントされる。ドライブＢはホストから使用要求を受けたら、予約済みである旨（Reservation Conflict）を返す。
＜７＞ドライブＡは、＜２＞で開始されたＲＡＢＦ機能による書き込みが区切れたところでＲＡＢＦサイクルの続行を終了する。
＜８＞上述の実施例（例えば第１の実施例）による書き込み処理を開始する。ドライブＡはＲドライブとして機能し、ドライブＢをＢＦドライブとして利用する。以降は、このテープライブラリは、第１の実施例（ホストに直接Ｒドライブを繋げる方法）と同様に書き込み処理を実行する。以上の手順を用いれば、既存のテープライブラリの中で、新たにドライブを追加することなく本発明の書き込み手法を適用することができる。
【００６７】
これまでテープドライブについて実施例を説明してきたが、本発明の内容は、これらに限定されず、ホスト（上位装置）はサーバなどのホストコンピュータに限定されず、データ記録装置を上位装置として、下位が本発明のテープ記録システムの実施態様も本発明に含まれる。以上に示された、少なくとも２以上のテープドライブを含むテープ記録システムによれば、頻出する同期要求においてもデータの書き込みパフォーマンスを低下させずに、テープ記録密度を維持できる有利な効果を有する。 
【符号の説明】
【００６８】
１０…データ、２０…セグメント、２５…不揮発性メモリ（ＣＭ）、３０…テープ、４０…データセット１００…テープドライブ、１０５…ホスト、１１０…インターフェース、１２０…バッファ、１３０…記録チャネル、１４ａ…テープ、１４ｂ，５０…ヘッド、１４ｃ，１４ｄ…リール、１３０及び１４ｂ…書き込み手段／読取り手段、１４ｅ…カートリッジ、１５０…モータ、１６０…コントローラ／書き込み読取り制御手段、１７０…ヘッド位置制御システム、１８５…モータドライブ、１４５…トラックのバンド（トラック０〜１５）、１６５…通常ラップ、１８０…ＡＢＦラップ、１９０…通常ラップのデータセット、３７０，３７１…ＡＢＦのデータセット
【図１】
0005437371.tif 000002
【図２】
0005437371.tif 000003
【図３】
0005437371.tif 000004
【図４】
0005437371.tif 000005
【図５】
0005437371.tif 000006
【図６】
0005437371.tif 000007
【図７】
0005437371.tif 000008
【図８】
0005437371.tif 000009