(57)【要約】  媒体の使用領域を増やすこと。  ドライブ制御装置（１）は、管理部（１ａ）と検出部（１ｂ）と通知部（１ｃ）とを有している。管理部（１ａ）は、データがシーケンシャルに書き込まれるテープ（２）のデータの書き込み位置を識別し、ドライブ制御装置（１）に接続された上位装置（４）が管理可能な番地より大きい番地を含む第１の番地と上位装置（４）にテープ（２）のデータの書き込み位置を識別させる第２の番地との対応関係を管理する。検出部（１ｂ）は、テープ（２）にデータを書き込むドライブ（３）のデータの書き込み失敗を検出する。通知部（１ｃ）は、検出部（１ｂ）の検出に応じて書き込みが失敗したテープの位置の第２の番地を上位装置（４）に通知する。
2012042661.tif 000002
【特許請求の範囲】
【請求項１】
データがシーケンシャルに書き込まれる媒体のデータの書き込み位置を識別し、当該ドライブ制御装置に接続された接続装置が管理可能な番地より大きい番地を含む第１の番地と前記接続装置に前記媒体のデータの書き込み位置を識別させる第２の番地との対応関係を管理する管理部と、
前記媒体にデータを書き込むドライブのデータの書き込み失敗を検出する検出部と、
前記検出部の検出に応じて書き込みが失敗した前記媒体の位置の前記第２の番地を前記接続装置に通知する通知部と、
を有することを特徴とするドライブ制御装置。
【請求項２】
前記第２の番地からデータを前記媒体に書き込む指示を前記接続装置から受け取ると、受け取ったデータを前記ドライブに書き込ませる書き込み指示部をさらに有することを特徴とする請求の範囲第１項記載のドライブ制御装置。
【請求項３】
前記書き込み指示部は、受け取った指示に含まれる前記第２の番地の値に一致する値の前記第１の番地から前記第２の番地に対応する前記第１の番地に至るまではデータを前記媒体に書き込まず、前記管理部が管理する前記第２の番地に対応する前記第１の番地からデータを前記媒体に書き込むよう前記ドライブに指示することを特徴とする請求の範囲第２項記載のドライブ制御装置。
【請求項４】
前記媒体の容量に応じて、前記第１の番地に対する所定の比率で前記第２の番地を決定する決定部をさらに有することを特徴とする請求の範囲第１項記載のドライブ制御装置。
【請求項５】
前記通知部は、前記第１の番地が予め決定された第３の番地を超えている場合、前記第２の番地を前記接続装置に通知し、前記第１の番地が前記第３の番地未満である場合、前記第１の番地を前記接続装置に通知することを特徴とする請求の範囲第１項記載のドライブ制御装置。
【請求項６】
前記第３の番地は、前記ドライブの規格により決定されることを特徴とする請求の範囲第５項記載のドライブ制御装置。
【請求項７】
データがシーケンシャルに書き込まれる媒体にデータを書き込むドライブのデータの書き込み失敗を検出し、
前記媒体のデータの書き込み位置を識別し、当該ドライブ制御装置に接続された接続装置が管理可能な番地より大きい番地を含む第１の番地と前記接続装置に前記媒体のデータの書き込み位置を識別させる第２の番地との対応関係が管理されており、前記検出に応じて書き込みが失敗した前記媒体の位置の前記第２の番地を前記接続装置に通知する、
ことを特徴とするドライブ制御方法。
【請求項８】
データがシーケンシャルに書き込まれる媒体にデータを書き込むドライブと、
前記媒体のデータの書き込み位置を識別し、当該ドライブ制御装置に接続された接続装置が管理可能な番地より大きい番地を含む第１の番地と前記接続装置に前記媒体のデータの書き込み位置を識別させる第２の番地との対応関係を管理する管理部と、
前記媒体にデータを書き込むドライブのデータの書き込み失敗を検出する検出部と、
前記検出部の検出に応じて書き込みが失敗した前記媒体の位置の前記第２の番地を前記接続装置に通知する通知部と、
を有することを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はドライブ制御装置、ドライブ制御方法およびストレージ装置に関する。
【背景技術】
【０００２】
データのバックアップ等の用途に用いられる記憶装置として、磁気テープが知られている。
磁気テープへの書き込みを管理するコンピュータは、磁気テープ内のデータの書き込み位置を管理することにより、書き込みエラーが発生した場合のデータのリカバリを実行する。リカバリ方法として、例えばテープに対し書き込みエラーが発生した位置を特定し、特定した位置から再度データの書き込みを実行する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−５４５５１号公報
【特許文献２】特開２００５−１２２４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータに搭載されるＯＳ（Operating System）やミドルウェア等の仕様、または、テープドライブの磁気ヘッドがテープに書き込めるトラック数等により、ホストコンピュータ側が認識できるテープの容量が決定される。【０００５】
例えば、ＯＳが２２ビット（３ＦＦＦＦＦｈ）の値でテープの容量を管理しており、テープへのデータの書き込みが、例えば１ブロック３２ｋＢのブロック単位で行われる場合、管理できる容量は、１３７ＧＢ（＝２22×３２ｋＢ）となる。【０００６】
しかしながら、近年、記憶容量が８００ＧＢを超えるもの等、大容量のテープが主流になってきている。
例えば、２２ビットの値でテープの容量を管理するＯＳを使用して容量が８００ＧＢのテープに書き込みを行う場合、ＯＳが管理できる容量である１３７ＧＢを超えてもテープにデータを書き込むことはできる。【０００７】
しかしながら、ＯＳが管理できる容量を超えた位置で書き込みエラーが発生した場合、ＯＳは、エラーが発生した位置が特定できずにデータのリカバリができない。従って、リスク管理の観点から、ＯＳが管理できる容量内でテープを使用することになり、大容量のテープの記憶領域を有効に活用できないという問題がある。【０００８】
本発明はこのような点に鑑みてなされたものであり、記憶媒体の使用領域を増やすことができるドライブ制御装置、ドライブ制御方法およびストレージ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、開示のドライブ制御装置が提供される。このドライブ制御装置は、管理部と、検出部と、通知部とを有している。
管理部は、データがシーケンシャルに書き込まれる媒体のデータの書き込み位置を識別し、当該ドライブ制御装置に接続された接続装置が管理可能な番地より大きい番地を含む第１の番地と接続装置に媒体のデータの書き込み位置を識別させる第２の番地との対応関係を管理する。【００１０】
検出部は、媒体にデータを書き込むドライブのデータの書き込み失敗を検出する。
通知部は、検出部の検出に応じて書き込みが失敗した媒体の位置の第２の番地を接続装置に通知する。
【発明の効果】
【００１１】
記憶媒体の使用領域を増やすことができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のドライブ制御装置の概要を示す図である。
【図２】第２の実施の形態のライブラリシステムの構成を示すブロック図である。
【図３】磁気テープ装置の構成を示すブロック図である。
【図４】ドライブ制御部の機能を示すブロック図である。
【図５】ドライブ種別管理情報を示す図である。
【図６】仮想ブロックＩＤ比率管理情報を示す図である。
【図７】ブロックＩＤ管理情報を示す図である。
【図８】ドライブ制御部の処理を示すフローチャートである。
【図９】コマンド処理を示すフローチャートである。
【図１０】ＷＲコマンド処理を示すフローチャートである。
【図１１】ＲＤＢＩＤコマンド処理を示すフローチャートである。
【図１２】ＬＯＣＡＴＥコマンド処理を示すフローチャートである。
【図１３】ＷＲ再コマンド処理を示すフローチャートである。
【図１４】ライブラリシステムの処理の具体例を示す図である。
【発明を実施するための形態】
【００１３】
以下、実施の形態を、図面を参照して詳細に説明する。
まず、実施の形態のドライブ制御装置について説明し、その後、実施の形態をより具体的に説明する。
【００１４】
＜第１の実施の形態＞
図１は、第１の実施の形態のドライブ制御装置の概要を示す図である。
実施の形態のドライブ制御装置（コンピュータ）１は、上位装置４の指示に応じてドライブ３を制御する装置である。
【００１５】
ドライブ制御装置１は、ドライブ３および上位装置４に接続されている。上位装置４は、例えば１ブロック３２ｋＢのブロック単位で磁気テープ（以下、単にテープと言う）２の領域を１つのデータに割り当てる。上位装置４は、テープ２に書き込まれた１つのブロックを１つの番地で管理する。
【００１６】
上位装置４が管理できるテープ２の番地は、例えばＯＳやミドルウェア等の仕様、または、ドライブ３の磁気ヘッドがテープ２に書き込めるトラック数等により定まる。
本実施の形態では、ドライブ制御装置１が、ドライブ３の磁気ヘッドがテープ２に書き込めるトラック数を上位装置４側に予め通知する。上位装置４は、通知されたトラック数に応じて管理できるテープ２の番地を決定する。ここで、「管理できる」とは、テープ２の書き込み位置が特定できることを意味する。例えば、トラック数が３６本の場合、上位装置４は、２２ビット、すなわち３ＦＦＦＦＦｈ番地までテープ２を管理できると判断する。本実施の形態では、１ブロックが３２ｋＢであるので、上位装置４が管理できる容量は、１３７ＧＢ（２22×３２ｋＢ）になる。例えば、テープ２の容量が２５６ＧＢである場合、１３７ＧＢを超えた領域は、管理できないことになる。
【００１７】
第１の実施の形態では説明の便宜上、テープの容量は５１２ｋＢ（１６ブロック×３２ｋＢ）であるものとする。また、上位装置４は、２５６ｋＢ（２3×３２ｋＢ）の容量、すなわち、番地「８ｈ」まで管理できるものとする。この場合、上位装置４は、書き込みエラーが発生した箇所として番地「１ｈ」〜「８ｈ」が通知された場合、エラーが発生した箇所を特定することができる。しかし、上位装置４は、２５６ｋＢを超えた番地「９ｈ」以降は管理不能であり、書き込みエラーが発生した箇所として番地「９ｈ」が通知されても、エラーが発生した箇所を特定することはできない。
【００１８】
上位装置４は、上位装置４が有するブロック毎に区分けされたデータＡ〜データＰをテープ２に書き込むようドライブ３に指示する。
ドライブ制御装置１は、上位装置４が書き込みを指示したデータＡ〜データＰをテープ２に書き込むようドライブ３に指示する。ドライブ３は、ドライブ制御装置１の指示に応じてデータＡ〜データＰをシーケンシャルにテープ２に書き込む。
【００１９】
ドライブ制御装置１は、管理部１ａと、検出部１ｂと、通知部１ｃと書き込み指示部１ｄとを有している。
管理部１ａは、第１の番地と第２の番地を管理している。第１の番地は、テープ２に書き込まれる１つのブロックを１つの番地に対応付けた番地である。第１の番地により、ドライブ制御装置１は、テープ２の書き込み位置を識別することができる。また、第１の番地は、上位装置４が識別できない番地「９ｈ」〜「１０ｈ」を含んでいる。ここで、第１の番地は、上位装置４の番地を管理する単位と同じ単位である。
【００２０】
第２の番地は、上位装置４にテープ２のデータの書き込み位置を識別させる番地である。本実施の形態では、第２の番地は、テープ２に書き込まれる２つのブロックを１つの番地に対応付けた番地「１ｈ」〜「８ｈ」で構成されている。このような番地構成にすることで、上位装置４は、第２の番地のどの番地が通知されても、通知された番地を識別することができる。
【００２１】
ドライブ制御装置１は、この第１の番地と第２の番地を決定する決定部１ｅをさらに有することができる。
決定部１ｅは、テープ２の最大容量に応じて、第１の番地に対する所定の比率で第２の番地を決定する。例えば、ドライブ３にマウントされているテープの最大容量が８００ＧＢであれば、このテープに書き込まれる８つのブロックを１つの番地で管理するように第２の番地を決定する。この決定により、１０２４ＧＢ（２22×３２ｋＢ×８）の容量まで第２の番地で管理することができる。
【００２２】
検出部１ｂは、ドライブ３のテープ２へのデータの書き込み失敗を検出する。ここで書き込み失敗とは、テープ２の不良や、ドライブ３の不良等によりテープ２のあるブロックにデータが書き込めなかったことを言う。図１では、データＮの書き込み失敗を検出している様子を図示している。
【００２３】
検出部１ｂは、管理部１ａが管理する第１の番地と第２の番地の対応関係に基づいて、書き込み失敗が発生した第２の番地を特定し、通知部１ｃに通知する。なお、第２の番地を特定する機能は、通知部１ｃが有していてもよい。
【００２４】
通知部１ｃは、検出部１ｂの書き込み失敗の検出に応じてテープ２の書き込みが失敗した第２の番地を上位装置４に通知する。
図１では、データＮの書き込み失敗を検出しているため、通知部１ｃは、データＮの第２の番地「７ｈ」を上位装置４に通知する。なお、上位装置４側は、第１の番地であるか第２の番地であるかを識別できないので、通知部１ｃは、単に番地「７ｈ」を上位装置４に通知する。
【００２５】
上位装置４は、番地「７ｈ」が通知されたので、この番地「７ｈ」から再度データを書き込む指示をドライブ制御装置１に与える。そして、上位装置４が管理する番地「７ｈ」に存在するデータＧをドライブ制御装置１に送信する。
【００２６】
書き込み指示部１ｄは、上位装置４の番地「７ｈ」からデータをテープ２に書き込む指示に基づいて、上位装置４に通知した番地「７ｈ」に一致する第１の番地「７ｈ」から、第２の番地「７ｈ」に対応する第１の番地「Ｅｈ」に至るまではデータをテープに書き込まず、第１の番地「Ｅｈ」からデータをテープ２に書き込むようドライブ３に指示する。
【００２７】
具体的には、書き込み指示部１ｄは、上位装置４から書き込まれるデータが、第１の番地「７ｈ」のデータから開始すると判断し、書き込みを開始する第１の番地「Ｅｈ」まで、いくつのデータが送られてくるかを判断する。その結果、第１の番地「７ｈ」から第１の番地「Ｅｈ」に至るまで、７個のデータが送られてくると判断する。そして、書き込み指示部１ｄは、８個目のデータを第１の番地「Ｅｈ」に書き込むようドライブ３に指示する。
【００２８】
なお、書き込み指示部１ｄは、上位装置４から受信したデータＧは、既にテープに正常に書き込まれているため、ドライブ３に書き込みを指示せず、正常に書き込みが行われたことを上位装置４に応答する。その後、上位装置４から順次データＨ、データＩ、・・・が送られているが、これらのデータも既にテープ２に正常に書き込まれているため、ドライブ３に書き込みを指示せず、正常に書き込みが行われたことを上位装置４に応答する。この処理により、再書き込み処理を高速に実行することができる。その後、上位装置４からデータＮが送られてくると、このデータＮをテープ２に書き込むようドライブ３に指示する。以降、書き込み指示部１ｄは、上位装置４から受け付けたデータをシーケンシャルにテープ２に書き込むようドライブ３に指示する。
【００２９】
なお、図１では、書き込みを行わないデータを「空」で表し、書き込みを行うデータを「実」で表している。
このドライブ制御装置１によれば、上位装置４が管理不能な領域にてデータの書き込みが失敗した場合でも第２の番地でその領域を特定し、上位装置４側に第２の番地を伝えることで、上位装置４側のデータの再書き込みを可能とすることができる。この書き込みにより、テープ２の記憶領域を有効に使用することができ、テープ２の使用領域を増やすことができる。
【００３０】
なお、本実施の形態では、通知部１ｃは、検出部１ｂの書き込み失敗の検出に応じてテープ２の書き込みが失敗した第２の番地を上位装置４に通知するものとして説明した。しかし、上位装置４が管理不能な領域で書き込み失敗を検出した場合、第２の番地を上位装置４に通知し、上位装置４が管理可能な領域で書き込み失敗を検出した場合、第１の番地を上位装置に通知するようにしてもよい。そして、書き込み指示部１ｄは、上位装置４の番地を指定したデータをテープ２に書き込む指示に基づいて、指定された番地からデータをテープ２に書き込むようドライブ３に指示するようにしてもよい。上位装置４が管理可能な領域で書き込み失敗を検出した場合の処理と、上位装置４が管理不能な領域で書き込み失敗を検出した場合の処理を区別して行うことにより、上位装置４が管理可能な領域で書き込み失敗を検出したときのテープ２へのデータの再書き込み処理を高速に行うことができる。
【００３１】
また、本実施の形態では、第１の番地と第２の番地を一定比率で管理する方法を説明した。しかし、これに限らず、例えば、第２の番地は、第１の番地から一定数を減算した番地に設定する等、上位装置４が管理不能なテープ２の位置をドライブ制御装置１側で特定可能なように第２の番地を設定すればよい。
【００３２】
また、本実施の形態では、通知部１ｃは、データＮの第２の番地「７ｈ」を上位装置４に通知するようにした。しかし、これに限らず、通知部１ｃは、書き込み失敗を検出した位置にかかわらず、上位装置４が識別できる番地のうち、最大の番地「８ｈ」を上位装置４に通知するようにしてもよい。この場合、上位装置４からは、この番地「８ｈ」から再度データを書き込む指示がドライブ制御装置１に与えられる。この場合、書き込み指示部１ｄは、上位装置４に通知した番地「８ｈ」に一致する第１の番地「８ｈ」から、第１の番地「Ｅｈ」に至るまではデータをテープに書き込まず、第１の番地「Ｅｈ」からデータをテープ２に書き込むようドライブ３に指示する。これにより、上位装置４が送信するデータの数を減らすことができる。
【００３３】
なお、検出部１ｂ、通知部１ｃ、書き込み指示部１ｄおよび決定部１ｅは、ドライブ制御装置１が有するＣＰＵ（Central Processing Unit）が備える機能により実現することができる。また、管理部１ａが記憶する第１の番地と第２の番地の対応関係は、ドライブ制御装置１が有するＲＡＭ（Random Access Memory）やハードディスクドライブ（ＨＤＤ:Hard Disk Drive）等に記憶しておくことができる。
【００３４】
以下、実施の形態をより具体的に説明する。
＜第２の実施の形態＞
図２は、第２の実施の形態のライブラリシステムの構成を示すブロック図である。
【００３５】
ライブラリシステム１００は、ホストコンピュータ１０と、磁気テープ装置２０、３０と、搬送機構部４０と、カートリッジテープ収納棚５０とを有している。
磁気テープ装置２０、３０は、ストレージ装置の一例である。これらの磁気テープ装置２０、３０は、ＬＡＮ等の通信回線でホストコンピュータ１０に接続されている。
【００３６】
ホストコンピュータ１０は、磁気テープ装置２０および磁気テープ装置３０に接続されている。ホストコンピュータ１０は、１ブロック３２ｋＢのブロック単位で磁気テープ装置２０または磁気テープ装置３０にマウントされたテープ５１の領域を１つのデータに割り当てる。ホストコンピュータ１０は、テープに書き込まれた１つのブロックを１つの物理ブロックＩＤで管理する。なお、テープの種別は、例えばＬＴＯ（Liner Tape Open）規格のテープ等が挙げられる。
【００３７】
本実施の形態では、磁気テープ装置２０および磁気テープ装置３０が、後述するテープドライブの磁気ヘッドがテープ５１に書き込めるトラック数をホストコンピュータ１０側に予め通知する。ホストコンピュータ１０は、通知されたトラック数に応じて管理できるテープ５１の物理ブロックＩＤを決定する。例えば、トラック数が３６本の場合、ホストコンピュータ１０は、２２ビット、すなわち、物理ブロックＩＤ＝３ＦＦＦＦＦｈまでテープ５１を管理できると判断する。この場合、１ブロックが３２ｋＢであるので、ホストコンピュータ１０が管理できる容量は、１３７ＧＢ（２22×３２ｋＢ）になる。他方、トラック数が１２８本の場合、ホストコンピュータ１０は、３２ビット、すなわち、物理ブロックＩＤ＝ＦＦＦＦＦＦＦＦｈまでテープ５１を管理できると判断する。この場合、ホストコンピュータ１０が管理できる容量は、１４０ＴＢ（２32×３２ｋＢ）になる。
【００３８】
このホストコンピュータ１０は、磁気テープ装置２０および磁気テープ装置３０を制御する指令を出力する。
また、ホストコンピュータ１０は、磁気テープ装置２０または磁気テープ装置３０自体の故障、または、テープの不良等の原因により、磁気テープ装置２０または磁気テープ装置３０からデータをテープに書き込めないエラー（以下、データ書き込みエラーと言う）を受け取ると、ＤＤＲ（Dynamic Drive Recovery）処理を実行する。このＤＤＲ処理は、後述するＲＤＢＩＤ（Read Block ID）コマンドおよびＬＯＣＡＴＥコマンドを、データ書き込みエラーを通知した磁気テープ装置２０または磁気テープ装置３０に発行することで、データ書き込みエラーが発生した位置から再度データを書き込む処理である。
【００３９】
磁気テープ装置２０、３０は、ホストコンピュータ１０が出力する指令に基づいて、マウント（搭載）されているテープ５１にデータを書き込んだり、テープ５１からデータを読み出したりする。
【００４０】
搬送機構部４０は、ホストコンピュータ１０の要求に基づく磁気テープ装置２０または磁気テープ装置３０の指示により、カートリッジテープ収納棚５０と磁気テープ装置２０または磁気テープ装置３０との間でテープを搬送する機構を有している。
【００４１】
この搬送機構部４０は、バーコードリーダ４１を有している。バーコードリーダ４１は、テープ５１ａに付されているバーコードを読み取り、テープ名等のテープに関する情報を取得する。例えば、搬送機構部４０は、テープ５１ａのカートリッジテープ収納棚５０への投入時や、ユーザの指示による任意のタイミングで、バーコードリーダ４１によりカートリッジテープ収納棚５０内をスキャンしてテープに貼り付けられたバーコードを読み取ることにより、テープ５１の有無を確認する。そして、確認結果を磁気テープ装置２０および磁気テープ装置３０に送信する。磁気テープ装置２０および磁気テープ装置３０は、確認結果を取得してテープを管理する情報の作成や更新を行う。
【００４２】
カートリッジテープ収納棚５０は、テープ５１ａ、５１ｂ等の複数のテープ５１を、それぞれ所定の位置に収納する。なお、カートリッジテープ収納棚５０に収納されるテープ５１は、複数の世代が混在していてもよい。本実施の形態では第１世代（Ｇ１）〜第４世代（Ｇ４）のものが混在している。
【００４３】
カートリッジテープ収納棚５０に収納されているテープ５１は、マウント履歴、記録データ量、エラー情報等の統計情報を記憶する非接触型ＩＣタグであるカートリッジメモリを有する。テープ５１には、既定の命名ルールに基づいて作成したバーコードラベルが貼り付けられ、カートリッジテープ収納棚５０に収納される。各テープの位置は定められており、テープ５１ａの使用後は使用前と同一の位置に収納される。
【００４４】
磁気テープ装置２０、３０は、それぞれ、ホストコンピュータ１０が有するテープ５１（例えば、テープ５１ａ）に対するデータの読み書きの要求に応じて、テープ５１ａを搬送機構部４０によりカートリッジテープ収納棚５０から取得して後述するドライブ装置に搬送し、テープ５１ａをドライブ装置にマウントする。そして、磁気テープ装置２０、３０は、ドライブ装置にマウントされたテープ５１ａのデータに対して、ホストコンピュータ１０からの要求に応じてデータの読み書きを行う。そして、磁気テープ装置２０、３０は、データの読み書きの完了後に、ドライブ装置にテープ５１ａを排出させる。そして、搬送機構部４０にカートリッジテープ収納棚５０の元の位置にテープ５１ａを収納させる。
【００４５】
次に、磁気テープ装置２０、３０の構成を詳しく説明する。磁気テープ装置２０、３０の構成は等しいので、代表して磁気テープ装置２０の構成を説明する。
図３は、磁気テープ装置の構成を示すブロック図である。
【００４６】
磁気テープ装置２０は、ドライブ制御部（ＭＴＣ）２１と、複数のドライブ装置２２、２３、２４、２５と、電源制御部２６とを有している。
ドライブ制御部２１は、ホストコンピュータ１０の指示に従いドライブ装置２２、２３、２４、２５にそれぞれデータを書き込んだり読み取ったりする指示を与える。ドライブ装置２２、２３、２４、２５は、それぞれデータの書き込みおよびデータの読み出しをブロック単位で行う。本実施の形態では、１ブロックは、３２ｋＢである。
【００４７】
ドライブ制御部２１は、ＣＰＵ２１ａと、メモリ２１ｂと、ホストＩ／Ｆ処理部２１ｃと、ドライブＩ／Ｆ制御部２１ｄと、通信処理部２１ｅとを有している。
ＣＰＵ２１ａは、ドライブ制御部２１全体を制御している。ＣＰＵ２１ａには、バス２１ｆを介してメモリ２１ｂ、ホストＩ／Ｆ処理部２１ｃ、ドライブＩ／Ｆ制御部２１ｄが接続されている。
【００４８】
メモリ２１ｂは、ドライブ制御部２１の主記憶装置として使用される。メモリ２１ｂには、ＣＰＵ２１ａに実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ２１ｂには、ＣＰＵ２１ａによる処理に必要な各種データが格納される。
【００４９】
ホストＩ／Ｆ処理部２１ｃは、ホストコンピュータ１０が出力する指令を受け付ける等、ホストコンピュータ１０との通信を行う。ホストコンピュータ１０から送信された要求は、このホストＩ／Ｆ処理部２１ｃで解釈され、ＣＰＵ２１ａに伝えられる。またホストＩ／Ｆ処理部２１ｃは、ホストコンピュータ１０からの要求に対して磁気テープ装置２０内で処理された結果を示す応答を、ホストコンピュータ１０に送信する。
【００５０】
ドライブＩ／Ｆ制御部２１ｄは、ドライブ装置２２、２３、２４、２５の各Ｉ／Ｆ制御部（例えばＩ／Ｆ制御部２２ｂ）に接続されている。ドライブＩ／Ｆ制御部２１ｄは、各Ｉ／Ｆ制御部との間でデータをやりとりする。
【００５１】
通信処理部２１ｅは、ＣＰＵ２１ａに接続されている。通信処理部２１ｅは、ＣＰＵ２１ａの指示に応じてドライブ制御部３１が有する通信処理部３１ｅとの間でデータをやりとりする。
【００５２】
ドライブ装置２２、２３、２４、２５は、テープに記憶されたデータの再生機能と、テープにデータを記憶する記憶機能とを有する。
ドライブ装置２２は、処理できるテープのトラック数が、最大３６トラックである磁気ヘッドを有するテープドライブ２２ａを有している。処理できるトラック数が、最大３６トラックであるテープドライブを有するドライブ装置を以下、「３６ＴＲＫドライブ装置」と言う。ドライブ装置２３は、３６ＴＲＫドライブ装置である。
【００５３】
ドライブ装置２４、２５は、処理できるテープのトラック数が最大１２８トラックである磁気ヘッドを有するテープドライブ（図示せず）を有している。処理できるトラック数が、最大１２８トラックであるドライブ装置を以下、「１２８ＴＲＫドライブ装置」と言う。
【００５４】
電源制御部２６は、ドライブ制御部２１およびドライブ装置２２、２３、２４、２５に制御用電源および駆動用電源を供給する。
次に、データ書き込みエラーが発生したときのライブラリシステム１００のエラー処理を簡単に説明する。
【００５５】
ドライブ制御部２１は、ドライブ装置２２、２３、２４、２５のいずれかにデータ書き込みエラーが発生した場合、ホストコンピュータ１０にエラーを返す。その後、ドライブ制御部２１は、エラーが発生したドライブ装置にマウントされているテープを、搬送機構部４０を操作して取り出し、磁気テープ装置２０が有する別のドライブ装置にマウントする。
【００５６】
また、データ書き込みエラーが発生した場合、ドライブ制御部２１は、データ書き込みエラーの発生をホストコンピュータ１０に通知する。
ホストコンピュータ１０は、ＤＤＲ処理の実行を開始する。具体的には、ホストコンピュータ１０は、ＲＤＢＩＤコマンドをドライブ制御部２１に発行する。
【００５７】
ＲＤＢＩＤコマンドを受信したドライブ制御部２１は、データ書き込みエラーが発生した物理ブロックＩＤが、ホストコンピュータ１０が管理できる物理ブロックＩＤである場合、ＲＤＢＩＤコマンドに対し、物理ブロックＩＤを応答する。他方、データ書き込みエラーが発生した物理ブロックＩＤが、ホストコンピュータ１０が管理できる物理ブロックＩＤを超えている場合、ＲＤＢＩＤコマンドに対し、後述する仮想ブロックＩＤを応答する。
【００５８】
その後、ホストコンピュータ１０は、データ書き込みエラーが発生したテープに磁気ヘッドを位置づけるＬＯＣＡＴＥコマンドをドライブ制御部２１に発行する。
ＬＯＣＡＴＥコマンドを受信したドライブ制御部２１は、データ書き込みエラーが発生した物理ブロックＩＤが、ホストコンピュータ１０が管理できる物理ブロックＩＤである場合、実際にデータ書き込みエラーが発生した物理ブロックＩＤにより特定されるテープ５１の位置に磁気ヘッドを位置づけるようドライブ装置に指示する。他方、データ書き込みエラーが発生した物理ブロックＩＤが、ホストコンピュータ１０が管理できる物理ブロックＩＤを超えている場合、仮想ブロックＩＤの番号に一致する番号を備える物理ブロックＩＤにより特定されるテープ５１の位置に磁気ヘッドを位置づける。
【００５９】
そして、再度テープ５１への書き込みを実行する。
次に、ドライブ制御部２１の機能を詳しく説明する。
図４は、ドライブ制御部の機能を示すブロック図である。
【００６０】
ドライブ制御部２１は、搬送機構制御部２１１と、トラック数判断部２１２と、仮想ブロックＩＤ比率決定部２１３と、コマンド処理部２１４と、管理情報格納部２１５とを有している。
【００６１】
搬送機構制御部２１１は、ホストコンピュータ１０から送信されホストＩ／Ｆ処理部２１ｃを介して受信した要求を、搬送機構部４０に送信することにより搬送機構部４０への動作指示を行う。この動作指示に基づいて搬送機構部４０が動作する。また搬送機構制御部２１１は、搬送機構部４０の動作結果をホストＩ／Ｆ処理部２１ｃに送信する。この動作結果に基づいて、ホストコンピュータ１０の要求に対する応答がホストコンピュータ１０に送信される。
【００６２】
トラック数判断部２１２は、ドライブ装置２２、２３、２４、２５毎に予め定められた処理可能なテープのトラック数を判断する。これは例えば、磁気ヘッドの規格等により判断することができる。
【００６３】
仮想ブロックＩＤ比率決定部２１３は、ドライブ装置２２、２３、２４、２５毎に、データ書き込みエラー時にホストコンピュータ１０に通知する仮想ブロックＩＤの、物理ブロックＩＤに対する比率を決定する。
【００６４】
この比率は、各ドライブ装置２２、２３、２４、２５にマウントされているテープの容量により決定する。
本実施の形態では１ブロック＝３２ｋＢであるため、前述したようにホストコンピュータ１０が管理できる物理ブロックＩＤが３ＦＦＦＦＦｈの場合、ホストコンピュータ１０が管理できる容量は、１３７ＧＢ（２２２×３２ｋＢ）になる。
【００６５】
例えばＧ１のテープ５１は、圧縮時の容量が２００ＧＢである。従って、Ｇ１のテープ５１の１３７ＧＢを超えた位置については、ホストコンピュータ１０は管理不能になる。
この場合、１つの仮想ブロックＩＤで２つのブロックを管理すれば、Ｇ１のテープ５１の全ての位置をドライブ制御部２１側で特定することができる。従って、仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１がＧ１の場合は、１つの仮想ブロックＩＤで２つのブロックを管理する意味を示す１：２に決定する。
【００６６】
同様の決定方法により、仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１がＧ２のテープ（圧縮時の容量４００ＧＢ）５１の場合は１：４、Ｇ３のテープ（圧縮時の容量８００ＧＢ）５１の場合は１：８、Ｇ４のテープ５１（圧縮時の容量１６００ＧＢ）の場合は１：１６に決定する。
【００６７】
コマンド処理部２１４は、ホストコンピュータ１０が発行するコマンドに応じて、ドライブ装置２２、２３、２４、２５を処理する。
管理情報格納部２１５は、ドライブ装置の種別を管理するドライブ種別管理情報と、仮想ブロックＩＤの比率を管理する仮想ブロックＩＤ比率管理情報と、エラー情報を管理するブロックＩＤ管理情報とを格納する。
【００６８】
次に、管理情報格納部２１５が格納している各管理情報を説明する。
図５は、ドライブ種別管理情報を示す図である。図５では、ドライブ種別管理情報をテーブル化して示している。
【００６９】
ドライブ情報種別管理テーブル２１５ａには、ドライブの欄と種別の欄が設けられている。縦方向に並べられた情報同士が互いに関連づけられている。
ドライブの欄には、ドライブ装置を識別する情報が格納されている。例えば、「＃０」は、ドライブ装置２２を識別する情報であることを示している。また、「＃１」は、ドライブ装置２３を識別する情報であることを示している。
【００７０】
種別の欄には、処理可能なテープのトラック数を識別する情報が格納されている。
図６は、仮想ブロックＩＤ比率管理情報を示す図である。図６では、仮想ブロックＩＤ比率管理情報をテーブル化して示している。
【００７１】
仮想ブロックＩＤ比率管理テーブル２１５ｂには、ドライブの欄と比率の欄が設けられている。縦方向に並べられた情報同士が互いに関連づけられている。
ドライブの欄には、ドライブ装置を識別する情報が格納されている。
【００７２】
比率の欄には、ドライブ装置に現在マウントされているテープ５１の世代に応じてホストコンピュータ１０に報告する仮想ブロックＩＤの、物理ブロックＩＤに対する比率が格納される。具体的には、Ｇ１のテープ５１の場合は１：２、Ｇ２のテープ５１の場合は１：４、Ｇ３のテープ５１の場合は１：８、Ｇ４のテープ５１の場合は１：１６が格納される。
【００７３】
図６では、ドライブ装置２２にＧ１のテープがマウントされているため、比率の欄には、「１：２」が格納されている。ドライブ装置２３にＧ２のテープがマウントされているため、比率の欄には、「１：４」が格納されている。ドライブ装置２４にＧ３のテープがマウントされているため、比率の欄には、「１：８」が格納されている。ドライブ装置２５にＧ４のテープがマウントされているため、比率の欄には、「１：１６」が格納されている。各ドライブ装置に新たなテープがマウントされると、比率の欄はマウントされたテープの世代に応じて書き換えられる。
【００７４】
図７は、ブロックＩＤ管理情報を示す図である。図７では、ブロックＩＤ管理情報をテーブル化して示している。
ブロックＩＤ管理テーブル２１５ｃには、ドライブの欄と、物理ブロックＩＤの欄と仮想ブロックＩＤの欄とＤＴＣＫブロックＩＤの欄が設けられている。縦方向に並べられた情報同士が互いに関連づけられている。
【００７５】
ドライブの欄には、ドライブ装置を識別する情報が格納されている。
物理ブロックＩＤの欄には、物理ブロックＩＤが格納されている。この欄のＩＤは、コマンド処理部２１４がＷＲコマンド受領時にインクリメントされる。
【００７６】
仮想ブロックＩＤの欄には、物理ブロックＩＤの欄に格納されている物理ブロックＩＤを仮想ブロックＩＤ比率管理テーブル２１５ｂに管理されている比率に応じた仮想ブロックＩＤで除算した演算結果が格納されている。例えば、仮想ブロックＩＤ比率管理テーブル２１５ｂに管理されている比率が１：２である場合は、物理ブロックＩＤの欄に格納されている物理ブロックＩＤ／２の演算結果が仮想ブロックＩＤの欄に格納される。
【００７７】
なお、商に余りが発生した場合は、商に「１」プラスされた値が格納される。
ＤＴＣＫブロックＩＤの欄には、データ書き込みエラーが発生したときの物理ブロックＩＤが格納される。
【００７８】
次に、ドライブ制御部２１の処理を説明する。
図８は、ドライブ制御部の処理を示すフローチャートである。
［ステップＳ１］  トラック数判断部２１２は、ドライブ制御部２１に接続されているドライブ装置２２、２３、２４、２５のうち未選択の（ステップＳ１〜Ｓ１３の処理を行っていない）ドライブ装置を選択する。そして、選択したドライブ装置が３６ＴＲＫドライブ装置か否かを判断する。選択したドライブ装置が３６ＴＲＫドライブ装置であると判断すれば（ステップＳ１のＹｅｓ）、ステップＳ２に遷移する。選択したドライブ装置が３６ＴＲＫドライブ装置ではないと判断すれば（ステップＳ１のＮｏ）、ステップＳ３に遷移する。
【００７９】
［ステップＳ２］  トラック数判断部２１２は、ドライブ情報種別管理テーブル２１５ａの選択したドライブ装置に対応する種別の欄に３６ＴＲＫを書き込む。その後、ステップＳ４に遷移する。
【００８０】
［ステップＳ３］  トラック数判断部２１２は、ドライブ情報種別管理テーブル２１５ａの選択したドライブ装置に対応する種別の欄に１２８ＴＲＫを書き込む。その後、ステップＳ４に遷移する。
【００８１】
［ステップＳ４］  仮想ブロックＩＤ比率決定部２１３は、選択したドライブ装置にテープ５１がマウントされているか否かを判断する。選択したドライブ装置にテープ５１がマウントされている場合（ステップＳ４のＹｅｓ）、ステップＳ５に遷移する。選択したドライブ装置にテープ５１がマウントされていない場合（ステップＳ４のＮｏ）、ステップＳ１４に遷移する。
【００８２】
［ステップＳ５］  仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１はＧ１のテープ５１か否かを判断する。Ｇ１のテープ５１であれば（ステップＳ５のＹｅｓ）、ステップＳ６に遷移する。Ｇ１のテープ５１ではなければ（ステップＳ５のＮｏ）、ステップＳ７に遷移する。
【００８３】
［ステップＳ６］  仮想ブロックＩＤ比率決定部２１３は、物理ブロックＩＤに対する仮想ブロックＩＤの比率を１：２に決定する。そして、仮想ブロックＩＤ比率決定部２１３は、決定した比率を仮想ブロックＩＤ比率管理テーブル２１５ｂの選択したドライブ装置の比率の欄に書き込む。その後、ステップＳ１４に遷移する。
【００８４】
［ステップＳ７］  仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１はＧ２のテープ５１か否かを判断する。Ｇ２のテープ５１であれば（ステップＳ７のＹｅｓ）、ステップＳ８に遷移する。Ｇ２のテープ５１ではなければ（ステップＳ７のＮｏ）、ステップＳ９に遷移する。
【００８５】
［ステップＳ８］  仮想ブロックＩＤ比率決定部２１３は、物理ブロックＩＤに対する仮想ブロックＩＤの比率を１：４に決定する。そして、仮想ブロックＩＤ比率決定部２１３は、決定した比率を仮想ブロックＩＤ比率管理テーブル２１５ｂの選択したドライブ装置の比率の欄に書き込む。その後、ステップＳ１４に遷移する。
【００８６】
［ステップＳ９］  仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１はＧ３のテープ５１か否かを判断する。Ｇ３のテープ５１であれば（ステップＳ９のＹｅｓ）、ステップＳ１０に遷移する。Ｇ３のテープ５１ではなければ（ステップＳ９のＮｏ）、ステップＳ１１に遷移する。
【００８７】
［ステップＳ１０］  仮想ブロックＩＤ比率決定部２１３は、物理ブロックＩＤに対する仮想ブロックＩＤの比率を１：８に決定する。そして、仮想ブロックＩＤ比率決定部２１３は、決定した比率を仮想ブロックＩＤ比率管理テーブル２１５ｂの選択したドライブ装置の比率の欄に書き込む。その後、ステップＳ１４に遷移する。
【００８８】
［ステップＳ１１］  仮想ブロックＩＤ比率決定部２１３は、マウントされているテープ５１はＧ４のテープ５１か否かを判断する。Ｇ４のテープ５１であれば（ステップＳ１１のＹｅｓ）、ステップＳ１２に遷移する。Ｇ４のテープ５１ではなければ（ステップＳ１１のＮｏ）、ステップＳ１３に遷移する。
【００８９】
［ステップＳ１２］  仮想ブロックＩＤ比率決定部２１３は、物理ブロックＩＤに対する仮想ブロックＩＤの比率を１：１６に決定する。そして、仮想ブロックＩＤ比率決定部２１３は、決定した比率を仮想ブロックＩＤ比率管理テーブル２１５ｂの選択したドライブ装置の比率の欄に書き込む。その後、ステップＳ１４に遷移する。
【００９０】
［ステップＳ１３］  仮想ブロックＩＤ比率決定部２１３は、エラーをホストコンピュータ１０に通知する。その後、ステップＳ１４に遷移する。
［ステップＳ１４］  仮想ブロックＩＤ比率決定部２１３は、ドライブ制御部２１に接続されているドライブ装置２２、２３、２４、２５のうち、未選択のドライブ装置が存在するか否かを判断する。未選択のドライブ装置が存在する場合（ステップＳ１４のＹｅｓ）、ステップＳ１に遷移する。そして、ステップＳ１以降の処理を引き続き行う。未選択のドライブ装置が存在しない場合（ステップＳ１４のＮｏ）、図８の処理を終了する。
【００９１】
次に、コマンド処理を説明する。
図９は、コマンド処理を示すフローチャートである。
［ステップＳ２１］  コマンド処理部２１４は、一定時間が経過する毎にコマンドを受け付けたか否かを判断する。コマンドを受け付けたと判断した場合（ステップＳ２１のＹｅｓ）、ステップＳ２２に遷移する。コマンドを受け付けていないと判断した場合（ステップＳ２１のＮｏ）、コマンド処理を終了し、コマンドの受け付けを待機する。
【００９２】
［ステップＳ２２］  コマンド処理部２１４は、受け付けたコマンドがＷＲコマンドか否かを判断する。ＷＲコマンドであると判断した場合（ステップＳ２２のＹｅｓ）、ステップＳ２３に遷移する。ＷＲコマンドではないと判断した場合（ステップＳ２２のＮｏ）、ステップＳ２６に遷移する。
【００９３】
［ステップＳ２３］  コマンド処理部２１４は、ＬＯＣＡＴＥコマンド処理後か否かを判断する。ＬＯＣＡＴＥコマンド処理後であれば（ステップＳ２３のＹｅｓ）、ステップＳ２４に遷移する。ＬＯＣＡＴＥコマンド処理後ではなければ（ステップＳ２３のＮｏ）、ステップＳ２５に遷移する。
【００９４】
［ステップＳ２４］  コマンド処理部２１４は、再ＷＲコマンド処理を実行する。その後、コマンド処理を終了し、コマンドの受け付けを待機する。
［ステップＳ２５］  コマンド処理部２１４は、ＷＲコマンド処理を実行する。その後、コマンド処理部２１４は、コマンド処理を終了し、コマンドの受け付けを待機する。
【００９５】
［ステップＳ２６］  コマンド処理部２１４は、受け付けたコマンドがＲＤＢＩＤコマンドか否かを判断する。ＲＤＢＩＤコマンドであると判断した場合（ステップＳ２６のＹｅｓ）、ステップＳ２７に遷移する。ＲＤＢＩＤコマンドではないと判断した場合（ステップＳ２６のＮｏ）、ステップＳ２８に遷移する。
【００９６】
［ステップＳ２７］  コマンド処理部２１４は、ＲＤＢＩＤコマンド処理を実行する。その後、コマンド処理部２１４は、コマンド処理を終了し、コマンドの受け付けを待機する。
【００９７】
［ステップＳ２８］  コマンド処理部２１４は、受け付けたコマンドがＬＯＣＡＴＥコマンドか否かを判断する。ＬＯＣＡＴＥコマンドであると判断した場合（ステップＳ２８のＹｅｓ）、ステップＳ２９に遷移する。ＬＯＣＡＴＥコマンドではないと判断した場合（ステップＳ２８のＮｏ）、ステップＳ３０に遷移する。
【００９８】
［ステップＳ２９］  コマンド処理部２１４は、ＬＯＣＡＴＥコマンド処理を実行する。その後、コマンド処理部２１４は、コマンド処理を終了し、コマンドの受け付けを待機する。
【００９９】
［ステップＳ３０］  コマンド処理部２１４は、他のコマンド処理を実行する。
次に、ステップＳ２５に示したＷＲコマンド処理を説明する。
図１０は、ＷＲコマンド処理を示すフローチャートである。
【０１００】
［ステップＳ２５ａ］  コマンド処理部２１４は、ホストコンピュータ１０が指定したドライブ装置にＷＲコマンドを発行する。これにより、ドライブ装置によりテープにＷＲコマンドにより指定されたデータが書き込まれる。
【０１０１】
［ステップＳ２５ｂ］  コマンド処理部２１４は、書き込み処理が正常に終了したか否かを、ドライブ装置からのデータ書き込みエラー報告の有無により判断する。書き込み処理が正常に終了したと判断した場合（ステップＳ２５ｂのＹｅｓ）、ステップＳ２５ｃに遷移する。処理が異常に終了したと判断した場合（ステップＳ２５ｂのＮｏ）、ステップＳ２５ｅに遷移する。
【０１０２】
［ステップＳ２５ｃ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃの物理ブロックＩＤの欄を更新する。その後、ステップＳ２５ｄに遷移する。
［ステップＳ２５ｄ］  コマンド処理部２１４は、ホストコンピュータ１０に正常終了を報告する。その後、ＷＲコマンド処理を終了する。
【０１０３】
［ステップＳ２５ｅ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃの物理ブロックＩＤの欄を更新する。また、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄を、書き込み処理が異常に終了したブロックＩＤに更新する。その後、ステップＳ２５ｆに遷移する。
【０１０４】
［ステップＳ２５ｆ］  コマンド処理部２１４は、ホストコンピュータ１０に異常終了を報告する。その後、ＷＲコマンド処理を終了する。
以上でＷＲコマンド処理の説明を終了する。
【０１０５】
次に、ステップＳ２７に示すＲＤＢＩＤコマンド処理を説明する。
図１１は、ＲＤＢＩＤコマンド処理を示すフローチャートである。
［ステップＳ２７ａ］  コマンド処理部２１４は、ドライブ情報種別管理テーブル２１５ａを参照し、書き込みエラーが発生したテープ５１をマウントしているドライブ装置が３６ＴＲＫドライブ装置か否かを判断する。３６ＴＲＫドライブ装置である場合（ステップＳ２７ａのＹｅｓ）、ステップＳ２７ｂに遷移する。３６ＴＲＫドライブ装置ではない場合（ステップＳ２７ａのＮｏ）、ステップＳ２７ｅに遷移する。
【０１０６】
［ステップＳ２７ｂ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄を参照し、データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えているか否かを判断する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えていると判断した場合（ステップＳ２７ｂのＹｅｓ）、ステップＳ２７ｃに遷移する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」以下であると判断した場合（ステップＳ２７ｂのＮｏ）、ステップＳ２７ｅに遷移する。
【０１０７】
［ステップＳ２７ｃ］  コマンド処理部２１４は、仮想ブロックＩＤ比率管理テーブル２１５ｂを参照し、書き込みエラーが発生したテープ５１をマウントしているドライブ装置の比率の欄に応じた仮想ブロックＩＤをホストコンピュータ１０に応答する。ステップＳ２７ｄに遷移する。
【０１０８】
［ステップＳ２７ｄ］  コマンド処理部２１４は、仮想ブロックＩＤをホストコンピュータ１０に応答した旨と応答した仮想ブロックＩＤを、通信処理部２１ｅを介してドライブ制御部３１に送信する。その後、図１１の処理を終了する。
【０１０９】
［ステップＳ２７ｅ］  コマンド処理部２１４は、ＲＤＢＩＤコマンドに対し書き込みエラーが発生した位置の物理ブロックＩＤをホストコンピュータ１０に応答する。その後、図１１の処理を終了する。
【０１１０】
以上で図１１の処理の説明を終了する。
次に、ステップＳ２９に示すＬＯＣＡＴＥコマンド処理を説明する。
図１２は、ＬＯＣＡＴＥコマンド処理を示すフローチャートである。
【０１１１】
［ステップＳ２９ａ］  コマンド処理部２１４は、ドライブ情報種別管理テーブル２１５ａを参照し、書き込みエラーが発生したテープ５１をマウントしているドライブ装置が３６ＴＲＫドライブ装置であるか否かを判断する。ドライブ装置が３６ＴＲＫドライブ装置である場合（ステップＳ２９ａのＹｅｓ）、ステップＳ２９ｂに遷移する。ドライブ装置が３６ＴＲＫドライブ装置ではない場合（ステップＳ２９ａのＮｏ）、ステップＳ２９ｅに遷移する。
【０１１２】
［ステップＳ２９ｂ］  コマンド処理部２１４は、ドライブ制御部３１がＲＤＢＩＤコマンド処理を実行した結果、ドライブ制御部３１から仮想ブロックＩＤをホストコンピュータ１０に応答した旨と応答した仮想ブロックＩＤを受け取っているか否かを判断する。受け取っている場合（ステップＳ２９ｂのＹｅｓ）、ステップＳ２９ｄに遷移する。受け取っていない場合（ステップＳ２９ｂのＮｏ）、ステップＳ２９ｃに遷移する。
【０１１３】
［ステップＳ２９ｃ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄を参照し、データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えているか否かを判断する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えている場合（ステップＳ２９ｃのＹｅｓ）、ステップＳ２９ｄに遷移する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」以下である場合（ステップＳ２９ｃのＮｏ）、ステップＳ２９ｅに遷移する。
【０１１４】
［ステップＳ２９ｄ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄に格納されているＩＤをＬＯＣＡＴＥコマンドのブロックＩＤとして書き込みエラーが発生したテープ５１をマウントしているドライブ装置に発行する。その後、ステップＳ２９ｆに遷移する。
【０１１５】
［ステップＳ２９ｅ］  コマンド処理部２１４は、ホストコンピュータ１０から指示されたＩＤをＬＯＣＡＴＥコマンドのブロックＩＤとして書き込みエラーが発生したテープ５１をマウントしているドライブ装置に発行する。その後、ステップＳ２９ｆに遷移する。
【０１１６】
［ステップＳ２９ｆ］  コマンド処理部２１４は、データの書き込みが正常に終了したか否かを判断する。データの書き込みが正常に終了したと判断した場合（ステップＳ２９ｆのＹｅｓ）、ステップＳ２９ｇに遷移する。データの書き込みが異常に終了したと判断した場合（ステップＳ２９ｆのＮｏ）、ステップＳ２９ｈに遷移する。
【０１１７】
［ステップＳ２９ｇ］  コマンド処理部２１４は、正常終了をホストコンピュータ１０に報告する。その後、図１２の処理を終了する。
［ステップＳ２９ｈ］  コマンド処理部２１４は、異常終了をホストコンピュータ１０に報告する。その後、図１２の処理を終了する。
【０１１８】
以上で図１２の処理の説明を終了する。
次に、ステップＳ２４に示す再ＷＲコマンド処理を説明する。
図１３は、ＷＲ再コマンド処理を示すフローチャートである。
【０１１９】
［ステップＳ２４ａ］  コマンド処理部２１４は、ドライブ情報種別管理テーブル２１５ａを参照し、書き込みエラーが発生したテープ５１をマウントしているドライブ装置がドライブ装置が３６ＴＲＫドライブ装置であるか否かを判断する。ドライブ装置が３６ＴＲＫドライブ装置である場合（ステップＳ２４ａのＹｅｓ）、ステップＳ２４ｂに遷移する。ドライブ装置が３６ＴＲＫドライブ装置ではない場合（ステップＳ２４ａのＮｏ）、ステップＳ２４ｄに遷移する。
【０１２０】
［ステップＳ２４ｂ］  コマンド処理部２１４は、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄を参照し、データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えているか否かを判断する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えていると判断した場合（ステップＳ２４ｂのＹｅｓ）、ステップＳ２４ｃに遷移する。データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」以下であると判断した場合（ステップＳ２４ｂのＮｏ）、ステップＳ２４ｄに遷移する。
【０１２１】
［ステップＳ２４ｃ］  コマンド処理部２１４は、ホストコンピュータ１０から受け取った物理ブロックＩＤが、ブロックＩＤ管理テーブル２１５ｃのＤＴＣＫブロックＩＤの欄に格納されているＩＤに一致するか否かを判断する。ＤＴＣＫブロックＩＤの欄に格納されているＩＤに一致した場合（ステップＳ２４ｃのＹｅｓ）、ステップＳ２４ｄに遷移する。ＤＴＣＫブロックＩＤの欄に格納されているＩＤに一致しない場合（ステップＳ２４ｃのＮｏ）、ステップＳ２４ｆに遷移する。
【０１２２】
［ステップＳ２４ｄ］  コマンド処理部２１４は、データ書き込みエラーが発生したテープ５１をマウントしているドライブ装置にＷＲコマンドを発行する。これにより、そのドライブ装置により、テープ５１にデータが書き込まれる。その後、ステップＳ２４ｅに遷移する。
【０１２３】
［ステップＳ２４ｅ］  コマンド処理部２１４は、ドライブ装置によるテープ５１へのデータの書き込みが正常に終了したか否かを判断する。書き込みが正常に終了したと判断した場合（ステップＳ２４ｅのＹｅｓ）、ステップＳ２４ｆに遷移する。書き込みが異常に終了したと判断した場合（ステップＳ２４ｅのＮｏ）、ステップＳ２４ｇに遷移する。
【０１２４】
［ステップＳ２４ｆ］  コマンド処理部２１４は、正常終了をホストコンピュータ１０に報告する。その後、図１３の処理を終了する。
［ステップＳ２４ｇ］  コマンド処理部２１４は、異常終了をホストコンピュータ１０に報告する。その後、図１３の処理を終了する。
【０１２５】
以上で図１３の処理の説明を終了する。
＜具体例＞
次に、ライブラリシステム１００のコマンド処理の具体例を説明する。
【０１２６】
本具体例では、物理ブロックＩＤに対する仮想ブロックＩＤの比率が１：２に決定された場合を例にライブラリシステム１００の処理を説明する。
図１４は、ライブラリシステムの処理の具体例を示す図である。
【０１２７】
図１４に示すテープ５１は、テープドライブ２２ａにマウントされている。テープ５１には、データＤ１から順にデータが書き込まれ、データＤ４ＦＦＦＦＦまで書き込みが成功していることを示している。
【０１２８】
データＤ５０００００のデータエラーチェックが発生したので、コマンド処理部２１４は、ホストコンピュータ１０に異常終了を報告する。
搬送機構制御部２１１は、ドライブ装置２２にマウントされているテープ５１をアンマウントし、ドライブ装置を２２からドライブ装置２３に交換する。そして、テープ５１をドライブ装置２３にマウントする。
【０１２９】
その後、ホストコンピュータ１０は、ＲＤＢＩＤコマンドをドライブ制御部２１に発行する。
ＲＤＢＩＤコマンドを受け付けたコマンド処理部２１４は、ドライブ装置２３が３６ＴＲＫドライブ装置であり、かつ、データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えているので、仮想ブロックＩＤ「２８００００ｈ」をホストコンピュータ１０に応答する。
【０１３０】
仮想ブロックＩＤ「２８００００ｈ」を受け付けたホストコンピュータ１０は、ＬＯＣＡＴＥコマンド「ＬＯＣＡＴＥ＝２８００００ｈ」をドライブ制御部２１に発行する。
ＬＯＣＡＴＥコマンド「ＬＯＣＡＴＥ＝２８００００ｈ」を受け付けたコマンド処理部２１４は、データ書き込みエラーが発生したテープの物理ブロックＩＤが、「３ＦＦＦＦＦｈ」を超えているので、実際にデータ書き込みエラーが発生した物理ブロックＩＤの２８００００ｈに位置づける。
【０１３１】
次に、ホストコンピュータ１０は、２８００００ｈ番目のデータＤ２８００００からデータを順次書き込む再ＷＲコマンドをドライブ制御部２１に発行する。
再ＷＲコマンドを受け付けたコマンド処理部２１４は、データＤ２８００００〜Ｄ４ＦＦＦＦＦまでのデータは既に書き込み完了済みなので、データＤ２８００００〜Ｄ４ＦＦＦＦＦをテープ５１には書き込まずに、データを１つ受け取る度に、正常に書き込みが終了したことのみホストコンピュータ１０に逐次報告する。そして、コマンド処理部２１４は、データＤ５０００００以降からは実際にデータをテープ５１に書き込むＷＲコマンドをドライブ装置２３に発行する。これにより、ドライブ装置２３により、テープ５１にデータが書き込まれる。図１４では、書き込みを行わないデータを（空）で表し、書き込みを行うデータを（実）で表している。
【０１３２】
以上述べたように、ライブラリシステム１００によれば、データ書き込みエラーが発生した場合、物理ブロックＩＤが２２ビット長（３ＦＦＦＦＦ）未満であれば、ＤＤＲリカバリのＲＤＢＩＤコマンドは物理ブロックＩＤ値を使い、ＬＯＣＡＴＥコマンドでは実際にデータ書き込みエラーが発生した物理ブロックＩＤに位置づけ、続きの書き込みを行う。そして、データ書き込みエラーが発生した物理ブロックＩＤが２２ビット長（４０００００ｈ）以上であれば、ＲＤＢＩＤコマンドは仮想ブロックＩＤを使うようにした。そして、ＬＯＣＡＴＥコマンドでは、実際にデータ書き込みエラーが発生した物理ブロックＩＤに位置づけるようにした。
【０１３３】
これにより、ＯＳのブロックＩＤ管理制限を超えてデータを書き込みすることができるため、テープ５１の使用領域を増やすことができる。
また、ＯＳからの続きの書き込み（仮想ブロックＩＤからの書き込み）に対しては、実際にデータ書き込みエラーが発生した物理ブロックＩＤまでの書き込みは不要であるため、全て正常終了を応答するようにした。これにより、再ＷＲコマンド処理を高速に実行することができる。
【０１３４】
以上、本発明のドライブ制御装置、ドライブ制御方法およびストレージ装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【０１３５】
また、本発明は、前述した各実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ドライブ制御装置１、磁気テープ装置２０、３０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷ等が挙げられる。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）等が挙げられる。
【０１３６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３８】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）等の電子回路で実現することもできる。
【０１３９】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１４０】
１  ドライブ制御装置
２、５１、５１ａ、５１ｂ  テープ
３  ドライブ
４  上位装置
１０  ホストコンピュータ
２０、３０  磁気テープ装置
２１、３１  ドライブ制御部
２１ａ、３１ａ  ＣＰＵ
２１ｂ、３１ｂ  メモリ
２１ｃ、３１ｃ  ホストＩ／Ｆ処理部
２１ｄ、３１ｄ  ドライブＩ／Ｆ制御部
２１ｅ、３１ｅ  通信処理部
２１ｆ、３１ｆ  バス
２２、２３、２４、２５、３２、３３、３４、３５  ドライブ装置
２２ａ、３２ａ  テープドライブ
２２ｂ、３２ｂ  Ｉ／Ｆ制御部
２６、３６  電源制御部
４０  搬送機構部
４１  バーコードリーダ
５０  カートリッジテープ収納棚
１００  ライブラリシステム
２１１  搬送機構制御部
２１２  トラック数判断部
２１３  仮想ブロックＩＤ比率決定部
２１４  コマンド処理部
２１５  管理情報格納部
２１５ａ  ドライブ情報種別管理テーブル
２１５ｂ  仮想ブロックＩＤ比率管理テーブル
２１５ｃ  ブロックＩＤ管理テーブル
【図１】
2012042661.tif 000003
【図２】
2012042661.tif 000004
【図３】
2012042661.tif 000005
【図４】
2012042661.tif 000006
【図５】
2012042661.tif 000007
【図６】
2012042661.tif 000008
【図７】
2012042661.tif 000009
【図８】
2012042661.tif 000010
【図９】
2012042661.tif 000011
【図１０】
2012042661.tif 000012
【図１１】
2012042661.tif 000013
【図１２】
2012042661.tif 000014
【図１３】
2012042661.tif 000015
【図１４】
2012042661.tif 000016
【国際調査報告】
2012042661.tif 000017
2012042661.tif 000018