(57)【要約】【課題】磁気ディスク装置のエラーを早期に検出すること。【解決手段】Ｉ／Ｏ要求受付部が受け付けたＩ／Ｏ要求を渡された状態判定部が磁気ディスク装置の制御コマンド用キューに対して状態確認コマンドを発行することによって装置状態を取得し、取得した装置状態が正常である場合には、Ｉ／Ｏ要求部が磁気ディスク装置のＩ／Ｏコマンド用キューに対してＩ／Ｏコマンドを発行するとともに、取得した装置状態が正常ではない場合には、Ｉ／Ｏ応答通知部がＩ／Ｏ要求の要求元に対して装置状態のエラー情報を通知するよう構成する。【選択図】        図２
2007164451.tif 000002
【特許請求の範囲】
【請求項１】
データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程と
を備えたことを特徴とする入出力制御方法。
【請求項２】
前記装置状態判定工程は、
前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得し、
前記エラー報知工程は、
前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知することを特徴とする請求項１に記載の入出力制御方法。
【請求項３】
前記装置状態判定工程が取得した装置状態を外部からの問い合わせに対して応答する装置状態応答工程をさらに含んだことを特徴とする請求項１または２に記載の入出力制御方法。
【請求項４】
データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、
前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、
前記入出力要求工程が前記データ入出力コマンドを発行したならば、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程と
を備えたことを特徴とする入出力制御方法。
【請求項５】
データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御プログラムであって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定手順と、
前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手順と、
前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手順と
をコンピュータに実行させることを特徴とする入出力制御プログラム。
【請求項６】
データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置であって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定手段と、
前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手段と、
前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手段と
を備えたことを特徴とする磁気ディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法に関し、特に、磁気ディスク装置のエラーを早期に検出することができる入出力制御方法、入出力制御プログラムおよび磁気ディスク装置に関するものである。
【背景技術】
【０００２】
従来、コンピュータの記憶装置として磁気ディスク装置が広く用いられている。かかる磁気ディスク装置は、ディスクの物理的破損や、振動やメカニカルな作動誤差に起因した入出力エラーを起こすことがある。
【０００３】
そして、コンピュータ上のオペレーティングシステムは、これらの入出力エラーを検出すると入出力コマンドを再発行するなどしてエラーからの復旧を試みることが通常である。しかし、オペレーティングシステムによる上記した復旧処理は、入出力コマンドのタイムアウト／リトライ（再発行）に依存しているものが多く、エラー検出に大きなタイムラグを伴うという問題を有している。
【０００４】
すなわち、磁気ディスク装置上で深刻な（復旧不可能な）エラーが発生しているにもかかわらず、オペレーティングシステムやオペレーティングシステム上で動作するアプリケーションプログラムは、長期間にわたるディスクＩ／Ｏ待ちを強いられることになる。
【０００５】
このため、磁気ディスク装置のエラー検出を早期におこなうための技術が種々提案されている。たとえば、特許文献１には、磁気ディスク装置の障害発生回数を計数し、累積回数が所定値を上回った磁気ディスク装置を閉塞させる技術が開示されている。また、特許文献２には、ディスクＩ／Ｏに関するリトライ状況を所定の処理部にて把握する技術が開示されている。
【０００６】
【特許文献１】特開平０６−０５１９１４号公報
【特許文献２】特開２００３−２３３５４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１や特許文献２の技術は、磁気ディスク装置上で軽微なエラーが発生している段階で、すなわち、深刻なエラーが発生する前に、復旧不可能なエラーを引き起こす可能性がある磁気ディスク装置を特定するための技術である。したがって、磁気ディスク装置に深刻な（復旧不可能な）エラーが発生してしまった場合には、入出力コマンドのタイムアウトを待たざるを得ずエラー検出を迅速におこなうことができないという問題があった。
【０００８】
特に、近年ではコンピュータシステムで取り扱われるデータ量は増加の一途をたどり、磁気ディスク装置を多数内蔵したディスクアレイ装置などの記憶装置も広く用いられている。ディスクアレイ装置は、内蔵する磁気ディスク装置のエラーを検出すると、この磁気ディスク装置を閉塞するとともに代替ディスク装置を用いて処理を継続する。しかし、このようなディスクアレイ装置においてもエラーが発生した磁気ディスク装置を早期に検出することができなければ、データ復旧に多くの時間を要することとなってしまう。
【０００９】
これらのことから、磁気ディスク装置のエラーを早期に検出することができる入出力制御手法をいかにして実現するかが大きな課題となっている。なお、かかる課題は、単一の磁気ディスク装置のみならず、多数の磁気ディスク装置を内蔵するディスクアレイ装置においても同様に発生する課題である。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、磁気ディスク装置のエラーを早期に検出することができる入出力制御方法、入出力制御プログラムおよび磁気ディスク装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため請求項１に係る発明は、データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得し、当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程とを備えたことを特徴とする。
【００１２】
また、請求項２に係る発明は、上記の発明において、前記装置状態判定工程は、前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得し、前記エラー報知工程は、前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知することを特徴とする。
【００１３】
また、請求項３に係る発明は、上記の発明において、前記装置状態判定工程が取得した装置状態を外部からの問い合わせに対して応答する装置状態応答工程をさらに含んだことを特徴とする。
【００１４】
また、請求項４に係る発明は、データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、前記入出力要求工程が前記データ入出力コマンドを発行したならば、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程とを備えたことを特徴とする。
【００１５】
また、請求項５に係る発明は、データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御プログラムであって、前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得し、当該磁気ディスク装置の装置状態を判定する装置状態判定手順と、前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手順と、前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手順とをコンピュータに実行させることを特徴とする。
【００１６】
また、請求項６に係る発明は、データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置であって、前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得し、当該磁気ディスク装置の装置状態を判定する装置状態判定手段と、前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手段と、前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手段とを備えたことを特徴とする。
【発明の効果】
【００１７】
請求項１、５または６の発明によれば、制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって磁気ディスク装置の装置状態を取得してこの磁気ディスク装置の装置状態を判定し、磁気ディスク装置の装置状態を正常と判定したことを条件としてデータ入出力コマンド用キューに対してデータ入出力コマンドを発行し、磁気ディスク装置の装置状態を正常ではないと判定したことを条件として磁気ディスク装置のエラーを報知するよう構成したので、磁気ディスク装置に回復不可能な障害が発生した場合であっても磁気ディスク装置のエラーを早期に検出することができるという効果を奏する。
【００１８】
また、請求項２の発明によれば、データ入出力コマンドを発行した後に、制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって磁気ディスク装置の装置状態を取得し、データ入出力コマンドを発行した後に装置状態を正常ではないと判定したことを条件として磁気ディスク装置のエラーを報知するよう構成したので、データ入出力コマンドの発行後に磁気ディスク装置が障害となった場合であっても磁気ディスク装置のエラーを早期に検出することができるという効果を奏する。
【００１９】
また、請求項３の発明によれば、取得した装置状態を外部からの問い合わせに対して応答するよう構成したので、オペレーティングシステムやオペレーティングシステム上で動作するアプリケーションが所望するタイミングで磁気ディスク装置のエラー情報を取得することができるという効果を奏する。
【００２０】
また、請求項４の発明によれば、データ入出力コマンド用キューに対してデータ入出力コマンドを発行した後に、制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって磁気ディスク装置の装置状態を取得して磁気ディスク装置の装置状態を判定し、磁気ディスク装置の装置状態を正常ではないと判定したことを条件として磁気ディスク装置のエラーを報知するよう構成したので、データ入出力コマンドの発行後において磁気ディスク装置に回復不可能な障害が発生した場合であっても磁気ディスク装置のエラーを早期に検出することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明に係る入出力制御手法の好適な実施例を詳細に説明する。
【実施例】
【００２２】
まず、本発明に係る入出力制御手法の概要について図１を用いて説明する。図１は、本発明に係る入出力制御手法の概要を示す図である。同図に示すように、本発明に係る入出力制御手法は、オペレーティングシステムと磁気ディスク装置との間に設けたエラー検出モジュールがＲ／Ｗ（リード／ライト）要求の中継をおこなうとともに、磁気ディスク装置の制御コマンド用キューを用いて磁気ディスク装置の装置状態を確認したうえで磁気ディスク装置に対してＩ／Ｏ（入力／出力）コマンドを発行する点に主たる特徴がある。
【００２３】
なお、図１においては、かかるエラー検出モジュールをオペレーティングシステムが動作するコンピュータ上に設けた場合について示しているが、エラー検出モジュールを必ずしもかかるコンピュータ上に設ける必要はない。すなわち、エラー検出モジュールを磁気ディスク装置上に設けたり、エラー検出モジュールを備えた入出力制御装置を別途構成したりすることとしてもよい。
【００２４】
図１に示すように、アプリケーションプログラム（以下、単に「アプリケーション」と記載する）が発行したＲ／Ｗ要求は、オペレーティングシステムを介してエラー検出モジュールへと渡される。そして、Ｒ／Ｗ要求を受け取ったエラー検出モジュールは、磁気ディスク装置の制御コマンド用キューに対して状態確認コマンドを発行する（図１の（１）参照）。
【００２５】
ここで、この制御コマンド用キューおよび同図に示すＩ／Ｏコマンド用キューについて説明しておく。制御コマンド用キューおよびＩ／Ｏコマンド用キューは、従来の磁気ディスク装置が一般的に備えているキューであり、磁気ディスク装置上で動作するファームウェアあるいは電子回路によって実現されるものである。
【００２６】
Ｉ／Ｏコマンドキューは、磁気ディスク装置が書き込み要求（ＩＮＰＵＴコマンド）や、読み出し要求（ＯＵＴＰＵＴコマンド）を受け付けるためのキューである。磁気ディスク装置は、このＩ／Ｏコマンドキューに格納されたＩ／Ｏコマンドを順次処理することによってメディア（ディスク）に対する入出力動作を実行し、応答を返すことになる。
【００２７】
ところで、磁気ディスク装置が大量のＩ／Ｏコマンドを受け取った場合には、かかる応答が遅延する。従来、磁気ディスク装置からの応答が遅延した場合には、同図に示すオペレーティングシステムなどがＲ／Ｗ要求が失敗したものと判定してＲ／Ｗ要求の再発行をおこなっていた。このようなエラー回復処理を自動実行することで、磁気ディスク装置に発生した一時的な障害の影響を排除することが可能であった。
【００２８】
しかし、磁気ディス装置に回復不可能な重大な障害が発生している場合には、上記したＩ／Ｏコマンドの再発行を繰り返した後にはじめて障害を検知することになるため、オペレーティングシステムやオペレーティングシステム上で動作するアプリケーションは長時間の待ち合わせを余儀なくされるという問題があった。
【００２９】
一方、制御コマンド用キューはＡＴＡ（AT  Attachment）やＳＣＳＩ（Small  Computer  System  Interface）といった標準規格で定義されている制御コマンドを受け付けるためのキューである。この制御コマンド用キューに格納される制御コマンドは、上記したＩ／Ｏコマンドよりも短時間で実行される。そして、かかる制御コマンドとしては磁気ディスク装置の装置状態を取得するためのコマンドも用意されている。
【００３０】
そこで、本発明に係る入出力制御手法では、この制御コマンド用キューに対して磁気ディスク装置の装置状態を取得するコマンドを発行して（図１の（１）参照）磁気ディスク装置の装置状態を取得し（図１の（２）参照）、装置状態が正常であることを確認したうえでＩ／Ｏコマンドを発行する（図１の（３）参照）ようエラー検出モジュールを構成した。そして、装置状態が異常であることを確認した場合には、オペレーティングシステムに対して磁気ディスク装置が異常である旨を報知することした。
【００３１】
したがって、オペレーティングシステムやアプリケーションは、磁気ディスク装置の異常を早期に認知することが可能となり、磁気ディスク装置に重大な障害が発生している場合であっても長期間の待ち合わせを強いられることがない。
【００３２】
また、本発明に係る入出力制御手法では、ＡＴＡやＳＣＳＩといった標準規格で定義されている制御コマンドを用いて磁気ディスク装置の装置状態を取得するよう構成したので、一般的な磁気ディスク装置を用いる場合であっても磁気ディスク装置の異常を早期に検出することができる。
【００３３】
次に、本発明に係る入出力制御手法を適用したディスク制御装置について図２を用いて説明する。図２は、ディスク制御装置１０の構成を示すブロック図である。なお、同図では、図１に示したエラー検出モジュールを備えたディスク制御装置１０を、オペレーティングシステム５と磁気ディスク装置２０との間に設けた場合について示している。
【００３４】
しかしながら、これに限らず、ディスク制御装置１０と同等の機能をオペレーティングシステムが動作するコンピュータ上に構成したり、磁気ディスク装置２０上に構成したりすることもできる。なお、かかる変形例については図７を用いて後述する。
【００３５】
図２に示すように、ディスク制御装置１０は、Ｉ／Ｏ要求受付部１１と、Ｉ／Ｏ応答通知部１２と、状態判定部１３と、Ｉ／Ｏ要求部１４と、Ｉ／Ｏ応答取得部１５とを備えている。なお、各処理部は、ディスク制御装置１０上で動作するファームウェアなどのプログラムによって実現される。また、これらの各処理部を電子回路を用いて構成することとしてもよい。
【００３６】
Ｉ／Ｏ要求受付部１１は、オペレーティングシステム５から書き込み要求や読み出し要求といった要求を受け付けるとともに、受け付けた要求を状態判定部１３に渡す処理をおこなう処理部である。また、Ｉ／Ｏ応答通知部１２は、状態判定部１３あるいはＩ／Ｏ応答取得部１５から渡された装置状態あるいはＩ／Ｏ応答をオペレーティングシステム５に対して通知する処理をおこなう処理部である。
【００３７】
このように、オペレーティングシステム５は、インタフェース部分であるＩ／Ｏ要求受付部１１に対してＩ／Ｏ要求をおこない、Ｉ／Ｏ応答通知部１２からＩ／Ｏ応答を受け取ることになるので、ディスク制御装置１０内で実行される他の処理を意識することなく通常のＩ／Ｏ処理をおこなえばよい。なお、磁気ディスク装置２０の装置状態は上記したＩ／Ｏ応答に含まれる形でオペレーティングシステム５に通知される。
【００３８】
状態判定部１３は、Ｉ／Ｏ要求受付部１１からＩ／Ｏ要求を渡されると、磁気ディスク２０の制御コマンド用キュー（図１参照）に対して装置状態問い合わせコマンドを発行して装置状態を取得するとともに、取得した装置状態に基づいてＩ／Ｏ応答通知部１２またはＩ／Ｏ要求部１４に対して所定の指示をおこなう処理部である。
【００３９】
具体的には、この状態判定部１３は、取得した装置状態が正常である場合には、Ｉ／Ｏ要求受付部１１から受け取ったＩ／Ｏ要求を磁気ディスク装置２０に対して発行するようＩ／Ｏ要求部１４に指示する。一方、取得した装置状態が異常である場合には、磁気ディスク装置２０が異常である旨をオペレーティングシステム５に対して通知するようＩ／Ｏ応答通知部１２に指示する。
【００４０】
なお、状態判定部１３は、磁気ディスク装置２０に対する装置状態問い合わせコマンドを所定間隔ごとに複数回繰り返すこともできる。上記したように、制御コマンド用キューに対して発行されたコマンドは磁気ディスク装置２０によって遅滞なく処理されるが、磁気ディスク装置２０に一時的な障害（回復可能な障害）が発生した場合には、一回の装置状態問い合わせコマンドの応答に失敗することがある。したがって、装置状態問い合わせコマンドを複数回発行することとすれば、このような一時的な障害と、重大な障害（回復不可能な障害）とを切り分けたうえでオペレーティングシステム５に通知することが可能となる。
【００４１】
Ｉ／Ｏ要求部１４は、状態判定部１３の指示によってＩ／Ｏ要求受付部１１が受け取ったＩ／Ｏ要求を磁気ディスク装置２０のＩ／Ｏコマンド用キュー（図１参照）に対して発行する処理をおこなう処理部である。また、Ｉ／Ｏ応答取得部１５は、磁気ディスク装置２０から受け取ったＩ／Ｏ応答をＩ／Ｏ応答通知部１２に中継する処理をおこなう処理部である。
【００４２】
次に、図２に示したディスク制御装置１０における処理手順について図３を用いて説明する。図３は、ディスク制御装置１０における処理手順を示すフローチャートである。同図に示すように、Ｉ／Ｏ要求受付部１１がオペレーティングシステム（以下、「ＯＳ」と記載する）からのＩ／Ｏ要求（Ｉ／Ｏコマンド）を受け付けると（ステップＳ１０１）、状態判定部１３は、磁気ディスク装置２０の制御コマンド用キューに対して状態確認コマンドを発行する（ステップＳ１０２）。
【００４３】
そして、磁気ディスク装置２０から正常応答を受信した場合には（ステップＳ１０３，Ｙｅｓ）、Ｉ／Ｏ要求部１４が磁気ディスク装置２０のＩ／Ｏコマンド用キューに対してＩ／Ｏコマンドを発行する（ステップＳ１０４）。一方、磁気ディスク装置２０から正常応答を受信しなかった場合（ステップＳ１０３，Ｎｏ）、すなわち、異常である旨の応答を受信した場合あるいは所定時間以内に応答を受信しなかった場合には、Ｉ／Ｏ応答通知部１２がＯＳに対してエラー情報を通知して（ステップＳ１０７）処理を終了する。
【００４４】
ステップＳ１０４の処理手順につづいて、Ｉ／Ｏ応答取得部１５が磁気ディスク装置２０からＩ／Ｏ要求応答を受信すると（ステップＳ１０５，Ｙｅｓ）、Ｉ／Ｏ応答通知部１２はＯＳに対してＩ／Ｏ応答を通知して（ステップＳ１０６）処理を終了する。一方、Ｉ／Ｏ応答を受信しなかった場合には（ステップＳ１０５，Ｎｏ）、Ｉ／Ｏ応答を受信するまでステップＳ１０５の処理を繰り返すことになる。
【００４５】
図３に示したように、ディスク制御装置１０では、Ｉ／Ｏコマンドの発行に先だって状態確認コマンドを発行することによって磁気ディスク装置２０の装置状態を取得し、装置状態が正常であることを条件としてＩ／Ｏコマンドを発行することとした。したがって、磁気ディスク装置２０の異常を早期に検出することができるとともに、回復不可能な障害に陥っている磁気ディスク装置２０に対してＩ／Ｏコマンドを発行してしまい長時間に渡って待ち合わせをおこなう事態を回避することができる。
【００４６】
ところで、図３に示したフローチャートでは、状態確認コマンドで磁気ディスク装置２０の正常性を確認したうえでＩ／Ｏコマンドの発行をおこなう場合について説明した。しかし、Ｉ／Ｏコマンドを発行した後に磁気ディスク装置２０に重大な障害が発生することもありうる。そこで、以下では、Ｉ／Ｏコマンドの発行後における障害をも検出することが可能な処理手順について説明することとする。
【００４７】
図４は、ディスク制御装置１０における処理手順の変形例を示すフローチャートである。同図に示すように、Ｉ／Ｏ要求受付部１１がＯＳからのＩ／Ｏ要求（Ｉ／Ｏコマンド）を受け付けると（ステップＳ２０１）、状態判定部１３は、磁気ディスク装置２０の制御コマンド用キューに対して状態確認コマンドを発行する（ステップＳ２０２）。
【００４８】
そして、磁気ディスク装置２０から正常応答を受信した場合には（ステップＳ２０３，Ｙｅｓ）、Ｉ／Ｏ要求部１４が磁気ディスク装置２０のＩ／Ｏコマンド用キューに対してＩ／Ｏコマンドを発行する（ステップＳ２０４）。一方、磁気ディスク装置２０から正常応答を受信しなかった場合（ステップＳ２０３，Ｎｏ）、すなわち、異常である旨の応答を受信した場合あるいは所定時間以内に応答を受信しなかった場合には、Ｉ／Ｏ応答通知部１２がＯＳに対してエラー情報を通知して（ステップＳ２０９）処理を終了する。
【００４９】
ステップＳ２０４の処理手順につづいて、Ｉ／Ｏ応答取得部１５が磁気ディスク装置２０からＩ／Ｏ要求応答を受信すると（ステップＳ２０５，Ｙｅｓ）、Ｉ／Ｏ応答通知部１２はＯＳに対してＩ／Ｏ応答を通知して（ステップＳ２０６）処理を終了する。一方、Ｉ／Ｏ応答を受信しなかった場合には（ステップＳ２０５，Ｎｏ）、磁気ディスク装置２０に対して状態確認コマンドを発行し（ステップＳ２０７）、正常応答を受信したか否かを判定する（ステップＳ２０８）。
【００５０】
そして、正常応答を受信した場合には（ステップＳ２０８，Ｙｅｓ）、ステップＳ２０５に進むことでＩ／Ｏ応答受信待ちをおこなう。一方、磁気ディスク装置２０から正常応答を受信しなかった場合（ステップＳ２０８，Ｎｏ）、すなわち、異常である旨の応答を受信した場合あるいは所定時間以内に応答を受信しなかった場合には、Ｉ／Ｏ応答通知部１２がＯＳに対してエラー情報を通知して（ステップＳ２０９）処理を終了する。
【００５１】
ところで、図２のディスク制御装置１０では、オペレーティングシステム５からのＩ／Ｏ要求をトリガーとして磁気ディスク装置２０の装置状態を取得することとしていた。しかしながら、これに限らず、オペレーティングシステム５からの装置状態取得要求を受け付けることとし、この要求の応答として装置状態を返す構成とすることもできる。そこで、以下では、装置状態応答機能を備えたディスク制御装置１０ａについて説明する。図５は、装置状態応答機能を備えたディスク制御装置１０ａの構成を示すブロック図である。
【００５２】
なお、以下では、図２に示したディスク制御装置１０との差異点について主に説明する。そして、図２と同様の処理をおこなう処理部には同一の符号を付し、共通点の説明を省略することとする。図５に示すように、ディスク制御装置１０ａは、ディスク制御装置１０（図２参照）が備える各処理部（１１〜１５）に加えて処理状態情報１６を記憶する記憶部を備えている。
【００５３】
この処理状態情報１６は、上記した状態判定部１３によって更新される情報であり、磁気ディスク装置２０に対して発行した状態確認コマンドの進捗状況をあらわす情報である。たとえば、かかる処理状態情報１６は、状態確認コマンドの発行回数や、発行後の経過時間といった項目を含んだ情報である。
【００５４】
そして、図５に示すＩ／Ｏ要求受付部１１は、Ｉ／Ｏ要求に加えて装置状態取得要求を受け付け、受け付けた装置状態取得要求を状態判定部１３に渡す処理をさらにおこなう。また、状態判定部１３は、装置状態取得要求に該当する情報を処理状態情報１６から取得し、取得した装置状態をＩ／Ｏ応答通知部１２を介することによってオペレーティングシステム５に返す処理をさらにおこなう。
【００５５】
このように、装置状態応答機能を備えたディスク制御装置１０ａを構成することとすれば、オペレーティングシステム５が所望するタイミングで磁気ディスク装置２０の装置状態を取得することが可能となる。したがって、オペレーティングシステム５あるいはアプリケーション（図１参照）は、磁気ディスク装置２０の障害を早期に認識することができる。
【００５６】
次に、図５に示したディスク制御装置１０ａで実行される処理状態応答処理の処理手順について図６を用いて説明する。図６は、処理状態応答処理の処理手順を示すフローチャートである。同図に示すように、Ｉ／Ｏ要求受付部１１がＯＳからの処理状態要求を受け付けると（ステップＳ３０１）、状態判定部１３は、処理状態情報１６を検索する（ステップＳ３０２）。
【００５７】
そして、該当するＩ／Ｏ要求コマンドが処理中である場合には（ステップＳ３０３，Ｙｅｓ）、処理状態情報１６から抽出した処理状態をＯＳに対して通知して（ステップＳ３０４）処理を終了する。一方、該当するＩ／Ｏ要求コマンドが処理済みである場合には（ステップＳ３０３，Ｎｏ）、Ｉ／Ｏ要求コマンドが処理済みである旨をＯＳに通知して（ステップＳ３０５）処理を終了する。
【００５８】
ところで、図２では、オペレーティングシステム５と磁気ディスク装置２０との間にディスク制御装置１０を構成する場合について説明した。しかしながら、ディスク制御装置１０が備える各処理部を、オペレーティングシステム５が動作するコンピュータ１上および磁気ディスク装置２０上に分散して構成することも可能である。
【００５９】
そこで、以下では、図２に示したディスク制御装置１０が備える各処理部をコンピュータ１と磁気ディスク装置２０とに分散して配置する場合について説明する。図７は、ドライバ１０ｂおよび磁気ディスク装置２０ａの構成を示すブロック図である。なお、図７においては、図２と同様の処理をおこなう処理部には同一の符号を付し、共通点の説明については省略することとする。
【００６０】
図７に示すように、コンピュータ１上に設けられるドライバ１０ｂは、Ｉ／Ｏ要求受付部１１およびＩ／Ｏ応答通知部１２を備えている。また、磁気ディスク装置２０は、状態判定部１３と、Ｉ／Ｏ要求部１４と、Ｉ／Ｏ応答取得部１５とを備えている。
【００６１】
このように、磁気ディスク装置２０に状態判定部１３などの処理部を設けることとすれば、コンピュータ１／磁気ディスク装置２０間のインタフェースとして独自のインタフェースを採用することが可能となる。したがって、処理効率のよいコマンドや応答速度の速いコマンドをあらたに設けることが容易となり、磁気ディスク装置２０の障害状態をいち早く取得することができるようになる。
【００６２】
ところで、図２では、単一の磁気ディスク装置２０の入出力制御をおこなうディスク制御装置１０について説明した。しかし、ディスク制御装置１０は複数の磁気ディスク装置を内蔵したディスクアレイ装置の入出力制御をおこなうこともできる。そして、ディスクアレイ装置の入出力制御をおこなう場合には、特定の磁気ディスク装置の障害を検出した場合に、正常な磁気ディスク装置を代替装置として入出力制御を継続することが可能である。そこで、以下では、代替処理機能を備えたディスク制御装置１０ｃについて説明することとする。
【００６３】
図８は、代替処理機能を備えたディスク制御装置１０ｃの構成を示すブロック図である。同図に示すように、ディスク制御装置１０ｃはディスク制御装置１０（図２参照）と同様の各処理部（１１〜１５）を備えている。しかし、ディスク制御装置１０ｃの状態判定部１３はＩ／Ｏ要求の発行対象となる磁気ディスク装置の代替処理機能を有している点が異なっている。そこで、図８に示す状態判定部１３がおこなう代替処理の処理手順について図９を用いて説明する。図９は、代替処理の処理手順を示すフローチャートである。
【００６４】
図９に示すように、Ｉ／Ｏ要求受付部１１がＯＳからのＩ／Ｏ要求（Ｉ／Ｏコマンド）を受け付けると（ステップＳ４０１）、ディスク制御装置１０ｃは図３に示したエラー検出処理を実行する（ステップＳ４０２）。つづいて、該当ディスク装置でエラーを検出した場合には（ステップＳ４０３，Ｙｅｓ）、代替ディスク装置があるか否かを判定する（ステップＳ４０４）。
【００６５】
そして、代替ディスク装置がある場合には（ステップＳ４０４，Ｙｅｓ）、このディスク装置（代替ディスク装置）へアクセスする（ステップＳ４０５）。一方、ステップＳ４０３で該当ディスク装置のエラーを検出しなかった場合には（ステップＳ４０３，Ｎｏ）、このディスク装置（該当ディスク装置）へアクセスする（ステップＳ４０５）。
【００６６】
ステップＳ４０５につづき、Ｉ／Ｏ応答通知部１２はＯＳに対してＩ／Ｏ応答を通知して（ステップＳ４０６）処理を終了する。一方、ステップＳ４０４において代替ディスク装置がないと判定された場合には（ステップＳ４０４，Ｎｏ）、Ｉ／Ｏ応答通知部１２はＯＳに対してエラー情報を通知し（ステップＳ４０７）、処理を終了する。
【００６７】
上述してきたように、Ｉ／Ｏ要求受付部が受け付けたＩ／Ｏ要求を渡された状態判定部が磁気ディスク装置の制御コマンド用キューに対して状態確認コマンドを発行することによって装置状態を取得し、取得した装置状態が正常である場合には、Ｉ／Ｏ要求部が磁気ディスク装置のＩ／Ｏコマンド用キューに対してＩ／Ｏコマンドを発行するとともに、取得した装置状態が正常ではない場合には、Ｉ／Ｏ応答通知部がＩ／Ｏ要求の要求元に対して装置状態のエラー情報を通知するよう構成したので、磁気ディスク装置のエラーを早期に検出することができる。
【００６８】
（付記１）データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程と
を備えたことを特徴とする入出力制御方法。
【００６９】
（付記２）前記装置状態判定工程は、
前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得し、
前記エラー報知工程は、
前記入出力要求工程が前記データ入出力コマンドを発行した後に、前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知することを特徴とする付記１に記載の入出力制御方法。
【００７０】
（付記３）前記装置状態判定工程が取得した装置状態を外部からの問い合わせに対して応答する装置状態応答工程をさらに含んだことを特徴とする付記１または２に記載の入出力制御方法。
【００７１】
（付記４）前記装置状態判定工程は、
前記制御コマンド用キューに対して発行した前記装置状態問い合わせコマンドの応答を所定時間内に受け取ることができない場合に、当該磁気ディスク装置が復旧見込みのない致命的エラーに陥っていると判定することを特徴とする付記１、２または３に記載の入出力制御方法。
【００７２】
（付記５）前記装置状態判定工程は、
前記制御コマンド用キューに対して発行した前記装置状態問い合わせコマンドの応答が所定回数連続して正常ではない場合に、当該磁気ディスク装置が復旧見込みのない致命的エラーに陥っていると判定することを特徴とする付記１〜４のいずれか一つに記載の入出力制御方法。
【００７３】
（付記６）前記入出力要求工程は、
前記装置状態判定工程が前記磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置以外の磁気ディスク装置が有する前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行することを特徴とする付記１〜５のいずれか一つに記載の入出力制御方法。
【００７４】
（付記７）データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御方法であって、
前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求工程と、
前記入出力要求工程が前記データ入出力コマンドを発行したならば、前記制御コマンド用キューに対して装置状態問い合わせコマンドを所定間隔ごとに発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定工程と、
前記装置状態判定工程が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知工程と
を備えたことを特徴とする入出力制御方法。
【００７５】
（付記８）データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置の入出力制御プログラムであって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定手順と、
前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手順と、
前記装置状態判定手順が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手順と
をコンピュータに実行させることを特徴とする入出力制御プログラム。
【００７６】
（付記９）データ入出力コマンドを受け付けるためのデータ入出力コマンド用キューと制御コマンドを受け付けるための制御コマンド用キューとを有する磁気ディスク装置であって、
前記制御コマンド用キューに対して装置状態問い合わせコマンドを発行することによって前記磁気ディスク装置の装置状態を取得して当該磁気ディスク装置の装置状態を判定する装置状態判定手段と、
前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常と判定したことを条件として前記データ入出力コマンド用キューに対して前記データ入出力コマンドを発行する入出力要求手段と、
前記装置状態判定手段が当該磁気ディスク装置の装置状態を正常ではないと判定したことを条件として当該磁気ディスク装置のエラーを報知するエラー報知手段と
を備えたことを特徴とする磁気ディスク装置。
【産業上の利用可能性】
【００７７】
以上のように、本発明に係る入出力制御方法、入出力制御プログラムおよび磁気ディスク装置は、磁気ディスク装置のエラーを早期に検出したい場合に有用であり、特に、オペレーティングシステムやオペレーティングシステム上で動作するアプリケーションプログラムからエラー検出処理を隠蔽したい場合に適している。
【図面の簡単な説明】
【００７８】
【図１】本発明に係る入出力制御方法の概要を示す図である。
【図２】ディスク制御装置の構成を示すブロック図である。
【図３】ディスク制御装置における処理手順を示すフローチャートである。
【図４】ディスク制御装置における処理手順の変形例を示すフローチャートである。
【図５】装置状態応答機能を備えたディスク制御装置の構成を示すブロック図である。
【図６】処理状態応答処理の処理手順を示すフローチャートである。
【図７】ドライバおよび磁気ディスク装置の構成を示すブロック図である。
【図８】代替処理機能を備えたディスク制御装置の構成を示すブロック図である。
【図９】代替処理の処理手順を示すフローチャートである。
【符号の説明】
【００７９】
１  コンピュータ
５  オペレーティングシステム
１０、１０ａ、１０ｃ  ディスク制御装置
１０ｂ  ドライバ
１１  Ｉ／Ｏ要求受付部
１２  Ｉ／Ｏ応答通知部
１３  状態判定部
１４  Ｉ／Ｏ要求部
１５  Ｉ／Ｏ応答取得部
１６  処理状態情報
２０、２０ａ  磁気ディスク装置
２０ｃ  ディスクアレイ装置
【図１】
2007164451.tif 000003
【図２】
2007164451.tif 000004
【図３】
2007164451.tif 000005
【図４】
2007164451.tif 000006
【図５】
2007164451.tif 000007
【図６】
2007164451.tif 000008
【図７】
2007164451.tif 000009
【図８】
2007164451.tif 000010
【図９】
2007164451.tif 000011