以下、本発明の実施の形態を図面に基づいて説明する。
本実施の形態は、ストレージ装置と複数のホストとが接続されたコンピュータシステムにおいて、各ホストだけでなく、ストレージ装置が所定の時間当たりのアクセス負荷を測定し、測定されたアクセス負荷が各デバイスに可能な限り均等に分散されるようにアクセスの経路(パス)を設定するものである。
図1は、本発明の実施の形態のコンピュータシステムの構成を示すブロック図である。
本発明の実施の形態のコンピュータシステムは、一つ以上のホスト101、ストレージ装置108及びこれらを相互に通信可能に接続するStorage Area Network(SAN)106によって構成される。
ホスト101は、コンピュータであり、ストレージ装置108にデータを書き込み、又は、ストレージ装置108からデータを読み出す。ホスト101は、少なくとも、CPU102、メインメモリ103、入出力装置104及びホストバスアダプタ(HBA)105からなる。
本実施の形態のコンピュータシステムは、図1に示すように、二つのホスト101を備える。しかし、本発明は、さらに多くのホスト101を備えるコンピュータシステムにも適用することができる。
図1において、ホストA及びホストBは、それぞれ、ホスト名が「A」及び「B」のホスト101である。
CPU102は、メインメモリ103に格納されたプログラムを実行するプロセッサである。
メインメモリ103は、例えば、半導体メモリであり、CPU102が実行するプログラムが格納される(図2参照)。さらに、メインメモリ103には、図4から図8に示すテーブルが格納される。
入出力装置104は、例えば、表示画面及びキーボードであり(図示省略)、マウスやプリンタ等の他の入出力手段を含んでもよい。
HBA105は、ホスト101に一つ又は複数設けられ、SAN106を介してストレージ装置108と通信する。図1の例では、各ホスト101が二つのHBA105を備える。各HBA105は、HBA識別子(HBA−ID)によって識別される。図1のHBA1、HBA2、HBA3及びHBA4は、それぞれ、HBA−IDが「1」、「2」、「3」及び「4」のHBA105である。ホストAがHBA1及びHBA2を備え、ホストBがHBA3及びHBA4を備える。各ホスト101は、そのホスト101が備えるいずれのHBA105を使用してもストレージ装置108と通信することができる。
ストレージ装置108は、複数のディスクドライブ(図示省略)及びそれらを制御するコントローラ110によって構成されるディスクアレイ装置である。ストレージ装置108には、一つ以上の論理ユニット(LU)109が設定される。
LU109は、ホスト101が一つのディスクドライブとして認識する単位である。LU109は、論理的には一つのディスクドライブであるが、物理的には、一つのディスクドライブであってもよいし、一つのディスクドライブの一部の領域であってもよい。あるいは、LU109は、複数のディスクドライブの一部又は全部の領域であってもよい。図1の例では、ストレージ装置108に4つのLU109が設定される。ここで、LU1からLU4は、それぞれ、LU識別子(LU−ID)が「1」から「4」のLU109である。
コントローラ110は、一つ以上のチャネルアダプタ(CHA)107を備える。CHA107は、SAN106を介してホスト101と通信する。図1の例では、ストレージ装置108に三つのCHA107が設けられる。図1において、CHA1からCHA3は、それぞれ、CHA識別子(CHA−ID)が「1」から「3」のCHA107である。ストレージ装置108は、いずれのCHA107を使用してもホスト101と通信することができる。
CHA107は、少なくとも、CPU111、メインメモリ112及びキャッシュメモリ113を備える。
CPU111は、メインメモリ112に格納されたプログラムを実行するプロセッサである。
メインメモリ112は、例えば、半導体メモリであり、CPU111が実行するプログラムが格納される(図3参照)。
キャッシュメモリ113は、LU109に書き込まれるデータ又はLU109から読み出されたデータが一時的に格納されるメモリである。例えば、CHA107は、ホスト101からデータの読み出し要求を受けたとき、その読み出し要求の対象のデータがキャッシュメモリ113内に存在すれば、LU109へアクセスせず、キャッシュメモリ113内のデータをホスト101に返送する。その結果、LU109へのアクセス(すなわち、LU109を構成するディスクドライブへのアクセス)が省略され、アクセス速度が向上する。
なお、同様のキャッシュメモリがHBA105に設けられてもよい(図示省略)。
コントローラ110は、CHA107の他に、各ディスクドライブに接続されるディスクアダプタ(図示省略)、及び、CHA107とディスクアダプタとの接続を切り替えるスイッチ(図示省略)等を含んでもよい。
SAN106は、ホスト101のHBA105とストレージ装置108のCHA107とを通信可能に接続する。各HBA105は、いずれのCHA107とも通信することができる。同様に、各CHA107は、いずれのHBA105とも通信することができる。典型的なSAN106は、ファイバーチャネルスイッチ及びケーブルによって構成される。
ここで、パスとは、ホスト101からLU109までのデータアクセス経路である。図1の例では、二つのHBA105と三つのCHA107があるため、ホスト101から一つのLUに至るパスは、6通り存在する。パスは、パスIDによって識別される。パスIDは、経由するHBA、CHA及びLUの識別子(HBA−ID、CHA−ID及びLU−ID)によって定められる。例えば、HBA1及びCHA3を経由してLU2に至るパスのパスIDは、「132」である。
図2は、本発明の実施の形態のメインメモリ103に格納されるプログラムの説明図である。
各ホスト101のメインメモリ103には、少なくとも、アプリケーションプログラム201、交代パス管理設定プログラム202及び交代パス管理プログラム203が格納される。いずれのプログラムも、CPU102によって実行される。
交代パス管理設定プログラム202は、交代パス管理プログラム203のパラメータ等を設定するプログラムである。
交代パス管理プログラム203は、本発明の負荷分散を実現するプログラムである。交代パス管理プログラム203は、後述するアルゴリズムによって各LU109に対するアクティブパスを設定する。アプリケーションプログラム201から要求されたデータアクセス(I/O)は、交代パス管理プログラム203によって設定されたパスを経由して実行される。
交代パス管理プログラム203には、ホスト負荷測定サブプログラム204、アクティブパス設定サブプログラム205及びレポートサブプログラム209が含まれる。
レポートサブプログラム209は、アクティブパスの設定に関する情報及び各パスの負荷の状態に関する情報等を、入出力装置104に出力する。レポートサブプログラム209は、少なくとも、アクティブパスが再設定されたときには、これらの情報を出力する。
なお、アクティブパスについては、図4において説明する。
アクティブパス設定サブプログラム205には、さらに、初期アクティブパス設定サブプログラム206、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208が含まれる。
これらのサブプログラムについては、後で詳細に説明する。
図3は、本発明の実施の形態のメインメモリ112に格納されるプログラムの説明図である。
各CHA107のメインメモリ112には、少なくとも、ストレージ負荷測定プログラム301が格納される。
ストレージ負荷測定プログラム301は、各CHA107のアクセス負荷を測定するプログラムである。測定されるアクセス負荷は、例えば、単位時間当たりのアクセス数(すなわち、データI/Oの回数)、単位時間当たりのI/Oデータ量、又は、CPU111の使用率等である。
なお、本実施の形態では、各CHA107のCPU111がストレージ負荷測定プログラム301を実行するが、他のプロセッサがストレージ負荷測定プログラム301を実行しても本発明を実施することができる。例えば、ストレージ装置108全体を管理する管理プロセッサ(図示省略)が設けられ、その管理プロセッサがストレージ負荷測定プログラム301を実行して各CHA107の負荷を測定してもよい。
図4は、本発明の実施の形態のパステーブルの説明図である。
パステーブル400は、各ホスト101のメインメモリ103に格納されるテーブルであり、各ホスト101と、これに接続されたストレージ装置108との間に存在する全てのパスの状態を示す情報を含む。図4は、例として、図1のホストAのメインメモリ103に格納されるパステーブル400の内容を示す。したがって、図4は、HBA1及びHBA2から各LU109に至る全てのパスに関する情報を示す。
なお、ホストBのメインメモリ103には、HBA3及びHBA4から各LU109に至る全てのパスに関して、図4と同様のパステーブル400が格納される。
パステーブル400は、ホストAのオペレーティングシステム(OS)(図示省略)が起動したときに、初期アクティブパス設定サブプログラム206によって作成される。そして、ホスト負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
パステーブル400において、パス番号401は、ホストAに関する全てのパスに一意に付与されたパスの番号である。新しいパスが発見されるたびに、新たなパス番号401が追加される。
障害状態402は、パスに障害が発生しているか否かを示す。パスを構成するHBA105、CHA107及びLU109のいずれにも障害が発生していない場合、障害状態402の値は「No」となる。一方、これらのうちいずれかに障害が発生している場合、障害状態402の値は「Yes」となる。障害状態402の値が「Yes」であるパスは、アクティブパス(後述)として設定することができない。
ホスト101がいずれかのパスを経由するI/Oを発行し、HBA105が障害ステータスを返した場合、初期アクティブパス設定サブプログラム206等は、そのパスに障害が発生したと判定し、そのパスの障害状態402の値を「Yes」とする。いずれかのLU109に障害が発生した場合、そのLU109に至る全てのパスの障害状態402の値が「Yes」となる。
アクティブ情報403は、パスがアクティブパスとして設定されているか否かを示す。パスがアクティブパスとして設定されている場合、アクティブ情報403の値は「Yes」となり、アクティブパスとして設定されていない場合、アクティブ情報403の値は「No」となる。
ここで、アクティブパスとは、ホスト101からLU109へのアクセス(I/O)が経由するパスである。アクティブパスでないパスは、データアクセスに寄与しないスタンバイパスである。例えば、図3において、ホスト101とLU1との間には、パス番号301が「1」のパスから「6」のパスまで、6本のアクセス可能なパスがある。しかし実際には、ホスト101は、アクティブパス(図3の例では、パス番号401が「1」のパス)のみを経由してLU1にアクセスする。
アクティブパスは、初期アクティブパス設定サブプログラム206によって最初に設定される。その後、必要に応じて(例えば、アクティブパスに障害が発生した場合又は特定の部位に負荷が集中した場合)、アクティブパス再設定サブプログラムA207又はアクティブパス再設定サブプログラムB208によって、スタンバイパスの一つが新たなアクティブパスとして設定(再設定)され、元のアクティブパスがスタンバイパスとして設定される。アクティブパスの設定及び再設定については、後で詳細に説明する。
HBA−ID404は、パスが経由するHBA105の識別子(HBA−ID)である。
CHA−ID405は、パスが経由するCHA107の識別子(CHA−ID)である。
LU−ID406は、パスが到達するLU109の識別子(LU−ID)である。
HBA−ID404、CHA−ID405及びLU−ID406は、初期アクティブパス設定サブプログラム206等が、SCSIアドレスのポート番号、ターゲット番号及びLU番号を取得するコマンドを発行することによって取得する。取得したポート番号がHBA−ID404に、ターゲット番号がCHA−ID405に、LU番号がLU−ID406に相当する。
なお、HBA−ID404、CHA−ID405及びLU−ID406の組み合わせが、各パスのパスIDである。
測定負荷407は、各パスについてホスト101によって実際に測定された負荷の量を示す。この負荷の量は、ホスト負荷測定サブプログラム204によって測定される所定時間当たりのアクセス(I/O)回数又はアクセスデータ量である(図10参照)。
アクティブパス設定LU数408は、各パスをアクティブパスとして設定しているLU109の数を示す。アクティブ情報403が「Yes」であるパスのアクティブパス設定LU数408は、「1」であり、アクティブ情報403が「No」であるパスのアクティブパス設定LU数408は、「0」である。アクティブパス設定LU数408は、アクティブパスが変更されたときに更新される。
パステーブル400の設定については、後で具体例を挙げて説明する。
図5は、本発明の実施の形態のLUテーブルの説明図である。
LUテーブル500は、各ホスト101のメインメモリ103に格納されるテーブルであり、各ホスト101との間にパスが存在する全てのLU109の状態を示す情報を含む。LUテーブル500は、各ホスト101のOSが起動したときに、初期アクティブパス設定サブプログラム206によって、パステーブル400に基づいて作成される。そして、ホスト負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。図5は、例として、図1のホストAのメインメモリ103に格納されるLUテーブル500の内容を示す。図1の各LU109(LU1〜LU4)とホストAとの間にパスが存在するため、図5は、LU1〜LU4に関する情報を示す。
なお、本実施の形態では、後述するように、ホストBとLU1〜LU4との間にもパスが存在する。このため、ホストBのメインメモリ103にも、LU1〜LU4に関して、図5と同様のLUテーブル500が格納される。
LUテーブル500において、LU−ID501は、各LU109を識別するLU−IDである。図5の例では、LU−ID501の値は、「1」から「4」までとなる。
測定負荷502は、各LU109について、ホスト101によって実際に測定された負荷の量を示す。各LUの測定負荷502の値は、パステーブル400の測定負荷407の値と同じである。例えば、LU−ID401が「1」であるLU109(すなわち、LU1)の測定負荷502は、パステーブル400のLU−ID406が「1」であるパスの測定負荷407の値(図4及び図5の例では、パス番号401が「1」である測定負荷407の値「1500」)である。
測定負荷502の値は、アクティブパスが再設定されたときにクリアされ、「0」となる。
現アクティブパスのパスID503は、各LU109について現在アクティブパスとして設定されているパスのパスIDを示す。すなわち、パステーブル400において、アクティブパス設定LU数408が「1」であるパスのパスIDである。
新アクティブパスのパスID504は、アクティブパスが再設定されるときに、各LU109について新たにアクティブパスとして設定されるパスのパスIDを示す。新たにアクティブパスとして設定されるパスが未定である場合、新アクティブパスのパスID504の値は、「−1」となる。
LUテーブル500の設定については、後で具体例を挙げて説明する。
図6は、本発明の実施の形態のHBAテーブルの説明図である。
HBAテーブル600は、各ホスト101のメインメモリ103に格納されるテーブルであり、各ホスト101が備える全てのHBA105の状態を示す情報を含む。HBAテーブル600は、各ホスト101のOSが起動したときに、初期アクティブパス設定サブプログラム206によって、パステーブル400に基づいて作成される。そして、ホスト負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
図6は、例として、図1のホストAのメインメモリ103に格納されるHBAテーブル600の内容を示す。図1のホストAは、HBA1及びHBA2を備えるため、図6は、HBA1及びHBA2に関する情報を示す。
なお、ホストBは、HBA3及びHBA4を備える。このため、ホストBのメインメモリ103には、HBA3及びHBA4に関して、図6と同様のHBAテーブル600が格納される。
HBAテーブル600において、HBA−ID601は、各HBA105を識別するHBA−IDである。図6の例では、HBA−ID601の値は、「1」から「2」までとなる。
測定負荷602は、各HBA105について実際に測定された負荷の量を示す。各HBA105の測定負荷602の値は、パステーブル400の測定負荷407の値を、該当するHBA−ID404について合計した値である。例えば、HBA−ID601が「1」であるHBA105(すなわち、HBA1)の測定負荷602は、パステーブル400のHBA−ID404が「1」であるパスの測定負荷407の合計値(図4及び図6の例では、「500」)である。
測定負荷602の値は、アクティブパスが再設定されたときにクリアされ、「0」となる。
割当済み負荷603には、アクティブパスを再設定する際に、各HBA105に既に割り当てられたアクティブパスの負荷の値が格納される。
割当済み負荷603の値は、アクティブパスが再設定されるときにクリアされ、「0」となる。
アクティブパス設定LU数604は、各HBA105が、いくつのLU109に至るアクティブパスとして設定されているかを示す。各HBA105のアクティブパス設定LU数604の値は、パステーブル400のアクティブパス設定LU数408の値を、該当するHBA−ID404について合計した値である。例えば、HBA−ID601が「1」であるHBA105(すなわち、HBA1)のアクティブパス設定LU数604は、パステーブル400のHBA−ID404が「1」であるパスのアクティブパス設定LU数408の合計値である。
図4の例では、パス番号401が「1」、「11」、「15」及び「22」であるパスがアクティブパスとして設定されている。それらのうち、パス番号401が「1」及び「15」の二つのパスのHBA−ID404が「1」である。このため、HBA1のアクティブパス設定LU数604は、「2」となる。この場合、HBA1は、二つのLU109(図4の例では、LU1及びLU3)に至るアクティブパスとして設定されている。言い換えると、ホストAがLU1及びLU3に発行するI/OがHBA1を経由する。
アクティブパス設定LU数604の値は、アクティブパスが変更されたとき、その変更に合わせて更新される。
HBAテーブル600の設定については、後で具体例を挙げて説明する。
図7は、本発明の実施の形態のCHAテーブルの説明図である。
CHAテーブル700は、各ホスト101のメインメモリ103に格納されるテーブルであり、各ホスト101との間にパスが存在する全てのCHA107の状態を示す情報を含む。CHAテーブル700は、各ホスト101のOSが起動したときに、初期アクティブパス設定サブプログラム206によって、パステーブル400に基づいて作成される。そして、負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
図7は、例として、図1のホストAのメインメモリ103に格納されるCHAテーブル700の内容を示す。図1のホストAと、CHA1、CHA2及びCHA3との間にパスが存在するため、図7は、CHA1、CHA2及びCHA3に関する情報を示す。
なお、ホストBと、CHA1、CHA2及びCHA3との間にもパスが存在する。このため、ホストBのメインメモリ103には、CHA1、CHA2及びCHA3に関して、図7と同様のCHAテーブル800が格納される。
CHAテーブル700において、CHA−ID701は、各CHA107を識別するCHA−IDである。図7の例では、CHA−ID701の値は、「1」から「3」までとなる。
測定負荷702は、各CHA107について、ホストAによって実際に測定された負荷の量を示す。測定負荷702の値は、後で説明するように(図9の説明参照)、ホストAによって測定されたI/O数又はI/Oデータ量等である。各CHA107の測定負荷702の値は、パステーブル400の測定負荷407の値を、該当するCHA−ID405について合計した値である。
図4の例では、パス番号401が「1」、「11」、「15」及び「22」であるパスがアクティブパスとして設定されている。それらのうち、パス番号401が「1」及び「22」の二つのパスのCHA−ID405が「1」であり、それらの測定負荷407はそれぞれ「1500」及び「500」である。このため、CHA−ID701が「1」であるCHA107(すなわち、CHA1)の測定負荷702は、「1500」及び「500」の合計値「2000」である。同様にして、CHA2及びCHA3の測定負荷702は、それぞれ、「1200」及び「800」である。
各CHA107は、複数のホスト101からのI/Oを受ける場合がある。しかし、各ホスト101は、他のホスト101がどれだけのI/Oを各CHA107に発行したか知ることができない。したがって、ホストAのCHAテーブル700の測定負荷702は、各CHA107が実際に受けている全I/Oのうち、ホストAによって発行されたI/Oによる負荷である。
測定負荷702の値は、アクティブパスが再設定されたときにクリアされ、「0」となる。
割当済み負荷703には、アクティブパスを再設定する際に、各CHA107に既に割り当てられたアクティブパスの負荷の値が格納される。
割当済み負荷703の値は、アクティブパスが再設定されるときにクリアされ、「0」となる。
自ホストアクティブパス設定LU数704は、各CHA107が、ホストAによって、いくつのLU109に至るアクティブパスとして設定されているかを示す。各CHA107は、複数のホスト101からアクティブパスとして設定されている場合がある。しかし、各ホスト101は、他のホスト101がいくつのアクティブパスを各CHA107に設定しているか知ることができない。したがって、ホストAの自ホストアクティブパス設定LU数704は、各CHA107に設定されたアクティブパス数のうち、ホストAが設定したアクティブパスの数である。
各CHA107のアクティブパス設定LU数704の値は、パステーブル400のアクティブパス設定LU数408の値を、該当するCHA−ID405について合計した値である。例えば、CHA−ID701が「1」であるCHA107(すなわち、CHA1)のアクティブパス設定LU数704は、パステーブル400のCHA−ID405が「1」であるパスのアクティブパス設定LU数408の合計値である。
図4の例では、パス番号401が「1」、「11」、「15」及び「22」であるパスがアクティブパスとして設定されている。それらのうち、パス番号401が「1」及び「22」の二つのパスのCHA−ID405が「1」である。このため、CHA1のアクティブパス設定LU数704は、「2」となる。この場合、CHA1は、二つのLU109(図4の例では、LU1及びLU4)に至るアクティブパスとして設定されている。言い換えると、ホストAがLU1及びLU4に発行するI/OがCHA1を経由する。
アクティブパス設定LU数704の値は、アクティブパスが変更されたとき、その変更に合わせて更新される。
CHAテーブル700の設定については、後で具体例を挙げて説明する。
なお、LUテーブル500、HBAテーブル600及びCHAテーブル700は、次のような方法で作成することができる。
例えば、ホスト101のHBA105がLU109を検出し、その検出されたLU109に関する情報をホスト101のオペレーティングシステム(OS)がHBA105から取得してもよい。ホスト101は、検出されたLU109に対してSCSIのコマンドを使用することによって、パスに関する情報(例えば、どのHBA105及びCHA107を経由するかを示す情報等)を取得することができる。ホスト101は、この情報に基づいて、使用可能なLU109、HBA105及びCHA107を把握し、LUテーブル500、HBAテーブル600及びCHAテーブル700を作成することができる。以上のように、ホスト101は、使用可能なLU109及びCHA107を検出することができる。
複数のホスト101が同一のLU109及びCHA107を検出することができる場合、これらの複数のホスト101は、検出された同一のLU109及びCHA107を共有する。
一方、SAN106のファイバーチャネルスイッチ(図示省略)のゾーニング又はストレージ装置108のLUNマスキング等の機能によって、ホスト101のOSが検出することができないLU109を設定することもできる。したがって、これらの機能によって、複数のホスト101がそれぞれ別のLU109を使用するように設定することもできる。
図8は、本発明の実施の形態の負荷情報テーブルの説明図である。
負荷情報テーブル800は、各ホスト101のメインメモリ103に格納されるテーブルであり、各ホスト101との間にパスが存在する全てのCHA107の負荷に関する情報を含む。負荷情報テーブル800は、CHAテーブル700の測定負荷702及びストレージ負荷測定プログラム301によって測定された負荷に基づいて作成される。
図8は、例として、図1のホストAのメインメモリ103に格納される負荷情報テーブル800の内容を示す。図1のホストAと、CHA1、CHA2及びCHA3との間にパスが存在するため、図8は、CHA1、CHA2及びCHA3の負荷に関する情報を示す。
なお、ホストBと、CHA1、CHA2及びCHA3との間にもパスが存在する。このため、ホストBのメインメモリ103には、CHA1、CHA2及びCHA3に関して、図8と同様の負荷情報テーブル800が格納される。
負荷情報テーブル800において、CHA−ID801は、各CHA107を識別するCHA−IDである。図8の例では、CHA−ID801の値は、「1」から「3」までとなる。
ストレージ測定負荷802は、各CHA107について、ストレージ装置108のストレージ負荷測定プログラム301によって実際に測定された所定の時間当たりの負荷の量を示す。ストレージ測定負荷802の値は、ストレージ負荷測定プログラム301によって測定された所定の時間当たりのI/O数又はI/Oデータ量等である。各ホスト101は、アクティブパスの初期設定時(図10参照)及び再設定時(図18参照)に、例えば、SCSIのInquiryコマンドをストレージ装置108に発行することによって、ストレージ測定負荷802を取得する。
例えば、ストレージ負荷測定プログラム301が測定した負荷の累積値がメインメモリ112等に保持されていてもよい。この場合、各ホスト101は、その累積値を所定の時間ごとに取得するとともに、前回取得した累積値をメインメモリ103等に保持する。そして、今回取得した累積値と前回取得した累積値との差を算出して、ストレージ測定負荷802としてもよい。その結果、ストレージ測定負荷802は、所定の時間当たりの負荷の量となる。
図8の例では、CHA1、CHA2及びCHA3のストレージ測定負荷802は、それぞれ、「2400」、「2200」及び「3000」である。
自ホスト測定負荷803は、各CHA107について、ホストAによって実際に測定された負荷の量を示す。すなわち、ホストAの自ホスト測定負荷803は、ホストAのCHAテーブル700の測定負荷702と同じ値となる。
他ホスト負荷804は、各CHA107について、ホストA以外のホスト101からのアクセスによる負荷の量を示す。各CHA107に、ホストA以外の複数のホスト101が接続されている場合、他ホスト負荷804は、それらの複数のホスト101からのアクセスによる負荷の量の合計である。図1の例では、各CHA107にホストAとホストBのみが接続されているため、図8の他ホスト負荷804は、ホストBからのアクセスによる負荷の量である。
ストレージ測定負荷802が全てのホスト101からのアクセスによる負荷の量であり、自ホスト測定負荷803が自ホスト(ホストA)からのアクセスによる負荷の量であるため、他ホスト負荷804は、ストレージ測定負荷802から自ホスト測定負荷803を減算することによって算出される。図8の例では、CHA1のストレージ測定負荷802が「2400」であり、自ホスト測定負荷803が「2000」である。このため、CHA1の他ホスト負荷804は、「2400」から「2000」を減算した「400」である。同様にして、CHA2及びCHA3の他ホスト負荷804は、それぞれ、「1000」及び「2200」である。
次に、本実施の形態の各プログラムが実行する処理について説明する。なお、図9から図19は、便宜上、図1のホストAが実行する場合を例として説明する。図1のホストBも、同様の処理を実行する。
図9は、本発明の実施の形態の交代パス管理プログラム203のフローチャートである。
ホストAのOSが起動した直後には、ホストAとストレージ装置108内の各LU109との間には、使用可能なパスは存在しても、アクティブパスは設定されていない。このため、ホストAのOSが起動すると、交代パス管理プログラム203の実行が開始し(901)、アクティブパスを設定する(902)。以下の説明において、交代パス管理プログラム203によって最初に設定されるアクティブパスを初期アクティブパスと記載する。具体的には、交代パス管理プログラム203によって呼び出された初期アクティブパス設定サブプログラム206が、初期アクティブパスを設定する(図10〜図12参照)。
次に、交代パス管理プログラム203は、交代パス管理設定プログラム202を呼び出して、測定負荷種別及び測定期間を設定する(903)。
測定負荷種別とは、負荷測定サブプログラム204が測定する対象である。ホスト101からのアクセスによる負荷を表す値としては、「I/O数」、「I/Oデータ量」又は「CPU利用率」等がある。本実施の形態では、測定負荷種別として、「I/O数」又は「I/Oデータ量」のいずれかが設定される。ホストAのユーザは、「I/O数」又は「I/Oデータ量」のいずれかを設定することができる。しかし、負荷を表す他の値が設定されても、本発明を実施することができる。
測定期間とは、負荷測定サブプログラム204が、設定された測定対象を測定する期間であり、ホストAのユーザによって、任意の期間が設定される。
次に、交代パス管理プログラム203は、ステップ903の設定に従って負荷を測定する(904)。具体的には、交代パス管理プログラム203によって呼び出された負荷測定サブプログラム204が、ステップ903の設定に従って負荷を測定する(図12参照)。なお、I/O(すなわち、データアクセス)が発生するたびに、負荷測定サブプログラム204がそのアクセスによる負荷を測定する。
例えば、測定負荷種別として「I/O数」が設定され、測定期間として「1時間」が設定されると、負荷測定サブプログラム204は、各LU109について、1時間ごとのI/O数を測定し、測定した値を測定負荷407としてパステーブル400に格納する。
次に、交代パス管理プログラム203は、ホストAがシャットダウンされるか否かを判定する(905)。具体的には、ホストAのユーザがホスト101をシャットダウンするコマンドを発行したか否かを判定する。ホスト101がシャットダウンされる場合は、交代パス管理プログラム203を終了する(906)。
一方、ホストAがシャットダウンされない場合、交代パス管理プログラム203は、パス数に変動があったか否かを判定する(907)。ここで、パス数に変動があった場合とは、アクティブパスが停止した場合又は使用可能なパスが新たに追加された場合である。アクティブパスが停止した場合とは、交代パス管理プログラム203が、アクティブパスを構成するデバイス(すなわち、HBA105又はCHA107)で障害を検出した場合、又は、これらのデバイスのいずれかが撤去されたことを検出した場合等である。使用可能なパスが新たに追加された場合とは、交代パス管理プログラム203が、デバイスの障害からの回復を検出した場合、又は、新たなデバイスの追加を検出した場合等である。
パス数に変動があった場合、交代パス管理プログラム203は、アクティブパスを再設定する(908)。具体的には、交代パス管理プログラム203によって呼び出されたアクティブパス再設定サブプログラムA207が、アクティブパスを再設定する(図14〜図17参照)。
なお、アクティブパスの「再設定」とは、既に設定されているアクティブパスを見直し、負荷がより均等に分散するように設定しなおす処理である。
一方、パス数に変動がない場合、交代パス管理プログラム203は、アクティブパスを再設定するタイミングであるか否かを判定する(909)。具体的には、ステップ903で設定された測定期間が経過したか否かを判定する。
ホストAのユーザは、予め、アクティブパスを再設定する間隔(例えば、1時間、1日、1週間、1ヶ月又は1年)を、上記の測定期間として設定することができる。ユーザが「1時間」と設定した場合、ステップ909において、前回アクティブパスが再設定(又は初期設定)されてから1時間経過したか否かを判定する。1時間経過したと判定された場合は、アクティブパスを再設定するタイミングであるため、交代パス管理プログラム203は、アクティブパスを再設定する(910)。具体的には、交代パス管理プログラム203によって呼び出されたアクティブパス再設定サブプログラムB208が、アクティブパスを再設定する(図18、図19等参照)。
なお、アクティブパスの再設定は、上記のように所定の間隔で実行するだけでなく、ホストAのユーザからの要求を受けて実行してもよい。この場合、交代パス管理プログラム203は、ステップ909において、ユーザからアクティブパス再設定要求が発行されたか否かを判定する。再設定要求が発行されたと判定された場合、アクティブパスを再設定するタイミングであるため、ステップ910に進む。
一方、上記の所定の間隔が経過しておらず、かつ、ユーザからの再設定要求も発行されていない場合は、アクティブパスを再設定するタイミングでないため、ステップ904に戻る。
アクティブパス再設定サブプログラムA207又はアクティブパス再設定サブプログラムB208が実行された場合、交代パス管理プログラム203は、次に、レポートを出力する(911)。具体的には、交代パス管理プログラム203に呼び出されたレポートサブプログラム209が、再設定されたアクティブパスに関する情報をホストAの入出力装置104に表示する。レポートを出力した後、ステップ904に戻る。
図10は、本発明の実施の形態の初期アクティブパス設定サブプログラム206のフローチャートである。
図9のステップ902において、交代パス管理プログラム203から呼び出されることによって、初期アクティブパス設定サブプログラム206の実行が開始する(1001)。このとき、交代パス管理プログラム203は、ホストAからアクセス可能な全てのLU109(図1の例では、LU1〜LU4)を認識している。
最初に、初期アクティブパス設定サブプログラム206は、パステーブル400を作成する(1002)。この時点では、パステーブル400の値は全て初期値である。すなわち、障害状態402及びアクティブ情報403の値は全て「No」であり、測定負荷407及びアクティブパス設定LU数408の値は全て「0」である。
次に、初期アクティブパス設定サブプログラム206は、LUテーブル500、HBAテーブル600、CHAテーブル700及び負荷情報テーブル800を作成する(1003)。この時点では、各テーブルの値は全て初期値である。すなわち、測定負荷502、602、702、割当済み負荷603、703、アクティブパス設定LU数604及び704の値は、全て「0」である。ストレージ測定負荷802、自ホスト測定負荷803及び他ホスト負荷804の値も全て「0」である。また、現アクティブパスのパスID503及び新アクティブパスのパスID504の値は、未定である。
次に、初期アクティブパス設定サブプログラム206は、各CHA107について、ストレージ測定負荷を取得する(1004)。具体的には、初期アクティブパス設定サブプログラム206は、SCSIのInquiryコマンドを発行して、ストレージ負荷測定プログラム301が測定した負荷を取得し、その値を負荷情報テーブル800のストレージ測定負荷802として格納する。取得した値が負荷の累積値である場合は、取得した値から所定の時間当たりの負荷を算出して、格納する。
次に、初期アクティブパス設定サブプログラム206は、全LU109のアクティブパスが設定されたか否かを判定する(1005)。
全LU109のアクティブパスが設定されていないと判定された場合、初期アクティブパス設定サブプログラム206は、アクティブパスが設定されておらず、かつ、LU−IDが最も小さい値であるLU109(以下、LUmと記載する。ここで、「m」はLU−ID)を選択する(1006)。
次に、初期アクティブパス設定サブプログラム206は、選択されたLUmについて、初期CHA選択処理(1007)及び初期HBA選択処理(1008)を順次実行する。これらの処理については、後で詳細に説明する(図11、図12参照)。
次に、初期アクティブパス設定サブプログラム206は、ステップ1007及びステップ1008において選択されたHBA105及びCHA107を経由するパス(図10の説明において、「パスA」と記載する)を、LUmへのアクティブパス(初期アクティブパス)として設定する(1009)。
具体的には、パステーブル400において、パスAのパスIDに対応するアクティブ情報403を「Yes」とする。さらに、パスAのパスIDに対応するアクティブパス設定LU数408に「1」を加算する。さらに、HBAテーブル600において、パスAに対応するHBA−ID601のアクティブパス設定LU数604に「1」を加算する。さらに、CHAテーブル700において、パスAに対応するCHA−ID701の自ホストアクティブパス設定LU数704に「1」を加算する。さらに、LUテーブル500において、パスAに対応するLU−IDの新アクティブパスのパスID504を、パスAのパスIDに変更する。
さらに、全CHA107のストレージ測定負荷802の合計をホストAが認識しているLU109の数で除算した値(すなわち、平均負荷)を、CHAテーブル700のパスAに対応する割当済み負荷703に加算する。この時点ではホストAによるアクセスの実績がないため、他のホスト101による平均負荷をホストAによる負荷の代わりに使用する。
初期アクティブパス設定サブプログラム206は、ステップ1009を実行した後、ステップ1005に戻る。
一方、ステップ1005において、全LU109のアクティブパスが設定されたと判定された場合、初期アクティブパス設定サブプログラム206は、設定されたアクティブパスを実際に運用するため、LUテーブル400の新アクティブパスのパスID404の値を、現アクティブパスのパスID403に複写する(1010)。その結果、交代パス管理プログラム203は、新しいアクティブパスの運用を開始する。すなわち、ステップ1010が実行された後、交代パス管理プログラム203は、アプリケーションプログラム201から発行されたI/Oを、新しいアクティブパスに割り当てる。
以上で、初期アクティブパス設定サブプログラム206の実行が終了する(1011)。
図11は、本発明の実施の形態の初期CHA選択処理のフローチャートである。
初期CHA選択処理は、図10のステップ1007において、初期アクティブパス設定サブプログラム206によって実行される。初期アクティブパス設定サブプログラム206は、初期CHA選択処理を実行するときに、CHAテーブル700及び負荷情報テーブル800を参照する。この処理によって選択されたCHA107は、図10のステップ1006において選択されたLUmへの初期アクティブパスとして設定される。
初期CHA選択処理が開始されると(1101)、初期アクティブパス設定サブプログラム206は、最初に、ホストAのOSが認識している全CHA107において、ストレージ測定負荷802が「0」であるか否かを判定する(1102)。
ステップ1102において、ストレージ測定負荷802が全CHA107において「0」であると判定された場合、いずれのCHA107も、ホストA以外のホスト101からアクセスされたことがない。図1の例では、いずれのCHA107もホストBからアクセスされたことがない。さらに、この時点では、ホストAからのアクティブパスも設定されていないため、結局、いずれのCHA107も、ホストA及びBからのアクセスを受けたことがない。この場合、過去に測定された負荷を参照して、負荷が分散するようにアクティブパスを設定することができない。このため、処理はステップ1106に進む(後述)。
一方、ステップ1102において、ストレージ測定負荷802が全CHA107において「0」でない(言い換えると、少なくとも一つのCHA107において、ストレージ測定負荷802が「0」でない)と判定された場合、少なくとも一つのCHA107が、ホストBからアクセスを受けたことがある。この場合、ホストAから各LU109へのアクティブパスは、ホストBからのアクセスを考慮して設定される必要がある。例えば、いずれかのCHA107にホストBからのアクセスが集中している場合、そのCHA107を避けてホストAからのアクティブパスを設定することによって、負荷が適切に分散される。
このため、初期アクティブパス設定サブプログラム206は、CHAテーブル700の割当済み負荷703に、各CHA107について測定されたストレージ測定負荷802の値を初期値として設定する(1103)。この時点では、ホストAが各CHA107にアクセスしたことがないため、ストレージ測定負荷802の値は、ホストBからのアクセスによる負荷の値である。
次に、初期アクティブパス設定サブプログラム206は、全CHA107のうち、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数あるか否かを判定する(1104)。
ここで、選択候補とは、最終的に初期アクティブパスとして選択されるCHA107の候補である。「まだ選択候補になったことがない」とは、当該初期CHA選択処理において選択候補になったことがないという意味である。後述するように、ステップ1105等でCHA107が選択候補になっても、そのCHA107が障害等のために使用できない場合は、そのCHA107を選択候補から除外して、その他のCHA107についてステップ1104以降の処理が行われる。ステップ1104において、まだ選択候補になったことがないCHA107とは、そのようにして除外されていないCHA107を意味する。
ステップ1104において、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数ないと判定された場合、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷703の値が最小であるCHA107にLUmへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム206は、割当済み負荷703の値が最小であるCHA107を選択候補とする(1105)。
一方、ステップ1104において、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数あると判定された場合、それらの複数のCHA107からアクティブパスに設定されるCHA107を選択する必要がある。このため、初期アクティブパス設定サブプログラム206は、それらの複数のCHA107のうち、自ホストアクティブパス設定LU数704が最小であるCHA107が複数あるか否かを判定する(1106)。
ステップ1106において、自ホストアクティブパス設定LU数704が最小であるCHA107が複数ないと判定された場合、割当済み負荷703の値が最小であり、かつ、自ホストアクティブパス設定LU数704が最小であるCHA107が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷703の値が最小である複数のCHA107のうち、自ホストアクティブパス設定LU数704が最小であるCHA107にLUmへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム206は、そのCHA107を選択候補とする(1107)。
一方、ステップ1106において、自ホストアクティブパス設定LU数704が最小であるCHA107が複数あると判定された場合、それらの複数のCHA107のいずれを選択しても、同じように負荷が分散される。このため、初期アクティブパス設定サブプログラム206は、それらの複数のCHA107のうち、CHA−ID701が最小のCHA107を選択候補とする(1108)。
ステップ1105、1107又は1108においてCHA107が選択候補とされると、初期アクティブパス設定サブプログラム206は、選択候補のCHA107を経由する稼動状態のパスがあるか否かを判定する(1109)。稼動状態のパスとは、ホストAからLUmまでのI/Oを伝達できる(すなわち、使用可能な)パスである。例えば、選択候補のCHA107に障害が発生している場合、選択候補のCHA107を経由する稼動状態のパスがない。この場合、選択候補のCHA107を経由するいずれのパスもアクティブパスとして設定することができない。
ステップ1109において、選択候補のCHA107を経由する稼動状態のパスがあると判定された場合、選択候補のCHA107をアクティブパスとして設定することができる。このため、初期アクティブパス設定サブプログラム206は、選択候補のCHA107を最終的に選択して(1112)、初期CHA選択処理を終了する(1113)。その後、ステップ1109において「ある」と判定された稼動状態のパスを対象として、初期HBA選択処理が実行される(図12参照)。
ステップ1109において、選択候補のCHA107を経由する稼動状態のパスがないと判定された場合、選択候補のCHA107をアクティブパスとして設定することができない。このため、初期アクティブパス設定サブプログラム206は、この時点で選択候補となっているCHA107を、選択候補から除外する。そして、まだ選択候補になったことがないCHA107があるか否かを判定する(1110)。
ステップ1110において、まだ選択候補になったことがないCHA107があると判定された場合、そのCHA107について選択するか否かを判定するために、ステップ1104に戻る。
一方、ステップ1110において、まだ選択候補になったことがないCHA107がないと判定された場合、LUmへのアクティブパスとして設定することができるCHA107が存在しない。このため、エラー処理を実行する(1111)。
図12は、本発明の実施の形態の初期HBA選択処理のフローチャートである。
初期HBA選択処理は、図10のステップ1008において、初期アクティブパス設定サブプログラム206によって実行される。初期アクティブパス設定サブプログラム206は、初期HBA選択処理を実行するときに、HBAテーブル600を参照する。この処理によって選択されたHBA105は、図10のステップ1006において選択されたLUmへの初期アクティブパスとして設定される。
初期HBA選択処理が開始されると(1201)、初期アクティブパス設定サブプログラム206は、最初に、対象のパスの中に、アクティブパス設定LU数604が最小であるHBA105が複数あるか否かを判定する(1202)。ここで、対象のパスとは、初期CHA選択処理(図11)のステップ1109において「ある」と判定された稼動状態のパスである。
ステップ1202において、アクティブパス設定LU数604が最小であるHBA105が複数ないと判定された場合、アクティブパス設定LU数604が最小であるHBA105が一つのみ存在する。負荷を可能な限り均等に分散させるためには、アクティブパス設定LU数604が最小であるHBA105にLUmへのアクティブパスを割り当てることが望ましい。このため、初期アクティブパス設定サブプログラム206は、そのHBA105を選択する(1203)。
一方、ステップ1202において、アクティブパス設定LU数604が最小であるHBA105が複数あると判定された場合、それらの複数のHBA105のいずれを選択しても、同じように負荷が分散される。このため、初期アクティブパス設定サブプログラム206は、それらの複数のHBA105のうち、HBA−ID601が最小のHBA105を選択する(1204)。
以上で、初期HBA選択処理を終了する(1205)。
以上の図10から図12に示す処理によれば、ホストAが起動するときに、既にホストBがストレージ装置108を使用している場合、ホストBからのアクセスによる負荷を参照して、各CHAの負荷が可能な限り均等に分散されるようにホストAのアクティブパスが設定される。その結果、ストレージ装置108を多数のホスト101が使用している場合にも、各CHAの負荷が適切に分散される。
図13は、本発明の実施の形態のホスト負荷測定サブプログラム204のフローチャートである。
図9のステップ904において呼び出されることによって、ホスト負荷測定サブプログラム204の実行が開始する(1301)。
最初に、ホスト負荷測定サブプログラム204は、ホスト101からいずれかのLU109へのデータアクセス(I/O)を、そのLU109について設定されたアクティブパスAに割り当てる(1302)。
次に、ホスト負荷測定サブプログラム204は、測定負荷種別を判定する(1303)。この測定負荷種別は、図9のステップ903において設定されたものである。
ステップ1303において、測定負荷種別として「I/O数」が設定されていると判定された場合、ホスト負荷測定サブプログラム204は、アクティブパスAについて発行されたデータI/Oの回数を測定する(1304)。
一方、ステップ1303において、測定負荷種別として「I/Oデータ量」が設定されていると判定された場合、ホスト負荷測定サブプログラム204は、アクティブパスAについて発行されたデータI/Oのデータ量を測定する(1305)。
次に、ホスト負荷測定サブプログラム204は、各テーブルの値を更新する(1306)。具体的には、パステーブル400のアクティブパスAに該当する測定負荷407の値に、ステップ1304又は1305において測定された値を加算する。さらに、LUテーブル500、HBAテーブル600及びCHAテーブル700において、アクティブパスAに含まれるLU、HBA及びCHAの測定負荷502、602及び702の値に、ステップ1304又は1305において測定された値を加算する。
以上で、ホスト負荷測定サブプログラム204の実行が終了する(1307)。
図14は、本発明の実施の形態のアクティブパス再設定サブプログラムA207のフローチャートである。
図9のステップ908において、交代パス管理プログラム203から呼び出されることによって、アクティブパス再設定サブプログラムA207の実行が開始する(1401)。
最初に、アクティブパス再設定サブプログラムA207は、使用可能なパスが新たに追加されたか、アクティブパスが停止したかを判定する(1402)。
ステップ1402において、アクティブパスが停止したと判定された場合、停止したアクティブパスに代わるアクティブパスを設定しなければならない。その結果、停止したアクティブパス上を経由していたアクセスが、他のパスに割り当てられる。このため、アクティブパス再設定サブプログラムA207は、アクティブパス停止時のアクティブパス再設定処理を実行する(1403)。この処理については、後で詳細に説明する(図15参照)。
ステップ1403の処理が終了すると、アクティブパス再設定サブプログラムA207の処理が終了する(1410)。
一方、ステップ1402において、使用可能なパスが新たに追加されたと判定された場合、アクティブパス再設定サブプログラムA207は、既に設定されているアクティブパスを、追加されたパスに割り当てる(すなわち、追加されたパスをアクティブパスとして設定する)ことによって、負荷を分散させる。
前述のように、パスが新たに追加された場合とは、パスを構成するデバイス(HBA105又はCHA107)が新たに追加された場合である。デバイスが新たに追加される場合には、デバイスが新設される場合のほか、デバイスが障害から回復した場合も含む。このため、アクティブパス再設定サブプログラムA207は、CHA107が新たに追加されたか否かを判定する(1404)。
ステップ1404において、CHA107が新たに追加されたと判定された場合、アクティブパス再設定サブプログラムA207は、追加されたCHA107にアクティブパスを割り当てて負荷を分散する。
まず、アクティブパス再設定サブプログラムA207は、HBAテーブル600において、全てのHBA−ID601に対応する割当済み負荷603をクリアする(すなわち、値を「0」にする)(1411)。
次に、アクティブパス再設定サブプログラムA207は、CHAテーブル700において、全てのCHA−ID701に対応する割当済み負荷703をクリアする(1412)。
次に、アクティブパス再設定サブプログラムA207は、CHAテーブル700の割当済み負荷703に、各CHA107について算出された他ホスト負荷804の値を初期値として設定する(1413)。
次に、アクティブパス再設定サブプログラムA207は、追加されたパスに関する全てのLU109について、新たなアクティブパスが設定されたか否かを判定する(1414)。ここで、追加されたパスに関するLU109とは、ホストAが認識していたLU109のうち、追加されたパスに接続されたもの、及び、パスが追加されたことによって新たにホストAが認識したLU109である。
ステップ1414において、追加されたパスに関する全てのLU109について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムA207の処理を終了する(1410)。
一方、ステップ1414において、追加されたパスに関する全てのLU109について新たなアクティブパスが設定されていない(すなわち、少なくとも一つのLU109について、新たなアクティブパスが設定されていない)と判定された場合、アクティブパス再設定サブプログラムA207は、新たなアクティブパスが設定されていないLU109の測定負荷502の値を比較し、その値が最も大きいLU109(LUm)を選択する(1415)。
次に、アクティブパス再設定サブプログラムA207は、CHA選択処理(1405)及びHBA選択処理(1406)を順次実行する。これらの処理については、後で詳細に説明する(図16、図17参照)。
次に、アクティブパス再設定サブプログラムA207は、ステップ1405及びステップ1406において選択されたHBA105及びCHA107を経由するパスを、新たなアクティブパスとして設定する(1407)。ステップ1407においてアクティブパス再設定サブプログラムA207によって実行される具体的な処理は、図10のステップ1009において「パスA」に対して実行される処理と同様であるため、詳細な説明を省略する。ここで、選択されたHBA105及びCHA107を経由するパスが「パスA」に相当する。
ただし、ステップ1407では、平均負荷の代わりに、ホストAのLUテーブル500の測定負荷502が参照される。そして、パスAが至るLU109の測定負荷502の値が、パスAに対応するCHAテーブル700の割当済み負荷703、及び、パスAに対応するHBAテーブル600の割当済み負荷603に加算される。
なお、パスAが至るLU109が新たに認識されたものである場合、当該LU109は、まだホストAによって使用されていないため、測定負荷502の値がない。この場合、全LU109の測定負荷502の合計値をLU109の数で除算した値が、割当済み負荷703及び割当済み負荷603に加算される。
ステップ1407の処理が終了すると、ステップ1414に戻る。
一方、ステップ1404において、CHA107が新たに追加されなかったと判定された場合、HBA105が新たに追加されている。この場合、追加されたHBA105にアクティブパスを割り当てることによって負荷を分散する。ただし、CHA107については、アクティブパスの割り当てを変更しない。すなわち、アクティブパス再設定サブプログラムA207は、CHA選択処理を実行せずに、HBA選択処理(1408)を実行する。このHBA選択処理については、後で詳細に説明する(図17参照)。
アクティブパス再設定サブプログラムA207は、HBA選択処理(1408)を実行する前に、全てのHBA−ID601に対応する割当済み負荷603をクリアする(1416)。
次に、アクティブパス再設定サブプログラムA207は、追加されたパスに関する全てのLU109について、新たなアクティブパスが設定されたか否かを判定する(1417)。
ステップ1417において、追加されたパスに関する全てのLU109について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムA207の処理を終了する(1410)。
一方、ステップ1417において、追加されたパスに関する全てのLU109について新たなアクティブパスが設定されていない(すなわち、少なくとも一つのLU109について、新たなアクティブパスが設定されていない)と判定された場合、アクティブパス再設定サブプログラムA207は、HBA選択処理を実行する(1408)。
次に、アクティブパス再設定サブプログラムA207は、ステップ1408において選択されたHBA105を経由するパスを、新たなアクティブパスとして設定する(1409)。ステップ1409において実行される具体的な処理は、ステップ1407において実行される処理と同様であるため、詳細な説明を省略する。
ただし、CHA107についてはアクティブパスが再設定されないため、各CHA107に関するアクティブパスの設定は変更されない。このため、ステップ1409では、CHAテーブル700は変更されない。
ステップ1409の処理が終了すると、ステップ1417に戻る。
図15は、本発明の実施の形態のアクティブパス停止時のアクティブパス再設定処理のフローチャートである。
前述のように、アクティブパスを構成するデバイス(HBA105又はCHA107)のいずれかに障害が発生した場合、又は、これらのデバイスのいずれかが撤去された場合に、アクティブパスが停止する。アクティブパス停止時のアクティブパス再設定処理は、停止したアクティブパスに代わる新たなアクティブパスを設定する処理である。
アクティブパス停止時のアクティブパス再設定処理は、図14のステップ1403において、アクティブパス再設定サブプログラムA207によって実行される。
アクティブパス停止時のアクティブパス再設定処理が開始すると(1501)、アクティブパス再設定サブプログラムA207は、最初に、停止したパスに関するパステーブル400、HBAテーブル600及びCHAテーブル700のアクティブパス設定LU数408、アクティブパス設定LU数604及び自ホストアクティブパス設定LU数704の値から「1」を減算する(1502)。
次に、アクティブパス再設定サブプログラムA207は、HBAテーブル600において、全てのHBA−ID601に対応する割当済み負荷603をクリアする(すなわち、値を「0」にする)(1503)。
次に、アクティブパス再設定サブプログラムA207は、CHAテーブル700において、全てのCHA−ID701に対応する割当済み負荷703をクリアする(1504)。
次に、アクティブパス再設定サブプログラムA207は、LUテーブル500を参照し、HBAテーブル600の測定負荷602から、停止したアクティブパスに関する全てのLU109の測定負荷502を減算し、その減算後の測定負荷602によって割当済み負荷603を初期化する(1505)。すなわち、減算後の測定負荷602の値を、割当済み負荷603に複写する。
次に、アクティブパス再設定サブプログラムA207は、停止したアクティブパスに関する全てのLU109について、新たなアクティブパスが設定されたか否かを判定する(1506)。
ステップ1506において、全てのLU109について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムA207は、アクティブパス停止時のアクティブパス再設定処理を終了する(1515)。
一方、ステップ1506において、全てのLU109について新たなアクティブパスが設定されていないと判定された場合、新たなアクティブパスが設定されていないLU109について、新たなアクティブパスを設定する必要がある。このため、アクティブパス再設定サブプログラムA207は、新たなアクティブパスが設定されていないLU109から、LU−ID501が最小のものを選択する(1507)。
次に、アクティブパス再設定サブプログラムA207は、ステップ1507で選択されたLU109に関する停止したアクティブパスが経由していたCHA107を経由する他のパスの中に、一つ以上の稼動状態のパスがあるか否かを判定する(1508)。
ステップ1508において、一つ以上の稼動状態のパスがあると判定された場合、停止したアクティブパスを構成するCHA107は稼動しているため、そのCHA107を経由する稼動状態のパスのいずれかを、停止したアクティブパスに代わる新たなアクティブパスとして設定することができる。このため、アクティブパス再設定サブプログラムA207は、CHA選択処理を実行せず、HBA選択処理を実行する(1513)。HBA選択処理については、後で詳細に説明する(図17参照)。
次に、アクティブパス再設定サブプログラムA207は、ステップ1513において選択されたHBA105を経由するパスを、新たなアクティブパスとして設定する(1514)。ステップ1514において実行される具体的な処理は、図14のステップ1409において実行される処理と同様であるため、詳細な説明を省略する。
一方、ステップ1508において、稼動状態のパスがないと判定された場合、停止したアクティブパスを構成するCHA107を新たなアクティブパスとして設定することができない。このため、アクティブパス再設定サブプログラムA207は、他のCHA107を経由する新たなアクティブパスを設定するため、CHA選択処理(1510)及びHBA選択処理(1511)を実行する。CHA選択処理及びHBA選択処理については、後で詳細に説明する(図16、図17参照)。
アクティブパス再設定サブプログラムA207は、CHA選択処理(1510)及びHBA選択処理(1511)を実行する前に、CHAテーブルの割当済み負荷703を初期化する(1509)。具体的には、アクティブパス再設定サブプログラムA207は、各CHA107について、ストレージ測定負荷802を取得し、その取得した値を初期値として割当済み負荷703を設定する。このとき、停止したパスが経由するCHA107については、取得したストレージ測定負荷802から当該停止したパスの測定負荷407を減算した値を、割当済み負荷703の初期値として設定する。
次に、アクティブパス再設定サブプログラムA207は、ステップ1510及び1511において選択されたCHA107及びHBA105を経由するパスを、新たなアクティブパスとして設定する(1512)。ステップ1512において実行される具体的な処理は、図14のステップ1407において実行される処理と同様であるため、詳細な説明を省略する。
ステップ1512又は1514が終了すると、ステップ1506に戻る。
図16は、本発明の実施の形態のCHA選択処理のフローチャートである。
CHA選択処理(図16)は、初期CHA選択処理(図11)とほぼ同じである。すなわち、図16のステップ1604から1613が、それぞれ、図11のステップ1104から1113に対応する。
以下の説明において、図11と共通する詳細な説明は、省略する。
CHA選択処理は、図14のステップ1405又は図15のステップ1510において、アクティブパス再設定サブプログラムA207によって実行される。また、CHA選択処理は、後述するように、図19のステップ1909において、アクティブパス再設定サブプログラムB208によっても実行される。アクティブパス再設定サブプログラムA207等は、CHA選択処理を実行するときに、CHAテーブル700及び負荷情報テーブル800を参照する。この処理によって選択されたCHA107は、新たなアクティブパスとして設定される。
CHA選択処理が開始されると(1601)、アクティブパス再設定サブプログラムA207等は、全CHA107のうち、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数あるか否かを判定する(1604)。
ステップ1604において、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数ないと判定された場合、アクティブパス再設定サブプログラムA207等は、割当済み負荷703の値が最小であるCHA107を選択候補とする(1605)。
一方、ステップ1604において、まだ選択候補になったことがなく、かつ、割当済み負荷703の値が最小であるCHA107が複数あると判定された場合、アクティブパス再設定サブプログラムA207等は、それらの複数のCHA107のうち、自ホストアクティブパス設定LU数704が最小であるCHA107が複数あるか否かを判定する(1606)。
ステップ1606において、自ホストアクティブパス設定LU数704が最小であるCHA107が複数ないと判定された場合、割当済み負荷703の値が最小であり、かつ、自ホストアクティブパス設定LU数704が最小であるCHA107が一つのみ存在する。アクティブパス再設定サブプログラムA207等は、そのCHA107を選択候補とする(1607)。
一方、ステップ1606において、自ホストアクティブパス設定LU数704が最小であるCHA107が複数あると判定された場合、アクティブパス再設定サブプログラムA207等は、それらの複数のCHA107のうち、CHA−ID701が最小のCHA107を選択候補とする(1608)。
ステップ1605、1607又は1608においてCHA107が選択候補とされると、アクティブパス再設定サブプログラムA207等は、選択候補のCHA107を経由する稼動状態のパスがあるか否かを判定する(1609)。
ステップ1609において、選択候補のCHA107を経由する稼動状態のパスがあると判定された場合、アクティブパス再設定サブプログラムA207等は、選択候補のCHA107を最終的に選択して(1612)、CHA選択処理を終了する(1613)。その後、ステップ1609において「ある」と判定されたパスのうち、処理対象のLUに対する稼動状態の全てのパスを対象として、HBA選択処理が実行される(図17参照)。
一方、ステップ1609において、選択候補のCHA107を経由する稼動状態のパスがないと判定された場合、アクティブパス再設定サブプログラムA207等は、この時点で選択候補となっているCHA107を、選択候補から除外する。そして、まだ選択候補になったことがないCHA107があるか否かを判定する(1610)。
ステップ1610において、まだ選択候補になったことがないCHA107があると判定された場合、ステップ1604に戻る。
一方、ステップ1610において、まだ選択候補になったことがないCHA107がないと判定された場合、エラー処理を実行する(1611)。
図17は、本発明の実施の形態のHBA選択処理のフローチャートである。
HBA選択処理は、図14のステップ1406、1408、図15の1511又は1513において、アクティブパス再設定サブプログラムA207によって実行される。また、HBA選択処理は、後述するように、図19のステップ1910において、アクティブパス再設定サブプログラムB208によっても実行される。アクティブパス再設定サブプログラムA207等は、HBA選択処理を実行するときに、HBAテーブル600を参照する。この処理によって選択されたHBA105は、新たなアクティブパスとして設定される。
HBA選択処理が開始されると(1701)、アクティブパス再設定サブプログラムA207等は、最初に、対象のパスの中に、割当済み負荷603が最小であるHBA105が複数あるか否かを判定する(1702)。
ここで、対象のパスとは、HBA選択処理の対象となるパスである。HBA選択処理がステップ1406、1511又は1910において実行される場合、直前のCHA選択処理(図16)のステップ1609において「ある」と判定されたパスのうち、処理対象のLU109に至る全ての稼動状態のパスが対象となる。HBA選択処理がステップ1408において実行される場合、稼動状態の全てのHBA105を経由するパスのうち、処理対象のLU109に至る全ての稼動状態のパスが対象となる。HBA選択処理がステップ1513において実行される場合、停止したアクティブパスを構成するCHA107を経由するパスのうち、処理対象のLU109に至る全ての稼動状態のパスが対象となる。
ステップ1702において、割当済み負荷603が最小であるHBA105が複数ないと判定された場合、割当済み負荷603が最小であるHBA105が一つのみ存在する。負荷を可能な限り均等に分散させるためには、割当済み負荷603が最小であるHBA105のアクティブパスを割り当てることが望ましい。このため、アクティブパス再設定サブプログラムA207等は、そのHBA105を選択する(1703)。
一方、ステップ1702において、割当済み負荷603が最小であるHBA105が複数あると判定された場合、アクティブパス再設定サブプログラムA207等は、それらの複数のHBA105の中に、アクティブパス設定LU数604が最小であるHBA105が複数あるか否かを判定する(1704)。
ステップ1704において、アクティブパス設定LU数604が最小であるHBA105が複数ないと判定された場合、アクティブパス設定LU数604が最小であるHBA105が一つのみ存在する。負荷を可能な限り均等に分散させるためには、アクティブパス設定LU数604が最小であるHBA105にLUmへのアクティブパスを割り当てることが望ましい。このため、アクティブパス再設定サブプログラムA207等は、そのHBA105を選択する(1705)。
一方、ステップ1704において、アクティブパス設定LU数604が最小であるHBA105が複数あると判定された場合、それらの複数のHBA105のいずれを選択しても、同じように負荷が分散される。このため、アクティブパス再設定サブプログラムA207等は、それらの複数のHBA105のうち、HBA−ID601が最小のHBA105を選択する(1706)。
以上で、HBA選択処理を終了する(1707)。
図18は、本発明の実施の形態のアクティブパス再設定サブプログラムB208のフローチャートである。
図9のステップ910において、交代パス管理プログラム203から呼び出されることによって、アクティブパス再設定サブプログラムB208の実行が開始する(1801)。
最初に、アクティブパス再設定サブプログラムB208は、アクティブパスの負荷が分散しているか否かを判定する(1802)。例えば、全てのHBA105及びCHA107の測定負荷の最小値と最大値を比較し、最小値が最大値の90%以上であるか否かを判定する。その結果、最小値が最大値の90%以上である場合は、アクティブパスの負荷が分散していると判定され、アクティブパスを再設定せずに、ステップ1805に進む。
一方、最小値が最大値の90%以上でない場合は、負荷が分散していないと判定される。この場合、アクティブパスを再設定して負荷を分散させるために、ステップ1803に進む。
なお、上記の例では、負荷が適度に分散されているか否かを判定する閾値を、「測定負荷の最大値の90%」としたが、ユーザは、他の閾値(例えば、最大値の50%)を使用してもよい。
次に、アクティブパス再設定サブプログラムB208は、全LUのアクティブパス再設定処理を実行する(1803)。この処理については、後で詳細に説明する(図19参照)。
次に、アクティブパス再設定サブプログラムB208は、LUテーブル500の新アクティブパスのパスID504の値を、現アクティブパスのパスID503に複写する(1804)。その結果、新アクティブパスの運用が開始される。
次に、パステーブル400、LUテーブル500、HBAテーブル600及びCHAテーブル700の測定負荷407、502、602及び702の値をクリアする(1805)。すなわち、これらの値を「0」にする。
以上で、アクティブパス再設定サブプログラムB208の実行が終了する(1806)。
図19は、本発明の実施の形態の全LUのアクティブパス再設定処理のフローチャートである。
全LUのアクティブパス再設定処理は、図18のステップ1803において、アクティブパス再設定サブプログラムB208によって実行される。
全LUのアクティブパス再設定処理が開始されると(1901)、アクティブパス再設定サブプログラムB208は、最初に、ストレージ装置108から各CHA107のストレージ測定負荷を取得する(1902)。その手順は、図10のステップ1004と同様である。
次に、アクティブパス再設定サブプログラムB208は、他ホスト負荷804を取得する(1903)。具体的には、アクティブパス再設定サブプログラムB208は、負荷情報テーブル800に格納されたストレージ測定負荷802から自ホスト測定負荷803を減算した値を他ホスト負荷804として取得する。
次に、アクティブパス再設定サブプログラムB208は、HBAテーブル600のアクティブパス設定LU数604、及び、CHAテーブル700の自ホストアクティブパス設定LU数704をクリアする(1904)。具体的には、それらの値を「0」にする。
次に、アクティブパス再設定サブプログラムB208は、HBAテーブル600において、全てのHBA−ID601に対応する割当済み負荷603をクリアする。さらに、アクティブパス再設定サブプログラムB208は、CHAテーブル700において、全てのCHA−ID701に対応する割当済み負荷703をクリアする(1913)。
次に、アクティブパス再設定サブプログラムB208は、CHAテーブル700の割当済み負荷703に、各CHA107について算出された他ホスト負荷804の値を初期値として設定する(1914)。
次に、アクティブパス再設定サブプログラムB208は、全てのLU109について、新たなアクティブパスが設定されたか否かを判定する(1905)。
ステップ1905において、全てのLU109について新たなアクティブパスが設定されたと判定された場合、アクティブパス再設定サブプログラムB208は、全LUのアクティブパス再設定処理を終了する(1912)。
一方、ステップ1905において、全てのLU109について新たなアクティブパスが設定されていない(すなわち、少なくとも一つのLU109について、新たなアクティブパスが設定されていない)と判定された場合、アクティブパス再設定サブプログラムB208は、新たなアクティブパスが設定されていないLU109の測定負荷502の値を比較し、その値が最も大きいLU109を選択する(1906)。以下、ステップ1906で選択されたLU109をLUmと記載する。
次に、アクティブパス再設定サブプログラムB208は、LUmについて使用可能な(すなわち、障害が発生していない)パスが一つのみ存在するか否かを判定する(1907)。
ステップ1907において、使用可能なパスが一つのみ存在する場合、アクティブパス再設定サブプログラムB208は、その使用可能なパスをLUmへの新たなアクティブパスに決定する(1908)。
一方、ステップ1907において、使用可能なパスが一つのみではない(すなわち、複数存在する)と判定された場合、アクティブパス再設定サブプログラムB208は、それらのパスから、アクティブパスが設定されるCHA107及びHBA105を選択するため、CHA選択処理(1909)及びHBA選択処理(1910)を順次実行する。
次に、アクティブパス再設定サブプログラムB208は、ステップ1908において決定されたパス、又は、ステップ1909及び1910において選択されたCHA107及びHBA105を経由するパスを、新たなアクティブパスとして設定する(1911)。ステップ1911において実行される具体的な処理は、図14のステップ1407において実行される処理と同様であるため、詳細な説明を省略する。ただし、ステップ1908の後にステップ1911が実行される場合、ステップ1908で決定されたパスが「パスA」に相当する。
ステップ1911の処理が終了すると、ステップ1905に戻る。
以上で、本実施の形態の各プログラムが実行する処理の説明を終了する。
次に、本実施の形態の各プログラムが実行する処理の具体例を、図面を参照して説明する。
ここでは、例として、図1のホストAが最初に起動され、運用が開始された後、ホストBが起動される場合について説明する。
図1及び図4において説明したように、ホストAと各LU109との間には、24の使用可能なパスが設定されている。同様にして、ホストBと各LU109との間にも、24の使用可能なパスが設定されている。
ホストA及びホストBのいずれも起動していないとき、アクセスは発生しない。このとき、アクティブパスは設定されていない。
最初に、ホストAが起動する。
ホストAのOSが起動すると、交代パス管理プログラム203の実行が開始され(901)、初期アクティブパス設定サブプログラム206が実行される。
初期アクティブパス設定サブプログラム206は、各テーブルを作成して(1002、1003)、ストレージ測定負荷802を取得する(1004)。この時点で、ストレージ装置108はいずれのホスト101からのアクセスも受けていないため、ストレージ測定負荷802の値は「0」である。また、この時点の各テーブルの値(初期値)は、図10において説明した通りである。
この時点では、どのLU109についてもアクティブパスが設定されていないため(1005)、LU−ID501が最も小さいLU1を選択して(1006)、初期CHA選択処理が実行される(1007)。
この時点では、ストレージ測定負荷802が全てのCHA107において「0」であり(1102)、自ホストアクティブパス設定LU数704が全てのCHA107において「0」であるため(1106)、CHA−ID701が最小のCHA1が選択候補となる(1108)。
CHA1を経由する稼動状態のパスがあるため(1109)、選択候補のCHA1を最終的に選択して(1112)、初期CHA選択処理を終了する(1113)。次に、CHA1を経由してLU1に至る稼動状態のパスを対象として、初期HBA選択処理が実行される(1008)。
この時点では、アクティブパス設定LU数604が全てのHBA105において「0」であるため(1202)、HBA−ID601が最小のHBA1が選択され(1204)、初期HBA選択処理が終了する(1205)。
その結果、選択されたHBA1及びCHA1を経由するパスが、LU1に対するアクティブパスとして設定される(1009)。すなわち、このアクティブパスのパスIDは、「111」である。このとき、パステーブル400のパス番号401が「1」のパスが、パスID「111」に対応する。このため、パス番号401が「1」のパスについて、アクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。
さらに、LUテーブル500において、LU1に対応する新アクティブパスのパスID504が「111」に更新され、HBAテーブル600において、HBA1に対応するアクティブパス設定LU数604が「1」に更新され、CHAテーブル700において、CHA1に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
同様にして、LU2〜LU4についても、順次初期CHA選択処理及び初期HBA選択処理が実行され、アクティブパスが設定される(1005〜1009)。
LU2については、CHA2及びCHA3の自ホストアクティブパス設定LU数704が最小の「0」であるため(1106)、それらの中でCHA−IDが最小のCHA2が選択される(1108、1112)。一方、アクティブパス設定LU数604が最小の「0」であるのはHBA2のみであるため(1202)、そのHBA2が選択される(1203)。
その結果、HBA2及びCHA2を経由してLU2に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「222」である。
このため、パスID「222」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU2に対応する新アクティブパスのパスID504が「222」に更新され、HBA2に対応するアクティブパス設定LU数604が「1」に更新され、CHA2に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
LU3については、CHA3のみの自ホストアクティブパス設定LU数704が最小の「0」であるため(1106)、そのCHA3が選択される(1107、1112)。一方、HBA1及びHBA2のアクティブパス設定LU数604が最小の「1」であるため(1202)、HBA−ID601が最小のHBA1が選択される(1204)。
その結果、HBA1及びCHA3を経由してLU3に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「133」である。
このため、パスID「133」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU3に対応する新アクティブパスのパスID504が「133」に更新され、HBA1に対応するアクティブパス設定LU数604が「2」に更新され、CHA3に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
LU4については、CHA1〜CHA3の自ホストアクティブパス設定LU数704が最小の「1」であるため(1106)、CHA−IDが最小のCHA1が選択される(1108、1112)。一方、HBA2のみのアクティブパス設定LU数604が最小の「1」であるため(1202)、そのHBA2が選択される(1203)。
その結果、HBA2及びCHA1を経由してLU4に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「214」である。
このため、パスID「214」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU4に対応する新アクティブパスのパスID504が「214」に更新され、HBA2に対応するアクティブパス設定LU数604が「2」に更新され、CHA1に対応する自ホストアクティブパス設定LU数704が「2」に更新される(1009)。
以上で、全LU109についてアクティブパスが設定されたため(1005)、LUテーブル500の新アクティブパスのパスID504の値を現アクティブパスのパスID503に複写する(1010)。
以上で初期アクティブパス設定サブプログラム206の実行が終了する(1011)。以後、設定されたアクティブパスが運用される。
図20は、本発明の実施の形態のコンピュータシステムにおいて、ホストAに設定された初期アクティブパスの説明図である。
図20は、ホストAにおいて上記の初期アクティブパス設定サブプログラム206の実行が終了し、ホストAの運用が開始され、設定されたアクティブパス2001上でI/Oが発生している状態を示す。この時点で、ホストBは起動していない。
なお、図20では、説明のため、HBA105、CHA107及びLU109以外の詳細な構成を省略する。
上記のように、ホストAからLU1に至るアクティブパス2001は、HBA1及びCHA1を経由する。ホストAからLU2に至るアクティブパス2001は、HBA2及びCHA2を経由する。ホストAからLU3に至るアクティブパス2001は、HBA1及びCHA3を経由する。ホストAからLU4に至るアクティブパス2001は、HBA2及びCHA1を経由する。
図20の測定負荷502は、各LU109に発行されたI/Oによる負荷である。図20では、測定負荷502をLU109ごとに表示しているが、実際には、測定負荷502は、ホストAのホスト負荷測定サブプログラム204によって測定され、ホストAのLUテーブル500に格納される。
図20の例では、LU1、LU2、LU3及びLU4の測定負荷502は、それぞれ、「1500」、「1200」、「800」及び「500」である。この値は、例えば、所定の時間当たりの発行されたI/Oの数であるが、I/Oデータ量又はCPU利用率等であってもよい。図20に示す時点のLUテーブル500の内容は、図5に示す通りである。
CHA1は、LU1及びLU4へのアクティブパス2001として設定されているため、CHA1の測定負荷702は、「1500」と「500」の合計値「2000」である。同様に、CHA2及びCHA3の測定負荷702は、それぞれ、「1200」及び「800」である。この時点のCHAテーブル700の内容は、図7に示す通りである。
HBA1は、LU1及びLU3へのアクティブパス2001として設定されているため、HBA1の測定負荷602は、「1500」と「800」の合計値「2300」である。同様に、HBA2の測定負荷602は、「1200」と「500」の合計値「1700」である。この時点のHBAテーブル600の内容は、図6に示す通りである。
次に、ホストBが起動する。
ホストBが起動する時点のホストAのアクティブパス2001及び測定負荷502は、図20に示す通りである。
ホストBのOSが起動すると、ホストBの交代パス管理プログラム203の実行が開始され(901)、ホストBの初期アクティブパス設定サブプログラム206が実行される。
初期アクティブパス設定サブプログラム206は、各テーブルを作成する(1002、1003)。この時点の各テーブルの値(初期値)は、図10において説明した通りである。次に、ストレージ測定負荷802を取得する(1004)。この時点で、ストレージ装置108はホストAからのアクセスを受けているため、ストレージ測定負荷802の値は、図21のようになる。
図21は、本発明の実施の形態のホストBが起動する時点のホストBの負荷情報テーブル800の説明図である。
この時点で、各CHA107は、ホストAのみからのアクセスを受けている。このため、CHA1、CHA2及びCHA3のストレージ測定負荷802は、それぞれ、ホストAのCHAテーブル700の測定負荷702と同じ「2000」、「1200」及び「800」である(図20及び図7参照)。
一方、ホストBが起動する時点ではホストBがまだI/Oを発行していないため、自ホスト測定負荷803の値は、全て「0」となる。
結局、ストレージ測定負荷802は全てホストAによるものであるため、他ホスト負荷804はストレージ測定負荷802と同じになる。
初期アクティブパス設定サブプログラム206は、ストレージ測定負荷802を取得すると(1004)、ステップ1005に進む。この時点では、どのLU109についてもアクティブパスが設定されていないため(1005)、LU−ID501が最も小さいLU1を選択して(1006)、初期CHA選択処理が実行される(1007)。
ストレージ測定負荷802が「0」でないため(1102)、ホストBのCHAテーブル700において、CHA1、CHA2及びCHA3の割当済み負荷703の初期値が、それぞれ、「2000」、「1200」及び「800」に設定される(1103)。
この時点では、全てのCHA107が、当該初期CHA選択処理において選択候補になったことがなく、CHA3の割当済み負荷703のみが最小の「800」である(1104)。このため、CHA3が選択候補とされる(1105)。
CHA3を経由する稼動状態のパスがあるため(1109)、CHA3が最終的に選択され(1112)、初期CHA選択処理が終了する(1113)。
次に、CHA3を経由してLU1に至る稼動状態のパスを対象として、初期HBA選択処理が実行される(1008)。
この時点では、アクティブパス設定LU数604が全てのHBA105において「0」であるため(1202)、HBA−ID601が最小のHBA3が選択され(1204)、初期HBA選択処理が終了する(1205)。
その結果、選択されたHBA3及びCHA3を経由するパスが、LU1に対するアクティブパスとして設定される(1009)。このアクティブパスのパスIDは、「331」である。
このため、ホストBのパステーブル400(図22参照)において、パスID「331」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。
さらに、ホストBのLUテーブル500(図23参照)において、LU1に対応する新アクティブパスのパスID504が「331」に更新され、HBAテーブル600(図24参照)において、HBA3に対応するアクティブパス設定LU数604が「1」に更新され、CHAテーブル700(図25参照)において、CHA3に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
さらに、ストレージ測定負荷802の合計値「4000」をLU109の数「4」で除算した値(平均負荷)「1000」が、CHA3に対応する割当済み負荷703「800」に加算される。その結果、CHA3に対応する割当済み負荷703は「1800」となる。
同様にして、LU2〜LU4についても、順次初期CHA選択処理及び初期HBA選択処理が実行され、アクティブパスが設定される(1005〜1009)。
LU2については、CHA1からCHA3のうち、割当済み負荷703が最小の「1200」であるCHA2が選択される(1104、1105、1112)。一方、HBA4のアクティブパス設定LU数604のみが最小の「0」であるため(1202)、HBA4が選択される(1203)。
その結果、HBA4及びCHA2を経由してLU2に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「422」である。
このため、パスID「422」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU2に対応する新アクティブパスのパスID504が「422」に更新され、HBA4に対応するアクティブパス設定LU数604が「1」に更新され、CHA2に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
さらに、CHA2に対応する割当済み負荷703は、「1200」に平均負荷「1000」が加算されて、「2200」となる。
LU3については、CHA1からCHA3のうち、割当済み負荷703が最小の「1800」であるCHA3が選択される(1104、1105、1112)。一方、HBA3及びHBA4のアクティブパス設定LU数604が最小の「1」であるため(1202)、これらのうちでHBA−IDが最小のHBA3が選択される(1203)。
その結果、HBA3及びCHA3を経由してLU3に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「333」である。
このため、パスID「333」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU3に対応する新アクティブパスのパスID504が「333」に更新され、HBA3に対応するアクティブパス設定LU数604が「2」に更新され、CHA3に対応する自ホストアクティブパス設定LU数704が「2」に更新される(1009)。
さらに、CHA3に対応する割当済み負荷703は、「1800」に平均負荷「1000」が加算されて、「2800」となる。
LU4については、CHA1からCHA3のうち、割当済み負荷703が最小の「2000」であるCHA1が選択される(1104、1105、1112)。一方、HBA4のアクティブパス設定LU数604のみが最小の「1」であるため(1202)、HBA4が選択される(1203)。
その結果、HBA4及びCHA1を経由してLU4に至るパスがアクティブパスとして設定され(1009)、そのパスIDは「414」である。
このため、パスID「414」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。さらに、LU4に対応する新アクティブパスのパスID504が「414」に更新され、HBA4に対応するアクティブパス設定LU数604が「2」に更新され、CHA1に対応する自ホストアクティブパス設定LU数704が「1」に更新される(1009)。
さらに、CHA1に対応する割当済み負荷703は、「2000」に平均負荷「1000」が加算されて、「3000」となる。
以上で、全LU109についてアクティブパスが設定されたため(1005)、LUテーブル500の新アクティブパスのパスID504の値を現アクティブパスのパスID503に複写する(1010)。
この時点のホストBの各テーブルの内容を図22から図25に示す。なお、図22から図22の説明のうち、図4から図7と共通する説明は、省略する。
図22は、本発明の実施の形態のホストBのパステーブル400の説明図である。
上記のように、ホストBからLU1、LU2、LU3及びLU4に至るアクティブパス2001のパスIDは、それぞれ、「331」、「422」、「333」及び「414」である。このため、これらのパスIDに相当するアクティブ情報403は「Yes」、アクティブパス設定LU数408は「1」である。
図23は、本発明の実施の形態のホストBのLUテーブル500の説明図である。
上記のように、ホストBからLU1、LU2、LU3及びLU4に至る新アクティブパスのパスID504は、それぞれ、「331」、「422」、「333」及び「414」である。また、現アクティブパスのパスID503には、新アクティブパスのパスID504の値が複写される。なお、新アクティブパスのパスID504は、現アクティブパスのパスID503に複写された後、クリアされる。
図24は、本発明の実施の形態のホストBのHBAテーブル600の説明図である。
HBA3は、LU1及びLU3へのアクティブパス2001として設定される。このため、HBA3のアクティブパス設定LU数604は、「2」である。
HBA4は、LU2及びLU4へのアクティブパス2001として設定される。このため、HBA4のアクティブパス設定LU数604は、「2」である。
図25は、本発明の実施の形態のホストBのCHAテーブル700の説明図である。
CHA1は、ホストBによって、LU4へのアクティブパス2001として設定されている。このため、CHA1の自ホストアクティブパス設定LU数704は、「1」である。また、CHA1の割当済み負荷703は、ストレージ測定負荷802「2000」と平均負荷「1000」との合計値「3000」である。
CHA2は、ホストBによって、LU2へのアクティブパス2001として設定されている。このため、CHA2の自ホストアクティブパス設定LU数704は、「1」である。また、CHA2の割当済み負荷703は、ストレージ測定負荷802「1200」と平均負荷「1000」との合計値「2200」である。
CHA3は、ホストBによって、LU1及びLU3へのアクティブパス2001として設定されている。このため、CHA3の自ホストアクティブパス設定LU数704は、「2」である。また、CHA1の割当済み負荷703は、ストレージ測定負荷802「800」と平均負荷「1000」と平均負荷「1000」との合計値「2800」である。
以上で、ホストBの初期アクティブパス設定サブプログラム206の実行が終了する(1011)。以後、設定されたアクティブパスが運用される。
本実施の形態によれば、ストレージ装置108は、ホスト101からのアクセスによる負荷(ストレージ測定負荷802)を測定する。ホスト101が起動して、初期アクティブパスが設定されるとき、既に他のホスト101の運用が開始されている場合、ストレージ測定負荷802(すなわち、他ホスト負荷804)が参照される(図11のステップ1102及び1103)。そして、全ホスト101からのアクセスによる負荷が均等に分散されるようにアクティブパスが設定される(ステップ1104及び1105)。
図26は、本発明の実施の形態の初期アクティブパス設定処理の効果の説明図である。
図26は、具体的には、初期アクティブパス設定サブプログラム206において、ストレージ測定負荷802を参照した場合(本実施の形態)に設定される初期アクティブパスと、参照しない場合に設定される初期アクティブパスとを比較するものである。
図26において、設定された初期アクティブパスのパスID2601は、ホストAの初期アクティブパスが設定され、その後ホストAの運用が開始され、さらにその後に設定されたホストBの初期アクティブパスのパスIDを示す。
行2602は、ストレージ測定負荷802を参照せずに設定された(すなわち、図11のステップ1103を実行せずに設定された)アクティブパスのパスID2701を示す。詳細な説明は省略するが、この場合、LU1、LU2、LU3及びLU4について設定されるホストBの初期アクティブパスのパスIDは、それぞれ、「311」、「422」、「333」及び「414」である。
一方、行2603は、ストレージ測定負荷802を参照して設定された(すなわち、図11のステップ1103を実行して設定された)アクティブパスのパスID2701を示す。行2703が本実施の形態に相当する。本実施の形態では、図23の現アクティブパスのパスID503に示すように、LU1、LU2、LU3及びLU4について設定されるホストBの初期アクティブパスのパスIDは、それぞれ、「331」、「422」、「333」及び「414」である。
行2602と行2603とを比較すると、LU1への初期アクティブパスのみが異なっている。その結果、ストレージ測定負荷802を参照しない場合(行2602)には、CHA1がLU1及びLU4への初期アクティブパスとして設定される。これに対して、ストレージ測定負荷802を参照する場合(行2603)、CHA1はLU4への初期アクティブパスとして設定されるのみである。
図20及び図21に示すように、CHA1には、ホストAによって二つのアクティブパスが設定され、負荷が集中している。本実施の形態によれば、ホストBは、負荷が集中しているCHA1を避けて初期アクティブパスを設定する。その結果、全体として負荷が分散される。
次に、ホストA及びホストBに初期アクティブパスが設定された後、ホストAにおいてアクティブパス再設定サブプログラムB208(図18)が実行された場合について説明する。
図27は、本発明の実施の形態のコンピュータシステムにおいて、ホストBに初期アクティブパスが設定された状態の説明図である。
図27は、ホストAの運用が開始された後、ホストBにおいて上記の初期アクティブパス設定サブプログラム206の実行が終了し、さらにその後、ホストBの運用が開始され、設定されたアクティブパス2001上でI/Oが発生している状態を示す。
上記のように、ホストBからLU1に至るアクティブパス2001は、HBA3及びCHA3を経由する。ホストBからLU2に至るアクティブパス2001は、HBA4及びCHA2を経由する。ホストBからLU3に至るアクティブパス2001は、HBA3及びCHA3を経由する。ホストBからLU4に至るアクティブパス2001は、HBA4及びCHA1を経由する。
図27の測定負荷502は、ホストA及びBによって各LU109に発行されたI/Oによる負荷である。図27では、測定負荷502をLU109ごとに表示しているが、実際には、LU502は、ホストA及びBのホスト負荷測定サブプログラム204によって測定され、ホストA及びBのLUテーブル500に格納される。
図27の例では、ホストAによって測定されたLU1、LU2、LU3及びLU4の測定負荷502は、それぞれ、「1500」、「1200」、「800」及び「500」である。ホストBによって測定されたLU1、LU2、LU3及びLU4の測定負荷502は、それぞれ、「1600」、「1000」、「600」及び「400」である。
このとき、CHA1のストレージ測定負荷802は、ホストAからLU1への測定負荷502「1500」、ホストAからLU4への測定負荷502「500」及びホストBからLU4への測定負荷502「400」の合計値「2400」である。
同様にして、CHA2のストレージ測定負荷802は、ホストAからLU2への測定負荷502「1200」及びホストBからLU2への測定負荷502「1000」の合計値「2200」である。また、CHA3のストレージ測定負荷802は、ホストAからLU3への測定負荷502「800」、ホストBからLU1への測定負荷502「1600」及びホストBからLU3への測定負荷502「600」の合計値「3000」である。
この状態で、ホストAにおいて、アクティブパス再設定サブプログラムB208(図18)の実行が開始される。
図27において、CHA3の負荷「3000」が最も大きく、CHA2の負荷「2200」が最も小さい。ここで、「2200」は、「3000」の90%の値「2700」より小さいため(1802)、全LUのアクティブパス再設定処理(図19)が実行される(1803)。
最初に、CHA1、CHA2及びCHA3について、それぞれ、ストレージ測定負荷802「2400」、「2200」及び「3000」から自ホスト測定負荷803「2000」、「1200」及び「800」を減算して、他ホスト負荷804「400」、「1000」及び「2200」が取得される(1902、1903)。
この時点のホストAの負荷情報テーブル800は、図8に示す通りである。
次に、HBAテーブル600及びCHAテーブル700において、アクティブパス設定LU数604及び自ホストアクティブパス設定LU数704が「0」とされる(1904)。さらに、HBAテーブル600及びCHAテーブル700において、割当済み負荷603及び割当済み負荷703が「0」とされる(1913)。
次に、CHA1、CHA2及びCHA3に対応する割当済み負荷703の初期値として、それぞれ、ステップ1903で取得した他ホスト負荷804「400」、「1000」及び「2000」が設定される(1914)。
この時点で、各LU109のアクティブパスが設定(再設定)されていないため(1905)、ホストAによる測定負荷502が最も大きい「1500」であるLU1が選択される(1906)。
LU1について使用可能なパスが複数あるため(1907)、CHA選択処理(図16)が実行される(1909)。
この時点では、全てのCHA107が、当該CHA選択処理において選択候補になったことがなく、CHA1の割当済み負荷703のみが最小の「400」である(1604)。このため、CHA1が選択候補とされる(1605)。
CHA1を経由する稼動状態のパスがあるため(1609)、CHA1が最終的に選択され(1612)、CHA選択処理が終了する(1613)。
次に、CHA1を経由してLU1に至る稼動状態のパスを対象として、HBA選択処理(図17)が実行される(1910)。
この時点で、HBA1及びHBA2の割当済み負荷603及びアクティブパス設定LU数604が最小の「0」であるため(1702、1704)、HBA−ID601が最小のHBA1が選択され(1706)、HBA選択処理が終了する(1707)。
その結果、選択されたHBA1及びCHA1を経由するパスが、LU1に対するアクティブパスとして設定される(1911)。このアクティブパスのパスIDは、「111」である。
このため、ホストAのパステーブル400において、パスID「111」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。
さらに、ホストAのLUテーブル500において、LU1に対応する新アクティブパスのパスID504が「111」に更新される。
HBAテーブル600において、HBA1に対応するアクティブパス設定LU数604が「1」に更新される。また、HBA1に対応する割当済み負荷603「0」にLU1の測定負荷502「1500」が加算されて「1500」となる。
CHAテーブル700において、CHA1に対応する自ホストアクティブパス設定LU数704が「1」に更新される。また、CHA1に対応する割当済み負荷703「400」にLU1の測定負荷502「1500」が加算されて「1900」となる(1911)。
同様にして、LU2〜LU4についても、測定負荷502が大きい順に、CHA選択処理及びHBA選択処理が実行され、アクティブパスが設定される(1905〜1911)。
LU2については、CHA1からCHA3のうち、割当済み負荷703が最小の「1000」であるCHA2が選択される(1604、1605、1612)。一方、HBA2の割当済み負荷603のみが最小の「0」であるため(1702)、HBA2が選択される(1703)。
その結果、HBA2及びCHA2を経由してLU2に至るパスがアクティブパスとして設定され(1911)、そのパスIDは「222」である。
このため、パスID「222」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。LU2に対応する新アクティブパスのパスID504が「222」に更新される。HBA2に対応するアクティブパス設定LU数604が「1」に更新される。HBA2に対応する割当済み負荷603「0」が、LU2の測定負荷502「1200」が加算された値「1200」に更新される。CHA2に対応する自ホストアクティブパス設定LU数704が「1」に更新される。CHA2に対応する割当済み負荷703「1000」が、LU2の測定負荷502「1200」が加算された値「2200」に更新される(1911)。
LU3については、CHA1からCHA3のうち、割当済み負荷703が最小の「1900」であるCHA1が選択される(1604、1605、1612)。一方、HBA2の割当済み負荷603のみが最小の「1200」であるため(1702)、HBA2が選択される(1703)。
その結果、HBA2及びCHA1を経由してLU3に至るパスがアクティブパスとして設定され(1911)、そのパスIDは「213」である。
このため、パスID「213」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。LU3に対応する新アクティブパスのパスID504が「213」に更新される。HBA2に対応するアクティブパス設定LU数604が「2」に更新される。HBA2に対応する割当済み負荷603「1200」が、LU3の測定負荷502「800」が加算された値「2000」に更新される。CHA1に対応する自ホストアクティブパス設定LU数704が「2」に更新される。CHA1に対応する割当済み負荷703「1900」が、LU2の測定負荷502「800」が加算された値「2700」に更新される(1911)。
LU4については、CHA1からCHA3のうち、割当済み負荷703が最小の「2200」であるCHA2及びCHA3のうち、自ホストアクティブパス設定LU数704が最小の「0」であるCHA3が選択される(1604、1606、1607、1612)。一方、HBA1の割当済み負荷603のみが最小の「1500」であるため(1702)、HBA1が選択される(1703)。
その結果、HBA1及びCHA3を経由してLU4に至るパスがアクティブパスとして設定され(1911)、そのパスIDは「134」である。
このため、パスID「134」に対応するアクティブ情報403が「Yes」に、アクティブパス設定LU数408が「1」に更新される。LU4に対応する新アクティブパスのパスID504が「134」に更新される。HBA1に対応するアクティブパス設定LU数604が「2」に更新される。HBA1に対応する割当済み負荷603「1500」が、LU4の測定負荷502「500」が加算された値「2000」に更新される。CHA3に対応する自ホストアクティブパス設定LU数704が「1」に更新される。CHA3に対応する割当済み負荷703「2200」が、LU2の測定負荷502「500」が加算された値「2700」に更新される(1911)。
以上で、全LU109についてアクティブパスが設定されたため(1905)、LUテーブル500の新アクティブパスのパスID504の値を現アクティブパスのパスID503に複写する(1804)。
この時点のホストAのHBAテーブル600及びCHAテーブル700を、図28及び図29に示す。また、このようにして設定されたアクティブパスを、図30に示す。
図28は、本発明の実施の形態のアクティブパスが再設定されたホストAのHBAテーブル600の説明図である。
HBA1は、LU1及びLU4へのアクティブパス2001として設定される。このため、HBA1のアクティブパス設定LU数604は、「2」である。また、HBA1の割当済み負荷603は、測定負荷502「1500」と測定負荷502「500」との合計値「2000」である。
HBA2は、LU2及びLU3へのアクティブパス2001として設定される。このため、HBA2のアクティブパス設定LU数604は、「2」である。また、HBA2の割当済み負荷603は、測定負荷502「1200」と測定負荷502「800」との合計値「2000」である。
図29は、本発明の実施の形態のアクティブパスが再設定されたホストAのCHAテーブル700の説明図である。
CHA1は、ホストAによって、LU1及びLU3へのアクティブパス2001として設定されている。このため、CHA1の自ホストアクティブパス設定LU数704は、「2」である。また、CHA1の割当済み負荷703は、他ホスト負荷804「400」と測定負荷502「1500」と測定負荷502「800」との合計値「2700」である。
CHA2は、ホストAによって、LU2へのアクティブパス2001として設定されている。このため、CHA2の自ホストアクティブパス設定LU数704は、「1」である。また、CHA2の割当済み負荷703は、他ホスト負荷804「1000」と測定負荷502「1200」との合計値「2200」である。
CHA3は、ホストAによって、LU4へのアクティブパス2001として設定されている。このため、CHA3の自ホストアクティブパス設定LU数704は、「1」である。また、CHA1の割当済み負荷703は、他ホスト負荷804「2200」と測定負荷502「500」との合計値「2700」である。
図30は、本発明の実施の形態のコンピュータシステムにおいて、ホストAのアクティブパスが再設定された状態の説明図である。
上記のように、ホストAからLU1に至るアクティブパス2001は、HBA1及びCHA1を経由する。ホストAからLU2に至るアクティブパス2001は、HBA2及びCHA2を経由する。ホストAからLU3に至るアクティブパス2001は、HBA2及びCHA1を経由する。ホストAからLU4に至るアクティブパス2001は、HBA1及びCHA3を経由する。
以上で、ホストAのアクティブパス再設定サブプログラムB208の実行が終了する(1806)。以後、設定されたアクティブパスが運用される。
本実施の形態によれば、アクティブパスが再設定されるとき、ストレージ測定負荷802から自ホスト測定負荷803を減算した他ホスト負荷804が参照される(図14のステップ1413及び図19の1914)。そして、全ホスト101からのアクセスによる負荷が均等に分散されるようにアクティブパスが設定される(図16のステップ1604及び1605)。
図31は、本発明の実施の形態のアクティブパス再設定処理の効果の説明図である。
図31は、具体的には、アクティブパス再設定サブプログラムB206において、他ホスト負荷804を参照した場合(本実施の形態)に設定されるアクティブパスと、参照しない場合に設定されるアクティブパスとを比較するものである。
図26において、設定されたアクティブパスのパスID3101は、再設定されたホストAのアクティブパスのパスIDを示す。
行3102は、他ホスト負荷804を参照せずに設定された(すなわち、図14のステップ1413を実行せずに設定された)アクティブパスのパスID3101を示す。詳細な説明は省略するが、この場合、LU1、LU2、LU3及びLU4について設定されるホストAのアクティブパスのパスIDは、それぞれ、「111」、「222」、「233」及び「134」である。
一方、行3103は、他ホスト負荷804を参照して設定された(すなわち、図16のステップ1103を実行して設定された)アクティブパスのパスID2701を示す。行2703が本実施の形態に相当する。本実施の形態では、図30に示すように、LU1、LU2、LU3及びLU4について設定されるホストAのアクティブパスのパスIDは、それぞれ、「111」、「222」、「213」及び「134」である。
行3102と行3103とを比較すると、LU3へのアクティブパスのみが異なっている。その結果、他ホスト負荷804を参照しない場合(行3102)には、CHA3がLU3及びLU4へのアクティブパスとして設定される。これに対して、他ホスト負荷804を参照する場合(行3103)、CHA3はLU4へのアクティブパスとして設定されるのみである。
図8及び図27に示すように、CHA3には、ホストBによって二つのアクティブパスが設定され、負荷が集中している。本実施の形態によれば、ホストAは、負荷が集中しているCHA3を避けてアクティブパスを設定する。その結果、全体として負荷が分散される。
次に、ホストA及びホストBに初期アクティブパスが設定された後、アクティブパスが停止した場合のアクティブパス再設定サブプログラムA207(図14)の処理について説明する。
ここでは、例として、図27に示すアクティブパス2001のうち、パスIDが「133」であるものが停止した場合について説明する。パスIDが「133」であるアクティブパス2001は、ホストAに接続されているため、このアクティブパス2001が停止すると、ホストAのアクティブパス再設定サブプログラムA207が実行される。当該パスが停止した時点のホストAのパステーブル400、HBAテーブル600、CHAテーブル700及び負荷情報テーブル800は、それぞれ、図4、図6、図7及び図8に示す通りである。
この例では、アクティブパスが停止したため(1402)、アクティブパス停止時のアクティブパス再設定処理(図15)が実行される(1403)。
最初に、各テーブルのアクティブパス設定LU数が「1」減算される(1502)。具体的には、ホストAのパステーブル400(図4)のパスID「133」(パス番号401が「15」)に対応するアクティブパス設定LU数408が「0」となる。ホストAのHBAテーブル600のHBA1に対応するアクティブパス設定LU数604が「1」となる。ホストAのCHAテーブル700のCHA3に対応する自ホストアクティブパス設定LU数704が「0」となる。
次に、HBAテーブル600の割当済み負荷603及びCHAテーブル700の割当済み負荷703が「0」となる(1503、1504)。
次に、HBAテーブル600において、HBA1の測定負荷602の値「2300」から、停止したアクティブパス2001の測定負荷407の値「800」を減算した「1500」が割当済み負荷603の初期値として設定される(1505)。HBA2については、測定済み負荷602の値「1700」が割当済み負荷603の初期値として設定される(1505)。このときのHBAテーブル600を、図32に示す。
停止したアクティブパス2001は、CHA3を経由する。この例では、CHA3を経由する他の稼動状態のパスがない(1508)とする(例えば、CHA3自体に障害が発生している)。このとき、CHAテーブル700において、CHA3のストレージ測定負荷802の値「3000」から、停止したアクティブパス2001の測定負荷407の値「800」を減算した「2200」が割当済み負荷703の初期値として設定される(1509)。CHA1及びCHA2については、それぞれ、ストレージ測定負荷802の値「2400」及び「2200」が割当済み負荷703の初期値として設定される(1509)。このときのCHAテーブル700を、図33に示す。
次に、CHA選択処理(1510)及びHBA選択処理(1511)が実行され、選択されたHBA105及びCHA107を経由するパスがLU3への新たなアクティブパス2001として設定される(1512)。
なお、CHA3自体に障害が発生している場合には、パスIDが「331」及び「333」のアクティブパス2001も停止している。このため、ホストBは、これらのアクティブパス2001について上記と同様の処理を実行する。
このようにして、アクティブパス2001が停止した場合、他のホスト101による負荷が参照され、システム全体の負荷が分散するように新たなアクティブパスが再設定される。
なお、以上の本実施の形態では、各ホスト101が交代パス管理プログラム203を備える。しかし、ストレージ装置108に複数のホスト101が接続されているとき、当該ストレージ装置がストレージ負荷測定プログラム301を備え、少なくとも一つのホスト101が交代パス管理プログラム203を備えていれば、そのホスト101は、アクティブパスを設定して、本発明の負荷分散を実現することができる。
例えば、図1において、ホストBのみが交代パス管理プログラム203を備える場合、ホストAは、交代パス管理プログラム203を備えないため、アクティブパスを設定せず、本発明の負荷分散をしない。一方、ホストBは、ストレージ負荷測定プログラム301が測定したストレージ測定負荷802を参照して、ホストAによる各CHA107の負荷を算出することができる。その結果、ホストBは、システム全体の負荷が分散するようにアクティブパスを設定(初期設定及び再設定)することができる。
以上の本発明によれば、各LU109についてアクティブパスが設定され、ホスト101は、アクティブパスを経由してLU109にアクセスする。アクティブパスは、ホスト101からのアクセスの負荷が分散するように設定される。ストレージ装置108に複数のホスト101が接続されている場合、他のホストによる負荷が参照され、システム全体のアクセスの負荷が分散するようにアクティブパスが設定される。その結果、アクセスの集中による性能低下が改善される。
さらに、アクティブパスが設定(又は再設定)された後、次に再設定されるまでの間、ホスト101は、一つのLU109に、同一のパスを経由してアクセスする。すなわち、一回のアクセスごとにアクティブパスが変更されないため、アクティブパスに含まれるCHA107等のキャッシュメモリが有効に利用される。特に、シーケンシャルアクセスの際に、キャッシュメモリに格納された先読みデータが有効に利用される。その結果、性能が向上する。
さらに、アクセス負荷に偏りが生じたときには、偏りを解消するために、アクティブパスが再設定される。この場合も、上記と同様に、他のホストによる負荷が参照され、システム全体のアクセスの負荷が分散するようにアクティブパスが再設定される。このため、常に良好な性能が維持される。
さらに、アクティブパスを再設定する際には、負荷が大きいLU109から順に再設定されるため、負荷が適切に分散される。