(57)【要約】【課題】従来、複数のハードディスクドライブへのアクセスを統合管理するストレージシステムではあらかじめ過剰負荷が予測されるコンテンツをもつハードディスクドライブに対して多重化するが、事前に予測しないある特定のハードディスクドライブに負荷が集中するような場合にはレスポンスが遅延し、サービスが低下する、という課題があった。【解決手段】各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、を有する動的負荷分散ストレージ方法によって上記課題が解決される。【選択図】図１
2007310715.tif 000002
【特許請求の範囲】
【請求項１】
複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージ方法であって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、
前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、
を有することを特徴とする動的負荷分散ストレージ方法。
【請求項２】
前記負荷集中監視ステップは、さらに、
個別のハードディスクドライブへの読出し処理頻度を取得する読出し処理頻度取得ステップと、
前記読出し処理頻度取得ステップで取得された読出し処理頻度に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップと、
を有することを特徴とする請求項１記載の動的負荷分散ストレージ方法。
【請求項３】
前記負荷集中監視ステップは、さらに、
個別のハードディスクドライブに対するアクセス要求の処理中にさらに該同一のハードディスクドライブへの新たな読出し要求を受けた場合に、当該新たな読出し要求を読出し要求待ち行列で管理する読出し要求待ち行列管理ステップと、
前記読出し要求待ち行列の状態に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップと、
を有することを特徴とする請求項１記載の動的負荷分散ストレージ方法。
【請求項４】
複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージシステムであって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視手段と、
前記負荷集中監視手段で検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成手段と、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセス手段と、
を有することを特徴とする動的負荷分散ストレージシステム。
【請求項５】
複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージをコンピュータに実行させる動的負荷分散ストレージ情報処理プログラムであって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、
前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、
をコンピュータに実行させることを特徴とする動的負荷分散ストレージ情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のハードディスクドライブへのアクセスを統合管理するストレージシステムに関する発明であり、特に、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる技術に関するものである。
【背景技術】
【０００２】
従来のストレージシステムではRAID（Redundant Arrays of Inexpensive Disks）技術を使って、データを複数のハードディスクドライブに分散させることによってディスク故障に対する耐障害性またはシステム全体の性能を向上させている。例えば下記特許文献１では、複数のハードディスクドライブをFC-AL(Fibre Channel Arbitrated Loop:ファイバチャンネル調停ループ)で統合するストレージシステムで、特定ディスク接続部の障害がループ内の他のハードディスクドライブへのアクセスを不能とさせることのないストレージシステム技術を開示している。
【０００３】
ここでは背景技術として、このような従来のストレージシステムのハード構成例を図16で説明する。複数のハードディスクドライブHDDがひとつのドライブエンクロージャDE’にあり、これらはそれぞれポートバイパス回路PBC#0およびポートバイパス回路PBC#1によってアクセスできるようになっている。
【０００４】
図16では複数個のドライブエンクロージャDE’がコネクタA,B,C,Dによって接続されている。この太線の接続線はFC-AL(Fibre Channel Arbitrated Loop:ファイバチャンネル調停ループ)と呼ばれるものでA,Cを結ぶループ#0とB,Dを結ぶループ#1の二つのループで上位制御エンクロージャCEからアクセスを受ける。このように複数個のドライブエンクロージャDE’は二つのFC-AL(Fibre Channel Arbitrated Loop:ファイバチャンネル調停ループ)でカスケード接続され、制御エンクロージャCEはいずれのドライブエンクロージャDE’にも、またいずれのループによってもアクセス可能である。
【０００５】
ポートバイパス回路PBCにはハードディスクドライブHDDとの接続を制御するループスイッチLSIチップとこれに指示を与えデータを授受するR/W制御プロセッサMPUとが装備されている。ドライブエンクロージャDE内の二つのR/W制御プロセッサMPU#0およびR/W制御プロセッサMPU#1もループ#0およびループ#1に対応して各ドライブエンクロージャDE’間をイーサネット（登録商標）接続する。図ではこれを破線の太線で示した。
【０００６】
制御エンクロージャCEはホストコンピュータなどのアプリケーションソフトウェアによってファイルアクセス依頼を受け、該当ファイルを持つドライブエンクロージャDE’を見出して該当ドライブエンクロージャDE’のR/W制御プロセッサMPUに配下の該当ハードディスクドライブHDDへのアクセスを指示する。このときループ#0を使うかループ#1を使うかはアプリケーションの指示に従う。
【０００７】
このようすを模式的に図17で示した。図では６個のハードディスクドライブHDDがループ#0およびループ#1の両方からアクセス可能となっている。またHSと記したハードディスクドライブHDDはホットスペアであって、現在はループ#0にもループ#1にも接続していない。このような接続指定は図でInitiatorと記すR/W制御プロセッサMPUからループスイッチLSIチップへの指示でおこなわれる。したがって、R/W制御プロセッサMPUによる新たな接続変更指示によって、図のホットスペアはいずれのループにも接続しうる。
【０００８】
また、制御エンクロージャCEからポートバイパス回路PBCへのアクセス要求はハードディスクドライブHDDの物理機番wwnを指定して発せられるが、ポートバイパス回路PBCではこれをループスイッチLSIチップのポート番号al_pa=xでアクセスするので、R/W制御プロセッサMPUでは物理機番wwnとポート番号al_paをマッピングするポート管理テーブルをもつ。
【０００９】
さて、このような大容量高信頼のストレージシステムによって、多くの大容量コンテンツの格納と提供をおこなうサーバの構築が可能となり、例えばインターネットを通じて顧客の選択に応じて動画等のストリーミング配信をおこなうビジネスが創出されている。
【００１０】
このようなビジネスでは、あらかじめ多数顧客からのアクセスが予想されるコンテンツはサーバを多重化してアクセスを分散させるなどの負荷分散対処が通常なされている。しかし、多数視聴者の求めるものが世の中の事件やイベントに左右されて、予想を上回って特定のコンテンツにアクセスが集中するといった事態が出現することがある。このような場合、事前に予測しないある特定のハードディスクドライブに負荷が集中する可能性があった。
【特許文献１】特開２００５−３３９２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記のように、従来の負荷分散ストレージシステムではあらかじめ過剰負荷が予測されるコンテンツをもつハードディスクドライブに対して多重化する。しかし、事前に予測しないある特定のハードディスクドライブに負荷が集中する可能性は必ず存在し、かかる場合にはレスポンスが遅延し、視聴者サービスが低下する、という課題があった。
【課題を解決するための手段】
【００１２】
従来の負荷分散ストレージシステムでは事前に予測しないある特定のハードディスクドライブに負荷が集中した場合にはレスポンスが遅延する、という前記課題は、図１に示す如く、複数のハードディスクドライブHDDへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブHDDへの負荷集中時に該負荷を分散させる動的負荷分散ストレージ方法であって、図３に示す如く、  各ハードディスクドライブHDDへの負荷集中度合を監視する負荷集中監視ステップ（ステップS302,303）と、前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップ（ステップS305）と、前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップ（ステップS309）と、を有する動的負荷分散ストレージ方法によって解決される。
【００１３】
すなわち、本発明の動的負荷分散ストレージ方法では、図１の負荷調整用プロセッサA（その内部は図２の負荷調整用プロセッサA1に示す）に備えられた図２の負荷集中監視手段A11が常時  ハードディスクドライブHDDの過剰負荷を監視しており、過剰負荷ハードディスクドライブHDD(el)が発見されると、負荷調整用プロセッサA1のミラー用ハードディスクドライブ作成手段A13を起動してミラー用ハードディスクドライブHDD（ｍ）を作成し、以後の過剰負荷ハードディスクドライブへのアクセス依頼に対しては、負荷分散アクセス手段A14によって、その一部をミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行するので動的な負荷分散が図られる。
【００１４】
また、前記課題は、図３に示すごとく、個別のハードディスクドライブへの読出し処理頻度を取得する読出し処理頻度取得ステップ（図３ステップ302）と、前記読出し処理頻度取得ステップで取得された読出し処理頻度に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップ（図３ステップ303）とを有する負荷集中監視ステップにより、効果的に解決される。
【００１５】
すなわち、ハードディスクドライブへの読出し処理頻度は比較的容易に取得可能であり、かつ負荷集中の度合いを示す指標となりうるので、効果的に負荷集中監視ステップを実現可能である。
また、前記課題は、図12に示すごとく、個別のハードディスクドライブに対するアクセス要求の処理中にさらに該同一のハードディスクドライブへの新たな読出し要求を受けた場合に、当該新たな読出し要求を読出し要求待ち行列で管理する読出し要求待ち行列管理ステップ（図12ステップ1202）と、前記読出し要求待ち行列の状態に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップ（図12ステップ1204）とを有する負荷集中監視ステップにより、効果的に解決される。
【００１６】
すなわち、ハードディスクドライブへの読出し要求待ち行列の管理はいずれかの部分で通常なされるものであり、かつハードディスクドライブの読出し要求待ち行列の要素個数は当該ハードディスクドライブへの負荷集中の度合いを示す指標となりうるので、効果的に負荷集中監視ステップを実現可能である。
【発明の効果】
【００１７】
本発明の動的負荷分散ストレージ方法によれば、事前に予測しないある特定のハードディスクドライブに負荷が集中した場合でもただちにミラー用ハードディスクドライブが挿入され負荷分散がなされる、という効果がある。
【発明を実施するための最良の形態】
【００１８】
本発明の動的負荷分散ストレージ方法の実施例を図１〜図15により説明する。なお、本発明におけるコンピュータ処理は、当該コンピュータの主記憶装置上に展開されたコンピュータプログラムにより実行されるが、このコンピュータプログラムの提供形態は、当該コンピュータに接続された補助記憶装置をはじめ、ＣＤ−ＲＯＭ等の可搬型記憶装置やネットワーク接続された他のコンピュータの主記憶装置及び補助記憶装置等の各記録媒体に格納されて提供されるもので、このコンピュータプログラムの実行に際しては、当該コンピュータの主記憶装置上にローディングされ実行されるものである。
【実施例１】
【００１９】
本発明の動的負荷分散ストレージ方法を組み込んだ動的負荷分散ストレージシステムの第１の実施例について図１〜図３によって説明する。図１は本実施例の動的負荷分散ストレージシステムの構成図であって、これを既に説明した図16の従来のストレージシステムと比較すると、本発明ではドライブエンクロージャDEごとに負荷調整用プロセッサAが付加されており、制御エンクロージャCEからの信号は負荷調整用プロセッサAを経由してR/W制御プロセッサMPUに伝わる構成であり、その他は従来と変わっていない。
【００２０】
そこで、図２ではドライブエンクロージャDE内の負荷調整用プロセッサA1の内部構成を示し、図３ではこの負荷調整用プロセッサA1の動作を説明する。負荷調整用プロセッサA1はハードディスクドライブHDDへの負荷を監視する負荷集中監視手段A11、各ハードディスクドライブHDDを管理するポート管理テーブルA12、ホットスペアをミラーとして挿入するミラー用ハードディスクドライブ作成手段A13、およびミラー用ハードディスクドライブHDD（ｍ）へのアクセスをおこなう負荷分散アクセス手段A14を有する。
【００２１】
次に図３にしたがって、負荷調整用プロセッサA1の動作を説明する。負荷調整用プロセッサA1は割り込みによって起動されるが、その割り込みの種類としては、タイマ起動、ミラー用ディスク挿入の依頼割り込み、挿入中のミラー用ディスク返却の依頼割り込み、制御エンクロージャCEのループ#0またはループ#1からのリード／ライトアクセス要求、およびR/W制御プロセッサMPUからのリード／ライトアクセス完了通知、の５種類の割り込み原因がある。図３ではこれらをステップS301,S304,S306,S308,310で示しており、負荷調整用プロセッサA1はこれらの割り込みをループ待ちする。
【００２２】
ステップS301はタイマ起動であって、適当な時間間隔例えば30ｍｓごとの割り込みである。これによってステップS302に移り、負荷集中監視手段A11の読出し処理頻度取得部A111が起動され読出し処理頻度テーブルA112の更新がおこなわれる。これについては図4(a)によって後に詳述する。さらにステップS303によって負荷集中監視手段A11の過剰負荷判定部A113が過剰負荷を判定するが、その動作については図5(b) によって後に詳述する。
【００２３】
次に、ステップS304で負荷調整用プロセッサA1は過剰負荷判定部A113からミラー用ディスク挿入の依頼割り込みを受けた場合、ステップS305でミラー用ハードディスクドライブ作成手段A13を起動してミラー用ディスク挿入を行わせる。これについては図8(a) によって後に詳述する。
【００２４】
次にステップS306で負荷調整用プロセッサA1は過剰負荷判定部A113から挿入中のミラー用ディスク返却の依頼割り込みを受けた場合、ステップS307でミラー用ハードディスクドライブ作成手段A13を起動して挿入中ミラー用ディスクの離脱を行わせる。この動作についても図8(b)によって後に詳述する。
【００２５】
次にステップS308で負荷調整用プロセッサA1は制御エンクロージャCEのループ#0またはループ#1からのリード／ライトアクセス要求を受けた場合、ステップS309で負荷分散アクセス手段A14を起動し、負荷分散アクセスを行わせるが、これについては図9によって後に詳述する。
【００２６】
次にステップS310で負荷調整用プロセッサA1はR/W制御プロセッサMPUからのリード／ライトアクセス完了通知を受信した場合、ステップS311で負荷分散アクセス手段A14を起動し、リード／ライトアクセス完了処理を行わせるが、これについては図10によって後に詳述する。
【００２７】
以上で負荷調整用プロセッサA1の動作概要を説明した。次に個々の割り込み対応処理について説明する。まず、図4(a)によって読出し処理頻度テーブルA112の更新処理について説明する。第１実施例の負荷集中監視手段A11では30ｍｓごとのタイマ起動によって読出し処理頻度取得部A111を起動し、読出し処理頻度テーブルA112を更新する。
【００２８】
ここで図4(a)の説明に先立って、本実施例で使用する読出し処理頻度テーブルA112のデータ構造例を図６で説明する。本実施例では図２に示すようにループスイッチLSIチップにSCSI Read Byte Countレジスタregが備わっているので、これを利用して個別のハードディスクドライブへの読出し処理頻度を求める。SCSI Read Byte Countレジスタregは各ポート番号port_numごとにSCSI_read命令を実行する都度、そのSCSI Read Byte Count数を加算してゆく。そこで30ｍｓごとのタイマ起動によってSCSI Read Byte Countレジスタregの値を読みレジスタをリセットすると毎30ｍｓ間のSCSI Read Byte Count数が得られる。これを10個分、図２のR/W制御プロセッサMPUに示すSCSI Read Byte Countリングスタックｒｓｔａｃｋに入れることとし、これら10個の値の和をとると、毎30ｍｓごとに直近300ｍｓ間のSCSI Read Byte Countの移動平均値rbc#0(port_num)が得られる。読出し処理頻度テーブルA112の直近300ｍｓ間のSCSI Read Byte Count(PBC#0)の移動平均値rbc#0(port_num)および直近300ｍｓ間のSCSI Read Byte Count(PBC#1)の移動平均値rbc#1(port_num)はこのように得られる#0および#1の値である。直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計srbc(port_num)はこの合計である。
【００２９】
30ｍｓごとのタイマ起動によって上記のような読出し処理頻度テーブルA112の作成更新を行うため、読出し処理頻度取得部A111は図４のステップS401でポート番号port_num=1から20までのforループをつくり、ステップS402で読出し処理頻度取得部A111の指示によりR/W制御プロセッサMPU#0はループスイッチLSIチップLSI#0のポート番号port_numのSCSI-ReadByteCountレジスタregの値を読んで直近300ｍｓ間のSCSI Read Byte Countリングスタックｒｓｔａｃｋ#0にプッシュする。そしてステップS403でR/W制御プロセッサMPU#0は直近300ｍｓ間のSCSI Read Byte Countリングスタックｒｓｔａｃｋ#0の10個のスタック値の和sum0を求めて読出し処理頻度取得部A111に報告する。次いでS404で読出し処理頻度取得部A111は読出し処理頻度テーブルA112のポート番号port_numの直近300ｍｓ間のSCSI Read Byte Count(PBC#0)の移動平均値rbc#0(port_num)の値をsum0で更新する。
【００３０】
同様にステップS405で読出し処理頻度取得部A111の指示によりR/W制御プロセッサMPU#1はループスイッチLSIチップLSI#1のポート番号port_numのSCSI-ReadByteCountレジスタregの値を読んで直近300ｍｓ間のSCSI Read Byte Countリングスタックｒｓｔａｃｋ#1にプッシュする。次いでS406で R/W制御プロセッサMPU#1は直近300ｍｓ間のSCSI Read Byte Countリングスタックｒｓｔａｃｋ#1の10個のスタック値の和sum1を求めて読出し処理頻度取得部A111に報告する。次いでステップS407で読出し処理頻度取得部A111は読出し処理頻度テーブルA112のポート番号port_numの直近300ｍｓ間のSCSI Read Byte Count(PBC#1)の移動平均値rbc#1(port_num)の値をsum1で更新する。
【００３１】
次いでステップS408で読出し処理頻度取得部A111は読出し処理頻度テーブルA112のポート番号port_numの直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計srbc(port_num)の値をsum0+sum1で更新する。このようにして得られた直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計srbc(port_num)の大きさは、当該ハードディスクドライブへの読出し処理頻度の目安として用いることができる。
【００３２】
次に負荷集中監視手段A11による負荷監視動作を図5(b)で説明するが、まず、ここで後の説明のためにミラー用ハードディスクドライブHDD（ｍ）および図7のポート管理テーブルA12について説明しておく。本発明で導入されるミラー用ハードディスクドライブHDD（ｍ）とは、先に図17の説明で述べたホットスペアのハードディスクドライブを利用して、これに過剰負荷ハードディスクドライブHDD(el)のコピーを作りミラリングしたものである。先に述べたように、ポート管理テーブルA12では物理機番wwnとポート番号al_paとのマッピングを行うが、本発明では同時にミラー用ハードディスクドライブHDD（ｍ）の管理もおこなう。
【００３３】
図7に示すごとく、ポート管理テーブルA12では各ポート番号al_paに対しその物理機番wwn、ミラー用ディスク挿入中busyフラグｆｌｇ（mb）、ミラー用ディスクポート番号port-m、ミラー用ディスク読み出しフラグflg(muse)が管理されている。ここにミラー用ディスク挿入中busyフラグｆｌｇ（mb）は該当ポート番号al_pa=xのハードディスクドライブHDDが過剰負荷と判定され、このデータがミラー用ハードディスクドライブHDD（ｍ）にコピー中であってコピー未完了であること、したがって  ミラー用ハードディスクドライブHDD（ｍ）はまだ読み出しうる状態ではないことを示すフラグである。ミラー用ディスクポート番号port-mはホットスペアが接続されたポート番号であって、ここに数値が記入されていれば当該ポート番号al_pa=xのハードディスクドライブHDDにはミラー用ハードディスクドライブHDD（ｍ）が存在し、ミラー用ディスクポート番号port-mがヌル値であれば当該ポート番号al_pa=xのハードディスクドライブHDDはミラリングされていないことを示す。ミラー用ディスク読み出しフラグflg(muse)はミラー用ディスクポート番号port-mが存在する場合、前回これに対するリードアクセスを行ったことを示すフラグであり、このフラグを目安にリードアクセスの分散をはかるためのものである。
【００３４】
次に図5(b)によって、30ｍｓごとのタイマ起動による過剰負荷判定部A113の動作を説明する。過剰負荷判定部A113はステップS501でポート番号port_num=1から20までのforループをつくり、ステップS502でポート管理テーブルA12のポート番号port_numのミラー用ディスクポート番号port-mの値を調べる。ミラー用ディスクポート番号port-m＝ヌルの場合は過剰負荷判定部A113はステップS503で読出し処理頻度テーブルA112の直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計srbc(port_num)の値を取得し、これが所定の閾値１より大であれば過剰負荷と判定する。すなわちステップS504でポート番号port_numのハードディスクドライブHDDは過剰負荷ハードディスクドライブHDD(el)であると判定してミラー用ハードディスクドライブ作成手段A13にミラー用ディスク挿入を依頼する。
【００３５】
次にステップS502でミラー用ディスクポート番号port-m=mが記入されている場合は負荷集中監視手段A11の過剰負荷判定部A113はステップS505で読出し処理頻度テーブルA112の直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計srbc(port_num)の値を取得し、これが所定の閾値２より小であれば過剰負荷状態は消滅したと判定する。すなわち、ステップS506で過剰負荷判定部A113はポート番号port_numのハードディスクドライブHDDの過剰負荷状態は消滅したと判定して、現在挿入中のミラー用ディスク（ポート番号port_num=m）の返却実行をミラー用ハードディスクドライブ作成手段A13に依頼する。以上の動作で使用する閾値１および閾値２は事前に定められた値であってもよいが、システムの運用を通じて最適な値を発見して導入することが勧められる。
【００３６】
次に図8(a)によって、ポート番号al_pa=xのハードディスクドライブHDDに対するミラー用ディスク挿入動作を説明する。まずステップS801でミラー用ハードディスクドライブ作成手段A13はポート番号al_pa=m（既知）のミラー用ディスクをループスイッチLSIチップLSI#0およびループスイッチLSIチップLSI#1と接続使用可能とするようR/W制御プロセッサMPU#0およびR/W制御プロセッサMPU#1に指示する。次いでステップS802でミラー用ハードディスクドライブ作成手段A13はポート管理テーブルA12においてポート番号al_pa＝ｘのミラー用ディスク挿入中busyフラグｆｌｇ（mb)＝1とする。次にステップS803でミラー用ハードディスクドライブ作成手段A13はポート管理テーブルA12においてポート番号al_pa＝ｘのミラー用ディスクポート番号port-mのアイテムにポート番号al_pa=mを記入する。最後にステップS804でミラー用ハードディスクドライブ作成手段A13は負荷分散アクセス手段A14に対しディスクコピー要求（from ポート番号al_pa＝ｘ to ポート番号al_pa＝ｍ）を発する。このコピーの終了は負荷調整用プロセッサA1に対する割り込み原因であり、図3のステップS311に対応するライトアクセス完了通知となって割り込まれる。
【００３７】
次に図8(b)によってポート番号al_pa=xのハードディスクドライブHDDに対して挿入中のミラー用ディスクの返却依頼によって起動されたミラー用ハードディスクドライブ作成手段A13の動作を説明する。まずステップS805でミラー用ハードディスクドライブ作成手段A13はポート管理テーブルA12のポート番号al_pa=xのミラー用ディスクポート番号port-mの値mのポートをループスイッチLSIチップLSI#0およびループスイッチLSIチップLSI#1から離脱させるようR/W制御プロセッサMPU#0およびR/W制御プロセッサMPU#1に指示する。次にステップS806でミラー用ハードディスクドライブ作成手段A13はポート管理テーブルA12においてポート番号al_pa＝ｘのミラー用ディスク挿入中busyフラグｆｌｇ（mb)＝0とする。最後にステップS807でミラー用ハードディスクドライブ作成手段A13はポート管理テーブルA12においてポート番号al_pa＝ｘのミラー用ディスクポート番号port-mのアイテムの値をヌルと変更する。
【００３８】
次に図9によって負荷分散アクセス手段A14の動作を説明する。ステップS901で制御エンクロージャCEのループ#0またはループ#1を介して特定ドライブエンクロージャDEにリード／ライトアクセス要求が発せられた場合、当該ドライブエンクロージャDEの負荷調整用プロセッサA1は配下の負荷分散アクセス手段A14を起動する。そして、ステップS902で該負荷分散アクセス手段A14がリード／ライトアクセス要求を受ける。次いでステップS903でその要求により分岐し、当該要求が物理機番wwnのハードディスクドライブHDDからの読み出し要求の場合は、負荷分散アクセス手段A14はステップS904でポート管理テーブルA12を物理機番wwnで逆引きして、当該読出し要求read(wwn)のハードディスクドライブHDDはミラー用ハードディスクドライブHDD（ｍ）を持つか、を判定する。もし当該ハードディスクドライブHDDのミラー用ハードディスクドライブHDD（ｍ）が既存であれば、負荷分散アクセス手段A14はステップS905で、さらにポート管理テーブルA12の当該物理機番wwn対応ポート番号al_pa=xのミラー用ディスク読み出しフラグflg(muse)は1か0かを調べる。これによって当該ポート番号al_pa=xのハードディスクドライブHDD、ミラー用ハードディスクドライブHDD（ｍ）のいずれから読み出すべきかを判定する。ミラー用ディスク読み出しフラグflg(muse)=1すなわち前回読み出しにミラー用ハードディスクドライブHDD（ｍ）を使用済みであった場合は、ステップS906に分岐し、負荷分散アクセス手段A14は指定ループのR/W制御プロセッサMPUに読出し要求read(al_pa＝ｘ)を発する。そしてステップS907でミラー用ディスク読み出しフラグflg(muse)を0にすることにより、次回読み出しをミラー用ハードディスクドライブHDD（ｍ）に誘導する準備をして処理終了となる。
【００３９】
一方、ステップS905でミラー用ディスク読み出しフラグflg(muse)=0すなわち前回読み出しにはミラー用ハードディスクドライブHDD（ｍ）を使用していない場合は、さらにステップS908で当該ポート番号al_pa=xのミラー用ディスク挿入中busyフラグｆｌｇ（mb)を調べて、ミラー用ハードディスクドライブHDD（ｍ）が使える状態であるかを判定する。ミラー用ディスク挿入中busyフラグｆｌｇ（mb）=1、すなわちミラー用ハードディスクドライブHDD（ｍ）が使用中（作成中）であった場合もミラー用ハードディスクドライブHDD（ｍ）は使用できないので、ステップS906に分岐し、負荷分散アクセス手段A14は指定ループのR/W制御プロセッサMPUに読出し要求read(al_pa＝ｘ)を発する。そしてステップS907でミラー用ディスク読み出しフラグflg(muse)を0にすることにより、次回読み出しをミラー用ハードディスクドライブHDD（ｍ）に誘導する準備をして処理終了となる。
【００４０】
他方、ミラー用ディスク挿入中busyフラグｆｌｇ（mb）=0であった場合はミラー用ハードディスクドライブHDD（ｍ）が使用可能であり、ステップS909に分岐し、負荷分散アクセス手段A14は指定ループのR/W制御プロセッサMPUにミラー用ディスク読出し要求read(al_pa＝ｍ)を発するとともに、ステップS910でミラー用ディスク読み出しフラグflg(muse)を1として、今回ミラー用ハードディスクドライブHDD（ｍ）からの読み出しを行ったフラグを立てて処理終了となる。
【００４１】
ステップS904に戻って、ポート管理テーブルA12から当該読出し要求read(wwn)のハードディスクドライブHDD（すなわちポート番号al_pa=x）のミラー用ディスクポート番号port-mの値がヌル、すなわち、当該ハードディスクドライブHDDはミラー用ハードディスクドライブHDD（ｍ）を持たないとなった場合は、ステップS911に分岐し、負荷分散アクセス手段A14は指定ループのR/W制御プロセッサMPUに読出し要求read(al_pa＝ｘ)を発して処理終了となる。
【００４２】
他方、ステップS903で当該アクセス要求が書き込み要求であった場合は、ステップS912に分岐し、 負荷分散アクセス手段A14はポート管理テーブルA12から書込み要求write(wwn)のハードディスクドライブHDD（ポート番号al_pa=x）はミラー用ハードディスクドライブHDD（ｍ）を持つか、を判定する。ステップS912でミラー用ディスクポート番号port-mの値がヌル、すなわち、当該ハードディスクドライブHDDはミラー用ハードディスクドライブHDD（ｍ）を持たないとなった場合は、ステップS914に分岐し、負荷分散アクセス手段A14は指定ループのR/W制御プロセッサMPUに読出し要求read(al_pa＝ｘ)を発して処理終了となる。しかし、ステップS912でミラー用ディスクポート番号port-mの値がm、すなわち、当該ハードディスクドライブHDDはミラー用ハードディスクドライブHDD（ｍ）（ポート番号al_pa=m）を持つ場合は、当該ミラー用ハードディスクドライブHDD（ｍ）にも当該書き込みを行う必要があるので、負荷分散アクセス手段A14はまずステップS913で指定ループのR/W制御プロセッサMPUにミラー用ハードディスクドライブHDD（ｍ）書込み要求write(al_pa＝ｍ)を発した後に、ステップS914で指定ループのR/W制御プロセッサMPUに書込み要求write(al_pa＝ｘ)を発して処理終了となる。
【００４３】
以上の負荷分散アクセス手段A14の動作でアクセスされたハードディスクドライブHDDはリード／ライト完了時点で、対応するループスイッチLSIチップを経由して対応するR/W制御プロセッサMPUに完了割り込みを発し、これを受けたR/W制御プロセッサMPUが負荷調整用プロセッサA1にリード／ライトアクセス完了通知割り込みを発することとなる。これは図３のステップS310に対応する割り込みであり、次に図10で説明する負荷分散アクセス手段A14によるリード／ライトアクセス完了処理が行われることとなる。
【００４４】
R/W制御プロセッサMPUから発せられたリード／ライトアクセス完了通知割り込み受けた負荷分散アクセス手段A14は図10のステップS1001でそれがリードアクセス完了通知であれば、すでに負荷分散アクセス手段A14の図示しないバッファDRV_bufには所定のハードディスクドライブHDDからの読み出しデータが転送されているので、ステップS1002で負荷分散アクセス手段A14はバッファDRV_bufのデータを上位依頼元に転送して処理終了である。
【００４５】
また、ステップS1003で割り込みがライトアクセス完了通知であった場合、それがミラー用ハードディスクドライブHDD（ｍ）からのものであるか、を判定し、ステップS1004で書込みポート番号al_pa＝ｍであれば、ミラー用ハードディスクドライブHDD（ｍ）へのコピー終了であるのでステップS1005で負荷分散アクセス手段A14はポート管理テーブルA12のポート番号al_pa＝ｘのミラー用ディスク挿入中busyフラグｆｌｇ（mb)＝0として処理終了である。ステップS1004でミラー用ハードディスクドライブHDD（ｍ）からのライトアクセス完了通知でなかった場合は、負荷分散アクセス手段A14はステップS1006でポート管理テーブルA12のポート番号al_pa＝ｘのミラー用ディスク挿入中busyフラグｆｌｇ（mb)＝0かを調べる。これは、もし当該ハードディスクドライブHDDがミラー用ハードディスクドライブHDD（ｍ）をもち、かつミラー用ハードディスクドライブHDD（ｍ）への書き込みが未完了であるかを調べるものである。ミラー用ディスク挿入中busyフラグｆｌｇ（mb)＝0でない場合はミラー用ハードディスクドライブHDD（ｍ）への書き込みが未完なので上位依頼元に完了通知を出すことなく処理終了とする。ミラー用ハードディスクドライブHDD（ｍ）を有しない、もしくはミラー用ハードディスクドライブHDD（ｍ）への書き込みも完了した場合は、ステップS1007でyes分岐し、負荷分散アクセス手段A14は上位依頼元にライトアクセス完了を通知して処理を終了する。
【実施例２】
【００４６】
本実施例の動的負荷分散ストレージ方法は、構成としては図１で示されるが、ドライブエンクロージャDEにおける負荷調整用プロセッサAの内容が第1実施例と異なり、図11に示す負荷調整用プロセッサA2である。これを第１実施例の図２の負荷調整用プロセッサA1と比較すると、本実施例では負荷集中監視手段が第1実施例の負荷集中監視手段A11にかわり負荷集中監視手段A21となっているが、その他のポート管理テーブルA12とミラー用ハードディスクドライブ作成手段A13と負荷分散アクセス手段A14は第１実施例と同一構成要素である。また、R/W制御プロセッサMPUはこれに対応して第１実施例と異なる部分を持つ。したがって、本実施例の説明では、第１実施例と異なる負荷集中監視手段A21およびR/W制御プロセッサMPUの動作のみを主として説明する。
【００４７】
図11に示すように、負荷集中監視手段A21は読出し要求待ち行列管理部A211と読出し要求待ち行列A212と過剰負荷判定部A213とを有する。すなわち、本実施例では同一ハードディスクドライブHDDへの読出し要求が重なって、一方が他方の実行完了を待つような状況を待ち行列で管理する読出し要求待ち行列管理部A211によって負荷集中を監視する。
【００４８】
本実施例の負荷調整用プロセッサA2の動作は図12に示される。図のように、負荷調整用プロセッサA2は次の６種類の割り込みによって起動される。
【００４９】
・  R/W制御プロセッサMPUからのqueue更新要求割り込み(ステップS1201のyes)
・  タイマ起動による割り込み(例えば３秒ごとの) (ステップS1203のyes)
・  過剰負荷判定部A213からのミラー用ディスク挿入の依頼割り込み(ステップS1205のyes)
・  過剰負荷判定部A213からの挿入中のミラー用ディスク返却の依頼割り込み(ステップS1207のyes)
・  制御エンクロージャCEのループ#0またはループ#1からのリード／ライトアクセス要求(ステップS1209のyes)
・  R/W制御プロセッサMPUからのリード／ライトアクセス完了通知(ステップS1211のyes)
これを図３の第１実施例に比較すると、負荷集中監視手段A11の場合にはステップS301でタイマ(30ｍｓごとの)起動で負荷集中監視手段A11の読出し処理頻度取得部A111および過剰負荷判定部A113を働かせていたところを、図12の本実施例では、上記の（１）R/W制御プロセッサMPUからのqueue更新要求割り込みで負荷集中監視手段A21の読出し要求待ち行列管理部A211を働かせ(ステップS1202)、（２）のタイマ起動による割り込み(例えば３秒ごとの)で負荷集中監視手段A21の過剰負荷判定部A213を働かせ(ステップS1204)ており、それ以外の（３）〜（６）の割り込みに対する負荷調整用プロセッサA2の動作は、既に第１実施例で説明したところと同一の構造による動作であることが理解されよう。したがって、ここではこの二つのステップで、読出し要求待ち行列管理部A211が読出し要求待ち行列A212を更新し、読出し要求待ち行列A212に基づいて過剰負荷判定部A213が過剰負荷ハードディスクドライブHDD(el)の調査を行う部分が新規であり、この部分を以下に説明する。
【００５０】
そこで、まず図14によって、第２実施例の動作説明と読出し要求待ち行列A212のデータ構造例を説明する。図14(a)は負荷調整用プロセッサA2からの物理機番wwnのハードディスクドライブHDDへの読出し要求read(wwn)をR/W制御プロセッサMPUおよびループスイッチLSIチップLSIおよびハードディスクドライブHDDが首尾よく受け付ける成功シーケンスを示したものである。
【００５１】
まず、負荷調整用プロセッサA2は上位制御エンクロージャCEからの読出し要求に基づいて、指定されたループ#0またはループ#1のR/W制御プロセッサMPUに物理機番wwnを用いた読出し要求read(wwn)を発する。図ではこれを「exec read 物理機番wwn  block(s/e) DRV_buf」と示した。これを受けてR/W制御プロセッサMPUは対応するポート番号al_pa=xを検索取得し、ループスイッチLSIチップLSIに読出し要求read(al_pa)を発する。図ではこれを記号a「read ポート番号al_pa=x  block(s/e) MPU_buf」で示している。
【００５２】
ループスイッチLSIチップLSIはポート番号al_pa=xのハードディスクドライブHDDに対し、まず状態を問い合わせる記号b「sense ポート番号al_pa=x」のセンス命令を発し、その応答が記号c「HDDready」というレディ応答であったので、ループスイッチLSIチップLSIはR/W制御プロセッサMPUに記号d「LSIaccept  ポート番号al_pa=x」で読み出しを開始することを伝える一方、記号e「read block(s/e) MPU_buf」でハードディスクドライブHDDに対し読み出しを開始する。指定のブロックの読み出しが完了するとハードディスクドライブHDDはループスイッチLSIチップLSIに記号f「HDDcompletion」の読み出し完了割り込みを起こし、ループスイッチLSIチップLSIはこれを受けてR/W制御プロセッサMPUに対し記号g「LSIcompletion  ポート番号al_pa=x」なる完了信号を送る。これによってR/W制御プロセッサMPUはMPU_bufに読み出されたデータdataを負荷調整用プロセッサA2のバッファDRV_bufに転送する。そしてR/W制御プロセッサMPUは負荷調整用プロセッサA2に対してリードアクセス完了通知割り込みを発する。
【００５３】
これに対し、図14(b)では負荷調整用プロセッサA2からの読出し要求read(wwn)が待ち合わせを受けて読出し要求read(wwn)のリトライを繰り返すシーケンスを示す。このシーケンスでは記号a「read ポート番号al_pa=x  block(s/e) MPU_buf」および記号b「sense ポート番号al_pa=x」は図14(a)の場合と同様であるが、ハードディスクドライブHDDからの状態応答が記号c’「HDDbusy」というビジー応答であったため、ループスイッチLSIチップLSIはR/W制御プロセッサMPUに記号d’「LSIbusy  ポート番号al_pa=x」というビジー応答を返している。これを受けて、R/W制御プロセッサMPUは負荷調整用プロセッサA2に読出し要求待ち行列r-queueの更新を求める割り込み（図ではadd_queue Qid=q  wwnと記した）を起こす。これはR/W制御プロセッサMPUが、物理機番wwnのハードディスクドライブHDDにおいて待ちが生じたので、待ち行列要素識別子Qidを発行して、負荷調整用プロセッサA2に対して、読出し要求待ち行列A212に新たな待ち行列要素（識別子Qid）の追加を依頼する割り込みである。
【００５４】
この初回のビジー(記号「abc’d’」）後、R/W制御プロセッサMPUは図のようにリトライビジー(記号「abc’d’」）のシーケンスを繰り返す。やがて、ハードディスクドライブHDDがレディになると図のリトライアクセプト(記号「abcdefgh」）のシーケンスにいたる。このとき、R/W制御プロセッサMPUは記号d「LSIaccept  ポート番号al_pa=x」を受けた段階で、負荷調整用プロセッサA2に対し、読出し要求待ち行列r-queueの更新を求める割り込み（図ではdelete_queue Qid=q  wwnと記した）を起こす。この待ち行列要素識別子Qidは先に初回のビジー(記号「abc’d’」）のときに発行した一意の識別子で、さきに追加された待ち行列要素（識別子Qid）の削除を負荷調整用プロセッサA2に依頼する割り込みである。
【００５５】
次に、図14(c)によって本実施例の読出し要求待ち行列A212のデータ構造を説明する。図のように読出し要求待ち行列A212は負荷調整用プロセッサA2の配下のハードディスクドライブHDDのポート番号al_paごとに（すなわち物理機番wwnごとに）とられており、ループ#0、ループ#1のいずれにも共通である。各ポート番号al_paともにpush-pointの初期値は0（endmark）である。図14(b)で説明したように、add_queue Qid=q  wwnの発行で読出し要求待ちが発生するごとに対応する読出し要求待ち行列要素が作られ、読出し要求待ち行列A212のpush-pointにリンクする。ひとつの読出し要求待ち行列要素のデータ構造は、図のように「待ち行列要素識別子Qid」「要求先R/W制御プロセッサMPU番号」、「読出し要求内容」、「リンクアドレス」からなっている。
【００５６】
初期状態からあるポート番号al_paでひとつの読出し要求待ちが発生すると、読出し要求待ち行列管理部A211はひとつの読出し要求待ち行列要素を作成し、これをpush-pointにリンクする。また、あるポート番号al_paでひとつの読出し要求待ちが解消すると、読出し要求待ち行列管理部A211は当該待ち行列要素を探索してこれをリンクからはずす。その動作について図13によって次に説明する。
【００５７】
まず、ステップS1301で負荷集中監視手段A21の読出し要求待ち行列管理部A211はR/W制御プロセッサMPUからのqueue更新要求割り込みはadd/deleteいずれか、を判定する。待ち行列要素追加の場合は、読出し要求待ち行列管理部A211はステップS1302でスタック空き領域に新たに読出し要求待ち行列要素ｚ（その先頭アドレスをｚとする。）を作成する。そしてステップS1303で読出し要求待ち行列要素ｚの待ち行列要素識別子Qid（＝ｑ）、要求先R/W制御プロセッサMPU番号（＝0または1）、読出し要求命令内容（exec read 物理機番wwn  block(s/e) DRV_buf）を作成する。次に読出し要求待ち行列管理部A211はステップS1304で現在のpush-point内容を取得してこれを待ち行列要素ｚのリンクアドレスにコピーする。これによって読出し要求待ち行列要素ｚの中身が作られたので、読出し要求待ち行列管理部A211はステップS1305で読出し要求待ち行列A212の当該push-pointの内容をアドレスｚに変更する。すなわち読出し要求待ち行列要素ｚがpush-pointにリンクされた。次いで読出し要求待ち行列管理部A211はステップS1306で読出し要求待ち行列A212の当該queue個数の値をqnum=qnum+1として処理終了となる。
【００５８】
次に、ステップS1301で待ち行列要素（識別子Qid）の削除要求であった場合は、読出し要求待ち行列管理部A211はステップS1307で読出し要求待ち行列A212の当該push-pointから待ち行列要素をリンク順にたどりその待ち行列要素識別子Qidから削除対象待ち行列要素を特定する。次いでステップS1308で特定された削除対象の待ち行列要素のリンクアドレスの内容値を取得し、この値を、当該削除対象の待ち行列要素の直前要素のリンクアドレスに書き込む。以上によって当該待ち行列要素（識別子Qid）はリンクから離脱する。次いでステップS1309で読出し要求待ち行列管理部A211は読出し要求待ち行列A212の当該queue個数の値をqnum=qnum-1として処理終了となる。
【００５９】
上記の説明が図12に戻って、ステップS1201,1202の動作説明であり、以上で本実施例における読出し要求待ち行列A212は常に当該ドライブエンクロージャDEにおけるハードディスクドライブHDDの読出し要求待ちの状態を反映したものとなっていることが理解されよう。
【００６０】
最後に、図12のステップS1203,1204の部分を説明する。本実施例では負荷調整用プロセッサA2の過剰負荷判定部A213は図12のステップS1203でタイマ起動による割り込み(例えば３秒ごとの)によってステップS1204で過剰負荷判定部A213による過剰負荷ハードディスクドライブHDD(el)の調査を行う。この動作を図15によって説明する。
【００６１】
図15のステップS1501で過剰負荷判定部A213はポート番号port_num（port_num=1から20）を対象として、ステップS1502でポート管理テーブルA12のポート番号port_numのミラー用ディスクポート番号port-mの値を調べ、ミラー用ハードディスクドライブHDD（ｍ）をもつか、を判定し、当該ハードディスクドライブHDDがミラー用ハードディスクドライブHDD（ｍ）を持たないならば、ステップS1503で読出し要求待ち行列A212のポート番号port_numのqueue個数qnumの値は閾値３（例えば１）より大かを調べる。もしも閾値３（例えば１）を越えるqueue個数であれば過剰負荷判定部A213はステップS1504に分岐して、ポート番号port_numのハードディスクドライブHDDは過剰負荷ハードディスクドライブHDD(el)であると判定して、ミラー用ハードディスクドライブ作成手段A13にミラー用ディスク挿入を依頼して処理終了とする。もしも閾値３（例えば１）を越えるqueue個数でなければ過剰負荷でないので何もせず処理終了である。
【００６２】
一方、ステップS1502でポート管理テーブルA12のポート番号port_numのミラー用ディスクポート番号port-mの値を調べ、当該ハードディスクドライブHDDがミラー用ハードディスクドライブHDD（ｍ）を持っている場合は、過剰負荷判定部A213はステップS1505で読出し要求待ち行列A212のポート番号port_numのqueue個数qnumの値は閾値４（例えば１）より小かを調べる。もしも閾値４（例えば１）以上のqueue個数であれば、過剰負荷判定部A213はポート番号port_numのハードディスクドライブHDDはまだ過剰負荷状態であるとして現状を維持するので何もせず処理終了に向かう。しかし読出し要求待ち行列A212のポート番号port_numのqueue個数qnumの値が閾値４（例えば１）より小であった場合は、過剰負荷判定部A213はステップS1506でポート番号port_numのハードディスクドライブHDDの過剰負荷状態は消滅したと判定して、ミラー用ハードディスクドライブ作成手段A13に挿入中のミラー用ディスク（ポート番号port_num=m）の返却を依頼して処理終了となる。以上の動作で使用する閾値３および閾値４は事前に定められた値であってもよいが、システムの運用を通じて最適な値を発見して導入することが勧められる。
【００６３】
以上の第１および第２の実施例では説明を簡明にするため、ドライブエンクロージャDEの内部に導入する負荷調整用プロセッサ（A1またはA2）は、ポートバイパス回路PBCの外部に存在して、ポートバイパス回路PBC内のR/W制御プロセッサMPU(#0および#1)と接続される形態を開示した。しかし、他の実施例ではいずれかのR/W制御プロセッサMPU(#0または#1)内部に負荷調整用プロセッサの機能を持たせることも容易に可能である。また制御エンクロージャCE内に全ドライブエンクロージャDE対応の負荷調整用プロセッサ機能を持たせることも可能である。これらの設計的事項も本発明に含まれることはいうまでもない。
【００６４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージ方法であって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、
前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、
を有することを特徴とする動的負荷分散ストレージ方法。
（付記２）前記負荷集中監視ステップは、さらに、
個別のハードディスクドライブへの読出し処理頻度を取得する読出し処理頻度取得ステップと、
前記読出し処理頻度取得ステップで取得された読出し処理頻度に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップと、
を有することを特徴とする付記１記載の動的負荷分散ストレージ方法。
（付記３）前記負荷集中監視ステップは、さらに、
個別のハードディスクドライブに対するアクセス要求の処理中にさらに該同一のハードディスクドライブへの新たな読出し要求を受けた場合に、当該新たな読出し要求を読出し要求待ち行列で管理する読出し要求待ち行列管理ステップと、
前記読出し要求待ち行列の状態に基づいてハードディスクドライブへの過剰負荷を判定する過剰負荷判定ステップと、
を有することを特徴とする付記１記載の動的負荷分散ストレージ方法。
（付記４）複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージシステムであって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視手段と、
前記負荷集中監視手段で検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成手段と、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセス手段と、
を有することを特徴とする動的負荷分散ストレージシステム。
（付記５）複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージをコンピュータに実行させる動的負荷分散ストレージ情報処理プログラムであって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、
前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、
をコンピュータに実行させることを特徴とする動的負荷分散ストレージ情報処理プログラム。
（付記６）複数のハードディスクドライブへのアクセスを統合管理するストレージシステムにおいて、特定ハードディスクドライブへの負荷集中時に該負荷を分散させる動的負荷分散ストレージをコンピュータに実行させる動的負荷分散ストレージ情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
各ハードディスクドライブへの負荷集中度合を監視する負荷集中監視ステップと、
前記負荷集中監視ステップで検出された過剰負荷ハードディスクドライブの内容をミラー用ハードディスクドライブにコピーするミラー用ハードディスクドライブ作成ステップと、
前記過剰負荷ハードディスクドライブへのアクセス依頼の一部を前記ミラー用ハードディスクドライブへのアクセス依頼とみなして該アクセスを実行する負荷分散アクセスステップと、
をコンピュータに実行させることを特徴とする動的負荷分散ストレージ情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【産業上の利用可能性】
【００６５】
本発明の動的負荷分散ストレージ方法は、事前に予測しないある特定のハードディスクドライブに負荷が集中した場合でもただちにミラー用ハードディスクドライブが挿入され負荷分散がなされるので、これを用いて多くの大容量コンテンツの格納と提供をおこなうサーバを構築し、インターネットを通じて顧客の選択に応じて動画等のストリーミング配信をおこなうビジネスなどで利用される可能性がある。
【図面の簡単な説明】
【００６６】
【図１】本発明の動的負荷分散ストレージシステムの構成例
【図２】本発明の第１実施例のドライブエンクロージャDEの構成例
【図３】第１実施例の負荷調整用プロセッサA1の動作フロー図
【図４】第１実施例の負荷集中監視手段A11の動作フロー図（その１)(a)30ｍｓごとのタイマ起動による読出し処理頻度取得部A111による読出し処理頻度テーブルA112の更新
【図５】第１実施例の負荷集中監視手段A11の動作フロー図（その２)(b)30ｍｓごとのタイマ起動による過剰負荷判定部A113の動作
【図６】読出し処理頻度テーブルA112のデータフォーマット例
【図７】ポート管理テーブルA12のデータフォーマット例
【図８】第１実施例のミラー用ハードディスクドライブ作成手段A13の動作フロー図
【図９】第１実施例の負荷分散アクセス手段A14の動作フロー図（その１)リード／ライトアクセス要求受信時のルーチン
【図１０】第1実施例の負荷分散アクセス手段A14の動作フロー図(その２）リード／ライトアクセス完了処理
【図１１】本発明の第２実施例のドライブエンクロージャDEの構成例
【図１２】第２実施例の負荷調整用プロセッサA2の動作フロー図
【図１３】第２実施例の読出し要求待ち行列管理部A211の動作フロー図
【図１４】第２実施例の動作説明と読出し要求待ち行列A212のデータ構造例
【図１５】第２実施例の過剰負荷判定部A213による過剰負荷ハードディスクドライブHDD(el)の調査ルーチンフロー図
【図１６】従来のストレージシステムの構成例
【図１７】従来のストレージシステムのFC-AL(Fibre Channel Arbitrated Loop:ファイバチャンネル調停ループ)
【符号の説明】
【００６７】
A,A1,A2 負荷調整用プロセッサ
A11,A21 負荷集中監視手段
A12 ポート管理テーブル
A13 ミラー用ハードディスクドライブ作成手段
A14 負荷分散アクセス手段
A111 読出し処理頻度取得部
A112 読出し処理頻度テーブル
A113,A213 過剰負荷判定部
A211 読出し要求待ち行列管理部
A212 読出し要求待ち行列
CE  制御エンクロージャ
DE  ドライブエンクロージャ
DE’従来のドライブエンクロージャ
PBC  ポートバイパス回路
MPU R/W制御プロセッサ
LSI  ループスイッチLSIチップ
HDD  ハードディスクドライブ
ｒｓｔａｃｋ  直近300ｍｓ間のSCSI Read Byte Countリングスタック
reg   SCSI Read Byte Countレジスタ
rbc  直近300ｍｓ間のSCSI Read Byte Countの移動平均値
srbc  直近300ｍｓ間のSCSI Read Byte Countの移動平均値の合計
al_pa  ポート番号
wwn  物理機番
ｆｌｇ（mb）  ミラー用ディスク挿入中busyフラグ
port-m  ミラー用ディスクポート番号
flg(muse)  ミラー用ディスク読み出しフラグ
HDD（ｍ）  ミラー用ハードディスクドライブ
qnum  queue個数
Qid  待ち行列要素識別子
HDD(el)  過剰負荷ハードディスクドライブ
【図１】
2007310715.tif 000003
【図２】
2007310715.tif 000004
【図３】
2007310715.tif 000005
【図４】
2007310715.tif 000006
【図５】
2007310715.tif 000007
【図６】
2007310715.tif 000008
【図７】
2007310715.tif 000009
【図８】
2007310715.tif 000010
【図９】
2007310715.tif 000011
【図１０】
2007310715.tif 000012
【図１１】
2007310715.tif 000013
【図１２】
2007310715.tif 000014
【図１３】
2007310715.tif 000015
【図１４】
2007310715.tif 000016
【図１５】
2007310715.tif 000017
【図１６】
2007310715.tif 000018
【図１７】
2007310715.tif 000019