説明

負荷分散コンピュータシステム、経路設定プログラム及びその方法

【課題】キャッシュメモリを有効に利用しながら、アクセス負荷を分散する、高性能なストレージシステムを提供する。
【解決手段】コンピュータと、前記コンピュータと通信可能に接続されたストレージ装置と、を備えるストレージシステムにおいて、前記ストレージ装置は、前記コンピュータと通信する一つ以上のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタと、前記コンピュータが前記論理ユニットにアクセスする経路を管理する経路管理部と、を備え、前記経路管理部は、前記論理ユニットごとのアクセス負荷を測定する負荷測定部と、前記測定されたアクセス負荷に基づいて、前記論理ユニットごとに、前記コンピュータからのアクセスが経由する一つ以上のアクティブ経路を設定するアクティブ経路設定部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータシステムのアクセス負荷分散に関する。
【背景技術】
【0002】
ストレージ装置とコンピュータとの間に、複数のアクセス可能なパスを設け、これらのパスにコンピュータ装置からのアクセスを分散させることによって、システムの性能向上を図る技術が知られている(例えば、特許文献1参照)。このような負荷分散技術によれば、複数のパスにアクセス(I/O)の負荷が分散されるため、特定のパスにアクセスが集中することによる性能低下を防止することができる。さらに、一つのパスに障害が発生したときに、他の正常なパスにアクセスが割り当てられるため、アクセスを継続することができる。
【0003】
一方、ストレージ装置に搭載したキャッシュメモリを利用して、システムの性能向上を図る技術が知られている。例えば、読み出し要求に関するブロックのデータと共に、その次のブロックのデータも読み出してキャッシュメモリに格納しておくことによってアクセス性能の向上を図る、キャッシュ先読み技術が知られている(例えば、特許文献2参照)。
【特許文献1】特開2000−330924号公報
【特許文献2】特開2002−182978号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来の負荷分散技術は、データ先読み機能のような、ストレージ装置のキャッシュメモリを利用した機能を利用することを考慮していない。このため、同一の論理ユニット(LU)に対するアクセスが、同一のキャッシュメモリを利用できない複数のパスに分散され、キャッシュヒット率が低下する。その結果、データ先読み機能等が十分に活用されず、性能の向上が抑制される問題があった。
【課題を解決するための手段】
【0005】
本発明は、コンピュータと、前記コンピュータと通信可能に接続されたストレージ装置と、を備えるコンピュータシステムにおいて、前記ストレージ装置は、前記コンピュータと通信する一つ以上のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタと、前記コンピュータが前記論理ユニットにアクセスする経路を管理する経路管理部と、を備え、前記経路管理部は、前記論理ユニットごとのアクセス負荷を測定する負荷測定部と、前記測定されたアクセス負荷に基づいて、前記コンピュータからのアクセスが経由する一つの前記チャネルアダプタ及び一つ以上の前記ホストバスアダプタ、又は、一つ以上の前記チャネルアダプタ及び一つの前記ホストバスアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタ及び当該ホストバスアダプタを経由するアクティブ経路を設定するアクティブ経路設定部と、を備えることを特徴とする。
【発明の効果】
【0006】
本発明によれば、アクセス負荷が分散するために、負荷の集中によるシステムの性能低下を防ぐことができる。さらに、同一の論理ユニットLUに対するアクセスの際に、同一のキャッシュメモリを利用することができるため、データ先読み等によって、システムの性能が向上する。
【発明を実施するための最良の形態】
【0007】
以下、本発明の実施の形態を図面に基づいて説明する。
【0008】
図1は、本発明の実施の形態のコンピュータシステムの構成を示すブロック図である。
【0009】
本発明の実施の形態のコンピュータシステムは、ホスト101、ストレージ装置108及びこれらを相互に通信可能に接続するStorage Area Network(SAN)106によって構成される。
【0010】
ホスト101は、コンピュータであり、ストレージ装置108にデータを書き込み、又は、ストレージ装置108からデータを読み出す。ホスト101は、少なくとも、CPU102、メモリ103、入出力装置104及びホストバスアダプタ(HBA)105からなる。
【0011】
CPU102は、メモリ103に格納されたプログラムを実行するプロセッサである。
【0012】
メモリ103は、例えば、半導体メモリであり、CPU102が実行するプログラムが格納される(図2参照)。さらに、メモリ103には、図4から図7に示すテーブルが格納される。
【0013】
入出力装置104は、例えば、表示画面及びキーボードであり(図示省略)、マウスやプリンタ等の他の入出力手段を含んでもよい。
【0014】
HBA105は、ホスト101に一つ又は複数個設けられ、SAN106を介してストレージ装置108と通信する。図1の例では、ホスト101に二つのHBA105が設けられる。ここで、HBA1及びHBA2は、それぞれ、HBA識別子(HBA−ID)が「1」及び「2」のHBA105である。ホスト101は、いずれのHBA105を使用してもストレージ装置108と通信することができる。
【0015】
ストレージ装置108は、例えば、複数のディスクドライブ及びそれらを制御するコントローラ(図示省略)によって構成されるディスクアレイ装置である。ストレージ装置108には、一つ以上の論理ユニット(LU)109が設定される。
【0016】
LU109は、ホスト101が一つのディスクドライブとして認識する単位である。LU109は、論理的には一つのディスクドライブであるが、物理的には、一つのディスクドライブの一部の領域又は複数のディスクドライブの一部若しくは全部の領域であってよい。図1の例では、ストレージ装置108に4つのLU109が設定される。ここで、LU1からLU4は、それぞれ、LU識別子(LU−ID)が「1」から「4」のLU109である。
【0017】
ストレージ装置108は、さらに、一つ以上のチャネルアダプタ(CHA)107を備える。CHA107は、SAN106を介してホスト101と通信する。図1の例では、ストレージ装置108に三つのCHA107が設けられる。ここで、CHA1からCHA3は、それぞれ、CHA識別子(CHA−ID)が「1」から「3」のCHA107である。ストレージ装置108は、いずれのCHA107を使用してもホスト101と通信することができる。
【0018】
CHA107は、通常、キャッシュメモリ(図示省略)を備える。CHA107は、ホスト101からデータの読み出し要求を受けたとき、その読み出し要求の対象のデータがキャッシュメモリ内に存在すれば、LU109へアクセスせず、キャッシュメモリ内のデータをホスト101に返送する。その結果、LU109へのアクセス(すなわち、LU109を構成するディスクドライブへのアクセス)が省略され、アクセス速度が向上する。
【0019】
なお、同様のキャッシュメモリがHBA105に設けられてもよい。
【0020】
SAN106は、ホスト101のHBA105とストレージ装置108のCHA107とを通信可能に接続する。各HBA105は、いずれのCHA107とも通信することができる。同様に、各CHA107は、いずれのHBAとも通信することができる。典型的なSAN106は、ファイバーチャネルスイッチ及びケーブルによって構成される。
【0021】
ここで、パスとは、ホスト101からLU109までのデータアクセス経路である。図1の例では、二つのHBA105と三つのCHA107があるため、ホスト101から一つのLUに至るパスは、6通り存在する。パスは、パスIDによって識別される。パスIDは、経由するHBA、CHA及びLUの識別子(HBA−ID、CHA−ID、LU−ID)によって定められる。例えば、HBA1及びCHA3を経由してLU2に至るパスのパスIDは、「132」である。
【0022】
図2は、本発明の実施の形態のメモリ103に格納されるプログラムの説明図である。
【0023】
メモリ103には、アプリケーションプログラム201、交代パス管理設定プログラム202及び交代パス管理プログラム203が格納される。いずれのプログラムも、CPU102によって実行される。
【0024】
交代パス管理設定プログラム202は、交代パス管理プログラム203のパラメータ等を設定するプログラムである。
【0025】
交代パス管理プログラム203は、本発明の負荷分散を実現するプログラムである。交代パス管理プログラム203は、後述するアルゴリズムによって各LU109に対するアクセスパスを設定する。アプリケーションプログラム201から要求されたデータアクセス(I/O)は、交代パス管理プログラム203によって設定されたパスを経由して実行される。
【0026】
交代パス管理プログラム203には、負荷測定サブプログラム204、アクティブパス設定サブプログラム205及びレポートサブプログラム209が含まれる。
【0027】
レポートサブプログラム209は、アクティブパスの設定に関する情報及び各パスの負荷の状態に関する情報等を、入出力装置104に出力する。レポートサブプログラム209は、少なくとも、アクティブパスが再設定されたときには、これらの情報を出力する。
【0028】
なお、アクティブパスについては、図3において説明する。
【0029】
アクティブパス設定サブプログラム205には、さらに、初期アクティブパス設定サブプログラム206、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208が含まれる。
【0030】
これらのサブプログラムについては、後で詳細に説明する。
【0031】
図3は、本発明の実施の形態のパステーブルの説明図である。
【0032】
パステーブル300は、メモリ103に格納されるテーブルであり、図1のコンピュータシステム(すなわち、ホスト101と、これに接続されたストレージ装置108)に存在する全てのパスの状態を示す情報を含む。パステーブル300は、初期アクティブパス設定サブプログラム206によって作成され、負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
【0033】
パステーブル300において、パス番号301は、全てのパスに一意に付与されたパスの番号である。
【0034】
障害状態302は、パスに障害が発生しているか否かを示す。パスを構成するHBA105、CHA107及びLU109のいずれにも障害が発生していない場合、障害状態302の値は「No」となる。一方、これらのうちいずれかに障害が発生している場合、障害状態302の値は「Yes」となる。
【0035】
アクティブ情報303は、パスがアクティブパスとして設定されているか否かを示す。パスがアクティブパスとして設定されている場合、アクティブ情報303の値は「Yes」となり、アクティブパスとして設定されていない場合、アクティブ情報303の値は「No」となる。
【0036】
ここで、アクティブパスとは、ホスト101からLU109へのアクセス(I/O)が経由するパスである。アクティブパスでないパスは、データアクセスに寄与しないスタンバイパスである。例えば、図3において、ホスト101とLU1との間には、パス番号301が「1」のパスから「6」のパスまで、6本のアクセス可能なパスがある。しかし実際には、ホスト101は、アクティブパス(図3の例では、パス番号301が「1」のパス)のみを経由してLU1にアクセスする。
【0037】
アクティブパスは、初期アクティブパス設定サブプログラム206によって最初に作成される。その後、必要に応じて(例えば、アクティブパスに障害が発生した場合又は特定の部位に負荷が集中した場合)、アクティブパス再設定サブプログラムA207又はアクティブパス再設定サブプログラムB208によって、スタンバイパスの一つが新たなアクティブパスとして設定(再設定)され、元のアクティブパスがスタンバイパスとして設定される。アクティブパスの設定及び再設定については、後で詳細に説明する。
【0038】
HBA−ID304は、パスが経由するHBA105の識別子(HBA−ID)である。
【0039】
CHA−ID305は、パスが経由するCHA107の識別子(CHA−ID)である。
【0040】
LU−ID306は、パスが到達するLU109の識別子(LU−ID)である。
【0041】
測定負荷307は、各パスについて実際に測定された負荷の量を示す。この負荷の量は、負荷測定サブプログラム204によって測定される所定時間当たりのアクセス(I/O)回数又はアクセスデータ量である(図10参照)。
【0042】
アクティブパス設定LU数308は、各パスをアクティブパスとして設定しているLUの数を示す。アクティブ情報303が「Yes」であるパスのアクティブパス設定LU数308は、「1」であり、アクティブ情報303が「No」であるパスのアクティブパス採用LU数308は、「0」である。
【0043】
パステーブル300の設定については、後で詳細に説明する。
【0044】
図4は、本発明の実施の形態のLUテーブルの説明図である。
【0045】
LUテーブル400は、メモリ103に格納されるテーブルであり、図1のホスト101に接続されたストレージ装置108に存在する全てのLU109の状態を示す情報を含む。LUテーブル400は、初期アクティブパス設定サブプログラム206によって作成され、負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
【0046】
LUテーブル400において、LU−ID401は、各LUを識別するLU−IDである。図4の例では、LU−ID401の値は、「1」から「4」までとなる。
【0047】
測定負荷402は、各LUについて実際に測定された負荷の量を示す。各LUの測定負荷402の値は、パステーブル300の測定負荷307の値を、該当するLU−ID306について合計した値である。例えば、LU−ID401が「1」であるLU109(すなわち、LU1)の測定負荷402は、パステーブル300のLU−ID306が「1」であるパスの測定負荷307の合計値(図3及び図4の例では、「50」)である。
【0048】
現アクティブパスのパスID403は、各LUについて現在アクティブパスとして設定されているパスのパスIDを示す。すなわち、パステーブル300において、アクティブパス設定LU数308が「1」であるパスのパスIDである。
【0049】
新アクティブパスのパスID404は、各LUについて次にアクティブパスとして設定されるパスのパスIDを示す。次にアクティブパスとして設定されるパスが未定である場合、新アクティブパスのパスID404の値は、「−1」となる。
【0050】
LUテーブル400の設定については、後で詳細に説明する。
【0051】
図5は、本発明の実施の形態のHBAテーブルの説明図である。
【0052】
HBAテーブル500は、メモリ103に格納されるテーブルであり、図1のホスト101に存在する全てのHBA105の状態を示す情報を含む。HBAテーブル500は、初期アクティブパス設定サブプログラム206によって作成され、負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
【0053】
HBAテーブル500において、HBA−ID501は、各HBAを識別するHBA−IDである。図5の例では、HBA−ID501の値は、「1」から「2」までとなる。
【0054】
測定負荷502は、各HBAについて実際に測定された負荷の量を示す。各HBAの測定負荷502の値は、パステーブル300の測定負荷307の値を、該当するHBA−ID304について合計した値である。例えば、HBA−ID501が「1」であるHBA105(すなわち、HBA1)の測定負荷502は、パステーブル300のHBA−ID304が「1」であるパスの測定負荷307の合計値(図3及び図5の例では、「60」)である。
【0055】
割当済み負荷503には、アクティブパスを再設定する際に、各HBA105に既に割り当てられたアクティブパスの負荷の値が格納される。
【0056】
アクティブパス設定LU数504は、各HBA105をアクティブパスとして設定しているLU109の数を示す。各HBA105のアクティブパス設定LU数504の値は、パステーブル300のアクティブパス設定LU数308の値を、該当するHBA−ID304について合計した値である。例えば、HBA−ID501が「1」であるHBA105(すなわち、HBA1)のアクティブパス設定LU数504は、パステーブル300のHBA−ID304が「1」であるパスのアクティブパス設定LU数308の合計値(図3及び図5の例では、「2」)である。
【0057】
HBAテーブル500の設定については、後で詳細に説明する。
【0058】
図6は、本発明の実施の形態のCHAテーブルの説明図である。
【0059】
CHAテーブル600は、メモリ103に格納されるテーブルであり、図1のホスト101に接続されたストレージ装置108に存在する全てのCHA107の状態を示す情報を含む。CHAテーブル600は、初期アクティブパス設定サブプログラム206によって作成され、負荷測定サブプログラム204、アクティブパス再設定サブプログラムA207及びアクティブパス再設定サブプログラムB208によって更新される。
【0060】
CHAテーブル600において、CHA−ID601は、各CHAを識別するCHA−IDである。図6の例では、CHA−ID601の値は、「1」から「3」までとなる。
【0061】
測定負荷602は、各CHAについて実際に測定された負荷の量を示す。各CHAの測定負荷602の値は、パステーブル300の測定負荷307の値を、該当するCHA−ID305について合計した値である。例えば、CHA−ID601が「1」であるCHA107(すなわち、CHA1)の測定負荷602は、パステーブル300のCHA−ID305が「1」であるパスの測定負荷307の合計値(図3及び図6の例では、「110」)である。
【0062】
割当済み負荷603には、アクティブパスを再設定する際に、各CHA107に既に割り当てられたアクティブパスの負荷の値が格納される。
【0063】
アクティブパス設定LU数604は、各CHA107をアクティブパスとして設定しているLU109の数を示す。各CHA107のアクティブパス設定LU数604の値は、パステーブル300のアクティブパス設定LU数308の値を、該当するCHA−ID305について合計した値である。例えば、CHA−ID601が「1」であるCHA107(すなわち、CHA1)のアクティブパス設定LU数604は、パステーブル300のCHA−ID305が「1」であるパスのアクティブパス設定LU数308の合計値(図3及び図6の例では、「2」)である。
【0064】
CHAテーブル600の設定については、後で詳細に説明する。
【0065】
なお、LUテーブル400、HBAテーブル500及びCHAテーブル600は、次のような方法で作成することができる。
【0066】
例えば、ホスト101のHBA105がLU109を検出し、その検出されたLU109に関する情報をホスト101のオペレーティングシステム(OS)がHBA105から取得してもよい。ホスト101は、検出されたLU109に対してSCSIのコマンドを使用することによって、パスに関する情報(例えば、どのHBA105及びCHA107を経由するかを示す情報等)を取得することができる。ホスト101は、この情報に基づいて、使用可能なLU109、HBA105及びCHA107を把握し、LUテーブル400、HBAテーブル500及びCHAテーブル600を作成することができる。以上のように、ホスト101は、使用可能なLU109及びCHA107を検出することができる。
【0067】
複数のホスト101が同一のLU109及びCHA107を検出することができる場合、これらの複数のホスト101は、検出された同一のLU109及びCHA107を共有する。
【0068】
一方、SAN106のファイバーチャネルスイッチ(図示省略)のゾーニング又はストレージ装置108のLUNマスキング等の機能によって、ホスト101のOSが検出することができないLU109を設定することもできる。したがって、これらの機能によって、複数のホスト101がそれぞれ別のLU109を使用するように設定することもできる。
【0069】
図7は、本発明の実施の形態の交代パス管理プログラム203のフローチャートである。
【0070】
ホスト101が起動することによって交代パス管理プログラム203の実行が開始すると(701)、最初に、初期アクティブパスを設定する(702)。具体的には、交代パス管理プログラム203によって呼び出された初期アクティブパス設定サブプログラム206が、初期アクティブパスを設定する(図8〜図9参照)。
【0071】
次に、測定負荷種別及び測定期間が設定される(703)。測定負荷種別とは、負荷測定サブプログラム204が測定する対象であり、ホスト101のユーザによって、「I/O数」又は「I/Oデータ量」のいずれかが設定される。測定期間とは、負荷測定サブプログラム204が、設定された測定対象を測定する期間であり、ホスト101のユーザによって、任意の期間が設定される。この設定は、交代パス管理設定プログラム202によって実行される。
【0072】
次に、ステップ703の設定に従って負荷を測定する(704)。具体的には、交代パス管理プログラム203によって呼び出された負荷測定サブプログラム204が、ステップ703の設定に従って負荷を測定する(図10参照)。なお、I/O(すなわち、データアクセス)が発生するたびに、負荷測定サブプログラム204が負荷を測定する。
【0073】
次に、ホスト101がシャットダウンされるか否かを判定する(705)。具体的には、ホスト101のユーザがホスト101をシャットダウンするコマンドを発行したか否かを判定する。ホスト101がシャットダウンされる場合は、交代パス管理プログラム203を終了する(706)。
【0074】
一方、ホスト101がシャットダウンされない場合は、次に、パス数に変動があったか否かを判定する(707)。ここで、パス数に変動があった場合とは、HBA105、CHA107若しくはLU109に障害が発生して一つ以上のパスが使用できなくなった場合、HBA105、CHA107若しくはLU109に発生していた障害が復旧した場合、又は、HBA105、CHA107若しくはLU109が新たに追加された場合等である。パス数に変動があった場合は、アクティブパスを再設定する(708)。具体的には、交代パス管理プログラム203によって呼び出されたアクティブパス再設定サブプログラムA207が、アクティブパスを再設定する(図11〜図12参照)。
【0075】
一方、パス数に変動がない場合は、アクティブパスを再設定するタイミングであるか否かを判定する(709)。ホスト101のユーザは、予め、アクティブパスを再設定する間隔(例えば、1時間、1日、1週間、1ヶ月又は1年)を設定することができる。ユーザが「1時間」と設定した場合、ステップ709において、前回アクティブパスが再設定(又は初期設定)されてから1時間経過したか否かを判定する。1時間経過している場合は、アクティブパスを再設定するタイミングであるため、アクティブパスを再設定する(710)。具体的には、交代パス管理プログラム203によって呼び出されたアクティブパス再設定サブプログラムB208が、アクティブパスを再設定する(図13〜図16参照)。
【0076】
なお、アクティブパスの再設定は、上記のように所定の間隔で実行するだけでなく、ホスト101のユーザからの要求を受けて実行してもよい。この場合、ステップ709において、ユーザがアクティブパス再設定要求を発行したか否かを判定し、再設定要求が発行されている場合は、アクティブパスを再設定するタイミングであるため、ステップ710に進む。
【0077】
一方、上記の所定の間隔が経過しておらず、かつ、ユーザからの再設定要求も発行されていない場合は、アクティブパスを再設定するタイミングでないため、ステップ704に戻る。
【0078】
一方、アクティブパス再設定サブプログラムA207又はアクティブパス再設定サブプログラムB208が実行された場合は、その後、レポートを出力する(711)。具体的には、レポートサブプログラム209が、再設定されたアクティブパスに関する情報をホスト101の入出力装置104に表示する。レポートを出力した後、ステップ704に戻る。
【0079】
図8は、本発明の実施の形態の初期アクティブパス設定サブプログラム206のフローチャートである。
【0080】
図7のステップ702において呼び出されることによって、初期アクティブパス設定サブプログラム206の実行が開始する(801)。このとき、交代パス管理プログラム203は、ホスト101からアクセス可能な全てのLU109(すなわち、LU1〜LU4)を認識している。
【0081】
最初に、初期アクティブパス設定サブプログラム206は、パステーブル300を作成する(802)。この時点では、パステーブル300の値は全て初期値である。すなわち、障害状態302及びアクティブ情報303の値は全て「No」であり、測定負荷307及びアクティブパス設定LU数300の値は全て「0」である。
【0082】
次に、初期アクティブパス設定サブプログラム206は、LUテーブル400、HBAテーブル500及びCHAテーブル600を作成する(803)。この時点では、各テーブルの値は全て初期値である。すなわち、測定負荷402、502、602、割当済み負荷503、603、アクティブパス設定LU数504及び604の値は、全て「0」である。また、現アクティブパスのパスID403及び新アクティブパスのパスID404の値は、未定である。
【0083】
次に、全LU109のアクティブパスが決定したか否かを判定する(804)。
【0084】
全LU109のアクティブパスが決定していない場合は、未処理かつLU−IDが最も小さい値のLU109(LUm、「m」はLU−ID)を選択する(805)。
【0085】
次に、LUmへのパスのうち、未処理のパスがあるか否かを判定する(806)。未処理のパスがない場合は、その時点のLUmのアクティブパス候補がアクティブパスに決定したので、そのLUmを処理済みとして(815)、次のLU109のアクティブパスを決定するために、ステップ804に戻る。
【0086】
一方、未処理のパスがある場合は、LUmのアクティブパスが決定していないため、これを決定するために、LUmへのパスのうち、未処理かつ最もパスIDが小さいパスAを選択する(807)。
【0087】
次に、パスAがそのLUmについて最初に選択されたパスであるか否かを判定する(808)。最初に選択されたパスである場合は、そのパスAをLUmのアクティブパス候補として設定するために、ステップ812に進む。
【0088】
一方、パスAがそのLUmについて最初に選択されたパスでない場合は、パスAをアクティブパス候補として設定するか否かを判定するために、値αが値Bより大きいか否かを判定する(809)。ここで、値αは、その時点のアクティブパス候補のHBA105のアクティブパス採用LU数504と、その時点のアクティブパス候補のCHA107のアクティブパス採用LU数604との合計値である。値Bは、パスAのHBA105のアクティブパス採用LU数504と、パスAのCHA107のアクティブパス採用LU数604との合計値である。
【0089】
その結果、値αが値Bより大きくない場合は、パスAはLUmのアクティブパス候補とはならないため、パスAをスタンバイパスに設定し(810)、ステップ806に戻る。具体的には、ステップ810において、パステーブル300のパスAに対応するアクティブ情報303を「No」とする。
【0090】
一方、値αが値Bより大きい場合は、パスAをLUmのアクティブパス候補とするため、まず、現時点でのLUmのアクティブパス候補をスタンバイパスにする(811)。具体的には、パステーブル300において、そのパスに対応するアクティブ情報303を「No」とする。さらに、パステーブル300において、そのパスに対応するアクティブパス設定LU数308を1減少させる。さらに、そのパスに対応するHBA105について、HBAテーブル500のアクティブパス設定LU数504を1減少させる。さらに、そのパスに対応するCHA107について、CHAテーブル600のアクティブパス設定LU数604を1減少させる。
【0091】
次に、パスAをLUmのアクティブパス候補として設定する(812)。具体的には、パステーブル300において、パスAに対応するアクティブ情報303を「Yes」とする。さらに、パステーブル300において、パスAに対応するアクティブパス設定LU数308を1増加させる。さらに、パスAに対応するHBA105について、HBAテーブル500のアクティブパス設定LU数504を1増加させる。さらに、パスAに対応するCHA107について、CHAテーブル600のアクティブパス設定LU数604を1増加させる。さらに、LUテーブル400において、LUmに対応する新アクティブパスのパスID404の値を、パスAのパスIDの値に設定する。
【0092】
その後、次のパスについて処理するため、ステップ806に戻る。
【0093】
一方、ステップ804において、全LU109のアクティブパスが決定した場合は、決定したアクティブパスを実際に運用するため、LUテーブル400の新アクティブパスのパスID404の値を、現アクティブパスのパスID403に複写する(813)。その結果、交代パス管理プログラム203は、新しいアクティブパスの運用を開始する。すなわち、交代パス管理プログラム203は、アプリケーションプログラム201から要求されたデータアクセス(I/O)を、新しいアクティブパスに割り当てる。
【0094】
以上で、初期アクティブパス設定サブプログラムの実行が終了する。
【0095】
図9は、本発明の実施の形態の設定されたアクティブパスを示すブロック図である。
【0096】
図9は、例として、図1において初期アクティブパス設定サブプログラム206(図8)を実行した結果を示す。
【0097】
図9において、設定されたアクティブパスのパスIDは、それぞれ、「111」、「222」、「133」及び「214」である。すなわち、LU1へのアクティブパス902aは、HBA1及びCHA1を経由する。LU2へのアクティブパス902bは、HBA2及びCHA2を経由する。LU3へのアクティブパス902cは、HBA1及びCHA3を経由する。LU4へのアクティブパス902dは、HBA2及びCHA1を経由する。
【0098】
なお、図9において、測定負荷901は、負荷測定サブプログラム204によって測定された負荷の例である。これについては、図10以降で詳細に説明する。
【0099】
図10は、本発明の実施の形態の負荷測定サブプログラム204のフローチャートである。
【0100】
図7のステップ704において呼び出されることによって、負荷測定サブプログラム204の実行が開始する(1001)。
【0101】
最初に、負荷測定サブプログラム204は、ホスト101からいずれかのLU109へのデータアクセス(I/O)を、そのLU109について設定されたアクティブパスAに割り当てる(1002)。
【0102】
次に、測定負荷種別を判定する(1003)。この測定負荷種別は、図7のステップ703において設定されたものである。
【0103】
測定負荷種別として「I/O数」が設定されていると判定した場合は、アクティブパスAについて発行されたデータI/Oの回数を測定する(1004)。
【0104】
一方、測定負荷種別として「I/Oデータ量」が設定されていると判定した場合は、アクティブパスAについて発行されたデータI/Oのデータ量を測定する(1005)。
【0105】
次に、各テーブルの値を更新する(1006)。すなわち、パステーブル300のアクティブパスAに該当する測定負荷307の値に、ステップ1004又は1005において測定された値を加算する。さらに、LUテーブル400、HBAテーブル500及びCHAテーブル600において、アクティブパスAに含まれるLU、HBA及びCHAの測定負荷402、502及び602の値に、ステップ1004又は1005において測定された値を加算する。
【0106】
以上で、負荷測定サブプログラム204の実行が終了する(1007)。負荷測定サブプログラム204によって測定された値の例を、図9の測定負荷901に示す。
【0107】
なお、図3から図6に示す各テーブルの値は、図9の測定負荷901が測定された時点の値である。
【0108】
図11は、本発明の実施の形態のアクティブパス再設定サブプログラムA207のフローチャートである。
【0109】
図1のコンピュータシステムにおいて、パスの数が変動したときに、図7のステップ708において呼び出されることによって、アクティブパス再設定サブプログラムA207の実行が開始する(1101)。ここで、パスの数が変動したときとは、アクティブパスに含まれるHBA105又はCHA107に障害が発生したとき、新たなLU109が追加されたとき、又は、障害が発生していたHBA105又はCHA107が復帰したとき等である。
【0110】
最初に、本発明の実施の形態のアクティブパス再設定サブプログラムA207は、該当するLUmに至る全てのパスの測定負荷を算出する(1102)。ただし、ステップ1102において、該当するLUmとは、アクティブパスに障害が発生した場合は、そのアクティブパスに関するLU109である。また、新たなLU109が追加された場合は、その追加されたLU109である。また、HBA105又はCHA107が障害から復帰した場合は、そのHBA105又はCHA107を経由してアクセス可能なLU109である。また、ステップ1102において、該当するLUmに至る全てのパスの測定負荷とは、各パスに含まれるHBA105及びCHA107の測定負荷502及び602の値をパスごとに合計した値である。ただし、障害が発生したアクティブパスについて測定された値は含まない。
【0111】
次に、ステップ1102で算出された測定負荷の値を比較し、測定負荷の値が最小になるパスが複数存在するか否かを判定する(1103)。測定負荷の値が最小になるパスが複数存在しない場合は、測定負荷の値が最小になるパスをアクティブパスとして設定する(1107)。
【0112】
一方、ステップ1102で算出された測定負荷の値が最小になるパスが複数存在する場合は、それらのパスについて、値αを算出する(1104)。ここで、値αは、各パスに関するHBAテーブル500及びCHAテーブル600のアクティブパス設定LU数504及び604を合計した値である。
【0113】
次に、各パスについて算出された値αを比較して、値αが最小になるパスが複数存在するか否かを判定する(1105)。値αが最小になるパスが複数存在しない場合は、値αが最小になるパスをアクティブパスとして設定する(1107)。
【0114】
一方、値αが最小になるパスが複数存在する場合は、それらのパスのうち、パスIDの値が最小になるパスをアクティブパスとして設定する(1106)。
【0115】
次に、各テーブルの値を更新する(1108)。すなわち、パステーブル300において、アクティブパスに設定されたパスのアクティブ情報303を「Yes」に変更する。さらに、LUテーブル400において、該当するLUmの新アクティブパスのパスID404の値を、アクティブパスに設定されたパスのパスIDの値に変更する。
【0116】
このようにして、該当するLUmのアクティブパスが再設定される。
【0117】
次に、全ての該当するLUmについて、アクティブパスが再設定されたか否かを判定する(1109)。その結果、全ての該当するLUmについてアクティブパスが再設定されていない(すなわち、アクティブパスが再設定されていないLUmが存在する)と判定された場合は、次のLUmについてアクティブパスを再設定するために、ステップ1102に戻る。
【0118】
一方、全ての該当するLUmについてアクティブパスが再設定されたと判定された場合は、再設定されたアクティブパスの運用を開始するため、LUテーブル400の新アクティブパスのパスID404の値を、現アクティブパスのパスID403に複写する(1110)。
【0119】
以上で、アクティブパス再設定サブプログラムA207の実行が終了する(1111)。
【0120】
図12は、本発明の実施の形態の再設定されたアクティブパスの例を示すブロック図である。
【0121】
図12は、例として、図9においてCHA3に障害が発生した場合に、アクティブパス再設定サブプログラムA207(図11)によって再設定されたアクティブパスを示す。この例において、障害が発生したアクティブパスは、HBA1及びCHA3を経由してLU3に至るパスであり、そのパスの測定負荷の値は「10」である。
【0122】
図9においてCHA3に障害が発生した場合、ステップ1102の「該当するLUm」は、CHA3を含むアクティブパスに関するLUm、すなわち、LU3である。
【0123】
このため、LU3に至る全てのパスについて、現時点の測定負荷を比較する(1102)。LU3に至るパスは、パステーブル300に示すパス番号が「13」から「18」までの6本である。これらのうち、障害が発生したCHA3に関するパス(パス番号が「15」及び「18」のパス)は使用できないため、残りの4本のパスについて、測定負荷を比較する。
【0124】
パス番号が「13」のパスは、HBA1及びCHA1を経由してLU3に至るパスである。HBAテーブル500において、HBA1の測定負荷の値は「60」である。ここで、障害が発生したアクティブパスはHBA1を経由する。このため、HBA1の測定負荷の値から、障害が発生したアクティブパスの測定負荷の値を除いた値「50」を算出する。一方、CHAテーブルにおいて、CHA1の測定負荷の値は「110」である。以上から、パス番号が「13」のパスの現時点の測定負荷は、「50」と「110」の合計値「160」である。
【0125】
同様に、パス番号が「14」、「16」及び「17」のパスの現時点の測定負荷は、それぞれ、「70」、「190」及び「100」である。これらの値を比較すると(1102)、測定負荷の値が最小値「70」であるパスは、パス番号が「14」のパスのみである。すなわち、測定負荷の値が最小になるパスが複数存在しないため(1103)、パス番号が「14」のパスをアクティブパスとして設定する(1107)。
【0126】
その結果、図12に示すように、HBA1及びCHA2を経由するパス1202cがLU3に至るアクティブパスとして再設定される。
【0127】
図13は、本発明の実施の形態のアクティブパス再設定サブプログラムB208のフローチャートである。
【0128】
図1のコンピュータシステムにおいて、アクティブパスを再設定するタイミングが到来したときに、図7のステップ710において呼び出されることによって、アクティブパス再設定サブプログラムB208の実行が開始する(1301)。ここで、アクティブパスを再設定するタイミングが到来したときとは、予め設定されたアクティブパス再設定間隔(例えば、1時間)が経過したとき、又は、ホスト101のユーザがアクティブパス再設定要求を発行したとき等である。
【0129】
最初に、アクティブパス再設定サブプログラムB208は、アクティブパスの負荷が適度に分散しているか否かを判定する。具体的には、全てのHBA105及びCHA107の測定負荷の最小値と最大値を比較し、最小値が最大値の90%以上であるか否かを判定する(1302)。その結果、最小値が最大値の90%以上である場合は、アクティブパスの負荷が適度に分散しているため、アクティブパスを再設定せずに、ステップ1316に進む。
【0130】
一方、最小値が最大値の90%以上でない場合は、負荷に偏りがあるため、アクティブパスを再設定して負荷を分散させるために、ステップ1303に進む。
【0131】
なお、図13の例では、負荷が適度に分散されているか否かを判定する閾値として、「測定負荷の最大値の90%」を設定したが、ユーザは、他の閾値(例えば、最大値の50%)を設定してもよい。
【0132】
次に、全てのLU109について、アクティブパスを変更するか否かの決定が終了したか否かを判定する(1303)。終了したと判定された場合は、アクティブパスを変更するLU109について、アクティブパスを決定するために、ステップ1309に進む。
【0133】
一方、全てのLU109について、アクティブパスを変更するか否かの決定が終了していない場合は、これを終了させるために、ステップ1304に進む。すなわち、アクティブパスを変更するか否かが決定していないLU109の測定負荷の値を比較し、その値が最も大きいLU109(LUm、「m」はLU−ID)を選択する(1304)。
【0134】
次に、LUmに至る現アクティブパスに障害が発生しているか否かを判定する(1305)。
【0135】
ステップ1305において、LUmに至る現アクティブパスに障害が発生していないと判定された場合は、次に、LUmの現アクティブパスが他のLU109の新アクティブパスとして使用されているか否かを判定する(1306)。具体的には、LUmの現アクティブパスに関するHBA105又はCHA107のいずれかが他のLU109の新アクティブパスに含まれるか否かを判定する。
【0136】
ステップ1306において、LUmの現アクティブパスに関するHBA105及びCHA107のいずれも他のLU109の新アクティブパスに含まれないと判定された場合は、LUmのアクティブパスを変更しないことを決定する(1308)。すなわち、LUテーブル400のLUmに対応する新アクティブパスのパスID404の値を、現アクティブパスのパスID403と同一にする。さらに、HBAテーブル500及びCHAテーブル600において、LUmに対応する割当済み負荷503及び603の値に、LUmの測定負荷の値(すなわち、パステーブル300のLUmに関するアクティブパスの測定負荷307の値)を加算する。さらに、HBAテーブル500及びCHAテーブル600において、LUmに対応するアクティブパス設定LU数504及び604の値に「1」を加算する。その後、ステップ1303に戻る。
【0137】
一方、ステップ1305において、LUmに至る現アクティブパスに障害が発生していると判定された場合、及び、ステップ1306において、LUmの現アクティブパスに関するHBA105又はCHA107のいずれかが他のLU109の新アクティブパスに含まれると判定された場合は、LUmのアクティブパスを変更することを決定して(1307)、ステップ1303に戻る。
【0138】
ステップ1303において、全てのLU109について、アクティブパスを変更するか否かの決定が終了したと判定された場合は、全てのLU109について、新アクティブパスが決定したか否かを判定する(1309)。全てのLU109について新アクティブパスが決定したと判定された場合は、ステップ1315に進む。
【0139】
一方、全てのLU109について新アクティブパスが決定していないと判定された場合は、新アクティブパスが決定していないLU109の測定負荷の値を比較し、その値が最も大きいLU109(LUm)を選択する(1310)。
【0140】
次に、LUmに関して使用可能な(すなわち、障害が発生していない)パスが複数存在するか否かを判定する(1311)。
【0141】
使用可能なパスが一つしか存在しない場合は、そのパスを新アクティブパスに決定する(1312)。
【0142】
一方、使用可能なパスが複数存在する場合は、HBAテーブル500及びCHAテーブル600において、LUmに対応する割当済み負荷503及び603の値を参照し、これらの値の合計値が最小となるパスを新アクティブパスに決定する(1313)。
【0143】
次に、ステップ1312又は1313で決定された新アクティブパスに関するHBA105及びCHA107について、HBAテーブル500及びCHAテーブル600の割当済み負荷503及び603の値に、LUmの測定負荷の値を加算する。さらに、アクティブパス設定LU数504及び604の値に「1」を加算する。さらに、LUテーブル400のLUmに対応する新アクティブパスのパスID404の値を、ステップ1312又は1313で決定された新アクティブパスのパスIDの値に変更する(1314)。その後、ステップ1309に戻る。
【0144】
ステップ1309において、全てのLU109について新アクティブパスが決定したと判定された場合は、LUテーブル400の新アクティブパスのパスID404の値を、現アクティブパスのパスID403に複写する(1315)。その結果、新アクティブパスの運用が開始される。
【0145】
次に、パステーブル300、LUテーブル400、HBAテーブル500及びCHAテーブル600の測定負荷307、402、502及び602の値をクリアする(1316)。すなわち、これらの値を「0」にする。
【0146】
以上で、アクティブパス再設定サブプログラムB208の実行が終了する(1317)。
【0147】
図14は、本発明の実施の形態の再設定されたアクティブパスの例を示すブロック図である。
【0148】
図14は、例として、図9においてアクティブパス再設定サブプログラムB208(図13)を実行することによって再設定されたアクティブパスを示す。この再設定の手順を、図4から図6、図9、図13及び図14を参照して説明する。なお、以下の説明において、ループによって同様の動作を繰り返す場合は、特に必要な場合を除いて、説明を省略する。
【0149】
図9において、アクティブパス再設定サブプログラムB208の実行が開始すると(1301)、最初に、アクティブパスの負荷が適度に分散しているか否かを判定する(1302)。例えば、図6において、CHA107の測定負荷602の最大値「110」の90%の値「99」は、最小値「10」よりずっと大きい。このことは、負荷が大きく偏って配分されていることを意味する。従って、アクティブパスを再設定して負荷を分散するために、ステップ1303に進む。
【0150】
この時点では、全てのLU109について、アクティブパスを変更するか否かの決定が終了していないため(1303)、ステップ1304に進む。
【0151】
ステップ1304において、アクティブパスを変更するか否かが決定していないLU109のうち、測定負荷の値が最も大きいLU4を選択する。LU4に至る現アクティブパス902dに障害が発生していないため(1305)、ステップ1306に進む。
【0152】
LU4の前に新アクティブパスが決定しているLU109はないため、LU4の現アクティブパス902dに含まれるHBA105及びCHA107のいずれも、他のLU109の新アクティブパスに決定していない(1306)。したがって、ステップ1308に進む。
【0153】
ステップ1308において、LU4の現アクティブパス902d(HBA2及びCHA1を経由してLU4に至るパス)を新アクティブパスに決定する。このとき、LUテーブル400のLU4の新アクティブパスのパスIDの値を、「214」とする。さらに、HBAテーブル500のHBA2の割当済み負荷503の値「0」(初期値)に「60」(LU4の測定負荷)を加算して、「60」とする。さらに、CHAテーブル600のCHA1の割当済み負荷603の値「0」(初期値)に「60」(LU4の測定負荷)を加算して、「60」とする。
【0154】
次に、測定負荷が2番目に大きいLU1を選択する(1304)。LU1の現アクティブパス901a(HBA1及びCHA1を経由してLU1に至るパス)のうち、CHA1は、LU4の新アクティブパスとして決定している(1306)。このため、LU1のアクティブパスを変更することを決定する(1307)。
【0155】
LU2についても、同様にして、アクティブパスを変更することを決定する(1307)。
【0156】
LU3の現アクティブパス902c(HBA1及びCHA3を経由してLU3に至るパス)は、既に決定しているLU4の新アクティブパス902d(HBA2及びCHA1を経由してLU4に至るパス)に含まれないため、変更しないことを決定する(1306、1308)。このとき、LUテーブル400のLU3の新アクティブパスのパスIDの値を、「133」とする。さらに、HBAテーブル500のHBA1の割当済み負荷503の値「0」(初期値)に「10」(LU3の測定負荷)を加算して、「10」とする。さらに、CHAテーブル600のCHA3の割当済み負荷603の値「0」(初期値)に「10」(LU3の測定負荷)を加算して、「10」とする。
【0157】
次に、ステップ1309に進む。
【0158】
この時点では、LU1及びLU2の新アクティブパスが決定していないため、これらのうち測定負荷の値が大きいLU1を選択する(1310)。
【0159】
LU1に関して使用可能なパスが複数あるため(1311)、ステップ1313に進む。
【0160】
ステップ1313において、最初に、HBAテーブル500を参照する。この時点で、HBA1の割当済み負荷503の値は「10」であり、HBA2の割当済み負荷503の値は「60」である。このため、割当済み負荷503の値が小さいHBA1をLU1の新アクティブパスに決定する。
【0161】
次に、CHAテーブル600を参照する。この時点で、CHA1の割当済み負荷603の値は「60」であり、CHA2の割当済み負荷603の値は「0」であり、CHA3の割当済み負荷603の値は「10」(初期値)である。このため、割当済み負荷603の値が最も小さいCHA2をLU1の新アクティブパスに決定する。
【0162】
次に、ステップ1314において、HBAテーブル500のHBA1の割当済み負荷503の値「10」に「50」(LU1の測定負荷)を加算して、「60」とする。さらに、CHAテーブル600のCHA2の割当済み負荷603の値「0」に「50」(LU1の測定負荷)を加算して、「50」とする。
【0163】
次に、LU2を選択する(1310)。
【0164】
ステップ1313において、最初に、HBAテーブル500を参照する。この時点で、HBA1の割当済み負荷503の値は「60」であり、HBA2の割当済み負荷503の値は「60」である。このように割当済み負荷503の値が同じである場合は、どちらを新アクティブパスに決定してもよい。本実施の形態では、HBA−IDの値が小さいHBA1をLU2の新アクティブパスに決定する。
【0165】
次に、CHAテーブル600を参照する。この時点で、CHA1の割当済み負荷603の値は「60」であり、CHA2の割当済み負荷603の値は「50」であり、CHA3の割当済み負荷603の値は「10」である。このため、割当済み負荷603の値が最も小さいCHA3をLU1の新アクティブパスに決定する。
【0166】
次に、ステップ1314において、HBAテーブル500のHBA1の割当済み負荷503の値「60」に「20」(LU2の測定負荷)を加算して、「80」とする。さらに、CHAテーブル600のCHA3の割当済み負荷603の値「10」に「20」(LU2の測定負荷)を加算して、「30」とする。
【0167】
以上のようにして、各LU109の新アクティブパスが決定する。結局、図14に示すように、LU1に至る新アクティブパス1402aは、HBA1及びCHA2を経由する。LU2に至る新アクティブパス1402bは、HBA1及びCHA3を経由する。LU3に至る新アクティブパス902cは、HBA1及びCHA3を経由する。LU4に至る新アクティブパス902dは、HBA2及びCHA1を経由する。
【0168】
このとき、各CHAの割当済み負荷603の最大値は「60」であり、最小値は「30」である。一方、現アクティブパスに関するCHAの測定負荷602の最大値は「110」であり、最小値は「10」である。したがって、負荷の偏りが改善されていることがわかる。
【0169】
なお、以上の本発明の実施の形態において、アクティブパスは、HBA105及びCHA107の負荷を分散するように、HBA105及びCHA107を特定して設定される。しかし、アクティブパスは、HBA105又はCHA107のいずれか一方のみの負荷を分散するように、HBA105又はCHA107のいずれか一方のみを特定して設定されてもよい。例えば、重み付けをすることによって、ユーザがHBA105又はCHA107のいずれの負荷を優先して分散するか選択できるようにしてもよい。
【0170】
例えば、CHA107のみを指定してアクティブパスを設定する場合、図8のステップ809において、CHAテーブル600のアクティブパス設定LU数604の値のみを比較して、初期アクティブパスを設定する。さらに、図11のステップ1102及び1103において、CHAテーブル600の測定負荷602のみを比較して、アクティブパスを再設定する。さらに、図13のステップ1313において、CHAテーブル600の割当済み負荷603のみを比較して、アクティブパスを再設定する。
【0171】
このようにして設定(又は再設定)されたアクティブパスは、CHA107のみを特定し、HBA105を特定しない。その結果、例えば、LU1に至るアクティブパスがCHA1に設定された場合、ホスト101は、任意のHBA105とCHA1とを経由してLU1にアクセス(I/O)する。言い換えると、CHA1を経由する複数のパスがLU1に対するアクティブパスとして設定される。すなわち、ホスト101は、LU1にアクセスするときに、必ずCHA1を使用する。一方、ホスト101は、アクセス(I/O)ごとに異なるHBA105を使用することができる。例えば、ホスト101は、HBA105については従来の負荷分散を適用してもよい。
【0172】
このようにアクティブパスを設定した場合にも、CHA107がキャッシュメモリを備えていれば、キャッシュメモリが有効に利用され、データの先読み機能等によって性能が向上する。
【0173】
同様にして、HBA105がキャッシュメモリを備えている場合には、HBA105のみを特定してアクティブパスを設定してもよい。その結果、HBA105のキャッシュメモリが有効に利用され、性能が向上する。
【0174】
以上の本発明によれば、各LU109についてアクティブパスが設定され、ホスト101は、アクティブパスを経由してLU109にアクセスする。アクティブパスは、ホスト101からのアクセスの負荷が分散するように設定される。その結果、アクセスの集中による性能低下が改善される。
【0175】
さらに、アクティブパスが設定(又は再設定)された後、次に再設定されるまでの間、ホスト101は、一つのLU109に、同一のパスを経由してアクセスする。すなわち、一回のアクセスごとにアクティブパスが変更されないため、アクティブパスに含まれるCHA107等のキャッシュメモリが有効に利用される。特に、シーケンシャルアクセスの際に、キャッシュメモリに格納された先読みデータが有効に利用される。その結果、性能が向上する。
【0176】
さらに、アクセス負荷に偏りが生じたときには、偏りを解消するために、アクティブパスが再設定されるため、常に良好な性能が維持される。
【0177】
さらに、アクティブパスを再設定する際には、負荷が大きいLU109から順に再設定されるため、負荷が適切に分散される。
【図面の簡単な説明】
【0178】
【図1】本発明の実施の形態のコンピュータシステムの構成を示すブロック図である。
【図2】本発明の実施の形態のメモリに格納されるプログラムの説明図である。
【図3】本発明の実施の形態のパステーブルの説明図である。
【図4】本発明の実施の形態のLUテーブルの説明図である。
【図5】本発明の実施の形態のHBAテーブルの説明図である。
【図6】本発明の実施の形態のCHAテーブルの説明図である。
【図7】本発明の実施の形態の交代パス管理プログラムのフローチャートである。
【図8】本発明の実施の形態の初期アクティブパス設定サブプログラムのフローチャートである。
【図9】本発明の実施の形態の設定されたアクティブパスを示すブロック図である。
【図10】本発明の実施の形態の負荷測定サブプログラムのフローチャートである。
【図11】本発明の実施の形態のアクティブパス再設定サブプログラムAのフローチャートである。
【図12】本発明の実施の形態の再設定されたアクティブパスの例を示すブロック図である。
【図13】本発明の実施の形態のアクティブパス再設定サブプログラムBのフローチャートである。
【図14】本発明の実施の形態の再設定されたアクティブパスの例を示すブロック図である。
【符号の説明】
【0179】
101 ホスト
102 CPU
103 メモリ
104 入出力装置
105 ホストバスアダプタ(HBA)
106 Storage Area Network(SAN)
107 チャネルアダプタ(CHA)
108 ストレージ装置
109 論理ユニット(LU)
201 アプリケーションプログラム
202 交代パス管理設定プログラム
203 交代パス管理プログラム
204 負荷測定サブプログラム
205 アクティブパス設定サブプログラム
206 初期アクティブパス設定サブプログラム
207 アクティブパス再設定サブプログラムA
208 アクティブパス再設定サブプログラムB
209 レポートサブプログラム
300 パステーブル
400 LUテーブル
500 HBAテーブル
600 CHAテーブル

【特許請求の範囲】
【請求項1】
コンピュータと、
前記コンピュータと通信可能に接続されたストレージ装置と、を備えるコンピュータシステムにおいて、
前記ストレージ装置は、
前記コンピュータと通信する一つ以上のチャネルアダプタと、
データを格納する複数の論理ユニットと、を備え、
前記コンピュータは、
前記ストレージ装置と通信する一つ以上のホストバスアダプタと、
前記コンピュータが前記論理ユニットにアクセスする経路を管理する経路管理部と、を備え、
前記経路管理部は、
前記論理ユニットごとのアクセス負荷を測定する負荷測定部と、
前記測定されたアクセス負荷に基づいて、前記コンピュータからのアクセスが経由する一つの前記チャネルアダプタ及び一つ以上の前記ホストバスアダプタ、又は、一つ以上の前記チャネルアダプタ及び一つの前記ホストバスアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタ及び当該ホストバスアダプタを経由するアクティブ経路を設定するアクティブ経路設定部と、を備えることを特徴とするコンピュータシステム。
【請求項2】
前記アクティブ経路設定部は、
前記チャネルアダプタ及び/又は前記ホストバスアダプタごとに、前記測定されたアクセス負荷を合計し、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定することを特徴とする請求項1に記載のコンピュータシステム。
【請求項3】
前記アクティブ経路設定部は、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタが複数存在する場合は、
当該チャネルアダプタ及び/又は当該ホストバスアダプタごとに、設定されたアクティブ経路の数を算出し、
前記アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定することを特徴とする請求項2に記載のコンピュータシステム。
【請求項4】
前記アクティブ経路設定部は、
前記論理ユニットごとに測定されたアクセス負荷を比較し、
前記測定されたアクセス負荷が大きい論理ユニットの前記アクティブ経路を、前記測定されたアクセス負荷が小さい論理ユニットの前記アクティブ経路より先に設定することを特徴とする請求項2に記載のコンピュータシステム。
【請求項5】
前記測定されたアクセス負荷は、所定の時間当たりのアクセス回数であることを特徴とする請求項1に記載のコンピュータシステム。
【請求項6】
前記測定されたアクセス負荷は、所定の時間当たりのアクセスデータ量であることを特徴とする請求項1に記載のコンピュータシステム。
【請求項7】
ストレージ装置と通信可能に接続されたコンピュータにおいて実行されるプログラムであって、
前記ストレージ装置は、前記コンピュータと通信する一つ以上のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、
前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタを備え、
前記プログラムは、
前記論理ユニットごとのアクセス負荷を測定する第1の手順と、
前記測定されたアクセス負荷に基づいて、前記コンピュータからのアクセスが経由する一つの前記チャネルアダプタ及び一つ以上の前記ホストバスアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタ及び当該ホストバスアダプタを経由するアクティブ経路を設定する第2の手順と、を含むことを特徴とするプログラム。
【請求項8】
前記第2の手順は、
前記チャネルアダプタ及び/又は前記ホストバスアダプタごとに、前記測定されたアクセス負荷を合計する手順と、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタが各々一つ存在する場合は、前記合計されたアクセス負荷が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定する手順と、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタが複数存在する場合は、当該チャネルアダプタ及び/又は当該ホストバスアダプタごとに設定されたアクティブ経路の数を算出し、前記アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定する手順と、を含むことを特徴とする請求項7に記載のプログラム。
【請求項9】
コンピュータと、
前記コンピュータと通信可能に接続されたストレージ装置と、を備え、
前記ストレージ装置は、前記コンピュータと通信する一つ以上のチャネルアダプタと、データを格納する複数の論理ユニットと、を備え、
前記コンピュータは、前記ストレージ装置と通信する一つ以上のホストバスアダプタを備えるコンピュータシステムにおいて、前記コンピュータが前記論理ユニットにアクセスするアクティブ経路を設定する方法であって、
前記論理ユニットごとのアクセス負荷を測定する第1の手順と、
前記測定されたアクセス負荷に基づいて、前記コンピュータからのアクセスが経由する一つの前記チャネルアダプタ及び一つ以上の前記ホストバスアダプタを、前記論理ユニットごとに選択し、当該チャネルアダプタ及び当該ホストバスアダプタを経由するアクティブ経路を設定する第2の手順と、を含むことを特徴とする方法。
【請求項10】
前記第2の手順は、
前記チャネルアダプタ及び/又は前記ホストバスアダプタごとに、前記測定されたアクセス負荷を合計する手順と、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタが各々一つ存在する場合は、前記合計されたアクセス負荷が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定する手順と、
前記アクセス負荷の合計値が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタが複数存在する場合は、当該チャネルアダプタ及び/又は当該ホストバスアダプタごとに設定されたアクティブ経路の数を算出し、前記アクセス負荷の合計値が最も小さく、かつ、前記算出されたアクティブ経路の数が最も小さい前記チャネルアダプタ及び/又は前記ホストバスアダプタを経由するアクティブ経路を設定する手順と、を含むことを特徴とする請求項9に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate