(57)【要約】【課題】障害発生の回避処理の実行によるアクセス処理の実行遅延を抑制する。【解決手段】アクセス制御部１１は、磁気ディスク装置２０に対するコマンドを受け付けてコマンドキュー１４ｂに登録し、コマンドキュー１４ｂから取得したコマンドに基づいて磁気ディスク装置２０へのアクセス処理を実行する。アクセス状況記録部１２は、磁気ディスク装置２０に対するアクセス状況を管理情報１４ａに記録する。障害回避処理部１３は、管理情報１４ａに基づいて、磁気ディスク装置２０の磁気ヘッドが同一位置に留まることで生じる障害が発生し得ると判定したとき、コマンドキュー１４ｂを参照し、磁気ディスク装置２０において障害の発生が予測される予測領域と、コマンドキュー１４ｂに存在する実行待ちコマンドによる磁気ディスク装置２０に対するアクセス先とに基づいて、障害の発生を回避するための回避処理の実行タイミングを制御する。【選択図】図１
2019204567.tif 000002
【特許請求の範囲】
【請求項１】
磁気ディスク装置に対するアクセスを要求するコマンドを受け付けてコマンドキューに登録し、前記コマンドキューからコマンドを順に取得し、取得したコマンドに基づいて前記磁気ディスク装置に対するアクセス処理を実行するアクセス制御部と、
前記磁気ディスク装置に対するアクセス状況を管理情報に記録するアクセス状況記録部と、
前記管理情報に基づいて、前記磁気ディスク装置が備える磁気ヘッドが同一位置に留まることで生じる障害が発生し得ると判定したとき、前記コマンドキューを参照し、前記磁気ディスク装置において前記障害の発生が予測される予測領域と、前記コマンドキューに存在する実行待ちコマンドによる前記磁気ディスク装置に対するアクセス先とに基づいて、前記障害の発生を回避するための回避処理の実行タイミングを制御する障害回避処理部と、
を有するストレージ制御装置。
【請求項２】
前記障害回避処理部は、
前記障害が発生し得ると判定したとき、
前記予測領域をアクセス先とする実行待ちコマンドが前記コマンドキューに存在しない場合、前記コマンドキューに存在するすべての実行待ちコマンドに基づくアクセス処理を実行した後に前記回避処理が実行されるように制御し、
前記予測領域をアクセス先とする実行待ちコマンドが前記コマンドキューに存在する場合、当該実行待ちコマンドに基づくアクセス処理の実行前に前記回避処理が実行されるように制御する、
請求項１記載のストレージ制御装置。
【請求項３】
前記障害回避処理部は、前記障害が発生し得ると判定したとき、前記予測領域をアクセス先とする実行待ちコマンドが前記コマンドキューに存在する場合には、前記回避処理を実行するための回避コマンドを前記コマンドキューにおける当該実行待ちコマンドの直前に挿入し、
前記アクセス制御部は、前記コマンドキューから前記回避コマンドを取得すると、前記回避コマンドに基づいて前記回避処理を実行する、
請求項２記載のストレージ制御装置。
【請求項４】
前記アクセス状況記録部は、前記磁気ディスク装置に対するアクセス状況を一定の記録期間ごとに前記管理情報に記録し、
前記障害回避処理部は、直近の前記記録期間における前記磁気ディスク装置に対するアクセス量を示す第１の値と、当該記録期間の直前の前記記録期間における前記磁気ディスク装置に対するアクセス量を示す第２の値との差分に基づいて、前記障害が発生し得るかを判定する、
請求項１乃至３のいずれか１項に記載のストレージ制御装置。
【請求項５】
前記ストレージ制御装置には、前記磁気ディスク装置を含む複数の磁気ディスク装置を用いて生成され、前記複数の磁気ディスク装置がＲＡＩＤ（Redundant Array of Inexpensive Disks）によって制御されるＲＡＩＤグループが設定され、
前記アクセス状況記録部は、前記磁気ディスク装置に対するアクセス状況と、前記ＲＡＩＤグループに対するアクセス状況とを、一定の記録期間ごとに前記管理情報に記録し、
前記障害回避処理部は、
直近の前記記録期間における前記ＲＡＩＤグループに対するアクセス量を示す第１の値と、当該記録期間の直前の前記記録期間における前記ＲＡＩＤグループに対するアクセス量を示す第２の値との差分に基づいて、前記障害が発生し得るかの判定が必要かを判定し、
前記障害が発生し得るかの判定が必要と判定した場合、前記磁気ディスク装置に対するアクセス状況に基づいて前記磁気ディスク装置において前記障害が発生し得るかを判定する、
請求項１乃至３のいずれか１項に記載のストレージ制御装置。
【請求項６】
前記障害回避処理部は、前記磁気ディスク装置において前記障害が発生し得ると判定した場合、前記複数の磁気ディスク装置のすべてに対して同一の前記回避処理が実行されるように制御する、
請求項５記載のストレージ制御装置。
【請求項７】
前記障害回避処理部は、
前記磁気ディスク装置における特定の位置に対するアクセスが過密であることによって前記障害が発生し得ると判定したとき、前記回避処理として、前記磁気ディスク装置における前記特定の位置とは異なる位置にアクセスする処理が実行されるように制御し、
前記磁気ディスク装置に対するアクセスが閑散であることによって前記障害が発生し得ると判定したとき、前記回避処理として、前記磁気ヘッドを現在位置から別の位置に移動させる処理が実行されるように制御する、
請求項１乃至６のいずれか１項に記載のストレージ制御装置。
【請求項８】
コンピュータに、
磁気ディスク装置に対するアクセスを要求するコマンドを受け付けてコマンドキューに登録し、前記コマンドキューからコマンドを順に取得し、取得したコマンドに基づいて前記磁気ディスク装置に対するアクセス処理を実行するアクセス制御処理を実行し、
前記磁気ディスク装置に対するアクセス状況を管理情報に記録し、
前記管理情報に基づいて、前記磁気ディスク装置が備える磁気ヘッドが同一位置に留まることで生じる障害が発生し得ると判定したとき、前記コマンドキューを参照し、前記磁気ディスク装置において前記障害の発生が予測される予測領域と、前記コマンドキューに存在する実行待ちコマンドによる前記磁気ディスク装置に対するアクセス先とに基づいて、前記障害の発生を回避するための回避処理の実行タイミングを制御する、
処理を実行させるストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ制御装置およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
磁気ディスク装置では、記憶媒体である磁気ディスクに対し磁気ヘッドでデータを読み書きする。磁気ヘッドは、磁気ディスクの回転に伴う空気流により、磁気ディスク上を浮上する。磁気ディスク装置において、磁気ディスクに対し特定の箇所に集中してデータの読み書きが発生した場合や、全体的にデータの読み書き回数が少ない場合、磁気ヘッドが同一位置に留まる「定点浮上」と呼ばれる状態になる。磁気ヘッドが定点浮上状態になると、磁気ディスク表面の潤滑剤に偏りが生じて潤滑剤の轍が形成され、轍の凸部（突起部分）に磁気ヘッドが接触して磁気ヘッドを浮上させる動作が不安定になる「定点浮上障害」が発生する可能性が高くなる。
【０００３】
磁気ディスク装置における定点浮上障害の回避に関する技術の例として、次のような技術が提案されている。磁気ディスク装置において、磁気ヘッドが一定の位置で継続して浮上している時間を監視し、定位置浮上時間が所定の時間を越えたときに、アクチュエータによって磁気ヘッドの位置を移動する技術が提案されている。また、磁気ディスク装置において、磁気ヘッドを磁気ディスクの最外周トラックと最内周トラックとの間でシークさせて潤滑層の平滑化処理を実行する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−４７２０８号公報
【特許文献２】特開２００６−１３４３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、一般的に、記憶装置に対するアクセスを要求するためのコマンドは、一旦コマンドキューに蓄積される。そして、コマンドキューからコマンドが順次取り出され、取り出されたコマンドに基づいて記憶装置へのアクセス処理が行われる。
【０００６】
一方、磁気ディスク装置において定点浮上障害が発生し得ると判定したときに、障害の発生を回避するための処理を即座に実行することで、障害の発生を未然に防止できる。しかし、障害が発生し得ると判定された時点で、磁気ディスク装置へのアクセスを要求するための実行待ちコマンドがコマンドキューに存在する場合、障害発生の回避処理を先に実行してしまうと、実行待ちコマンドに基づくアクセス処理の実行が遅延する。そのため、アクセス要求が発生してからアクセス処理が完了するまでの時間が長くなり、アクセス要求からの応答性能が低下してしまう。
【０００７】
１つの側面では、本発明は、障害発生の回避処理の実行によるアクセス処理の実行遅延を抑制可能なストレージ制御装置およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、ストレージ制御装置が提供される。ストレージ制御装置は、アクセス制御部と、アクセス状況記録部と、障害回避処理部とを有する。アクセス制御部は、磁気ディスク装置に対するアクセスを要求するコマンドを受け付けてコマンドキューに登録し、コマンドキューからコマンドを順に取得し、取得したコマンドに基づいて磁気ディスク装置に対するアクセス処理を実行する。アクセス状況記録部は、磁気ディスク装置に対するアクセス状況を管理情報に記録する。障害回避処理部は、管理情報に基づいて、磁気ディスク装置が備える磁気ヘッドが同一位置に留まることで生じる障害が発生し得ると判定したとき、コマンドキューを参照し、磁気ディスク装置において障害の発生が予測される予測領域と、コマンドキューに存在する実行待ちコマンドによる磁気ディスク装置に対するアクセス先とに基づいて、障害の発生を回避するための回避処理の実行タイミングを制御する。
【０００９】
また、１つの態様では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、障害発生の回避処理の実行によるアクセス処理の実行遅延を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態のストレージシステムを示す図である。
【図３】ホストのハードウェア例を示す図である。
【図４】ＣＭのハードウェア例を示す図である。
【図５】ＣＭの機能例を示す図である。
【図６】ＨＤＤ使用状況管理テーブルの例を示す図である。
【図７】ＲＡＩＤ使用状況管理テーブルの例を示す図である。
【図８】ＬＢＡ情報管理テーブルの例を示す図である。
【図９】初期設定処理の例を示すフローチャートである。
【図１０】Ｉ／Ｏ受け付け処理の例を示すフローチャートである。
【図１１】ディスクアクセス処理の例を示すフローチャートである。
【図１２】定点浮上障害回避処理の例を示すフローチャート（その１）である。
【図１３】定点浮上障害回避処理の例を示すフローチャート（その２）である。
【図１４】定点浮上障害回避処理の例を示すフローチャート（その３）である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。
【００１３】
図１に示す情報処理システムは、ストレージ制御装置１０と磁気ディスク装置２０とを含む。ストレージ制御装置１０は、磁気ディスク装置２０に対するアクセスを制御する制御装置である。磁気ディスク装置２０は、少なくとも１枚の磁気ディスク媒体を備え、磁気ディスク媒体の記録面に対して磁気ヘッドからデータを記録する。
【００１４】
ストレージ制御装置１０は、アクセス制御部１１、アクセス状況記録部１２および障害回避処理部１３を有する。アクセス制御部１１、アクセス状況記録部１２および障害回避処理部１３の処理は、例えば、ストレージ制御装置１０が備える図示しないプロセッサがプログラムを実行することで実現される。また、ストレージ制御装置１０は、記憶部１４を有してもよい。記憶部１４は、例えば、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、またはＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置によって実現される。
【００１５】
記憶部１４には、管理情報１４ａとコマンドキュー１４ｂが記憶される。管理情報１４ａには、磁気ディスク装置２０に対するアクセス状況を示す情報が記録される。コマンドキュー１４ｂは、アクセス制御部１１に処理を実行させるコマンドが一時的に格納される。
【００１６】
アクセス制御部１１は、磁気ディスク装置２０に対するアクセスを要求するコマンドを受け付けて、コマンドキュー１４ｂに登録する。本実施の形態では例として、ストレージ制御装置１０には情報処理装置３０が接続されており、磁気ディスク装置２０に対するアクセスを要求するコマンドは、情報処理装置３０から発行される。なお、このようなコマンドは、ストレージ制御装置１０の内部で実行される処理によって発行されてもよい。アクセス制御部１１は、コマンドキュー１４ｂからコマンドを順に取得し、取得したコマンドに基づいて磁気ディスク装置２０に対するアクセス処理を実行する。
【００１７】
アクセス状況記録部１２は、磁気ディスク装置２０に対するアクセス状況を管理情報１４ａに記録する。例えば、アクセス状況記録部１２は、磁気ディスク装置２０に対する一定時間ごとのアクセス数あるいはアクセスデータ量を、磁気ディスク装置２０の磁気ディスク上の記録面に複数設定された領域ごとに、管理情報１４ａに記録する。
【００１８】
障害回避処理部１３は、管理情報１４ａに基づいて、定点浮上障害が発生し得るかを判定する。定点浮上障害とは、磁気ディスク装置２０が備える磁気ヘッドが同一位置に留まることで生じる障害である。障害回避処理部１３は、定点浮上障害が発生し得ると判定した場合、コマンドキュー１４ｂを参照する。そして、障害回避処理部１３は、磁気ディスク装置２０において定点浮上障害の発生が予測される予測領域と、コマンドキュー１４ｂに存在する実行待ちコマンドによる磁気ディスク装置２０に対するアクセス先とに基づいて、定点浮上障害の発生を回避するための回避処理の実行タイミングを制御する。
【００１９】
この実行タイミングの制御により、回避処理によって定点浮上障害の発生確率を低減させながら、アクセス制御部１１が情報処理装置３０から受け付けたコマンドに基づく磁気ディスク装置２０へのアクセス処理の実行遅延を抑制できる。その結果、コマンドの発行によるアクセス要求からの応答性能の低下を抑制できる。
【００２０】
例えば、図１に示すように、アクセス制御部１１が情報処理装置３０からコマンドＡ，Ｂ，Ｃ，・・・，Ｎを順に受信して、コマンドキュー１４ｂに登録したとする。そして、これらのコマンドＡ，Ｂ，Ｃ，・・・，Ｎに基づくアクセス処理が実行されていない状態（すなわち、コマンドＡ，Ｂ，Ｃ，・・・，Ｎが実行待ちの状態）で、障害回避処理部１３が、定点浮上障害が発生し得ると判定したとする。
【００２１】
第１の例として、実行待ちのコマンドＡ，Ｂ，Ｃ，・・・，Ｎのうち、コマンドＣによる磁気ディスク２０へのアクセス先が、定点浮上障害の発生が予測される予測領域と一致したとする。この場合、障害回避処理部１３は、コマンドＣに基づくアクセス処理の実行前に定点浮上障害の回避処理が実行されるように制御する。例えば、障害回避処理部１３は、回避処理を実行するための新たな回避コマンド１５を生成し、コマンドキュー１４ｂにおけるコマンドＣの直前（すなわち、コマンドＢとコマンドＣとの間）に挿入する。この場合、アクセス制御部１１は、コマンドＣより前に回避コマンド１５をコマンドキュー１４ｂから取得し、取得した回避コマンド１５に基づいて回避処理を実行する。
【００２２】
この第１の例では、定点浮上障害が発生し得る領域へアクセスする、コマンドＣに基づくアクセス処理の実行前に、回避処理が実行される。これにより、コマンドＣに基づくアクセス処理の実行時に定点浮上障害が発生する可能性を低減でき、アクセスの信頼性が向上する。
【００２３】
一方、第２の例として、実行待ちのコマンドＡ，Ｂ，Ｃ，・・・，Ｎの中に、定点浮上障害の発生が予測される予測領域をアクセス先とするコマンドが存在しなかったとする。この場合、障害回避処理部１３は、少なくとも現在の実行待ちのコマンドＡ，Ｂ，Ｃ，・・・，Ｎに基づくアクセス処理を実行した後に、定点浮上障害の回避処理が実行されるように制御する。例えば、障害回避処理部１３は、回避処理を実行するための新たな回避コマンド１５を、コマンドキュー１４ｂの末尾に登録する。
【００２４】
この第２の例では、回避処理を実行せずに、実行待ちのコマンドＡ，Ｂ，Ｃ，・・・，Ｎに基づくアクセス処理を実行したとしても、定点浮上障害が発生する可能性は小さい。このため、コマンドＡ，Ｂ，Ｃ，・・・，Ｎに基づくアクセス処理が、回避処理より優先して実行される。これにより、コマンドＡ，Ｂ，Ｃ，・・・，Ｎに基づくアクセス処理の実行前に回避処理を実行する場合と比較して、これらのアクセス処理の実行遅延を抑制できる。その結果、コマンドＡ，Ｂ，Ｃ，・・・，Ｎの発行から（すなわち、これらの発行によるアクセスの要求時から）の応答性能の低下を抑制できる。
【００２５】
このように、本実施の形態のストレージ制御装置１０によれば、定点浮上障害発生の回避処理の実行によるアクセス処理の実行遅延を抑制できる。
［第２の実施の形態］
次に、第２の実施の形態として、図１の情報処理システムの例としてストレージシステムを適用した場合について説明する。
【００２６】
図２は、第２の実施の形態のストレージシステムを示す図である。図２に示すストレージシステムは、ホスト１００、ストレージ装置２００、およびネットワーク３００を含む。
【００２７】
ホスト１００とストレージ装置２００とは、ネットワーク３００を介して接続される。ネットワーク３００は、例えば、ストレージエリアネットワーク（ＳＡＮ：Storage Area Network）や、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）ネットワーク等である。
【００２８】
ホスト１００は、ユーザに対して所定のサービスを提供する装置である。ホスト１００は、サービス提供のための処理の実行に伴い、ストレージ装置から提供される記憶領域にアクセスする。この記憶領域は、例えば、論理記憶領域（論理ボリューム）として提供される。
【００２９】
ストレージ装置２００は、ＣＭ（Controller Module）２１０およびドライブ部２５０を有する。
ＣＭ２１０は、ストレージ装置２００全体を制御する。ＣＭ２１０は、ドライブ部２５０に搭載された記憶装置の記憶領域を用いて論理記憶領域を作成し、ホスト１００からの要求に応じて論理記憶領域へのアクセスを制御する。また、ＣＭ２１０は、ドライブ部２５０に搭載されたＨＤＤの定点浮上障害を事前に判定するための情報を格納し、定点浮上障害を回避する処理を実行する。
【００３０】
ドライブ部２５０は、複数の記憶装置を搭載する。ドライブ部２５０は、記憶装置としてＨＤＤ２５１ａ，２５１ｂ，２５１ｃ，・・・を備えたディスクアレイ装置である。なお、ドライブ部２５０には、ＨＤＤ２５１ａ，２５１ｂ，２５１ｃ，・・・に加えてＳＳＤ（Solid State Drive）などの他の種類の記憶装置が搭載されていてもよい。
【００３１】
なお、ストレージシステムに含まれるホスト１００の台数は、１台に限定されるものではない。また、ストレージシステムに含まれるストレージ装置２００の台数も、１台に限定されるものではない。
【００３２】
次に、ホストのハードウェアについて、説明する。
図３は、ホストのハードウェア例を示す図である。ホスト１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６および通信インタフェース１０７を有する。各ユニットがホスト１００のバス１０８に接続されている。
【００３３】
プロセッサ１０１は、ホスト１００全体を制御する。プロセッサ１０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field Programmable Gate Array）などである。また、プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３４】
ＲＡＭ１０２は、ホスト１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３５】
ＨＤＤ１０３は、ホスト１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。ホスト１００は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３６】
グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、ホスト１００に接続された表示装置１０４ａに画像を出力する。表示装置１０４ａとしては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（Electro-Luminescence）ディスプレイなど各種のディスプレイを用いることができる。
【００３７】
入力インタフェース１０５は、ホスト１００に接続された入力装置１０５ａから入力信号を取得し、プロセッサ１０１に出力する。入力装置１０５ａとしては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。ホスト１００には、複数の種類の入力装置が接続されてもよい。
【００３８】
読み取り装置１０６は、可搬型記録媒体１０６ａに格納されたプログラムやデータを読み取る装置である。読み取り装置１０６は、例えば、プロセッサ１０１からの命令に従って、可搬型記録媒体１０６ａから読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３９】
通信インタフェース１０７は、ネットワーク３００を介してストレージ装置２００と通信するためのインタフェースである。
次に、ＣＭ２１０のハードウェアについて、説明する。
【００４０】
図４は、ＣＭのハードウェア例を示す図である。ＣＭ２１０は、プロセッサ２１１、ＲＡＭ２１２、ＳＳＤ２１３、ＣＡ（Channel Adapter）２１４およびＤＩ（Device Interface）２１５を有する。
【００４１】
プロセッサ２１１は、ＣＭ２１０の情報処理を制御する。プロセッサ２１１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
ＲＡＭ２１２は、ＣＭ２１０の主記憶装置である。ＲＡＭ２１２は、プロセッサ２１１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ２１２は、プロセッサ２１１による処理に用いる各種データを記憶する。
【００４２】
ＳＳＤ２１３は、ＣＭ２１０の補助記憶装置である。ＳＳＤ２１３は、不揮発性の半導体メモリである。ＳＳＤ２１３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ＣＭ２１０は、補助記憶装置として、ＳＳＤ２１３の代わりにＨＤＤを備えていてもよい。
【００４３】
ＣＡ２１４は、ホスト１００と通信するためのインタフェースである。ＤＩ２１５は、ドライブ部２５０と通信するためのインタフェースである。
ところで、ＣＭ２１０は、ドライブ部２５０に搭載されたＨＤＤへのアクセスに関する情報を収集し、収集した情報に基づきＨＤＤにおいて定点浮上障害が発生する可能性が高くなる状態を、障害発生の前に検出する。ＣＭ２１０は、収集した情報に基づき定点浮上障害を回避する処理を実行する。また、ＣＭ２１０は、ホスト１００から受信したコマンドをコマンドキューで管理し、コマンドキューの状態に応じて定点浮上障害を回避する処理の実行タイミングを制御する。
【００４４】
次に、ＣＭ２１０が有する機能について説明する。
図５は、ＣＭの機能例を示す図である。
ＣＭ２１０は、アクセス制御部２２０、記憶部２２１、情報収集部２２２および障害回避処理部２２３を有する。
【００４５】
アクセス制御部２２０、情報収集部２２２および障害回避処理部２２３の処理は、プロセッサ２１１が所定のプログラムを実行することによって実現される。また、記憶部２２１は、例えば、ＲＡＭ２１２またはＳＳＤ２１３に確保した記憶領域として実装される。記憶部２２１は、ＨＤＤ使用状況管理テーブル２２１ａ、ＲＡＩＤ使用状況管理テーブル２２１ｂ、ＬＢＡ情報管理テーブル２２１ｃ、ログファイル２２１ｄおよびコマンドキュー２２１ｅを記憶する。
【００４６】
アクセス制御部２２０は、ドライブ部２５０に搭載されたＨＤＤの記憶領域を用いて論理記憶領域を作成する。また、アクセス制御部２２０は、ドライブ部２５０に搭載された複数のＨＤＤを用いてＲＡＩＤ（Redundant Array of Inexpensive Disks）グループを作成する。アクセス制御部２２０は、ＲＡＩＤグループに属する複数のＨＤＤを用いたデータの読み書きを、所定のＲＡＩＤレベルを用いて制御する。ホスト１００からのアクセス対象となる論理記憶領域は、いずれかのＲＡＩＤグループに割り当てられる。
【００４７】
アクセス制御部２２０は、ホスト１００から論理記憶領域に対するアクセスを命令するコマンドを受信すると、論理記憶領域に割り当てられたＲＡＩＤグループを判別する。アクセス制御部２２０は、判別したＲＡＩＤグループに属するドライブ部２５０内の記憶装置にアクセスすることで、命令に応じたアクセス制御を実行する。また、アクセス制御部２２０は、受信したコマンドに応じたアクセス処理の履歴情報をログファイル２２１ｄに登録する。
【００４８】
情報収集部２２２は、ＨＤＤ内の磁気ディスクの記録面に対するアクセス状況に関する情報やＲＡＩＤグループごとのアクセス状況をログファイル２２１ｄから定期的に収集し、記憶部２２１に記憶する。前者のアクセス状況はＨＤＤ使用状況管理テーブル２２１ａに記録され、後者のアクセス状況はＲＡＩＤ使用状況管理テーブル２２１ｂに記録される。
【００４９】
障害回避処理部２２３は、ＨＤＤ使用状況管理テーブル２２１ａおよびＲＡＩＤ使用状況管理テーブル２２１ｂを参照して、定点浮上障害が発生する可能性の高いＨＤＤを判別する。障害回避処理部２２３は、判別されたＨＤＤに、定点浮上障害の発生を回避するための動作を実行させる。
【００５０】
ＨＤＤ使用状況管理テーブル２２１ａには、ＲＡＩＤグループに属する各ＨＤＤに対するアクセス状況を示す情報が登録される。後述するように、ＨＤＤ使用状況管理テーブル２２１ａには、ＨＤＤ内の各磁気ディスクのシリンダごとに、アクセス状況を示す情報が登録される。ＨＤＤ使用状況管理テーブル２２１ａには、情報収集部２２２がＨＤＤについて一定時間ごとにログファイル２２１ｄから抽出および集計した情報が登録される。
【００５１】
ＲＡＩＤ使用状況管理テーブル２２１ｂには、ＲＡＩＤグループに対するアクセス状況を示す情報が登録される。ＲＡＩＤ使用状況管理テーブル２２１ｂには、情報収集部２２２がＲＡＩＤについて一定時間ごとにログファイル２２１ｄから抽出および集計した情報が登録される。
【００５２】
ＬＢＡ情報管理テーブル２２１ｃには、コマンドキュー２２１ｅに登録された各コマンドについて、ホスト１００から指定されたアクセス先の論理アドレス（ＬＢＡ：Logical Block Address）が登録される。さらに、ＬＢＡ情報管理テーブル２２１ｃには、論理アドレスに基づくアクセス先ＨＤＤの識別情報、ＨＤＤにおけるアクセス先の物理アドレス、ＨＤＤの磁気ディスクにおけるアクセス先を示す情報（ヘッド番号、シリンダ番号、セクタ番号）が登録される。ＬＢＡ情報管理テーブル２２１ｃには、情報収集部２２２がホスト１００から受信したコマンドについてログファイル２２１ｄから抽出および集計した情報が登録される。また、ＬＢＡ情報管理テーブル２２１ｃには、定点浮上障害を回避するためのコマンド（後述するダミーライトコマンド）についての情報も登録される。
【００５３】
ログファイル２２１ｄには、アクセス制御部２２０がホスト１００から受信したコマンドに基づくアクセス処理の履歴情報が登録される。ログファイル２２１ｄには、コマンドの種別（リード／ライト）、コマンド受付日時、コマンドで指定されたアクセス先アドレス等が履歴情報として登録される。
【００５４】
コマンドキュー２２１ｅは、ストレージ装置２００が実行するコマンドを一時的に保持するためのＦＩＦＯ（First In First Out）方式の待ち行列（キュー）である。コマンドキュー２２１ｅは、ＲＡＩＤグループごとに作成され、記憶部２２１に記憶される。アクセス制御部２２０は、ホスト１００からコマンドを受信すると、コマンドに基づくアクセス先の論理記憶領域が割り当てられているＲＡＩＤグループを特定する。アクセス制御部２２０は、特定したＲＡＩＤグループに対応するコマンドキュー２２１ｅに、受信したコマンドキューイングする。そして、アクセス制御部２２０は、コマンドキュー２２１ｅからコマンドを順番に取り出し、取り出したコマンドに基づくＨＤＤへのアクセス処理を実行する。また、アクセス制御部２２０は、定点浮上障害を回避するためのコマンドをコマンドキュー２２１ｅにキューイングすることもできる。このとき、アクセス制御部２２０は、障害回避のためのコマンドをコマンドキュー２２１ｅの末尾に登録するだけでなく、コマンドキュー２２１ｅ内の任意の位置に挿入することもできる。
【００５５】
次に、ＨＤＤ使用状況管理テーブル２２１ａについて図６を用いて説明する。図６は、ＨＤＤ使用状況管理テーブルの例を示す図である。
ＨＤＤ使用状況管理テーブル２２１ａは、記憶部２２１に格納される。ＨＤＤ使用状況管理テーブル２２１ａは、ディスクスロット番号、採取日時、アクセス数の項目を含む。また、ＨＤＤ使用状況管理テーブル２２１ａは、さらに、ヘッド番号とシリンダ番号とで識別される、磁気ディスクの記録面のシリンダごとの項目を含む。
【００５６】
ディスクスロット番号の項目には、ＲＡＩＤグループに属するＨＤＤを搭載するスロットを識別する番号が登録される。ここでは、１つのスロットに１台のＨＤＤが対応するものとし、ドライブ部２５０に搭載されたＨＤＤそれぞれが、ディスクスロット番号によって識別されるものとする。
【００５７】
採取日時の項目には、ログファイル２２１ｄから情報を抽出した日時が登録される。ログファイル２２１ｄには、コマンド受信ごとに履歴情報が記録されるが、ＨＤＤ使用状況管理テーブル２２１ａには、一定時間ごとにログファイル２２１ｄから情報を抽出および集計した情報が記録される。これにより、ＨＤＤ使用状況管理テーブル２２１ａには、一定の情報採取期間ごとの集計情報が記録される。なお、情報採取期間は、例えば、１週間である。
【００５８】
例えば、ディスクスロット番号「００００」で識別されるＨＤＤについて、最新の採取日時が「２０１７／８／１  ０：００」であり、前回の採取日時が「２０１７／７／２６  ０：００」である。このため、採取日時「２０１７年８月１日０時」に採取したデータは、「２０１７年７月２６日０時」以降であり「２０１７年８月１日０時」までの間にログファイル２２１ｄに蓄積されたデータとなる。
【００５９】
アクセス数の項目には、ライト数、リード数、シーク数の項目が含まれる。アクセス数の各項目の単位は、例えば、秒であるものとする。
ライト数の項目には、情報採取期間ごとに、ディスクスロット番号、ヘッド番号およびシリンダ番号で特定されるシリンダごとに、各シリンダを書き込み先としたライト命令のＣＭ２１０からの発行数が登録される。
【００６０】
リード数の項目には、情報採取期間ごとに、ディスクスロット番号、ヘッド番号およびシリンダ番号で特定されるシリンダごとに、各シリンダを読み出し元としたリード命令のＣＭ２１０からの発行数が登録される。
【００６１】
シーク数の項目には、情報採取期間ごとに、ディスクスロット番号、ヘッド番号およびシリンダ番号で特定されるシリンダごとに、各シリンダをシーク先としたシーク命令のＣＭ２１０からの発行数が登録される。
【００６２】
例えば、ＨＤＤ使用状況管理テーブル２２１ａには、ディスクスロット番号「００００」、採取日時が「２０１７／８／１  ０：００」、ライト数に対応するヘッド番号「０」、シリンダ番号「０」について「１，０００」という情報が登録される。これは、ディスクスロット番号「００００」で特定されるＨＤＤにおける、ヘッド番号「０」、シリンダ番号「０」で特定されるシリンダに対して、採取日時「２０１７年８月１日０時」を終端とする情報採取期間にライト命令が１０００回発行されたことを示す。
【００６３】
このように、ＨＤＤ使用状況管理テーブル２２１ａには、一定の情報採取期間におけるＨＤＤのシリンダごとのアクセス量が、ライト、リード、シークのそれぞれについて命令発行数として登録される。なお、シリンダごとのアクセス量は、例えば、ＨＤＤにおいてライト命令、リード命令、シーク命令に基づくアクセス処理にかかった時間の累計値として登録されてもよい。
【００６４】
次に、ＲＡＩＤ使用状況管理テーブル２２１ｂについて図７を用いて説明する。図７は、ＲＡＩＤ使用状況管理テーブルの例を示す図である。
ＲＡＩＤ使用状況管理テーブル２２１ｂは、記憶部２２１に格納される。ＲＡＩＤ使用状況管理テーブル２２１ｂは、ＲＡＩＤ番号、ＲＡＩＤレベル、ディスクスロット番号（メンバＨＤＤ）、採取日時、リード受付総数、リード受付数、ライト受付総数、ライト受付数、最新コマンド受付日時の項目を含む。
【００６５】
ＲＡＩＤ番号の項目には、作成されたＲＡＩＤグループを識別する番号（ＲＡＩＤ番号）が登録される。
ＲＡＩＤレベルの項目には、ＲＡＩＤグループに対して設定されたＲＡＩＤレベル（ＲＡＩＤ１〜ＲＡＩＤ６）が登録される。
【００６６】
ディスクスロット番号（メンバＨＤＤ）の項目には、ＲＡＩＤ番号で特定されるＲＡＩＤグループに属するＨＤＤ（メンバＨＤＤ）を特定するディスクスロット番号が登録される。
【００６７】
採取日時の項目には、ログファイル２２１ｄから情報を抽出した日時が登録される。
リード受付総数の項目には、ホスト１００から受信したリードコマンドのうち、対応するＲＡＩＤグループがアクセス先となるリードコマンドの総数（累計値）が登録される。
【００６８】
リード受付数の項目には、前回の採取日時から今回の採取日時までの間（情報採取期間）にホスト１００から受信した、対応するＲＡＩＤグループがアクセス先となるリードコマンドの総数が登録される。
【００６９】
ライト受付総数の項目には、ホスト１００から受信したライトコマンドのうち、対応するＲＡＩＤグループがアクセス先となるライトコマンドの総数（累計）が登録される。
ライト受付数の項目には、前回の採取日時から今回の採取日時までの間（情報採取期間）にホスト１００から受信した、対応するＲＡＩＤグループがアクセス先となるライトコマンドの総数が登録される。
【００７０】
最新コマンド受付日時の項目には、対応するＲＡＩＤグループがアクセス先となるコマンドをホスト１００から受信した最新の日時が登録される。
次に、ＬＢＡ情報管理テーブル２２１ｃについて図８を用いて説明する。図８は、ＬＢＡ情報管理テーブルの例を示す図である。
【００７１】
ＬＢＡ情報管理テーブル２２１ｃは、記憶部２２１に格納される。ＬＢＡ情報管理テーブル２２１ｃは、受付コマンド番号、発行先ＲＡＩＤ番号、発行先論理アドレス、発行先ディスクスロット番号、発行先物理アドレス、発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号の項目を含む。
【００７２】
受付コマンド番号の項目には、コマンドキュー２２１ｅに登録されているコマンド（すなわち、実行待ちのコマンド）を識別する番号（受付コマンド番号）が登録される。発行先ＲＡＩＤ番号の項目には、コマンドによるアクセス先の論理記憶領域が割り当てられているＲＡＩＤグループを識別する番号（発行先ＲＡＩＤ番号）が登録される。発行先論理アドレスの項目には、コマンドにおいて指定されたアクセス先の論理アドレスが登録される。
【００７３】
発行先ディスクスロット番号の項目には、コマンドに基づいてアクセスが行われるＨＤＤを識別する番号（発行先ディスクスロット番号）が登録される。ＲＡＩＤグループには複数のＨＤＤが属する場合があるので、発行先ディスクスロット番号の項目には、１つの発行先論理アドレスに対して複数のディスクスロット番号が登録され得る。発行先物理アドレスの項目には、ＨＤＤにおけるアクセス先の物理アドレスが登録される。発行先ヘッド番号の項目には、ＨＤＤにおけるアクセス先のヘッド番号が登録される。発行先シリンダ番号の項目には、ＨＤＤにおけるアクセス先のシリンダ番号が登録される。発行先セクタ番号の項目には、ＨＤＤにおけるアクセス先のセクタ番号が登録される。
【００７４】
例えば、ＬＢＡ情報管理テーブル２２１ｃには、受付コマンド番号が「００００」、発行先ＲＡＩＤ番号が「００００」、発行先論理アドレスが「０ｘ０００１０００」、発行先ディスクスロット番号が「００００」という情報が登録される。また、発行先物理アドレスが「０ｘ００３ｆｆ」、発行先ヘッド番号が「３」、発行先シリンダ番号が「２００」、発行先セクタ番号が「４００」という情報が登録される。
【００７５】
これは、受付コマンド番号「００００」で特定されるコマンドの発行先論理アドレス「０ｘ０００１０００」に基づいて、ＲＡＩＤ番号「００００」で特定されるＲＡＩＤグループがアクセス先とされることを示す。また、このコマンドに基づいて、発行先ディスクスロット番号「００００」で特定されるＨＤＤの、発行先物理アドレス「０ｘ００３ｆｆ」で特定されるアドレスに対してアクセスが行われることを示す。さらに、このコマンドに基づいて、発行先ディスクスロット番号「００００」で特定されるＨＤＤの、発行先ヘッド番号「３」、発行先シリンダ番号「２００」、発行先セクタ番号「４００」で特定される記録面上の領域に、アクセスが行われることを示す。
【００７６】
次に、ストレージ装置２００の処理についてフローチャートを用いて説明する。
図９は、初期設定処理の例を示すフローチャートである。図９の処理は、ＣＭ２１０がドライブ部２５０にＨＤＤを搭載されたことを認識することで開始される。以下、図９に示す処理をステップ番号に沿って説明する。
【００７７】
［ステップＳ１１］ストレージ装置２００のアクセス制御部２２０は、ドライブ部２５０に搭載された新規のＨＤＤを認識する。
［ステップＳ１２］アクセス制御部２２０は、ＨＤＤが搭載された位置を示す（ＨＤＤを識別する番号を示す）ディスクスロット番号、搭載されたＨＤＤのヘッド番号、シリンダ番号およびセクタ番号を、ＨＤＤ使用状況管理テーブル２２１ａに登録する。
【００７８】
［ステップＳ１３］アクセス制御部２２０は、認識されたＨＤＤが属するＲＡＩＤグループを識別するＲＡＩＤ番号、ＲＡＩＤレベル、および各ＨＤＤを識別するディスクスロット番号を、ＲＡＩＤ使用状況管理テーブル２２１ｂに登録する。
【００７９】
図１０は、Ｉ／Ｏ受け付け処理の例を示すフローチャートである。図１０の処理は、ＣＭ２１０がホスト１００から論理記憶領域にアクセスするためのコマンドを受信することで開始される。以下、図１０に示す処理をステップ番号に沿って説明する。
【００８０】
［ステップＳ２１］ストレージ装置２００のアクセス制御部２２０は、ホスト１００からコマンドを受信する。
［ステップＳ２２］アクセス制御部２２０は、受信したコマンドにおいて指定された論理記憶領域が割り当てられたＲＡＩＤグループを特定する。アクセス制御部２２０は、受信したコマンドを、特定したＲＡＩＤグループに対応するコマンドキュー２２１ｅの末尾に登録する。
【００８１】
［ステップＳ２３］アクセス制御部２２０は、受信したコマンドに対応するレコードをＬＢＡ情報管理テーブル２２１ｃに追加する。アクセス制御部２２０は、追加したレコードに対して、受付コマンド番号、発行先ＲＡＩＤ番号、発行先論理アドレス、発行先ディスクスロット番号、発行先物理アドレス、発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号の各情報を登録する。これらの情報は、受信したコマンドにおいて指定された論理記憶領域の識別番号およびアクセス先の論理アドレスに基づいて特定される。
【００８２】
図１１は、ディスクアクセス処理の例を示すフローチャートである。図１１に示す処理は、ＲＡＩＤグループごとに実行される。このため、図１１において処理対象となるコマンドキュー２２１ｅは、１つのＲＡＩＤグループに対応するものとなる。以下、図１１に示す処理をステップ番号に沿って説明する。
【００８３】
［ステップＳ３１］アクセス制御部２２０は、コマンドキュー２２１ｅの先頭からコマンドを取り出す。
［ステップＳ３２］アクセス制御部２２０は、取り出したコマンドに基づき、ＨＤＤに対してアクセスする。具体的には、アクセス制御部２２０は、コマンドにおいて指定された論理記憶領域の番号に基づいて、その論理記憶領域が割り当てられたＲＡＩＤグループ（アクセス先のＲＡＩＤグループ）を特定する。アクセス制御部２２０は、コマンドにおいて指定された論理アドレスと、コマンドにおいて指定されたアクセスの種別（リードかライトか）と、特定されたＲＡＩＤグループに設定されたＲＡＩＤレベルとに基づいて、アクセス先のＨＤＤおよび物理アドレスを特定する。アクセス制御部２２０は、特定されたＨＤＤおよび物理アドレスに対するアクセス処理を実行し、アクセス処理が完了すると、ホスト１００に対して応答する。
【００８４】
なお、上記の説明はコマンドがリードコマンドまたはライトコマンドの場合であるが、後述するように、コマンドキュー２２１ｅには、定点浮上障害を回避するための「ダミーライトコマンド」が登録される場合もある。ダミーライトコマンドは、ＨＤＤ上の空き領域にダミーデータをライトすることを要求するコマンドである。アクセス制御部２２０は、コマンドキュー２２１ｅから取り出したコマンドがダミーライトコマンドであった場合、ＬＢＡ情報管理テーブル２２１ｃからダミーライトコマンドに対応する情報を取得する。具体的には、発行先ディスクスロット番号、発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号が取得される。アクセス制御部２２０は、取得した情報が示すＨＤＤの記録面上の領域に対するダミーデータのライト処理を実行する。
【００８５】
［ステップＳ３３］アクセス制御部２２０は、実行されたアクセス処理についての履歴情報をログファイル２２１ｄに登録する。
なお、ＣＭ１００では、コマンドを並列に処理可能な上限数が設定されていてもよい。この場合、アクセス制御部２２０は、上限数のコマンドのそれぞれについて、図１１の処理を並列に実行する。また、コマンドの並列処理数が上限数に達している場合、アクセス制御部２２０は、処理中のコマンドの１つについての処理が完了すると、新たなコマンドについて図１１の処理を開始する。
【００８６】
次に、ストレージ装置２００における定点浮上障害回避処理について説明する。
図１２は、定点浮上障害回避処理の例を示すフローチャート（その１）である。図１３は、定点浮上障害回避処理の例を示すフローチャート（その２）である。図１４は、定点浮上障害回避処理の例を示すフローチャート（その３）である。
【００８７】
図１２乃至図１４の処理は、前述の情報採取期間に対応する一定時間ごとに実行される。また、図１２乃至図１４の処理は、ＲＡＩＤグループごとに実行されるものとする。ここでは、処理対象のＲＡＩＤグループを「対象ＲＡＩＤグループ」と記載する。以下、図１２乃至図１４に示す処理をステップ番号に沿って説明する。
【００８８】
［ステップＳ４１］情報収集部２２２は、ログファイル２２１ｄから直近の情報採取期間に登録されたデータを抽出し、抽出したデータに基づき、対象ＲＡＩＤグループに対するアクセス数をＲＡＩＤ使用状況管理テーブル２２１ｂに登録する。具体的には、情報収集部２２２は、ログファイル２２１ｄから抽出したデータを用いてＲＡＩＤグループのＲＡＩＤ番号に対応するリード受付数、ライト受付数を算出する。情報収集部２２２は、ＲＡＩＤ使用状況管理テーブル２２１ｂにおけるリード受付数、ライト受付数の項目に、算出されたリード受付数、ライト受付数をそれぞれ登録する。
【００８９】
また、情報収集部２２２は、データを抽出した日時を採取日時としてＲＡＩＤ使用状況管理テーブル２２１ｂに登録する。また、情報収集部２２２は、対象ＲＡＩＤグループがアクセス先となる最新のコマンドをホスト１００から受信した日時を、最新コマンド受信日時としてＲＡＩＤ使用状況管理テーブル２２１ｂに登録する。この日時は、対象ＲＡＩＤグループに属するＨＤＤに対して最後にアクセスが行われた時刻と見なされて、後の処理で最終コマンド発行時刻ＴＭとして用いられる。
【００９０】
［ステップＳ４２］情報収集部２２２は、ステップＳ４１でログファイル２２１ｄから抽出したデータに基づき、対象ＲＡＩＤグループに属する各ＨＤＤのシリンダごとのライト数、リード数、シーク数をＨＤＤ使用状況管理テーブル２２１ａに登録する。
【００９１】
また、障害回避処理部２２３は、情報採取期間におけるＨＤＤごとのアクセス数を示すＨＤＤアクセス数ＩＯＣ＿ｈｄと、情報採取期間におけるシリンダごとのアクセス数を示すシリンダアクセス数ＩＯＣ＿ｃｙを算出する。シリンダアクセス数ＩＯＣ＿ｃｙは、情報採取期間におけるシリンダごとのライト数、リード数、シーク数を合計することで算出される。ＨＤＤアクセス数ＩＯＣ＿ｈｄは、情報採取期間における同一ＨＤＤの全シリンダについてのライト数、リード数、シーク数を合計することで算出される。
【００９２】
［ステップＳ４３］障害回避処理部２２３は、ＲＡＩＤ使用状況管理テーブル２２１ｂに基づき、ＲＡＩＤグループをアクセス先としたコマンドについての前回採取時からの受付数を比較する。具体的には、障害回避処理部２２３は、今回の採取日時におけるリード受付数およびライト受付数を合計し、その合計値を今回のコマンド受付数とする。また、障害回避処理部２２３は、前回の採取日時におけるリード受付数およびライト受付数を合計し、その合計値を前回のコマンド受付数とする。そして、障害回避処理部２２３は、今回のコマンド受付数から前回のコマンド受付数を減算した差分を算出する。
【００９３】
［ステップＳ４４］障害回避処理部２２３は、ステップＳ４３で算出した差分が上限閾値より大きいかを判定する。なお、上限閾値は、予め記憶部２２１にシステム管理者等によって記憶されているものとする。
【００９４】
差分が上限閾値より大きい場合、すなわち、直近の情報採取期間におけるコマンド受付数が、前回より上限閾値を超える数だけ増加した場合には、磁気ディスクの記録面上の特定領域に対するアクセス集中によって定点浮上障害が発生する可能性があると判断される。この場合、障害回避処理部２２３は、処理を図１３のステップＳ５１にすすめて、障害発生リスクの確認処理および障害発生の回避処理を実行する。一方、障害回避処理部２２３は、差分が上限閾値以下の場合、処理を図１４のステップＳ７１にすすめる。
【００９５】
以下、図１３を用いて説明を続ける。
［ステップＳ５１］障害回避処理部２２３は、対象ＲＡＩＤグループに属するＨＤＤ（以下、対象ＨＤＤと記載。）のそれぞれについて、ＨＤＤアクセス数ＩＯＣ＿ｈｄに対するシリンダアクセス数ＩＯＣ＿ｃｙの割合を求める。このとき、対象ＨＤＤのすべてのシリンダについてのシリンダアクセス数ＩＯＣ＿ｃｙが計算に用いられ、各ＨＤＤについてシリンダごとに割合が求められる。なお、ＨＤＤアクセス数ＩＯＣ＿ｈｄおよびシリンダアクセス数ＩＯＣ＿ｃｙとしては、図１２のステップＳ４２で算出された値が用いられる。
【００９６】
［ステップＳ５２］障害回避処理部２２３は、ステップＳ５１において、割合がアクセス集中閾値以上になったシリンダがあるかを判定する。なお、アクセス集中閾値は、予め記憶部２２１にシステム管理者等によって記憶されているものとする。障害回避処理部２２３は、該当するシリンダが１つでもある場合にステップＳ５３にすすみ、該当するシリンダが存在しない場合には処理を終了する。
【００９７】
［ステップＳ５３］障害回避処理部２２３は、１台のＨＤＤの同一磁気ディスクの記録面に、算出された割合がアクセス集中閾値以上になったシリンダが複数あるかを判定する。障害回避処理部２２３は、該当するシリンダが記録面当たり複数ある場合には処理をステップＳ５４にすすめ、該当するシリンダが記録面当たり１つのみの場合には処理をステップＳ５５にすすめる。
【００９８】
［ステップＳ５４］障害回避処理部２２３は、該当するシリンダ同士が近傍にあるか否かを判定する。例えば、障害回避処理部２２３は、同一ＨＤＤにおける近接する該当シリンダのペアのうち、シリンダ番号の差が所定数以下のペアが１組以上ある場合、シリンダが近傍にあると判定する。障害回避処理部２２３は、該当するシリンダ同士が近傍にある場合には処理をステップＳ５５にすすめ、近傍にない場合は処理を終了する。
【００９９】
以上の図１３では、算出された割合がアクセス集中閾値以上のシリンダでは、定点浮上状態が発生したと推定され、障害が発生する可能性がある。ただし、同一磁気ディスク上の比較的離れた複数のシリンダで定点浮上状態が発生した場合（ステップＳ５４でＮｏと判定される場合）には、磁気ディスクの記録面に対するアクセス数が多いものの、特定の一カ所にアクセスが集中しているとは言えない。そのため、記録面において潤滑剤の轍が発生する可能性は少ないと考えられるので、処理が終了され、障害回避のための措置は行われない。
【０１００】
［ステップＳ５５］障害回避処理部２２３は、障害回避のためのコマンドとして、アクセスが集中していないシリンダに対してダミーデータの書き込みを指示するためのダミーライトコマンドを生成する。
【０１０１】
ダミーデータの書き込み先のシリンダとしては、例えば、アクセスが集中しているシリンダが存在する磁気ディスク上のシリンダのうち、ステップＳ５１で算出された割合の値が所定値以下であるシリンダが選択される。あるいは、ダミーデータの書き込み先のシリンダは、アクセスが集中しているシリンダについての割合の値を基準として選択されてもよい。例えば、割合の値がアクセス集中閾値以上であったシリンダについての割合の値をＶ１とする。また、選択のための差分値Ｖ２があらかじめ設定される。この場合、同じ磁気ディスクの記録面上のシリンダのうち、割合の値が（Ｖ１−Ｖ２）以下であるシリンダが、ダミーデータの書き込み先のシリンダとして選択される。
【０１０２】
［ステップＳ５６］障害回避処理部２２３は、対象ＲＡＩＤグループに対応するコマンドキュー２２１ｅに実行待ちコマンドが存在するか否かを判定する。障害回避処理部２２３は、コマンドキュー２２１ｅに実行待ちコマンドが有る場合は処理をステップＳ５７にすすめ、実行待ちコマンドが無い場合はステップＳ６０にすすめる。
【０１０３】
［ステップＳ５７］障害回避処理部２２３は、対象ＲＡＩＤグループに対応するコマンドキュー２２１ｅとＬＢＡ情報管理テーブル２２１ｃとを参照し、実行待ちコマンドの中に、アクセス先のシリンダがダミーライトコマンドと同一のコマンドがあるか否かを判定する。障害回避処理部２２３は、該当する実行待ちコマンドがある場合には処理をステップＳ５８にすすめ、ない場合には処理をステップＳ５９にすすめる。
【０１０４】
［ステップＳ５８］障害回避処理部２２３は、コマンドキュー２２１ｅから、アクセス先のシリンダがダミーライトコマンドと同一である実行待ちコマンドを特定する。障害回避処理部２２３は、コマンドキュー２２１ｅにおける特定された実行待ちコマンドの直前に、ダミーライトコマンドを挿入する。
【０１０５】
これにより、ダミーライトコマンドの次に、特定された実行待ちコマンドが実行されるようになる。すなわち、アクセスが集中していると判断されたシリンダにアクセスするための実行待ちコマンドが実行される前に、ダミーライトコマンドによって磁気ヘッドの移動が促される。このため、磁気ディスクの記録面における潤滑剤の表面が平坦化される。したがって、特定された実行待ちコマンドに基づくＨＤＤへのアクセスの際に、障害が発生する可能性を低下させることができる。あるいは、特定された実行待ちコマンドに基づくＨＤＤへのアクセスの際に、潤滑剤の轍の高さが高まって障害発生リスクを高めてしまう可能性を低下させることができる。
【０１０６】
また、現在のコマンドキュー２２１ｅにおいて、特定された実行待ちコマンドより前に他の実行待ちコマンドが存在する場合には、それらの実行待ちコマンドが実行された後にダミーライトコマンドが実行されるようになる。このため、例えば、現時点で即座にダミーライトコマンドを実行する場合と比較して、それらの他の実行待ちコマンドの実行が遅延しなくなり、それらの他の実行待ちコマンドについてホスト１００に対する応答性能が低下することを防止できる。
【０１０７】
また、障害回避処理部２２３は、以上のようにしてダミーライトコマンドを挿入するとともに、ＬＢＡ情報管理テーブル２２１ｃに対してダミーライトコマンドに対応するレコードを登録し、各項目に情報を登録する。このとき、障害回避処理部２２３は、アクセスが集中していると判定されたシリンダが属するＨＤＤだけでなく、対象ＲＡＩＤグループに属するすべてのＨＤＤの同じシリンダに対してダミーデータが書き込まれるように、各ＨＤＤの情報をレコードに登録する。具体的には、障害回避処理部２２３は、このレコードに、発行先ディスクスロット番号として対象ＲＡＩＤグループに属するすべてのＨＤＤを示すディスクスロット番号を登録する。そして、障害回避処理部２２３は、各ＨＤＤについての発行先物理アドレス、発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号として、同一の値を登録する。なお、発行先物理アドレスは、書き込み先のシリンダ位置から換算される。
【０１０８】
ここで、前述のように、図１１のステップＳ３１でコマンドキュー２２１ｅからダミーライトコマンドが取り出された場合には、アクセス制御部２２０は、ＬＢＡ情報管理テーブル２２１ｃからダミーライトコマンドに対応する情報を取得する。このとき、対象ＲＡＩＤグループに属するすべてのＨＤＤを示す発行先ディスクスロット番号と、各ＨＤＤについての発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号が取得される。アクセス制御部２２０は、これらの情報に基づいて、各ＨＤＤの同一シリンダに対してダミーデータを書き込むように制御する。
【０１０９】
ＲＡＩＤグループでは、データの書き込みの際、データを冗長化するためにＲＡＩＤグループに属するＨＤＤのすべてにデータが書き込まれる。そのため、ＲＡＩＤグループに属するＨＤＤのうちの一部だけにデータを書き込んでしまうと、データの整合性がとれなくなる。上記のように、障害回避のためのダミーライトコマンドを実行する際に、ダミーデータをＲＡＩＤグループに属するすべてのＨＤＤに書き込むように制御されることで、データの整合性を保つことができる。
【０１１０】
［ステップＳ５９］障害回避処理部２２３は、実行待ちコマンドの実行が完了してからダミーライトコマンドが実行されるように制御する。ここでは例として、障害回避処理部２２３は、コマンドキュー２２１ｅの末尾にダミーライトコマンドを登録する。これにより、現在コマンドキュー２２１ｅにたまっている実行待ちコマンドに基づくアクセス処理の実行が、ダミーライトコマンドの実行によって遅延することが防止される。したがって、実行待ちコマンドについて、その送信元のホスト１００に対する応答性能が低下することを防止できる。
【０１１１】
また、障害回避処理部２２３は、ＬＢＡ情報管理テーブル２２１ｃに対して、ダミーライトコマンドに対応するレコードを登録し、各項目に情報を登録する。この登録処理は、ステップＳ６４と同様の手順で行われる。すなわち、登録されたレコードには、発行先ディスクスロット番号として対象ＲＡＩＤグループに属するすべてのＨＤＤを示すディスクスロット番号が登録される。また、このレコードには、各ＨＤＤについての発行先物理アドレス、発行先ヘッド番号、発行先シリンダ番号、発行先セクタ番号として、同一の値が登録される。
【０１１２】
［ステップＳ６０］このケースでは、コマンドキュー２２１ｅに実行待ちコマンドがないので、障害回避処理部２２３は、ダミーライトコマンドを即座に実行する。このとき、ステップＳ５８，Ｓ５９で登録されるダミーライトコマンドと同様に、対象ＲＡＩＤグループに属するすべてのＨＤＤの同一シリンダにダミーデータを書き込むように制御される。
【０１１３】
以下、図１４を用いて説明を続ける。
［ステップＳ７１］障害回避処理部２２３は、図１２のステップＳ４３で算出した差分が下限閾値より小さいかを判定する。なお、下限閾値は、ステップＳ４４で用いられる上限閾値より小さい値とされる。また、下限閾値は、予め記憶部２２１にシステム管理者等によって記憶されているものとする。
【０１１４】
差分が下限閾値より小さい場合、対象ＲＡＩＤグループに対するアクセス数の変化が小さいことから、アクセスが少ないことによる定点浮上障害が発生する可能性があると判断される。この場合、障害回避処理部２２３は、処理をステップＳ７２にすすめて、障害発生リスクの確認処理を実行する。一方、障害回避処理部２２３は、差分が下限閾値以上の場合、処理を終了する。
【０１１５】
［ステップＳ７２］障害回避処理部２２３は、図１２のステップＳ４１でＲＡＩＤ使用状況管理テーブル２２１ｂに登録された最新コマンド受信日時を、最終コマンド発行時刻ＴＭとして取得する。障害回避処理部２２３は、最終コマンド発行時刻ＴＭから現在時刻までの経過時間を算出する。
【０１１６】
［ステップＳ７３］障害回避処理部２２３は、ステップＳ７２で算出した経過時間がアクセス閑散閾値以上か否かを判定する。障害回避処理部２２３は、経過時間がアクセス閑散閾値以上である場合は処理をステップＳ７４にすすめ、経過時間がアクセス閑散閾値未満である場合は処理を終了する。なお、アクセス閑散閾値は、予め記憶部２２１にシステム管理者等によって記憶されているものとする。
【０１１７】
ここで、以下のステップＳ７４乃至Ｓ７６の処理は、対象ＲＡＩＤグループに属するＨＤＤのそれぞれについて実行されるものとする。
［ステップＳ７４］障害回避処理部２２３は、処理対象のＨＤＤについて、磁気ヘッドの現在位置が中間シリンダに対して外周寄りか否かを判定する。障害回避処理部２２３は、磁気ヘッドの位置が中間シリンダに対して外周寄りである場合は処理をステップＳ７５にすすめ、外周寄りでない場合は処理をステップＳ７６にすすめる。
【０１１８】
［ステップＳ７５］障害回避処理部２２３は、磁気ヘッドを中間シリンダの内周寄りに移動するためのダミーシークコマンドを生成し、対象ＲＡＩＤグループに対応するコマンドキュー２２１ｅの先頭に挿入する。
【０１１９】
［ステップＳ７６］障害回避処理部２２３は、磁気ヘッドを中間シリンダの外周寄りに移動するためのダミーシークコマンドを生成し、対象ＲＡＩＤグループに対応するコマンドキュー２２１ｅの先頭に挿入する。
【０１２０】
ステップＳ７５またはステップＳ７６の実行後に、挿入されたダミーシークコマンドがアクセス制御部２２０によって取り出されて実行されると、磁気ヘッドが大きく移動される。これにより、磁気ディスクの記録面における潤滑剤の表面が平坦化される。したがって、アクセスが少ないことによる定点浮上障害が発生する可能性を低減できる。
【０１２１】
以上の図１２乃至図１４の処理によれば、ＣＭ２１０は、ディスクアクセス過密による定点浮上障害が発生する可能性が高い場合、ダミーライトコマンドを生成および実行することで定点浮上障害を回避する。また、ＣＭ２１０は、ディスクアクセス閑散による定点浮上障害が発生する可能性が高い場合、ダミーシークコマンドを生成および実行することで定点浮上障害を回避する。こうして、ＣＭ２１０は、定点浮上障害が発生する可能性が高い状況に応じてダミーコマンド（ダミーライトコマンド、ダミーシークコマンド）を使い分けることで、より適切に障害を回避することができる。
【０１２２】
また、上記処理によれば、図１２のステップＳ４３において、前回の情報採取期間でのＲＡＩＤグループに対するアクセス数と、直近の情報採取期間でのアクセス数との差分が求められる。そして、後者のアクセス数が前者より上限閾値より大きく増加していた場合に、図１３に示す障害発生リスクの確認処理および障害発生の回避処理が実行される。
【０１２３】
ここで、他の方法の例として、上記のような差分を用いる代わりに、直近の情報採取期間でのアクセス数が所定値を超えた場合に、上記確認処理および回避処理を実行する方法も考えられる。しかし、直近の情報採取期間でのアクセス数が所定値を超えている状態では、すでに定点浮上障害が発生している可能性がある。これに対して、上記差分を用いてアクセス数の増加量が多いと判定した場合に上記確認処理および回避処理を実行することで、定点浮上障害が発生する前にこれらの処理を実行でき、障害発生を未然に防止できる。
【０１２４】
また、本実施の形態では、ＨＤＤに対するアクセス元のＣＭ２１０によって、定点浮上障害の発生リスクの確認処理や障害発生の回避処理が実行される。このような処理機能はＨＤＤ自体が備えている場合もあるが、ＨＤＤの内部でどのような処理が行われるかはベンダや機種によって異なり、障害発生を確実に防止できるか不明な場合もある。本実施の形態によれば、ＨＤＤを用いた論理記憶領域をユーザに提供するＣＭ２１０が上記処理を実行することで、障害発生回避の確実性を高めることができ、ユーザに対してトラブルの少ない高品質なサービスを提供できるようになる。
【０１２５】
さらに、これらの処理をＣＭ２１０が実行することにより、ＲＡＩＤグループ単位で障害発生リスクを判定でき、さらにＲＡＩＤグループに属するすべてのＨＤＤにおける障害発生回避の確実性を高めることができる。ユーザに提供される論理記憶領域は、ＲＡＩＤグループに属するＨＤＤによって構築される。このため、ＲＡＩＤグループに属するすべてのＨＤＤにおける障害発生回避の確実性を高められることで、ユーザに提供するサービスの品質を向上させることができる。
【０１２６】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置３０、ホスト１００、ストレージ制御装置１０、ストレージ装置２００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク（Blu-ray Disc：ＢＤ、登録商標）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【０１２９】
１０  ストレージ制御装置
１１  アクセス制御部
１２  アクセス状況記録部
１３  障害回避処理部
１４  記憶部
１４ａ  管理情報
１４ｂ  コマンドキュー
１５  回避コマンド
２０  磁気ディスク装置
３０  情報処理装置
【図１】
2019204567.tif 000003
【図２】
2019204567.tif 000004
【図３】
2019204567.tif 000005
【図４】
2019204567.tif 000006
【図５】
2019204567.tif 000007
【図６】
2019204567.tif 000008
【図７】
2019204567.tif 000009
【図８】
2019204567.tif 000010
【図９】
2019204567.tif 000011
【図１０】
2019204567.tif 000012
【図１１】
2019204567.tif 000013
【図１２】
2019204567.tif 000014
【図１３】
2019204567.tif 000015
【図１４】
2019204567.tif 000016