(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、
第１の物理ストレージノードと、
相互に接続される複数の第２の物理ストレージノードと、
前記第１および複数の第２の物理ストレージノードを管理する管理計算機と、
を備え、
前記複数の第２の物理ストレージノードは同一の識別子でもって前記ホスト計算機に応答して仮想ストレージシステムを提供し、
前記第１の物理ストレージノードから前記仮想ストレージシステムへ移行する際に、
前記管理計算機は、前記第１および複数の第２の物理ストレージノードの構成情報および性能情報と前記第１の物理ストレージノードが提供するボリュームの負荷情報を基に、前記第２の物理ストレージノード相互間の転送経路の帯域の範囲内に収まることを条件にして前記第２の物理ストレージノードから移行先としてリソースを選択する
ことを特徴とするストレージシステムの移行方式。
【請求項２】
請求項１に記載のストレージシステムの移行方式であって、
前記構成情報および前記性能情報は、前記第１および複数の第２の物理ストレージノードが有するポート、ＣＰＵ、キャッシュおよび記憶媒体に関する情報であり、
前記負荷情報は、前記第１の物理ストレージノードが提供するボリュームを構成する物理ストレージノードが有するポート、ＣＰＵ、キャッシュ容量および記憶媒体容量の各使用量である
ことを特徴とするストレージシステムの移行方式。
【請求項３】
請求項２に記載のストレージシステムの移行方式であって、
前記ポート、ＣＰＵ、キャッシュおよび記憶媒体に関する性能情報から、当該移行による前記それぞれの使用量分を減算する
ことを特徴とするストレージシステムの移行方式。
【請求項４】
請求項１に記載のストレージシステムの移行方式であって、
前記第２の物理ストレージノード相互間の転送経路の帯域の範囲を、予めまたは任意に設定する閾値に応じた前記転送経路の帯域の使用率を用いて算出する
ことを特徴とするストレージシステムの移行方式。
【請求項５】
請求項１に記載のストレージシステムの移行方式であって、
前記管理計算機は、前記第１の物理ストレージノードから前記仮想ストレージシステム内の単一の前記第２の物理ストレージノードへ移行可能であれば、当該移行を優先して実行する
ことを特徴とするストレージシステムの移行方式。
【請求項６】
請求項１から５のいずれか一項に記載のストレージシステムの移行方式であって、
前記仮想ストレージシステムは、論理ボリュームの複製およびスナップショットの少なくとも一つの機能を提供し、
前記第１の物理ストレージノードから前記仮想ストレージシステムへ移行する際に用いる前記第１の物理ストレージノードが提供するボリュームの負荷情報として、前記論理ボリュームの複製および前記スナップショットの少なくとも一つの機能を実行するときに用いたボリュームに関する負荷情報を加える
ことを特徴とするストレージシステムの移行方式。
【請求項７】
請求項１から５のいずれか一項に記載のストレージシステムの移行方式であって、
前記第２の物理ストレージノード相互間の接続態様が数珠繋ぎで連結されている場合には、前記リソースを割り当てるに当たり、さらに、経由する前記第２の物理ストレージノードの数が少なくなる割り当てとする
ことを特徴とするストレージシステムの移行方式。
【請求項８】
請求項１から５のいずれか一項に記載のストレージシステムの移行方式であって、
前記第１の物理ストレージノードおよび前記複数の第２の物理ストレージノードを構成する記憶媒体ユニットへのＩ／Ｏ命令に係る転送性能を、前記リソースを割り当てる判断の基にする前記性能情報に加える
ことを特徴とするストレージシステムの移行方式。
【請求項９】
第１の物理ストレージノードおよび複数の第２の物理ストレージノードを管理する管理計算機と、
前記複数の第２の物理ストレージノードから同一の識別子でもってホスト計算機に応答して提供される仮想ストレージシステムと、
を有し
前記第１の物理ストレージノードから前記仮想ストレージシステムへ移行する際に、
前記管理計算機は、
前記第１および複数の第２の物理ストレージノードの構成情報および性能情報を取得する第１のステップと、
前記第１の物理ストレージノードが提供するボリュームの負荷情報を取得する第２のステップと、
前記構成情報、前記性能情報および前記負荷情報を基に、前記第２の物理ストレージノード相互間の転送経路の帯域の範囲内に収まることを条件にして前記第２の物理ストレージノードから移行先としてリソースを選択する第３のステップと、を有する
ことを特徴とするストレージシステムの移行方法。
【請求項１０】
請求項９に記載のストレージシステムの移行方法であって、
前記構成情報および前記性能情報は、前記第１および複数の第２の物理ストレージノードが有するポート、ＣＰＵ、キャッシュおよび記憶媒体に関する情報であり、
前記負荷情報は、前記第１の物理ストレージノードが提供するボリュームを構成する物理ストレージノードが有するポート、ＣＰＵ、キャッシュ容量および記憶媒体容量の各使用量である
ことを特徴とするストレージシステムの移行方法。
【請求項１１】
請求項１０に記載のストレージシステムの移行方法であって、
前記管理計算機は、
前記ポート、ＣＰＵ、キャッシュおよび記憶媒体に関する前記性能情報から、当該移行による前記それぞれの使用量分を減算する第４のステップをさらに有する
ことを特徴とするストレージシステムの移行方法。
【請求項１２】
請求項９に記載のストレージシステムの移行方法であって、
前記第３のステップは、前記第２の物理ストレージノード相互間の転送経路の帯域の範囲を、予めまたは任意に設定する閾値に応じた前記転送経路の帯域の使用率を用いて算出する過程を含む
ことを特徴とするストレージシステムの移行方法。
【請求項１３】
請求項９に記載のストレージシステムの移行方法であって、
前記管理計算機は、
前記第３のステップに先立ち、前記第１の物理ストレージノードから前記仮想ストレージシステム内の単一の前記第２の物理ストレージノードへ移行可能であれば、当該移行を優先して実行するステップをさらに有する
ことを特徴とするストレージシステムの移行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピュータがアクセスするデータを格納するストレージシステムとこのストレージシステムを管理する管理コンピュータからなる計算機システムにおけるストレージシステムの移行方式および移行方法に関する。
【背景技術】
【０００２】
ホストコンピュータとネットワークを介して接続されたストレージシステムは、データを記憶する記憶デバイスとして、例えば、複数の磁気ディスクを備えるものである。このストレージシステムは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）の技術によって、複数の記憶デバイスの記憶領域を冗長化し、ＲＡＩＤグループ（パリティグループとも呼ばれる）を構成する。そして、ストレージシステムは、ホストコンピュータに対して、ＲＡＩＤグループの一部からホスト計算機が要求する容量の記憶領域を論理ボリュームという形で提供する。【０００３】
また、複数の物理的なストレージシステムを束ねて、ホストコンピュータに対して１台の仮想的なストレージシステムとして提供する技術がある（例えば、特許文献１）。この技術により、複数の物理的なストレージシステムを１台のストレージシステムとして管理することが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開２００８／００３４００５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの物理的なストレージシステム（移行元ストレージシステム）から、複数の物理的なストレージシステムからなる仮想的なストレージシステム（移行先ストレージシステム）へ移行する場合、移行先ストレージシステムを構成する各物理的なストレージシステムのリソース（ポート、キャッシュ、ボリュームなど）の空き状況によって、移行後に利用されるリソースの配置が変化する。１台の物理的なストレージシステムのリソースのみを利用する場合もあれば、異なる物理的なストレージシステムに分散したリソースを利用する場合もある。【０００６】
このストレージシステム移行後に、仮想的なストレージシステムにおいて１台のホストコンピュータへ割当てられたリソース（例えば、ポートおよびボリューム）が、異なる物理的なストレージシステムに存在する場合、ホストコンピュータからリソース（例えば、ボリューム）へアクセス可能とするために、物理的なストレージシステム間でそのリソース（例えば、ボリューム）をマッピングする必要がある。このとき、ホストコンピュータによるボリュームへのアクセスにおいて、物理ストレージシステム間の通信が発生する。この通信量が物理的なストレージシステム間の接続パスの帯域を上回ってしまう場合、仮想的なストレージシステムにおけるホストＩ／Ｏ性能がストレージシステム移行前の性能より劣化する恐れがあった。【０００７】
以下、本発明を説明するに当たって、統一的に、物理的なストレージシステムを「ストレージノード」と呼び、仮想的なストレージシステムを「仮想ストレージシステム」と呼ぶ。
【課題を解決するための手段】
【０００８】
本発明に係る計算機システムは、ホスト計算機と、第１の物理ストレージノードと、相互に接続される複数の第２の物理ストレージノードと、第１および複数の第２の物理ストレージノードを管理する管理計算機とから構成され、複数の第２の物理ストレージノードは同一の識別子でもってホスト計算機に応答して仮想ストレージシステムを提供し、一つの第２の物理ストレージノードがホスト計算機からＩ／Ｏ命令を受け付けると他の第２の物理ストレージノードへＩ／Ｏ命令の転送を行い、管理計算機は、第１の物理ストレージノードと複数の第２の物理ストレージノードからストレージの構成情報および性能情報を収集し、また、第１の物理ストレージノードで提供しているボリュームとそれに関わる負荷情報を収集する。【０００９】
そこで、管理計算機は、第１の物理ストレージノードから仮想ストレージシステムへ移行する際に、複数の第２の物理ストレージノードの構成情報および性能情報と、第１の物理ストレージノードが提供しているボリュームの負荷情報を基に、第２の物理ストレージノード間の転送経路の帯域の範囲内で第２の物理ストレージノードのリソースを割り当てる。
【発明の効果】
【００１０】
本発明によれば、Ｉ／Ｏ性能の劣化を伴うことなく、１以上の物理ストレージノードから仮想ストレージシステムへ移行することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】実施例１において、計算機システムの構成例を示す図である。
【図２】実施例１において、ストレージノード情報テーブルの例を示す図である。
【図３】実施例１において、ノード間転送帯域情報テーブルの例を示す図である。
【図４】実施例１において、ボリューム情報テーブルの例を示す図である。
【図５】実施例１において、閾値情報テーブルの例を示す図である。
【図６】実施例１において、移行プラン作成プログラムの処理の例を示すフロー図である。
【図７】実施例１において、移行プラン作成プログラムの処理詳細の例を示す図である。
【図８】実施例２において、ローカルコピー情報テーブルの例を示す図である。
【図９】実施例２において、スナップショット情報テーブルの例を示す図である。
【図１０】実施例２において、プール情報テーブルの例を示す図である。
【図１１】実施例２において、関連ボリュームグループ情報テーブルの例を示す図である。
【図１２】実施例２において、移行プラン作成プログラムの処理詳細の例を示す図である。
【図１３】実施例３において、計算機システムの構成例を示す図である。
【図１４】実施例３において、移行プラン作成プログラムの処理詳細の例を示す図である。
【図１５】実施例４において、ストレージノード情報テーブルの例を示す図である。
【図１６】実施例４において、ボリューム情報テーブルの例を示す図である。
【図１７】実施例４において、移行プランテーブルの例を示す図である。
【図１８】実施例４において、移行プラン作成プログラムの処理詳細の例を示す図である。
【図１９】実施例４において、移行プラン作成プログラムにおける、ポート移行プランの作成の処理詳細の例を示す図である。
【図２０】実施例４において、移行プラン作成プログラムにおける、ＢＥ  Ｉ／Ｆ移行プランの作成の処理詳細の例を示す図である。
【図２１】単一の物理ストレージノード（旧構成）から、複数の物理ストレージノードから成る仮想ストレージシステム（新構成）へ移行する流れを示す概要図である。
【発明を実施するための形態】
【００１２】
本発明の実施形態として、実施例を用いて説明するに先立ち、本発明の概要を図２１を用いて説明する。
図２１は、単一の物理ストレージノードが存在する旧構成から、複数の物理ストレージノードから成る仮想ストレージシステムが存在する新構成へ移行する流れを示す概要図である。
【００１３】
旧構成の物理ストレージノードは、ボリュームを３台提供している。各ボリュームが必要とするＣＰＵ性能（ＭＩＰＳ）およびポート性能（Ｍｂｐｓ）は、順に、ボリュームＡでは、３０ＭＩＰＳ、８０Ｍｂｐｓ、ホストＢでは、６０ＭＩＰＳ、６０Ｍｂｐｓ、ホストＣでは、６０ＭＩＰＳ、３０Ｍｂｐｓ、である。
新構成において、仮想ストレージシステムを構成する複数の物理ストレージノードは、それぞれ同一のスペックであり、ＣＰＵ性能は１００ＭＩＰＳ、ポート性能は１００Ｍｂｐｓである。物理ストレージノード間は、ＡＳＩＣにより内部で接続されており、ほとんど応答性能の劣化がなく、Ｉ／Ｏ命令の転送、データのやり取りの中継が可能である。この転送性能は５０Ｍｂｐｓである。
【００１４】
このとき、管理サーバは、旧構成の物理ストレージノードおよび新構成の物理ストレージノード、それぞれから構成情報、性能情報を収集する（図２１の（１）情報収集）。そして、新構成の物理ストレージノード間でデータの転送がなるべく発生しないように、必要なポート性能が高い順にボリュームとポートを同一の物理ストレージノード内のリソースとして割り当てるように、移行プランを作成する（図２１の（２）プラン作成）。
【００１５】
具体的には、ボリュームＡ、ボリュームＢ、ボリュームＣの順に、単一の物理ストレージノードでリソースの割り当てができないかを判定する。この結果、ボリュームＡは、単一のストレージノードからＣＰＵとポートを割り当てることができる。同様に、ボリュームＢも可能である。しかし、最後のボリュームＣは、記憶領域とＣＰＵを割り当てられる単一の物理ストレージノードがなく、それぞれ異なる物理ストレージノードから割り当てる必要がある。しかし、ボリュームＣが必要とするポート性能は、物理ストレージノード間の転送帯域よりも少ないため、ほとんど性能劣化なく移行することが可能となる（図２１の（３）リプレース）。
【００１６】
本発明によれば、仮想ストレージシステム環境への移行によるＩ／Ｏ性能の劣化を低減することができる。特に、ビックデータの分析などの大量のストレージリソースを使用・消費するアプリケーション向けにストレージを提供する場合など、一つのストレージノードだけではストレージリソースが不足する可能性がある。このような場合に、複数のストレージノードからなる仮想ストレージシステムに移行することが考えられる。このような状況では移行による性能の向上が期待されるため、本発明によりＩ／Ｏ性能の劣化を低減し、仮想ストレージのリソースが使えることによるＩ／Ｏ性能の向上が図れることは特に有用である。
【実施例１】
【００１７】
図１は、本発明が適用された計算機システムの実施例１に係る構成例を示す図である。当該計算機システムは、管理コンピュータ１０００、仮想ストレージシステム１１００、ホストコンピュータ１３００および移行元ストレージノード１６００から構成される。この仮想ストレージシステム１１００は複数のストレージノード１２００で構成されている。【００１８】
管理コンピュータ１０００、ストレージノード１２００および移行元ストレージノード１６００は、管理ネットワーク１４００（例えば、ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して相互に接続されている。管理ネットワーク１４００は、主に管理用のデータをやり取りするためのネットワークである。なお、管理ネットワーク１４００は、管理データ通信用のネットワークであれば、ＳＡＮを用いるなど、ＩＰネットワーク以外のその他のタイプのネットワークでもよい。【００１９】
ストレージノード１２００、ホストコンピュータ１３００および移行元ストレージノード１６００は、データネットワーク１５００（例えば、ＳＡＮ：Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して相互に接続されている。データネットワーク１５００は、ホストコンピュータ１３００が仮想ストレージシステム１１００に格納するデータをやり取りするためのネットワークである。なお、データネットワーク１５００は、ＩＰネットワークなどデータ通信用のネットワークであれば、他のどのようなタイプのネットワークでもよい。【００２０】
図１では、ホストコンピュータ１３００を単一のものとして記載しているが、２つ以上であってもよい。また、移行元ストレージノード１６００も、２つ以上でもよい。さらに、移行元ストレージノード１６００が複数束ねられた仮想ストレージシステムを構成することも可能で、移行元ストレージノード１６００を仮想ストレージシステムと読み替えればよい。また、移行先となる仮想ストレージシステム１１００は、３つのストレージノード１２００から構成されているが、２つであっても、３つより多くてもよい。また、データネットワーク１５００と管理ネットワーク１４００は、同一のネットワークであってもよい。【００２１】
管理コンピュータ１０００は、ＣＰＵ１０１０、表示装置１０２０、入力装置１０３０、ＮＩＣ１０４０およびメモリ１０５０からなる。
入力装置１０３０は、管理者からの指示を受け付けるためのデバイスである。表示装置１０２０は、管理者からの指示に対応する処理の結果やシステムの状況などを表示するデバイスである。ＮＩＣ１０４０は、管理ネットワーク１４００に接続するためのＩ／Ｆである。
ＣＰＵ１０１０は、メモリ１０５０に格納されたプログラムに従って動作する。【００２２】
メモリ１０５０は、ストレージノード情報テーブル１０５１、ストレージノード間転送帯域情報テーブル１０５２、ボリューム情報テーブル１０５３、閾値情報テーブル１０５４および移行プラン作成プログラム１０５５を格納する。これらのテーブルの詳細は後述する。
移行プラン作成プログラムは、移行元ストレージノード１６００から仮想ストレージシステム１１００へ移行するためのプランを作成し、移行を実施するプログラムである。このプログラムの動作の詳細も後述する。【００２３】
ストレージノード１２００は、コントローラ１２１０および記憶媒体ユニット１２２０から構成され、両者は高速な内部ネットワークで接続されている。
記憶媒体ユニット１２２０は、複数のハードディスクドライブやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの記憶媒体１２２１を搭載する。【００２４】
コントローラ１２１０は、ＦＥ  Ｉ／Ｆ１２１１、データ通信ユニット１２１２、ＣＰＵ１２１３、ＮＩＣ１２１４、メモリ１２１５およびＢＥ  Ｉ／Ｆ１２１７から構成される。
ＮＩＣ１２１４は、管理ネットワーク１４００に接続するためのＩ／Ｆである。ＦＥ  Ｉ／Ｆ１２１１は、データネットワーク１５００に接続するためのＩ／Ｆである。ＢＥ  Ｉ／Ｆ１２１７は、記憶媒体ユニット１２２０に接続するためのＩ／Ｆである。ＣＰＵ１２１３は、メモリ１２１５に格納されたプログラムに従って動作する。
メモリ１２１５は、制御プログラム１２１６を格納する。【００２５】
制御プログラム１２１６は、ストレージノードを制御するためのプログラムであって、記憶媒体ユニット１２２０に搭載された記憶媒体１２２１でＲＡＩＤグループを構成し、ホストコンピュータ１３００に提供する論理ボリューム１２２２を作成する。また、制御プログラム１２１６は、構成したＲＡＩＤグループの情報を元に、ホストコンピュータ１３００からの論理ボリューム１２２２へのＩ／Ｏ命令に応じて、適切な記憶媒体１２２１に対してデータの読み込み、書き込みを行う。【００２６】
そしてまた、制御プログラム１２１６は、ストレージノード１２００の動作を決定するための制御情報、稼動状況の参照や更新をするためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を提供する。管理コンピュータ１０００で稼動する、管理プログラム（図示しない）および移行プラン作成プログラム１０５５は、このＡＰＩを用いて、ストレージノードの制御、監視等を行う。【００２７】
データ通信ユニット１２１２は、ホストコンピュータ１３００から論理ボリューム１２２２へのＩ／Ｏ命令に応じて、自らが搭載されるストレージノード１２００が提供する論理ボリュームへのＩ／Ｏ命令でない場合には、適切なストレージノード１２００にＩ／Ｏ命令を転送し、データのやり取りを中継する。自らが搭載されるストレージノード１２００が提供する論理ボリュームへのＩ／Ｏ命令である場合には、自らの制御プログラム１２１６を実行しているＣＰＵ１２１３にＩ／Ｏ命令を転送する。【００２８】
このストレージノード間のＩ／Ｏ命令の転送、データのやり取りの中継のため、仮想ストレージシステム１１００を構成する各ストレージノード１２００のデータ通信ユニット１２１２の間で、内部結線１２３０が張られる。この結線は、ファイバチャネル、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、あるいは、その他のデータ通信用の結線である。【００２９】
なお、Ｉ／Ｏ命令の転送やデータのやり取りの中継のために必要となる、各論理ボリュームを格納するストレージノード１２００の情報（図示せず）は、データ通信ユニット１２１２に格納されている。あるいは、制御プログラム１２１６が管理し、データ通信ユニット１２１２からの問い合わせに応じて格納先のストレージノード１２００から応答することも可能である。また、この情報は、管理コンピュータ１０００等から制御プログラム１２１６に対して指示をすることで、参照、変更することができる。【００３０】
移行元ストレージノード１６００は、基本的にストレージノード１２００と同等の構成となる。ただし、データ通信ユニット１２１２の搭載は任意である。【００３１】
図２は、メモリ１０５０に格納されるストレージノード情報テーブル１０５１の一例である。
本テーブル１０５１は、各ストレージノード１２００および移行元ストレージノード１６００の性能情報を格納する。【００３２】
ストレージノードＩＤ２００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。ポート性能２００２は、ストレージノードが持つＦＥ  Ｉ／Ｆの最大データ転送性能（スループット）を示す。ＣＰＵ性能２００３は、ストレージノードのＣＰＵ性能を示す。キャッシュ容量２００４は、ストレージノードが備えるキャッシュ容量（ＧＢ）を示す。記憶容量２００５は、ストレージノードの記憶容量（ＧＢ）を示す。この記憶容量はＲＡＩＤグループの容量である。
これらの値は、移行プラン作成プログラム１０５５が事前に各ストレージノード１２００および１６００から管理ネットワーク１４００を介して収集する。あるいは、ユーザが入力装置１０３０から直接入力してもよい。【００３３】
なお、実施例１は、仮想ストレージシステム１１００を構成するストレージノード１２００が未使用であることを想定しているが、他の実施形態として、ストレージノード１２００が既に他の用途で使用されている場合には、ストレージノード１２００のポート性能２００２、ＣＰＵ性能２００３、キャッシュ容量２００４および記憶容量２００５については、使用されている分を差し引いた余剰の性能、容量とする。【００３４】
図３は、メモリ１０５０に格納されるストレージノード間転送帯域情報テーブル１０５２の一例である。
本テーブル１０５２は、仮想ストレージシステム１１００を構成するストレージノード１２００間の通信用の結線１２３０について、結線接続先のストレージノード名および転送帯域（Ｍｂｐｓ）の情報を格納する。【００３５】
列３００１で示すストレージノードＩＤ１は転送元を示し、列３００２で示すストレージノードＩＤ２は転送先を示し、計算機システム内のストレージノードを一意に識別するためのＩＤである。転送帯域３００３は、ストレージノードＩＤ１とストレージノードＩＤ２で示されるストレージノード間の結線の転送帯域を示す。ストレージノード相互は全二重で通信されるところ、両方向ともに転送帯域は同一とは限らず、方向により転送帯域に違いがあるので、図３の第１および第２レコードで示すように、同じストレージノード間であってもそれぞれが転送元の場合と転送先の場合でレコードが異なる。
これらの値は、移行プラン作成プログラム１０５５が事前に各ストレージノード１２００から管理ネットワーク１４００を介して収集する。あるいは、ユーザが入力装置１０３０から直接入力してもよい。【００３６】
なお、実施例１では、仮想ストレージシステム１１００を構成するストレージノードが未使用であることを想定しているが、他の実施形態として、ストレージノードが既に他の用途で使用されている場合、転送帯域３００３は、使用されている分を差し引いた余剰の転送帯域とする。【００３７】
図４は、メモリ１０５０に格納されるボリューム情報テーブル１０５３の一例である。
本テーブル１０５３は、移行元ストレージノード１６００でホストコンピュータ１３００に提供する論理ボリューム１２２２の情報を格納する。【００３８】
ストレージノードＩＤ４００１は、移行元ストレージノード１６００を一意に識別するためのＩＤである。ＶＯＬＩＤ４００２は、ストレージノードＩＤ４００１で示される移行元ストレージノード１６００において、一意に論理ボリュームを識別するためのＩＤである。ポート使用量４００３は、ストレージノードＩＤ４００１とＶＯＬＩＤ４００２で特定される論理ボリュームが使用しているポート性能の使用量（Ｍｂｐｓ）の最大値を示す。ＣＰＵ使用率４００４は、当該論理ボリュームがストレージノードＩＤ４００１で示される移行元ストレージノード１６００で使用しているＣＰＵの使用率（％）の最大値を示す。キャッシュ使用量４００５は、当該論理ボリュームがストレージノードＩＤ４００１で示される移行元ストレージノード１６００で使用しているキャッシュ容量（ＭＢ）の最大値を示す。記憶容量４００６は、当該論理ボリュームがストレージノードＩＤ４００１で示される移行元ストレージノード１６００で使用している記憶容量（ＧＢ）の最大値を示す。割当先ホスト４００７は、当該論理ボリュームがどのホストコンピュータ１３００に割り当てられているかをＷＷＮで示す。【００３９】
なお、実施例１では、ポート使用量４００３、ＣＰＵ使用率４００４、キャッシュ使用量４００５および記憶容量４００６は、それぞれの最大値を使用しているが、別の実施形態として、時間で平均化した値でも、また、離れ値を除外した最大値など統計的加工を施した値でもよい。
これらの値は、移行プラン作成プログラム１０５５が事前に移行元ストレージノード１６００から管理ネットワーク１４００を介して収集する。【００４０】
図５は、メモリ１０５０に格納される閾値情報テーブル１０５４の一例である。
本テーブル１０５４は、移行プラン作成プログラム１０５５が移行プランを作成する際に利用する情報を格納する。【００４１】
ポート使用率閾値５００１は、移行の結果、各ストレージノード１２００で使用することになるポート性能の上限を使用率の割合（％）で示す。ＣＰＵ使用率閾値５００２は、移行の結果、各ストレージノード１２００で使用することになるＣＰＵ性能の上限を使用率の割合（％）で示す。キャッシュ使用率閾値５００３は、移行の結果、各ストレージノード１２００で使用することになるキャッシュ容量の上限を使用率の割合（％）で示す。記憶容量使用率閾値５００４は、移行の結果、各ストレージノード１２００で使用することになる記憶容量の上限を使用率の割合（％）で示す。ストレージノード間転送帯域使用率閾値５００５は、移行の結果、各ストレージノード１２００で使用することになるストレージノード間転送帯域の上限を使用率の割合（％）で示す。
また、各閾値については、原則ユーザが設定するが、固定的に設定されることに限定されず設定変更することもできる。【００４２】
図６は、移行プラン作成プログラム１０５５の動作例を示すフローチャートである。
移行プラン作成プログラム１０５５が起動された後、この移行プラン作成プログラム１０５５による各ステップの処理内容を、以下順に説明する。【００４３】
ステップ６００１において、移行元ストレージノード１６００を制御する制御プログラム１２１６と仮想ストレージシステム１１００を構成するストレージノード１２００を制御する制御プログラム１２１６とから各ストレージノードの性能情報を収集し、ストレージノード情報テーブル１０５１（図２）とストレージノード間転送帯域情報テーブル１０５２（図３）を作成する。なお、前述のとおり、本ステップ６００１はユーザの入力によるテーブル作成であってもよい。【００４４】
ステップ６００２において、移行元ストレージノード１６００を制御する制御プログラム１２１６から論理ボリュームの利用状況を収集し、ボリューム情報テーブル１０５３（図４）を作成する。
ステップ６００３において、収集した情報を元に移行プランを作成する。移行プランには、移行元ストレージノー１６００の各論理ボリューム１２２２がどのストレージノード１２００の記憶領域を使用し、どのストレージノードのポートを使用するかが示されている。ステップ６００３で作成する移行プランの詳細は、図７を用いて後述する。【００４５】
ステップ６００４において、先のステップ６００３で移行プランが作成できた場合（ｙｅｓ）はステップ６００５に進み、作成できなかった場合（ｎｏ）は処理を終了する。
ステップ６００５において、移行指示として、作成した移行プランを使って移行を実施する。【００４６】
上記移行の実施において、移行プラン作成プログラム１０５５は、移行元ストレージノード１６００の各論理ボリューム１２２２について、記憶領域を使用するストレージノード１２００のＲＡＩＤグループから論理ボリュームを作成し、必要なキャッシュ容量を割り当てる指示を制御プログラム１２１６に出す。そして、移行プラン作成プログラム１０５５は、ポートを使用するストレージノード１２００の当該ポートをホストコンピュータ１３００に割り当てる指示を制御プログラム１２１６に出す。割当先のホストコンピュータは、ボリューム情報テーブル１０５３の割当先ホスト４００７を参照して決定する。最後に、移行プラン作成プログラム１０５５は、データ通信ユニット１２１２がストレージノード間でＩ／Ｏ命令の転送、データのやり取りを中継するための転送制御情報を、移行元および移行先の両ストレージノードの制御プログラム１２１６に通知する。【００４７】
なお、実施例１では、移行後の論理ボリュームが、同一ストレージノード内の記憶領域およびポートを使用する場合でも転送制御情報の通知を行うが、別の実施形態として、データ通信ユニット１２１２が、転送制御情報の通知を行わずにＩ／Ｏ命令の転送やデータのやり取りの中継をスキップする処理となっている場合、移行後に同一のストレージノードの論理ボリュームおよびポートを使用する論理ボリュームについては、制御情報の通知を行わない。【００４８】
図７は、移行プラン作成プログラム１０５５が作成する、図６の移行プラン（ステップ６００３）について、その詳細動作例を示したフローチャートである。以下、移行プラン作成プログラム１０５５による各ステップの処理内容を順に説明する。【００４９】
ステップ７０１０において、ボリューム情報テーブル１０５３のポート使用量４００３の値の大きい順に論理ボリュームをソートする。
ステップ７０２０において、ソートした論理ボリューム毎にそのボリューム数分後続の処理を繰り返す。【００５０】
ステップ７０３０において、当該論理ボリュームで使用するポート性能と記憶容量を同一のストレージノードから移行先として割り当て可能かを判断する。ここでは、移行先のストレージノードとして、ボリューム情報テーブル１０５３のポート使用量４００３、ボリューム情報テーブル１０５３のＣＰＵ使用率４００４とストレージノード情報テーブル１０５１のＣＰＵ性能２００３とから算出したＣＰＵ性能、ボリューム情報テーブル１０５３のキャッシュ容量４００５および記憶容量４００６に対して、十分な余剰があるストレージノード１２００があるかを判断する。【００５１】
この判断に際し、ストレージノード情報テーブル１０５１と閾値情報テーブル１０５４から、それぞれの値と対応する閾値をかけて使用可能な性能、容量（以降、それぞれを「余剰性能」、「余剰容量」と呼ぶ）を算出する。これらの余剰性能、余剰容量が、当該論理ボリュームが使用する値より大きければ十分な余剰があり割り当て可能と判断し、小さければ十分な余剰がなく割り当て不可と判断する。【００５２】
このステップ７０３０において、同一ストレージノード１２００から割り当て可能と判断した場合（ｙｅｓ）、続くステップ７０４０において、割り当て可能なストレージノード１２００の一つを選択し、そのストレージノード１２００からポートおよび記憶容量を割り当てるように移行プランに追加する。
その際に、ポートの余剰性能、ＣＰＵの余剰性能、キャッシュの余剰容量、記憶容量の余剰容量から、当該論理ボリュームが使用する分を減算する。
その後、次の論理ボリュームの処理を行うべくステップ７０３０に処理を進める。【００５３】
他方、このステップ７０３０において、同一ストレージノード１２００から割り当て不可と判断した場合（ｎｏ）、続くステップ７０５０において、ポート性能に十分な余裕があるストレージノード１２００を列挙する。ここで列挙されるのは、ポートの余剰性能が、当該論理ボリュームで使用するポートの性能を上回るストレージノード１２００である。【００５４】
ステップ７０６０において、ＣＰＵ性能、キャッシュ容量、記憶容量に十分な余剰があるストレージノード１２００を列挙する。ここで列挙されるのは、ＣＰＵの余剰性能、キャッシュの余剰容量および記憶容量の余剰容量が、当該論理ボリュームで利用するＣＰＵ性能、キャッシュ容量および記憶容量を上回るストレージノード１２００である。【００５５】
ステップ７０７０において、先のステップ７０５０および７０６０でそれぞれ列挙したストレージノード１２００を接続した場合に、両ストレージノード１２００間のデータ転送帯域に十分な余剰があるストレージノード１２００の組み合わせがあるかを判断する。【００５６】
この判断に際し、ストレージノード間転送帯域情報テーブル１０５２の転送帯域３００３に閾値情報テーブル１０５４のストレージノード間転送帯域使用率閾値５００５をかけることにより、使用可能な帯域（以降、これを「余剰帯域」と呼ぶ）を算出する。この余剰帯域が、当該論理ボリュームが使用するポート性能以上の場合に十分な余剰があると判断し、少ない場合に十分な余剰はないと判断する。【００５７】
このステップ７０７０において、上記ストレージノードの組み合わせに十分な余剰帯域があると判断した場合（ｙｅｓ）、続くステップ７０８０において、十分な余剰帯域があるストレージノードの組み合わせを一つ選択する。そして、その組み合わせの一方から、ポート性能に余剰があるストレージノードのポートを割り当て、他方から記憶領域に余剰があるストレージノードを割り当てるように、移行プランに追加する。
その際に、ポートを割り当てるストレージノードのポートの余剰性能から、また、記憶容量を割り当てるストレージノードのＣＰＵの余剰性能、キャッシュの余剰容量および記憶容量の余剰容量から、それぞれ当該論理ボリュームが使用する分を減算する。さらに、選択したストレージノード間の余剰帯域から、当該論理ボリュームが使用するポート性能分を減算する。
その後、次の論理ボリュームの処理を行うべくステップ７０３０に処理を進める。【００５８】
他方、このステップ７０７０において、上記ストレージノードの組み合わせに十分な余剰帯域がないと判断した場合（ｎｏ）、ステップ７０９０において、性能を維持したままリプレースができないことを管理者に通知して終了する。【００５９】
なお、実施例１は、データ通信ユニット１２１２が、Ｉ／Ｏ命令の転送やデータのやり取りの中継を行う際に、制御プログラム１２１６を動作させるＣＰＵ１２１３に問い合わせないことを想定している。別の実施形態として、ＣＰＵ１２１３に問い合わせる場合、この応答にかかるＣＰＵの負荷分を、ステップ７０４０またはステップ７０８０において、ＣＰＵの余剰性能から減算する必要がある。【００６０】
以上のとおり、実施例１により、ポートの性能を多く使用する論理ボリュームは、ストレージノードを跨がずにＩ／Ｏ処理を行うように移行される。そのため、ストレージノード間の結線の転送帯域がネックとなってＩ／Ｏ性能が劣化することなく、移行元ストレージノード１６００から仮想ストレージシステム１１００に移行することができる。
【実施例２】
【００６１】
実施例２は、移行元ストレージノード１６００、移行先となるストレージノード１２００において、論理ボリューム１２２２の複製（ローカルコピー）やスナップショットなど高度な処理を行うことができる場合の実施形態である。このような高度な処理を行う場合、これに必要となるリソースを、記憶領域に割り当てるストレージノードと同一のストレージノードに配置する必要がある。なお、この実施例２については、実施例１とほぼ同一の形態および処理内容となる部分があるので、以下では差分のみ説明を行う。【００６２】
実施例２において、図１で示した制御プログラム１２１６は、論理ボリュームの複製やスナップショットを行うための機能を持つ。また、制御プログラム１２１６は、これらの機能を管理するための参照、設定用のＡＰＩを管理コンピュータ１０００に提供する。なお、実施例２では、複製（ローカルコピー）、スナップショットの機能を例にして説明するが、他のストレージノードが保有する機能でもよい。【００６３】
管理コンピュータ１０００が有するメモリ１０５０には、ローカルコピー情報テーブル、スナップショット情報テーブル、プール情報テーブルおよび関連ボリュームグループ情報テーブルを格納する（図示しない）。これらのテーブルの詳細は後述する。【００６４】
図８は、メモリ１０５０に格納されるローカルコピー情報テーブルの例である。
本テーブルは、ローカルコピーに関わる情報を格納する。
ストレージノードＩＤ８００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。コピーグループＩＤ８００２は、ストレージノードＩＤ８００１で示されるストレージノード１６００で一意に識別されるコピーグループのＩＤである。主ボリューム８００３は、ストレージノードＩＤ８００１で示されるストレージノード１６００で一意に識別される論理ボリュームのＩＤであり、このＩＤで示される論理ボリュームは複製元論理ボリュームである。副ボリューム８００４は、ストレージノードＩＤ８００１で示されるストレージノード１６００で一意に識別される論理ボリュームのＩＤであり、このＩＤで示される論理ボリュームは複製先論理ボリュームである。ＣＰＵ使用率８００５は、このコピーで必要となるＣＰＵ性能（％）の最大値である。キャッシュ容量８００６はこのコピーで必要となるキャッシュ容量（ＭＢ）の最大値である。【００６５】
なお、実施例２では、ＣＰＵ使用率８００５およびキャッシュ容量８００６は最大値としているが、別の実施形態として、時間で平均化した値でも、離れ値を除外した最大値など統計的加工を施した値でもよい。
これらの値は、移行プラン作成プログラム１０５５が、事前に各ストレージノード１２００から管理ネットワーク１４００を介して収集する。【００６６】
図９は、メモリ１０５０に格納されるスナップショット情報テーブルの例である。
本テーブルは、スナップショットに関わる情報を格納する。
ストレージノードＩＤ９００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。ＳＳグループＩＤ９００２は、ストレージノードＩＤ９００１で示されるストレージノード１６００で一意に識別されるスナップショットグループのＩＤである。ボリュームＩＤ９００３は、ストレージノードＩＤ９００１で示されるストレージノード１６００で一意に識別される論理ボリュームのＩＤであり、このＩＤで示される論理ボリュームはスナップショット元の論理ボリュームである。ＳＳボリュームＩＤ９００４は、ストレージノードＩＤ９００１で示されるストレージノード１６００で一意に識別される論理ボリュームのＩＤであり、このＩＤで示される論理ボリュームはスナップショットボリュームである。ＣＰＵ使用率９００５は、このスナップショットで必要となるＣＰＵ性能（％）の最大値である。キャッシュ容量９００６は、このスナップショットで必要となるキャッシュ容量（ＭＢ）の最大値である。プールＩＤ９００７は、ストレージノードＩＤ９００１で示されるストレージノード１６００で一意に識別されるプールのＩＤであり、スナップショットで利用されるプールを示す。【００６７】
なお、実施例２では、ＣＰＵ使用率９００５およびキャッシュ容量９００６は最大値としているが、別の実施形態として、時間で平均化した値でも、離れ値を除外した最大値など統計的加工を施した値でもよい。
これらの値は、移行プラン作成プログラム１０５５が、事前に各ストレージノード１２００から管理ネットワーク１４００を介して収集する。【００６８】
図１０は、メモリ１０５０に格納されるプール情報テーブルの例である。
本テーブルは、スナップショットで使用されるプールの情報を格納する。
ストレージノードＩＤ１０００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。プールＩＤ１０００２は、ストレージノードＩＤ１０００１で示されるストレージノード１６００で一意に識別されるプールのＩＤである。プールＶＯＬＩＤ１０００３はストレージノードＩＤ１０００１とプールＩＤ１０００２で示されるプールを構成する論理ボリュームのＩＤを示す。
これらの値は、移行プラン作成プログラム１０５５が、事前に各ストレージノード１２００から管理ネットワーク１４００を介して収集する。【００６９】
図１１は、メモリ１０５０に格納される関連ボリュームグループ情報テーブルの例である。
本テーブルは、上記のようなストレージの機能を動作させるために、同一のストレージノードから記憶領域を割り当てる必要がある論理ボリュームを纏めたテーブルである。
ストレージノードＩＤ１１００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。グループＩＤ１１００２は、論理ボリュームのグループを示すＩＤである。関連ボリュームＩＤ１１００３は、グループＩＤ１１００２で示されるグループに属する論理ボリュームＩＤのリストである。合計ポート使用量１１００４は、ストレージノードＩＤ１１００１と関連ボリュームＩＤ１１００３で示されるボリューム群が使用するポート性能の合計（Ｍｂｐｓ）を示す。合計ＣＰＵ使用率１１００５は、ストレージノードＩＤ１１００１と関連ボリュームＩＤ１１００３で示されるボリューム群が使用するＣＰＵ性能の合計（％）を示す。合計キャッシュ容量１１００６は、ストレージノードＩＤ１１００１と関連ボリュームＩＤ１１００３で示されるボリューム群が使用するキャッシュ容量の合計（ＭＢ）を示す。合計記憶容量１１００７は、ストレージノードＩＤ１１００１と関連ボリュームＩＤ１１００３で示されるボリューム群が使用する記憶容量の合計（ＧＢ）を示す。【００７０】
図１２は、実施例２における、図６の移行プランの作成６００３の詳細動作例を示したフローチャートである。以下、移行プラン作成プログラム１０５５による各ステップの処理内容を順に説明する。【００７１】
ステップ１２０１０において、移行元ストレージノード１６００の制御プログラム１２１６から性能情報を収集し、図１１の関連ボリュームグループ情報テーブルを作成する。
具体的には、ローカルコピー情報テーブル（図８）、スナップショット情報テーブル（図９）、プール情報テーブル（図１０）、それぞれに関連する情報を収集する。その後、関連ボリュームグループ情報テーブル（図１１）に対して、実行予定の機能に応じて関連する情報を登録する。【００７２】
たとえば、ローカルコピーであれば、複製元と複製先の論理ボリュームを同一の関連ボリュームグループに登録する。また、同一のコピーグループＩＤに属する複製元と複製先の論理ボリュームも同一の関連ボリュームグループに登録する。その際に、それぞれのボリュームで使用するポート性能、ＣＰＵ性能、キャッシュ容量、記憶容量に加え、ローカルコピーに使われるＣＰＵ使用率８００５とキャッシュ容量８００６を合算して、合計ポート使用量１１００４、合計ＣＰＵ使用率１１００５、合計キャッシュ容量１１００６、合計記憶容量１１００７に値を設定する。【００７３】
同様に、たとえば、スナップショットであれば、スナップショット元とスナップショット先の論理ボリュームを同一の関連ボリュームグループに登録する。また、同一のスナップショットグループに属する複製元と複製先の論理ボリュームも同一の関連ボリュームグループに登録する。さらに、スナップショットが利用しているプールを構成する論理ボリュームもプール情報テーブル（図１０）から特定し、同一の関連ボリュームグループに登録する。その際に、それぞれのボリュームで使用するポート性能、ＣＰＵ性能、キャッシュ容量、記憶容量に加え、スナップショットに使われるＣＰＵ使用率９００５とキャッシュ容量９００６を合算して、合計ポート使用量１１００４、合計ＣＰＵ使用率１１００５、合計キャッシュ容量１１００６、合計記憶容量１１００７に値を設定する。【００７４】
ステップ１２０１０以降の各ステップの処理は、実施例１の図７において論理ボリューム単位で処理を行っていたものを、関連するボリュームグループ単位で処理を行うように変更したものである。
ステップ１２０２０において、合計ポート使用量１１００４の値の大きい順に関連ボリュームグループをソートする。【００７５】
ステップ１２０３０において、ソートした関連ボリュームグループ毎にそのグループ数分後続の処理を繰り返す。
ステップ１２０４０において、当該関連ボリュームグループで使用するポート性能と記憶容量を同一のストレージノードから割り当て可能かを判断する。【００７６】
このステップ１２０４０において、同一ストレージノードから割り当て可能と判断した場合（ｙｅｓ）、ステップ１２０５０において、割り当て可能なストレージノード１２００の一つを選択し、そのストレージノード１２００からポートおよび記憶容量を割り当てるように移行プランに追加する。この際、各余剰性能、余剰容量から関連ボリュームグループが使用する合計の性能、容量を減算する。【００７７】
他方、このステップ１２０４０において、同一ストレージノード１２００から割り当て不可と判断した場合（ｎｏ）、ステップ１２０６０において、ポート性能に十分な余裕があるノードを列挙する。ここで列挙されるのは、ポートの余剰性能が、当該関連ボリュームグループで使用するポートの性能の合計を上回るストレージノード１２００である。【００７８】
次に、ステップ１２０７０において、ＣＰＵ性能、キャッシュ容量および記憶容量に十分な余剰があるストレージノード１２００を列挙する。ここで列挙されるストレージノード１２００も同様に、関連ボリュームグループの合計性能、合計容量を用いて判断する。【００７９】
ステップ１２０８０において、先のステップ１２０６０および１２０７０で列挙した各ストレージノード１２００間のデータ転送帯域に、十分な余裕があるストレージノード１２００の組み合わせがあるかを判断する。【００８０】
このステップ１２０８０で、上記ストレージノードの組み合わせに十分な余剰帯域があると判断した場合（ｙｅｓ）、続くステップ１２０９０において、十分な余剰帯域があるストレージノードの組み合わせを一つ選択する。そして、その組み合わせの一方から、ポート性能に余剰があるストレージノードのポートを割り当て、他方から記憶領域に余剰があるストレージノードを割り当てるように、移行プランに追加する。
その際に、各余剰性能、余剰容量から関連ボリュームグループが使用する合計の性能、容量を減算する。また、選択したストレージノード間の余剰帯域から、当該関連ボリュームグループが使用するポート性能分を減算する。
その後、次の関連ボリュームグループの処理を行うべくステップ１２０４０に処理を進める。【００８１】
他方、このステップ１２０８０で、上記ストレージノードの組み合わせに十分な余剰帯域がないと判断した場合（ｎｏ）、ステップ１２１００において、性能を維持したままリプレースができないことを管理者に通知して終了する。【００８２】
なお、上記移行プランの作成処理の終了後、図６のステップ６００５における移行指示では、複製（ローカルコピー）やスナップショットなどの処理に対応する機能設定を行う必要がある。【００８３】
以上のとおり、実施例２により、複製（ローカルコピー）やスナップショットなど高度な処理を行うストレージノードから、ストレージノード間の結線の転送帯域がネックとなってＩ／Ｏ性能が劣化することなく、移行元ストレージノード１６００から仮想ストレージシステム１１００に移行することができる。
【実施例３】
【００８４】
先の実施例１は、仮想ストレージシステム１１００を構成するいずれのストレージノード１２００間も内部結線によりメッシュ状に直接接続されている構成である。一方で、デイジーチェーンのように、転送に係るストレージノード相互が直接接続されずに、第３のストレージノード１２００を介して接続される形態をとる場合もある。この場合、論理ボリュームの移行方法によっては、データ通信ユニットによるＩ／Ｏ命令の転送やデータのやり取りの中継において、３以上のストレージノードを跨って行われる可能性がある。そうすると、複数のストレージノード間の転送帯域を使用することとなり、効率が悪化することになる。実施例３は、このような転送形態に対応するものである。
なお、実施例３については、実施例１とほぼ同一の形態および処理内容となる部分があるので、以下では差分のみ説明を行う。【００８５】
図１３は、実施例３に係る計算機システムの構成例である。
実施例１は、仮想ストレージシステム１１００を構成する各ストレージノード１２００のデータ通信ユニット１２１２が、内部結線１２３０により相互に直接接続された構成である（図１）。しかし、実施例３は、相互に直接接続される構成ではなく、図１３の内部結線１２３０のように、他のストレージノード１２００を介して接続される構成である。【００８６】
図１４は、実施例３において、図６のステップ６００３における移行プランの作成の詳細動作例を示したフローチャートである。そのステップ７０１０からステップ７０６０までの処理内容は実施例１と同等であるので、以下では、それ以降の移行プラン作成プログラム１０５５による処理を説明する。【００８７】
ステップ１４０７０において、先のステップ７０５０および７０６０で列挙した各ストレージノード１２００間のデータ転送帯域に、十分な余剰があるストレージノード１２００の組み合わせがあるかを判断する。その際に、まずストレージード間転送帯域情報テーブル１０５２（図３）を参照し、ストレージノード１２００間の内部結線の最短経路を算出する。そして、経由する全ての内部結線の余剰帯域が、論理ボリュームが使用するポート性能を上回る場合には十分な余剰があると判断し、少ない場合には十分な余剰がないと判断する。【００８８】
このステップ１４０７０において、上記ストレージノード１２００の組み合わせに十分な余剰帯域があると判断した場合（ｙｅｓ）、続くステップ１４０８０において、十分な余剰帯域があるストレージノードの組み合わせを、経由するストレージノード数（ホップ数）でソートする。【００８９】
次に、ステップ１４０９０において、最も経由するストレージノード数（ホップ数）が少ないストレージノードの組み合わせを一つ選択する。そして、その組み合わせの一方から、ポート性能に余剰があるストレージノードのポートを割り当て、他方から記憶領域に余剰があるストレージノードを割り当てるように、移行プランに追加する。
その際に、ポートを割り当てるストレージノードのポートの余剰性能から、また、記憶容量を割り当てるストレージノードのＣＰＵの余剰性能、キャッシュの余剰容量および記憶容量の余剰容量から、それぞれ当該論理ボリュームが使用する分を減算する。さらに、経由するストレージノード間の内部結線の余剰帯域から、当該論理ボリュームが使用するポート性能分を減算する。
その後、次の論理ボリュームの処理を行うべくステップ７０３０に処理を進める。【００９０】
他方、ステップ１４０７０において、上記ストレージノードの組み合わせに十分な余剰帯域がないと判断した場合（ｎｏ）、ステップ１４１００において、性能を維持したままリプレースができないことを管理者に通知して終了する。【００９１】
以上のとおり、実施例３により、デイジーチェーンのように、ストレージノード１２００が相互に直接接続されておらず、第３のストレージノード１２００を介して接続される構成においても、ストレージノード間の結線の帯域がネックとなってＩ／Ｏ性能が劣化することなく、移行元ストレージノード１６００から仮想ストレージシステム１１００に移行することができる。
【実施例４】
【００９２】
先の実施例１は、データ通信ユニット１２１２がホストコンピュータ１３００からのＩ／Ｏ命令の転送、データのやり取りの中継を行っている構成である。実施例４は、データ通信ユニット１２１２がＢＥ  Ｉ／Ｆから記憶媒体ユニットへのＩ／Ｏ命令の転送、データのやり取りの中継を行う構成に対応するものである。
実施例４については、実施例１とほぼ同一の形態および処理内容となる部分があるので、以下では差分のみ説明を行う。【００９３】
図１５は、実施例４で使用する、ストレージノード情報テーブルの例である。
図２のストレージノード情報テーブル１０５１と基本的には同じであるが、ＢＥポート性能１５００１が追加されている。この列は、ＢＥ  Ｉ／Ｆの性能を示す。【００９４】
図１６は、実施例４で使用する、ボリューム情報テーブルの例である。
図４のボリューム情報テーブル１０５３と基本的には同じであるが、ＢＥポート使用量１６００１が追加されている。この列は、ストレージノードＩＤ４００１とＶＯＬＩＤ４００２で示される論理ボリュームが使用するＢＥ  Ｉ／Ｆの性能を示す。【００９５】
図１７は、実施例４で使用する移行プランテーブルの例である。
実施例１から３では図示しなかったが、実施例４では処理内容が複雑となるため、図示したものである。【００９６】
ストレージノードＩＤ１７００１は、計算機システム内のストレージノードを一意に識別するためのＩＤである。ＶＯＬＩＤ１７００２は、ストレージノードＩＤ１７００１で示されるストレージノード１６００において一意に論理ボリューム１２２２を識別するためのＩＤである。【００９７】
ポート使用ストレージノードＩＤ１７００３は、移行後にストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２で示される論理ボリューム１２２２が使用するポートを持つストレージノードを示す。キャッシュ使用ストレージノードＩＤ１７００４は、移行後にストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２で示される論理ボリューム１２２２が使用するキャッシュを持つストレージノードを示す。記憶領域使用ストレージノードＩＤ１７００５は、移行後にストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２で示される論理ボリューム１２２２が使用する記憶領域を持つストレージノードを示す。【００９８】
これらの情報は、移行プラン作成プログラム１０５５が、図１８で説明するフローチャートに基づいて作成するものであり、当該フローチャートの開始前に初期化される。【００９９】
図１８は、実施例４において、図６のステップ６００３における移行プランの作成の詳細動作例を示したフローチャートである。以下、移行プラン作成プログラム１０５５による各ステップの処理を順に説明する。【０１００】
ステップ１８０１０において、図１６のボリューム情報テーブルを参照し、移行元ストレージノードの各論理ボリュームについて、論理ボリュームのＩＤとポート使用量の組および論理ボリュームのＩＤとＢＥポート使用量の組のリストを作成する。
ステップ１８０２０において、ポート使用量およびＢＥポート使用量をポートの使用量をキーとして、上記の各組をそのキーとなる値の大きい順にソートする。【０１０１】
ステップ１８０３０において、ソートした組を順番に以降の処理を繰り返す。
ステップ１８０４０において、当該組が論理ボリュームのＩＤとポート使用量の組か、論理ボリュームのＩＤとＢＥポート使用量の組かを判定する。【０１０２】
論理ボリュームのＩＤとポート性能使用量の組である場合、ステップ１８０５０において、ポート移行プランの作成を行う。このポート移行プランの作成の詳細は図１９を用いて後述する。その後、次の組の処理を行うべくステップ１８０３０に進む。【０１０３】
他方、論理ボリュームのＩＤとＢＥポート使用量の組である場合、ステップ１８０６０において、ＢＥ  Ｉ／Ｆ移行プランの作成を行う。このＢＥ  Ｉ／Ｆ移行プランの作成の詳細は図２０を用いて後述する。その後、次の組の処理を行うべくステップ１８０３０に進む。
全ての組が終了したら処理を終了する。【０１０４】
図１９は、図１８のステップ１８０５０におけるポート移行プランの作成の詳細動作例を示したフローチャートである。以下、移行プラン作成プログラム１０５５による各ステップの処理内容を順に説明する。【０１０５】
ステップ１９０００において、当該論理ボリュームがキャッシュを使用するストレージノードが決定済みかを、図１７の移行プランテーブルを参照して判定する。決定している場合（ｙｅｓ）、ステップ１９０１０において、そのストレージノードのポート性能に余裕があるかを判定する。判定の詳細は、実施例１（図７のステップ７０３０）と同様である。【０１０６】
ポート性能に余裕がある場合は（ｙｅｓ）、ステップ１９０２０において、そのストレージノードのポートを使用するように移行プランに追加する。具体的には、当該論理ボリュームに対応するストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２をもつレコードのポート使用ストレージノードＩＤ１７００３の値を更新する。その際、そのストレージノードのポートの余剰性能を減算する。【０１０７】
ポート性能に余裕がない場合は（ｎｏ）、ステップ１９０３０において、ポート性能に余裕があるストレージノードを列挙する。列挙の具体的な方法は、実施例１（図７のステップ７０５０）と同様である。【０１０８】
次に、ステップ１９０４０において、列挙したストレージノードとキャッシュを使用するストレージノードとの内部結線の転送帯域の余剰が、ポート使用量以上であるストレージノードがあるかを判定する。余剰のあるストレージノードがある場合（ｙｅｓ）、ステップ１９０５０において、そのストレージノードから一つ選択して、そのストレージノードのポートを使用するように移行プランに追加する。その際に、そのストレージノードのポートの余剰性能、ストレージノード間の転送帯域の余剰を減算する。余剰のあるストレージノードがない場合（ｎｏ）、ステップ１９０６０において、性能維持したままの移行ができない旨をユーザに通知し、終了する。【０１０９】
また、ステップ１９０００の判定において、当該論理ボリュームがキャッシュを使用するストレージが決定していない場合（ｎｏ）、ステップ１９０７０において、単一のストレージノードでポートとキャッシュを使用できないかを判定する。具体的には、ボリューム情報テーブル（図１６）のポート使用量４００３、ＣＰＵ使用量（ストレージノード情報テーブル（図１５）のＣＰＵ性能２００３とボリューム情報テーブル（図１６）のＣＰＵ使用率４００４から算出）、ボリューム情報テーブル（図１６）のキャッシュ使用量４００５を使用するのに、十分な余剰性能および余剰容量を持つストレージノードがあるか判定する。【０１１０】
該当するストレージノードがない場合は（ｎｏ）、ステップ１９０８０において、ポート使用量４００３を使用するのに十分な余剰性能を持つストレージノードを列挙する。また、ＣＰＵ使用量（ＣＰＵ性能２００３とＣＰＵ使用率４００４から算出）およびキャッシュ使用量４００５を使用するのに十分な余剰性能を持つストレージノードを列挙する。【０１１１】
次に、ステップ１９０９０において、先のステップ１９０８０で列挙したストレージノード間の転送帯域の余剰が、ボリューム情報テーブル（図１６）のポート使用量４００３の値以上のものがあるかを判定する。
該当するものがない場合は（ｎｏ）、ステップ１９０６０において、性能維持したままの移行ができない旨をユーザに通知し、終了する。
該当するものがある場合は（ｙｅｓ）、ステップ１９１００において、該当するものの中からストレージノードの組み合わせを一つ選び、ポート性能に余裕があるストレージノードのポートを使用し、キャッシュとＣＰＵの性能に余裕があるストレージノードのキャッシュを使用するように、移行プランに追加する。【０１１２】
具体的には、図１７の移行プランテーブルにおいて、当該論理ボリュームに対応するストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２をもつレコードのポート使用ストレージノードＩＤ１７００３の値とキャッシュ使用ストレージノードＩＤ１７００４の値を更新する。その際、ポート性能、ＣＰＵ性能、キャッシュ容量およびストレージノード間の転送帯域のそれぞれの余剰を減算する。【０１１３】
他方、ステップ１９０７０の判定において、単一のストレージノードでポートとキャッシュを使用できる場合（ｙｅｓ）、ステップ１９１１０において、その中から一つのストレージノードを選択し、そのストレージノードのポートとキャッシュを使用するように移行プランに追加する。その際、ポート性能、ＣＰＵ性能およびキャッシュ容量のそれぞれの余剰を減算する。【０１１４】
図２０は、図１８のステップ１８０６０におけるＢＥ  Ｉ／Ｆ移行プランの作成の詳細動作例を示したフローチャートである。以下、移行プラン作成プログラム１０５５による各ステップの処理内容を順に説明する。【０１１５】
ステップ２００００において、当該論理ボリュームがキャッシュを使用するストレージノードが決定済みかを、図１７の移行プランテーブルを参照して判定する。決定している場合（ｙｅｓ）、ステップ２００１０において、そのストレージノードの記憶容量に余裕があるかを判定する。判定の詳細は、実施例１（図７のステップ７０３０）と同様である。余裕がある場合は（ｙｅｓ）、ステップ２００２０において、そのストレージノードの記憶領域を使用するように移行プランに追加する。【０１１６】
具体的には、図１７の移行プランテーブルにおいて、当該論理ボリュームに対応するストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２をもつレコードの記憶領域使用ストレージノードＩＤ１７００５の値を更新する。その際、そのストレージノードの記憶領域の余剰容量を減算する。【０１１７】
また、ステップ２００１０の判定において、そのストレージノードの記憶容量に余裕がない場合は（ｎｏ）、ステップ２００３０において、記憶容量に余裕があるストレージノードを列挙する。列挙の具体的な方法は、実施例１（図７のステップ７０５０）と同様である。そして、ステップ２００４０において、列挙したストレージノードとキャッシュを使用するストレージノードとの内部結線の転送帯域の余剰が、図１６のボリューム情報テーブルのＢＥポート使用量１６００１の値以上であるストレージノードがあるかを判定する。【０１１８】
余剰のあるストレージノードがある場合（ｙｅｓ）、ステップ２００５０において、そのストレージノードから一つ選択して、そのストレージノードのポートを使用するように移行プランに追加する。その際、そのストレージノードの記憶領域の余剰容量およびストレージノード間の転送帯域の余剰を減算する。余剰のあるストレージノードがない場合（ｎｏ）、ステップ２００６０において、性能維持したままの移行ができない旨をユーザに通知し、終了する。【０１１９】
他方、ステップ２００００の判定において、当該論理ボリュームがキャッシュを使用するストレージが決定していない場合（ｎｏ）、ステップ２００７０において、単一のストレージノードで記憶領域とキャッシュを使用できないかを判定する。具体的には、ボリューム情報テーブル（図１６）の記憶容量４００６、ＣＰＵ使用量（ストレージノード情報テーブル（図１５）のＣＰＵ性能２００３とボリューム情報テーブル（図１６）のＣＰＵ使用率４００４から算出）、ボリューム情報テーブル（図１６）のキャッシュ容量４００５を使用するのに、十分な余剰性能および余剰容量を持つストレージノードがあるか判定する。【０１２０】
該当するストレージノードがない場合は（ｎｏ）、ステップ２００８０において、記憶容量４００６を使用するのに十分な余剰容量を持つストレージノードを列挙する。また、ＣＰＵ使用量（ストレージノード情報テーブル（図１５）のＣＰＵ性能２００３とボリューム情報テーブル（図１６）のＣＰＵ使用率４００４から算出）、ボリューム情報テーブル（図１６）のキャッシュ容量４００５を使用するのに十分な余剰性能を持つストレージノードを列挙する。【０１２１】
次に、ステップ２００９０において、先のステップ２００８０で列挙したストレージノード間の転送帯域の余剰が、図１６のボリューム情報テーブルのＢＥポート使用量１６００１の値以上のものがあるかを判定する。余剰のあるストレージノードがない場合は（ｎｏ）、ステップ２００６０において、性能維持したままの移行ができない旨をユーザに通知し、終了する。余剰のあるストレージノードがある場合は（ｙｅｓ）、ステップ２０１００において、該当するもの中からストレージノードの組み合わせを一つ選び、記憶領域に余裕があるストレージノードの記憶領域を使用し、キャッシュとＣＰＵの性能に余裕があるストレージノードのキャッシュを使用するように、移行プランに追加する。【０１２２】
具体的には、図１７の移行プランテーブルにおいて、当該論理ボリュームに対応するストレージノードＩＤ１７００１とＶＯＬＩＤ１７００２をもつレコードの記憶領域使用ストレージノードＩＤ１７００５の値とキャッシュ使用ストレージノードＩＤ１７００４の値を更新する。その際、記憶領域の容量、ＣＰＵ性能、キャッシュ容量およびストレージノード間の転送帯域のそれぞれの余剰を減算する。【０１２３】
他方、ステップ２００７０の判定において、単一のストレージノードで記憶領域とキャッシュを使用できる場合（ｙｅｓ）、ステップ２０１１０において、その中から一つのストレージノードを選択し、そのストレージノードの記憶領域とキャッシュを使用するように移行プランに追加する。その際、記憶領域の容量、ＣＰＵ性能およびキャッシュ容量のそれぞれの余剰を減算する。【０１２４】
なお、上記の各実施例は、本発明の特徴を説明するものであるが、本発明を限定するものではない。本発明の実施形態では、当業者が本発明を実施するのに十分詳細に説明をしているが、他の実装・形態も可能であって、本発明の技術的思想の範囲と精神を逸脱することなく、構成・構造の変更や多様な要素の置き換えが可能であることが理解される。【０１２５】
したがって、上記記述においてもこれに限定して解釈されるものではない。ある実施例の構成要素は、本発明の技術的思想を逸脱しない範囲で、他の実施例に追加または他の実施例の構成要素と代替可能である。本発明の実施形態は、上述のように、汎用コンピュータ上で稼動するソフトウェアで実装することも、専用ハードウェアまたはソフトウェアとハードウェアの組み合わせで実装することも可能である。【０１２６】
また、上記説明では、主に「テーブル」形式によって、本発明の実施形態で利用される情報について説明したが、この情報は必ずしもテーブルによるデータ構造で表現されるものに限定されず、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていてもよい。【０１２７】
さらに、上記では、「プログラム」を主語（動作主体）として本発明の実施形態における各処理について説明したが、プログラムは、プロセッサによって実行されることで、定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うものである。このため、プロセッサを主語とした説明としてもよい。【０１２８】
また、プログラムを主語として開示された処理は、管理コンピュータ等の計算機またはストレージシステムが行う処理としてもよい。プログラムの一部又は全ては、専用ハードウェアで実現してもよく、モジュール化されていてもよい。【０１２９】
そして、各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。また、プログラム配布サーバや非一時的記憶媒体によって計算機や計算システムにインストールすることができる。
【符号の説明】
【０１３０】
１０００・・・管理コンピュータ
１１００・・・仮想ストレージシステム
１２００・・・ストレージノード
１３００・・・ホストコンピュータ
１４００・・・管理ネットワーク
１５００・・・データネットワーク
１６００・・・移行元ストレージノード
１０１０、１２１３・・・ＣＰＵ
１０２０・・・表示装置
１０３０・・・入力装置
１０４０・・・ＮＩＣ
１０５０、１２１５・・・メモリ
１２１０・・・コントローラ
１２２０・・・記憶媒体ユニット
１２３０・・・内部結線
【図１】
0005973089.tif 000002
【図２】
0005973089.tif 000003
【図３】
0005973089.tif 000004
【図４】
0005973089.tif 000005
【図５】
0005973089.tif 000006
【図６】
0005973089.tif 000007
【図７】
0005973089.tif 000008
【図８】
0005973089.tif 000009
【図９】
0005973089.tif 000010
【図１０】
0005973089.tif 000011
【図１１】
0005973089.tif 000012
【図１２】
0005973089.tif 000013
【図１３】
0005973089.tif 000014
【図１４】
0005973089.tif 000015
【図１５】
0005973089.tif 000016
【図１６】
0005973089.tif 000017
【図１７】
0005973089.tif 000018
【図１８】
0005973089.tif 000019
【図１９】
0005973089.tif 000020
【図２０】
0005973089.tif 000021
【図２１】
0005973089.tif 000022