(57)【要約】  ストレージ装置は、サーバと通信可能な複数のポートと、複数のプロセッサコアと、複数のＬＵ（Logical  Unit）とを有する。ポート毎に、ポートが受信したＩ／Ｏ要求を受けるプロセッサコアであるポート担当コアが決まっており、ＬＵ毎に、Ｉ／Ｏを担当するプロセッサコアであるＬＵ担当コアが決まっている。ＬＵ担当コアは、動的に変更することがある。サーバは、ＬＵ担当コアの識別情報を定期的にストレージ装置から取得する。サーバは、Ｉ／Ｏ要求を送信する場合に、送信対象のＩ／Ｏ要求で指定されたＬＵであるＩ／Ｏ先ＬＵへの複数のパスから、ＬＵ担当コアとポート担当コアとが同一のプロセッサコアであるパスである非クロスコールパスを選択し、選択したパスを介して送信対象のＩ／Ｏ要求を送信する。
2013118243.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ装置と、
前記ストレージ装置にＩ／Ｏ（Input/Output）要求を送信するサーバと
を有し、
前記ストレージ装置は、前記サーバと通信可能な複数のポートと、複数のプロセッサコアと、複数のＬＵ（Logical  Unit）とを有し、
ポート毎に、ポートが受信したＩ／Ｏ要求を受けるプロセッサコアであるポート担当コアが決まっており、ＬＵ毎に、Ｉ／Ｏを担当するプロセッサコアであるＬＵ担当コアが決まっており、
前記ストレージ装置は、ＬＵ担当コアを変更する必要があるか否かを判断しその判断の結果が肯定的の場合にＬＵ担当コアを変更する処理である担当変更処理を、第１の時間間隔で行うようになっており、
前記サーバは、１以上の通信インタフェースデバイスと、記憶デバイスと、それらに接続された制御デバイスとを有し、
前記記憶デバイスは、通信インタフェースデバイスからＬＵへのパスに関する情報をパス毎に含んだパス情報と、ＬＵ担当コアの識別情報をＬＵ毎に含んだＬＵ担当情報とを記憶し、
前記パス情報は、パスが経由するポートのポート担当コアの識別情報をパス毎に含み、
前記制御デバイスは、第２の時間間隔で、ＬＵのＬＵ担当コアの識別情報の要求である担当通知要求を前記ストレージ装置に送信することにより、ＬＵ担当コアの識別情報を前記ストレージ装置から取得し、その識別情報を前記ＬＵ担当情報に含め、
前記制御デバイスは、Ｉ／Ｏ要求を送信する場合に、
（Ａ）前記パス情報と前記ＬＵ担当情報を基に、送信対象のＩ／Ｏ要求で指定されたＬＵであるＩ／Ｏ先ＬＵへの複数のパスから、ＬＵ担当コアとポート担当コアとが同一のプロセッサコアであるパスである非クロスコールパスを選択し、
（Ｂ）前記（Ａ）で選択したパスを介して前記送信対象のＩ／Ｏ要求を送信する、
計算機システム。
【請求項２】
前記ストレージ装置は、それぞれが２以上の前記プロセッサコアを含む複数のプロセッサを有し、
前記（Ａ）において、前記制御デバイスは、
（ａ１）前記Ｉ／Ｏ先ＬＵへの複数のパスに前記非クロスコールパスが含まれていれば、前記非クロスコールパスを選択し、
（ａ２）前記Ｉ／Ｏ先ＬＵへの複数のパスに前記非クロスコールパスが含まれておらず、且つ、ＬＵ担当コアとポート担当コアとが同一のプロセッサ内にパスであるコアクロスコールパスが含まれていれば、前記コアクロスコールパスを選択し、
（ａ３）前記Ｉ／Ｏ先ＬＵへの複数のパスに前記非クロスコールパス及び前記コアクロスコールパスが含まれていなければ、ＬＵ担当コアとポート担当コアとが異なるプロセッサ内にパスであるプロセッサクロスコールパスを選択する、
請求項１記載の計算機システム。
【請求項３】
前記制御デバイスは、ＬＵに関する情報を取得するための照会要求を前記ストレージ装置に送信するようになっており、前記照会要求を送信する場合、前記照会要求で指定されたＬＵへのパスに、前記プロセッサクロスコールパスが含まれていれば、そのプロセッサクロスコールパスを選択し、前記プロセッサクロスコールパスが無くても前記コアクロスコールパスが含まれていれば、そのコアクロスコールパスを選択し、選択したパスを介して前記照会要求を送信する、
請求項２記載の計算機システム。
【請求項４】
前記第２の時間間隔は、前記第１の時間間隔より長い、
請求項３に記載の計算機システム。
【請求項５】
前記第２の時間間隔は、前記第１の時間間隔の整数倍である、
請求項４に記載の計算機システム。
【請求項６】
前記第２の時間間隔が変更された場合、前記制御デバイスは、変更後の前記第２の時間間隔を基に、前記第１の時間間隔を変更する、
請求項５に記載の計算機システム。
【請求項７】
或るＬＵについての前記担当通知要求は、前記或るＬＵへのパスのうちの非担当パスを介して送信され、
前記非担当パスは、前記ＬＵ担当情報を基に特定される、前記或るＬＵのＬＵ担当コア、とは異なるプロセッサコア、へのパスである、
請求項６に記載の計算機システム。
【請求項８】
前記制御デバイスは、ＬＵに関する情報を取得するための照会要求を前記ストレージ装置に送信するようになっており、前記照会要求を送信する場合、前記照会要求で指定されたＬＵへのパスに、ＬＵ担当コアとポート担当コアが異なるパスであるクロスコールパスが含まれていれば、そのクロスコールパスを選択し、選択したパスを介して前記照会要求を送信する、
請求項１記載の計算機システム。
【請求項９】
ストレージ装置にＩ／Ｏ（Input/Output）要求を送信するサーバであって、
１以上の通信インタフェースデバイスと、
記憶デバイスと、
それらに接続された制御デバイスと
を有し、
前記ストレージ装置は、前記サーバと通信可能な複数のポートと、複数のプロセッサコアと、複数のＬＵ（Logical  Unit）とを有し、
ポート毎に、ポートが受信したＩ／Ｏ要求を受けるプロセッサコアであるポート担当コアが決まっており、ＬＵ毎に、Ｉ／Ｏを担当するプロセッサコアであるＬＵ担当コアが決まっており、
前記ストレージ装置は、ＬＵ担当コアを変更する必要があるか否かを判断しその判断の結果が肯定的の場合にＬＵ担当コアを変更する処理である担当変更処理を、第１の時間間隔で行うようになっており、
前記記憶デバイスは、通信インタフェースデバイスからＬＵへのパスに関する情報をパス毎に含んだパス情報と、ＬＵ担当コアの識別情報をＬＵ毎に含んだＬＵ担当情報とを記憶し、
前記パス情報は、パスが経由するポートのポート担当コアの識別情報をパス毎に含み、
前記制御デバイスは、第２の時間間隔で、ＬＵのＬＵ担当コアの識別情報の要求である担当通知要求を前記ストレージ装置に送信することにより、ＬＵ担当コアの識別情報を前記ストレージ装置から取得し、その識別情報を前記ＬＵ担当情報に含め、
前記制御デバイスは、Ｉ／Ｏ要求を送信する場合に、
（Ａ）前記パス情報と前記ＬＵ担当情報を基に、送信対象のＩ／Ｏ要求で指定されたＬＵであるＩ／Ｏ先ＬＵへの複数のパスから、ＬＵ担当コアとポート担当コアとが同一のプロセッサコアであるパスである非クロスコールパスを選択し、
（Ｂ）前記（Ａ）で選択したパスを介して前記送信対象のＩ／Ｏ要求を送信する、
サーバ。
【請求項１０】
前記第２の時間間隔は、前記第１の時間間隔より長い、
請求項９に記載のサーバ。
【請求項１１】
前記第２の時間間隔が変更された場合、前記制御デバイスは、変更後の前記第２の時間間隔を基に、前記第１の時間間隔を変更する、
請求項９に記載のサーバ。
【請求項１２】
或るＬＵについての前記担当通知要求は、前記或るＬＵへのパスのうちの非担当パスを介して送信され、
前記非担当パスは、前記ＬＵ担当情報を基に特定される、前記或るＬＵのＬＵ担当コア、とは異なるプロセッサコア、へのパスである、
請求項９に記載のサーバ。
【請求項１３】
前記制御デバイスは、ＬＵに関する情報を取得するための照会要求を前記ストレージ装置に送信するようになっており、前記照会要求を送信する場合、前記照会要求で指定されたＬＵへのパスに、ＬＵ担当コアとポート担当コアが異なるパスであるクロスコールパスが含まれていれば、そのクロスコールパスを選択し、選択したパスを介して前記照会要求を送信する、
請求項９に記載のサーバ。
【請求項１４】
ストレージ装置のＬＵ（Logical  Unit）にデータを入出力する方法であって、
前記ストレージ装置は、前記サーバと通信可能な複数のポートと、複数のプロセッサコアと、複数のＬＵとを有し、
ポート毎に、ポートが受信したＩ／Ｏ（Input/Output）要求をサーバから受けるプロセッサコアであるポート担当コアが決まっており、ＬＵ毎に、Ｉ／Ｏを担当するプロセッサコアであるＬＵ担当コアが決まっており、
前記ストレージ装置は、ＬＵ担当コアを変更する必要があるか否かを判断しその判断の結果が肯定的の場合にＬＵ担当コアを変更する処理である担当変更処理を、第１の時間間隔で行うようになっており、
前記サーバは、第２の時間間隔で、ＬＵのＬＵ担当コアの識別情報の要求である担当通知要求を前記ストレージ装置に送信することにより、ＬＵ担当コアの識別情報を前記ストレージ装置から取得し、その識別情報を、ＬＵ担当コアの識別情報をＬＵ毎に含んだＬＵ担当情報に含め、
前記サーバは、Ｉ／Ｏ要求を送信する場合に、
（Ａ）前記ＬＵ担当情報と、パスが経由するポートのポート担当コアの識別情報を含みパスに関する情報をパス毎に含んだパス情報とを基に、送信対象のＩ／Ｏ要求で指定されたＬＵであるＩ／Ｏ先ＬＵへの複数のパスから、ＬＵ担当コアとポート担当コアとが同一のプロセッサコアであるパスである非クロスコールパスを選択し、
（Ｂ）前記（Ａ）で選択したパスを介して前記送信対象のＩ／Ｏ要求を送信する、
入出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバからストレージ装置内のＬＵ（Logical  Unit）に対するＩ／Ｏ（Input/Output）に関する。
【背景技術】
【０００２】
一般に、計算機システムは、ＬＵを有するストレージ装置と、ストレージ装置に接続されたサーバとを有する。サーバは、ストレージ装置のＬＵにデータを入出力するためのＩ／Ｏ要求を送信する。ストレージ装置は、Ｉ／Ｏ要求を受信し、そのＩ／Ｏ要求で指定されているＬＵに対し、そのＩ／Ｏ要求に従うデータを入出力する。ＬＵは、論理的な記憶デバイスであり、論理ボリュームと呼ばれることもある。ＬＵは、仮想ＬＵであっても実ＬＵであっても良い。仮想ＬＵは、例えば、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇに従うＬＵであっても良いし、ストレージ仮想化技術に従うＬＵ（ストレージ装置の外部のストレージ装置の記憶資源が仮想化されたＬＵ）であっても良い。実ＬＵは、物理的な記憶デバイス（以下、ＰＤＥＶ）に基づくＬＵである。例えば、複数のＰＤＥＶで構成されたＲＡＩＤ（Redundant  Array  of  Independent  （or  Inexpensive）  Disks）グループを基に１又は複数の実ＬＵが形成される。【０００３】
複数のプロセッサを有し、どのＬＵに対するＩ／Ｏをどのプロセッサが担当するかが決められるストレージ装置がある。このようなストレージ装置に関して、プロセッサの負荷に応じて、ＬＵを担当するプロセッサを変更する技術が知られている（例えば、特許文献１参照）。【０００４】
また、サーバからＬＵへの複数のパスが用意され、複数のパスから選択するパスを制御することにより、ネットワークの負荷や、ストレージ装置におけるポートの負荷を分散する技術も知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２６９４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のパスから選択されるパスは、例えば、ラウンドロビン方式で切り替わる。このため、ＬＵを担当するプロセッサ（又は、プロセッサコア）が決定されているストレージ装置において、サーバで選択されたパスを介してＩ／Ｏ要求を受け付けたプロセッサ（又はプロセッサコア）と、そのＩ／Ｏ要求で指定されたＬＵを担当するプロセッサ（又はプロセッサコア）とが異なるケースが生じることがある。このケースでは、いわゆるクロスコールが発生する。ここで言う「クロスコール」は、プロセッサ間（又はプロセッサコア間）でＩ／Ｏ要求が授受されること、すなわち、Ｉ／Ｏ要求を受け付けたプロセッサ（又はプロセッサコア）から、そのＩ／Ｏ要求で指定されているＬＵを担当するプロセッサ（又はプロセッサコア）に、Ｉ／Ｏ要求が転送されることである。クロスコールが発生することにより、Ｉ／Ｏ要求を授受する双方のプロセッサ（又はプロセッサコア）の性能が低下してしまう虞がある。
【課題を解決するための手段】
【０００７】
ストレージ装置は、サーバと通信可能な複数のポートと、複数のプロセッサコアと、複数のＬＵとを有する。ポート毎に、ポートが受信したＩ／Ｏ要求を受けるプロセッサコアであるポート担当コアが決まっており、ＬＵ毎に、Ｉ／Ｏを担当するプロセッサコアであるＬＵ担当コアが決まっている。ＬＵ担当コアは、動的に変更することがある。サーバは、ＬＵ担当コアの識別情報を定期的にストレージ装置から取得する。サーバは、Ｉ／Ｏ要求を送信する場合に、送信対象のＩ／Ｏ要求で指定されたＬＵであるＩ／Ｏ先ＬＵへの複数のパスから、ＬＵ担当コアとポート担当コアとが同一のプロセッサコアであるパスである非クロスコールパスを選択し、選択したパスを介して送信対象のＩ／Ｏ要求を送信する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係るストレージ装置が有するコントローラの概要を示す図である。
【図２】図２は、ＬＵへのＩ／Ｏ処理の一例を説明する図である。
【図３】図３は、コアクロスコールの一例を説明する図である。
【図４】図４は、ＣＰＵクロスコールの一例を説明する図である。
【図５】図５は、クロスコールの一例の発生を説明する図である。
【図６】図６は、実施形態に係る計算機システムの概要を説明する第１の図である。
【図７】図７は、実施形態に係る計算機システムの概要を説明する第２の図である。
【図８】図８は、実施形態に係る計算機システムの概要を説明する第３の図である。
【図９】図９は、実施形態に係る計算機システムの概要を説明する第４の図である。
【図１０】図１０は、実施形態に係る計算機システムの概要を説明する第５の図である。
【図１１】図１１は、実施形態に係る計算機システムの概要を説明する第６の図である。
【図１２】図１２は、実施形態に係る計算機システムの構成図である。
【図１３】図１３は、実施形態に係るサーバ１のパステーブルの一例を示す図である。
【図１４】図１４は、実施形態に係るサーバ２のパステーブルの一例を示す図である。
【図１５】図１５は、実施形態に係るサーバ３のパステーブルの一例を示す図である。
【図１６】図１６は、実施形態に係るサーバ１のオーナパステーブルの一例を示す図である。
【図１７】図１７は、実施形態に係るサーバ２のオーナパステーブルの一例を示す図である。
【図１８】図１８は、実施形態に係るサーバ３のオーナパステーブルの一例を示す図である。
【図１９】図１９は、実施形態に係るオーナテーブルの一例を示す図である。
【図２０】図２０は、実施形態に係るクロスコールテーブルの一例を示す図である。
【図２１】図２１は、実施形態に係るパス選択処理のフローチャートである。
【図２２】図２２は、実施形態に係るオーナパステーブル更新処理のフローチャートである。
【発明を実施するための形態】
【０００９】
実施形態を、図面を参照して説明する。なお、以下に説明する実施形態は請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
なお、以下の説明では、「ａａａテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「ａａａテーブル」を「ａａａ情報」と呼ぶことができる。
【００１１】
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」「番号」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１２】
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサ（典型的にはＣＰＵ（Central  Processing  Unit））によって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は、サーバ、ストレージ装置等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
【００１３】
まず、クロスコールを説明する。
【００１４】
図１は、ストレージ装置のコントローラの概要を説明する図である。
【００１５】
ストレージ装置は、１以上のコントローラ２１０を備える。コントローラ２１０は、複数（例えば２個）のＣＰＵコア（以下、コア）２１２Ｘ、２１２Ｙを有するＣＰＵ２１２を備えている。また、コントローラ２１０は、サーバ等の装置との通信を仲介するための複数（例えば、８個）の通信ポート（以下、ポート）２１１を有する。コントローラ２１０においては、ポートＡ〜Ｄを用いての通信処理は、コア２１２Ｘ（Ｃｏｒｅ−Ｘともいう）が担当し、ポートＥ〜Ｈを用いての通信処理は、コア２１２Ｙ（Ｃｏｒｅ−Ｙともいう）が担当するようになっている。
【００１６】
図２は、ＬＵに対するＩ／Ｏの一例を説明する図である。
【００１７】
図２には、ＬＵ２２０の一例として、ＬＵ６が示されている。ＬＵ６に対するＩ／Ｏ処理を担当するコアは、０系のコントローラ２１０ＡのＣｏｒｅ−Ｘ（コア２１２ＡＸ）である。また、ポート２１１毎に、担当するコアが決まっている。
【００１８】
ポートＡが、ＬＵ６に対するＩ／Ｏ要求を受信すると（図２（１））、ポートＡを担当するコア２１２ＡＸが、そのＩ／Ｏ要求を受ける（図２（２））。ここで、ＬＵ６を担当するコア２１２ＡＸが、Ｉ／Ｏ要求を受けたので、クロスコールは生じない。すなわち、コア２１２ＡＸは、そのＩ／Ｏ要求に従いＬＵ６に対するＩ／Ｏを実行し、そのＩ／Ｏ要求を別のコアに転送する必要が無い（図２（３））。
【００１９】
図３は、コアクロスコールの一例を説明する図である。
【００２０】
コアクロスコールとは、コア間のクロスコールである。図３においては、ＬＵ６を担当するコアは、０系のコントローラ２１０ＡのＣｏｒｅ−Ｘ（コア２１２ＡＸ）である。
【００２１】
ここで、ポートＥが、ＬＵ６を指定したＩ／Ｏ要求を受信すると（図３（１））、ポートＥを担当するコア２１２ＡＹがそのＩ／Ｏ要求を受ける（図３（２））。ここで、ＬＵ６を担当するコアは、Ｉ／Ｏ要求を受けたコア２１２ＡＹではなく、他のコア２１２ＡＸである。このため、１つのＣＰＵ２１２においてコアクロスコールが発生する。すなわち、コア２１２ＡＹからコア２１２ＡＸへＩ／Ｏ要求が渡される（図３（３））。Ｉ／Ｏ要求を受けたコア２１２ＡＸは、ＬＵ６に対してＩ／Ｏを実行する（図中（４））。このように、コアクロスコールが発生すると、Ｉ／Ｏ要求を授受するための負荷が双方のコア２１２ＡＸ及び２１２ＡＹにかかる。なお、コアクロスコールは、後述のＣＰＵクロスコールよりは、ＣＰＵに対する負荷が低い。
【００２２】
図４は、ＣＰＵクロスコールの一例を説明する図である。
【００２３】
ＣＰＵクロスコールとは、ＣＰＵ間のクロスコールである。同一のコントローラにおいてＣＰＵクロスコールが発生することもあれば、コントローラ間でＣＰＵクロスコールが発生することもある。以下の説明において、「クロスコール」という記載は、コアクロスコールとＣＰＵクロスコールのいずれも意味する。
【００２４】
図４では、ストレージ装置には、０系コントローラ２１０Ａと、１系コントローラ２１０Ｂの２つが存在し、ＬＵ６を担当するコアは、０系コントローラ２１０ＡのＣｏｒｅ−Ｘ（コア２１２ＡＸ）であり、ＬＵ７を担当するコアは、１系コントローラ２１０ＢのＣｏｒｅ−Ｙ（コア２１２ＢＹ）である。
【００２５】
０系コントローラ２１０ＡのポートＦが、ＬＵ７を指定したＩ／Ｏ要求を受信すると（図４（１））、ポートＦを担当するコア２１２ＡＹが、そのＩ／Ｏ要求を受ける（図４（２））。ここで、ＬＵ７を担当するコアは、Ｉ／Ｏ要求を受けたコア２１２ＡＹではなく、１系コントローラ２１０Ｂのコア２１２ＢＹである。このため、ＣＰＵクロスコールが発生する。すなわち、コア２１２ＡＹを有するＣＰＵから別のＣＰＵのコア２１２ＢＹにＩ／Ｏ要求が転送される（図４（３））。Ｉ／Ｏ要求を受けたコア２１２ＢＹは、ＬＵ７に対してＩ／Ｏを実行する（図４（４））。
【００２６】
一方、１系コントローラ２１０ＢのポートＡが、ＬＵ６を指定したＩ／Ｏ要求を受信すると（図４（５））、ポートＡを担当するコア２１２ＢＸが、そのＩ／Ｏ要求を受ける（図４（６））。ここで、ＬＵ６を担当するコアは、Ｉ／Ｏ要求を受けたコア２１２ＢＸではなく、０系コントローラ２１０Ａのコア２１２ＡＸである。このため、ＣＰＵクロスコールが発生する。すなわち、コア２１２ＢＸを有するＣＰＵから別のコア２１２ＡＸを有するＣＰＵにＩ／Ｏ要求が転送される（図４（７））。Ｉ／Ｏ要求を受けたコア２１２ＡＸは、ＬＵ６に対してＩ／Ｏを実行する（図４（８））。
【００２７】
上記のように、ＣＰＵクロスコールが発生すると、ＣＰＵクロスコールを実行するための負荷が双方のＣＰＵに掛かってしまう。
【００２８】
図５は、クロスコールの一例の発生を説明する図である。
【００２９】
サーバ１０００は、複数（例えば２つ）のスイッチ１５０Ａ、１５０Ｂ（ＦＣ−ＳＷ１、ＦＣ−ＳＷ２）と例えば光ファイバケーブルを介して接続され、２つのスイッチ１５０Ａ、１５０Ｂは、ストレージ装置２００と例えば光ファイバケーブルを介して接続されている。
【００３０】
同図に示すように、計算機システムにおいては、ＬＵ６へのパスとしては、例えば、サーバ１０００のＨＢＡ１、ＦＣ−ＳＷ１、０系コントローラ２１０ＡのポートＤを経由するパスと、サーバ１０００のＨＢＡ２、ＦＣ−ＳＷ２、１系コントローラ２１０ＢのポートＡを経由するパスとが用意されている。
【００３１】
サーバ１０００のＣＰＵでアプリケーションプログラム（以下、アプリケーション１１１）とマルチパス管理プログラム１０１０が実行される。アプリケーション１１１は、例えばＬＵ６を指定したＩ／Ｏ要求を発行する。マルチパス管理プログラム１０１０は、同一のＬＵ６への複数のパスから、アプリケーション１１１から発行されたＩ／Ｏ要求（ＬＵ６を指定したＩ／Ｏ要求）を経由させるパスを選択する。マルチパス管理プログラム１０１０は、例えば、ラウンドロビン方式で複数のパスから１つのパスを選択し、選択したパスを用いて、アプリケーション１１１から発行されたＩ／Ｏ要求を送信する。このため、ストレージ装置２００には、ＬＵ６を指定したＩ／Ｏ要求は、ＬＵ６への２つのパスのうちのいずれからもＩ／Ｏ要求が到達し得る。
【００３２】
ここで、ストレージ装置２００において、ＬＵ６を担当するコアは、０系コントローラ２１０ＡのＣｏｒｅ−Ｘ（コア２１２ＡＸ）である。
【００３３】
この場合には、アプリケーション１１１から発行されたＩ／Ｏ要求は、マルチパス管理プログラム１０１０に伝えられ（図５（１））、マルチパス管理プログラム１０１０により、そのＩ／Ｏ要求が経由するパスが選択される。
【００３４】
ＨＢＡ１、ＦＣ−ＳＷ１、及び０系コントローラ２１０ＡのポートＤを経由するパスを、ＬＵ６を指定したＩ／Ｏ要求が経由するパスとして選択した場合には、マルチパス管理プログラム１０１０は、Ｉ／Ｏ要求をＨＢＡ１に渡す（図５（２））。ＨＢＡ１に渡されたＩ／Ｏ要求は、ＨＢＡ１からＦＣ−ＳＷ１に送信され（図５（３））、ＦＣ−ＳＷ１から０系コントローラ２１０ＡのポートＤに送信される（図５（４））。
【００３５】
ＬＵ６を指定したＩ／Ｏ要求をポートＤが受信する、ポートＤを担当するコア２１２ＡＸが、そのＩ／Ｏ要求を受ける（図５（５））。ここで、ＬＵ６を担当するコアは、Ｉ／Ｏ要求を受けたコア２１２ＡＸであるので、クロスコールが発生せず、コア２１２ＡＸは、ＬＵ６に対してＩ／Ｏを実行する（図５（６））。
【００３６】
一方、ＨＢＡ２、ＦＣ−ＳＷ２及び１系コントローラ２１０ＢのポートＡを経由するパスを、ＬＵ６を指定したＩ／Ｏ要求が経由するパスとして選択した場合には、マルチパス管理プログラム１０１０は、そのＩ／Ｏ要求をＨＢＡ２に渡す（図５（１１））。ＨＢＡ２に渡されたＩ／Ｏ要求は、ＨＢＡ２からＦＣ−ＳＷ２に送信され（図５（１２））、ＦＣ−ＳＷ２から１系コントローラ２１０ＢのポートＡに送信される（図５（１３））。
【００３７】
１系コントローラ２１０ＢのポートＡが、ＬＵ６を指定したＩ／Ｏ要求を受信すると、ポートＡを担当するコア２１２ＢＸが、そのＩ／Ｏ要求を受ける（図５（１４））。ここで、ＬＵ６を担当するコアは、Ｉ／Ｏ要求を受けたコア２１２ＢＸではなく、コア２１２ＡＸである。このため、ＣＰＵクロスコールが発生する。すなわち、コア２１２ＢＸのＣＰＵからコア２１２ＡＸのＣＰＵにＩ／Ｏ要求が転送される（図５（１５））。Ｉ／Ｏ要求を受けたコア２１２ＡＸは、ＬＵ６に対してＩ／Ｏを実行する（図５（１６））。
【００３８】
本実施形態に係る計算機システムでは、上述したクロスコールがなるべく発生しないよう制御される。以下、その計算機システムの概要を説明する。
【００３９】
図６は、実施形態に係る計算機システムの概要を説明する第１の図である。
【００４０】
ＬＵ６へのパスとして、例えば、サーバ１００のＨＢＡ１、ＦＣ−ＳＷ１、０系コントローラ２１０ＡのポートＤを経由するパスＰ１と、サーバのＨＢＡ２、ＦＣ−ＳＷ２、１系コントローラ２１０ＢのポートＡを経由するパスＰ２とが用意されている。
【００４１】
マルチパス管理プログラム１１２は、どのＬＵをどのコントローラ及びコアが担当するかを表す情報をストレージ装置２００から取得してサーバ１００内の記憶資源（例えばメモリ）に格納しておく。マルチパス管理プログラム１１２は、当該情報に基づいて、アプリケーション１１１からのＩ／Ｏ要求で指定されたＬＵへの複数のパスから、Ｉ／Ｏ要求が経由してもクロスコールが発生することの無いパス（以下、非クロスコールパス）を選択する。同図に示す例において、ＬＵ６を指定したＩ／Ｏ要求を送信する場合には、マルチパス管理プログラム１１２は、非クロスコールパスを選択する。ＬＵ６の非クロスコールパスは、ＬＵ６へのパスＰ１及びＰ２のうち、ＬＵ６を担当するコア２１２ＡＸが担当するポートＤを経由するパスＰ１である。つまり、非クロスコールパスＰ１は、パスＰ１が経由するポートＤが受信したＩ／Ｏ要求を受けるコアとＬＵ６の担当コアとが同一であるパスである。これにより、クロスコールの発生を回避することができる。
【００４２】
図７は、実施形態に係る計算機システムの概要を説明する第２の図である。
【００４３】
アプリケーション１１１からのＩ／Ｏ要求で指定されたＬＵ２２０への複数のパスに、複数の非クロスコールパス（図７の例では、ポートＣを経由するパスＰ３、ポートＤを経由するパスＰ４）ある場合には、マルチパス管理プログラム１１２は、複数の非クロスコールパスから選択する非クロスコールパスを、ラウンドロビン方式等の所定の方式に従って違えて良い。
【００４４】
次に、ストレージ装置２００において障害が発生した場合に行われる処理の概要、及び、その障害が回復した場合に行われる処理の概要を説明する。
【００４５】
図８は、実施形態に係る計算機システムの概要を説明する第３の図である。図９は、実施形態に係る計算機システムの概要を説明する第４の図である。図１０は、実施形態に係る計算機システムの概要を説明する第５の図である。図１１は、実施形態に係る計算機システムの概要を説明する第６の図である。
【００４６】
図８に示すように、マルチパス管理プログラム１１２がパスＰ５を用いてＩ／Ｏ要求を送信する場合において、０系コントローラ２１０Ａに障害が発生した場合には、マルチパス管理プログラム１１２は、図９に示すように、１系コントローラ２１０Ｂに対してＩ／Ｏ要求を送信するパス（例えばパスＰ６）を選択する。
【００４７】
０系コントローラ２１０Ａに障害が発生した場合、ストレージ装置２００では、図９に示すように、１系コントローラ２１０Ｂのコア（例えば、コア２１２ＢＸ）が、０系コントローラ２１０Ａのコアに代わってＬＵ６の担当コアとして設定される。
【００４８】
ここで、ストレージ装置２００の０系コントローラ２１０Ａの障害が回復した場合には、図１０に示すように、負荷監視デバイス２３０により、各コントローラ（２１０Ａ、２１０Ｂ）の負荷が監視され、各コントローラの負荷を分散させるために、例えば、ＬＵ６の担当がコア２１２ＡＸに戻される。
【００４９】
担当コアが変更された直後においては、サーバ１００からパスＰ７を介してＩ／Ｏ要求が送信されているので、１系コントローラ２１０Ｂのコア２１２ＢＸがそのＩ／Ｏ要求を受信し、ＣＰＵクロスコール（コア２１２ＢＸから、ＬＵ６を担当するコア２１２ＡＸに、Ｉ／Ｏ要求が転送される）が発生する。サーバ１００は、どのＬＵに対するＩ／Ｏをどのコアが担当しているかを表す情報（以下、担当コア特定情報）を取得する。このため、サーバ１００は、ＬＵ６を担当する変更後のコアを特定する情報（コントローラ番号及びコア番号）を取得することとなる。
【００５０】
このように、変更後のコアを特定する情報を取得した後においては、マルチパス管理プログラム１１２は、図１１に示すように、ＬＵ６を指定したＩ／Ｏ要求を送信するためのパスとして、非クロスコールパスＰ８を選択することとなり、そのＩ／Ｏ要求が、ＬＵ６を担当するコア２１２ＡＸへ送信されることとなる。これにより、クロスコールが回避される。
【００５１】
次に、実施形態に係る計算機システムを詳細に説明する。
【００５２】
図１２は、実施形態に係る計算機システムの構成図である。
【００５３】
計算機システムは、１以上のサーバ１００と、１以上のストレージ装置２００と、１以上のサーバ１００及び１以上のストレージ装置２００を接続する複数のスイッチ１５０（１５０Ａ、１５０Ｂ）とを有する。サーバ１００と、スイッチ１５０とは、例えば、光ファイバケーブルにより接続されている。また、スイッチ１５０と、ストレージ装置２００とは、例えば、光ファイバケーブルにより接続されている。
【００５４】
スイッチ１５０は、例えば、ファイバチャネルに対応する機器（サーバ１００、ストレージ装置２００等）を相互に接続するスイッチである。本実施形態では、スイッチ１５０Ａ、１５０Ｂは、それぞれ複数のサーバ１００に接続されている。また、スイッチ１５０Ａは、ストレージ装置２００の０系コントローラ２１０Ａの複数のポート２１１Ａに接続されている。また、スイッチ１５０Ｂは、ストレージ装置２００の１系コントローラ２１０Ｂの複数のポート２１１Ｂに接続されている。
【００５５】
サーバ１００は、通信インタフェースデバイス、記憶デバイス及びそれらに接続された制御デバイスを有する。通信インタフェースデバイスは、例えば、ＨＢＡ（Host  Bus  Adapter）１３０である。ＨＢＡ１３０は、複数ある。記憶デバイスは、例えば、メモリ１１０である。制御デバイスは、例えば、ＣＰＵ１２０である。
【００５６】
メモリ１１０は、アプリケーション１１１と、マルチパス管理プログラム１１２と、パステーブル１１３と、オーナパステーブル１１４とを記憶する。
【００５７】
アプリケーション１１１は、所定の業務処理を実行するためのプログラムであり、業務処理に関わるデータのＩ／Ｏ要求であって、ストレージ装置２００のＬＵ２２０（厳密には、例えば、ＬＵ２２０がマウントされることにより認識されている論理記憶デバイス）に対するＩ／Ｏ要求を発行する。マルチパス管理プログラム１１２は、アプリケーション１１１からのＩ／Ｏ要求で指定されたＬＵへの複数のパスの中から１つパスを選択する機能、選択したいパスの障害を検出した際にそのパスとは別のパスを選択しそのパスを介してＩ／Ｏ要求を送信する機能、複数のパスから選択するパスを適宜に変更する機能、任意のパスを閉塞する機能等を実現する。パステーブル１１３は、ＬＵ２２０へのパスに関する情報を有する。オーナパステーブル１１４は、ＬＵ２２０を担当するコントローラ及びコアを特定する情報（担当コア特定情報）を有する。
【００５８】
ＣＰＵ１２０は、メモリ１１０に格納されているプログラムを実行することにより、各種処理を実行する。その際、適宜に、テーブル１１３及び１１４が参照される。
【００５９】
ＨＢＡ１３０は、ファイバチャネルに対応したアダプタであり、外部の装置（ストレージ装置２００等）との間での通信を仲介する。なお、サーバ１００内のＨＢＡ１３０を区別する際には、「ＨＢＡ１」、「ＨＢＡ２」と表記する場合がある。本実施形態では、ＨＢＡ１は、スイッチ１５０Ａに接続され、ＨＢＡ２は、スイッチ１５０Ｂに接続されている。
【００６０】
ストレージ装置２００は、複数のコントローラ２１０（０系コントローラ２１０Ａ、１系コントローラ２１０Ｂ）と、複数のＬＵ２２０と、負荷監視デバイス２３０と、共有メモリデバイス２４０と、複数のＰＤＥＶとを有する。複数のＰＤＥＶに基づく記憶領域が、複数のＬＵ２２０のうちのいずれかの実ＬＵであっても良いし、複数のＬＵ２２０のうちの仮想ＬＵに割り当てられる記憶領域であっても良い。
【００６１】
共有メモリデバイス２４０は、オーナテーブル２４１と、クロスコールテーブル２４２と、負荷監視制御プログラム２４３とを記憶する。オーナテーブル２４１は、ＬＵ２２０に対するＩ／Ｏ処理を担当するコアを管理するためのテーブルである。クロスコールテーブル２４２は、発生したクロスコールに関する情報を有する。負荷監視制御プログラム２４３は、定期的又は不定期的に負荷監視処理を実行するためのプログラムである。負荷監視処理は、例えば、各コントローラ２１０の負荷（例えば使用率）を特定すること、特定した負荷に応じて、ＬＵ２２０を担当するコアを変更すること、ＬＵ２２０の担当コアの変更に応じてオーナテーブル２４１を更新することを含んで良い。本実施形態では、負荷監視制御プログラム２４３は、各コアの使用率が均衡するように、どのＬＵ２２０の担当をどのコアにするかを決定する。
【００６２】
負荷監視デバイス２３０は、ＣＰＵ２３１を有する。なお、ＣＰＵ２３１に代えて、コントローラ２１０のＣＰＵ２１２が利用されてもよい（つまり、ＣＰＵ２３１が無く、少なくとも１つのＣＰＵ２１２が、ＬＵに対するＩ／Ｏに加えて、負荷監視処理を実行しても良い）。ＣＰＵ２３１は、共有メモリデバイス２４０に格納された負荷監視制御プログラム２４３を実行することにより、負荷監視処理を実行する。
【００６３】
ＬＵ２２０は、前述したように、仮想ＬＵであっても実ＬＵであっても良い。実ＬＵは、複数のＰＤＥＶにより構成されたＲＡＩＤグループに基づくＬＵで良い。
【００６４】
同図においては、ＳＶ１（サーバ１）に提供されているＬＵ２２０として、ＬＵ０（ＬＤＥＶ００１０）と、ＬＵ１（ＬＤＥＶ００１１）と、ＬＵ２（ＬＤＥＶ００１２）とがある。ＳＶ２（サーバ２）に提供されているＬＵ２２０として、ＬＵ１０（ＬＤＥＶ００２０）、ＬＵ１１（ＬＤＥＶ００２１）、ＬＵ１２（ＬＤＥＶ００２２）とがある。また、ＳＶ３（サーバ３）に提供されているＬＵ２２０として、ＬＵ２０（ＬＤＥＶ００３０）と、ＬＵ２１（ＬＤＥＶ００３１）と、ＬＵ２２（ＬＤＥＶ００３２）とがある。なお、「ＬＤＥＶ」は、論理的な記憶デバイスであり、実質的にはＬＵと同一である。具体的には、本実施形態では、ストレージ装置は、ＬＵについて、サーバから指定される識別情報であるＬＵ番号と、ストレージ装置内部で使用される識別情報であるＬＤＥＶ番号とを有する。
【００６５】
０系コントローラ２１０Ａは、複数（例えば、Ａ〜Ｈまでの８個）のポート２１１Ａと、ＣＰＵ２１２Ａとを有する。なお、１系コントローラ２１０Ｂも、０系コントローラ２１０Ａと同様な構成をしているので、ここでは、説明を省略する。
【００６６】
ポート２１１Ａは、ファイバチャネルに対応するポート（ＣＨＡポート）であり、他の装置との通信を仲介する。ここで、複数のポートを区別して説明する場合には、ポートＡ、Ｂ、・・、Ｈと表記する場合がある。
【００６７】
ＣＰＵ２１２Ａは、複数のコア２１２ＡＸ、コア２１２ＡＹを有する。なお、各コア２１２ＡＸ、２１２ＡＹを、それぞれ「Ｃｏｒｅ−Ｘ」、「Ｃｏｒｅ−Ｙ」と表記する場合がある。コア２１２ＡＸ、コア２１２ＡＹは、それぞれ独立して動作可能であり、例えば、ポート２１１Ａを用いての通信処理、ＬＵ２２０に対するＩ／Ｏを実行する。本実施形態では、各コアについて、担当するポートと、担当するＬＵが定められる。言い換えれば、ポート毎に、ポートが受信したＩ／Ｏ要求を受けることになるコアであるポート担当コアが定められており、ＬＵ毎に、ＬＵに対するＩ／Ｏを実行するコアであるＬＵ担当コアが定められる。具体的には、ポートＡ〜Ｄのポート担当コアは、コア２１２ＡＸであり、ポートＥ〜Ｈのポート担当コアは、コア２１２ＡＹである。
【００６８】
各コア２１２ＡＸ、２１２ＡＹは、ＰＤＥＶと通信可能に接続されており、ＬＵに対するＩ／Ｏの際に、Ｉ／Ｏ先のＬＵ領域（ＬＵにおける領域）に対応する物理記憶領域（ＰＤＥＶにおける記憶領域）を有するＰＤＥＶに、Ｉ／Ｏ要求を送信する。ただし、本実施形態においては、Ｉ／Ｏ先のＬＵ２２０に対して、そのＬＵ２２０のＬＵ担当コアがＩ／Ｏを実行する。ＬＵ担当コアは、負荷監視デバイス２３０の制御により変更可能である。
【００６９】
図１３は、実施形態に係るサーバ１のパステーブルの一例を示す図である。図１４は、実施形態に係るサーバ２のパステーブルの一例を示す図である。図１５は、実施形態に係るサーバ３のパステーブルの一例を示す図である。なお、サーバ１、サーバ２、サーバ３のパステーブルの構成は同様であり、パステーブルに格納される情報は、それぞれのサーバに対応する情報である。
【００７０】
パステーブル１１３は、パス毎に、下記の情報、
（＊）パスを一意に識別するＩＤであるパスＩＤ１１３ａ、
（＊）パスが経由するポートを有するストレージ装置２００のベンダ名を表すベンダ名１１３ｂ、
（＊）パスが経由するポートを有するストレージ装置２００の製品名を表す製品名１１３ｃ、
（＊）パスが経由するポートを有するストレージ装置２００の製品番号を表す製造番号１１３ｄ、
（＊）パスに繋がるＬＵ２２０のＬＵ番号であるＬＵ番号１１３ｅ、
（＊）パスに繋がるＬＵ２２０のＬＤＥＶ番号であるＬＤＥＶ番号１１３ｆ、
（＊）パスのステータスを表すパスステータス１１３ｇ、
（＊）パスが経由するポートの番号であるＣＨＡポート１１３ｈ、
（＊）パスが経由するポートのポート担当コアを有するコントローラの番号である受付コントローラ番号１１３ｉ、及び、
（＊）パスが系有するポートのポート担当コアの番号であるポート担当コア番号１１３Ｊ、
を有する。パスステータス１１３ｇの値としては、例えば、パスが使用可能であることを示す「Ｏｎｌｉｎｅ」と、パスが使用不可であることを示す「Ｏｆｆｌｉｎｅ」とがある。また、ポート担当コア番号１１３Ｊの値としては、例えば、Ｃｏｒｅ−Ｘを意味する「Ｘ」と、Ｃｏｒｅ−Ｙを意味する「Ｙ」がある。
【００７１】
ここで、パステーブル１１３が有する各種情報を収集する方法の一例を説明する。
【００７２】
例えば、サーバ１００の起動時などの所定のケースにおいて、サーバ１００の図示しないＯＳ（Operating   System）が、ＨＢＡ１３０から、ストレージ装置２００が有する各ポートに、ＬＵ一覧情報の取得要求を送信する。その取得要求に対する応答として、ＬＵ一覧情報を含んだ応答が、ストレージ装置２００からサーバ１００に送られる。ＬＵ一覧情報には、取得要求を受信したポートに関連付けられているＬＵに関する情報（ベンダ名、製品名、製品番号、ＬＵ番号、ＬＤＥＶ番号等が含まれた情報）が含まれている。次いで、マルチパス管理プログラム１１２が、取得されたＬＵ一覧情報が有するＬＵ番号を含んだ照会要求（例えばＩｎｑｕｉｒｙコマンド）を送信する。照会要求に対する応答として、照会要求を受けたポートのポート担当コアの識別情報（受付コントローラ番号とポート担当コア番号）と、照会要求が含むＬＵ番号から識別されるＬＵのＬＵ担当コアの識別情報とを含んだ応答が、ストレージ装置２００からサーバ１００に送られる。マルチパス管理プログラム１１２が、ＬＵ一覧情報に含まれる情報と、照会要求の応答に含まれる情報をパステーブル１１３に格納する。なお、マルチパス管理プログラム１１２は、照会要求で指定されたＬＵへの複数のパスにクロスコールパス及び非クロスコールパスが含まれている場合、クロスコールパスを選択し、クロスコールパスを介して照会要求を取得する。非クロスコールパスは、Ｉ／Ｏ要求の送信の際に優先的に使用されるからである。クロスコールパスとは、クロスコールが発生するパスである。具体的には、クロスコールパスとしては、ＬＵ担当コアとポート担当コアとが異なるが同一のＣＰＵにあるコアクロスコールパスと、ＬＵ担当コアとポート担当コアとが異なるＣＰＵにあるＣＰＵクロスコールパスとがある。非クロスコールパスとは、ＬＵ担当コアとポート担当コアとが同一であるパスである。
【００７３】
パステーブル１１３の例によると、ストレージ装置の識別情報は、ベンダ名、製品名、及び製造番号で構成される。なお、ストレージ装置２００は、ベンダ名が「ＨＩＴ」であり、製品名が「６００Ｆ」であり、製品番号が「９３０００８０」である。また、図１３に示すパステーブル１１３の例によると、ＬＵ０へのパスとしては、パスＩＤ「００００１」、「００００４」、「００００７」、「０００１０」で示される４つのパスがある。例えば、パス「００００１」は、ポート「０Ａ」（０系コントローラ２１１ＡのポートＡ）を経由するパスであり、ポート「０Ａ」のポート担当コアは、０系コントローラ２１０Ａのコア２１２ＡＸである。また、パス「００００７」は、ポート「１Ａ」（１系コントローラ２１１ＢのポートＡ）を経由するパスであり、ポート「１Ａ」のポート担当コアは、１系コントローラ２１０Ｂのコア２１２ＢＸである。
【００７４】
図１６は、実施形態に係るサーバ１のオーナパステーブルの一例を示す図である。図１７は、実施形態に係るサーバ２のオーナパステーブルの一例を示す図である。図１８は、実施形態に係るサーバ３のオーナパステーブルの一例を示す図である。なお、サーバ１、サーバ２、サーバ３のオーナパステーブルの構成は同様であり、オーナパステーブルに格納される情報は、それぞれのサーバに対応する情報となっている。
【００７５】
オーナパステーブル１１４は、パス毎に、下記の情報、
（＊）ストレージ装置２００のベンダ名を表すベンダ名１１４ａ、
（＊）ストレージ装置２００の製品名を表す製品名１１４ｂ、
（＊）ストレージ装置２００の製品番号を表す製品番号１１４ｃ、
（＊）パスに繋がるＬＵのＬＤＥＶ番号を表すＬＤＥＶ番号１１４ｄ、
（＊）パスが繋がるＬＵのＬＵ担当コアを有するコントローラ（オーナコントローラ）の番号を表すコントローラ番号１１４ｅ、
（＊）パスが繋がるＬＵのＬＵ担当コアの番号を表すＬＵ担当コア番号１１４ｆ、及び、及び、
（＊）パス選択処理（図２１参照）のステップＳ２以降の処理によるパス選択の実行を有効とするか、又は無効とするかの情報を表すＩ／Ｏパスコントロール１１４ｇ、
を有する。例えば、サーバ１００における入力装置を用いて有効又は無効の設定情報が指定されると、マルチパス管理プログラム１１２が、当該指定された設定情報を、オーナパステーブル１１４に、Ｉ／Ｏパスコントロール１１４ｇとして格納する。なお、設定情報は、個々のＬＵについて指定されても良いし、複数のＬＵについての共通の情報として指定されても良い。
【００７６】
ここで、オーナパステーブル１１４及びパステーブル１１３によると、クロスコールが発生しないパスを特定することができる。例えば、サーバ１が記憶する図１６に示すオーナパステーブル１１４及び図１３に示すパステーブル１１３によると、パスＩＤが「００００１」、「００００５」、「００００９」のパスを用いてＩ／Ｏ要求を送信する場合には、ＬＵ担当コアとポート担当コアが同じなので、コアクロスコール及びＣＰＵクロスコールのいずれも発生しないことがわかる。同様に、サーバ２が記憶する図１７に示すオーナパステーブル１１４及び図１４に示すパステーブル１１３によると、パスＩＤが「００００２」、「００００６」、「０００１０」のパスを用いてＩ／Ｏ要求を送信する場合には、ＬＵ担当コアとポート担当コアが同じなので、コアクロスコール及びＣＰＵクロスコールのいずれも発生しないことがわかる。また、サーバ３が記憶する図１８に示すオーナパステーブル１１４及び図１５に示すパステーブル１１３によると、パスＩＤが「００００３」、「００００７」、「０００１１」のパスを用いてＩ／Ｏ要求を送信する場合には、ＬＵ担当コアとポート担当コアが同じなので、コアクロスコール及びＣＰＵクロスコールのいずれも発生しないことがわかる。
【００７７】
図１９は、実施形態に係るオーナテーブルの一例を示す図である。
【００７８】
オーナテーブル２４１は、ＬＵ毎に、下記の情報、
（＊）ＬＵのＬＤＥＶ番号を表すＬＤＥＶ番号２４１ａ、
（＊）ＬＵのＬＵ担当コアを有するコントローラの番号を表すコントローラ番号２４１ｂ、及び、
（＊）ＬＵのＬＵ担当コアの番号を表すＬＵ担当コア番号２４１ｃ、
を有する。
【００７９】
オーナテーブル２４１によると、例えば、ＬＵ「００１０」は、コントローラ「０」（０系コントローラ２１０Ａ）のコア「Ｘ」（コア２１２ＡＸ）によりＩ／Ｏが実行されることがわかる。
【００８０】
図２０は、実施形態に係るクロスコールテーブルの一例を示す図である。
【００８１】
クロスコールテーブル２４２は、実行されたクロスコール毎に、下記の情報、
（＊）クロスコールを一意に示す番号である受付番号２４２ａ、
（＊）クロスコールが発生したＩ／Ｏ要求で指定されたＬＵ２２０のＬＤＥＶ番号を表すＬＤＥＶ番号２４２ｂ、
（＊）クロスコールが発生したＩ／Ｏ要求を受け付けたコントローラの番号である受付コントローラ番号２４２ｃ、
（＊）クロスコールが発生したＩ／Ｏ要求を受け付けたポート担当コアの番号を表すポート担当コア番号２４２ｄ、
（＊）クロスコールが発生したＩ／Ｏ要求で指定されたＬＵ２２０に対するＩ／Ｏを実行したコアを有するコントローラの番号を表す処理コントローラ番号２４２ｅ、及び、
（＊）クロスコールが発生したＩ／Ｏ要求で指定されたＬＵ２２０に対するＩ／Ｏを実行したコアの番号を表す処理ＬＵ担当コア番号２４２ｆ、
を有する。
【００８２】
クロスコールテーブル２４２によると、クロスコール「０００００１」は、Ｉ／Ｏ先がＬＵ「００１０」であり、Ｉ／Ｏ要求が、１系コントローラ２１０Ｂのコア２１２ＢＹにより受け付けられ、０系コントローラ２１０Ａのコア２１２ＡＸによりＩ／Ｏが実行されたことがわかる。このことは、コア２１２ＡＸによるＩ／Ｏの結果は、コア２１２ＢＹに返されて、コア２１２ＢＹにより、Ｉ／Ｏ要求の送信元に送信されることも意味している。つまり、クロスコールテーブル２４２は、クロスコールに従いＩ／Ｏ要求が流れたルートと同じルートで応答を返すために使用される。
【００８３】
次に、本実施形態における計算機システムで行われる処理を説明する。
【００８４】
まず、ストレージ装置２００におけるコア２１２ＡＸ、２１２ＡＹ、２１２ＢＸ、２１２ＢＹのオーナテーブル２４１及びクロスコールテーブル２４２を用いた処理を説明する。
【００８５】
ポート担当コア（例えば、２１２ＡＸ、２１２ＡＹ、２１２ＢＸ及び２１２ＢＹのいずれか）は、担当するポート（２１１Ａ又は２１１Ｂ）からＩ／Ｏ要求を受けた場合、オーナテーブル２４１を参照し、Ｉ／Ｏ先ＬＵ（Ｉ／Ｏ要求で指定されたＬＵ）２２０のＬＵ担当コア（当該ＬＵ２２０に対するＩ／Ｏを担当するコントローラのコア）を特定する。
【００８６】
この結果、特定されたＬＵ担当コアがポート担当コアである場合には、当該ポート担当コアは、Ｉ／Ｏ先ＬＵ２２０に対してＩ／Ｏを実行する。一方、特定されたＬＵ担当コアが当該ポート担当コアでない場合には、当該ポート担当コアは、下記の処理、
（＊）クロスコールテーブル２４２に新たなレコードを追加する、
（＊）当該レコードに、受付コントローラ番号２４２ｃとして、当該ポート担当コアを有するコントローラの番号を設定する、
（＊）当該レコードに、ポート担当コア番号２４２ｄとして、当該ポート担当コアの番号を設定する、
（＊）当該レコードに、処理コントローラ番号２４２ｅとして、特定されたＬＵ担当コアを有するコントローラの番号を設定する、
（＊）当該レコードに、処理ＬＵ担当コア番号２４２ｆとして、特定されたＬＵ担当コアの番号を設定する、
（＊）受け付けたＩ／Ｏ要求を、特定されたＬＵ担当コアに渡す、
を行う。
【００８７】
Ｉ／Ｏ要求を受け取ったＬＵ担当コアは、Ｉ／Ｏ要求に従うＩ／ＯをＩ／Ｏ先ＬＵ２２０に対して実行する。ＬＵ担当コアは、クロスコールテーブル２４２を参照し、当該Ｉ／Ｏ要求の転送元のポート担当コアに対して処理結果を渡す。処理結果を受け取ったコアは、そのコアが担当するポート（Ｉ／Ｏ要求を受信したポート）を介して、Ｉ／Ｏ要求の送信元のサーバ１００に、処理結果を含む応答を送信する。
【００８８】
次に、サーバ１００の処理について説明する。
【００８９】
図２１は、実施形態に係るパス選択処理のフローチャートである。
【００９０】
パス選択処理は、サーバ１００のマルチパス管理プログラム１１２が、アプリケーション１１１からＩ／Ｏ要求を受けた場合に実行される。
【００９１】
マルチパス管理プログラム１１２は、オーナパステーブル１１４から、Ｉ／Ｏ先ＬＵ（Ｉ／Ｏ要求で指定されたＬＵ）のＬＵ番号に対応するＬＤＥＶ番号が一致するレコードを検索し、当該レコードから、コントローラ番号とＬＵ担当コア番号とを取得する（ステップＳ１）。なお、ステップＳ２以降の処理は、当該レコードのＩ／Ｏパスコントロール１１４ｇの値が有効（ＯＮ）である場合に実行される。当該レコードのＩ／Ｏパスコントロール１１４ｇの値が無効（ＯＦＦ）である場合には、マルチパス管理プログラム１１２は、例えば、パステーブル１１３のパスステータス１１３ｇがＯｎｌｉｎｅであるレコードであり、且つ、Ｉ／Ｏ先ＬＵのＬＤＥＶ番号が一致するレコードが示すパスを、ラウンドロビン方式等の所定のルールに従ってパスを選択する。
【００９２】
ステップＳ２では、マルチパス管理プログラム１１２は、パステーブル１１３に、下記全ての条件を満たすレコード、
（＊）パスステータス１１３ｇがＯｎｌｉｎｅである、
（＊）Ｉ／Ｏ先ＬＵに対応するベンダ名、製品番号、及びＬＤＥＶ番号と一致するベンダ名１１３ｂ、製品番号１１３ｃ、及びＬＤＥＶ番号１１３ｄを有する、
（＊）ステップＳ１で取得したコントローラ番号及びＬＵ担当コア番号と一致するコントローラ番号１１３i及びＬＵ担当コア番号１１３ｊを有する、
があるか否かを判断する。
【００９３】
ステップＳ２で、一致するレコードがある場合（ステップＳ２でＹｅｓ）には、当該パスが、非クロスコールパス（Ｉ／Ｏ先ＬＵのＬＵ担当コアと、当該パスが経由するポートのポート担当コアとが同一であるパス）であることを意味している。このため、マルチパス管理プログラム１１２は、当該パスを、Ｉ／Ｏ要求を送信する際に使用するパスとして選択する（ステップＳ５）。この後、マルチパス管理プログラム１１２は、当該パスを介してＩ／Ｏ要求を送信する。これにより、そのＩ／Ｏ要求の処理の際にクロスコールが発生することを回避することができる。
【００９４】
一方、ステップＳ２で、一致するレコードがない場合（ステップＳ２でＮｏ）には、マルチパス管理プログラム１１２は、パステーブル１１３に、下記全ての条件を満たすレコード、
（＊）パスステータス１１３ｇがＯｎｌｉｎｅである、
（＊）Ｉ／Ｏ先ＬＵに対応するベンダ名、製品番号、及びＬＤＥＶ番号と一致するベンダ名１１３ｂ、製品番号１１３ｃ、及びＬＤＥＶ番号１１３ｄを有する、
（＊）ステップＳ１で取得したコントローラ番号と一致するコントローラ番号１１３iを有する、
があるか否かを判断する（ステップＳ３）。
【００９５】
ステップＳ３で、一致するレコードがある場合（ステップＳ３でＹｅｓ）には、当該パスが、コアクロスコールパス（Ｉ／Ｏ先ＬＵのＬＵ担当コアと、当該パスが経由するポートのポート担当コアは異なるが、それらのコアが同一のＣＰＵ内にあるパス）であることを意味している。このため、マルチパス管理プログラム１１２は、当該パスを、Ｉ／Ｏ要求を送信する際に使用するパスとして選択する（ステップＳ５）。この後、マルチパス管理プログラム１１２は、当該パスを介してＩ／Ｏ要求を送信する。これにより、Ｉ／Ｏ要求を送信した場合には、ストレージ装置２００においては、コアクロスコールが発生するものの、それよりも負荷が高いＣＰＵクロスコールが発生することを回避することができる。
【００９６】
一方、ステップＳ３で、一致するレコードがない場合（ステップＳ３でＮｏ）には、マルチパス管理プログラム１１２は、パステーブル１１３に、下記全ての条件を満たすレコード、
（＊）パスステータス１１３ｇがＯｎｌｉｎｅである、
（＊）Ｉ／Ｏ先ＬＵに対応するベンダ名、製品番号、及びＬＤＥＶ番号と一致するベンダ名１１３ｂ、製品番号１１３ｃ、及びＬＤＥＶ番号１１３ｄを有する、
があるか否かを判断する（ステップＳ４）。
【００９７】
ステップＳ４で、一致するレコードがある場合（ステップＳ４でＹｅｓ）には、マルチパス管理プログラム１１２は、当該パスを、Ｉ／Ｏ要求を送信する際に使用するパスとして選択する（ステップＳ５）。この後、マルチパス管理プログラム１１２は、当該パスを利用してＩ／Ｏ要求を送信する。これにより、Ｉ／Ｏ要求を送信した場合には、ストレージ装置２００においては、ＣＰＵクロスコールが発生することとなる。
【００９８】
一方、ステップＳ４で、一致するレコードがない場合（ステップＳ４でＮｏ）には、Ｉ／Ｏ先ＬＵ２２０へのパスが存在しないので、マルチパス管理プログラム１１２は、Ｉ／Ｏ要求の送信元のアプリケーション１１１にエラーを応答する（ステップＳ６）。
【００９９】
上記したパス選択処理によると、非クロスコールパスが優先的に特定且つ選択され、非クロスコールパスが無ければ、コアクロスコールパスが優先的に特定且つ選択され、非クロスコールパス及びコアクロスコールパスが無ければ、ＣＰＵコアクロスコールパスが選択される。
【０１００】
図２２は、実施形態に係るオーナパステーブル更新処理のフローチャートである。
【０１０１】
オーナパステーブル更新処理は、例えば、アプリケーション１１１の実行時等に実行される。
【０１０２】
マルチパス管理プログラム１１２は、所定の監視時間（第２の時間間隔）が経過するか、又は、オーナパステーブル更新処理の終了イベントが発生するまで処理を休止し（ステップＳ１１）、監視時間の経過、又は処理終了イベントが発生した場合には、監視時間が経過したか否かを判断する（ステップＳ１２）。ここで、監視時間は、例えば、次のように決定される。すなわち、ストレージ装置２００が、各ＬＵについて、第１の時間間隔で、担当変更処理（ＬＵのＬＵ担当コアを変更する必要があるか否かを判断しその判断の結果が肯定的の場合にそのＬＵのＬＵ担当コアを変更する処理を、行うようになっている。この場合、監視時間（第２の時間間隔）は、第１の時間間隔より長い、例えば、第１の時間間隔の整数倍（例えば３倍以上）で良い。また、担当変更処理の実行間隔である第１の時間間隔は、ストレージ装置２００の入出力コンソールを介して変更されて良い。変更後の第１の時間間隔は、ストレージ装置２００からサーバ１００に通知されても良いし、サーバ１００からストレージ装置２００に問合せされても良い。サーバ１００のマルチパス管理プログラム１１２は、変更後の第１の時間間隔を基に監視時間（第２の時間間隔）を変更して良い。
【０１０３】
監視時間が経過した場合（ステップＳ１２でＹｅｓ）には、マルチパス管理プログラム１１２は、ストレージ装置２００からＬＵ２２０毎のオーナコントローラ番号及びオーナＬＵ担当コア番号を取得する（ステップＳ１３）。例えば、マルチパス管理プログラム１１２は、Ｉｎｑｕｉｒｙコマンド（ＳＣＳＩリクエスト）に、ストレージ装置２００で管理されているＬＵのＬＵ番号を含めてストレージ装置２００に送信するようにすればよい。ストレージ装置２００がこのコマンドを受信した場合に、コマンドを受信したＣＰＵコアが、コマンド内のＬＵ番号に対応するＬＤＥＶ番号を特定し、オーナテーブル２４１から、対応するＬＵ２２０のオーナコントローラ番号及びオーナＬＵ担当コア番号を取得して、コマンドに対する応答中のベンダユニークフィールドに、取得したオーナコントローラ番号及びオーナＬＵ担当コア番号を登録し、その応答を、マルチパス管理プログラム１１２に送信するようにすればよい。
【０１０４】
ここで、Ｉｎｑｕｉｒｙコマンドを経由させるパスとしてマルチパス管理プログラム１１２により選択されるパスは、Ｉｎｑｕｉｒｙコマンド内のＬＵ番号に対応するＬＵが指定されたＩ／Ｏ要求が経由可能ないずれのパスでも良い。当該Ｉ／Ｏ要求が経由可能な複数のパスのうち、ＣＰＵクロスコールパスが優先的に特定且つ選択され、ＣＰＵクロスコールパスが無ければコアクロスコールパスが優先的に特定且つ選択され、ＣＰＵクロスコールパス及びコアクロスコールパスのいずれも無ければ非クロスコールパスが選択されても良い。このようにすると、Ｉｎｑｕｉｒｙコマンド内のＬＵ番号に対応したＬＵ２２０を指定したＩ／Ｏ要求の処理性能の低下の軽減が期待できる。
【０１０５】
次いで、マルチパス管理プログラム１１２は、取得したオーナコントローラ番号及びオーナＬＵ担当コア番号をオーナパステーブル１１３の対応するＬＵ２２０のレコードに格納し（ステップＳ１４）、処理をステップＳ１１に進める。これにより、オーナパステーブル１１３を最新の情報に更新することができる。
【０１０６】
一方、監視時間の経過でない場合（ステップＳ１２でＮｏ）には、マルチパス管理プログラム１１２は、処理終了イベントであるか否かを判断し（ステップＳ１５）、処理終了イベントである場合（ステップＳ１５でＹｅｓ）には、マルチパステーブル更新処理を終了する一方、処理終了イベントでない場合（ステップＳ１５でＮｏ）には、処理をステップＳ１１に進める。
【０１０７】
以上、一実施形態に基づいて説明したが、本発明は上述した実施の形態に限られず、他の様々な態様に適用可能である。
【０１０８】
例えば、上記実施形態では、複数のコアを有するＣＰＵを複数備えるストレージ装置を例に挙げて説明していたが、本発明はこれに限られず、例えば、１つのコアを有するＣＰＵを複数備えるストレージ装置であってもよく、また、複数のコアを有するＣＰＵを１つ備えるストレージ装置であってもよい。
【０１０９】
また、上記実施形態では、サーバ１００がストレージ装置２００に対してポーリングを行うことにより、ＬＵ担当コアとそれを有するコントローラのそれぞれの番号を含んだ情報を取得するようにしていたが、例えば、ストレージ装置が、ＬＵ担当コアを変更した際に、変更後のＬＵ担当コアとそれを有するコントローラのそれぞれの番号を含んだ情報をサーバ１００に送信するようにし、サーバ１００において受信した情報に基づいてオーナパステーブル１１４が更新されてもよい。
【０１１０】
また、上記実施形態では、Ｉ／Ｏ要求が経由するパスを介してＬＵ担当コアの識別情報（例えばコントローラの番号及びＬＵ担当コアの番号）が取得されるが、例えば、ストレージ装置２００とサーバ１００とが、ファイバチャネルに従う通信が行われる通信ネットワークとは別の通信ネットワークにも接続され、別の通信ネットワークを介して、ＬＵ担当コアの識別情報を取得するためのＩｎｑｕｉｒｙコマンドやその応答（ＬＵ担当コアの識別情報を含んだ応答）が送受信されて良い。
【符号の説明】
【０１１１】
１００…サーバ、２００…ストレージ装置
【図１】
2013118243.tif 000003
【図２】
2013118243.tif 000004
【図３】
2013118243.tif 000005
【図４】
2013118243.tif 000006
【図５】
2013118243.tif 000007
【図６】
2013118243.tif 000008
【図７】
2013118243.tif 000009
【図８】
2013118243.tif 000010
【図９】
2013118243.tif 000011
【図１０】
2013118243.tif 000012
【図１１】
2013118243.tif 000013
【図１２】
2013118243.tif 000014
【図１３】
2013118243.tif 000015
【図１４】
2013118243.tif 000016
【図１５】
2013118243.tif 000017
【図１６】
2013118243.tif 000018
【図１７】
2013118243.tif 000019
【図１８】
2013118243.tif 000020
【図１９】
2013118243.tif 000021
【図２０】
2013118243.tif 000022
【図２１】
2013118243.tif 000023
【図２２】
2013118243.tif 000024
【国際調査報告】
2013118243.tif 000025
2013118243.tif 000026
2013118243.tif 000027
2013118243.tif 000028