(57)【要約】【課題】仮想ボリューム間でデータ移行を行う場合において、移行元となる仮想ボリュームと移行先となる仮想ボリュームに対する物理領域の割当容量を把握し、データ移行を正しく実行する。【解決手段】管理計算機１００は、ストレージ１１０の移行元の仮想ボリュームの割当容量と移行先の仮想ボリュームに記憶領域を割り当てる仮想プールの割当容量を監視し、該当する仮想プールで、移行元の仮想ボリュームの割当容量を確保できるか判定し、確保できなければデータ移行が失敗することをユーザに通知する。また確保できなければ、別の記憶領域を用いて、該当する仮想プールの容量を増加させる。【選択図】図１
2008090741.tif 000002
【特許請求の範囲】
【請求項１】
計算機システムであって、複数の記憶領域を構成する複数の記憶媒体と、前記記憶媒体に接続されるコントローラとを有するストレージシステムと、該ストレージシステムへデータを格納する計算機と、ネットワーク接続されるインターフェースと、前記インターフェースに接続されるプロセッサとを有する管理計算機と、を備え、
前記コントローラは、
前記複数の記憶媒体のうちの少なくとも一以上の第一の記憶媒体及び第二の記憶媒体と第一の論理記憶領域及び第二の論理記憶領域とを対応付け、
前記第一の論理記憶領域及び前記第二の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当て、
前記割り当て後の前記第二の論理記憶領域を、前記第一の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を行うためのペア関係を設定し、
前記プロセッサは、
前記データ移行のためのペア関係が設定された後、前記データ移行を開始するまでの間に、
前記第一の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを前記ネットワークを介して監視し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することが可能か否かを判定し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することができなければ前記データ移行が失敗することを前記プロセッサに接続される出力部に出力することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を行うためのペア関係を設定して、前記第一の論理記憶領域から前記第二の論理記憶領域へ前記データ移行を開始し、
前記管理計算機の前記プロセッサは、
前記データ移行のペア関係における前記データ移行中に、前記監視、前記判定及び前記出力をすることを特徴とする計算機システム。
【請求項３】
請求項１に記載の計算機システムにおいて、
前記第一の記憶媒体及び第二の記憶媒体は、前記第一の論理記憶領域から前記第二の論理記憶領域へのデータ移行の際に利用される第一の記憶領域プール及び第二の記憶領域プールであって、
前記第一の記憶領域プール及び第二の記憶領域プールは、前記データ移行の際に前記第一の論理記憶領域及び前記第二の論理記憶領域に対してそれぞれデータの格納領域を提供することを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第一の記憶媒体及び第二の記憶媒体と第三の論理記憶領域及び第四の論理記憶領域とを対応付け、
前記第三の論理記憶領域及び前記第四の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当て、
前記割り当て後の前記第四の論理記憶領域を、前記第三の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、
前記第三の論理記憶領域から前記第四の論理記憶領域へデータ移行を行うためのペア関係を設定し、
前記管理計算機の前記プロセッサは、
前記データ移行のペア関係が設定された後、前記データ移行を開始するまでの間に、
前記第三の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第四の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを監視し、
前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することが可能か否か判定し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納する領域を確保することができないか、又は、前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することができなければ、前記第一の論理記憶領域から前記第二の論理記憶領域へのデータ移行と、前記第三の論理記憶領域から前記第四の論理記憶領域へのデータ移行とが一括で行なえないことを前記出力部に出力することを特徴とする計算機システム。
【請求項５】
請求項２に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第一の記憶媒体及び第二の記憶媒体と第三の論理記憶領域及び第四の論理記憶領域とを対応付け、
前記第三の論理記憶領域及び前記第四の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当て、
前記割り当て後の前記第四の論理記憶領域を、前記第三の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、
前記第三の論理記憶領域から前記第四の論理記憶領域へデータ移行を行うためのペア関係を設定し、
前記第三の論理記憶領域から前記第四の論理記憶領域へのデータ移行を、前記第一の論理記憶領域から前記第二の論理記憶領域へのデータ移行を同時に開始し、
前記管理計算機の前記プロセッサは、
前記データ移行のペア関係において、前記データ移行中に、
前記第三の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第四の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを監視し、
前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することが可能か否か判定し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納する領域を確保することができないか、又は、前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することができなければ、前記第一の論理記憶領域から前記第二の論理記憶領域へのデータ移行と、前記第三の論理記憶領域から前記第四の論理記憶領域へのデータ移行とが両方成功しないことを前記出力部に出力することを特徴とする計算機システム。
【請求項６】
請求項４に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納する領域を確保することができないか、又は、前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することができないとき、さらに前記第二の記憶媒体に第五の論理記憶領域を追加し、
前記管理計算機の前記プロセッサは、
前記データ移行のペア関係が設定された後、前記データ移行をするまでの間に、
第一の論理記憶領域及び第三の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域及び第四の論理記憶領域に割り当てられたデータ格納領域の割当容量と、第五の論理記憶領域を追加した後の前記第二の記憶媒体の第三の論理記憶領域又は前記第四の論理記憶領域に対する割当容量を取得し、
前記第二の記憶媒体の既割当容量と前記第一の論理記憶領域及び第三の論理記憶領域の割当容量との合計容量を、前記第二の記憶媒体の全容量で確保することができるか否か判定し、
前記第二の記憶媒体の全容量で前記合計容量を確保できなれば、前記データ移行が失敗することを前記出力部に出力することを特徴とする計算機システム。
【請求項７】
請求項５に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納する領域を確保することができないか、又は、前記第四の論理記憶領域に第三の論理記憶領域で格納されたデータを格納する領域を確保することができなないとき、さらに前記第二の記憶媒体に第五の論理記憶領域を追加し、
前記管理計算機の前記プロセッサは、
前記第三の論理記憶領域から前記第四の論理記憶領域へデータ移行を開始し、
前記データ移行のペア関係において、前記データ移行中に、
第一の論理記憶領域及び第三の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域及び第四の論理記憶領域に割り当てられたデータ格納領域の割当容量と、第五の論理記憶領域を追加した後の前記第二の記憶媒体の第三の論理記憶領域又は前記第四の論理記憶領域に対する割当容量を取得し、
前記第二の記憶媒体の既割当容量と前記第一の論理記憶領域及び第三の論理記憶領域の割当容量との合計容量を、前記第二の記憶媒体の全容量で確保することができるか否か判定し、
前記第二の記憶媒体の全容量で前記合計容量を確保できなれば、前記データ移行が失敗することを前記出力部に出力することを特徴とする計算機システム。
【請求項８】
請求項４に記載の計算機システムにおいて、
前記ストレージシステムの前記コントローラは、
前記第一の論理記憶領域から前記第二の論理記憶領域のデータ移行と、前記第三の論理記憶領域から前記第四の論理記憶領域のデータ移行とにおいて、それぞれ優先度を設け、
前記管理計算機の前記プロセッサは、
前記優先度の高いデータ移行のみデータ移行可能な容量を移行先の論理記憶領域で確保できれば、前記優先度の低いデータ移行について、データ移行が失敗することを前記出力部に出力することを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムにおいて、
前記管理計算機の前記プロセッサは、
前記第二の論理記憶領域で前記第一の論理記憶領域のデータを格納する領域が確保できなければ、確保できない領域の容量以上の容量を前記第二の記憶媒体に追加することを特徴とする計算機システム。
【請求項１０】
請求項１に記載の計算機システムにおいて、
前記管理計算機の前記プロセッサは、
前記データ移行の移行先となる前記第二の論理記憶領域でデータが確保できるか判定する場合は閾値で定めることを特徴とする計算機システム。
【請求項１１】
複数の記憶媒体から構成される複数の記憶領域を有するストレージシステムと、該ストレージシステムへデータを格納する計算機と、該ストレージシステムを管理する管理計算機とがネットワークを介して接続された計算機システムにおけるデータ移行監視方法において、
前記ストレージシステムは、
前記複数の記憶媒体のうちの少なくとも一以上の第一の記憶媒体及び第二の記憶媒体と第一の論理記憶領域及び第二の論理記憶領域とを対応付け、
前記第一の論理記憶領域及び前記第二の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当て、
前記割り当て後の前記第二の論理記憶領域を、前記第一の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を行うためのペア関係を設定し、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を実行し、
前記管理計算機は、
前記データ移行のためのペア関係が設定された後、前記データ移行を開始するまでの間に、
前記第一の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを監視し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することが可能か否かを判定し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することができなければ前記データ移行が失敗することを出力することを特徴とするデータ移行監視方法。
【請求項１２】
複数の記憶媒体から構成される複数の記憶領域を有するストレージシステムと、該ストレージシステムへデータを格納する計算機と、該ストレージシステムを管理する管理計算機とがネットワークを介して接続された計算機システムにおけるデータ移行監視プログラムにおいて、
前記ストレージシステムのコントローラが、
前記複数の記憶媒体のうちの少なくとも一以上の第一の記憶媒体及び第二の記憶媒体と第一の論理記憶領域及び第二の論理記憶領域とを対応付け、
前記第一の論理記憶領域及び前記第二の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当て、
前記割り当て後の前記第二の論理記憶領域を、前記第一の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を行うためのペア関係を設定し、
前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を実行するように機能させ、
前記管理計算機のプロセッサが、
前記データ移行のためのペア関係が設定された後、前記データ移行を開始するまでの間に、
前記第一の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを監視し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することが可能か否かを判定し、
前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することができなければ前記データ移行が失敗することを出力するように機能させることを特徴とするデータ移行監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置における記憶領域間のデータ移行の監視を行うための計算機システムに関する。
【背景技術】
【０００２】
計算機や記憶装置(以下、「ストレージ」という)を用いた計算機システムでは、一般にストレージが提供する記憶領域を計算機（以下、管理計算機と区別するために「ホスト計算機」という）がデータ格納用に利用する。このとき、ホスト計算機が格納するデータの増加にともない、ストレージの記憶領域(以下、「ボリューム」という)の容量を拡張する必要が出てくる。
【０００３】
しかし、ストレージのボリュームの拡張の一例としては、いったん計算機システムの稼動を止めてから、ボリュームを拡張して、再度計算機システムに拡張されたボリュームを使わせるものであった。よって以上のようなボリュームの拡張方法では、計算機システム上で運用する業務が停止してしまう欠点があった。
【０００４】
このような業務停止の対策として、ホスト計算機に認識させるストレージのボリュームの容量は変わらないようにし、実際のストレージでは、ホスト計算機からボリュームへの書き込みに合わせて、不足したボリュームの容量を自動的に拡張する技術が提案されている（特許文献１参照）。
【０００５】
以下の説明では、ストレージ内での物理領域からの割当増加によりホスト計算機に認識させるストレージのボリュームの容量を変更することなくストレージで管理可能なボリュームを「仮想ボリューム」と呼ぶ。また、ホスト計算機からボリュームの書き込みに合わせて、不足したボリュームの容量を拡張する実際の物理領域の仮想ボリュームに対する割当を管理するストレージの記憶領域を「仮想プール（仮想ボリュームプールともいう）」と呼ぶ。また仮想プールに登録するボリュームを「仮想プールボリューム」と呼ぶ。
【０００６】
また、法規制などによるデータの長期間の保管などに伴い、データの利用価値に応じた最適配置を行う必要性も出てきている。そのため、データの利用価値に応じたデータ移行技術がある。この技術の一例として複数のボリュームをグループとして一括管理し、そのボリュームをある特性をもった階層にデータ移行する技術が提案されている（特許文献２参照）。
【特許文献１】特開２００３−１５９１５号公報
【特許文献２】特開２００６−９９７４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１、２に記載の技術においては、次のような問題がある。
まず、ストレージ内でボリュームの容量の自動拡張を行うボリューム、すなわち仮想ボリューム間でも、従来のボリューム間と同様にデータ移行を扱うことになる。このため、従来のボリューム間で行なわれていたデータ移行が仮想ボリューム間で行なわれる。
【０００８】
すなわち、データ移行が実行されると、移行元となる仮想ボリュームで格納されたデータが、移行先となる仮想ボリュームのデータに反映されることになる。しかし、データ移行を行うときに、移行元となる仮想ボリュームに対する物理領域の実割当容量分が、移行先となる仮想ボリュームで確保できないと、データ移行ができないという問題が発生する。
【０００９】
また、データ移行においては、ストレージ内での運用の関係上、移行先となる仮想ボリュームを設定するときと、実際に移行を開始する時間が別々になる場合もある。その場合、データ移行設定後や、データ移行開始後でも、移行元となる仮想ボリュームのデータ書き込みは行なわれる。このため、移行元となる仮想ボリュームに対する物理領域の実割当容量は、データ移行が終了するまで変化してしまう。
【００１０】
そこで、本発明は、仮想ボリューム間でデータ移行を行う場合において、移行元となる仮想ボリュームと移行先となる仮想ボリュームに対する物理領域の割当容量を把握し、データ移行を正しく実行することができるデータ移行監視システム、データ移行監視方法及びデータ移行監視プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
本発明の計算機システムは、上記目的を達成するために、複数の記憶領域を構成する複数の記憶媒体と、前記記憶媒体に接続されるコントローラとを有するストレージシステムと、該ストレージシステムへデータを格納する計算機と、ネットワーク接続されるインターフェースと、前記インターフェースに接続されるプロセッサとを有する管理計算機と、を備えている。
【００１２】
ここで、本発明の計算機システムにおいて、ストレージシステムの前記コントローラは、前記複数の記憶媒体のうちの少なくとも一以上の第一の記憶媒体及び第二の記憶媒体と第一の論理記憶領域及び第二の論理記憶領域とを対応付け、前記第一の論理記憶領域及び前記第二の論理記憶領域に、前記計算機からの書き込み要求に応じて、それぞれのデータの格納領域を前記第一の記憶媒体及び第二の記憶媒体から割り当てを行う。
【００１３】
また、ストレージシステムの前記コントローラは、前記割り当て後の前記第二の論理記憶領域を、前記第一の論理記憶領域に前記計算機から書き込まれるデータを移行する領域とすると共に、前記第一の論理記憶領域から前記第二の論理記憶領域へデータ移行を行うためのペア関係を設定する。
【００１４】
また、本発明の計算機システムにおいて、前記管理計算機の前記プロセッサは、前記データ移行のためのペア関係が設定された後、前記データ移行を開始するまでの間に、前記第一の論理記憶領域に割り当てられたデータ格納領域の割当容量と、前記第二の論理記憶領域のデータ格納領域に割り当てる前記第二の記憶媒体の割当容量とを前記ネットワークを介して監視する。
【００１５】
そして、前記管理計算機の前記プロセッサは、前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することが可能か否かを判定し、前記第二の論理記憶領域に第一の論理記憶領域で格納されたデータを格納するための領域を確保することができなければ前記データ移行が失敗することを前記プロセッサに接続される出力部に出力する。
【発明の効果】
【００１６】
本発明によれば、ストレージシステムでデータ移行の移行元となる第一の論理記憶領域（移行元仮想ボリューム）と、移行先となる第二の論理記憶領域（移行先仮想ボリューム）を設定した後、管理計算機で移行元となる仮想ボリュームの実割当容量と移行先となる仮想ボリュームの実割当容量を対応つけた仮想プールの割当容量を監視して、その都度データ移行が可能か判定する。すなわち、移行元の仮想ボリュームの実割当容量分を移行先の仮想ボリュームの実割当容量を対応つけた第二の記憶媒体（移行先仮想プール）で確保できるか判定し、データ移行が不可となれば、ユーザに通知する。
【００１７】
これにより、ユーザが、データ移行設定から終了するまでの間で、仮想ボリュームのデータ移行ができないことを早期に知ることが可能であり、上記データ移行の対策、例えば移行先の仮想ボリュームの実割当容量を対応つけた仮想プールの容量拡張の対策を早期に行うことができるという効果を奏する。
【００１８】
また、移行先となる仮想ボリュームの実割当容量を対応つけた仮想プールの割当容量が確保できていなければ、移行先の仮想ボリュームの実割当容量を対応つけた仮想プールの容量を拡張して、移行先の仮想ボリュームの実割当容量を対応つけた仮想プールの容量の確保を行う。
【００１９】
また、移行先となる仮想ボリュームの実割当容量を対応つけた仮想プールの割当容量がないと検知したタイミングで、ユーザを介さず、自動的に移行先の仮想ボリュームの実割当容量を対応つけた仮想プールの容量を拡張することで、移行先の仮想ボリュームの実割当容量を対応つけた仮想プールの容量を早期に事前に確保することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の一実施の形態を、図１〜１５を参照して詳細に説明する。
図１は、本発明の第一の実施形態の計算機システムのシステム構成例を示す図である。
図１において、管理計算機１００は、本発明の計算機システムの全体の管理を行う計算機であり、ＣＰＵ（Central Processing Unit）１０１と、ストレージ１１０やホスト計算機１３０と通信するＩ／Ｆ（interface）１０２と、ユーザとの間で情報を入出力する入出力装置１０３と、ストレージ１１０における後述するデータ移行のための各種プログラム及び管理情報を記憶するメモリ１０４とを有している。
【００２１】
また、メモリ１０４には、ストレージ１１０における仮想ボリュームを設定するための仮想ボリューム定設プログラム１０５と、ストレージ１１０における仮想ボリュームを監視するための仮想ボリューム監視プログラム１０６と、ストレージ１１０における仮想ボリューム間でデータ移行を行うためのデータ移行設定プログラム１０７と、ストレージ１１０における仮想ボリューム間でデータ移行を監視するためのデータ移行監視プログラム１０８と、ストレージ１１０における複数の記憶領域間のデータ移行を管理するストレージ管理情報１０９が格納されている。
【００２２】
ここで、仮想ボリューム設定プログラム１０５は、本発明の実施の形態のストレージ１１０に仮想ボリュームを設定するための処理を実行するプログラムである。データ移行設定プログラム１０７は、本発明の実施の形態のストレージ１１０における仮想ボリューム間でデータ移行を行うための処理を実行するプログラムである。
【００２３】
また、仮想ボリューム監視プログラム１０６は、本発明の実施の形態のストレージ１１０における仮想ボリュームを監視するための処理を実行するプログラムである。データ移行監視プログラム１０８は、本発明の実施の形態のストレージ１１０における仮想ボリューム間でデータ移行を監視するための処理を実行するプログラムである。
【００２４】
ストレージ管理情報１０９は、仮想ボリューム設定プログラム１０５、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、及びデータ移行監視プログラム１０８が使用する情報である。仮想ボリューム設定プログラム１０５、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８の各プログラムは、ＣＰＵ１０１によって実行されるプログラムである。
【００２５】
ホスト計算機１１０は、ストレージ１１０に対してデータの書き込みを要求する計算機であり、ＣＰＵ１３１と、管理計算機１００やストレージ１１０と通信するＩ／Ｆ１３２と、ユーザとの間で情報を入出力する入出力装置１３３と、制御プログラム及び制御情報を記憶するメモリ１３４を有している。
【００２６】
ストレージ１１０は、コントローラ１１１と、ホスト計算機１３０の読み書き要求に関するデータＩ／Ｏの送受信や管理計算機１００からの操作要求に関する通信を行うＩ／Ｆ１１２と、ストレージ１１０のデータ書き込み又はデータ読み出しの性能向上のために高速な記憶装置として利用するキャッシュ１１３と、複数の記憶領域間の対応付け情報や複数の記憶領域の作成とその対応付け及びデータ移行を実行するためのプログラムを記憶するメモリ１１４とを備えている。
【００２７】
また、ストレージ１１０は、実ボリューム１１７と、仮想ボリューム１１８と、仮想プールボリューム１１９とから構成されている。実ボリューム１１７は、ホスト計算機１３０に記憶領域をそのまま提供することができる通常のボリュームであり、かつ次の仮想プールボリューム１１９として定義することができるものである。仮想ボリューム１１８は、ホスト計算機１３０に記録領域として提供するボリュームであるが、仮想ボリュームの記憶領域自体は、仮想ボリュームに記憶領域を提供する仮想ボリュームプール１２０に属する１または複数の仮想プールボリューム１１９の記憶領域とを関連付けることになる。仮想プールボリューム１１９は、前述のとおり仮想ボリューム１１８の記憶領域に関連付けられるボリュームであり、前述のとおり実ボリュームで定義される。また、仮想ボリュームプール１２０は、一つ以上の仮想プールボリューム１１９から構成され、ある仮想ボリューム１１８へ記憶領域を提供する仮想プールボリューム１１９の範囲を定めるものである。
【００２８】
ここで、データ移行の場合は、以下のような各ボリューム構成となる。例えば移行元の仮想ボリューム１１８において、移行元の仮想ボリューム１１８に記憶領域を提供する仮想ボリュームプール１２０と、仮想ボリュームプール１２０を構成する１または複数の仮想プールボリューム１１９がある。移行先の仮想ボリューム１１８も同様に、移行先の仮想ボリューム１１８に記憶領域を提供する仮想ボリュームプール１２０と、仮想ボリュームプール１２０を構成する１または複数の仮想プールボリューム１１９がある。そして、移行元の仮想ボリューム１１８に書き込まれたデータ、すなわち移行元の仮想ボリューム１１８に関連付けられた１または複数の仮想プールボリューム１１９の記憶領域のデータが、データ移行により、移行先の仮想ボリューム１１８に書き込まれ、その書き込まれたデータは、移行先の仮想ボリューム１１８に関連付けられた１または複数の仮想プールボリューム１１９の記憶領域に書き込まれる。これにより、例えば、書き込み速度が速い仮想ボリューム１１８から、書き込み速度の遅い仮想ボリューム１１８にデータ移行が実行される。
【００２９】
Ｉ／Ｆ１１２は、通信形態が異なるような場合で、例えば管理計算機１００との操作要求に関する通信がＩＰ（Internet Protocol）、ホスト計算機１３０からのデータＩ／Ｏに関する通信はＦＣ（Fibre  Channel）であれば、通信形態ごとに通信装置が別々に配置されることもある。また同じプロトコルでも、用途の違いや設定の違いにより、複数配置されることもある。
【００３０】
メモリ１１４には、ストレージ構成プログラム１１５と、ストレージ構成情報１１６が格納される。ストレージ構成プログラム１１５は、コントローラ１１１によって実行されることによりその各種機能が実現される。ストレージ構成情報１１６は、ストレージ構成プログラム１１５で使用される情報であり、ストレージ１１０で管理される情報である。
【００３１】
ストレージ構成プログラム１１５は、ストレージ１１０の構成について管理するためのプログラムであり、実ボリューム１１７、仮想ボリューム１１８、仮想プールボリューム１１９及び仮想ボリュームプール１２０を作成する機能、仮想ボリューム１１８に仮想プールボリューム１１９の記憶領域を割り当てる機能、実ボリューム１１７や仮想ボリューム１１８をＩ／Ｆ１１２経由でホスト計算機１３０などの計算機に認識させるため機能、実ボリューム１１７間や仮想ボリューム１１８間でのデータ移行を行う機能など、ストレージ１１０の機能を持つ。
【００３２】
実ボリューム１１７、仮想プールボリューム１１９は、ハードディスクやフラッシュメモリによる記憶媒体そのものである場合や、ハードディスクやフラッシュメモリを複数持って、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）構成のボリュームを実現する論理的なボリュームの場合もある。また外部接続されたストレージのボリュームを適用する場合もある。上記ＲＡＩＤ構成を構成するディスクやフラッシュメモリのグループをパリティグループと呼ぶ。
【００３３】
図２、図３、図４は、第一の実施の形態における、図１に示したストレージ１１０のストレージ構成情報１１６に格納される情報である。
ストレージ構成情報１１６には、図２に示す仮想ボリュームテーブル２００、図３に示す仮想プール容量テーブル３００、図４に示す仮想ボリューム割当テーブル４００がある。
【００３４】
図２において、仮想ボリュームテーブル２００は、仮想ボリューム１１８の識別子である仮想ボリュームＩＤ２０１と、仮想ボリューム１１８の実際の記憶領域として用いる仮想ボリュームプール１２０の識別子を示す仮想プールＩＤ２０２と、仮想ボリューム１１８がホスト計算機１３０に認識させている容量を示す仮想容量２０３と、実際に仮想ボリューム１１８に割り当てられた記憶領域の容量を示す実割当容量２０４で構成される。
【００３５】
仮想ボリューム１１８は、前述した通り、ホスト計算機１３０等の書き込み要求に応じて、実際の割当容量が増えていくことになる。ホスト計算機１３０に仮想ボリューム１１８を認識させるために、各仮想ボリューム１１８に対して、ＬＵＮ(論理ユニット番号)と、ＳＣＳＩ（Small Computer System Interface）のポートＩＤといった情報を利用することがある。この場合、ＬＵＮやポートＩＤを仮想ボリュームテーブル２００で管理しておいてもよい。
【００３６】
また仮想ボリューム１１８間でデータ移行を行う場合には、移行先の仮想ボリューム１１８は移行元の仮想ボリューム１１８のデータを移行するための記憶領域となるので、ストレージ１１０はホスト計算機１３０には移行先の仮想ボリューム１１８の記憶領域を認識させないこととしている。よって、各ボリュームがホスト計算機１３０に認識されているかどうかについてもストレージ構成プログラム１１５とストレージ構成情報１１６とを用いて、ストレージ１１０が管理する。
【００３７】
仮想プール容量テーブル２１０は、仮想ボリュームプール１２０の識別子である仮想プールＩＤ２１１と、仮想ボリュームプール１２０の全容量を示す全容量２１２と、仮想ボリュームプール１２０から仮想ボリューム１１８に割り当てた全容量を示す割当容量２１３と、割当容量の閾値を示す閾値２１４で構成される。閾値２１４は、容量で表され、その設定された閾値を超えるとストレージ１１０が仮想ボリュームプール１２０の容量を追加するための判断材料となる。
【００３８】
また、閾値設定がない場合には、閾値２１４は空白となる。またこの閾値を超えれば、仮想ボリューム１１８に容量を割り当てない、という動作をストレージ１１０がしてもよい。閾値２１４はユーザが指定可能としてもよいし、仮想ボリュームプール１２０の容量に応じてストレージ構成プログラム１１５が自動的に作成してもよい。
実ボリュームテーブル２２０は、実ボリュームＩＤ２２１と、容量２２２で構成される。各実ボリュームの容量を確認するテーブルである。
【００３９】
図３に示す仮想プールテーブル３００は、仮想ボリュームプール１２０の識別子を示す仮想プールＩＤ３０１と、仮想プールＩＤ３０１に属す仮想プールボリューム１１９の識別子を示す仮想プールボリュームＩＤ３０２と、仮想プールボリューム１１９が仮想ボリュームプール１２０に対して提供する記憶領域を割り当て済みの論理ブロックアドレス(以下、Logical Block Address、ＬＢＡと呼ぶ)を登録する割当ＬＢＡ３０４と、前記ＬＢＡに対応した割当済み記憶領域(以下、「チャンク」と呼ぶ)において、当該ボリューム仮想プール１２０に属するチャンクの識別子であるチャンクＩＤ３０３と、当該チャンクの割当状態を示す割当状況３０５で構成される。
【００４０】
割当状況３０５は、割当と未割当の値により割当状況を示し、割当であればチャンクが仮想ボリューム１１８に割当たっていることを、未割当であれば、どの仮想ボリューム１１８にも割り当たっていないことを示す。またチャンクが割り当てられている場合には割り当てられている仮想ボリューム１８８のＩＤも格納する。
【００４１】
例えば、チャンクＣ１１は、仮想プールＩＤ３０１がＰ１の仮想プールボリュームＩＤ３０２がＶ１００の先頭から、割当ＬＢＡ３０４が０ＧＢ目のアドレスを基点として先頭から２ＧＢ目のアドレスを終点とする合計２ＧＢの記憶領域から構成され、割当状況３０５は仮想ボリュームＶ１に割当済みであることを示している。
【００４２】
また図２に示した仮想プール容量テーブル２１０の全容量２１２は、各仮想ボリュームプール１２０にある全チャンクの容量、割当容量２１３は各仮想ボリュームプール１２０の割り当てられたチャンクの全容量をさすことになる。
【００４３】
図４に示す仮想ボリューム割当テーブル４００は、仮想ボリューム１１８の識別子を示す仮想ボリュームＩＤ４０１と、仮想ボリューム１１８がデータ格納に用いる仮想ボリュームプール１２０の識別子を示す、仮想プールＩＤ４０２と、仮想ボリューム１１８がホスト計算機１３０に対して提供する記憶領域空間のうち、実際に記憶領域を割当済みのＬＢＡを格納する割当ＬＢＡ４０４と、前記ＬＢＡに対応したチャンクの識別子を格納するチャンクＩＤ４０３で構成される。
【００４４】
例えば、仮想ボリュームＩＤ４０１がＶ２の仮想ボリューム１１８は、割当ＬＢＡ４０４が先頭から２ＧＢ目のアドレスを基点として先頭から４ＧＢ目のアドレスを終点とする合計２ＧＢの記憶領域を、チャンクＩＤ４０３がＣ１３で割当済みであることを示す。
【００４５】
図５は、第一の実施の形態における、図１に示した管理計算機１００のメモリ１０４で管理されるストレージ管理情報１０９に関するテーブルの一例である。
図１に示した管理計算機１００のメモリ１０４で管理されるストレージ管理情報１０９にはデータ移行テーブル５００が格納されている。
【００４６】
図５に示すデータ移行テーブル５００は、各データ移行関係を識別する識別子である移行ＩＤ５０１と、移行元のボリュームを示す移行元ボリュームＩＤ５０２と、移行元のボリュームの種別を示す移行元ボリューム種別５０３と、移行元ボリュームの移行先となるボリュームを示す移行先ボリュームＩＤ５０４と、移行先ボリュームの種別を示す移行先ボリューム種別５０５と、移行が可能かどうかを示す移行可否５０６と、データ移行の実行状態を示す実行状態５０７からなる。
【００４７】
移行元ボリューム種別５０３、移行先ボリューム種別５０５には「仮想」か「実」という文字が入り、「仮想」であれば、移行元ボリューム種別５０３又は移行先ボリューム種別５０５が仮想ボリュームであることを示し、「実」であれば移行元ボリューム種別５０３又は移行先ボリューム種別５０５が実ボリュームであることを示す。
【００４８】
移行可否５０６は、「可」か「否」の値が入り、「可」であれば、同じ行に示されている移行元の仮想ボリュームから移行先の仮想ボリュームへのデータ移行は可能であり、「否」であれば、同じ行に示されている移行元の仮想ボリュームから移行先の仮想ボリュームへのデータ移行はできないことを示している。
【００４９】
実行状態５０７は、データ移行が実際に行われているかどうかを示し、まだ実行されていなければ「待機」となり、実行している状態であれば「実行中」となる。またエラーとなったデータ移行を保存しておく場合には「エラー」という状態もある。
【００５０】
管理計算機１００が複数のストレージ１１０を管理する場合は、管理計算機１００は移行元ボリューム及び移行先ボリュームを一意に識別するために、ストレージ１１０の識別子を移行元ボリュームＩＤ５０２及び移行先ボリュームＩＤ５０４に入れておく。例えば、現在のデータ移行の対象となるストレージ１１０の識別子をＳ１とすると、管理計算機１００は、移行元ボリュームＩＤ５０２がＶ１のものは「Ｓ１−Ｖ１」、移行先ボリュームＩＤ５０４がＶ３のものは「Ｓ１−Ｖ３」などとして管理する。
【００５１】
図６は、ストレージ１１０におけるユーザのデータ移行の設定に関する入力画面を示す。
図６に示すデータ移行設定画面６００には、ユーザが移行元ボリュームを指定する移行元ボリューム６１１と、移行先ボリュームを指定する移行先ボリューム６１２の入力項目がある。また、各項目のデータ移行についてすぐに実行するか否かを指定する即時実行６１３、全項目のデータ移行についてすぐに実行するか否かを指定する即時実行６２１がある。さらに、移行元ボリューム６１１、移行先ボリューム６１２、即時実行６１３のデータを入力する欄を追加するときに用いるボタンである追加６１４と、ユーザの入力決定を管理計算機１００に伝えるボタンとなる設定６３１と、入力のキャンセルを行うボタンを示すキャンセル６３２が設けられている。移行元ボリューム６１１、移行先ボリューム６１２には、ボリュームの識別子が入力される。
【００５２】
追加６１４のボタンは、データ移行の設定のデータを追加するときに用いられる。この追加６１４のボタンを押せば、移行元ボリューム６１１、移行先ボリューム６１２及び即時実行６１３の各カラムが空欄で新規に表れ、その空欄にユーザはデータを設定することができる。
【００５３】
即時実行６１３、６２１には、ユーザはＹｅｓかＮｏを指定し、Ｙｅｓを指定して設定６３１のボタンを押せば、すぐにデータ移行が開始される。図５に示したデータ移行テーブルにもデータ移行の開始が反映され、実行状態５０７は「実行中」となる。また即時実行６１３、６２１の指定がＮｏであれば、移行元ボリューム６１１及び移行先ボリューム６１２の関係は図５に示したデータ移行テーブル５００に格納され、実行状態５０７は「待機」となる。
【００５４】
即時実行６１３と６２１の違いは、即時実行６１３では、各項目のデータ移行設定に関して、設定を行うときに用いるものであり、即時実行６２１は、移行元ボリューム６１１及び移行先ボリューム６１２に設定された全ての項目のデータ移行設定に対して設定するものである。よって、移行元ボリューム６１１及び移行先ボリューム６１２に設定されたすべてのデータ移行に対して、即時実行を共通に設定する場合は、即時実行６１２には設定せず、即時実行６２１にのみ設定すればよい。
【００５５】
また設定６３１のボタンをユーザが押した時点、又は、移行元ボリューム６１１と移行先ボリューム６１２の指定を両方指定した時点で、移行元ボリューム６１１と移行先ボリューム６１２の容量の差がある場合には、ストレージ１１０はエラーとして、データ移行の設定を行なわないようにする。この場合、図２に示した仮想ボリュームは仮想容量２０３の値、実ボリュームは容量２２２の値となる。
【００５６】
また設定６３１のボタンをユーザが押した後、図５で示したデータ移行テーブルの属性を表示して、ユーザに表示内容を確認させるようにしてもよい。
また複数のストレージ１１０を管理計算機１００で管理している場合には、ユーザはストレージ１１０の識別子(例：Ｓ１)も合わせて移行元ボリューム６１１(例：Ｓ１−Ｖ１)、移行先ボリューム６１２(例：Ｓ１−Ｖ３)のように指定する。
【００５７】
図７は第一の実施の形態における、データ移行の可否を判定する処理を行うフローチャートの一例である。
図７においては、各処理及び判断は、管理計算機１００の仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することによりＣＰＵ１０１が行うものである。
【００５８】
まず、データ移行設定プログラム１０７を実行することによりＣＰＵ１０１が、ユーザからのデータ移行プラン（データ移行設定）を受け付ける(ステップＳ７００)。ステップＳ７００において、ユーザはストレージ１１０の図６で示したデータ移行設定画面６００により設定を行う。そして、図６においてユーザが設定ボタン６３１を押したことを契機に、ＣＰＵ１０１が図６で示したデータ移行設定の情報を図５で示したデータ移行テーブルに格納し、ステップＳ７０１に進む。
【００５９】
例えば、図６の例に従えば、移行元ボリューム６１１としてＶ１１、移行先ボリューム６１２としてＶ１３の組み合わせ(Ｖ１１−Ｖ１３と以下記す)、移行元ボリューム６１１としてＶ１２、移行先ボリューム６１２としてＶ１４の組み合わせ(Ｖ１２−Ｖ１４と以下記す)、移行元ボリューム６１１としてＶ３０、移行先ボリューム６１２としてＶ４０の組み合わせ(以下、「Ｖ３０−Ｖ４０」と記す)がデータ移行設定の情報として設定されていることがわかる。
【００６０】
次に、ＣＰＵ１０１は、仮想ボリューム監視プログラム１０８を実行することにより、図２に示したストレージ構成情報１１６の仮想ボリュームテーブル２００から取得する(ステップＳ７０１）。このストレージ構成情報１１６の取得は、図６に示したユーザのデータ移行要求を元に、移行元仮想ボリュームの割当容量をストレージ１１０のストレージ構成プログラム１１５を介して行われる。そしてステップＳ７０２に進む。なお、ストレージ１１０のストレージ構成プログラム１１５は、コントローラ１１１により実行される。
【００６１】
例えば、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４、Ｖ３０−Ｖ４０のデータ移行では、移行元ボリュームＶ１１、Ｖ１２が仮想ボリュームであることが、図２の仮想ボリュームテーブル２００の移行元ボリュームＶ１１、Ｖ１２に仮想容量２０３が割当てられていることからわかる。よって、ＣＰＵ１０１が、Ｖ１１、Ｖ１２の仮想ボリュームの実割当容量２０４を取得する。図２の例に従えば、Ｖ１１の仮想ボリュームの実割当容量２０４が２Ｇ、Ｖ１２の仮想ボリュームの実割当容量２０４が２Ｇであることがわかる。
【００６２】
次に、ＣＰＵ１０１は、仮想ボリューム監視プログラム１０８を実行することにより、図６に示したユーザのデータ移行要求を元に、移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当状況を取得する(ステップＳ７０２）。すなわち、ステップＳ７０２では、ＣＰＵ１０１は、ストレージ１１０のストレージ構成プログラム１１５を介し、図２に示したストレージ構成情報１１６の仮想ボリュームテーブル２００と図３に示した仮想プールテーブル３００から仮想プールの割当状況を取得する。そしてステップＳ７０３に進む。なお、ストレージ１１０のストレージ構成プログラム１１５は、コントローラ１１１により実行される。
【００６３】
例えば、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４、Ｖ３０−Ｖ４０のデータ移行では、移行先ボリュームＶ１３、Ｖ１４が仮想ボリュームであること、そして移行先ボリュームＶ１３、Ｖ１４は仮想プールＰ１３から記憶領域を割当てられることが図２の仮想ボリュームテーブル２００からわかる。つまり、図２に示すように、仮想ボリュームテーブル２００の移行先ボリュームＶ１３、Ｖ１４に仮想容量２０３と仮想プールＩＤ２０２が割当てられている。よって、ここでは、ＣＰＵ１０１は、仮想プールＩＤ２０２がＰ１３の仮想プールの割当状況を取得することになり、図２の仮想プール容量テーブル２１０の例に従えば、仮想プールＩＤ２１１がＰ１３の仮想プールの割当容量２１３は２Ｇであることがわかる。
【００６４】
そして、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することにより、ステップＳ７０１で取得した各移行元ボリュームの割当容量を確保できるか否かを判断する（ステップＳ７０３）。この判断は、ステップＳ７０２で取得した各移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当容量があるかどうかによって行われる。判断ステップＳ７０３で上記容量を確保できると判断された場合は、ステップＳ７０４に進み、確保できないと判断された場合はステップＳ７０７に進む。判断ステップＳ７０３では、図２の仮想プール容量テーブル２１０の仮想プールの割当容量２１３による容量確保が閾値２１４を超えない限度で可能か否かが判断される。
【００６５】
例えば、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４、Ｖ３０−Ｖ４０のデータ移行では、ＣＰＵ１１０１は、Ｖ１１、Ｖ１２の移行元仮想ボリュームで割り当てられた容量がＶ１３、Ｖ１４の移行先仮想ボリュームに記憶領域を割り当てる仮想プールＰ１３から確保できるかどうかを判定する。
【００６６】
前記ステップＳ７０１及びステップＳ７０２に従えば、移行元ボリュームＶ１１の割当容量は２Ｇ、移行元ボリュームＶ１２の割当容量は２Ｇ、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量が２Ｇであることがわかっている。よって、移行元仮想ボリュームＶ１１とＶ１２の割当容量の合計が４Ｇであり、また移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量が２Ｇであるので、これとあわせて合計６Ｇの容量を移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で確保しておく必要がある。
【００６７】
ここで、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３に関する図２の仮想プール容量テーブル２１０の閾値２１４の値を見ると８Ｇであることがわかる。よってこの場合は、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で容量が確保できるものとしてステップＳ７０４に進む。
【００６８】
また移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ３０−Ｖ４０のデータ移行においては、図２の実ボリュームテーブル２２０の実ボリュームＩＤ２２１から、移行先が仮想ボリュームではなく、直接実ボリュームであることがわかるので、割当は可能であると判定し、ステップＳ７０４に進む。
【００６９】
ステップＳ７０４、ステップＳ７０７では、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することによりデータ移行開始指示が来ているか否かを判断する。例えば、図６で示したデータ移行設定画面６００で即時実行６１３がＹｅｓである場合や、待機中となるデータ移行設定でも、ユーザの指示や管理計算機１００やホスト計算機１３０の指示で、データ移行開始要求が来たときには、ＣＰＵ１０１が、データ移行開始指示が来ているものと判断する。
【００７０】
判断ステップＳ７０４の場合に、データ移行開始指示が来ていればステップＳ７０５に進み、データ移行開始指示が来ていなければステップＳ７０６に進む。判断ステップＳ７０７の場合、データ移行開始指示が来ていればステップ７０８に進み、データ移行開始指示が来ていなければステップＳ７０９に進む。
【００７１】
例えば、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４、Ｖ３０−Ｖ４０のデータ移行の例に従えば、判断ステップＳ７０３で上記容量を確保可能とする判断を元に、判断ステップＳ７０４に進んでいることがわかる。この中で、図６で示したデータ移行設定画面６００で即時実行６１３がＹｅｓとなっているデータ移行は移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ３０−Ｖ４０の場合なので、このデータ移行の場合はステップＳ７０５に進むことがわかる。移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行については、図６で示したデータ移行設定画面６００で即時実行６１３はＮｏとなっているので、ステップＳ７０６に進む。
【００７２】
ステップＳ７０５はデータ移行設定プログラム１０７を実行することによりＣＰＵ１０１が、データ移行開始をストレージ１１０のコントローラ１１１に指示して、処理を終了する。判断ステップＳ７０４でデータ移行開始指示が来ていなければデータ移行開始指示が来るまでステップＳ７０６でＣＰＵ１０１が監視等を行ない、ステップＳ７０５のデータ移行終了まで管理してもよい。
【００７３】
例えば、前記データ移行の例において、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ３０−Ｖ４０のデータ移行については、図６で示したデータ移行設定画面６００で即時実行６１３がＹｅｓとなっているため、ステップＳ７０５に進むことがわかる。よって、ＣＰＵ１０１がこのデータ移行の設定に応じてステップＳ７０５のデータ移行を開始して、本フローチャートによる動作は終了する。
【００７４】
判断ステップＳ７０４でデータ移行開始指示が来ていなければ、仮想ボリューム監視プログラム１０６を実行することによりＣＰＵ１０１が、移行元仮想ボリュームの割当容量と移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当容量を監視する（ステップＳ７０６）。そしてステップＳ７０１に戻って、ステップＳ７０１からステップＳ７０４までの処理及び判断を繰り返す。
【００７５】
ステップＳ７０６の監視方法は、仮想ボリューム監視プログラム１０６を実行することによりＣＰＵ１０１が、ストレージ１１０のストレージ構成プログラム１１５から仮想ボリュームや仮想プールに割当が起こったことを通知してもらうようにしてもよいし、定期的にストレージ１１０のストレージ構成プラグラム１１５から情報を取得するようにしてもよい。そして、ストレージ１１０のコントローラ１１１からＣＰＵ１０１がデータを取得するタイミングになればステップＳ７０１に進む。判断ステップＳ７０４でデータ移行開始の指示を受けたときも、ストレージ１１０のコントローラ１１１からＣＰＵ１０１がデータを取得する、すなわちステップＳ７０１に戻るタイミングとしてもよい。
【００７６】
例えば、前記データ移行の例においては、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行の図６で示したデータ移行設定画面６００で即時実行６１３がＮｏの場合が、ステップＳ７０６に進むことがわかる。そして、ＣＰＵ１０１が、これらのデータ移行の移行元仮想ボリュームであるＶ１１とＶ１２、移行先の仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量の状況を監視することになる。そして、ストレージ１１０のコントローラ１１１からＣＰＵ１０１がデータを取得するタイミングに従ってステップＳ７０１に戻る。
【００７７】
そして、ステップＳ７０６でＣＰＵ１０１が監視を行っている時点で、移行先の仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３から、さらに追加された仮想ボリュームＶ１５に２Ｇ分の記憶領域の割当が起こったとする。
【００７８】
そのとき、ステップＳ７０１では移行元仮想ボリュームＶ１１、Ｖ１２の割当容量は変わらないが、ステップＳ７０２にて移行先の仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量が追加された仮想ボリュームＶ１５に対する２Ｇ分の割当分だけ増加する。
【００７９】
このとき、図２に示した仮想ボリュームテーブル２００の仮想ボリュームＩＤ２０１がＶ１５の情報において、実割当容量２０４が２Ｇから４Ｇに、仮想プール容量テーブル２１０の仮想プールＩＤ２１１がＰ１３の情報において、割当容量２１３が２Ｇから４Ｇに更新される。また、図３に示した仮想プールテーブル３００のチャンクＩＤ３０３がＣ１３２の割当状況３０５が「未割当」から「割当（Ｖ１５）」に、図４に示した仮想ボリューム割当テーブル４００の仮想ボリュームＩＤ４０１の情報でＶ１５の情報が追加され、仮想ボリュームＩＤ４０１がＶ１５、仮想プールＩＤ４０２がＰ１３、チャンクＩＤ４０３がＣ１３２、割当ＬＢＡ４０３が「２Ｇ−４Ｇ」というように情報がそれぞれ更新される。
【００８０】
ただ、この場合でも、判断ステップＳ７０３では、移行元仮想ボリュームＶ１１の割当容量が２Ｇ、移行元仮想ボリュームＶ１２の割当容量が２Ｇで、合計が４Ｇであり、移行先仮想ボリュームＶ１３、Ｖ１４に関係する仮想プールＰ１３の割当容量は４Ｇのままであるため、仮想プールＰ１３の閾値２１４である８Ｇをまだ超えず、仮想プールＰ１３は容量を確保できることがわかる。よって、そのままステップＳ７０４、Ｓ７０６と進み、ＣＰＵ１０１が、これらのデータ移行の移行元仮想ボリュームであるＶ１１とＶ１２、移行先の仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量の状況の監視を続ける。
【００８１】
そしてまたステップＳ７０６で、ＣＰＵ１０が仮想プールＰ１３の割当容量の状況を監視することにより管理を行なっている時点で、移行元仮想ボリュームＶ１１がホスト計算機１３０の書き込みにより２Ｇ分の割当が起こったとする。そのとき、ステップＳ７０１では移行元仮想ボリュームＶ１１の割当容量は４Ｇとなる。このとき、図２に示した仮想ボリュームテーブル２００の仮想ボリュームＩＤ２０１がＶ１１の情報において、実割当容量２０４が２Ｇから４Ｇに更新され、仮想プール容量テーブル２１０の仮想プールＩＤ２１１がＰ１１の情報において、割当容量２１３が２Ｇから４Ｇに更新される。
【００８２】
また、図３に示す仮想プールテーブル３００のチャンクＩＤ３０３がＣ１１２の割当状況３０５が「未割当」から「割当(Ｖ１１)」に更新される。また、図４に示す仮想ボリューム割当テーブル４００の仮想ボリュームＩＤ４０１の情報でＶ１１の情報が追加され、仮想ボリュームＩＤ４０１がＶ１１、仮想プールＩＤ４０２がＰ１１、チャンクＩＤ４０３がＣ１１２、割当ＬＢＡ４０４が「０Ｇ−２Ｇ」というように情報がそれぞれ更新される。
【００８３】
そして、判断ステップＳ７０３では、移行元仮想ボリュームＶ１１の割当容量４Ｇ、移行元仮想ボリュームＶ１２の割当容量２Ｇで、合計が６Ｇである。また、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量は４Ｇである。したがって、これらをあわせて合計１０Ｇの容量を移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で確保しなくてはならない。
【００８４】
しかし、この必要容量は移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の閾値２１４の８Ｇを超えていることがわかる。よって、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で容量が確保できないことがわかる。ここでまだ閾値２１４が１０Ｇ（又はなし）となれば、まだ容量は確保できるものとして処理は進められる。
【００８５】
この場合、移行元仮想ボリュームＶ１１、Ｖ１２のどちらか一方なら、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で割当容量は確保できるが、どちらを優先的に確保するかを決めなくてはならない。このため、判断ステップＳ７０３で、ＣＰＵ１０１が、両方の移行元仮想ボリュームＶ１１、Ｖ１２の割当容量が移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で確保できなければ、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で容量が確保できないものと判定し、ステップＳ７０７に進むことになる。
【００８６】
移行元仮想ボリュームＶ１１、Ｖ１２のどちらか一方を選んで処理が行われる実施の形態例については、後述する。また後述するように、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行が一括で同時にデータ移行を行うように設定されていたら、前記と同様に、ＣＰＵ１０１が容量は確保できないと判定し、ステップＳ７０７に進むことになる。
【００８７】
そして、判断ステップＳ７０７では、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行の場合について、ＣＰＵ１０１がデータ移行開始の指示が来たか否かを判断する。判断ステップＳ７０７で、図６に示すようにこの場合のデータ移行の設定は即時実行６１３がＮｏとなっているので、まだ、データ移行開始の指示がストレージ１１０や管理計算機１００などから来ていないとＣＰＵ１０１が判断する。このとき、ステップ７０９に進む。もし判断ステップＳ７０７で、データ開始指示が出ていれば、ステップＳ７０８に進む。
【００８８】
ステップＳ７０８では、データ移行監視プログラム１０８を実行することによりＣＰＵ１０１が、データ移行ができないと判断して、ストレージ１１０や管理計算機１００に対してエラーを通知する。そして処理を終了する。
【００８９】
例えば、上記の例において、ここでは、判断ステップＳ７０７で、データ移行開始指示が来ているので、追加された仮想ボリュームＶ１５の割当容量が増えたことにより、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行が、これ以上実行できないものとして、ＣＰＵ１０１が、エラーをストレージ１１０や管理計算機１００のユーザに通知する。
【００９０】
ステップＳ７０９では、ＣＰＵ１０１がデータ移行監視プログラム１０８を実行することにより、現時点ではデータ移行ができなることをストレージ１１０や管理計算機１００のユーザに警告する。そして処理を終了する。
【００９１】
例えば、上記の例において、ここでは、判断ステップＳ７０７で、データ移行開始指示が来ていないので、追加された仮想ボリュームＶ１５の割当容量が増えたことにより、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行が、現時点ではできない。したがって、ＣＰＵ１０１は、今後該当する移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の容量追加を行うことを、ストレージ１１０や管理計算機１００のユーザに通知することになる。
【００９２】
また、ステップＳ７０９においては、どのように移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の容量不足を解消すればよいかを、ＣＰＵ１０１が、ストレージ１１０や管理計算機１００に提示するようにしてもよい。例えば、ＣＰＵ１０１が、容量が２Ｇ不足しているなら、２Ｇを確保でき、かつ移行先ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３と同じパリティグループからボリュームを作成する。そして、作成したボリュームを不足している仮想プールＰ１３の仮想プールボリューム１１９としてストレージ構成情報１１６に登録するように警告と併せて指示してもよい。
【００９３】
また、ＣＰＵ１０１が、全く別のパリティグループからボリュームを作成して、作成したボリュームを不足している仮想プールＰ１３の仮想プールボリューム１１９としてストレージ構成情報１１６に登録するように通知してもよい。また、データ移行におけるデータの保守性やストレージ１１０の階層管理などの理由から、移行先ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の仮想プールボリューム１１９を、移行元の仮想ボリュームＶ１１、Ｖ１２が用いているパリティグループからは作らないというルールをストレージ構成情報１１６に設けてもよい。
【００９４】
その場合、移行先仮想ボリュームＶ１３、Ｖ１４が使用しているパリティグループでは、ボリュームを作成する容量が多く残っていても、ＣＰＵ１０１は、移行先の仮想プールＰ１３で使用しているパリティグループは容量がほとんど使用されている、という状況では、容量が足りないとして警告してもよい。この場合ユーザは別のディスクをストレージ１１０に装填するなどして、新規パリティグループを作成するなどの対策をとって、ボリュームを作成することになる。
【００９５】
また、図５のデータ移行テーブル５００の例に示す移行元ボリュームＩＤ５０２と移行先ボリュームＩＤ５０５がＶ５０−Ｖ８０のような実ボリュームから仮想ボリュームへのデータ移行、又は移行元ボリュームＩＤ５０２と移行先ボリュームＩＤ５０５がＶ７０−Ｖ６０のような仮想ボリュームから実ボリュームへのデータ移行についても、上記フローチャートの処理を通しても影響はない。
【００９６】
しかし、移行元ボリュームＩＤ５０２と移行先ボリュームＩＤ５０５がＶ５０−Ｖ８０のような実ボリュームから仮想ボリュームへのデータ移行は、実ボリュームＶ５０の容量分を移行先の仮想ボリュームＶ８０が用意できなければならない。したがって、移行先側の仮想ボリュームＶ８０にも実ボリュームＶ５０と一律に同じ容量が必要となる。よって、図７の処理は必要ないことになる。
【００９７】
また、移行元ボリュームＩＤ５０２と移行先ボリュームＩＤ５０５がＶ７０−Ｖ６０のような仮想ボリュームから実ボリュームへのデータ移行についても、ホスト側への容量表示を考えれば、仮想ボリュームＶ７０の割当容量に関係なく、実ボリュームＶ６０は、仮想ボリュームＶ７０の仮想容量と一律に同じ容量をもたなくてはならないので、図７の処理は必要とはならない。
【００９８】
図８はデータ移行開始後、データ移行の可否を判定する処理を行うフローチャートの一例である。
図８における各処理及び判断は、管理計算機１００の仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することによりＣＰＵ１０１が行うものである。
【００９９】
まず、ＣＰＵ１０１は、データ移行設定プログラム１０７を実行することにより、データ移行開始をストレージ１１０のコントローラ１１１に指示し、ストレージ１１０はデータ移行を開始する（ステップＳ８００）。このステップＳ８００の処理は図７のステップＳ７０５と同じ処理である。
【０１００】
次に、ＣＰＵ１０１は、仮想ボリューム監視プログラム１０６を実行することにより、移行元仮想ボリュームの割当容量と移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当容量を監視する（ステップＳ８０１）。
ステップＳ８０１の処理は図７のステップＳ７０６と同じ処理である。
【０１０１】
続いて、ＣＰＵ１０１は、仮想ボリューム監視プログラム１０８を実行することにより、図６に示したユーザのデータ移行要求を元に、移行元仮想ボリュームの割当容量をストレージ１１０のストレージ構成プログラム１１５を介し、図２に示したストレージ構成情報１１６の仮想ボリュームテーブル２００から取得する（ステップＳ８０２）。なお、ストレージ１１０のストレージ構成プログラム１１５は、コントローラ１１１が実行する。
ステップＳ８０２の処理は図７のステップＳ７０１と同じ処理である。
【０１０２】
次に、ＣＰＵ１０１は、仮想ボリューム監視プログラム１０８を実行することにより、図６に示したユーザのデータ移行要求を元に、移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当状況取得を取得する（ステップＳ８０３）。このステップＳ８０３では、ストレージ１１０のストレージ構成プログラム１１５を介し、図２に示したストレージ構成情報１１６の仮想ボリュームテーブル２００と図３に示した仮想プールテーブル３００から仮想プールの割当状況取得を取得する。なお、ストレージ１１０のストレージ構成プログラム１１５は、コントローラ１１１が実行する。
ステップＳ８０３の処理は図７のステップＳ７０２と同じ処理である。
【０１０３】
次に、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することにより、ステップＳ８０２で取得した各移行元ボリュームの割当容量を、ステップＳ８０３で取得した各移行先仮想ボリュームに記憶領域を割り当てる仮想プールの割当容量で、確保できるか否かを判断する（ステップＳ８０４）。判断ステップＳ８０４で上記容量を確保できればステップＳ８０５に進み、確保できなければステップＳ８０６に進む。判断ステップＳ８０４では、図２の仮想プール容量テーブル２１０の仮想プールの割当容量２１３による容量確保は閾値２１４を超えない限度で可能か否かをＣＰＵ１０１が判断する。
【０１０４】
判断ステップＳ８０４で上記容量を確保できると判断されたときは、データ移行監視プログラム１０８を実行することにより、データ移行が終了したかどうかが判断される（ステップＳ８０５）。判断ステップＳ８０５でデータ移行が終了していると判断されれば処理を終了し、データ移行がまだ終わっていないと判断された場合は、ステップＳ８０１に戻って、ステップＳ８０１からステップＳ８０５までの処理及び判断を繰り返す。
【０１０５】
ＣＰＵ１０１は、判断ステップＳ８０４で上記容量を確保できなければ、データ移行監視プログラム１０８を実行することにより、データ移行が現時点では正常に終了できないことをストレージ１１０や管理計算機１００のユーザに警告する（ステップＳ８０６）。そして処理を終了する。
【０１０６】
例えば、図２、図３、図４の仮想ボリュームの状態で、図６の例から、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３、Ｖ１２−Ｖ１４のデータ移行において、即時実行６１３がＹｅｓとなった場合、又は図７の例から、追加された仮想ボリュームＶ１５の容量が割当たらず、ステップＳ８００のデータ移行開始指示が来た場合には、図８に示すフローチャートのステップＳ８０１以降の処理が行われることになる。
【０１０７】
ステップＳ８００のデータ移行開始に伴い、現在、移行元仮想ボリュームＶ１１、Ｖ１２に割当てられている容量分が、移行先仮想ボリュームＶ１３、Ｖ１４に割当てられる。すなわち、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１１−Ｖ１３のデータ移行の移行先となる仮想ボリュームＶ１３に２ＧＢ分の実容量が割当てられ、移行元ボリューム６１１と移行先ボリューム６１２の組み合わせがＶ１２−Ｖ１４のデータ移行の移行先となる仮想ボリュームＶ１４に２ＧＢ分の実容量が割当てられる。よって、ボリュームの状態としては図２、図３、図４の値は以下のように変更される。
【０１０８】
図２に示した仮想ボリュームテーブル２００の仮想ボリュームＩＤ２０１がＶ１３の情報において、実割当容量２０４が０Ｇから２Ｇに更新され、仮想ボリュームＩＤ２０１がＶ１４の情報において、割当容量２０４が０Ｇから２Ｇに更新されるので、仮想プール容量テーブル２１０の仮想プールＩＤ２１１がＰ１３の情報において、割当容量２１３が２Ｇから移行先仮想ボリュームＶ１３、Ｖ１４の割当て増加分を加えた６Ｇに更新される。
【０１０９】
また、図３に示した仮想プールテーブル３００のチャンクＩＤ３０３がＣ１３２の割当状況３０５が「未割当」から「割当（Ｖ１３）」に更新され、チャンクＩＤ３０３がＣ１３３の割当状況３０５が「未割当」から「割当（Ｖ１４）」に更新される。
【０１１０】
また、図４に示した仮想ボリューム割当テーブル４００の情報で仮想ボリュームＩＤ４０１がＶ１３、Ｖ１４の情報が追加される。すなわち、仮想ボリュームＩＤ４０１がＶ１３、仮想プールＩＤ４０２がＰ１３、チャンクＩＤ４０３がＣ１３２、割当ＬＢＡ４０４が「０Ｇ−２Ｇ」のレコードが追加される。また、仮想ボリュームＩＤ４０１がＶ１４、仮想プールＩＤ４０２がＰ１３、チャンクＩＤ４０３がＣ１３３、割当ＬＢＡ４０４が「０Ｇ−２Ｇ」のレコードがそれぞれ追加されるように情報が更新される。
【０１１１】
上記の環境では、移行元仮想ボリュームＶ１１、Ｖ１２の容量が移行先仮想ボリュームＶ１３、Ｖ１４側で確保できるので、データ移行が終了するまで、ステップＳ８０１、ステップＳ８０２、ステップＳ８０３、ステップＳ８０４、ステップＳ８０５の処理を繰り返す。あるいは、判断ステップＳ８０５で移行先仮想ボリュームＶ１３、Ｖ１４又は追加された仮想ボリュームＶ１５に割当が起こるまで処理が待機される。
【０１１２】
しかし、判断ステップＳ８０５でデータ移行が終わる前に、移行元仮想ボリュームＶ１１と追加された仮想ボリュームＶ１５にそれぞれ割当が２ＧＢの容量分起こったとする。この場合、図２、図３、図４の値は以下のように変更される。
【０１１３】
図２に示した仮想ボリュームテーブル２００の仮想ボリュームＩＤ２０１がＶ１１のとき、割当容量２０４が２Ｇから４Ｇに更新され、さらに仮想ボリュームＩＤ２０１がＶ１５のとき、割当容量２０４が２Ｇから４Ｇに更新される。また、仮想プール容量テーブル２１０の仮想プールＩＤ２１１がＰ１３のとき、割当容量２１３が２Ｇから４Ｇに更新される。この増加分は上記Ｖ１５の割り当て増加分に相当している。ここで、仮想プールＩＤ２１１がＰ１３のとき、上記の移行先仮想ボリュームＶ１３、Ｖ１４の割当て増加分と追加された仮想ボリュームＶ１５の割当て増加分との合計の割当容量が６Ｇから１０Ｇに更新されるので、全容量２１２の１０Ｇに対する未割当容量が４Ｇから０Ｇになる。
【０１１４】
図３に示した仮想プールテーブル３００のチャンクＩＤ３０３がＣ１１２の割当状況３０５が「未割当」から「割当（Ｖ１１）」に、チャンクＣ１３４の割当状況が「未割当」から「割当（Ｖ１５）」に更新される。また、図４に示した仮想ボリューム割当テーブル４００において仮想ボリュームＩＤ４０１にＶ１１、Ｖ１５の情報が追加される。すなわち、仮想ボリュームＩＤ４０１にＶ１１、仮想プールＩＤ４０２にＰ１１、チャンクＩＤ４０３にＣ１１２、割当ＬＢＡ４０４に「０Ｇ−２Ｇ」のレコードが追加される。また、仮想ボリュームＩＤ４０１にＶ１５、仮想プールＩＤ４０２にＰ１３、チャンクＩＤ４０３にＣ１３４、割当ＬＢＡ４０４に「２Ｇ−４Ｇ」のレコードがそれぞれ追加される。
【０１１５】
ここで、ＣＰＵ１０１がステップＳ８０３の処理を行うとき、移行元仮想ボリュームＶ１１の割当容量は４Ｇとなり、移行元仮想ボリュームＶ１２の割当容量が２Ｇとなるため合計が６Ｇとなる。また、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量は、移行元仮想ボリュームＶ１１、Ｖ１２のデータ移行時の割当を差し引いても４Ｇとなる。よって、合計１０Ｇの割当容量が移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で必要となり、この値は閾値２１４の８Ｇを超えることになる。従って、判断ステップＳ８０４でこの場合は容量が仮想プールＰ１３で確保できないと判定し、ステップＳ８０６に進むことになる。
【０１１６】
そして上記の処理からステップＳ８０６においては、ストレージ１１０や管理計算機１００のユーザに警告して処理を終了する。ストレージ１１０や管理計算機１００のユーザに警告する仕方は、今回の例の場合、以下のようになる。移行元仮想ボリュームＶ１２のデータ移行分は仮想プールＰ１３で確保できているので、ＣＰＵ１０１がその旨を伝え、移行元仮想ボリュームＶ１１のデータ移行だけが現状の状態ではできないことをストレージ１１０や管理計算機１００のユーザに伝える。またどれだけ容量を確保すべきかを通知してもよい。この場合、上記説明から２Ｇ分の容量が足りないことをＣＰＵ１０１がユーザに伝えればよい。
【０１１７】
図９はストレージ１１０におけるユーザにデータ移行状態を示す画面であり、ユーザにデータ移行状態の警告やエラーを通知する画面である。
図９に示すデータ移行状態表示画面９００では、移行元ボリュームのＩＤを示す移行元ボリューム９０１と、データ移行の可否の判定を示す移行可否９０２と、移行元ボリューム種別を示す移行元ボリューム種別９０３と、移行元のボリュームの仮想容量又は実ボリュームのそのものの容量を示す移行元仮想容量９０４と、移行元仮想ボリュームの実割当容量を示す移行元実割当容量９０５とが表示される。
【０１１８】
また、データ移行状態表示画面９００では、関連する移行元ボリューム、特に移行元実割当容量合計９０６と、移行先ボリューム９０７と、移行先ボリューム種別９０８と、移行先容量９０９と、移行先仮想プール９１０とが表示される。ここで、移行元実割当容量合計９０６は移行先側の仮想ボリュームが同じ仮想プールに関係するボリュームの実割当容量の合計を示すものであり、移行先ボリューム９０７は、移行先ボリュームのＩＤを示すものである。また、移行先仮想容量９０８は、移行先のボリュームの仮想容量であり、実ボリュームはそのものの容量を示している。移行先仮想プール９１０は、移行先仮想ボリュームに関係する仮想プールのＩＤを表すものである。
【０１１９】
また、データ移行状態表示画面９００では、移行先仮想プール全容量９１１と、移行先仮想プール割当容量９１２と、「移行元割当容量合計＋移行先仮想プール割当容量」９１３と、移行先仮想プール閾値９１４と、データ移行の実行状態を示す実行状態９１５と、「アドバイス画面」９１６と、他の仮想ボリュームへの影響を表示する「他への影響画面」９１７とが表示される。
移行先仮想プール全容量９１１は、前記移行先仮想プール９１０の全容量を示すものであり、移行先仮想プール割当容量９１２は、前記移行先仮想プール９１０が関係する仮想ボリュームに割り当てている容量の合計を示している。
また、「移行元割当容量合計＋移行先仮想プール割当容量」９１３は、前記移行元実割当容量合計９０６と前記移行先仮想プール割当容量９１２の合計を示すものであり、移行先仮想プール閾値９１４は、文字通り前記移行先仮想プールの閾値を示している。アドバイス画面９１６は、移行可否が「否」となっているデータ移行に対して取れる対策を表示する画面である。
【０１２０】
この表示画面は、図７のステップＳ７０８やステップＳ７０９、図８のステップＳ８０６、後述する図１０のステップＳ１００４、図１４のステップＳ１４０３、図１５のステップＳ１５０４などの警告やエラーの表示画面の一例としても用いられ、またデータ移行状態を全体的にユーザが把握する場合にも用いることができる。
【０１２１】
移行元ボリュームＩＤ９０１は図５に示したデータ移行テーブル５００の移行元ボリュームＩＤ５０２と同じ内容であり、移行可否９０２はデータ移行テーブル５００の移行可否５０６と同じ内容であり、移行元ボリューム種別９０３は、データ移行テーブル５００の移行元ボリューム種別５０３と同じ内容である。また、移行元仮想容量９０４は図２に示した仮想ボリュームテーブル２００の仮想容量２０３（又は実ボリュームの場合は、実ボリュームテーブル２２０の容量２２２）と同じ内容であり、移行元実割当容量９０５は仮想ボリュームテーブル２００の実割当容量２０４と同じ内容である。
【０１２２】
移行先ボリューム９０７は図５に示したデータ移行テーブル５００の移行先ボリュームＩＤ５０４と同じ内容であり、移行先ボリューム種別９０８はデータ移行テーブル５００の移行先ボリューム種別５０５と同じ内容である。また、移行先仮想容量は仮想ボリュームテーブル２００の仮想容量２０３（又は実ボリュームの場合は、実ボリュームテーブル２２０の容量２２２）と同じ内容であり、移行先仮想プール９１０は仮想プールテーブル２００の仮想プールＩＤ２０２と同じ内容である。
【０１２３】
移行先仮想プール全容量９１１は図２に示した仮想プール容量テーブル２１０の全容量２１２と同じ内容であり、移行先仮想プール割当容量９１２は仮想プール容量テーブル２１０の割当容量２１３と同じ内容である。また、移行先仮想プール閾値９１４は仮想プール容量テーブル２１０の閾値２１４と同じ内容であり、実行状態９１５はデータ移行テーブル５００の実行状態５０７と同じ内容である。
【０１２４】
図９のデータ移行状態表示画面９００を例に取れば、移行元ボリューム９０１と移行先ボリューム９０７の組み合わせがＶ１１−Ｖ１３とＶ１２−Ｖ１４のデータ移行は移行可否９０２が否になっており、その原因が、「移行元割当容量合計＋移行先仮想プール割当容量」９１３の値が移行先仮想プール閾値９１４を上回っていることによることがわかる。
【０１２５】
ただし、実行状態９１５はまだ待機であり、まだデータ移行の実行を待っている状態で、これをユーザへの警告とする。そして後述するアドバイス画面９１６からユーザが対策を取るための契機とすることも可能である。移行可否５０６の原因となる「移行元割当容量合計＋移行先仮想プール割当容量」９１３、移行先仮想プール閾値９１４の項目は画面で太字にする、点滅させるなど、ユーザへ原因をわかりやすく表示してもよい。
【０１２６】
アドバイス画面９１６に関しては、「移行元割当容量合計＋移行先仮想プール割当容量」９１３の値と移行先仮想プール閾値９１４から、閾値を上げるために移行先仮想プールＰ１３の容量を追加する。例えば閾値の決め方が、全容量から２ＧＢを引いたものであれば２ＧＢ以上追加することを表示する。また警告のメッセージを表示したい場合にもこの画面を使ってもよい。
【０１２７】
また「他への影響画面」９１７において、移行先仮想ボリュームに記憶領域を割り当てる仮想プールＰ１３から、通常通り仮想ボリュームとして使用している仮想ボリュームが作成されているときにも、「移行元割当容量合計＋移行先仮想プール割当容量」９１３の値と移行先仮想プール閾値９１４を導出する。そして、「移行元割当容量合計＋移行先仮想プール割当容量」９１３の値が閾値９１４を超えていたら、前記仮想ボリュームにも仮想プールＰ１３から記憶領域を割り当てられないことに対して警告を発することができるようにする。
【０１２８】
図２の仮想ボリュームテーブル２００を例とすれば、仮想プールＰ１３から記憶領域を割り当てようと追加するＶ１５の仮想ボリュームに対して、既に記憶領域の割当容量が閾値９１４を超えているため記憶領域が割り当てられない。このことを、データ移行状態表示画面９００で表示してもよいし、別の画面で、Ｖ１５に関する警告を表示してもよい。
【０１２９】
図１０は第一の実施形態において、データ移行の移行先の容量が不足している場合に、移行先の容量を追加する処理のフローチャートの一例である。
図１０に示す各処理及び判断は、管理計算機１００の仮想ボリューム設定プログラム１０５、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８をＣＰＵ１０１が実行することにより行われる。
【０１３０】
まず、データ移行監視プログラム１０８を実行することによりデータ移行監視処理を行う（ステップＳ１０００）。これは、図７において、判断ステップＳ７０３から、ステップＳ７０４、ステップＳ７０６までの仮想プールの割当容量の監視の処理、及び判断ステップＳ７０３から、ステップＳ７０７、ステップＳ７０８、ステップＳ７０９のエラー通知や警告の通知に来るまでの処理、又は図８において、ステップＳ８０１の仮想プールの割当容量の監視の処理から、判断ステップＳ８０４、ステップＳ８０６の警告の通知に来るまでの処理に相当するものである。
【０１３１】
すなわち、移行先の仮想ボリュームＶ１３、Ｖ１４の割当状況に対して、移行元の仮想ボリュームＶ１１、Ｖ１２からデータ移行する際に、移行先側の仮想ボリュームＶ１３、Ｖ１４の割当分が不足している場合に、警告を通知したり、エラーを通知したりする処理である。この処理は図７、図８で示したとおり、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することによりＣＰＵ１０１によって行われる。
【０１３２】
次に、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することにより対象となる移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３に不足分の容量を追加することができるか否かを判断する（ステップＳ１００１）。すなわち、前記仮想プールＰ１３に追加する仮想プールボリューム１１９を作成するだけの容量をストレージ１１０で確保できるか否かを判断する。判断ステップＳ１００１で、仮想プールＰ１３において不足分の容量を確保できると判断されればステップＳ１００２に進み、容量を確保できないと判断された場合はステップＳ１００４に進む。
【０１３３】
例えば、図７で示した例を用いれば、ステップＳ７０８やステップＳ７０９に進んだ場合には、移行元の仮想ボリュームＶ１１の割当容量が４Ｇ、移行元の仮想ボリュームＶ１２の割当容量が２Ｇであるため、合計が６Ｇである。また、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量は４Ｇであるため、移行元と移行先の仮想ボリュームに対する割当のため仮想プールＰ１３で合計１０Ｇの容量確保が必要である。しかし、図２に示す仮想プール容量テーブル２１０において仮想プールＰ１３の閾値２１４が８Ｇとなっているので、仮想プールＰ１３で必要な合計容量１０Ｇに対して容量が２Ｇ分確保できないことがわかる。よって、２ＧＢ分の容量のボリュームをストレージ１１０で確保できるか否かをＣＰＵ１０１が判定する。
【０１３４】
仮想プールＰ１３で必要な容量の確保は、仮想プールボリューム１１９がＲＡＩＤ構成から論理的にボリュームを作成していれば、論理ボリュームを作成するパリティグループから、必要な容量のボリュームを作成することが可能である。この場合は判断ステップＳ１００１で、仮想プールＰ１３において不足分の容量を確保できるため、ステップＳ１００２に進み、確保できなければステップＳ１００４に進む。
【０１３５】
また、ＣＰＵ１０１は、判断ステップＳ１００１で、仮想プールＰ１３において不足分の容量を確保できるときは、仮想ボリューム設定プログラム１０５を実行することにより仮想プールＰ１３に容量を追加する（ステップＳ１００２）。ステップＳ１００２の容量追加方法は、判断ステップＳ１００１にて判定した不足している容量分又は上乗せした不足容量分を追加するようにする。例えば、不足容量分の１．５倍の容量分を仮想プールボリューム１１９としてＣＰＵ１０１が作成し、仮想プールＰ１３の容量に追加する。
【０１３６】
又は、何も使用されていない実ボリューム１１７で判断ステップＳ１００１にて判定した不足している容量分以上の容量を持つ実ボリューム１１７を仮想プールボリューム１１９として扱うように、ストレージ構成を設定して、仮想プールＰ１３の容量に追加してもよい。
【０１３７】
上記例に従えば、ＣＰＵ１０１が２ＧＢの容量の仮想プールボリューム１１９を作成し、仮想プールＰ１３の容量に追加すればよい。また不足容量分の１．５倍という上乗せを考慮する場合には、３ＧＢの容量の仮想プールボリューム１１９を作成し、仮想プールＰ１３の容量に追加すればよい。
【０１３８】
ＣＰＵ１０１は、ステップＳ１００３で、データ移行監視プログラム１０８を実行することにより、現在図７の処理ならばステップＳ７０４のデータ移行開始指示判定の判断ステップに、図８からの処理ならばステップＳ８０５のデータ移行終了判定の判断ステップに進み、図１０での処理を終了する。
【０１３９】
また、ＣＰＵ１０１は、ステップＳ１００４で、現時点で容量が確保できないということから、ストレージ１１０や管理計算機１００のユーザに警告又はエラーを出す。ここで、図７のステップＳ７０９、図８のステップＳ８０６の警告通知の処理から来た移行先の容量を追加する処理であれば、まず、ストレージ１１０や管理計算機１００のユーザに警告を出して、ユーザにボリュームの増設をできる環境にしてもらうようにする。
【０１４０】
また、ＣＰＵ１０１は、ストレージ１１０でボリューム確保ができない環境、例えば、現在使用しているさまざまなボリュームを削除することもできず、また記憶媒体や外部ストレージからの容量確保もできない環境であれば、ストレージ１１０や管理計算機１００のユーザにエラーを通知してもよい。また警告においては、どのようにボリュームを増設する手段があるかという具体的内容を提示してもよい。例えば、ディスクを増設して、容量を確保する場合があれば、その旨をユーザに提示してもよい。
【０１４１】
またＣＰＵ１０１は、外部ストレージから容量を確保することができれば、容量不足のストレージ１１０に対してその外部ストレージを接続して、外部ストレージのボリュームを仮想プールボリューム１１９として設定し、仮想プールＰ１３を増設するように提示することもできる。また図７のステップＳ７０８のエラー通知の処理から来た移行先の容量を追加する処理なら、すでにステップＳ７０７でデータ移行開始指示があるためデータ移行を開始しようとする際に、容量を確保できないと判断し、ストレージ１１０や管理計算機１００のユーザにエラーを通知する。
【０１４２】
ステップＳ１０００では、ＣＰＵ１０１は、ステップＳ７０９、ステップＳ８０６の警告通知の処理を行なってから、ステップＳ１００１に進んでもよい。また、警告を通知せずにそのままステップＳ１００１に進んでもよい。またステップＳ７０８のエラー通知の処理においては、エラーとはならないようにして、ステップＳ７０９のように、警告を通知して、ステップＳ１００１に進んでもよい。またステップＳ７０８でも、エラーを通知せずにそのままステップＳ１００１に進んでもよい。
【０１４３】
また、ＣＰＵ１０は、例えば、ステップＳ１００２において、仮想プールＰ１３の容量が２Ｇ不足しているなら、２Ｇの容量を確保でき、かつ移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３と同じパリティグループから、ボリュームを作成する。そして、作成したボリュームを不足している仮想プールＰ１３の仮想プールボリューム１１９として登録するようにしてもよい。また仮想プールＰ１３とまったく別のパリティグループからボリュームを作成して、作成したボリュームを不足している仮想プールの仮想プールボリュームとして登録してもよい。
【０１４４】
また、ＣＰＵ１０１は、ステップＳ１００１において、例えば、データ移行に際して、データの保守性やストレージ階層管理などの理由から、移行元の仮想ボリュームＶ１１、Ｖ１２が用いているパリティグループからは、移行先ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の仮想プールボリューム１１９は作らないというルールを設けてもよい。
【０１４５】
その場合、移行先仮想ボリュームＶ１３、Ｖ１４が使用しているパリティグループでは、ボリュームを作成する容量が多く残っていても、移行先の仮想プールＰ１３で使用しているパリティグループは容量がほとんど使用されている、という状況では、ステップＳ１００４に進んで、容量が足りないとして、警告してもよい。この場合ユーザは別のディスクを装てんするなどして、新規パリティグループを作成するなどの対策をとることになる。
【０１４６】
図１１はデータ移行がグループ単位で一括に行なわれるときに、管理計算機１００のストレージ管理情報１０９で管理する情報を表すテーブルの一例である。
図１１に示すデータ移行グループテーブル１１００には、グループ単位でデータ移行する単位をつけるための識別子であるグループＩＤ１１０１と、グループ単位に一括でデータ移行する情報を示すデータ移行ＩＤ１１０２と、グループ単位に一括で移行が可能かどうかの状態を示すグループ移行可否１１０３で構成される。
【０１４７】
データ移行ＩＤ１１０２は図５に示したデータ移行テーブル５００の移行ＩＤ５０１と同じ内容である。
グループ移行可否１１０３の状態は、グループ移行が可能であれば「可」、グループ移行できなければ「否」が入る。グループ移行可否１１０３の状態の決定は図１４で説明するフローチャートの処理により決定する。グループ移行の例としては、移行元の仮想ボリュームＶ１１、Ｖ１２から移行先ボリュームＶ１３、Ｖ１４に一括で行われる場合がある。
【０１４８】
図１２はデータ移行において、データ移行の優先度を管理するテーブルである。
図１２に示すデータ移行優先度テーブル１２００は、移行ＩＤ１２０１、移行元ボリュームＩＤ１２０２、移行先ボリュームＩＤ１２０３、優先度１２０４で構成される。
移行ＩＤ１２０１は、図５に示したデータ移行テーブル５００の移行ＩＤ５０１と同じ定義である。移行元ボリュームＩＤ１２０２は、図５に示したデータ移行テーブル５００の移行元ボリュームＩＤ５０２と同じ定義である。移行先ボリュームＩＤ１２０３は、図５に示したデータ移行テーブル５００の移行先ボリュームＩＤ５０４と同じ定義である。
【０１４９】
優先度１２０４はデータ移行を優先的に成功させたい順番となり、ユーザが指定してもよいし、待機しているデータ移行を実行するプログラム、例えばスケジューラが自動的に設定してもよい。
【０１５０】
図１３はストレージ１１０におけるユーザのデータ移行の設定に関する入力画面を示す。図１３と図６との違いは図１１で説明した、一括設定の単位となるグループＩＤ１３０１と、優先度１３０２を設定できるようになった点である。このとき即時実行６１３は、同じグループＩＤ１３０１では同じ動作をしなければならないので、ここで異なったものを入れたときにはエラーとする。また、グループＩＤ１３０１が始めて指定されたときの即時実行６１３の設定を引き継いで、同じグループＩＤ１３０１の設定を次に設定するときには、同じ即時実行６１３の値を画面上で自動的に設定してもよい。
【０１５１】
またグループＩＤ１３０１を指定しないデータ移行の設定、すなわち図６と同様に設定する場合には、グループＩＤ１３０１を指定しないようにすればよい。
また、この場合、優先度１３０２については、「１−１」という形式を用いている。これは「−」から左側の数値は関連するデータ移行の設定を特定する識別子、「−」の右側の数値は関連するデータ移行の中での優先度を表す数値である。「−」の右側の数値は例えば１，２、３、の順で優先度を決めていき、「１」が一番優先度が高く、「２」が二番目に優先度が高いことを示す。
【０１５２】
図１４はデータ移行がグループ単位に一括で行なわれるように設定されていたときに行う処理のフローチャートの一例である。これは図７、図８、図１０の処理に関係する処理である。
図１４に示される処理は、管理計算機１００の仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することにより行われる。
【０１５３】
また、ＣＰＵ１０１は、ステップＳ１４００で、グループ単位でのデータ移行の確認を行う。ステップＳ１４００は、図７のステップＳ７００（図１０でも利用）と図８のステップＳ８００（図１０でも利用）と同じタイミングでＣＰＵ１０１が行う処理である。図７のステップＳ７００の処理では、データ移行設定プログラム１０７を実行することによりユーザからデータ移行要求を受け付ける。データ移行の情報は図１２のような画面入力データから取得される。
【０１５４】
図８のステップＳ８００の処理においては、データ移行を行う場合に、すでにグループは設定できているので、ＣＰＵ１０１が図１１に示すデータ移行グループテーブル１１００の情報を確認し、データ移行ＩＤ１１０２が属するグループＩＤ１１０１を把握することになる。
【０１５５】
また、ＣＰＵ１０１は、ステップＳ１４０１で、データ移行監視処理２を行う。このデータ移行管理処理は、図７におけるステップＳ７０８のエラー通知処理、あるいはステップＳ７０９の警告通知処理に相当する。また、図８におけるステップＳ８０６の警告通知処理、あるいは図１０におけるステップＳ１００４エラー通知又は警告通知処理に相当している。すなわち、仮想プールＰ１３において不足分の容量を確保できるか否かの判断から、移行先の仮想プールＰ１３で容量不足であるためユーザに警告又はエラーを通知する状態になるまでの処理をさしている。この処理は、図７、図８、図１０に示す処理であり、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することによって行われるものである。
【０１５６】
次に、ＣＰＵ１０１は、データ移行がグループ単位に一括で行なわれるように設定されているか否かの判断を行う。すなわち、グループ単位でデータ移行可能か否かを判定する（ステップＳ１４０２）。判断ステップＳ１４０２のグループ単位でのデータ移行の判定は、例えば、グループに属する移行元仮想ボリュームＶ１１、又はＶ１２に対して、移行先仮想ボリュームＶ１３、又はＶ１４に割り当てられる容量が仮想プールＰ１３からすべて確保できるか否かで行われる。判断ステップＳ１４０２で一括でのデータ移行がなければ、特になにもせずに処理を終了する。判断ステップＳ１４０２で一括でのデータ移行があればステップＳ１４０３に進む。
【０１５７】
ステップＳ１４０３では、警告又はエラーとなるデータ移行と同じグループのデータ移行の設定は、警告やエラーとなったデータ移行とは一括にデータ移行はできないとする警告をユーザに提示し、処理を終了する。
【０１５８】
例えば、図１３の例に従えば、グループＩＤ１３０１がＧ１の一括設定にはＶ１−Ｖ３とＶ２−Ｖ４のデータ移行が設定されている。このとき即時実行６１３はないので、図７のタイミングでステップＳ１４００のグループ単位でのデータ移行確認処理、Ｓ１４０１のデータ移行監視２の処理が進む。
【０１５９】
このとき、例えば、図２、図３、図４の例に従えば、Ｖ１−Ｖ３のデータ移行においては、図２に示す仮想ボリュームテーブル２００において移行元仮想ボリュームＶ１の実割当容量２０４が４Ｇ、図２に示す仮想プール容量テーブル２１０において移行先仮想ボリュームＶ３に記憶領域を割り当てる仮想プールＰ２の割当容量２１３が０Ｇ、閾値２１４が６Ｇなので、移行先の仮想プールＰ２で移行先仮想ボリュームＶ３に対する割当容量は確保できる。このため、図７のステップ７０８のエラーの通知、ステップＳ７０９の警告の通知に、処理は進まない。
【０１６０】
また、Ｖ２−Ｖ４のデータ移行において、図２に示す仮想ボリュームテーブル２００において移行元仮想ボリュームＶ２の実割当容量２０４が２Ｇ、図２に示す仮想プール容量テーブル２１０において移行先仮想ボリュームＶ４に記憶領域を割り当てる仮想プールＰ３の割当容量２１３が２Ｇ、閾値２１４が４Ｇなので、ここも移行先の仮想プールＰ３で移行先仮想ボリュームＶ４に対する割当容量は確保できる。このため、図７のステップ７０８のエラーの通知、ステップＳ７０９の警告の通知に、処理は進まない。
【０１６１】
しかし、ここでＰ３の仮想プールから記憶領域が割り当てられる追加される仮想ボリュームＶ５に対して書き込みがあり２ＧＢ分の容量を割り当てられると、仮想プールＰ３の割当容量２１３が４ＧＢとなり、移行先仮想ボリュームＶ４の割当容量２１３の２Ｇと合わせて、６ＧＢの容量が仮想プールＰ３で必要となる。
【０１６２】
ただ仮想プールＰ３の閾値２１４は４Ｇなので、移行元仮想ボリュームＶ２のデータ移行分の容量を移行先仮想ボリュームＶ４で確保できないことがわかる。この時点を検出したとき、図７のステップＳ７０９の警告の通知に、処理は進む状況となり、図１４においてはステップＳ１４０２の一括で移行の設定があるか否かの判断に、処理は進むことになる。
【０１６３】
そして、判断ステップＳ１４０２においては、Ｖ１−Ｖ３のデータ移行と、Ｖ２−Ｖ４のデータ移行は一括設定として指定されているので、ステップＳ１４０３に進み、ステップＳ１４０３で一括設定できないことをユーザに対して警告する。この場合、ＣＰＵ１０１は、データ移行ができるものとデータ移行ができないものを提示して、ユーザに原因を特定させるようにする。
この警告を受けたユーザは、容量が不足しているデータ移行の移行先の容量を確保するか、またはデータ移行の設定を変更するなどの処理をして対策をすることができる。
【０１６４】
図１５はデータ移行において、複数の移行先仮想ボリュームが、同じ仮想プールを用いていた場合に、優先度を用いて処理するフローチャートの一例である。
図１５における各処理及び判断は、ＣＰＵ１０１が、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することにより行われる処理である。
【０１６５】
まず、ＣＰＵ１０１は、ステップＳ１５００で、データ移行監視処理を行う。このデータ移行監視処理は、図７における判断ステップＳ７０３から、ステップＳ７０４、ステップＳ７０６までの仮想プールの割当容量の監視の処理、及び判断ステップＳ７０３から、ステップＳ７０７、ステップＳ７０８、ステップＳ７０９のエラー通知や警告の通知に来るまでの処理に相当する。また、図８におけるステップＳ８０１の仮想プールの割当容量の監視の処理から、判断ステップＳ８０４、ステップＳ８０６の警告の通知に来るまでの処理にも相当する。さらに、図１０におけるステップＳ１０００のデータ移行監視の処理から、ステップＳ１００４の警告又はエラーの通知に来るまでの処理に相当する。
【０１６６】
すなわち、上記処理は、移行先の仮想ボリュームＶ１３、Ｖ１４の割当状況に対して、移行元の仮想ボリュームＶ１１、Ｖ１２からデータ移行する際に、移行先側の仮想ボリュームＶ１３、Ｖ１４の割当分が不足している場合に、警告を通知したり、エラーを通知したりする処理である。図１０に示す処理は、ステップＳ７０８、ステップＳ７０９、ステップＳ８０６、ステップＳ１００４の代替となる処理である。この処理は図７、図８、図１０で示したとおり、仮想ボリューム監視プログラム１０６、データ移行設定プログラム１０７、データ移行監視プログラム１０８を実行することにより行われる。
【０１６７】
次に、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することにより同一仮想プールＰ１３に属する移行先仮想ボリュームＶ１３、Ｖ１４があるか否かを判断する（ステップＳ１５０１）。すなわち、前記仮想プールＰ１３から記憶領域が割り当てられた移行先仮想ボリュームＶ１３、Ｖ１４があるか否かを判断する。判断ステップＳ１５０１で、同一仮想プールＰ１３に属する移行先仮想ボリュームＶ１３、Ｖ１４があればステップＳ１５０２に進み、なければステップＳ１５０４に進む。
【０１６８】
判断ステップＳ１５０１で、同一仮想プールＰ１３に属する移行先仮想ボリュームＶ１３、Ｖ１４があるとき、優先度をもとに、データ移行の可否と、警告またはエラーをＣＰＵ１０１がストレージ１１０や管理計算機１００のユーザに通知する（ステップＳ１５０２）。
【０１６９】
すなわち、ＣＰＵ１０１は、データ移行監視プログラム１０８を実行することにより、図１２に示したデータ移行優先度テーブル１２００と図２に示した仮想ボリュームテーブル２００から、同一仮想プールＰ１３に属す移行先仮想ボリュームＶ１３、Ｖ１４の情報を抽出し、優先度順にデータ移行に対する移行先仮想ボリュームＶ１３、Ｖ１４の状態を調査する。
【０１７０】
そして、データ移行の実行が可能なデータ移行とそうでないデータ移行を抽出する。すなわち、ＣＰＵ１０１は、データ移行可能なものと、そうでないものとを表示し、そうでないものに対しては警告、又はエラーを通知することになる。例えば、警告はステップＳ７０９とステップＳ８０６とステップＳ１００４で警告を通知するタイミング（図７のフローチャートからよばれたタイミング）で表示され、エラーはステップＳ７０８とステップＳ１００４でエラーを通知するタイミング（図７のフローチャートからよばれたタイミング）で表示される。
【０１７１】
ＣＰＵ１０１は、ステップＳ１５０３で、データ移行監視プログラム１０８を実行することにより、現在図７の処理を実行中ならばステップＳ７０４に、図８からの処理を実行中ならばステップＳ８０５に進み、図１５での処理を終了する。
【０１７２】
また、ＣＰＵ１０１は、判断ステップＳ１５０１で、同一仮想プールＰ１３に属する移行先仮想ボリュームＶ１３、Ｖ１４がない場合はステップＳ１５０４に進み、警告又はエラー表示を行って処理を終了する。
【０１７３】
例えば、図１３のユーザ画面に従えば、Ｖ１１−Ｖ１３がＶ１２−Ｖ１４より優先度１３０２が高いことを示している。よって、この場合例えば図７の例で示したとおり、ステップＳ７０９に到達する処理では、移行元の仮想ボリュームＶ１１の割当容量４Ｇ、Ｖ１２の割当容量２Ｇ、合計が６Ｇであり、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の割当容量は４Ｇであり、これらをあわせて仮想プールＰ１３では合計１０Ｇ分の容量を確保しなければならない。
【０１７４】
しかし、この必要容量は移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３の閾値２１４の８Ｇを超えていることがわかる。よって、移行先仮想ボリュームＶ１３、Ｖ１４に記憶領域を割り当てる仮想プールＰ１３で容量が確保できないため、ＣＰＵ１０１は、容量が確保できない旨の警告をユーザに通知する処理をしていた。
【０１７５】
ここで、ＣＰＵ１０１は、図１３に示した優先度１３０２を設けることにより、ステップＳ１５０２の優先度に基づいた処理をすることが可能となる。そしてステップＳ１５０２では、優先度１３０２の高い移行元の仮想ボリュームＶ１１の容量は仮想プールＰ１３の閾値２１４を超えず仮想プールＰ１３でこの容量を確保できるので、移行元の仮想ボリュームＶ１１には警告出さず、移行元の仮想ボリュームＶ１２のみを警告対象として扱いステップＳ１５０３に進むことになる。
【０１７６】
また、ステップＳ１５０２において、データ移行とは関係なく、同じ移行先の仮想プールＰ１３から記憶領域が割り当てられる移行先仮想ボリュームＶ１３、Ｖ１４の割当においても優先度をつけてもよい。
【０１７７】
例えば、仮想プールＰ１３では、仮想ボリュームＶ１５が特にデータ移行とは関係なく存在する。ここで仮想ボリュームＶ１５へ記憶領域を割り当てる優先度と、データ移行により記憶領域を割り当てる移行元の仮想ボリュームＶ１２、移行先仮想ボリュームＶ１４の優先度を定めておく。そして、仮想ボリュームＶ１５が移行元の仮想ボリュームＶ１２、移行先仮想ボリュームＶ１４より優先度が低ければ、仮想ボリュームＶ１５の記憶領域の割当は移行元の仮想ボリュームＶ１２，移行先仮想ボリュームＶ１４がすべてデータ移行可能な容量を超えてしまったら、仮想ボリュームＶ１５への記憶領域の割当は禁止するなどとしてもよい。
【０１７８】
なお、上述した第一の本実施の形態において、図７、図８、図１４、図１５において、データ移行の移行先仮想ボリューム側の容量が確保できず警告を通知することがあるが、これに限らず、以下のように処理してもよい。例えば、データ移行の移行先仮想ボリューム側の容量を追加するユーザの処理時間がわかれば、移行先仮想ボリューム側の容量が足りなくなるたびに警告を通知する必要はない。ここでは、ＣＰＵ１０１は、データ移行の実行時間や、データ移行中のデータ転送時間を把握し、容量追加のためのユーザの処理時間を加味して、データ移行実行時間の手前やデータ移行中に容量を追加すべき時間に警告を通知するようにしてもよい。
【０１７９】
図１６は、本発明の第二の実施形態の計算機システムの構成を示す図である。
図１６において、図１と異なっている点は、管理計算機１００の変わりに、設定用管理計算機１４０と監視用管理計算機１５０を設置した点である。
図１６において、設定用管理計算機１４０は、管理計算機１００と異なり、仮想ボリューム設定プログラム１０５とデータ移行設定プログラム１０７と、管理計算機１００にはなかった監視用管理計算機連携プログラム１６０１がメモリ１０４上に設けられている。
【０１８０】
また、監視用管理計算機１５０は、管理計算機１００と異なり、仮想ボリューム監視プログラム１０６とデータ移行監視プログラム１０８と、管理計算機１００にはなかった設定用管理計算機連携プログラム１６０２がメモリ１０４上に設けられている。
【０１８１】
図１６の構成では、管理計算機１００で行なった処理を分割し、監視用のプログラムを載せた監視用管理計算機１５０で、仮想ボリューム監視プログラム１０６、データ移行監視プログラム１０８を実行することによりＣＰＵ１０が仮想ボリュームやデータ移行の監視を行う。
【０１８２】
そして、その仮想ボリュームやデータ移行の監視情報を監視用管理計算機１５０の設定用管理計算機連携プログラム１６０２を実行することによりＣＰＵ１０１により、監視を行なった仮想ボリュームやデータ移行の監視情報を、設定用管理計算機１４０の監視用管理計算機連携プログラム１６０１を介して、設定用管理計算機１４０に伝える。
【０１８３】
設定用のプログラムを載せた設定用管理計算機１４０で、仮想ボリューム設定プログラム１０５、データ移行設定プログラム１０７を実行することによりＣＰＵ１０が仮想ボリュームやデータ移行の設定を行う。
これにより、監視プログラムと設定プログラムを分離して、計算機の用途を明確にして管理を行うことが可能である。
【０１８４】
なお、上述した本実施の形態例に限らず、本発明の要旨を逸脱しない限り、適宜変更しうることは言うまでもない。
【図面の簡単な説明】
【０１８５】
【図１】本発明の一実施の形態による計算機システムの構成例を示す図である。
【図２】仮想ボリュームテーブル、仮想プール容量テーブル及び実ボリュームテーブルの一例を示す図である。
【図３】仮想プールテーブルの一例を示す図である。
【図４】仮想ボリューム割当テーブルの一例を示す図である。
【図５】データ移行テーブルの一例を示す図である。
【図６】データ移行設定画面の一例を示す図である。
【図７】データ移行の可否を判定する動作を示すフローチャートの一例を示す図である。
【図８】データ移行開始後のデータ移行の可否を判定する動作を示すフローチャートの一例を示す図である。
【図９】データ移行状態表示画面の一例を示す図である。
【図１０】データ移行の移行先の容量が不足している場合に移行先の容量を追加する動作を示すフローチャートの一例を示す図である。
【図１１】データ移行グループテーブルの一例を示す図である。
【図１２】データ移行優先度テーブルの一例を示す図である。
【図１３】データ移行グループ設定画面の一例を示す図である。
【図１４】データ移行がグループ単位に一括で行われる設定のときの動作を示すフローチャートの一例を示す図である。
【図１５】データ移行において複数の移行先仮想ボリュームが同じ仮想プールを用いた場合に優先度を用いて動作するフローチャートの一例を示す図である。
【図１６】他の計算機システムの一構成例を示す図である。
【符号の説明】
【０１８６】
１００…管理計算機、１０１…ＣＰＵ、１０２…Ｉ／Ｆ、１０３…入出力装置、１０４…メモリ、１０５…仮想ボリューム設定プログラム、１０６…仮想ボリューム監視プログラム、１０７…  データ移行設定プログラム、１０８…データ移行監視プログラム、１０９…  ストレージ管理情報、１１０…ストレージ、１１１…コントローラ、１１２…Ｉ／Ｆ、１１３…キャッシュ、１１４…メモリ、１１５…ストレージ構成プログラム、１１６…ストレージ構成情報、１１７…実ボリューム、１１８…仮想ボリューム、１１９…仮想プールボリューム、１２０…仮想プール、１３０…ホスト計算機
【図１】
2008090741.tif 000003
【図２】
2008090741.tif 000004
【図３】
2008090741.tif 000005
【図４】
2008090741.tif 000006
【図５】
2008090741.tif 000007
【図６】
2008090741.tif 000008
【図７】
2008090741.tif 000009
【図８】
2008090741.tif 000010
【図９】
2008090741.tif 000011
【図１０】
2008090741.tif 000012
【図１１】
2008090741.tif 000013
【図１２】
2008090741.tif 000014
【図１３】
2008090741.tif 000015
【図１４】
2008090741.tif 000016
【図１５】
2008090741.tif 000017
【図１６】
2008090741.tif 000018