(57)【要約】【課題】  ランダムアクセス性能向上と、アクセスに対する応答時間の保証を実現する。【解決手段】複数の記憶媒体がデータの冗長性を持つストレージにおいて、コマンド列のスケジューリングに利用された各記憶媒体に対するコマンド処理の完了予測時間を用いて保証すべき応答時間を満たすかを確認し、応答時間の保証条件を満たさないコマンドが存在する場合、記憶媒体間のデータの冗長性を利用してスケジューリング結果に対して、応答時間保証条件を満たさないコマンド、コマンドと同じ記憶媒体に対して発行予定の別のコマンドについて発行先の記憶媒体を変更、又は記憶媒体への発行順序を変更する。スケジューリングの変更による、各コマンドの完了時間はスケジューラを用いて再計算し、変更したスケジューリング結果が、全てのコマンドについて応答時間保証条件を満たすか確認する。【選択図】図２
2011054042.tif 000002
【特許請求の範囲】
【請求項１】
複数の互いに格納データに冗長性を持つ記憶媒体を有し、
各記憶媒体に発行予定のコマンドに対するスケジューリングに用いた各コマンドの完了予測時間を参照し、各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更する手段と、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する手段と、
を備えたストレージ装置。
【請求項２】
前記応答時間に間に合わないコマンドを、前記応答時間に間に合うようにコマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンドの発行先記憶媒体を変更する請求項１記載のストレージ装置。
【請求項３】
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンド列の発行順序を変更する請求項１記載のストレージ装置。
【請求項４】
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先の記憶媒体を変更する際に、
前記コマンドの発行先記憶媒体に対するアクセスコマンドで構成される待ち行列上において前記コマンドより先に記憶媒体に発行するコマンドについて、コマンド発行先の記憶媒体を変更する請求項１記載のストレージ装置。
【請求項５】
各記憶媒体に発行予定のコマンドが前記応答時間に間に合わない場合に、ランダムアクセス性能の向上、又は、アクセス処理が完了するまでの時間の短縮を目的としてスケジューリング手段でスケジューリングを行った結果求められた、各記憶媒体に対する発行予定のコマンドと、前記発行予定のコマンドの記憶媒体に対する発行順序について、
各コマンドが、前記応答時間に間に合うように、コマンドの発行先記憶媒体、又は、記憶媒体に対するコマンドの発行順序を変更し、
各コマンドの完了時間を予測可能なスケジューリング手段に対して、前記変更結果を送信し、各コマンドに対する応答時間保証の可否の確認、コマンドの発行順序の変更に伴うコマンド間の依存関係の矛盾発生有無の確認の少なくとも１方を行う請求項１記載のストレージ装置。
【請求項６】
データを冗長に格納する複数の記憶媒体を含むアレイと、
ホストからのアクセス要求を受け、前記アクセス要求を前記記憶媒体へアクセスするためのコマンドに変換するアクセス要求制御部と、前記記憶媒体に対するコマンド列をスケジューリングし、前記スケジューリング済みの前記コマンド列の各コマンドの完了時間の予測処理を行うスケジューラと、を含むアクセス要求処理部と、
前記アクセス要求処理部による、前記記憶媒体に対するコマンド列のスケジューリング結果と、前記記憶媒体に対するコマンドの完了時間の予測結果とから、応答時間保証情報格納部に格納される情報を用いて、前記記憶媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認し、
完了時間が前記応答時間に収まらないコマンドが存在する場合、前記コマンド列の発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、変更後のコマンド列のコマンドの完了時間の予測の実行を前記アクセス要求処理部に対して指示し、
前記アクセス要求処理部で行われた、前記変更後のコマンド列のコマンドの完了時間の予測結果を用いて、前記記録媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認する応答時間制御部と、
を備えたストレージ装置。
【請求項７】
前記応答時間制御部は、前記応答時間に収まらないコマンドが存在する場合、前記記憶媒体に対する待機コマンド列の完了時間を最小化するように、前記アクセス要求処理部のスケジューラに指示し、
前記アクセス要求処理部でのスケジューリング結果のコマンド列の各コマンドがそれぞれ前記応答時間を満たしているか確認し、
前記応答時間を満たさないコマンドが存在する場合、前記コマンドを前記コマンド列中の所定の位置に移動し、
前記応答時間制御部は、前記コマンド移動後のコマンド列に対して、前記アクセス要求処理部のスケジューラを用いて、前記記憶媒体に対する前記コマンド列の処理の完了時間を算出し、
前記応答時間を満たさないコマンドが存在する場合、
所定の終了条件に合致しなければ、前記応答時間を満たさないコマンドを前記コマンド列中の別の位置に移動し、前記コマンド移動後のコマンド列に対して、前記アクセス要求処理部のスケジューラを用いて、前記記憶媒体に対する前記コマンド列の処理の完了時間を算出する処理を、
前記コマンド列中の各コマンドが前記応答時間を満たさすまで、あるいは、前記所定の終了条件に合致するまで、繰り返す、請求項６記載のストレージ装置。
【請求項８】
前記応答時間制御部は、前記アクセス要求処理部で行われた、前記変更後のコマンド列のコマンドの完了時間の予測結果を用いて、前記記録媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認した結果、完了時間が前記応答時間に収まらないコマンドが存在する場合、前記アクセス要求処理部に対して、前記ホストからのアクセス要求の受理を停止させるように指示する、請求項６記載のストレージ装置。
【請求項９】
前記アクセス要求処理部は、前記アレイ内の前記記憶媒体へのコマンドを発行順序にしたがって格納するコマンドキューを備え、
前記アクセス要求処理部の前記スケジューラは、前記記憶媒体に対するコマンド列の完了時間が短くなるようにスケジューリングを行いコマンド列を整列するとともに、各コマンドの完了時間の予測を行い、コマンド列のスケジュール結果と各コマンドの完了時間の予測結果を前記コマンドキューに格納する、請求項６記載のストレージ装置。
【請求項１０】
前記アクセス要求処理部の前記スケジューラは、前記コマンド列を整列において、コマンド間の依存関係を確認する、請求項９記載のストレージ装置。
【請求項１１】
複数の互いに格納データに冗長性を持つ記憶媒体を備えたストレージ装置が、
各記憶媒体に発行予定のコマンドに対するスケジューリングに用いた各コマンドの完了予測時間を参照し、
各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する、
ことを特徴とする、ストレージ装置のアクセス制御方法。
【請求項１２】
前記応答時間に間に合わないコマンドを、前記応答時間に間に合うようにコマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンドの発行先記憶媒体を変更する請求項１１記載のストレージ装置のアクセス制御方法。
【請求項１３】
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンド列の発行順序を変更する請求項１１のストレージ装置のアクセス制御方法。
【請求項１４】
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先の記憶媒体を変更する際に、
前記コマンドの発行先記憶媒体に対するアクセスコマンドで構成される待ち行列上において前記コマンドより先に記憶媒体に発行するコマンドについて、コマンド発行先の記憶媒体を変更する請求項１１のストレージ装置のアクセス制御方法。
【請求項１５】
各記憶媒体に発行予定のコマンドが前記応答時間に間に合わない場合に、ランダムアクセス性能の向上、又は、アクセス処理が完了するまでの時間の短縮を目的としてスケジューリング手段でスケジューリングを行った結果求められた、各記憶媒体に対する発行予定のコマンドと、前記発行予定のコマンドの記憶媒体に対する発行順序について、
各コマンドが、前記応答時間に間に合うように、コマンドの発行先記憶媒体、又は、記憶媒体に対するコマンドの発行順序を変更し、
各コマンドの完了時間を予測可能なスケジューリング手段に対して、前記変更結果を送信し、各コマンドに対する応答時間保証の可否の確認、コマンドの発行順序の変更に伴うコマンド間の依存関係の矛盾発生有無の確認の少なくとも１方を行う請求項１１のストレージ装置のアクセス制御方法。
【請求項１６】
データを冗長に格納する複数の記憶媒体を含むアレイを備えたストレージ装置が、
ホストからのアクセス要求を受け、前記アクセス要求を前記記憶媒体へアクセスするためのコマンドに変換し、
前記記憶媒体に対するコマンド列をスケジューリングし、前記スケジューリング済みの前記コマンド列の各コマンドの完了時間の予測処理を行い、
前記記憶媒体に対するコマンド列のスケジューリング結果と、前記記憶媒体に対するコマンドの完了時間の予測結果とから、応答時間保証情報格納部に格納される情報を用いて、前記記憶媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認し、
完了時間が前記応答時間に収まらないコマンドが存在する場合、前記コマンド列の発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、変更後のコマンド列のコマンドの完了時間の予測の実行し、
前記変更後のコマンド列のコマンドの完了時間の予測結果を用いて、前記記録媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認する、ストレージ装置のアクセス制御方法。
【請求項１７】
複数の互いに格納データに冗長性を持つ記憶媒体を有するストレージ装置を構成するコンピュータに、
各記憶媒体に発行予定のコマンドに対するスケジューリングに用いた各コマンドの完了予測時間を参照し、各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更する手段と、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する処理を実行させるプログラム。
【請求項１８】
請求項１７記載のプログラムにおいて、
前記応答時間に間に合わないコマンドを、前記応答時間に間に合うようにコマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンドの発行先記憶媒体を変更する処理を前記コンピュータに実行させるプログラム。
【請求項１９】
請求項１７記載のプログラムにおいて、
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先記憶媒体を変更する際に、
各記憶媒体におけるアクセス時間の増加が最小になるように前記記憶媒体に対する発行予定のコマンド列の発行順序を変更する処理を前記コンピュータに実行させるプログラム。
【請求項２０】
請求項１７記載のプログラムにおいて、
前記応答時間に間に合わないコマンドを前記応答時間に間に合うように、コマンド列の発行先の記憶媒体を変更する際に、
前記コマンドの発行先記憶媒体に対するアクセスコマンドで構成される待ち行列上において前記コマンドより先に記憶媒体に発行するコマンドについて、コマンド発行先の記憶媒体を変更する処理を前記コンピュータに実行させるプログラム。
【請求項２１】
請求項１７記載のプログラムにおいて、
各記憶媒体に発行予定のコマンドが前記応答時間に間に合わない場合に、ランダムアクセス性能の向上、又は、アクセス処理が完了するまでの時間の短縮を目的としてスケジューリング手段でスケジューリングを行った結果求められた、各記憶媒体に対する発行予定のコマンドと、前記発行予定のコマンドの記憶媒体に対する発行順序について、
各コマンドが、前記応答時間に間に合うように、コマンドの発行先記憶媒体、又は、記憶媒体に対するコマンドの発行順序を変更し、
各コマンドの完了時間を予測可能なスケジューリング手段に対して、前記変更結果を送信し、各コマンドに対する応答時間保証の可否の確認、コマンドの発行順序の変更に伴うコマンド間の依存関係の矛盾発生有無の確認の少なくとも１方を行う処理を前記コンピュータに実行させるプログラム。
【請求項２２】
データを冗長に格納する複数の記憶媒体を含むアレイを備えたストレージ装置を構成するコンピュータに、
ホストからのアクセス要求を受け、前記アクセス要求を前記記憶媒体へアクセスするためのコマンドに変換するアクセス要求制御と、前記記憶媒体に対するコマンド列をスケジューリングし、前記スケジューリング済みの前記コマンド列の各コマンドの完了時間の予測を行うアクセス要求処理と、
前記アクセス要求処理による、前記記憶媒体に対するコマンド列のスケジューリング結果と、前記記憶媒体に対するコマンドの完了時間の予測結果とから、応答時間保証情報格納部に格納される情報を用いて、前記記憶媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認し、
完了時間が前記応答時間に収まらないコマンドが存在する場合、前記コマンド列の発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、
変更後のコマンド列のコマンドの完了時間の予測の実行を前記アクセス要求処理に指示し、
前記アクセス要求処理で行われた、前記変更後のコマンド列のコマンドの完了時間の予測結果を用いて、前記記録媒体に対する各コマンドが、前記ホストからの対応する各アクセス要求に対して前記応答時間に収まるか否かを確認する応答時間制御処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置と方法及びプログラムに関し、特に、複数の記憶媒体を有し、データに冗長性を持つストレージ装置に適用して好適な装置と、方法、プログラムに関する。
【背景技術】
【０００２】
近時、情報通信技術の進化とその適用分野の拡大に伴い、情報処理システムが扱うデータ量、及びその重要性が増加している。そのため、これらのデータを格納するためのストレージに対してデータを失わないための信頼性が求められている。また、大容量のデータを短時間で処理するために、アクセスの高速性が求められている。
【０００３】
これらの要求に対して記憶媒体を持つストレージの信頼性、性能を同時に向上させるための手法として、非特許文献１に挙げたＲＡＩＤ（Ｒｅｄｕｎｄｕｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｅｘｅｐｅｎｓｉｖｅ（Ｉｎｄｅｐｅｎｄｅｎｔ）  Ｄｉｓｋｓ）が用いられる。ＲＡＩＤは、ストレージが持つ複数の記憶媒体間で冗長性を持たせることによって信頼性とアクセス性能を向上させる技術である。ＲＡＩＤの種類は、記憶媒体間の冗長性の取り方によって複数存在する。例えば記憶媒体が同一データを保持することで記憶媒体に関する耐障害性を実現するＲＡＩＤ１が挙げられる。
【０００４】
また、ＲＡＩＤを構成する複数の記憶媒体のうち１台が、他の全ての記憶媒体上のデータのパリティを格納するＲＡＩＤ５や、ＲＡＩＤを構成する複数の記憶媒体のうち２台が他の全ての記憶媒体上のデータのパリティを格納するＲＡＩＤ６などが挙げられる。特にＲＡＩＤ５、ＲＡＩＤ６等において、格納するデータを「Ｃｈｕｎｋ（チャンク）」と呼ばれる一定サイズのデータに分割し、連続した複数のチャンクがＲＡＩＤを構成する各記憶媒体（ディスク）に分散して配置される。この配置により、連続したデータを読み書きする際に、同時に複数の記憶媒体（ディスク）に対して読み書きが行われる。よって、ＲＡＩＤ５、ＲＡＩＤ６等では、単位時間当たり、ＲＡＩＤを構成する記憶媒体の数に比例した量のデータを読み書きできる。このため、データアクセス性能が向上する。
【０００５】
また、これらの複数の記憶媒体間のデータの冗長性の確保は、連続したデータの読み書きに対するアクセス性能の向上だけではなく、ＲＡＩＤを構成する記憶媒体内に非連続に分散して配置されたデータに対するランダムアクセスの高速化に役立つ。
【０００６】
例えば特許文献１のスケジューリング方式や、非特許文献２に開示された「Ｓｈｏｒｔｅｓｔ  Ｑｕｅｕｅ、Ｍｉｎｉｍｕｍ  Ｓｅｅｋ」といったスケジューリングポリシーでは、ＲＡＩＤを構成する記憶媒体が、同一データ又はパリティを、複数の記憶媒体に持つことを利用して、格納されたデータに対するＲｅａｄ（読み出し）アクセスを処理するための記憶媒体を選択し、ＲＡＩＤを構成する各記憶媒体のアクセス処理の進捗に応じた負荷の分散と、それに伴うランダムアクセス性能の向上が実現される。
【０００７】
また、記憶媒体がハードディスク（ＨＤＤ）等の場合、ＨＤＤのアクセスヘッドの位置が近くなるようにＲｅａｄアクセスを行うことで、ＨＤＤで発生するシーク時間が削減される。この結果、ランダムアクセス性能が向上するという性質を持つ。この性質は、ＲＡＩＤを構成するＨＤＤに対するＲｅａｄアクセスの配分に影響するだけではなく、ＲＡＩＤを構成しない単体のＨＤＤに対するアクセス時にも、そのアクセス性能を左右する。
【０００８】
ＨＤＤ等のディスクで発生するシーク時間を削減する技術は、例えば非特許文献２に記載され、一般的に、「エレベータアルゴリズム」又は「ＳＣＡＮ」と呼ばれるスケジューリングアルゴリズムが挙げられる。これらのスケジューリングアルゴリズムでは、複数のアクセス要求を処理する際に、ＨＤＤのヘッドが１往復で処理できるように、ディスクアクセスの順序を整列する。
【０００９】
一方で、昨今の情報処理システムは、その適用分野が拡大するにしたがってシステムの信頼性、耐障害性、即時性等が特に重視される。このため、システムの応答時間の保証が求められる機会が増加している。これらの情報処理システムでは、データを格納するためのストレージにおいても、一定時間内のアクセスの完了と応答が求められる。
【００１０】
その結果、ストレージを構成する記憶媒体又は複数の記憶媒体からなるＲＡＩＤへの各アクセス要求に関して、一定時間内でのアクセス処理の完了と、アクセス元への応答を保証する必要が生じる。
【００１１】
記憶装置又は複数の記憶装置から構成される記憶装置（ストレージ）への応答時間を保証するための技術として、最も単純なものは、保証すべき応答時間が迫ったアクセス要求に対する処理の優先度を高める手法がある。
【００１２】
単体又は複数の記憶媒体に対するアクセスコマンドが複数の処理（アクセス）を待つ場合、先に発行されるアクセスコマンドは、処理が完了するまでの時間が他の後続のアクセスコマンドよりも短くなることは自明である。
【００１３】
また、特許文献２のように、ストレージを構成する記憶媒体であるディスクのアクセス負荷を予測することで、各ディスクに対するアクセス量を制御し、ストレージへのアクセス要求がタイムアウトすることを防止する方法が知られている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００９−１６３４９９号公報
【特許文献２】特開２００４−２０６６２３号公報
【非特許文献】
【００１５】
【非特許文献１】Patterson et al., “A case for Redundant Arrays of Inexpensive Disks(RAID)”, Proceedings of the 1988 ACM SIGMOD international conference on Management of data, pp.109-116
【非特許文献２】S.Chen, and D.Towsley, “A Performance Evaluation of RAID Architectures”, IEEE Trans. on Computers, Vol.45, Issue 10, pp.1116-1130, 1996
【非特許文献３】Silberschatz et al., “Operating System Concepts Fifth Edition”, Addison-Wesley, pp.435-437
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上記特許文献１、２、非特許文献１、２、３の各開示は引用によって本明細書に組み込まれる。以下の分析は本発明によって与えられる。
【００１７】
データに冗長性を持つＲＡＩＤを構成する各記憶媒体に対して、ランダムアクセス性能を最大化する場合、各記憶媒体に対する負荷が均等になるように、Ｒｅａｄアクセスの配分が必要である。同時に、各記憶媒体におけるアクセス時間の最小化が必要である。特に、記憶媒体がＨＤＤ等である場合には、同一のアクセスを行う場合であっても、アクセス処理を行う順序によって、記憶媒体がアクセスに要する時間が変化する。
【００１８】
つまり、ランダムアクセス性能を最大化する場合、記憶媒体のアクセス時間が短くなるように、各記憶媒体に対して複数のアクセスを行うコマンドに対して、処理順序を変更するための整列処理が行われる。
【００１９】
しかしながら、記憶媒体に対するアクセス処理順序の変更を伴う整列処理は、特定のアクセス処理に関する処理完了までの待ち時間を増大させる可能性を持つ。一例として、アクセスコマンドが、先行して処理されるアクセスコマンドの完了まで待機している状態を想定する。また、記憶媒体が次に処理するアクセスコマンドを複数のアクセスコマンドから選択する場合、待機状態のアクセスコマンドの中から、処理時間が最も短くなるコマンドを選ぶものとする。
【００２０】
記憶媒体へのアクセスを待機中のアクセスコマンドが、上記コマンドのみである場合には、この待機中のコマンドは、先行して処理されるアクセスコマンドの処理の完了後に処理が行われる。
【００２１】
しかし、先行するアクセスコマンドの完了前に、別の新しいアクセスコマンドが同一記憶媒体に対して待機状態となった場合、待機状態の２つのアクセスコマンド間で、次に処理すべきコマンドの選択が行われる。待機状態のアクセスコマンド間で、処理時間が短いアクセスコマンドが選択され続けた場合、処理時間が長いアクセスコマンドが、待機状態のまま残り続ける（後から来たアクセスコマンドに追い越され続ける）という現象が発生し得る。この場合、アクセス要求に対する応答時間の保証が困難となる。
【００２２】
一方で、単体又は複数の記憶媒体から構成されるストレージに対するアクセスに関してその応答時間を保証する場合、
（Ａ）保証する応答時間の期限までの残り時間が少なくなったアクセスを優先的に実行するか、あるいは、
（Ｂ）ストレージを構成する各記憶媒体のアクセス負荷を予測して、応答時間の保証が困難になった場合に、アクセス要求の受理を停止する（例えば特許文献２等参照）、
という方法が用いられる。
【００２３】
しかしながら、（Ａ）の方法は、ＲＡＩＤ構成された複数の記憶媒体に対して、効率的に短時間でアクセスを行うための手順を無視して、アクセス順序が変更される。このため、ストレージのランダムアクセス性能を向上させるためのスケジューリング処理を同時に行うことは難しい。
【００２４】
また、（Ｂ）の方法は、記憶媒体の負荷を予測しているが、特に、記憶媒体がＨＤＤ等の場合には、記憶媒体の負荷は、アクセスコマンドの数だけではなく、アクセス先のアドレス又はアクセスコマンド列の処理順序によって変化する。つまり、ランダムアクセス性能の向上を目的として、コマンド列のスケジューリング処理が行われた場合、各記憶媒体の負荷の予測が困難になる。
【００２５】
このため、（Ｂ）の方法による応答時間の保証と、ランダムアクセス性能の向上を目的としたスケジューリング処理を、同時に行うことは難しい。
【００２６】
したがって、本発明の目的は、応答時間を保証するとともに、ランダムアクセス性能を向上させるスケジューリング処理を可能とする装置、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００２７】
本願で開示される発明は、前記課題を解決するため、概略以下の構成とされる。
本発明によれば、複数の互いに格納データに冗長性を持つ記憶媒体を有し、各記憶媒体に発行予定のコマンドの完了予測時間を参照し、各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更する手段と、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する手段と、
を備えたストレージ装置が提供される。
【００２８】
本発明によれば、複数の互いに格納データに冗長性を持つ記憶媒体を備えたストレージ装置が、
各記憶媒体に発行予定のコマンドに対するスケジューリングに用いた各コマンドの完了予測時間を参照し、
各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する、ストレージ装置のアクセス制御方法が提供される。
【００２９】
本発明によれば、複数の互いに格納データに冗長性を持つ記憶媒体を備えたストレージ装置が、
各記憶媒体に発行予定のコマンドに対するスケジューリングに用いた各コマンドの完了予測時間を参照し、
各コマンドが対応するアクセス要求に対して、予め定められた応答時間に間に合うように、
前記応答時間に間に合わないコマンド、又は、
前記応答時間に間に合わないコマンドと共に記憶媒体に対して発行待ちの状態であるコマンドについて、
前記記憶媒体へのコマンドの発行順序、及び／又は、コマンドの発行先の記憶媒体を変更し、
前記記憶媒体へ発行予定のコマンドのうち発行順序及び／又は発行先の記憶媒体の前記変更により、完了時間が変化するコマンドについて完了予測時間を再計算する、処理を実行させるプログラムが提供される。
【発明の効果】
【００３０】
本発明によれば、応答時間を保証するとともに、ランダムアクセス性能を向上させるスケジューリング処理を可能とすることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態における全体のシステム構成を示す図である。
【図２】本発明の一実施形態におけるストレージの構成を示す図である。
【図３】本発明の一実施形態におけるストレージがホストからのアクセス要求を処理する構成を詳細に示す図である。
【図４】本発明の一実施形態におけるコマンド管理情報格納部に格納される情報の例を示す図である。
【図５】本発明の一実施形態におけるコマンド管理情報格納部に格納される情報の例を示す図である。
【図６】本発明の一実施形態の動作（応答時間の確認処理と、コマンド列の変更処理）を示すフローチャートである。
【図７】本発明の一実施形態の動作（応答時間を満たしつつ、ランダムアクセス性能を最大化する発行先記憶媒体の変更、コマンド発行順序変更）示すフローチャート（その１）である。
【図８】本発明の一実施形態の動作（応答時間を満たしつつ、ランダムアクセス性能を最大化する発行先記憶媒体の変更、コマンド発行順序変更）示すフローチャート（その２）である。
【図９】本発明の実施例における、記憶媒体であるＨＤＤのシークで移動するＬＢＡとシーク時間の関係を表すグラフである。
【図１０】本発明の実施例における、ストレージ２に対するアクセス要求のアクセス元ホスト、時刻、アクセス内容の一覧を表形式で示す図である。
【図１１】本発明の実施例における、記憶媒体のアクセス待ちコマンド列のスケジューリング結果を示す図である。
【図１２】本発明の実施例における、スケジューリング結果を修正して応答時間保証を可能にした記憶媒体へのコマンド列を示す図である。
【発明を実施するための形態】
【００３２】
上記した本発明についてさらに詳細に説明すべく添付図面を参照して以下に説明する。冗長構成の複数の記憶媒体によるストレージにおいて、例えば特許文献１のような技術では、アクセスコマンド列のスケジューリング処理において、各記憶媒体に対するコマンド列の処理の完了時間を予測して利用する。このようなストレージでは、スケジューラはアクセスコマンドの処理完了時間の予測機能を具備している。また、スケジューラは、アクセス間の依存関係に問題を発生させないようにするために、アクセスコマンド間の依存関係の確認機能を具備している。
【００３３】
本発明においては、記憶媒体に対するコマンド列の処理完了時間の予測を行うスケジューラは、スケジューラ外部の応答時間制御部で指定されたコマンド列に対して、処理完了時間の予測を行い、その結果を応答時間制御部に返す。
【００３４】
本発明においては、スケジューラは、スケジューラ外部の応答時間制御部で指定されたコマンド列に対して、コマンド間の依存関係の問題発生の有無を結果として応答時間制御部に返す。スケジューラの外部の応答時間制御部において、記憶媒体に対するアクセスコマンドが保証すべき応答時間に間に合うか否かの判定を行う。コマンド間の依存関係とは、Ｒｅａｄコマンドで読み出したデータに対して演算を施した上でＷｒｉｔｅコマンドで更新するような場合、あるいは、Ｗｒｉｔｅコマンドで更新したデータをＲｅａｄコマンドで読み出すような場合、この２つのコマンド間でコマンド順序の変更は行えない。
【００３５】
本発明においては、応答時間制御部（図２の２４）は、保証すべき応答時間に間に合わないと判定した場合に、スケジューラに対して、処理順序の変更、Ｒｅａｄコマンドについては、発行先記憶媒体の変更を併せて行ったアクセスコマンド列を生成して、アクセスコマンド列の実行可否を、スケジューラ（図３の２２４）に対して確認を行う。さらに、
アクセスに対して保証すべき応答時間の情報を格納するための応答時間保証情報格納部（図２の２５）と、スケジューラと、応答時間制御機部（図２の２４）とがスケジューリング結果であるコマンドキュー（図３の２２３）に同時にアクセスすることを防ぐためのコマンドキューのロック機能（図３の２２５）と、応答時間制御部での処理の結果、アクセスに対する応答時間の保証が困難であることが判明した場合に、外部からのアクセス要求の受理を停止するための新規アクセス停止機能とを有する。
【００３６】
本発明においては、データを冗長に保持する複数記憶媒体からなるストレージにおいて、ランダムアクセス性能の向上を図りつつ、ホストからのアクセスに対して、応答時間に関する保証を同時に実現できる。
【００３７】
具体的には、ストレージ内部のスケジューラにおいて、各記憶媒体に対するアクセスコマンドについて、スケジューラがアクセスコマンドの処理が完了する時間を最小化し、ランダムアクセス性能が向上するように、各記憶媒体の負荷の均一化を目的としたＲｅａｄアクセスコマンドの配分、各記憶媒体に対するアクセスコマンド列についての処理完了時間を最小化するための整列、から構成されるスケジューリングを行う。
【００３８】
スケジューラは、記憶媒体の負荷を評価するために各アクセスコマンドの処理の完了時間を予測する。応答時間制御部は、スケジューリングの結果を、アクセスコマンド処理の完了時間の予測結果と共に参照することで、ストレージ外部からのアクセス要求を処理するための各アクセスコマンドについて、アクセスコマンドの生成から処理の完了までの時間が、ストレージ外部（ホスト）からのアクセス要求に対して保証すべき応答時間を満たすために十分であるか確認する。
【００３９】
応答時間制御部は、アクセスコマンドの完了までの時間から、アクセス要求に対する応答保証が困難であることを確認すると、スケジューラによるスケジューリング結果について、各アクセス要求とそれに伴う記憶媒体に対するアクセスコマンドについて、保証すべき応答時間に間に合うように修正する。
【００４０】
このとき、スケジューリング結果の修正は、スケジューラが本来目的としている、各記憶媒体に対するアクセスコマンドについての処理の完了時間の増大を最小限に抑え、ランダムアクセス性能の低下が最小限となるように、ランダムアクセス性能の低下幅の低いスケジューリング結果の変更を優先的に試みる。
【００４１】
さらに応答時間制御部は、修正したスケジューリング結果を、スケジューラ機能に送信し、保証すべき応答時間に間に合うか確認を行うために必要となる各アクセスコマンドの完了予測時間の算出と、アクセスコマンド間の依存関係に関する矛盾発生の確認を求める。これによって、修正したスケジューリング結果が、逐次、応答時間保証が可能であるかどうかを確認し、応答時間保証処理によるランダムアクセス性能の低下幅を最小限に抑える。
【００４２】
次に、本発明を実施形態のシステム構成について図面を参照して説明する。
【００４３】
はじめに本発明を適用したシステム構成の一例を説明する。図１は、本発明の一実施形態の構成を示す図である。図１を参照すると、本発明の実施形態において、システム全体の構成は、データにアクセスする１台以上のホスト１、複数の記憶媒体から構成されるストレージ２、ホスト１、ストレージ２を接続するネットワーク３を含む。
【００４４】
ネットワーク３は、ストレージ２に対して複数のホスト１が接続可能な形態のみならず、ホスト１とストレージ２が直接接続される形態であってもよい。ホスト１は、ＰＣ等任意のノード（端末）を用いることができる。
【００４５】
次に、本発明の一実施形態のストレージについて説明する。図２は、図１のストレージ２の構成の一例を示す図である。図２を参照すると、ストレージ２は、アレイ２１と、アクセス要求処理部２２と、アレイ構成情報格納部２３と、応答時間制御部２４と、応答時間保証情報格納部２５と、時刻取得部２６と、を備えている。
【００４６】
アレイ２１は、複数の記憶媒体２１１から構成される。アレイ２１内の複数の記憶媒体２１１は互いに格納するデータに冗長性を持つ。
【００４７】
またアレイ２１は、ストレージ２に格納されるデータ全てを保持し、アクセス要求処理部２２によって、アレイ２１を構成する各記憶媒体２１１に対して、Ｒｅａｄ（読み出し）アクセス、Ｗｒｉｔｅ（書き込み）アクセスが行われる。本実施形態において、ストレージ２のアレイ２１自体は公知のアレイを用いることができる。
【００４８】
アクセス要求処理部２２は、ホスト１からのアクセス要求の受理、及びホスト１への結果の返答又は応答処理を行う。図３は、アクセス要求処理部２２の構成の一例を示す図である。
【００４９】
アクセス要求処理部２２は、ホスト１からのアクセス要求に必要となる処理を、アレイ２１を構成する各記憶媒体２１１へのＲｅａｄコマンド、Ｗｒｉｔｅコマンドに変換し、アクセス要求、コマンドの情報を、コマンド管理情報格納部（図３の２２２）に格納する。
【００５０】
アクセス要求処理部２２は、記憶媒体２１１に発行予定の前記コマンドに対してスケジューラ（図３の２２４）を用いてスケジューリングを行い、発行先のＲｅａｄコマンドについて、各記憶媒体の負荷が均一になるように、発行先の記憶媒体の変更、及び／又は、各記憶媒体に対するコマンド列の発行順序の変更を実行し、アクセス時間を最小化するように、整列する。
【００５１】
アクセス要求処理部２２によるスケジューリングの結果は、アクセス要求処理部２２内のコマンドキュー（図３の２２３）に格納する。
【００５２】
アクセス要求処理部２２は、スケジューラ（図３の２２４）を用いて、応答時間制御部２４からの指示で、コマンド列の各コマンドの完了時間の予測処理と、コマンド関係の依存関係の有無確認の処理を行う。
【００５３】
更に、アクセス要求処理部２２は、
・コマンドキュー（図３の２２３）に格納されたスケジューリング結果が、スケジューリング処理中に読み出されないようにする機能（排他制御機能）、及び、
・ホスト１からのアクセス要求に対する応答時間保証が難しくなった際に、応答時間制御部２４からの指示で新規アクセスの停止処理を行う。
【００５４】
アレイ構成情報格納部２３は、
・アレイ２１内の記憶媒体２１１に対するストレージ２がホスト１に対して見せているアドレス空間との対応関係の情報、及び、
・各記憶媒体２１１に関する例えばＲＡＩＤレベル等の冗長性に関する情報を、
ホスト１からストレージ２に対してアクセスが行われる前に格納しておく。
【００５５】
アレイ構成情報格納部２３は、格納情報を、アクセス要求処理部２２及び応答時間制御部２４に提供する。
【００５６】
応答時間制御部２４は、応答時間保証情報格納部２５の情報を用いてアクセス要求処理部２２によるスケジューリング結果と、アレイ２１に対する各コマンドの完了時間の予測結果から、アレイ２１に対する各コマンドが、ホスト１からのアクセス要求に対して保証すべき時間に収まるか否かを確認する。
【００５７】
また、応答時間制御部２４は、アクセス要求処理部２２によるスケジューリングの結果、ホスト１からのアクセス要求の応答時間を保証することが困難であると判断した場合、アクセス要求処理部２２に対して、スケジューリングの結果を修正して、コマンド列の各コマンドの完了時間予測処理と、コマンド関係の依存関係の有無確認処理の実行を指示する。
【００５８】
さらに、応答時間制御部２４は、前記指示によるアクセス要求処理部の結果を用いて再度、アレイ２１に対する各コマンドが、ホスト１からのアクセス要求に対して保証すべき時間に収まるか否かを確認する。
【００５９】
応答時間保証情報格納部２５は、ホスト１からのアクセス要求に対して満たすべき応答時間の情報を、ホスト１からストレージ２に対してアクセスが行われる前に格納しておく。
【００６０】
応答時間保証情報格納部２５に格納される情報は、満たすべき応答時間、及び応答時間を満たすべきアクセスの条件を制限するための接続元のホスト１との対応情報である。
【００６１】
時刻取得部２６は、アクセス要求処理部２２がホスト１からのアクセス要求の受理時間の記録、及び、アレイ２１１に対する各コマンドの完了時間の予測を行うために現在時刻を提供する。
【００６２】
なお、図２のストレージ２において、少なくともアクセス要求処理部２２と応答時間制御部２４は、ストレージ２のコンピュータ上で実行されるプログラムによってその機能を実現するようにしてもよい。
【００６３】
図３を参照すると、アクセス要求処理部２２は、アクセス要求実行制御部２２１と、コマンド管理情報格納部２２２と、コマンドキュー２２３と、スケジューラ２２４と、コマンドキューロックフラグ２２５と、新規アクセス停止フラグ２２６と、を備える。図４は、コマンド管理情報格納部２２２内のアクセス要求管理情報の一例、図５は、コマンド管理情報格納部２２２内のコマンド管理情報の一例を示す図である。
【００６４】
はじめにアクセス要求実行制御部２２１を説明する。アクセス要求実行制御部２２１は、
・ホスト１からのアクセス要求の受理、及び
・アクセス要求の処理結果の送信、アクセス完了応答
を行う。
【００６５】
またアクセス要求実行制御部２２１は、ホスト１からのアクセス要求に関して、
・アレイ構成情報格納部２３から、アレイ２１内の記憶媒体２１１（図２）とストレージ２全体のアドレス空間の対応関係、及び冗長性の情報を取得し、
・ホスト１からのアクセス要求を、記憶媒体２１１に対するコマンドに変換し、
・アクセス要求及びコマンドの管理情報を、コマンド管理情報格納部２２２に格納し、コマンドをコマンドキュー２２３に格納する。
【００６６】
アクセス要求実行制御部２２１は、スケジューラ２２４に対して、
コマンドキュー２２３に格納されたアレイ２１に対するコマンド列について、全コマンドが完了するまでの時間を削減し、ランダムアクセス性能を高めるように、スケジューリングを行い、
発行先のＲｅａｄコマンドについて、各記憶媒体の負荷が均一になるように発行先を変更し、
各記憶媒体に対するコマンド列を、アクセス時間を最小化するように整列する。スケジューリング結果は、コマンドキュー２２３に格納する。
またアクセス要求実行制御部２２１は、コマンドキュー２２３のコマンド列をアレイ２１内の各記憶媒体２１１に発行してその結果を受け取る。
【００６７】
アクセス要求実行制御部２２１は、コマンドキューロックフラグ２２５を、スケジューラ２２４又は応答時間制御部２４の要求でロック、アンロックを行う。
【００６８】
アクセス要求実行制御部２２１は、応答時間制御部２４の要求で、新規アクセス停止フラグ２２６がセットされると、ホスト１からの新規アクセス要求の受理を停止する。
【００６９】
次にコマンド管理情報格納部２２２について説明する。コマンド管理情報格納部２２２は、アクセス要求実行制御部２２１がホスト１からのアクセス要求を受理した際に、アクセス要求管理情報（図４の２２２１）を格納する。
【００７０】
また、コマンド管理情報格納部２２２はアクセス要求実行制御部２２１がアクセス要求を処理するためのアレイ２１の各記憶媒体２１１に対して発行されるコマンドを生成した際に、コマンド管理情報（図５の２２２２）を格納する。
【００７１】
アクセス要求管理情報２２２１は、アクセス要求に付随する情報として、例えば、
（ａ）アクセス要求を受けた際に付与されるアクセス要求毎に固有なＩＤと、
（ｂ）ＲｅａｄであるかＷｒｉｔｅであるかのアクセス種別（図４ではＲ／Ｗと表現）と、
（ｃ）アクセス先のストレージ２全体におけるアドレス空間内での先頭ブロックのアドレスと、
（ｄ）アクセス長と、
（ｅ）アクセス要求の要求元ホストと、
（ｆ）各アクセス要求をホスト１から受理した時刻と、
（ｇ）各アクセス要求を処理するためにアレイ２１の各記憶媒体２１１に対して発行するコマンドを指し示すＩＤである対応コマンドＩＤと、
から構成される。
【００７２】
コマンド管理情報２２２２は、ホスト１からの各アクセス要求を処理するためにアレイ２１内の各記憶媒体２１１に対して発行されるコマンドに付随する情報を保持する。
【００７３】
コマンドに付随する情報として、例えば、
（ｈ）コマンド毎に固有なＩＤと、
（ｉ）コマンドの発行先となる記憶媒体を識別する情報と、
（ｊ）ＲｅａｄであるかＷｒｉｔｅであるかのアクセス種別（図５ではＲ／Ｗと表現）と、
（ｋ）アクセス先の記憶媒体２１１内での先頭ブロックのアドレスと、
（ｌ）アクセス長と、
（ｍ）コマンドに対応するホスト１からのアクセス要求に付加された、各アクセス要求に対するアクセス要求管理情報２２２１と同一のＩＤである対応アクセスＩＤと、
（ｎ）記憶媒体内でのコマンドＩＤと、
（ｏ）コマンドがアレイ２１の各記憶媒体２１１において処理完了となる完了予定時刻と、
（ｐ）各コマンドの実行状態と、
を記録する。
【００７４】
各コマンドの実行状態は、コマンドが現在コマンドキュー２２３内でコマンドがアレイ２１内の記憶媒体２１１に対する発行に備えて待機している状態を「待機」、コマンドがアレイ２１内の記憶媒体２１１で実行中であることを表す「実行」、コマンドの完了通知をアレイ２１内の記憶媒体２１１から受け取って処理が完了した状態を表す「完了」、の３種類の状態で表される。
【００７５】
次にコマンドキュー２２３について説明する。コマンドキュー２２３は、アレイ２１内の各記憶媒体２１１に発行予定のコマンドについて、発行順序を表すコマンド列を格納する。
【００７６】
コマンド列は、スケジューラ２２４によって処理完了時間を削減し、ランダムアクセス性能が向上するように整列される。
【００７７】
またコマンドキュー２２３は、スケジューラ２２４によってスケジューリングの際に予測された各コマンドの処理完了時間の予測結果を格納する。
【００７８】
コマンドキュー２２３は、コマンドキューロックフラグ２２５によって、アクセス要求実行制御部２２１、スケジューラ２２４、及び、アクセス要求処理部２２の外部にある応答時間制御部２４が、同時に参照又は更新を行わないように排他制御される。
【００７９】
次にスケジューラ２２４について説明する。スケジューラ２２４は、コマンドキュー２２３に格納されたアレイ２１内の各記憶媒体２１１に発行予定のコマンド列について、処理完了時間を削減し、ランダムアクセス性能が向上するように、スケジューリングを行い、コマンド列を整列する。
【００８０】
スケジューラ２２４は、コマンド列を構成する各コマンドの情報として、アクセス要求実行制御部２２１を介して、コマンド管理情報格納部２２２に格納された情報を参照する。
【００８１】
また、スケジューラ２２４は、コマンドキュー２２３に格納されたコマンド列のスケジューリングを行う際に、コマンド列の各コマンドの完了時間の予測を行う。
【００８２】
スケジューラ２２４は、スケジューリング結果である整列したコマンド列、及び各コマンドの完了時間の予測結果を、コマンドキュー２２３に格納する。
【００８３】
さらに、スケジューラ２２４は、アクセス要求処理部２２の外部にある応答時間制御部２４による指示を、アクセス要求実行制御部２２１を介して受けて、応答時間制御部２４から受け取ったコマンド列の各コマンドの完了時間予測処理と、コマンド関係の依存関係の有無確認の処理を実行する。
【００８４】
コマンドキューロックフラグ２２５は、アクセス要求実行制御部２２１、後記スケジューラ２２４、及びアクセス要求処理部２２の外部にある応答時間制御部２４が、同時にコマンドキュー２２３の参照又は更新を行わないように、ロック処理を行うための情報を格納する。
【００８５】
新規アクセス停止フラグ２２６は、アクセス要求実行制御部２２１によって参照される。新規アクセス停止フラグ２２６がセットされている場合には、アクセス要求実行制御部２２１は、ストレージ２がホスト１から新規アクセス要求の受理を停止する。
【００８６】
逆に、新規アクセス停止フラグ２２６がクリアされると、アクセス要求実行制御部２２１は、ストレージ２がホスト１から新規アクセス要求の受理を再開する。
【００８７】
新規アクセス停止フラグ２２６は、ホスト１からのアクセス要求に対する応答時間の保証が困難になった場合に、応答時間の保証を維持するために、応答時間制御部２４によってセットされる。逆に、応答時間の保証が困難な状況が解消された場合は、応答時間制御部２４によって新規アクセス停止フラグ２２６はクリアされる。
【００８８】
図３に示された、コマンド管理情報格納部２２２、コマンドキュー２２３、スケジューラ２２４、では相互間及びアクセス要求処理部２２の外部と情報を伝達、要求する場合にアクセス要求実行制御部２２１を介するように示しているが、アクセス要求実行制御部２２１を介さずに、直接情報を、伝達、要求する構成としてもよい。
【００８９】
また図３では、コマンドキューロックフラグ２２５、新規アクセス停止フラグ２２６に対してアクセス要求処理部の内部及び外部から参照、更新がアクセス要求実行制御部２２１を通して行われるように示されているが、アクセス要求実行制御部２２１を通さずに直接参照、更新を行う構成としてもよい。
【００９０】
図６は、本発明の一実施形態における応答時間の確認処理と、コマンド列の変更処理の手順を示すフローチャートである。図７は、本発明の一実施形態において、応答時間を満たしつつランダムアクセス性能を最大化する発行先記憶媒体の変更、コマンド発行順序変更の手順を示すフローチャートである。図８は、図７のつづきのフローチャートである。図７、図８は単に図面作成の都合で分図されている。次に、図１、図２、図３、図６、図７、図８を参照して、ホスト１からストレージ２に対するアクセス要求の応答時間保証を実現する場合の動作例を説明する。
【００９１】
まず図１、図２、図３、図６を参照して、ストレージ２におけるホスト１からのアクセス要求を処理するためのコマンドについて、スケジューラ２２４（図３）によってスケジューリングが行われた後に、スケジューリング結果であるコマンドキュー２２３（図３）に格納された、アレイ２１内の各記憶媒体２１１（図２）に対するコマンド列について、
応答時間制御部２４により、
・ホスト１からのアクセス要求に対する応答時間を保証可能であるかどうか確認、及び、
・アクセス要求に対する応答時間を満たすようにコマンドキュー２２３に格納されたアレイ２１内の各記憶媒体２１１に対するコマンド列を変更する
手順について説明する。
【００９２】
応答時間制御部２４（図２）は、アクセス要求処理部２２（図２）に対して、コマンドキュー２２３（図３）のロックを取得する（ステップＳ１０１）。応答時間制御部２４がコマンドキュー２２３のロックを取得すると、アクセス要求処理部２２内のコマンドキューロックフラグ２２５（図３）が、アクセス要求実行制御部２２１（図３）によって、セットされる。コマンドキュー２２３に対するロックは、アクセス要求実行制御部２２１、スケジューラ２２４（図３）、及び、応答時間制御部２４（アクセス要求処理部２２の外部にある）が、同時に、コマンドキュー２２３の参照又は更新を行わないようにするために取得する。つまり、応答時間制御部２４が応答時間の保証が可能であるか確認及び応答時間を保証可能なようにコマンド列を更新する間は、アレイ２１内の記憶媒体２１１（図２）に対するコマンド発行、及び、スケジューラ２２４によるスケジューリングに伴う結果のコマンドキュー２２３への格納は行われない。
【００９３】
応答時間制御部２４は、アクセス要求処理部２２から、スケジューリング結果として、
・コマンドキュー２２３に格納された、アレイ２１内の記憶媒体２１１に対するコマンド列、及び、
・コマンド列に含まれる各コマンドの完了予測時間の情報
を取得する（ステップＳ１０２）。
【００９４】
応答時間制御部２４は、アクセス要求処理部２２からコマンド管理情報格納部２２２に格納された、各コマンドによって処理されるホスト１からストレージ２に対するアクセス要求の受理時間の情報を取得する（ステップＳ１０３）。
【００９５】
応答時間制御部２４は、
・ステップＳ１０２とＳ１０３で得た情報と、
・応答時間保証情報格納部２５（図２）から取得した、ホスト１からストレージ２に対する各アクセス要求に対して保証すべき応答時間の情報と、
を用いて、アレイ２１内の各記憶媒体２１１に対するコマンドの完了時間が、ホスト１のアクセス要求に対して保証すべき応答時間を満たすものであるか確認する（ステップＳ１０４）。
【００９６】
応答時間制御部２４は、ステップＳ１０４の確認の結果、ホスト１からのアクセス要求に対して保証すべき応答時間（応答保証時間）を満たさない原因となる記憶媒体２１１に対するコマンドが存在する場合（ステップＳ１０５のＹｅｓ分岐）、応答保証時間を満たさない各コマンドについて、コマンドキュー２２３に格納されたコマンド列（スケジューラ２２４によるスケジューリングの結果、コマンドキュー２２３に格納された、アレイ２１内の各記憶媒体２１１に対するコマンド列）に対して、コマンド列を整列し（再スケジュール）、各コマンドが対応する応答時間を満たすように変更する。また、応答時間制御部２４は、コマンドがアクセス先の記憶媒体２１１を、コマンドが応答時間満たすように変更する（ステップＳ１０６）
【００９７】
ホスト１からのアクセス要求に対して保証すべき応答時間を満たせない原因となる記憶媒体２１１に対するコマンドが存在しない場合（ステップＳ１０５のＮｏ分岐）、ステップＳ１０９の処理を実行する。
【００９８】
ステップＳ１０６による処理の結果、アレイ２１内の記憶媒体２１１に対して発行するコマンドに、保障すべき応答時間を満たさないコマンドが残されている場合（ステップＳ１０７のＹｅｓ分岐）、応答時間制御部２４は、アクセス要求処理部２２に対して、新規アクセス停止フラグ２２６のセットを指示することで、アクセス要求処理部２２がホスト１からストレージ２に対する新規アクセス要求の受理を停止させる（ステップＳ１０８）。
【００９９】
ステップＳ１０６による処理の結果、アレイ２１内の記憶媒体２１１に対して発行するコマンドに、保障すべき応答時間を満たさないコマンドが１個も残されていない場合（ステップＳ１０７のＮｏ分岐）、応答時間制御部２４は、アクセス要求処理部２２に対して、新規アクセス停止フラグ２２６（図３）のクリアを指示し、アクセス要求処理部２２が、ホスト１からストレージ２に対する新規アクセス要求の受理を再開させる（ステップＳ１０９）。
【０１００】
また、ステップＳ１０９の応答時間制御部２４による、アクセス要求処理部２２に対する新規アクセス停止フラグ２２６のクリア指示は、ステップＳ１０５のＮｏ分岐においても実行される。
【０１０１】
応答時間制御部２４は、コマンドキュー２２３のロックを開放する。応答時間制御部２４がロックを開放すると、アクセス要求処理部２２内のコマンドキューロックフラグ２２５が、アクセス要求実行制御部２２１によってクリアされる（ステップＳ１１０）。
【０１０２】
以上のステップＳ１０１からＳ１１０までの処理を行い、ストレージ２におけるホスト１からのアクセス要求を処理するためのコマンドについて、スケジューラ２２４によってスケジューリングが行われる。
【０１０３】
そして、スケジューリング結果であるコマンドキュー２２３に格納された、アレイ２１内の各記憶媒体２１１に対するコマンド列について、ホスト１からのアクセス要求に対する応答時間を保証可能であるかどうか確認、及び、アクセス要求に対する応答時間を満たすようにコマンドキュー２２３に格納されたアレイ２１内の各記憶媒体２１１に対するコマンド列を変更する処理が終了する。
【０１０４】
なお、図６のステップＳ１０２からＳ１０３の処理は、必ずしも、図６で定められた実行順序である必要ではなく、任意の順序で実行してもよい。
【０１０５】
次に図１、図２、図３、図６、図７、図８を参照して、図６のステップＳ１０６における更に詳細な手順について説明する。図６のステップＳ１０６では、応答時間制御部２４は、ホスト１からのアクセス要求に対して保障すべき応答時間を満たせない原因となっている各コマンドについて、アレイ２１内の記憶媒体２１１に対するコマンド列をホスト１からのアクセス要求に対して保障すべき応答時間を満たすように変更する。
【０１０６】
応答時間制御部２４は、アクセス要求処理部２２のコマンドキュー２２３からアレイ２１内の各記憶媒体２１１に対するアクセス待ちのコマンド列と、各コマンドの処理が完了する予測時間情報を取得する（ステップＳ２０１）。
【０１０７】
応答時間制御部２４は、アレイ２１内の記憶媒体２１１のうち、後続ステップ（Ｓ２０２以降の処理）で、未着目（未処理）である記憶媒体２１１から、全ての待機中のコマンドが完了するまでの予測時間が最も早いものに着目する（ステップＳ２０２）。
【０１０８】
ステップＳ２０２で着目すべき記憶媒体２１１が存在する場合には（ステップＳ２０３のＹｅｓ分岐）、ステップＳ２０４以降の処理を継続する。
【０１０９】
ステップＳ２０２で着目すべき記憶媒体２１１が存在しない、つまりステップ２０２以降の処理で、全ての記憶媒体２１１を対象とした処理手順が完了している場合（ステップＳ２０３のＮｏ分岐）、処理を終了する。このとき、ホスト１からのアクセス要求に対して、保障すべき応答時間を満たせない原因であるコマンド（ステップＳ２０１からの一連の手順で着目したコマンド）については、保障すべき応答時間を満たすようにコマンド列を変更することが不可能である。そのため、他にホスト１からのアクセス要求に対して、保障すべき応答時間を満たせない原因となっているコマンドの有無、及び、保障すべき応答時間を満たすようにコマンド列の変更ができるかどうかに関わらず、図６のステップＳ１０７ではＹｅｓ分岐が選択される。
【０１１０】
ステップＳ２０２で着目した記憶媒体２１１について、ステップＳ２０１からの一連の手順で着目したコマンドの発行先ではない場合（ステップＳ２０４のＹｅｓ分岐）、且つ、一連の手順で着目中のコマンドがＷｒｉｔｅである場合（ステップＳ２０５のＹｅｓ分岐）、ステップＳ２０２に戻り、別の記憶媒体２１１について着目する。
【０１１１】
ステップＳ２０２で着目した記憶媒体２１１について、一連の手順で着目したコマンドの発行先である場合（ステップＳ２０４のＮｏ分岐）、又は、一連の手順で着目中のコマンドがＷｒｉｔｅではなくＲｅａｄである場合（ステップＳ２０５のＮｏ分岐）、応答時間制御部２４は、スケジューラ２２４に対して、ステップＳ２０１からの一連の処理で着目中のコマンドが、仮にステップＳ２０２で着目した記憶媒体２１１をコマンドの発行先として変更した場合に、記憶媒体２１１に対して発行待ちのコマンド列についてアクセスの完了時間を最小化するようなコマンド列の整列処理を、コマンド要求処理部２２のスケジューラ２２４に指示する（ステップＳ２０６）。
【０１１２】
コマンド要求処理部２２のスケジューラ２２４は、ステップＳ２０６において行われた応答時間制御部２４からの指示により、スケジューリングを行ったコマンド列を、結果として応答時間制御部２４に返す。
【０１１３】
応答時間制御部２４は、スケジューラ２２４の返したコマンド列について、応答時間保証情報格納部２５から取得した、ホスト１からストレージ２に対する各アクセス要求に対して保証すべき応答時間の情報を用いて、コマンド列に含まれる各コマンドの完了時間が、ホスト１のアクセス要求に対して保証すべき応答時間を満たすものであるか確認する。（ステップＳ２０７）。
【０１１４】
ステップＳ２０７において、ホスト１からのアクセス要求に対して保証すべき応答時間を満たせない原因となる記憶媒体２１１に対するコマンドが存在する場合（Ｓ２０８のＹｅｓ分岐）、応答時間制御部２４は、ステップＳ２０７のコマンド列の整列結果を破棄し、スケジューラ２２４により、ステップＳ１０１からの一連の手順より前に求められた、アレイ２１内の記憶媒体２１１に対する元のコマンド列に対して、ステップＳ２０１からの一連の手順で着目しているコマンドをコマンド列の先頭に追加した、新しいコマンド列を生成する（ステップＳ２０９）。
【０１１５】
ステップＳ２０７において、ホスト１からのアクセス要求に対して保証すべき応答時間を満たせない原因となる記憶媒体２１１に対するコマンドが存在しない場合（ステップＳ２０８のＮｏ分岐）、応答時間制御部２４は、ステップＳ２１３以降の手順を実行する。
【０１１６】
応答時間制御部２４は、ステップＳ２０９で生成した新たなコマンド列について、アクセス要求処理部２２内のスケジューラ２２４を用いて、コマンド列に含まれる各コマンドの完了時間の算出、及び、コマンド間の依存関係の有無を確認する（ステップＳ２１０）。
【０１１７】
ステップＳ２１０における、指示の結果、コマンド列のコマンド間の依存関係に問題がなく（ステップＳ２１１のＹｅｓ分岐）、且つ、ステップＳ２１０において算出した各コマンドの完了時間を参照した結果、各コマンドが保証すべき応答時間を満たせない原因となるコマンドが存在しなかった場合（ステップＳ２１２のＹｅｓ分岐）、応答時間制御部２４は、アクセス要求処理部２２に対してコマンドキュー２２３に格納されたコマンド列を、Ｓ２０９で生成した新たなコマンド列で更新してＳ２０１からの一連の手順を終了する（ステップＳ２１３）。
【０１１８】
このとき、ホスト１からのアクセス要求に対して保障すべき応答時間を満たせない原因である、ステップＳ２０１からの一連の手順で着目したコマンドについては、保障すべき応答時間を満たすようにコマンド列が変更されている。
【０１１９】
ホスト１からのアクセス要求に対して保障すべき応答時間を満たせない原因になっているコマンドが他にも存在する場合は、該コマンドについて、再び、図７のステップＳ２０１からの手順を実行する。
【０１２０】
逆に前記コマンドが存在しない場合には、図６のステップＳ１０７でＮｏ分岐が選択される。
【０１２１】
図８のステップＳ２１０における指示の結果、コマンド列のコマンド間の依存関係に問題が発生している（ステップＳ２１１のＮｏ分岐）、又は、ステップＳ２１０において算出した各コマンドの完了時間で、各コマンドが保証すべき応答時間を満たせない原因となるコマンドが存在した場合（ステップＳ２１２のＮｏ分岐）、応答時間制御部２４は、ステップＳ２１４以降の手順を実行する。
【０１２２】
ステップＳ２０１からの一連の手順で着目したコマンドが、ステップＳ２１０でのコマンド列中で最末尾に格納されている場合（ステップＳ２１４のＹｅｓ分岐）、ステップＳ２０２の処理に戻り、アレイ２１内の記憶媒体２１１の着目記憶媒体を変更する。
【０１２３】
図７のステップＳ２０１からの一連の手順で着目したコマンドが、図８のステップＳ２１０でのコマンド列中で最末尾以外の位置に格納されている場合（ステップＳ２１４のＮｏ分岐）、着目コマンドを、コマンド列の中で、１コマンド分末尾方向に、格納位置を移動する。つまり、コマンド列内で着目コマンドの直後のコマンドとの間で発行順序を変更する（ステップＳ２１５）。着目コマンドをコマンド列の先頭に配置し、応答保証時間を満たさない場合、着目コマンドのコマンド列中での位置を順次後退させていき、コマンドの完了予測時間を再計算する手順を、応答保証時間を満たすまで（コマンド列末尾に位置するまで）繰り返す。
【０１２４】
以上のステップＳ２０１からＳ２１５までの処理を行うことで、ホスト１からのアクセス要求に対して保障すべき応答時間を満たせない原因となっている各コマンドについて、アレイ２１内の記憶媒体２１１に対するコマンド列をホスト１からのアクセス要求に対して、保障すべき応答時間を満たすように変更する処理（応答時間制御部２４による処理）が終了する。
【０１２５】
なお、図７のステップＳ２０４からＳ２０５の条件分岐は、必ずしも図７で定められた実行順序である必要ではなく、任意の順序で実行してもよい。また前記ステップＳ２１１からＳ２１２の条件分岐は、必ずしも図８で定められた実行順序である必要ではなく、任意の順序で実行してもよい。
【０１２６】
ステップＳ２０９において、コマンド列に対して新たに着目中のコマンドを追加する位置は、必ずしもコマンド列の先頭ではなく、例えばコマンド列の最末尾であってもよい。この場合ステップＳ２１５における着目コマンドの移動方向は、最末尾方向ではなく先頭方向に変化する。
【０１２７】
図６のステップＳ１０１からＳ１１０、図７のステップＳ２０１から図８のＳ２１５の動作例として、図３のスケジューラ２２４によるスケジューリング結果である、コマンドキュー２２３のコマンド列に対して、各コマンドがホスト１からのアクセス要求の応答時間を保証できるようにコマンド列を変更する場合の動作を、図１、図２、図３、図６、図７、図８、図９を用いて示す。
【０１２８】
本実施例では、図１において、２台のホスト１からネットワーク３を通してストレージ２にアクセスが行われるものとする。２台のホスト１を、それぞれ、ホストＡ、ホストＢと呼ぶ。ホストＡ、Ｂに対してストレージ２に対するアクセス要求に対して保証すべき応答時間をそれぞれ５０ｍｓ、２５ｍｓとする。図２の応答時間保証情報格納部２５には、ストレージ２に対するアクセス要求に対して保証すべき応答時間として、ホストＡ、Ｂに対して、５０ｍｓ、２５ｍｓが格納される。
【０１２９】
図２のアレイ２１を構成する記憶媒体２１１は２台のＨＤＤとし、ＨＤＤ１、ＨＤＤ２とする。２台のＨＤＤ１、２は、同一データを保持するＲＡＩＤ１構成であり、２台のＨＤＤはデータの格納位置、性能が同一であるとする。
【０１３０】
本実施例では、ストレージ２がホスト１からアクセスを受ける際のアドレスが２台のＨＤＤのアドレス空間と一致していると仮定する。つまり、この場合、ホスト１からストレージ２に対して、例えばアドレス１００のデータをＲｅａｄした場合、該当するデータは２台のＨＤＤのアドレス１００の位置に格納されている。このアドレスを、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ：論理ブロックアドレス）という。
【０１３１】
本実施例で用いるＨＤＤにおける、ヘッドがシークを行う距離をＬＢＡで表したものとシーク時間との関係を、図９に示す。図９には、本実施例における、シークで移動するＬＢＡとシーク時間（単位：ｍｓ）の関係が、特性３１として示されている。２台のＨＤＤのヘッドは実施例の開始時点で共にＬＢＡで０の位置にあると仮定する。ＬＢＡの移動量１００あたりのシーク時間は常に３ｍｓであるとする。つまり、ＨＤＤのヘッドがＬＢＡで１０００移動する場合、３０ｍｓのシーク時間を要する。
【０１３２】
ＨＤＤの回転待ち時間は常に５ｍｓであるものとする。また記憶媒体であるＨＤＤ以外に、ストレージ２内部におけるアクセス要求に対する処理時間のオーバーヘッドとしてＨＤＤへのアクセスの前後に、それぞれ１ｍｓの時間を要するものと仮定する。
【０１３３】
図１０の、実施例におけるアクセス元ホスト、時刻、アクセス内容の一覧３２を示す図である。本実施例では、ストレージ２に対して、図１０の一覧３２を示した時刻、要求元ホスト、アクセス種別、アドレスの関係でアクセスが行われるものとする。図１０において、時刻はアクセス開始時点からの経過時間で表している。
【０１３４】
この例では、
・開始と同時に（時刻０ｍｓ）、ホストＡからＬＢＡ０に対してＷｒｉｔｅを要求し、
・開始から２ｍｓが経過した後に（時刻２ｍｓ）、ホストＡがＬＢＡ７００に対してＲｅａｄを要求する。
・開始から３ｍｓ経過時（時刻３ｍｓ）、ホストＢがＬＢＡ５００に対してＲｅａｄを要求する。
・開始から４ｍｓ経過時（時刻４ｍｓ）、ホストＢがＬＢＡ２００に対してＲｅａｄを要求する。
・開始から１０ｍｓ経過時（時刻１０ｍｓ）、ホストＢがＬＢＡ１０００に対してＲｅａｄを要求する。
【０１３５】
アクセス元ホスト、時刻、アクセス内容の一覧３２に示されたホストＡ、ホストＢからのアクセス要求について、
・シーク時間を最短とし、
・ランダムアクセス性能を最大化するように、
スケジューラ２４４がスケジューリングを行った結果が、図１１に示した、ＨＤＤのアクセス待ちコマンド列のスケジューリング結果３３である。
【０１３６】
ＨＤＤ１へのコマンド列（スケジューリング結果）は、
ＬＢＡ  ０へのＷｒｉｔｅコマンド（開始０ｍｓ、終了６ｍｓ）
ＬＢＡ  ２００からのＲｅａｄコマンド（開始５ｍｓ、終了１７ｍｓ）、
ＬＢＡ  ５００からのＲｅａｄコマンド（開始１６ｍｓ、終了３１ｍｓ）
がこの順に待機する。
ＨＤＤ２へのコマンド列（スケジューリング結果）は、
ＬＢＡ  ０へのＷｒｉｔｅコマンド（開始０ｍｓ、終了６ｍｓ）
ＬＢＡ  ７００からのＲｅａｄコマンド（開始５ｍｓ、終了３２ｍｓ）、
ＬＢＡ  １０００からのＲｅａｄコマンド（開始３１ｍｓ、終了４６ｍｓ）
がこの順に待機する。なお、ＲＡＩＤ１において、Ｗｒｉｔｅコマンドにより、ＨＤＤ１とＨＤＤ２へは、同一のＬＢＡに同一のデータが書き込まれる。
【０１３７】
本実施例におけるスケジューリング結果では、ＬＢＡ５００に対するホストＢからのＲｅａｄ要求について着目すると（図１１のＲｅａｄ  ５００：開始１６ｍｓ、終了：３１ｍｓ）、ホストＢからストレージ２に対してアクセス要求が行われた時刻が３ｍｓ（図１０参照）であるのに対し、アクセス要求に対する処理が終了するのが３１ｍｓであるため、応答時間は３１−３＝２８ｍｓと求められる。しかし、これはホストＢに対して保証すべき応答時間である２５ｍｓに間に合わない。
【０１３８】
そこで、図６のステップＳ１０１からＳ１１０、及び、図７、図８のステップＳ２０１からＳ２１５までの手順を適用して保証すべき応答時間を満たすように、アクセス列を修正する。図１２に、修正した結果を示す。図１２には、応答時間保証が可能なＨＤＤへのコマンド列３４が示されている。
【０１３９】
まず、本実施例におけるＨＤＤのアクセス待ちコマンド列のスケジューリング結果３３（図１１）について、応答時間の保証ができていないＬＢＡ５００に対するＲｅａｄに着目している。
【０１４０】
応答時間の保証ができていないアクセス要求はＲｅａｄであるため、ＨＤＤ１に対して発行されるＲｅａｄコマンドは、ＨＤＤ２でも代用が可能である。
【０１４１】
そこで、ＬＢＡ５００に対するＲｅａｄコマンド（Ｒｅａｄ  ５００）を、ＨＤＤ２に対するコマンド列に移動させて、スケジューラ２４４によってシーク時間を最短とし、コマンドの完了までの時間が最小となるようにスケジューリングを行う。本実施例において、Ｒｅａｄコマンド（Ｒｅａｄ  ５００）のＨＤＤ１からＨＤＤ２に対するコマンド列への移動（アクセス先ディスクの変更、順序の変更）は、応答時間制御部２４（図２）がコマンドキュー２２３（図３）を直接操作することで行われるが、応答時間制御部２４はアクセス要求実行制御部２２１のスケジューラ２２４に対してコマンドのスケジューリングの制約条件の指示のみを行い、実際のコマンドの変更操作はスケジューラ２２４で行うようにしてもよい。
【０１４２】
その結果、図１２に示したように、ＬＢＡ５００に対するＲｅａｄコマンドへの応答時間は２６−３＝２３ｍｓと、ホストＢからのアクセス要求に対して保証すべき応答時間である２５ｍｓに間に合う。
【０１４３】
一方、ＬＢＡ５００に対するＲｅａｄアクセスの影響で、ＬＢＡ７００とＬＢＡ１０００に対するホストＡからのＲｅａｄアクセス要求への応答時間は増大する。
【０１４４】
しかし、本実施例において、応答時間の増加幅は、ＨＤＤ１、ＨＤＤ２が１コマンドあたり要する回転待ち時間１回分で済む。すなわち、応答時間の保証に伴う余分なヘッドのシークによる完了時間の増加は、最小限に抑えることができる。
【０１４５】
また、ＬＢＡ７００と１０００に対するＲｅａｄアクセス要求について、応答時間を確認すると、それぞれ３７−２＝３５ｍｓ、５１−１０＝４１ｍｓと、ホストＡに対して保証すべき応答時間である５０ｍｓに間に合う。
【０１４６】
つまり、本実施例において、全てのアクセス要求に対する応答時間の保証を実現しつつ、スケジューリング結果の修正によるランダムアクセス性能の悪化を最小限に抑えられることが分かる。
【産業上の利用可能性】
【０１４７】
本発明によれば、記憶媒体として複数のＨＤＤを冗長性を持つＲＡＩＤレベルで使用するディスクアレイ等に適用できるほか、ＨＤＤ以外にも例えばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）といった他の記憶媒体を複数使用して、記憶媒体間でデータの冗長性を確保したストレージ等に適用可能である。
【０１４８】
本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１４９】
１  ホスト
２  ストレージ
３  ネットワーク
２１  アレイ
２１１  記憶媒体
２２  アクセス要求処理部
２２１  アクセス要求実行制御部
２２２  コマンド管理情報格納部
２２３  コマンドキュー
２２４  スケジューラ
２２５  コマンドキューロックフラグ
２２６  新規アクセス停止フラグ
２２２１  アクセス要求管理情報
２２２２  コマンド管理情報
２３  アレイ構成情報格納部
２４  応答時間制御部
２５  応答時間保証情報格納部
２６  時刻取得部
３１  実施例におけるシークで移動するＬＢＡとシーク時間の関係
３２  実施例におけるアクセス元ホスト、時刻、アクセス内容の一覧
３３  実施例におけるＨＤＤのアクセス待ちコマンド列  のスケジューリング結果
３４  実施例における応答時間保証が可能なＨＤＤへのコマンド列
【図１】
2011054042.tif 000003
【図２】
2011054042.tif 000004
【図３】
2011054042.tif 000005
【図４】
2011054042.tif 000006
【図５】
2011054042.tif 000007
【図６】
2011054042.tif 000008
【図７】
2011054042.tif 000009
【図８】
2011054042.tif 000010
【図９】
2011054042.tif 000011
【図１０】
2011054042.tif 000012
【図１１】
2011054042.tif 000013
【図１２】
2011054042.tif 000014