(57)【要約】【課題】正常な部品の切離しを防止すること。【解決手段】エクスパンダを介してディスクに対する入出力処理を行うストレージ装置は、閾値判定部５０２と偏り判定部５０３と接続判定部５０４と切離部５０５とを有する。閾値判定部５０２は、入出力処理におけるディスクのエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定する。偏り判定部５０３は、累積値が閾値以上になったと判定された場合、ディスクに対する入出力処理数がエクスパンダに搭載された他のディスクに対する入出力処理数と比較して偏りがあるか否かを判定する。接続判定部５０４は、偏りがあると判定された場合、エクスパンダに対して接続状態が正常であるか否かを判定する。切離部５０５は、エクスパンダの接続状態が正常であると判定された場合に、ディスクとの接続を切離す。【選択図】図２
2013161235.tif 000002
【特許請求の範囲】
【請求項１】
中継装置を介して記憶装置に対する入出力処理を行うストレージ装置において、
前記入出力処理における前記記憶装置のエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定する閾値判定部と、
前記閾値判定部により累積値が閾値以上になったと判定された場合、前記記憶装置に対する入出力処理数が前記中継装置に搭載された他の記憶装置に対する入出力処理数と比較して偏りがあるか否かを判定する偏り判定部と、
前記偏り判定部により偏りがあると判定された場合、前記中継装置に対して接続状態が正常であるか否かを判定する接続判定部と、
前記接続判定部により前記中継装置の接続状態が正常であると判定された場合に、前記記憶装置との接続を切離す切離部と
を有することを特徴とするストレージ装置。
【請求項２】
前記切離部は、前記偏り判定部により偏りがないと判定された場合、前記閾値判定部により、前記記憶装置との接続を切離すことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記接続判定部は、前記閾値判定部によりいずれかの中継装置が閾値以上になったと判定された場合、前記中継装置よりも上位に位置する全ての中継装置に対して接続状態が正常であるか否かを判定し、
前記切離部は、前記接続判定部により接続が正常でないと判定された中継装置のうち、最も上位に位置する中継装置との接続を切離す
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記接続判定部は、閾値以上になった前記記憶装置を搭載する中継装置との接続状態が正常ではないと判定した場合に、前記中継装置よりも上位に位置する全ての中継装置に対して接続状態が正常であるか否かを判定し、
前記切離部は、前記接続判定部により接続が正常でないと判定された中継装置のうち、最も上位に位置する中継装置との接続を切離す
ことを特徴とする請求項１に記載のストレージ装置。
【請求項５】
中継装置を介して記憶装置に対する入出力処理を行うストレージ装置が、
前記入出力処理における前記記憶装置のエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定し、
累積値が閾値以上になったと判定した場合、前記記憶装置に対する入出力処理数が前記中継装置に搭載された他の記憶装置に対する入出力処理数と比較して偏りがあるか否かを判定し、
偏りがあると判定した場合、前記中継装置に対して接続状態が正常であるか否かを判定し、
前記中継装置の接続状態が正常であると判定した場合に、前記記憶装置との接続を切離す
各処理を含んだことを特徴とするストレージ装置の制御方法。
【請求項６】
中継装置を介して記憶装置に対する入出力処理を行うストレージ装置に、
前記入出力処理における前記記憶装置のエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定し、
累積値が閾値以上になったと判定した場合、前記記憶装置に対する入出力処理数が前記中継装置に搭載された他の記憶装置に対する入出力処理数と比較して偏りがあるか否かを判定し、
偏りがあると判定した場合、前記中継装置に対して接続状態が正常であるか否かを判定し、
前記中継装置の接続状態が正常であると判定した場合に、前記記憶装置との接続を切離す
各処理を実行させるためのストレージ装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラムに関する。
【背景技術】
【０００２】
従来、ストレージ装置は、ＳＡＳ（Serial  Attached  SCSI）  Ｅｘｐａｎｄｅｒ（以下、エクスパンダと記す）を介して複数のＨＤＤ（Hard  Disk  Drive）（以下、ディスクと記す）が接続され、大容量の記憶容量を有する。図８を用いて、従来技術に係るストレージ装置について説明する。
【０００３】
図８は、従来技術に係るストレージ装置の構成の一例を示す図である。図８に示すように、ストレージ装置９００は、エクスパンダ９１０〜９３０と、Ｉ／Ｏコントローラ９４０とを有する。なお、ストレージ装置１において、相対的にＩ／Ｏコントローラ９４０側に位置する装置を上位の装置と呼び、相対的にエクスパンダ９３０側に位置する装置を下位の装置と呼ぶものとする。
【０００４】
このようなストレージ装置９００において、Ｉ／Ｏコントローラ９４０は、各エクスパンダに対してディスカバリ処理を行うことによりエクスパンダやディスクの接続情報を取得し、取得した接続情報に基づいて、ディスクに入出力処理を実行する。
【０００５】
また、Ｉ／Ｏコントローラ９４０は、ストレージ装置９００内の経路においてリンクダウンなどの異常が発生した場合、リンクダウンが発生した経路を使用したディスクへのＩ／Ｏアクセスを停止させる。この場合、Ｉ／Ｏコントローラ９４０は、Ｉ／Ｏがエラーになったことを検出できるが、ディスカバリ処理の完了を待つまで異常デバイスがディスクであるのかエクスパンダであるのかを特定できない。また、ディスカバリ処理に時間がかかった場合、Ｉ／Ｏコントローラ９４０は、異常デバイスを特定できず、その間Ｉ／Ｏアクセスのエラーを検知し続けることとなる。
【０００６】
このようなことから、Ｉ／Ｏコントローラ９４０は、Ｉ／Ｏエラーの統計的な監視を行うことで異常デバイスを特定する。例えば、Ｉ／Ｏコントローラ９４０は、Ｉ／Ｏエラー発生時にエラーが発生したディスクとディスクが搭載されたエクスパンダに対応付けたエラーを評価する点数に加点を行い、点数の累積値が閾値以上になったデバイスを異常デバイスに特定する。
【０００７】
図９Ａと図９Ｂを用いて、Ｉ／Ｏエラーの統計的な監視による異常デバイスの特定処理について説明する。図９Ａは、同一のエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の一例を示す図であり、図９Ｂは、異なるエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の一例を示す図である。なお、Ｉ／Ｏコントローラ９４０は、Ｉ／Ｏエラーが発生した場合、Ｉ／Ｏアクセスした各ディスクと、このディスクに至る経路上の全てのエクスパンダとに対応付けたエラーを評価する点数に加点を行う。また、例えば、エクスパンダに対応付けたエラーを評価する点数への１回の加点値（ＰＥＸＰ）を５０点、ディスクに対応付けたエラーを評価する点数への加点値（ＰＤＩＳＫ）を６５点とし、デバイスを異常部位に特定する点数の閾値を２５５点とする。また、複数のエクスパンダの点数が同時に閾値以上になった場合、最下位に位置するエクスパンダを切離すものとする。
【０００８】
図９Ａに示す例は、エクスパンダ９３０に異常がある場合を示す。Ｉ／Ｏコントローラ９４０は、ディスク９３１、ディスク９３２、ディスク９３３、ディスク９３４の順でＩ／Ｏアクセスを行う場合、いずれもエラーになる。この場合、統計加点は、各ディスク９３１〜９３４にアクセスが失敗する度にＩ／Ｏアクセスした各ディスク９３１〜９３４とエクスパンダ９３０とに加点される。この結果、ディスク９３２に２度目にＩ／Ｏアクセスを失敗した場合、エクスパンダ９３０の点数が閾値である２５５点を超える。そして、Ｉ／Ｏコントローラ９４０は、エクスパンダ９３０を異常デバイスであると特定し、エクスパンダ９３０を切り離す。
【０００９】
図９Ｂに示す例は、エクスパンダ９１０に異常がある場合を示す。Ｉ／Ｏコントローラ９４０は、エクスパンダ９１０に搭載されたディスク、エクスパンダ９２０に搭載されたディスク、エクスパンダ９３０に搭載されたディスクの順でＩ／Ｏアクセスを行う場合、いずれのＩ／Ｏアクセスもエラーになる。この場合、各ディスクにアクセスが失敗する度にエクスパンダと、このエクスパンダの上位に位置するエクスパンダとに加点される。この結果、エクスパンダ−９３０に搭載されたディスクに２度目にアクセスを失敗した場合、エクスパンダ９１０の点数が閾値である２５５点を超える。そして、Ｉ／Ｏコントローラ９４０は、エクスパンダ９１０を異常デバイスであると特定し、エクスパンダ９１０を切り離す。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−２０５３１６号公報
【特許文献２】特開２０１１−１０８００６号公報
【特許文献３】特開２００８−２４２８７２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した従来の技術では、正常な部品を誤って切離す場合があるという課題がある。
【００１２】
図１０Ａと図１０Ｂを用いて、Ｉ／Ｏエラーの統計的な監視により正常な部品を誤って切離す場合について説明する。図１０Ａは、同一のエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の別例を示す図であり、図１０Ｂは、異なるエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の別例を示す図である。
【００１３】
図１０Ａに示す例は、エクスパンダ９３０に異常がある場合を示す。Ｉ／Ｏコントローラ９４０は、ディスク９３１に繰り返しＩ／Ｏアクセスを行う場合、いずれのＩ／Ｏアクセスもエラーになる。そして、ディスク９３１に４度目にＩ／Ｏアクセスを失敗した場合、ディスク９３１の点数が閾値である２５５点を超える。この結果、Ｉ／Ｏコントローラ９４０は、ディスク９３１を異常デバイスであると特定し、正常なディスク９３１を誤って切り離してしまう。また、複数のディスクにＩ／Ｏアクセスがある状況であってもＩ／Ｏアクセスに大きく偏りがあった場合も同様に、エクスパンダの異常を検出する前にディスクが誤って切り離されてしまう。
【００１４】
図１０Ｂに示す例は、エクスパンダ９１０に異常がある場合を示す。Ｉ／Ｏコントローラ９４０は、エクスパンダ９２０に搭載されたディスクとエクスパンダ９３０に搭載されたディスクとに交互に繰り返しＩ／Ｏアクセスを行う場合、いずれのＩ／Ｏアクセスもエラーになる。そして、エクスパンダ−９３０に搭載されたディスクに３度目にアクセスを失敗した場合、エクスパンダ９１０、エクスパンダ９２０の点数が閾値である２５５点を超える。この結果、Ｉ／Ｏコントローラ９４０は、正常なエクスパンダ９２０を異常デバイスであると特定し、エクスパンダ９１０を切り離す。
【００１５】
１つの側面では、正常な部品の切離しを抑制することができるストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
第１の案では中継装置を介して記憶装置に対する入出力処理を行うストレージ装置である。ストレージ装置は、入出力処理における記憶装置のエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定する。また、ストレージ装置は、累積値が閾値以上になったと判定した場合、記憶装置に対する入出力処理数が中継装置に搭載された他の記憶装置に対する入出力処理数と比較して偏りがあるか否かを判定する。続いて、ストレージ装置は、偏りがあると判定した場合、中継装置に対して接続状態が正常であるか否かを判定する。そして、ストレージ装置は、中継装置の接続状態が正常であると判定した場合に、記憶装置との接続を切離す。
【発明の効果】
【００１７】
一つの態様によれば、正常な部品の切離しを抑制することができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施例１に係るストレージ装置のハードウェア構成の一例を示す図である。
【図２】図２は、実施例１に係るストレージ装置により実行される制御プログラムの機能構成を示す機能ブロック図である。
【図３】図３は、統計加点テーブルが記憶する情報の一例を示す図である。
【図４】図４は、実施例１に係るストレージ装置による処理の処理手順を示すフローチャートである。
【図５】図５は、実施例１に係るストレージ装置による処理の処理手順を示すフローチャートである。
【図６】図６は、実施例１に係るストレージ装置による処理の処理手順を示すフローチャートである。
【図７】図７は、ストレージ装置制御プログラムを実行するコンピュータを示す図である。
【図８】図８は、従来技術に係るストレージ装置の構成の一例を示す図である。
【図９Ａ】図９Ａは、同一のエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の一例を示す図である。
【図９Ｂ】図９Ｂは、異なるエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の一例を示す図である。
【図１０Ａ】図１０Ａは、同一のエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の別例を示す図である。
【図１０Ｂ】図１０Ｂは、異なるエクスパンダに搭載されたディスクに生じたＩ／Ｏエラーの加点の別例を示す図である。
【発明を実施するための形態】
【００１９】
以下に、本願の開示するストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００２０】
実施例１では、図１から図６を用いて、ストレージ装置の構成、ストレージ装置により実行されるファームウェアにより実現される処理部の機能構成、処理手順、効果などについて説明する。
【００２１】
［ストレージ装置の構成］
図１は、実施例１に係るストレージ装置のハードウェア構成の一例を示す図である。図１に示すように、実施例１に係るストレージ装置１は、ＤＥ（Device  Enclosure）１００、２００と、ＣＭ（Controller  Module）３００とを有する。なお、ストレージ装置１が有するＤＥの数は図示に限定されるものではなく、任意に変更可能である。
【００２２】
ＤＥ１００は、ディスク１０１ａ〜１０１ｄと、エクスパンダモジュール１０２とを有する。ディスク１０１ａ〜１０１ｄは、例えばＨＤＤなどの記憶装置である。なお、ＤＥ１００が有するディスクの数は図示に限定されるものではなく、１以上のディスクを搭載していれば任意に変更可能である。
【００２３】
エクスパンダモジュール１０２は、ＳＡＳエクスパンダ１１０（以下、エクスパンダ１１０と記す）を有する。このエクスパンダ１１０は、ＳＡＳポート１１１〜１１６を有し、ＣＭ３００とディスク１０１ａ〜１０１ｄとの間、または、ＣＭ３００とＤＥ２００との間の入出力処理を制御する。
【００２４】
例えば、ＳＡＳポート１１１は、後述するＣＭ３００が有するＳＡＳポートと接続し、ＣＭ３００からの入出力処理を制御する。ＳＡＳポート１１２は、ＤＥ２００が有するＳＡＳポート２１１と接続し、ＤＥ２００への入出力処理を制御する。ＳＡＳポート１１３は、ディスク１０１ａと接続し、ディスク１０１ａへの入出力処理を制御する。ＳＡＳポート１１４は、ディスク１０１ｂと接続し、ディスク１０１ｂへの入出力処理を制御する。ＳＡＳポート１１５は、ディスク１０１ｃと接続し、ディスク１０１ｃへの入出力処理を制御する。ＳＡＳポート１１６は、ディスク１０１ｄと接続し、ディスク１０１ｄへの入出力処理を制御する。
【００２５】
ＤＥ２００は、ディスク２０１ａ〜２０１ｄと、エクスパンダモジュール２０２とを有する。ディスク２０１ａ〜２０１ｄは、例えばＨＤＤなどの記憶装置である。なお、ＤＥ２００が有するディスクの数は図示に限定されるものではなく、１以上のディスクを搭載していれば任意に変更可能である。
【００２６】
エクスパンダモジュール２０２は、ＳＡＳエクスパンダ２１０（以下、エクスパンダ２１０と記す）を有する。このエクスパンダ２１０は、ＳＡＳポート２１１〜２１６を有し、ＣＭ３００とディスク２０１ａ〜２０１ｄとの間の入出力処理を制御する。また、エクスパンダ２１０は、ＤＥ２００の下位にＤＥ４００が新たに接続された場合、ＣＭ３００とＤＥ４００との間の入出力処理を制御する。
【００２７】
例えば、ＳＡＳポート２１１は、ＤＥ１００が有するＳＡＳポート１１２と接続し、ＤＥ１００からの入出力処理を制御する。ＳＡＳポート２１２は、ＤＥ２００の下位にＤＥ４００が新たに接続された場合、このＤＥ４００が有するＳＡＳと接続し、ＤＥ４００への入出力処理を制御する。ＳＡＳポート２１３は、ディスク２０１ａと接続し、ディスク２０１ａへの入出力処理を制御する。ＳＡＳポート２１４は、ディスク２０１ｂと接続し、ディスク２０１ｂへの入出力処理を制御する。ＳＡＳポート２１５は、ディスク２０１ｃと接続し、ディスク２０１ｃへの入出力処理を制御する。ＳＡＳポート２１６は、ディスク２０１ｄと接続し、ディスク２０１ｄへの入出力処理を制御する。
【００２８】
ＣＭ３００は、Ｉ／Ｏコントローラ３０１を有し、図示しないサーバから受付けた入出力の処理の実行を制御する。このＩ／Ｏコントローラ３０１は、ＳＡＳコントローラ３１０とメモリ３２０とプロセッサ３３０とを有する。
【００２９】
ＳＡＳコントローラ３１０は、ＳＡＳポート３１１を有する。ＳＡＳポート３１１は、ＤＥ１００が有するＳＡＳポート１１１と接続する。
【００３０】
メモリ３２０は、例えばＲＡＭ（Random  Access  Memory）などの半導体メモリ素子である。メモリ３２０は、Ｉ／Ｏコントローラ３０１による処理に要するプログラムやデータを記憶する。また、メモリ３２０は、制御プログラム３２１を記憶する。
【００３１】
プロセッサ３３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路であり、Ｉ／Ｏコントローラ３０１による各種の演算や各種の処理を実行する。
【００３２】
また、プロセッサ３３０が、メモリ３２０から制御プログラム３２１を読み出して実行することで、ストレージ装置１は、以下の処理を実行する。すなわち、エクスパンダを介してディスクに対する入出力処理を行うストレージ装置１は、入出力処理におけるディスクのエラーの発生に応じて累積される累積値が所定の閾値に達したか否かを判定する。また、ストレージ装置１は、累積値が閾値以上になったと判定した場合、ディスクに対する入出力処理数がエクスパンダに搭載された他のディスクに対する入出力処理数と比較して偏りがあるか否かを判定する。続いて、ストレージ装置１は、偏りがあると判定した場合、エクスパンダに対して接続状態が正常であるか否かを判定する。そして、ストレージ装置１は、エクスパンダの接続状態が正常であると判定した場合に、ディスクとの接続を切離す。
【００３３】
［ファームウェアにより実現される処理部の機能構成］
次に、図２を用いて、実施例１に係るストレージ装置１により実行される制御プログラム３２１の機能構成を説明する。図２は、実施例１に係るストレージ装置により実行される制御プログラム３２１の機能構成を示す機能ブロック図である。なお、ストレージ装置１により実行される制御プログラム３２１は、メモリ３２０と、ＣＰＵ３３０とが協働して実現される。
【００３４】
図２に示すように、制御プログラム３２１は、統計加点テーブル５０１と、閾値判定部５０２と、偏り判定部５０３と、接続判定部５０４と、切離部５０５とを有する。
【００３５】
統計加点テーブル５０１は、Ｉ／Ｏアクセス先と、このＩ／Ｏアクセス先にエラーが発生した場合のデバイスに対する加点の累積値とを対応付けた情報を記憶する。図３を用いて、統計加点テーブル５０１が記憶する情報について説明する。
【００３６】
図３は、統計加点テーブルが記憶する情報の一例を示す図である。図３に示すように、統計加点テーブル５０１は、「Ｉ／Ｏアクセス先」と、「対象デバイス」とを対応付けた情報を記憶する。ここで、「Ｉ／Ｏアクセス先」は、Ｉ／Ｏを発行したディスクを示す。例えば、「Ｉ／Ｏアクセス先」には、「ディスク２０１ａ」、「ディスク２０１ｂ」、「ディスク１０１ｃ」などが格納される。なお、この「Ｉ／Ｏアクセス先」に格納される順序は、Ｉ／Ｏアクセスの発行順に対応するものとする。
【００３７】
「対象デバイス」は、Ｉ／Ｏアクセスにエラーは発生した場合、加点の対象となるデバイスを示す。例えば、「対象デバイス」には、「エクスパンダ１１０」と、「ディスク１０１ａ」と、「ディスク１０１ｂ」と、「ディスク１０１ｃ」と、「ディスク１０１ｄ」とが格納される。また、「対象デバイス」には、「エクスパンダ２１０」と、「ディスク２０１ａ」と、「ディスク２０１ｂ」と、「ディスク２０１ｃ」と、「ディスク２０１ｄ」とが格納される。
【００３８】
図３の例では、ディスク２０１ａに対して発行したＩ／Ｏアクセスにエラーが発生し、エクスパンダ１１０とエクスパンダ２１０とに５０点が加点された結果、点数の累積値が５０点となることを示す。また、ディスク２０１ａに６５点が加点された結果、点数の累積値が６５点となることを示す。なお、この統計加点テーブル５０１は、Ｉ／Ｏアクセスが発行されるごとに、後述する閾値判定部５０２により「Ｉ／Ｏアクセス先」が追加され、データが更新される。また、Ｉ／Ｏアクセスが正常に実行された場合、「対象デバイス」には加点されず、「Ｉ／Ｏアクセス先」のみが新たに追加される。
【００３９】
閾値判定部５０２は、１以上のディスクを搭載するエクスパンダを介して、いずれかのディスクに対して実行する入出力処理にエラーが発生するごとに、該ディスク及び該ディスクへの入出力処理の経路上に位置するエクスパンダに加点する。
【００４０】
例えば、閾値判定部５０２は、Ｉ／Ｏエラーが発生した場合、統計加点テーブル５０１が記憶する「対象デバイス」に該当するＩ／Ｏアクセスした各ディスクと、このディスクに至る経路上の全てのエクスパンダとに対応付けた点数に加点を行う。ここで、閾値判定部５０２は、エクスパンダへの１回の加点値（ＰＥＸＰ）を５０点、ディスクへの加点値（ＰＤＩＳＫ）を６５点とし、デバイスを異常部位に特定する点数の閾値を２５５点とする。
【００４１】
そして、閾値判定部５０２は、ディスクあるいはエクスパンダの点数の累積値が所定の閾値以上になったか否かを判定する。例えば、閾値判定部５０２は、ディスクに対応付けた点数に加点した累積値が所定の閾値である２５５点以上になったと判定した場合、入出力処理に偏りがあるか否かを判定する旨を偏り判定部５０３に通知する。
【００４２】
また、閾値判定部５０２は、エクスパンダに対応付けた点数の累積値が所定の閾値以上になったと判定した場合、異常であるエクスパンダを特定する旨を接続判定部５０４に通知する。
【００４３】
また、閾値判定部５０２は、ディスクあるいはエクスパンダのいずれに加点した累積値が所定の閾値以上になっていないと判定した場合、引き続き入出力処理にエラーが発生するごとに、ディスクとエクスパンダとに加点する。
【００４４】
偏り判定部５０３は、閾値判定部５０２によりいずれかのディスクに対応付けた点数に加点した累積値が閾値以上になったと判定された場合、入出力処理に偏りがあるか否かを判定する。
【００４５】
例えば、偏り判定部５０３は、２つ以上のディスクに対してＩ／Ｏが流れている場合、それぞれディスクへのＩ／Ｏの発行状況を判断し、最も多くＩ／Ｏが流れているディスクへのＩ／Ｏの発行数（ＩＯＭＡＸ）を算出する。また、偏り判定部５０３は、それ以外のディスクへのＩ／Ｏ発行数（ＩＯ０、ＩＯ１、・・・ＩＯＮ−１）を算出する。
【００４６】
偏り判定部５０３は、エクスパンダへの１回の加点値をＰＥＸＰ、ディスクへの加点値をＰＤＩＳＫとして、Ｉ／Ｏの発行比率が以下の式（１）の条件を満たす場合は、Ｉ／Ｏに偏りがあると判定する。
ＩＯＭＡＸ×（ＰＤＩＳＫ−ＰＥＸＰ）＞（ＩＯ０＋ＩＯ１＋・・・＋ＩＯＮ−１）×ＰＥＸＰ・・・式（１）
【００４７】
次に、式（１）の算出方法について説明する。Ｉ／Ｏ偏りによりエクスパンダ異常時にディスク切り離しと誤診断されてしまう可能性があるのは、エクスパンダの加点値よりディスクの加点値の方が上回る場合である。エクスパンダに異常がある場合、搭載されたすべてのディスクでエラーが発生するが、Ｉ／Ｏ発行数が多いものほどエラーが発生しやすい。したがって、最もＩ／Ｏ発行数の多いものが最初に切り離し対象となる。
【００４８】
Ｎ個のディスクのうち最もＩ／Ｏ発行数が多いディスクへのＩ／ＯをＩＯＭＡＸとし、残りのディスクへのＩ／ＯをＩＯ０〜ＩＯＮ−１とする。ディスク切り離しが誤検出される条件であるエクスパンダの加点値よりディスクの加点値の方が上回る場合の条件は、以下の式（２）で表される。
ＩＯＭＡＸ×ＰＤＩＳＫ＞ＩＯＭＡＸ×ＰＥＸＰ＋ＩＯ０×ＰＥＸＰ＋ＩＯ１×ＰＥＸＰ＋・・・＋ＩＯＮ−１×ＰＥＸＰ・・・式（２）
この式（２）を変形させると式（１）になる。
【００４９】
そして、偏り判定部５０３は、入出力処理に偏りがないと判定すれば、累積値が閾値以上になったディスクを異常デバイスに特定する。
【００５０】
また、偏り判定部５０３は、入出力処理に偏りがあると判定すれば、接続判定部５０４に閾値以上になったディスクを搭載するエクスパンダに対して接続状態が正常であるか否かを判定させる。ここで、偏り判定部５０３は、点数の累積値が閾値以上になったディスクを搭載するエクスパンダが正常である旨を接続判定部５０４から通知された場合、点数の累積値が閾値以上になったディスクを異常デバイスに特定する。
【００５１】
接続判定部５０４は、偏り判定部５０３により偏りがあると判定された場合、点数の累積値が閾値以上になったディスクを搭載するエクスパンダに対して接続状態が正常であるか否かを判定する。接続判定部５０４は、点数の累積値が閾値以上になったディスクを搭載するエクスパンダとの接続状態が正常であると判定した場合に、偏り判定部５０３に、点数の累積値が閾値以上になったディスクを搭載するエクスパンダが正常である旨を通知する。
【００５２】
また、接続判定部５０４は、点数の累積値が閾値以上になったディスクを搭載するエクスパンダとの接続状態が正常ではないと判定した場合、異常であるエクスパンダを特定する。また、接続判定部５０４は、閾値判定部５０２によりいずれかのエクスパンダが閾値以上になったと判定された場合に、異常であるエクスパンダを特定する。
【００５３】
接続判定部５０４による異常であるエクスパンダを特定する処理について説明する。例えば、接続判定部５０４は、点数の累積値が閾値以上になったディスクを搭載するエクスパンダ、あるいは点数の累積値が閾値以上になったエクスパンダを切離し候補に設定する。なお、接続判定部５０４は、点数の累積値が閾値以上になったエクスパンダが複数存在する場合、最下位のエクスパンダを切離し候補に設定する。
【００５４】
そして、接続判定部５０４は、切離し候補のエクスパンダまでの経路上の全てのエクスパンダにＩ／Ｏが発行されているか否かを判定する。ここで、接続判定部５０４は、全てのエクスパンダにＩ／Ｏが発行されている場合、切離し候補のエクスパンダを異常デバイスであると特定する。
【００５５】
続いて、接続判定部５０４は、全てのエクスパンダにＩ／Ｏが発行されていない場合、エクスパンダよりも上位に位置する全てのエクスパンダに対して接続状態が正常であるか否かを判定する。ここで、接続判定部５０４は、上位に位置する全てのエクスパンダに対して接続状態が正常であると判定した場合、切離し候補のエクスパンダを異常デバイスであると特定する。
【００５６】
また、接続判定部５０４は、上位に位置する全てのエクスパンダに対して接続状態が正常でないと判定した場合、接続状態が正常でないエクスパンダのうち、最上位に位置するエクスパンダを異常デバイスであると特定する。
【００５７】
切離部５０５は、偏り判定部５０３または接続判定部５０４により異常であると特定されたデバイスを切離す。例えば、切離部５０５は、接続判定部５０４により接続が正常でないと判定されたエクスパンダのうち、最も上位に位置するエクスパンダを切離す。
【００５８】
また、例えば、切離部５０５は、接続判定部５０４により閾値以上になったディスクを搭載するエクスパンダとの接続状態が正常であると判定された場合に、閾値以上になったディスクとの接続を切離す。また、切離部５０５は、偏り判定部５０３により入出力処理に偏りがないと判定された場合、閾値判定部５０２により、閾値以上になったと判定されたディスクを切離す。
【００５９】
［実施例１に係るストレージ装置による処理の処理手順］
次に図４から図６を用いて、実施例１に係るストレージ装置による処理の処理手順を説明する。図４から図６は、実施例１に係るストレージ装置による処理の処理手順を示すフローチャートである。
【００６０】
図４に示すように、閾値判定部５０２は、Ｉ／Ｏアクセスでエラーが発生したか否かを判定する（ステップＳ１０１）。ここで、閾値判定部５０２は、Ｉ／Ｏアクセスでエラーが発生したと判定した場合（ステップＳ１０１、Ｙｅｓ）、点数を加点する（ステップＳ１０２）。例えば、閾値判定部５０２は、Ｉ／Ｏアクセスのエラーが発生したディスクと、このディスクを搭載するエクスパンダと、このエクスパンダの上位に位置するエクスパンダとに所定の点数を加点する。
【００６１】
そして、閾値判定部５０２は、いずれかのエクスパンダの点数の累積値が閾値以上になったか否かを判定する（ステップＳ１０３）。ここで、閾値判定部５０２は、いずれかのエクスパンダの点数の累積値が閾値以上になったと判定した場合（ステップＳ１０３、Ｙｅｓ）、ステップＳ１１３へ移行する。
【００６２】
一方、閾値判定部５０２は、いずれのエクスパンダの点数の累積値も閾値以上になっていないと判定した場合（ステップＳ１０３、Ｎｏ）、いずれかのディスクの点数の累積値が閾値以上になったか否かを判定する（ステップＳ１０４）。そして、閾値判定部５０２は、いずれかのディスクの点数の累積値が閾値以上になったと判定した場合（ステップＳ１０４、Ｙｅｓ）、ステップＳ１０５へ移行する。一方、閾値判定部５０２は、いずれのディスクの点数の累積値も閾値以上になっていないと判定した場合（ステップＳ１０４、Ｎｏ）、ステップＳ１０１に移行する。
【００６３】
続いて、図５を用いて、ステップＳ１０５へ移行後の処理手順について説明する。偏り判定部５０３は、閾値以上になったディスクが搭載されたエクスパンダ内のすべてのディスクに対するＩ／Ｏ発行数を確認する（ステップＳ１０５）。そして、偏り判定部５０３は、２つ以上のディスクにＩ／Ｏが発行されているか否かを判定する（ステップＳ１０６）。
【００６４】
ここで、偏り判定部５０３は、２つ以上のディスクにＩ／Ｏが発行されていないと判定した場合（ステップＳ１０６、Ｎｏ）、ステップＳ１０９に移行する。一方、偏り判定部５０３は、２つ以上のディスクにＩ／Ｏが発行されていると判定した場合（ステップＳ１０６、Ｙｅｓ）、Ｉ／Ｏの偏りを算出する（ステップＳ１０７）。
【００６５】
そして、偏り判定部５０３は、Ｉ／Ｏに偏りがあるか否かを判定する（ステップＳ１０８）。ここで、偏り判定部５０３は、Ｉ／Ｏに偏りがないと判定した場合（ステップＳ１０８、Ｎｏ）、ステップＳ１１２に移行する。一方、偏り判定部５０３は、Ｉ／Ｏに偏りがあると判定した場合（ステップＳ１０８、Ｙｅｓ）、ステップＳ１０９に移行する。
【００６６】
ステップＳ１０９では、接続判定部５０４は、ディスクが搭載されたエクスパンダに対してリンクの接続状態を確認するコマンドを発行する（ステップＳ１０９）。そして、接続判定部５０４は、エクスパンダの接続を確認できないか否かを判定する（ステップＳ１１０）。
【００６７】
ここで、接続判定部５０４は、エクスパンダの接続を確認できないと判定した場合（ステップＳ１１０、Ｙｅｓ）、以下の処理を実行する。すなわち、接続判定部５０４は、エクスパンダの異常であると判定し、閾値以上になったディスクを搭載するエクスパンダを切離し候補に設定し（ステップＳ１１１）、ステップＳ１１６へ移行する。一方、接続判定部５０４は、エクスパンダの接続を確認できると判定した場合（ステップＳ１１０、Ｎｏ）、ステップＳ１１２に移行する。
【００６８】
ステップＳ１１２では、偏り判定部５０３は、点数が閾値以上になったディスクを異常デバイスに特定し（ステップＳ１１２）、ステップＳ１２２に移行する。
【００６９】
続いて、図６を用いて、ステップＳ１１３へ移行後の処理手順について説明する。接続判定部５０４は、閾値以上になったエクスパンダが複数存在するか否かを判定する（ステップＳ１１３）。接続判定部５０４は、閾値以上になったエクスパンダが複数存在すると判定した場合（ステップＳ１１３、Ｙｅｓ）、閾値以上になったエクスパンダのうち、最下位に位置するエクスパンダを切離し候補に設定し（ステップＳ１１４）、ステップＳ１１６に移行する。
【００７０】
一方、接続判定部５０４は、閾値以上になったエクスパンダが複数存在しないと判定した場合（ステップＳ１１３、Ｎｏ）、閾値以上になったエクスパンダを切離し候補に設定し（ステップＳ１１５）、ステップＳ１１６に移行する。
【００７１】
ステップＳ１１６では、接続判定部５０４は、切離し候補までの経路上の全てのエクスパンダにＩ／Ｏが発行されているか否かを判定する（ステップＳ１１６）。接続判定部５０４は、切離し候補までの経路上の全てのエクスパンダにＩ／Ｏが発行されていないと判定した場合（ステップＳ１１６、Ｎｏ）、以下の処理を実行する。すなわち、接続判定部５０４は、切離し候補より上位に位置するエクスパンダに対してリンクの接続状態を確認するコマンドを発行する（ステップＳ１１７）。
【００７２】
続いて、接続判定部５０４は、接続を確認できないエクスパンダが存在するか否かを判定する（ステップＳ１１８）。ここで、接続判定部５０４は、接続を確認できないエクスパンダが存在すると判定した場合（ステップＳ１１８、Ｙｅｓ）、リンクの接続を確認できないエクスパンダのうち最上位に位置するエクスパンダの異常であると判定する（ステップＳ１１９）。そして、接続判定部５０４は、リンクの接続を確認できないエクスパンダのうち最上位に位置するエクスパンダを異常デバイスに特定し（ステップＳ１２０）、ステップＳ１２２に移行する。
【００７３】
接続判定部５０４は、切離し候補までの経路上の全てのエクスパンダにＩ／Ｏが発行されていると判定した場合（ステップＳ１１６、Ｙｅｓ）、ステップＳ１２１に移行する。また、接続判定部５０４は、接続を確認できないエクスパンダが存在しないと判定した場合（ステップＳ１１８、Ｎｏ）、ステップＳ１２１に移行する。
【００７４】
ステップＳ１２１では、接続判定部５０４は、切離し候補を異常デバイスに特定し（ステップＳ１２１）、ステップＳ１２２に移行する。そして、ステップＳ１２２では、切離部５０５は、異常であると特定されたデバイスを切離す（ステップＳ１２２）。
【００７５】
［実施例１の効果］
上述してきたように、実施例１に係るストレージ装置１は、正常なデバイスの切離しを防止することができる。一例として、ストレージ装置１において、エクスパンダ１１０に異常がある場合を示す。なお、エクスパンダへの１回の加点値（ＰＥＸＰ）を５０点、ディスクへの加点値（ＰＤＩＳＫ）を６５点とし、デバイスを異常部位に特定する点数の閾値を２５５点とする。
【００７６】
ストレージ装置１は、ディスク２０１ａに繰り返しＩ／Ｏアクセスを行う場合、いずれのＩ／Ｏアクセスもエラーになる。そして、ディスク２０１ａに４度目にＩ／Ｏアクセスを失敗した場合、ディスク２０１ａの加点が閾値である２５５点を超える。
【００７７】
この場合、ストレージ装置１は、全てのディスクへのＩ／Ｏ発行数を確認し、Ｉ／Ｏアクセスがディスク２０１ａに偏っていると判定する。そして、ストレージ装置１は、ディスク２０１ａを搭載するエクスパンダ２１０との接続状態を確認し、エクスパンダの異常であるか否かを判定する。ここで、ストレージ装置１は、エクスパンダ２１０との接続状態を確認できなければ、異常であるエクスパンダの特定を行う。この結果、ストレージ装置１は、正常であるディスク２０１ａを切離すことを防止できる。
【００７８】
続いて、ストレージ装置１は、異常であるエクスパンダの特定を行う。例えば、ストレージ装置１は、エクスパンダ２１０より上位に位置するエクスパンダ１１０との接続状態を確認する。そして、ストレージ装置１は、エクスパンダ１１０との接続状態を確認できなければ、最上位に位置するエクスパンダである１１０を異常であると特定する。この結果、ストレージ装置１は、正常であるエクスパンダ２１０を切離すことを防止できる。
【実施例２】
【００７９】
ところで、本発明は、上述した実施例以外にも、種々の異なる形態にて実施されてよい。そこで、実施例２では、本発明に含まれる他の実施例について説明する。
【００８０】
（システム構成等）
本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、制御手順、具体的名称については、特記する場合を除いて任意に変更することができる。また、図示した統計加点テーブル５０１が記憶する情報は一例に過ぎず、必ずしも図示のごとく情報が格納される必要はない。
【００８１】
また、偏り判定部５０３は、式（１）において、ＩＯ０、ＩＯ１、・・・ＩＯＮ−１を簡略化して、最小値（ＩＯＭＩＮ）に置き換えた近似式を用いてＩ／Ｏの偏りを判定してもよい。例えば、この場合、偏り判定部５０３は、近似式として、以下の式（３）を用いる。
ＩＯＭＩＮ／ＩＯＭＡＸ＜ＰＤＩＳＫ−ＰＥＸＰ／ＰＥＸＰ（Ｎ−１）・・・式（３）
【００８２】
例えば、式（３）を用いて、偏り判定部５０３は、ＩＯＭＩＮ／ＩＯＭＡＸ＜が所定の閾値以下となる場合、Ｉ／Ｏに偏りがあると判定する。一例をあげると、ディスクの数が２である場合、偏り判定部５０３は、式（３）から閾値が３０％以下である場合に、Ｉ／Ｏに偏りがあると判定する。また、ディスクの数が４である場合、偏り判定部５０３は、式（３）から閾値が１０％以下である場合に、Ｉ／Ｏに偏りがあると判定する。
【００８３】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更してもよい。例えば、ストレージ装置が有するＤＥが１つであった場合、図４に示すステップＳ１０３において、閾値判定部５０２が、いずれかのエクスパンダの点数が閾値以上になったと判定した場合、ステップＳ１１３に移行せず、ステップＳ１２２に移行してもよい。
【００８４】
また、図示した各構成部は、機能概念的なものであり、必ずしも物理的に図示のごとく構成されていることを要しない。例えば、制御プログラム３２１では、偏り判定部５０３と接続判定部５０４とが統合されてもよい。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８５】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをストレージ装置が有するコンピュータで実行することによって実現することができる。そこで、以下では、図７を用いて、上記実施例と同様の機能を有するストレージ装置制御プログラムを実行するコンピュータの一例を説明する。図７は、ストレージ装置制御プログラムを実行するコンピュータを示す図である。
【００８６】
図７に示すように、コンピュータ７００は、ホストとのインターフェースであるＦＣ−ＣＡ７１０、ホストとのインターフェースであるｉＳＣＳＩ−ＣＡ７２０、ディスク装置とのインターフェースであるＳＡＳ７３０を有する。また、コンピュータ７００は、各種情報を一時記憶するＲＡＭ７４０、書き換え可能であり、電源を切ってもデータが消えない不揮発性のフラッシュメモリ７５０を有する。また、コンピュータ７００は、読み出し専用メモリであるＲＯＭ（Read  Only  Memory）７６０、各種演算処理を実行するＣＰＵ７７０を有する。また、コンピュータ７００が有する各部は、バス７８０で接続される。
【００８７】
そして、フラッシュメモリ７５０には、図２に示した統計加点テーブル５０１に対応する統計加点テーブル７５１が記憶される。また、ＲＯＭ７６０には、図２に示した閾値判定部５０２と偏り判定部５０３と接続判定部５０４と切離部５０５と同様の機能を有するストレージ装置制御プログラム７６１が記憶される。
【００８８】
そして、ＣＰＵ７７０は、フラッシュメモリ７５０から読み出した統計加点テーブル７５１を参照し、ＲＯＭ７６０から読み出したストレージ装置制御プログラム７６１をストレージ装置制御プロセス７７１として実行する。
【００８９】
なお、上記のストレージ装置制御プログラム７６１は、必ずしもＲＯＭ７６０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ７００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ７００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ７００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００９０】
１  ストレージ装置
１００、２００  ＤＥ
１０１ａ〜１０１ｄ、２０１ａ〜２０１ｄ  ディスク
１０２、２０２  エクスパンダモジュール
１１０、２１０  ＳＡＳエクスパンダ（エクスパンダ）
１１１〜１１６、２１１〜２１６、３１１  ＳＡＳポート
３００  ＣＭ
３０１  Ｉ／Ｏコントローラ
３１０  ＳＡＳコントローラ
３２０  メモリ
３２１  制御プログラム
３３０  プロセッサ
５０１  統計加点テーブル
５０２  閾値判定部
５０３  偏り判定部
５０４  接続判定部
５０５  切離部
７００  コンピュータ
７１０  ＦＣ−ＣＡ
７２０  ｉＳＣＳＩ−ＣＡ
７３０  ＳＡＳ
７４０  ＲＡＭ
７５０  フラッシュメモリ
７５１  統計加点テーブル
７６０  ＲＯＭ
７６１  ストレージ装置制御プログラム
７７０  ＣＰＵ
７７１  ストレージ装置制御プロセス
７８０  バス
【図１】
2013161235.tif 000003
【図２】
2013161235.tif 000004
【図３】
2013161235.tif 000005
【図４】
2013161235.tif 000006
【図５】
2013161235.tif 000007
【図６】
2013161235.tif 000008
【図７】
2013161235.tif 000009
【図８】
2013161235.tif 000010
【図９Ａ】
2013161235.tif 000011
【図９Ｂ】
2013161235.tif 000012
【図１０Ａ】
2013161235.tif 000013
【図１０Ｂ】
2013161235.tif 000014