(57)【要約】【課題】仮想ボリュームの使用されていない領域への物理記憶領域の割り当てを削除する。【解決手段】管理部は、第１論理ボリュームに格納された全てのデータを第２論理ボリュームに移行させる要求をサーバ計算機に送信し、前記サーバは、前記第１論理ボリュームに格納された全ての前記データ読み出して前記第２論理ボリュームに書き込み、前記第１論理ボリューム及び前記第２論理ボリュームを含むストレージ装置は、前記第２論理ボリュームの前記データが書き込まれる領域に物理記憶領域を割り当てて、前記割り当てられた物理記憶領域に前記データを書きこみ、前記第１論理ボリュームを削除する。【選択図】図５
2010073095.tif 000002
【特許請求の範囲】
【請求項１】
第１ストレージ装置と、前記第１ストレージ装置に接続される第１サーバ計算機と、前記第１ストレージ装置及び前記第１サーバ計算機を管理する管理部と、を備える計算機システムにおいて、
前記第１ストレージ装置は、
複数の物理記憶領域を含む記憶媒体と、前記記憶媒体を用いて複数の論理ボリュームを定義し、前記記憶媒体へのデータの書き込み及び前記記憶領域からのデータの読み出しを制御するコントローラと、を備え、
前記複数の論理ボリュームの少なくとも一つを前記第１サーバ計算機に認識させ、
前記各論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、
前記第１ストレージ装置は、前記アドレス範囲へのデータの書き込み要求を受信すると、前記複数の物理記憶領域のうち、まだいずれの前記アドレス範囲にも割り当てられていないものを、前記書き込みを要求されたアドレス範囲へ割り当て、前記割り当てられた物理記憶領域に前記書き込みを要求されたデータを格納し、
前記複数の論理ボリュームは、第１論理ボリューム及び第２論理ボリュームを含み、
前記第２論理ボリュームのいずれの前記アドレス範囲にも、前記物理記憶領域が割り当てられておらず、
前記第１サーバ計算機は、
前記ストレージ装置と通信する第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記第１論理ボリュームに格納されたデータを識別する情報を保持し、
前記管理部は、前記第１論理ボリュームに格納された全てのデータを前記第２論理ボリュームに移行させる要求を前記第１サーバ計算機に送信し、
前記データを移行させる要求を受信した前記第１サーバ計算機は、前記第１論理ボリュームの前記アドレス範囲に格納された全てのデータを読み出す要求、及び、前記読み出された全てのデータを前記第２論理ボリュームの前記アドレス範囲に書き込む要求を、前記第１ストレージ装置に送信し、
前記管理部は、前記読み出された全てのデータの、前記第２論理ボリュームの前記アドレス範囲への書き込みが終了した後、前記第１論理ボリュームを削除する要求を前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、前記第１論理ボリュームを削除する要求を受信すると、前記第１論理ボリュームを削除することを特徴とする計算機システム。
【請求項２】
前記計算機システムは、さらに、前記第１サーバ計算機に接続されるホスト計算機を備え、
前記第１ストレージ装置は、前記第１論理ボリューム及び前記第２論理ボリュームを前記第１サーバ計算機に認識させ、
前記第１サーバ計算機は、
前記第１論理ボリュームを前記ホスト計算機に提供し、
前記読み出された全てのデータの、前記第２論理ボリュームの前記アドレス範囲への書き込みが終了した後、前記第１論理ボリュームに代えて前記第２論理ボリュームを前記ホスト計算機に提供することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第１ストレージ装置は、前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量を示す情報を保持し、
前記第１サーバ計算機は、さらに、前記第１論理ボリュームの容量のうち、データを格納するために使用されている容量を示す情報を保持し、
前記管理部は、
前記第１ストレージ装置から、いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域の容量を示す情報を取得し、
前記第１サーバ計算機から、前記第１論理ボリュームの前記使用されている容量を示す情報を取得し、
いずれの前記アドレス範囲にもまだ割り当てられていない前記物理記憶領域の容量が、前記第１論理ボリュームの前記使用されている容量以上である場合、前記使用されている容量と同等以上の容量に相当する複数の前記アドレス範囲を含む前記第２論理ボリュームを作成する要求を前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、前記使用されている容量と同等以上の容量に相当する複数の前記アドレス範囲を含む前記第２論理ボリュームを作成することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記複数の物理記憶領域の一部は、第１プールに属し、
前記第１論理ボリュームの前記アドレス範囲には、前記第１プールに属する前記各物理記憶領域が割り当てられ、
前記管理部は、前記第１プールに属する前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量が、前記第１論理ボリュームの前記使用されている容量より小さい場合、前記第１プールに属さない前記複数の物理記憶領域の少なくとも一つを前記第１プールに追加させる要求を、前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、
受信した前記要求に従って、前記第１プールに属さない前記複数の物理記憶領域の少なくとも一つを前記第１プールに追加し、
前記読み出された全てのデータを前記第２論理ボリュームの前記アドレス範囲に書き込む要求を受信すると、前記読み出された全てのデータを格納するために必要な前記第２論理ボリュームの前記アドレス範囲に、前記第１プールに属する前記物理記憶領域を割り当てることを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記複数の物理記憶領域の一部は、第１プールに属し、
前記第１論理ボリュームの前記アドレス範囲には、前記第１プールに属する前記各物理記憶領域が割り当てられ、
前記複数の物理記憶領域のうち、前記第１プールに属さないものの一部は、第２プールに属し、
前記管理部は、
前記第１プールに属する前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量が、前記第１論理ボリュームの前記使用されている容量より小さい場合、前記第２プールに属する前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量と、前記第１論理ボリュームの前記使用されている容量とを比較し、
前記第２プールに属する前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量が、前記第１論理ボリュームの前記使用されている容量以上である場合、前記第２プールに対応する前記第２論理ボリュームを作成する要求を前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、前記使用されている容量と同等以上の容量に相当する複数の前記アドレス範囲を含む前記第２論理ボリュームを作成し、
前記第２論理ボリュームの前記アドレス範囲へのデータの書き込み要求を受信すると、前記第２プールに属する複数の物理記憶領域のうち、まだいずれの前記アドレス範囲にも割り当てられていないものを、前記書き込みを要求されたアドレス範囲へ割り当てることを特徴とする請求項３に記載の計算機システム。
【請求項６】
前記管理部は、前記第２プールに属する前記複数の物理記憶領域のうち、いずれの前記アドレス範囲にもまだ割り当てられていないものの容量が、前記第１論理ボリュームの前記使用されている容量より小さい場合、前記第１プール及び前記第２プールのいずれにも属さない前記複数の物理記憶領域の少なくとも一つを前記第２プールに追加させる要求を、前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、前記第１プール及び前記第２プールのいずれにも属さない前記複数の物理記憶領域の少なくとも一つを前記第２プールに追加することを特徴とする請求項５に記載の計算機システム。
【請求項７】
前記管理部は、
前記第１論理ボリュームが削除された後、前記第１プールに対応する第３論理ボリュームを作成する要求を前記第１ストレージ装置に送信し、
前記第２論理ボリュームに格納された全てのデータを前記第３論理ボリュームに移行させる要求を前記第１サーバ計算機に送信し、
前記第１サーバ計算機は、前記第２論理ボリュームの前記アドレス範囲に格納された全てのデータを読み出す要求、及び、前記読み出された全てのデータを前記第３論理ボリュームの前記アドレス範囲に書き込む要求を、前記第１ストレージ装置に送信し、
前記第１ストレージ装置は、
前記第３論理ボリュームを作成し、
前記第２論理ボリュームの前記アドレス範囲に格納された全てのデータを読み出し、前記読み出された全てのデータを前記第３論理ボリュームの前記アドレス範囲に書き込み、
前記データが書き込まれる前記アドレス範囲に、前記第１プールの前記物理記憶領域を割り当てることを特徴とする請求項５に記載の計算機システム。
【請求項８】
前記計算機システムは、さらに、第２ストレージ装置を備え、
前記第２ストレージ装置は、複数の物理記憶領域を含む記憶媒体と、前記記憶媒体へのデータの書き込み及び前記アドレス範囲からのデータの読み出しを制御するコントローラと、を備え、
前記第２プールには、前記第２ストレージ装置の前記複数の物理記憶領域が属することを特徴とする請求項５に記載の計算機システム。
【請求項９】
前記第１ストレージ装置は、前記各論理ボリュームの前記アドレス範囲に割り当てられた前記アドレス範囲の容量を示す情報を保持し、
前記第１サーバ計算機は、さらに、前記第１論理ボリュームの容量のうち、データを格納するために使用されている容量を示す情報を保持し、
前記管理部は、
前記第１ストレージ装置から、前記第１論理ボリュームの前記アドレス範囲に割り当てられた前記物理記憶領域の容量を示す情報を取得し、
前記第１サーバ計算機から、前記第１論理ボリュームの前記使用されている容量を示す情報を取得し、
前記第１論理ボリュームの前記アドレス範囲に割り当てられた前記物理記憶領域の容量と、前記第１論理ボリュームの前記使用されている容量との差分が所定の閾値を超えた場合、前記第１論理ボリュームに格納された全てのデータを前記第２論理ボリュームに移行させる要求を前記第１サーバ計算機に送信することを特徴とする請求項１に記載の計算機システム。
【請求項１０】
前記所定の閾値は、前記論理ボリュームごとに設定されることを特徴とする請求項９に記載の計算機システム。
【請求項１１】
前記第１ストレージ装置の前記複数の論理ボリュームについて、前記所定の閾値として同一の値が設定されることを特徴とする請求項９に記載の計算機システム。
【請求項１２】
前記第１論理ボリュームに格納されたデータを識別する情報は、前記第１論理ボリュームに格納されたファイルを識別する情報を含み、
前記データを移行させる要求を受信した前記第１サーバ計算機は、前記第１論理ボリュームに格納されたファイルを識別する情報に基づいて、前記第１論理ボリュームの前記アドレス範囲に格納された全てのファイルのデータを読み出す要求、及び、前記読み出された全てのファイルのデータを前記第２論理ボリュームの前記アドレス範囲に書き込む要求を、前記第１ストレージ装置に送信することを特徴とする請求項１に記載の計算機システム。
【請求項１３】
前記計算機システムは、さらに、前記第１ストレージ装置に接続される第２サーバを備え、
前記第１ストレージ装置は、前記第２論理ボリュームを前記第２サーバに認識させることを特徴とする請求項１に記載の計算機システム。
【請求項１４】
前記計算機システムは、さらに、前記第１ストレージ装置及び前記第１サーバ計算機に接続される管理計算機を備え、
前記管理計算機は、前記第１ストレージ装置及び前記第１サーバ計算機と通信する第３インターフェースと、前記第３インターフェースに接続される第３プロセッサと、前記第３プロセッサに接続される第３メモリと、を備え、
前記第３プロセッサは、前記第３メモリに格納された管理プログラムを実行し、
前記管理部は、前記管理計算機であることを特徴とする請求項１に記載の計算機システム。
【請求項１５】
前記管理部は、前記第１メモリに格納された管理プログラムを実行する前記第１プロセッサであることを特徴とする請求項１に記載の計算機システム。
【請求項１６】
第１ストレージ装置と、前記第１ストレージ装置に接続される第１サーバ計算機と、前記第１ストレージ装置及び前記第１サーバ計算機を管理する管理部と、を備える計算機システムを制御する方法であって、
前記第１ストレージ装置は、
複数の物理記憶領域を含む記憶媒体と、前記記憶媒体へのデータの書き込み及び前記アドレス範囲からのデータの読み出しを制御するコントローラと、を備え、
複数の論理ボリュームの少なくとも一つを前記第１サーバ計算機に認識させ、
前記各論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、
前記アドレス範囲へのデータの書き込み要求を受信すると、前記複数の物理記憶領域のうち、まだいずれの前記アドレス範囲にも割り当てられていないものを、前記書き込みを要求されたアドレス範囲へ割り当て、前記割り当てられた物理記憶領域に、前記書き込みを要求されたデータを格納し、
前記複数の論理ボリュームは、第１論理ボリューム及び第２論理ボリュームを含み、
前記第２論理ボリュームのいずれの前記アドレス範囲にも、前記物理記憶領域が割り当てられておらず、
前記第１サーバ計算機は、
前記ストレージ装置と通信する第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、
前記第１論理ボリュームに格納されたデータを識別する情報を保持し、
前記方法は、
前記管理部が、前記第１論理ボリュームに格納された全てのデータを前記第２論理ボリュームに移行させる要求を前記第１サーバ計算機に送信する手順と、
前記第２論理ボリュームの前記アドレス範囲への書き込みが終了した後、前記第１ストレージ装置が、前記第１論理ボリュームを削除する手順と、を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、計算機及び記憶装置システム（以下、ストレージともいう）を用いた計算機システムにおける、ストレージの記憶領域自動拡張ボリュームの記憶領域管理に関する。
【背景技術】
【０００２】
計算機及び記憶装置システムを用いた計算機システムでは、一般にストレージが提供する記憶領域を計算機がデータ格納用に利用する。計算機が格納するデータの増加にともない、記憶領域（以下ボリュームともいう）の容量を拡張する必要が生じる。
【０００３】
ボリュームを拡張するための方法として、例えば、一旦計算機システムの稼動をとめてから、ボリュームを拡張して、再度計算機システムにボリュームを使わせるという方法があった。このようなボリュームの拡張方法には、業務が停止してしまうという欠点があった。上記の欠点への対策が、特許文献１に開示されている。特許文献１には、計算機に認識させるボリュームの容量を変えずに、実際のストレージにおいては、ボリュームへの書き込みにあわせて、不足したボリュームの容量を自動的に拡張する技術が開示されている。
【０００４】
計算機に認識させるボリュームの容量を変えずに管理可能なボリュームは、以下、仮想ボリュームとも記載される。ボリュームの書き込みにあわせて、不足したボリュームの容量を拡張する実際の物理領域を管理する領域は、以下、仮想プールとも記載される。仮想プールに登録されるボリュームは、以下、仮想プールボリュームとも記載される。仮想ボリュームへの書き込みに合わせて容量を拡張するために割り当てられる領域は、以下、割り当て領域とも記載される。
【０００５】
また、上記仮想ボリュームの割り当て領域を削除する技術が特許文献２に開示されている。この技術によれば、ファイルサーバとストレージとが前記割り当て領域の状態を共有し、ファイルサーバが使用していない割り当て領域を削除する。
【特許文献１】特開２００３−１５９１５号公報
【特許文献２】特開２００７−２５７３１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
かかる従来の技術には、次のような課題がある。
【０００７】
第１に、ファイルサーバとストレージとの間で前記仮想ボリュームの割り当て領域の状態を伝達するモードが必要であるため、汎用性が高くないという点が考慮されていない。
【０００８】
第２に、従来の技術では、仮想ボリュームの割当領域を、ファイルサーバのアクセスに応じて、ファイルサーバとストレージとの間で確認する必要がある。このため、仮想ボリュームの割当領域とファイルサーバの使用領域に差がある場合、確認に時間がかかり、効率的ではないという点が考慮されていない。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、以下の手段を用いる。
【００１０】
ファイルサーバでは、ファイルをホストから透過的に移行する技術（以下、ファイル透過移行技術とも呼ぶ）がすでに提供されている。これは、複数のファイルシステムとサーバボリュームを単一のネームスペースとして管理するファイル仮想化機能などで実現される技術である。ファイルサーバによって使用されていない物理領域が多く割り当てられた仮想ボリュームが存在する場合、ファイルサーバは、そのような仮想ボリュームに格納された全ファイルを、ファイル透過移行技術を用いて別の仮想ボリュームに移行し、移行元の仮想ボリュームを削除する。これによって、ファイルサーバが使用している領域のみに物理領域が割り当てられた仮想ボリュームが作成される。
【００１１】
具体的には、本願で開示する代表的な発明は、第１ストレージ装置と、前記第１ストレージ装置に接続される第１サーバ計算機と、前記第１ストレージ装置及び前記第１サーバ計算機を管理する管理部と、を備える計算機システムにおいて、前記第１ストレージ装置は、複数の物理記憶領域を含む記憶媒体と、前記記憶媒体を用いて複数の論理ボリュームを定義し、前記記憶媒体へのデータの書き込み及び前記記憶領域からのデータの読み出しを制御するコントローラと、を備え、前記複数の論理ボリュームの少なくとも一つを前記第１サーバ計算機に認識させ、前記各論理ボリュームの記憶領域空間は、複数のアドレス範囲を含み、前記第１ストレージ装置は、前記アドレス範囲へのデータの書き込み要求を受信すると、前記複数の物理記憶領域のうち、まだいずれの前記アドレス範囲にも割り当てられていないものを、前記書き込みを要求されたアドレス範囲へ割り当て、前記割り当てられた物理記憶領域に前記書き込みを要求されたデータを格納し、前記複数の論理ボリュームは、第１論理ボリューム及び第２論理ボリュームを含み、前記第２論理ボリュームのいずれの前記アドレス範囲にも、前記物理記憶領域が割り当てられておらず、前記第１サーバ計算機は、前記ストレージ装置と通信する第１インターフェースと、前記第１インターフェースに接続される第１プロセッサと、前記第１プロセッサに接続される第１メモリと、を備え、前記第１論理ボリュームに格納されたデータを識別する情報を保持し、前記管理部は、前記第１論理ボリュームに格納された全てのデータを前記第２論理ボリュームに移行させる要求を前記第１サーバ計算機に送信し、前記データを移行させる要求を受信した前記第１サーバ計算機は、前記第１論理ボリュームの前記アドレス範囲に格納された全てのデータを読み出す要求、及び、前記読み出された全てのデータを前記第２論理ボリュームの前記アドレス範囲に書き込む要求を、前記第１ストレージ装置に送信し、前記管理部は、前記読み出された全てのデータの、前記第２論理ボリュームの前記アドレス範囲への書き込みが終了した後、前記第１論理ボリュームを削除する要求を前記第１ストレージ装置に送信し、前記第１ストレージ装置は、前記第１論理ボリュームを削除する要求を受信すると、前記第１論理ボリュームを削除することを特徴とする。
【発明の効果】
【００１２】
本発明の一実施形態によれば、仮想ボリュームの割り当て領域削減を、ホストに対しては透過的に、また、ファイルサーバとストレージ間の独自のモードを持つことなく、実現することができる。さらに、容量を削減する際には、移行するファイル容量のみを考慮すればよいため、仮想ボリュームの割当状態を意識することなく容量を削減することができる。
【発明を実施するための最良の形態】
【００１３】
本発明を実施するための最良の形態を説明する。
【００１４】
以下、本発明の実施例について、図面を用いて詳細に説明する。
【００１５】
最初に、本発明の第一の実施形態について説明する。
【００１６】
図１、図２、図３、図４及び図５は、本発明の第一の実施形態の計算機システムの構成の一例を示す図である。
【００１７】
図１は、本発明の第一の実施形態の計算機システムを構成する各装置と各装置の接続関係を表すブロック図の一例である。
【００１８】
一つ以上のホスト１２００とサーバ１１００は第二ネットワーク１５００によって接続される。サーバ１１００は、ホスト１２００からデータの入出力の要求を受け付ける。
【００１９】
サーバ１１００とストレージ１０００は第一ネットワーク１４００によって接続される。ストレージ１０００は、ホスト１２００経由で要求されたデータ入出力の要求に応じて、サーバ１１００からデータ入出力を受け付ける。
【００２０】
管理計算機１３００とサーバ１１００とストレージ１０００は管理ネットワーク１６００によって接続される。管理計算機１３００は、管理ネットワークを介してサーバ１１００及びストレージ１０００の管理情報を取得する。あるいは、サーバ１１００及びストレージ１０００が管理ネットワーク１６００を介して管理計算機１３００に管理情報を送付することもある。
【００２１】
本計算機システムにおいて、サーバ１１００とホスト１２００間では第二ネットワーク１５００を介してネットワークファイルシステムの環境を考慮する。例えば、ホスト１２００には通常のＯＳで実現されるネットワークファイルシステムクライアント、サーバには通常のＯＳで実現されるネットワークファイルシステムサーバが搭載され、ファイルアクセスが実行される。
【００２２】
第二ネットワーク１５００は、通常、ＴＣＰ／ＩＰのネットワークであってもよいが、ネットワークファイルシステム環境を実現できる限り、いかなる種類のネットワークであってもよい。
【００２３】
サーバ１１００は、Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ（ＮＡＳ）のコントローラとして実現されてもよい。計算機システムがホスト１２００を備えず、サーバ１１００で業務プログラムが動作してもよい。
【００２４】
また、サーバ１１００とストレージ１０００とは、ブロックレベルのアクセスを考慮する。よって、第一ネットワーク１４００は、通常、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ（ＦＣ）のネットワークが考えられるが、ブロックレベルアクセスができる限り、いかなる種類のネットワークであってもよい。例えば、第一ネットワーク１４００は、ｉＳＣＳＩプロトコルなどを通す、ＴＣＰ／ＩＰのネットワークであってもよい。あるいは、サーバ１１００の中にストレージ１０００が含まれてもよい。すなわち、第一ネットワーク１４００がサーバ１１００の内部バスとなり、サーバ１１００がストレージ１０００の機能を実現してもよい。
【００２５】
管理計算機１３００とサーバ１１００とストレージ１０００とが接続する管理ネットワーク１６００は、それを介して管理計算機１３００が管理情報を取得できる限り、いかなる種類のネットワークであってもよい。また管理計算機１３００とサーバ１１００とに接続された管理ネットワークが、管理計算機１３００とストレージ１０００とに接続された管理ネットワークと異なるプロトコルで実現される場合、これらの管理ネットワークが別々に構成されてもよい。
【００２６】
例えば管理計算機１３００とサーバ１１００とに接続される管理ネットワークがＴＣＰ／ＩＰネットワークであり、管理計算機１３００とストレージ１０００とに接続される管理ネットワークがＦＣネットワークであってもよい。また、上記のようにストレージ１０００用の管理ネットワークとサーバ１１００用の管理ネットワークとが独立に構成される場合、それらの各々が上記の２種類の管理ネットワーク（例えばＴＣＰ／ＩＰネットワーク及びＦＣネットワーク）を含んでもよい。
【００２７】
図２は、本発明の第一の実施形態の計算機システムに含まれるストレージ１０００の構成を示すブロック図の一例である。
【００２８】
ストレージ１０００は、入出力Ｉ／Ｆ１０１０、管理Ｉ／Ｆ１０１１、コントローラ１０２０、キャッシュ１０３０、メモリ１０４０、一つ以上のハードディスク１０７０、一つ以上の実ボリューム１０５０、一つ以上の仮想ボリューム１０５１及び一つ以上の仮想プールボリューム１０５２を備えるストレージ装置である。
【００２９】
入出力Ｉ／Ｆ１０１０は、第一ネットワーク１４００に接続され、サーバ１１００の読み書きに関するデータＩ／Ｏを送受信する。
【００３０】
管理Ｉ／Ｆ１０１１は、管理ネットワーク１６００に接続され、管理計算機１３００からの操作要求に関する通信を実行する。
【００３１】
コントローラ１０２０は、ストレージ１０００を操作する。コントローラ１０２０は、メモリ１０４０に格納されたプログラムを実行するプロセッサを含んでもよい。
【００３２】
キャッシュ１０３０は、ストレージ１０００の性能向上のために利用される。例えば、キャッシュ１０３０は、ハードディスク１０７０に書き込まれるデータ及びハードディスク１０７０から読み出されたデータの少なくとも一方を一時的に格納する半導体記憶装置である。
【００３３】
実ボリューム１０５０は、サーバ１１００に記憶領域として提供されてもよいし、新たに仮想プールボリューム１０５２として定義されてもよい。
【００３４】
仮想ボリューム１０５１は、サーバ１１００に記憶領域として提供される。
【００３５】
仮想プールボリューム１０５２は、仮想ボリューム１０５１を提供するためにデータを格納する記憶領域である。
【００３６】
一つ以上の仮想プールボリューム１０５２が、一つの仮想プール１０６０を構成する。仮想プール１０６０は、ある仮想ボリューム１０５１に記憶領域を提供する仮想プールボリューム１０５２の範囲を定める。
【００３７】
メモリ１０４０は、例えば半導体記憶装置であり、ストレージ構成プログラム１０４１及びストレージ構成情報１０４２を格納する。ストレージ構成プログラム１０４１は、コントローラ１０２０によって実行されることによって実現される。ストレージ構成情報１０４２は、ストレージ構成プログラム１０４１で使用される情報であり、ストレージ１０００の管理情報である。
【００３８】
ストレージ構成プログラム１０４１は、ストレージ１０００の構成について管理するプログラムである。具体的には、ストレージ構成プログラム１０４１は、実ボリューム１０５０、仮想ボリューム１０５１、仮想プールボリューム１０５２及び仮想プール１０６０を作成する機能、仮想ボリュームに仮想プールボリュームの物理的な記憶領域を割り当てる機能、実ボリューム１０５０及び仮想ボリューム１０５１を入出力Ｉ／Ｆ１０１０経由でサーバ１１００などの計算機に認識させるための機能、並びに、実ボリューム１０５０及び仮想ボリューム１０５１間でのデータ移行を行なう機能など、ストレージの機能を持つ。
【００３９】
実ボリューム１０５０及び仮想プールボリューム１０５２は、ハードディスク１０７０の記憶媒体そのものであってもよい。あるいは、実ボリューム１０５０及び仮想プールボリューム１０５２は、複数のハードディスク１０７０を含むＲＡＩＤによって実現される論理的なボリュームであってもよい。あるいは、外部接続されたストレージ（図示省略）のボリュームが適用されてもよい。ハードディスク１０７０の代わりにフラッシュメモリなどの記憶媒体が使用されてもよい。
【００４０】
図３は、本発明の第一の実施形態の計算機システムに含まれるサーバ１１００の構成を示すブロック図の一例である。
【００４１】
サーバ１１００は、入出力装置１１１０と、ＣＰＵ１１２０と、メモリ１１３０と、サーバボリューム１１４０と、ホスト入出力Ｉ／Ｆ１１５０とストレージ入出力Ｉ／Ｆ１１５１と、管理Ｉ／Ｆ１１５２と、を備える計算機である。
【００４２】
ホスト入出力Ｉ／Ｆ１１５０は、第二ネットワーク１５００と接続され、ホスト１２００の読み書きに関するデータＩ／Ｏを送受信する。
【００４３】
ストレージ入出力Ｉ／Ｆ１１５１は、第一ネットワーク１４００と接続され、ストレージ１０００の読み書きに関するデータＩ／Ｏを送受信する。
【００４４】
管理Ｉ／Ｆ１１５２は、管理ネットワーク１６００と接続され、管理計算機１３００からの操作要求に関する通信を実行する。
【００４５】
ＣＰＵ１１２０は、メモリ１１３０に格納されたプログラムを実行するプロセッサである。
【００４６】
メモリ１１３０には、管理計算機連携プログラム１１３１と、ファイル透過移行プログラム１１３２と、サーバボリューム容量監視プログラム１１３３と、サーバボリュームアクセスプログラム１１３４と、サーバボリューム情報１１３５と、が格納される。
【００４７】
管理計算機連携プログラム１１３１は、管理計算機１３００及び管理ネットワーク１６００を介して、管理計算機１３００からの操作要求を受信し、さらに、要求結果を送信するプログラムである。
【００４８】
ファイル透過移行プログラム１１３２は、ホスト１２００の構成変更を行なわずに、ファイルを別のファイルシステムに移行するプログラムである。ファイル透過移行の機能は、複数のファイルシステムとサーバボリューム１１４０とを単一のネームスペースとして管理可能とするファイル仮想化機能などによって実現される。
【００４９】
サーバボリューム容量監視プログラム１１３３は、サーバボリューム１１４０の容量、及び、実際にサーバ１１００が使用している容量を監視するプログラムである。
【００５０】
サーバボリュームアクセスプログラム１１３４は、ホスト１２００からの入出力、及び、ストレージ１０００への入出力の操作をつかさどり、さらに、容量などを管理するプログラムである。サーバボリュームアクセスプログラム１１３４は、実際のファイルシステムの機能を持つ。
【００５１】
サーバボリューム情報１１３５は、サーバボリューム１１４０に関する構成情報である。本実施形態において、サーバボリューム情報１１３５は、ファイル透過移行プログラム１１３２及びサーバボリューム容量監視プログラム１１３３によって使用される。
【００５２】
サーバボリューム１１４０は、サーバ１１００上で管理される論理ボリュームである。具体的には、ストレージ１０００の実ボリューム１０５０又は仮想ボリューム１０５１をサーバボリューム１１４０としてサーバ１１００が認識及び利用できるように設定されている。すなわち、サーバ１１００がサーバボリューム１１４０に対して実行したデータＩ／Ｏは、実際には、そのサーバボリューム１１４０に対応付けられた仮想ボリューム１０５１又は実ボリューム１０５０に対して実行される。
【００５３】
サーバ１１００がＬＶＭ（Ｌｏｇｉｃａｌ  Ｖｏｌｕｍｅ  Ｍａｎａｇｅｒ）等でサーバボリューム１１４０を再度論理的なボリュームとして設定しなおしてもよい。
【００５４】
図４は、本発明の第一の実施形態の計算機システムに含まれるホスト１２００の構成を示すブロック図の一例である。
【００５５】
ホスト１２００は、入出力装置１２１０と、ＣＰＵ１２２０と、メモリ１２３０と、ホストボリューム１２４０と、入出力Ｉ／Ｆ１２５０と、を備える計算機である。
【００５６】
入出力Ｉ／Ｆ１２５０は、サーバ１１００への入出力に関する通信を実行する。
【００５７】
ＣＰＵ１２２０は、メモリ１２３０に格納されたプログラムを実行するプロセッサである。
【００５８】
メモリ１２３０には、ホストで動作する業務プログラム１２３１と、サーバへのボリュームアクセスをつかさどるボリュームアクセスプログラム１２３２と、が格納される。ボリュームアクセスプログラムは、本実施形態ではネットワークファイルシステムによってサーバと通信可能な環境を考慮する。
【００５９】
ホストボリューム１２４０は、サーバ１１００で管理するボリューム（すなわちサーバボリューム１１４０）をホスト１２００が使用可能なように設定したボリュームである。サーバボリューム１１４０がそのままネットワークファイルシステムによってマウントされてもよいし、ＬＶＭによって別のサーバボリュームを設定しなおした論理ボリュームがマウントされてもよい。
【００６０】
図５は、本発明の第一の実施形態の計算機システムに含まれる管理計算機１３００の構成を示すブロック図の一例である。
【００６１】
管理計算機１３００は、入出力装置１３１０と、ＣＰＵ１３２０と、メモリ１３３０と、管理Ｉ／Ｆ１３６０と、を備える計算機である。
【００６２】
管理Ｉ／Ｆ１３６０は、管理ネットワーク１６００と接続され、ストレージ１０００及びサーバ１１００と通信する。
【００６３】
ＣＰＵ１３２０は、メモリ１３３０に格納されたプログラムを実行するプロセッサである。
【００６４】
メモリ１３３０には、サーバ連携プログラム１３３１と、ストレージ連携プログラム１３３２と、仮想ボリューム設定プログラム１３３３と、仮想ボリューム容量管理プログラム１３３５と、ストレージ管理情報１３４０と、が格納されている。
【００６５】
サーバ連携プログラム１３３１、ストレージ連携プログラム１３３２、仮想ボリューム設定プログラム１３３３及び仮想ボリューム容量管理プログラム１３３５は、本発明の実施の形態の処理を実現するものである。
【００６６】
以下の説明において、サーバ連携プログラム１３３１、ストレージ連携プログラム１３３２、仮想ボリューム設定プログラム１３３３及び仮想ボリューム容量管理プログラム１３３５の各プログラムが主語となる場合は、実際にはそのプログラムを実行するＣＰＵ１３２０によって処理が実行される。
【００６７】
図６、図７、図８、図９及び図１０は、ストレージ１０００のストレージ構成情報１０４２に含まれる情報の一例である。
【００６８】
またこれ以降、特に断りがない限り容量の単位はバイト（Ｂ）である。例えば、テーブルの仮想容量に１０Ｇと書かれていれば、この容量は１０Ｇバイトであることを示している。
【００６９】
図６は、本発明の第一の実施形態のストレージ１０００のストレージ構成情報１０４２に含まれる仮想ボリューム情報を管理するテーブルの一例を示す説明図である。
【００７０】
仮想ボリュームテーブル６０００は、仮想ボリュームＩＤ６０１０と、仮想プールＩＤ６０２０と、仮想容量６０３０と、実割当容量６０４０と、によって構成される。
【００７１】
仮想ボリュームＩＤ６０１０は、仮想ボリューム１０５１の識別子（ＩＤ）である。仮想プールＩＤ６０２０は、仮想ボリューム１０５１の実際の（すなわち物理的な）記憶領域として用いられる仮想プール１０６０の識別子を示す。仮想容量６０３０は、仮想ボリューム１０５１がサーバ１１００に認識させている容量を示す。実割当容量６０４０は、仮想ボリューム１０５１に実際に割り当てられた物理的な記憶領域の容量を示す。
【００７２】
仮想ボリューム１０５１に実際に割り当てられる容量は、上記のとおり、サーバ１１００等の計算機からの書き込みに応じて増えていく。サーバ１１００に仮想ボリューム１０５１を認識させるために、各仮想ボリューム１０５１に対して、ＬＵＮ（論理ユニット番号）と、ＳＣＳＩのポートＩＤといった情報を利用することがある。この場合、ＬＵＮ及びポートＩＤを仮想ボリュームテーブル６０００で管理してもよい。
【００７３】
図７は、本発明の第一の実施形態のストレージ１０００のストレージ構成情報１０４２に含まれる仮想プール容量情報を管理するテーブルの一例を示す説明図である。
【００７４】
仮想プール容量テーブル７０００は、仮想プールＩＤ７０１０と、全容量７０２０と、割当容量７０３０と、閾値７０４０と、によって構成される。
【００７５】
仮想プールＩＤ７０１０は、仮想プール１０６０の識別子である。全容量７０２０は、仮想プール１０６０の全容量を示す。割当容量７０３０は、仮想プール１０６０から仮想ボリューム１０５１に既に割り当てられた全容量を示す。閾値７０４０は、割当容量７０３０の閾値を示す。
【００７６】
閾値７０４０として、仮想容量６０３０に対する割当容量７０３０の割合の閾値（パーセント）が設定される。その割合が設定された閾値７０４０を超えると、仮想プールの容量を追加する必要があると判定されてもよい。また、その割合が閾値７０４０を超えれば、仮想ボリューム１０５１に容量を新たに割り当てない、という動作をストレージ１０００がしてもよい。閾値７０４０は、ユーザが指定してもよいし、仮想プールの容量に応じてストレージ構成プログラム１０４１が自動的に作成してもよい。また、閾値７０４０は、容量で表現されてもよい。
【００７７】
図８は、本発明の第一の実施形態のストレージ１０００のストレージ構成情報１０４２に含まれる実ボリューム情報を管理するテーブルの一例を示す説明図である。
【００７８】
実ボリュームテーブル８０００は、実ボリュームＩＤ８０１０と、容量８０２０と、によって構成される。実ボリュームテーブル８０００は、各実ボリューム１０５０の容量を確認するテーブルである。具体的には、実ボリュームＩＤ８０１０は、各実ボリューム１０５０の識別子である。容量８０２０は、各実ボリューム１０５０の容量である。
【００７９】
説明の簡単のため、本テーブルに登録された実ボリューム１０５０を仮想プールボリューム１０５２に変更することができる。すなわち実ボリュームを仮想プールに追加することで、仮想プールボリュームとして管理することができるとする。
【００８０】
図９は、本発明の第一の実施形態のストレージ１０００のストレージ構成情報１０４２に含まれる仮想プール１０６０の割当状態を管理するテーブルの一例を示す説明図である。
【００８１】
仮想プールテーブル９０００は、仮想プールＩＤ９０１０と、仮想プールボリュームＩＤ９０２０と、割当ＬＢＡ９０４０と、チャンクＩＤ９０３０と、割当状態９０５０と、によって構成される。
【００８２】
仮想プールＩＤ９０１０は、各仮想プール１０６０の識別子を示す。仮想プールボリュームＩＤ９０２０は、各仮想プールＩＤ９０１０に属する仮想プールボリューム１０５２の識別子を示す。割当ＬＢＡ９０４０には、各仮想プールボリューム１０５２が仮想プール１０６０に対して提供する記憶領域を割り当て済の論理ブロックアドレス（以下、Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ、ＬＢＡと呼ぶ）が登録される。チャンクＩＤ９０３０は、ＬＢＡに対応する割当済み記憶領域（以下、チャンクと呼ぶ）のうち、当該仮想プール１０６０に属するチャンクの識別子である。割当状態９０５０は、当該チャンクの割当状態を示す。
【００８３】
割当状態９０５０には、割当状態を示す値として、「割当」又は「未割当」のいずれかの値が登録される。この場合、「割当」は、チャンクが仮想ボリューム１０５１に割り当てられていることを、「未割当」は、チャンクがどの仮想ボリューム１０５１にも割り当てられていないことを示す。チャンクが割り当てられている場合、割り当てられている仮想ボリューム１０５１のＩＤも割当状態９０５０に登録される。
【００８４】
例えば、図９のテーブルの先頭のエントリによれば、チャンクＩＤが「Ｃ１１」であるチャンクは、仮想プールＩＤが「Ｐ１」である仮想プール１０６０の、仮想プールボリュームＩＤが「Ｖ１０１」である仮想プールボリューム１０５２の先頭から０ＧＢ目のアドレスを基点とし、先頭から２ＧＢ目のアドレスを終点とする、合計２ＧＢの物理的な記憶領域から構成され、仮想ボリューム「Ｖ１」（すなわち識別子「Ｖ１」によって識別される仮想ボリューム１０５１）に割当済みである。
【００８５】
なお、仮想プール容量テーブル７０００の全容量７０２０は、各仮想プール１０６０にある全チャンクの容量を示し、割当容量７０３０は、各仮想プール１０６０から割り当てられたチャンクの全容量を示す。
【００８６】
図９に示す例では「Ｐ１００」等の記載が省略されているが、それらの識別子によって識別される仮想プール１０６０も本テーブルによって同様に管理される。
【００８７】
図１０は、本発明の第一の実施形態のストレージ１０００のストレージ構成情報１０４２に含まれる仮想ボリューム１０５１の割当状態を管理するテーブルの一例を示す説明図である。
【００８８】
仮想ボリューム割当テーブル１００００は、仮想ボリュームＩＤ１００１０と、仮想プールＩＤ１００２０と、割当ＬＢＡ１００４０と、チャンクＩＤ１００３０と、によって構成される。
【００８９】
仮想ボリュームＩＤ１００１０は、各仮想ボリューム１０５１の識別子を示す。仮想プールＩＤ１００２０は、各仮想ボリューム１０５１がデータ格納のために用いる仮想プール１０６０の識別子を示す。割当ＬＢＡ１００４０は、各仮想ボリューム１０５１がサーバ１１００に対して提供する記憶領域空間のうち、実際に物理的な記憶領域（すなわちチャンク）を割当済みの記憶領域のＬＢＡを示す。チャンクＩＤ１００３０は、割当ＬＢＡ１００４０の値によって識別されるＬＢＡに対応した（すなわちそのＬＢＡが示す仮想ボリューム１０５１の記憶領域に割り当てられた）チャンクの識別子を示す。
【００９０】
例えば、図１０の先頭エントリは、本仮想ボリュームＩＤが「Ｖ２」である仮想ボリューム１０５１のうち、先頭から２ＧＢ目のアドレスを基点とし、先頭から４ＧＢ目のアドレスを終点とする、合計２ＧＢの記憶領域に、チャンク「Ｃ１３」が割当済みであることを示す。
【００９１】
なお、図９に示す例では「Ｖ１０００」、「Ｖ２０００」、「Ｖ３０００」の記載が省略されているが、それらの識別子によって識別される仮想ボリューム１０５１も本テーブルによって同様に管理される。
【００９２】
図１１は、本発明の第一の実施形態のサーバ１１００のサーバボリューム情報１１３５の一例を示す説明図である。
【００９３】
サーバボリュームテーブル１１０００は、サーバボリューム１１０１０と、容量１１０２０と、使用容量１１０３０と、ファイル１１０４０と、によって構成される。
【００９４】
サーバボリューム１１０１０は、サーバ１１００が利用している各サーバボリューム１１４０の識別子である。具体的には、サーバボリューム１１０１０は、ストレージ１０００の実ボリューム１０５０又は仮想ボリューム１０５１のＩＤと同じもの（例えば、仮想ボリュームＩＤ６０１０等）を示す。
【００９５】
容量１１０２０は、各サーバボリューム１１４０の容量を示す。サーバボリューム１１４０が仮想ボリューム１０５１に対応する場合、容量１１０２０は、その仮想ボリューム１０５１の仮想容量（例えば、仮想容量６０３０）を示す。
【００９６】
使用容量１１０３０は、各サーバボリューム１１４０の容量のうち、ファイル格納のためにサーバ１１００が使用している容量を示す。ファイル１１０４０は、各サーバボリューム１１４０に格納されているファイルの識別子を示す
例えば、図１１の先頭エントリは、サーバボリューム「Ｖ１０００」が、ストレージ１０００内の、識別子「Ｖ１０００」によって識別される仮想ボリューム１０５１であり、容量１１０２０が、その仮想ボリューム１０５１の仮想容量６０３０の値すなわち「２Ｔ」であることを示している。さらに、このエントリは、サーバボリューム「Ｖ１０００」にはファイル「Ｆ１」、「Ｆ２」、「Ｆ３」及び「Ｆ４」が格納されており、これらのファイル格納のための使用容量１１０３０が「２００Ｇ」であることを示している。
【００９７】
以上、図５、図６、図７、図８、図９、図１０及び図１１の各テーブルにおいて、仮想ボリューム１０５１のＩＤ、仮想プール１０６０のＩＤ、仮想プールボリューム１０５２のＩＤ及び実ボリューム１０５０のＩＤについて説明した。以下に説明するように、管理計算機１３００が上記各テーブルの情報を参照する場合がある。第一の実施形態は、説明の簡単のため、管理計算機１３００が管理しているストレージ１０００が一つだけである例を示す。
【００９８】
もし複数のストレージ１０００を管理計算機１３００が管理する場合、上記のＩＤは各ストレージ１０００内では一意であるが、計算機システム内で一意であることは保証されない。この場合、管理計算機１３００は、各ストレージ１０００の識別子を取得し、その識別子を仮想ボリュームＩＤ又は仮想プールＩＤ等と組みあわせることで、複数のストレージ１０００のボリューム又はプールを計算機システム内で一意に識別することができる。これによって、複数のストレージ１０００を備える計算機システムの管理にも本発明を適用することができる。
【００９９】
さらに、第一の実施形態は、説明の簡単のため、計算機システムが備えるサーバ１１００も一つだけである例を示す。しかし、計算機システムが複数のサーバ１１００を備える場合でも、全部のサーバ１１００が図１１の情報を取得すれば、本発明を適用することができる。またサーバ１１００と管理計算機１３００との間の送受信が実行される場合、予めサーバ１１００が使用しているボリュームを管理計算機１３００に送信するようにしてもよい。その場合、管理計算機１３００では、サーバボリュームテーブル１１０００のサーバボリューム１１０１０の情報と、サーバ１１００を識別する情報とをサーバ１１００から取得し管理すればよい。またサーバボリュームテーブル１１０００の他の情報も管理計算機１３００で管理しておいてもよい。
【０１００】
図１２は、本発明の第一の実施形態において仮想ボリューム割当容量削減を行なうための条件を設定する画面の一例を示す説明図である。
【０１０１】
図１２に示す画面は、全仮想ボリューム１０５１に設定することを考慮し、ボリュームの指定などはない。ボリュームごとに指定する画面は後述する（図１３参照）。ただし、後述するように、ボリュームごとに指定する画面から図１２が呼ばれることもあり、その場合は指定されたボリュームに下記情報が適用されることになる。
【０１０２】
仮想ボリューム割当容量削減条件設定画面Ａ１２０００は、適用割当容量１２１００と、使用率差分１２１１０と、の各欄を含む。
【０１０３】
さらに、仮想ボリューム割当容量削減条件設定画面Ａ１２０００は、条件を追加したい場合に操作されるボタンである追加１２２００と、条件が設定された後、実際に管理計算機１３００に条件を適用するために操作されるボタンである設定１２３００と、この画面の設定をキャンセルするために操作されるボタンであるキャンセル１２４００と、を含む。
【０１０４】
使用率差分１２１１０の欄には、ストレージの割当容量とサーバの使用容量の差分（すなわち使用率差分）の閾値が設定される。各仮想ボリューム１０５１の使用率差分は、仮想ボリューム１０５１の割当容量（例えば、仮想ボリュームテーブル６０００の仮想容量６０３０の情報）と、その仮想ボリューム１０５１に対応するサーバボリューム１１４０の使用容量（例えば、サーバボリュームテーブル１１０００の使用容量１１０３０の情報）の差を算出し、その差を仮想ボリューム１０５１の割当容量で割ったものをパーセント表示したものである。
【０１０５】
言い換えると、使用率差分は、割り当てられている容量に占める、使用されていない容量の割合に相当する。使用率差分の値が大きいほど、多くの不要な容量が仮想ボリューム１０５１に割り当てられているということができる。使用率差分１２１１０は、このような使用率差分の閾値であり、仮想ボリューム１０５１の使用率差分が使用率差分１２１１０の値を超えたとき、割当容量削減の処理（図１５〜図１８参照）が実行される。
【０１０６】
適用割当容量１２１００の欄には、使用率差分１２１１０の値が適用される仮想ボリュームの割当容量が設定される。
【０１０７】
図１２の例では、適用割当容量１２１００の値「１Ｔ以上」に対応する使用率差分１２１１０として、「８０％」が設定されている。これは、１Ｔバイト以上の容量が割り当てられた仮想ボリューム１０５１及びそれに対応するサーバボリューム１１４０について計算された使用率差分の値が８０％以上である場合、割当容量削減の処理が実行されることを意味する。一方、適用割当容量１２１００の値「１０Ｇ以上１Ｔ未満」に対応する使用率差分１２１１０として、「９０％」が設定されている。これは、１０Ｇバイト以上１Ｔバイト未満の容量が割り当てられた仮想ボリューム１０５１及びそれに対応するサーバボリューム１１４０について計算された使用率差分の値が９０％以上である場合、割当容量削減の処理が実行されることを意味する。
【０１０８】
具体的には、図１２の例のように、使用率差分１２１１０として「８０％」が設定されており、かつ、仮想ボリュームの割当容量が１Ｔである場合、サーバボリュームの使用容量が２００Ｇとなったときに、割当容量削減の処理が実行される。割当容量削減の処理ステップについては後述する（図１５〜図１８参照）。
【０１０９】
図１３は、本発明の第一の実施形態において仮想ボリューム割当容量削減を行なうための条件を設定する画面の別の例を示す説明図である。
【０１１０】
具体的には、図１３は、仮想ボリューム１０５１ごとに条件を設定する画面の一例を示す。
【０１１１】
仮想ボリューム割当容量削減条件設定画面Ｂ１３０００は、各仮想ボリューム１０５１の割当容量削減条件を表示、編集及び設定する画面であり、チェック１３１００と、仮想ボリューム１３１１０と、仮想容量１３１２０と、適用割当容量１３１３０と、使用率差分１３１４０と、の各欄を含む。
【０１１２】
さらに、仮想ボリューム割当容量削減条件設定画面Ｂ１３０００は、チェックしたボリュームの条件を編集する場合に操作されるボタンである編集１３２００と、条件が設定された後、実際に管理計算機１３００に条件を適用するために操作されるボタンである設定１３３００と、この画面の設定をキャンセルする場合に使用されるボタンであるキャンセル１３４００と、を含む。
【０１１３】
チェック１３１００は、割当容量削減条件を編集する仮想ボリューム１０５１を指定するためのチェックフラグである。仮想ボリューム１３１１０は、仮想ボリューム１０５１のＩＤを示す。仮想容量１３１２０は、仮想ボリューム１３１１０によって識別される仮想ボリューム１０５１の仮想容量を示す。
【０１１４】
適用割当容量１３１３０及び使用率差分１３１４０は、それぞれ、図１２の適用割当容量１２１００及び使用率差分１２１１０と同様に使用される。図１２の画面と図１３の画面の両方が使用される場合には、図１２で設定した値が、自動的に図１３に反映されてもよい。例えば、仮想ボリューム「Ｖ１０００」の仮想容量は２Ｔなので、図１２で示した２つの条件、すなわち「１Ｔ以上」と「１０Ｇ以上１Ｔ未満」の条件がそのまま図１３の表示に適用されている。
【０１１５】
ユーザが編集１３２００のボタンを操作すると、図１２の画面が表示され、ユーザは、各条件、すなわち適用割当容量及び使用率差分を設定する。
【０１１６】
あるいは、図１２の画面が表示されなくてもよい。その場合は適用割当容量１３１３０及び使用率差分１３１４０の値がデフォルトで保持されてもよいし、それらが空白で表示され、その後、ユーザに編集をさせてもよい。
【０１１７】
また、図１３の画面は、仮想ボリューム設定のときに呼び出されてもよいし、仮想ボリューム設定終了後、適時呼び出されてもよい。仮想ボリューム設定の時には、設定するボリュームのみが表示されてもよい。
【０１１８】
図１４は、本発明の第一の実施形態において仮想ボリューム割当容量削減指示を行なうための画面の一例を示す説明図である。
【０１１９】
仮想ボリューム割当容量削減指示画面１４０００は、チェック１４１００と、仮想ボリューム１４１１０と、仮想容量１４１２０と、仮想ボリューム割当容量１４１３０と、サーバ使用容量１４１４０と、の各欄を含む。
【０１２０】
チェック１４１００は、割当容量削減指示を行なうボリュームを指定するチェックフラグである。仮想ボリューム１４１１０は、仮想ボリューム１０５１のＩＤを示す。仮想容量１４１２０は、仮想ボリューム１４１１０の仮想容量を示す。仮想ボリューム割当容量１４１３０は、仮想ボリューム１０５１の割当容量を示す。サーバ使用容量１４１４０は、サーバ１１００における仮想ボリューム１０５１の使用容量（言い換えると、仮想ボリューム１０５１に対応するサーバボリューム１１４０の使用容量）を示す。
【０１２１】
さらに、仮想ボリューム割当容量削減指示画面１４０００は、チェックしたボリュームに実際の割り当て容量削減指示を行なうためのボタンである設定１４２００とこの画面の設定をキャンセルする場合のボタンであるキャンセル１４３００で構成される。
【０１２２】
仮想ボリューム１０５１に関する仮想容量及び仮想ボリューム割当容量は、前記ストレージ１０００の仮想ボリュームテーブル６０００の情報から取得することができ、サーバ使用容量は、サーバ１１００のサーバボリュームテーブル１１０００から取得することができることがわかる。よって、図１４の画面を表示するにあたり、仮想ボリューム１０５１に関する情報は、後述する図１５のステップ１５０３０及びステップ１５０４０のステップの処理を活用して取得される。
【０１２３】
そして、チェック１４１００のいずれかがチェックされ、設定１４２００のボタンが操作されたら、仮想ボリューム割当容量削減の処理が実行される。この処理については後述する（図１５〜図１８参照）。
【０１２４】
図１４に示す画面を用いた操作は、図１２及び図１３を用いたものとは独立に行なわれる。よって、図１２又は図１３の設定に関係なく、また、図１２又は図１３の画面設定がなくてもよい。図１２及び図１３は閾値に基づく自動的な仮想ボリューム割当容量削減を行なうための設定であり、図１４はユーザが手動で仮想ボリューム割当容量削減を行なうための設定である。
【０１２５】
次に、本実施形態において実行される処理について説明する。
【０１２６】
最初に、仮想ボリューム１０５１に対する書き込み（ライト）要求を受信したストレージ１０００が実行する処理について説明する。
【０１２７】
仮想ボリューム１０５１に対して書き込み要求がまだ一度も実行されていない場合、その仮想ボリューム１０５１には、仮想プール１０６０の物理的な記憶領域（チャンク）が全く割り当てられていない。ただし、何らかの理由によって、仮想ボリューム１０５１の一部のアドレス範囲に最初から記憶領域が割り当てられていてもよい。
【０１２８】
コントローラ１０２０は、仮想ボリューム１０５１のアドレス範囲を指定した書き込み要求を受信する。コントローラ１０２０は、指定されたアドレス範囲に、仮想プール１０６０のチャンクが割り当てられているか否かを確認する。割り当てられている場合、コントローラ１０２０は、割り当てられたチャンクにデータを格納する。
【０１２９】
一方、指定されたアドレス範囲にチャンクが割り当てられていない場合、コントローラ１０２０は、指定されたアドレス範囲に、まだ仮想ボリューム１０５１のいずれのアドレス範囲にも割り当てられていないチャンクを割り当て、そのチャンクにデータを格納する。さらに、コントローラ１０２０は、その新たな割り当てを管理情報（仮想プールテーブル９０００等）に反映させる。
【０１３０】
最初に、仮想ボリューム１０５１に対する読み出し（リード）要求を受信したストレージ１０００が実行する処理について説明する。
【０１３１】
コントローラ１０２０は、仮想ボリューム１０５１のアドレス範囲を指定した読み出し要求を受信する。コントローラ１０２０は、指定されたアドレス範囲に、仮想プール１０６０のチャンクが割り当てられているか否かを確認する。割り当てられている場合、コントローラ１０２０は、割り当てられたチャンクからデータを読み出し、サーバ１１００に返す。
【０１３２】
一方、指定されたアドレス範囲にチャンクが割り当てられていない場合、コントローラ１０２０は、指定されたアドレス範囲のデータ量に相当する、あらかじめ定められたデータ（例えば「０」）をサーバ１１００に返す。
【０１３３】
次に、本実施形態における仮想ボリューム割当容量削減の処理について説明する。
【０１３４】
図１５、図１６、図１７及び図１８は、仮想ボリューム割当容量削減の処理を行なうフローチャートの一例である。
【０１３５】
図１５、図１６、図１７及び図１８においては、管理計算機１３００が、メモリ１３３０上の各プログラムを、ＣＰＵ１３２０を用いて処理する。ただし、ストレージ１０００及びサーバ１１００との連携に従い、フローチャートの流れに従い、ストレージ１０００及びサーバ１１００が行なう動作についても説明する。
【０１３６】
図１５は、本発明の第一の実施形態において、仮想ボリューム１０５１の中から割当容量削減を行なう仮想ボリューム１０５１を選択する処理を示すフローチャートの一例である。
【０１３７】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、仮想ボリューム割当削減設定をユーザから受け付ける（ステップ１５０００）。この設定は、例えば、管理計算機１３００は、上記の図１２、図１３又は図１４の画面を用いて仮想ボリューム割当削減設定を受け付ける。あるいは、上記の画面によらず、コマンドライン又はファイルなどの形式で設定されてもよい。
【０１３８】
ステップ１５０００終了の後、処理はステップ１５０１０に進む。
【０１３９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１５０００の設定が図１２又は図１３を用いて行われたか否かを判定する（ステップ１５０１０）。ステップ１５０００の設定に図１２又は図１３の画面が用いられていれば、閾値に基づく自動的な仮想ボリューム割当容量削減が実行される。このため、処理はステップ１５０２０に進む。一方、ステップ１５０００の設定に図１２又は図１３の画面が用いられていない場合（すなわち、図１４の画面を用いて設定されている場合）、ユーザが手動で仮想ボリューム割当容量削減を行う。このため、処理はステップ１５０６０に進む。
【０１４０】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、仮想ボリューム１０５１の容量監視を開始する（ステップ１５０２０）。そして処理はステップ１５０３０に進む。
【０１４１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からストレージ連携プログラム１３３２を介して、図１２又は図１３の画面で指定された仮想ボリューム１０５１の割当容量をストレージ１０００から取得する（ステップ１５０３０）。すなわち、仮想ボリュームテーブル６０００の情報がストレージ１０００から取得される。
【０１４２】
ステップ１５０３０の処理終了後、処理はステップ１５０４０に進む。
【０１４３】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、図１２又は図１３で指定された仮想ボリューム１０５１のサーバ１１００における使用容量をサーバ１１００から取得する（ステップ１５０４０）。すなわち、サーバボリュームテーブル１１０００の情報がサーバ１１００から取得される。
【０１４４】
このとき、サーバ１１００は、管理計算機連携プログラム１１３１によって、上記要求を受けて、サーバボリューム容量監視プログラム１１３３によって、サーバボリューム情報１１３５のサーバボリュームテーブル１１０００の情報を取得し、管理計算機連携プログラム１１３１によって、管理計算機１３００にサーバボリュームテーブル１１０００の情報を送信する。この場合、サーバ１１００は、図１２又は図１３の画面で指定されたボリュームに関連する情報のみを送信してもよいし、サーバ１１００が管理している情報を全部管理計算機１３００に送信してもよい。後者の場合、送信された情報から、指定されたボリュームに関連する情報を、管理計算機１３００が選択する。
【０１４５】
ステップ１５０４０の処理終了後、処理はステップ１５０５０に進む。
【０１４６】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、割当容量とサーバ使用容量とから算出された使用率差分が使用率差分１１２１０（又は１３１４０）以上である仮想ボリューム１０５１があるか否かを判定する（ステップ１５０５０）。
【０１４７】
ステップ１５０５０の判定条件を満たす仮想ボリューム１０５１（すなわち、算出された使用率差分が使用率差分１２１１０等以上である仮想ボリューム１０５１）がある場合、その判定条件を満たす仮想ボリューム１０５１は、割り当て済みであって、かつ、使用されていない容量を多く含んでいるため、仮想ボリューム割当容量削減処理の対象として扱われる。このため、処理はステップ１５０８０に進む。一方、上記の判定条件を満たす仮想ボリューム１０５１がない場合、処理はステップ１５０３０に戻る。
【０１４８】
ステップ１５０３０に戻る場合、所定の時間処理を中断して、その所定の時間経過後、再びステップ１５０３０を開始してもよい。今回のステップ１５０５０が実行されてから次回のステップ１５０５０が実行されるまでの間隔が短ければ、その間に状況が変化しておらず、次回のステップ１５０５０の結果再びステップ１５０３０に戻る可能性が高いためである。
【０１４９】
ステップ１５０３０及びステップ１５０４０において、管理計算機１３００が所定のコマンド等を発行することによって情報を取得してもよいが、定期的に又は容量が変化したときに、ストレージ１０００及びサーバ１１００が管理計算機に情報を供給してもよい。
【０１５０】
例えば、識別子「Ｖ１０００」によって識別される仮想ボリューム（以下、仮想ボリューム「Ｖ１０００」と記載する）が仮想ボリュームテーブル６０００の例に記載されるように存在し、かつ、仮想ボリューム「Ｖ１０００」が（それに対応するサーバボリューム「Ｖ１０００」として）サーバボリュームテーブル１１０００の例に記載されるように存在している場合、仮想ボリューム「Ｖ１０００」の仮想容量が２Ｔ、実割当容量が１Ｔ、サーバ使用容量が２００Ｇであることがわかる。ここで、図１２に示した設定例を考慮すると、１Ｔ以上の割当容量がある場合、使用率差分１２１１０が８０％であることがわかる。上記の仮想ボリューム「Ｖ１０００」の情報から、使用率差分は８０％と算出される。したがって、この場合、ステップ１５０５０において、仮想ボリューム「Ｖ１０００」は判定条件を満たす仮想ボリューム１０５１であると判定され、処理はステップ１５０６０に進む。
【０１５１】
同様に、仮想ボリューム「Ｖ２０００」は、使用率差分が５０％と算出されるため、処理はステップ１５０３０に進む。
【０１５２】
管理計算機１３００は、仮想ボリューム容量管理プログラムによって、ステップ１５０５０で条件を満たすと判定された仮想ボリューム１０５１をリストアップして、それらを割当容量削減対象とする（ステップ１５０６０）。
【０１５３】
なお、ステップ１５０１０において、図１４に示す画面を用いて設定されたと判定された場合、ステップ１５０６０において、管理計算機１３００は、ユーザが図１４に示す画面を用いて選択した仮想ボリューム１０５１を割当容量削減対象とする。
【０１５４】
ステップ１５０６０の処理終了後、処理はステップ１６０００に進む（Ａ）。ステップ１６０００及びそれに続くステップについては図１６を参照して説明する。
【０１５５】
図１６は、本発明の第一の実施形態において、仮想ボリューム割当容量削減のために、仮想ボリューム１０５１の移行先ボリュームを作成する処理を示すフローチャートの一例である。
【０１５６】
図１６に示す処理は、図１５に示す処理に続いて実行される。
【０１５７】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１６０１０以降の処理が終わっていない割当容量削減対象の仮想ボリューム１０５１を、ステップ１５０８０で取得したリストから選択する（ステップ１６０００）。
【０１５８】
ステップ１６０００の処理終了後、処理はステップ１６０１０に進む。
【０１５９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からストレージ連携プログラム１３３２を介して、ステップ１６０００で選択した割当容量削減対象の仮想ボリューム１０５１が属する仮想プール１０６０に関する情報をストレージ１０００から取得する（ステップ１６０１０）。対象となる仮想プール１０６０の容量の情報は、すでに取得している仮想ボリュームテーブル６０００及び仮想プール容量テーブル７０００から取得することができる。
【０１６０】
ステップ１６０１０の処理終了後、処理はステップ１６０２０に進む。
【０１６１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１６０１０で取得した仮想プール１０６０が、割当容量削減対象である仮想ボリューム１０５１のサーバ使用容量以上の空き容量を持つか否かを判定する（ステップ１６０２０）。ここで、仮想プール１０６０の空き容量とは、仮想プール１０６０の全容量のうち、まだいずれの仮想ボリューム１０５１にも割り当てられていない容量を意味する。
【０１６２】
割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量はすでに取得されているので、管理計算機１３００は、そのサーバ使用容量分の空き容量が対象仮想プール１０６０にあるか否かを仮想プール容量テーブル７０００に基づいて判定する。対象仮想プール１０６０がサーバ使用容量分の空き容量を持っていれば、割当容量削減対象の仮想ボリューム１０５１のデータを移行することは可能である。
【０１６３】
ステップ１６０２０の処理終了後、仮想ボリューム１０５１のデータを移行可能と判定された場合、処理はステップ１６０５０に、可能でないと判定された場合、処理はステップ１６０３０に進む。
【０１６４】
例えば、仮想ボリューム「Ｖ１０００」の場合、仮想ボリューム「Ｖ１０００」に対応する仮想プール１０６０は、仮想ボリュームテーブル６０００から、「Ｐ１００」によって識別される仮想プール１０６０（以下、仮想プール「Ｐ１００」と記載する）であることがわかる。そして仮想プール「Ｐ１００」は、仮想プール容量テーブル７０００から、全容量が５００Ｇ、割当容量は１００Ｇであることがわかる。すなわち空き容量が４００Ｇであり、４００Ｇのデータをこの仮想プールに割り当てることが可能であることがわかる。そして、サーバ使用容量は、サーバボリュームテーブル１１０００から２００Ｇであることがわかる。よって空き容量４００Ｇに２００Ｇのサーバ使用容量を確保することは可能であるので、処理はステップ１６０５０に進む。
【０１６５】
一方、例えば、仮想ボリューム「Ｖ２０００」の場合、上記と同じように値を取得すると、空き容量は１００Ｇ、サーバ使用容量は１５０Ｇであることがわかる。よって、この場合には、空き容量にサーバ使用容量を確保できないので、処理はステップ１６０３０に進む。
【０１６６】
ステップ１６０２０において、仮想プール１０６０の閾値に対して、後述するようにサーバ使用容量以上の空き容量があるか否かが判定されてもよい。例えば、仮想プール「Ｐ１００」の割当容量が２５０Ｇであった場合、仮想ボリューム「Ｖ１０００」のサーバ使用容量が２００Ｇであるため、サーバ使用容量を後述するように仮想プール「Ｐ１００」に書くことになると、仮想プール「Ｐ１００」の割当容量は４５０Ｇとなる。このとき、割当容量が閾値７０４０以上の値になるので、警告を発生することになる。したがって、このような場合は空き容量がないと判定してステップ１６０３０に進んでもよい。
【０１６７】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からストレージ連携プログラム１３３２を介して、ストレージ１０００の実ボリューム情報を取得する（ステップ１６０３０）。すなわち、管理計算機１３００は、実ボリュームテーブル８０００の情報を取得する。
【０１６８】
ステップ１６０３０の処理終了後、処理はステップ１６０４０に進む。
【０１６９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１６０１０で取得した仮想プール１０６０に、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分以上の仮想プールボリューム１０５２を追加できるか否かを判定する（ステップ１６０４０）。対象の仮想プール１０６０に仮想プールボリューム１０５２として追加し得る実ボリューム１０５０の情報は、ステップ１６０３０において取得されている。このため、実ボリュームテーブル８０００に基づいて、一つ又は複数の実ボリューム１０５０を仮想プールボリューム１０５２に変更することで、仮想プール１０６０の空き容量が割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分以上になることが確認できれば、ステップ１６０４０の処理は成功となる。
【０１７０】
例えば、仮想ボリューム「Ｖ２０００」の場合、ステップ１６０２０において「Ｎｏ」と判定され、ステップ１６０３０の処理が実行された後、ステップ１６０４０が実行される。仮想ボリューム「Ｖ２０００」は、仮想プール「Ｐ２００」に対応する（仮想ボリュームテーブル６０００参照）。仮想プール「Ｐ２００」の空き容量は、１００Ｇである。これは、仮想プール「Ｐ２００」の全容量「４００Ｇ」から割当容量「３００Ｇ」を減算することによって算出される（仮想プール容量テーブル７０００参照）。仮想ボリューム「Ｖ２０００」のサーバ使用容量は、１５０Ｇである（サーバボリュームテーブル１１０００参照）。
【０１７１】
この場合、５０Ｇ分の容量を仮想プール「Ｐ２００」に追加すれば、仮想プール「Ｐ２００」の空き容量が仮想ボリューム「Ｖ２０００」のサーバ使用容量以上となる。すなわち、実ボリュームテーブル８０００に基づいて、Ｖ３０又はＶ４０を追加すればよいことがわかる。ただし、閾値設定を考慮した場合、Ｖ３０を追加することで、閾値に関する警告を防ぐことができる。
【０１７２】
ステップ１６０４０において、処理成功であれば、ステップ１６０５０に進む。処理失敗、すなわち、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量に相当する仮想プール１０６０の空き容量を、実ボリューム１０５０を仮想ボリューム１０５１として追加することによって確保できない場合、処理はステップ１８０００に進む（Ｃ）。ステップ１８０００及びそれに続くステップについては図１８で説明する。
【０１７３】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３を呼び出し、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分以上の容量を有する実ボリューム１０５０を選択する（ステップ１６０５０）。そして仮想ボリューム設定プログラムはストレージ連携プログラム１３３２を介して、ステップ１６０５０で選択した実ボリューム１０５０を、ステップ１６０１０で選択した仮想プール１０６０に追加し、仮想プールボリューム１０５２とする。
【０１７４】
実際には、ストレージ１０００は、上記の仮想プール１０６０追加の要求を受け取り、上記選択した実ボリューム１０５０を仮想プールボリューム１０５２として設定する。このとき、仮想プール容量テーブル７０００において、仮想プールボリューム１０５２が追加された仮想プール１０６０の全容量の値を、追加された仮想プールボリューム１０５２の容量の分だけ加算させる。そして、ストレージ１０００は、実ボリュームテーブル８０００において、新たな仮想プールボリューム１０５２として設定されたものを削除する。
【０１７５】
例えば、上記の例に従えば、仮想ボリューム「Ｖ２０００」に関連する仮想プール「Ｐ２００」に、実ボリューム「Ｖ３０」が仮想プールボリューム１０５２として追加される。よって、仮想プール容量テーブル７０００の仮想プール「Ｐ２００」の全容量は６００Ｇに変更され、実ボリュームテーブル８０００の実ボリューム「Ｖ３０」の情報は削除される。
【０１７６】
ステップ１６０５０の処理終了後、処理はステップ１６０６０に進む。
【０１７７】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３を呼び出し、ステップ１６０１０で取得した仮想プール１０６０に、ステップ１６０００で選択した仮想ボリューム１０５１と同一の仮想容量を持つ仮想ボリューム１０５１を作成するように指示する（ステップ１６０６０）。ここで作成された仮想ボリューム１０５１は、後述するファイル透過移行において移行先として使用される。
【０１７８】
そして、仮想ボリューム設定プログラム１３３３は、ストレージ連携プログラム１３３２を介して、ステップ１６０１０で選択した仮想プール１０６０に、ステップ１６０００で選択した仮想ボリューム１０５１と同一の仮想容量を持つ仮想ボリューム１０５１を新規に作成する。そして、仮想ボリューム設定プログラム１３３３は、新規に作成された仮想ボリューム１０５１をサーバ１１００が認識できるように設定する。
【０１７９】
実際にはストレージ１０００が、上記要求を受け取り、仮想ボリューム１０５１を作成する。このとき仮想ボリュームテーブル６０００に新規の仮想ボリューム１０５１の情報が追加される。新規の仮想ボリューム１０５１のＩＤは、ストレージ１０００が自動的に設定しても、ユーザ又は管理計算機１３００が設定してもよい。
【０１８０】
例えば、上記の例に従えば、仮想ボリューム「Ｖ２０００」を容量削減対象とするとき、仮想プール「Ｐ２００」に仮想ボリューム１０５１が追加される。仮想ボリュームテーブル６０００に登録される情報は、仮想ボリューム容量管理プログラム１３３５によって決定され、仮想ボリュームＩＤ情報は、ストレージ１０００の中で空いている（すなわち使用されていない）番号を探すことで決定される。
【０１８１】
図６から図１０までにすべてのボリュームの情報が列挙されていると仮定するならば、例えば「Ｖ２００１」は空き番号なので、新たに作成された仮想ボリューム１０５１のＩＤは「Ｖ２００１」と決定される。仮想ボリューム「Ｖ２００１」は仮想プール「Ｐ２００」に追加されるので、仮想プールＩＤの情報として「Ｐ２００」が登録される。仮想ボリューム「Ｖ２００１」の仮想容量６０３０は、仮想ボリューム「Ｖ２０００」と同じで足りるので、「８００Ｇ」が登録される。この時点で仮想ボリューム「Ｖ２００１」へのデータ書き込みは一度も実行されていないため、実割当容量６０４０として「０Ｇ」が登録される。
【０１８２】
ステップ１６０６０の処理終了後、処理はステップ１７０００に進む（Ｂ）。ステップ１７０００及びそれに続くステップは、ファイル移行による仮想ボリューム１０５１の割当容量削減のステップを示す。ステップ１７０００等については図１７で説明する。
【０１８３】
例えば、仮想ボリューム「Ｖ１０００」を割当容量削減の対象としている場合、仮想プール「Ｐ１００」に仮想容量２Ｔの仮想ボリューム１０５１が作成される。
【０１８４】
上記ステップ１６０６０では、ステップ１６０００で選択した仮想ボリューム１０５１（すなわち移行元の仮想ボリューム１０５１）と同一の仮想容量を有する仮想ボリューム１０５１が移行先として作成される。しかし、移行先の仮想ボリューム１０５１に移行元のサーバ使用容量と同等の仮想容量があれば、サーバ１１００は後述するファイル透過移行を実行できる。このため、移行先の仮想ボリューム１０５１の仮想容量は、少なくともステップ１６０００で選択した仮想ボリューム１０５１のサーバ使用容量分あれば十分であり、移行元の仮想ボリューム１０５１の仮想容量と同じである必要はない。
【０１８５】
また、既存の仮想ボリューム１０５１のうち、まだ利用されていない仮想ボリューム１０５１があれば、それを移行先として用いてもよい。
【０１８６】
図１６の処理によって、上記のように、ファイルの移行先となる仮想ボリューム１０５１を作成することができる。
【０１８７】
図１７は、本発明の第一の実施形態において、ファイル移行によって仮想ボリューム１０５１の割当容量削減を行なう処理を示すフローチャートの一例である。
【０１８８】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ファイル移行用仮想ボリューム、すなわちステップ１６０６０で作成した仮想ボリューム１０５１をサーバ１１００にマウントするように指示する（ステップ１７０００）。この指示は、ファイル移行用仮想ボリュームをサーバ１１００で扱えるようにするための指示である。そしてサーバ１１００は、サーバボリュームアクセスプログラム１１３４によって、マウントを実行する。これは従来のファイルシステムの機能によって達成される。
【０１８９】
上記の例に従えば、ステップ１６０６０で仮想ボリューム「Ｖ２００１」がファイル移行用仮想ボリュームとして作成されているので、仮想ボリューム「Ｖ２００１」がサーバ１１００にマウントされる。そしてサーバ１１００はサーバボリュームテーブル１１０００に上記新たにマウントした仮想ボリューム「Ｖ２００１」を登録する。すなわちサーバボリューム１１０１０には仮想ボリュームＩＤである「Ｖ２００１」が、容量１１０２０にはステップ１６０６０の例に従い「８００Ｇ」が、使用容量１１０３０には、まだ仮想ボリューム「Ｖ２００１」にファイルが書き込まれていないので「０Ｇ」が、ファイル１１０４０には、まだ仮想ボリューム「Ｖ２００１」にファイルが書き込まれていないので空白が登録される。
【０１９０】
ステップ１７０００の処理終了後、処理はステップ１７０１０に進む。
【０１９１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ステップ１６０００で選択した仮想ボリューム１０５１の全ファイルを、ステップ１７０００でサーバにマウントした仮想ボリューム１０５１にファイル透過移行することを指示する（ステップ１７０１０）。
【０１９２】
例えば、ステップ１６０００で仮想ボリューム「Ｖ１０００」が選択された場合、サーバボリュームテーブル１１０００に基づいて、仮想ボリューム「Ｖ１０００」にファイルＦ１、Ｆ２、Ｆ３及びＦ４が格納されていることがわかる。この場合、仮想ボリューム容量管理プログラム１３３５は、ファイルＦ１、Ｆ２、Ｆ３及びＦ４の全ファイルを、ステップ１７０００でサーバにマウントした仮想ボリューム１０５１、上記例に従えば仮想ボリューム「Ｖ２００１」にファイル透過移行することを指示する。
【０１９３】
ステップ１６０００において仮想ボリューム「Ｖ２０００」が選択された場合、サーバ１１００は仮想ボリューム「Ｖ２０００」のファイルを仮想ボリューム「Ｖ２００１」に透過的に移行する。すなわち、サーバ１１００は、仮想ボリューム「Ｖ２０００」に格納された全てのファイルを仮想ボリューム「Ｖ２０００」から読み出し、読み出された全てのファイルを仮想ボリューム「Ｖ２００１」に書き込む。
【０１９４】
ストレージ１０００は、サーバ１１００からの要求に従って、仮想ボリューム「Ｖ２０００」に格納された全てのファイルのデータを、仮想ボリューム「Ｖ２０００」に対応付けられた仮想プール１０６０の物理記憶領域から読み出し、読み出されたデータを、仮想ボリューム「Ｖ２００１」に対応付けられた仮想プール１０６０の物理記憶領域に書き込む。このとき、ストレージ１０００は、仮想ボリューム「Ｖ２００１」の記憶領域のうち、データが書き込まれるべき記憶領域のみに仮想プール１０６０の物理記憶領域を（チャンクとして）割り当てる。
【０１９５】
この場合、仮想ボリューム「Ｖ２０００」の情報として、サーバボリュームテーブル１１０００の使用容量１１０３０には、ファイルが仮想ボリューム「Ｖ２００１」に移行した（すなわち仮想ボリューム「Ｖ２０００」にはファイルが残っていない）ので「０Ｇ」が、ファイル１１０４０には、ファイルが移行したので空白が登録される。仮想ボリューム「Ｖ２００１」の情報として、使用容量１１０３０には、仮想ボリューム「Ｖ２０００」のファイルが移行してきたので「１５０Ｇ」が、ファイル１１０４０には、移行が実行される前の仮想ボリューム「Ｖ２０００」に格納されていたファイルＦ５及びＦ６が登録される。
【０１９６】
ステップ１７０１０の処理終了後、処理はステップ１７０２０に進む。
【０１９７】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ステップ１７０１０で指示したファイル透過移行が終わったか否かを確認する（ステップ１７０２０）。この確認は、定期的なサーバ１１００への問い合わせによって実現されてもよいし、サーバ１１００から終了したことの通知を受けることによって実現されてもよい。そしてファイル透過移行が確認できたところで、ステップ１７０２０の処理は終了する。
【０１９８】
ステップ１７０２０の処理終了後、処理はステップ１７０３０に進む。
【０１９９】
上記の処理によって、ステップ１６０００で選択した仮想ボリュームの全ファイルが、ステップ１７０００でサーバにマウントした仮想ボリュームにファイル透過移行される。すなわち、ステップ１７０２０によって終了が確認された時点で、ステップ１６０００で選択した仮想ボリューム１０５１に格納されたファイルのうち、サーバ１１００が使用していたファイルのみがステップ１７０００の仮想ボリュームに移行されている。その移行が終了した後、ステップ１６０００の仮想ボリューム１０５１は、サーバ１１００によって使用されないため、削除することができる。
【０２００】
ステップ１７０１０から１７０２０の処理によって、ストレージ１０００において、ステップ１６０６０で作成した仮想ボリューム１０５１への書き込みが発生する。その書き込みの結果と整合するように、仮想ボリュームテーブル６０００、仮想プール容量テーブル７０００、仮想プールテーブル９０００及び仮想ボリューム割当テーブル１００００が更新される。
【０２０１】
例えば、上記例に従えば、仮想ボリューム「Ｖ２０００」が容量削減対象であり、仮想ボリューム「Ｖ２００１」がファイル透過移行先として扱われる。その場合、仮想ボリューム「Ｖ２００１」の実割当容量６０４０が更新される。具体的には、ファイル透過移行前の仮想ボリューム「Ｖ２０００」のサーバ使用容量と同一の容量が、ファイル透過移行後の仮想ボリューム「Ｖ２００１」の実割当容量６０４０として登録される。その結果、ステップ１６０６０では「０Ｇ」だった仮想ボリューム「Ｖ２００１」の実割当容量６０４０が、ステップ１７０２０が終了した結果、「１５０Ｇ」に更新される。
【０２０２】
さらに、仮想プール容量テーブル７０００においても、仮想プール「Ｐ２００」の割当容量７０３０「３００Ｇ」から「４５０Ｇ」に更新される。また仮想プールテーブル９０００においては、図９では省略されているが、仮想プール「Ｐ２００」において、割当状態９０５０が更新される。上記の例の場合、１５０Ｇ分のチャンクが２Ｇごとに仮想ボリューム「Ｖ２００１」に割り当てられる。それらのチャンクの割当状態９０５０として、割り当て先の仮想ボリューム１０５１の仮想ボリュームＩＤである「Ｖ２００１」が登録される。同様に、仮想ボリューム「Ｖ２００１」及び「Ｖ２００１」に対応する仮想プールＩＤとして「Ｐ２００」、割り当てられたチャンクのＩＤ、及び、割当ＬＢＡ情報が、それぞれ、仮想プールＩＤ１００２０、チャンクＩＤ１００３０及び割り当てＬＢＡ１０４００に登録されるように、仮想ボリューム割当テーブル１００００が更新される。
【０２０３】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３に、ステップ１６０００で選択した仮想ボリューム１０５１を削除すること指示する（ステップ１７０３０）。そして仮想ボリューム設定プログラム１３３３はストレージ連携プログラムを１３３２介して、ステップ１６０００で選択した仮想ボリューム１０５１を削除する。ステップ１６０００で選択した仮想ボリューム１０５１の削除に際して、ホストへの仮想ボリューム１０５１の割当設定も削除する必要がある場合は、この設定も削除し、最終的に仮想ボリューム１０５１を削除できるような環境にした後で仮想ボリューム１０５１を削除する。
【０２０４】
例えば、仮想ボリューム「Ｖ２０００」が削除の対象である場合、仮想ボリューム「Ｖ２０００」そのものが削除される。このときストレージ１０００では、仮想ボリューム「Ｖ２０００」を削除するが、その際、仮想ボリュームテーブル６０００、仮想プール容量テーブル７０００、仮想プールテーブル９０００及び仮想ボリューム割当テーブル１００００が更新される。
【０２０５】
具体的には、仮想ボリュームテーブル６０００においては、削除される仮想ボリューム１０５１に関する情報が削除される。上記例に従えば、仮想ボリューム「Ｖ２０００」に関する情報が削除される。
【０２０６】
仮想プール容量テーブル７０００においては、仮想ボリューム１０５１が削除されたことと整合するように、割当容量が削除される。上記のように仮想ボリューム「Ｖ２０００」が削除される例について説明すると、削除される前の仮想ボリューム「Ｖ２０００」の割当容量は３００Ｇであった。このため、仮想プール「Ｐ２００」の割当容量７０３０の値は３００Ｇ減算される。一方、新たに作成された仮想ボリューム「Ｖ２００１」の割当容量は１５０Ｇであるため、仮想プール「Ｐ２００」の割当容量７０３０の値は１５０Ｇ加算される。図７の例は、仮想ボリューム「Ｖ２０００」が削除される前、かつ、仮想ボリューム「Ｖ２００１」が作成される前の状態を示すため、上記の更新の結果、仮想プール「Ｐ２００」の割当容量７０３０の値は１５０Ｇとなる。
【０２０７】
さらに、仮想プールテーブル９０００及び仮想ボリューム割当テーブル１００００においても、削除された仮想ボリューム１０５１に関する情報が削除される。すなわち、上記の例では、仮想ボリューム「Ｖ２０００」の割当に関係する情報が削除される。
【０２０８】
ステップ１７０３０によって、削除された仮想ボリューム１０５１の割当容量は仮想プール１０６０に返却される。返却された割当容量は、削除された仮想ボリューム１０５１と同じ仮想プール１０６０に属する他の仮想ボリューム１０５１に新たに割り当てることが可能な空き容量として扱われる。ステップ１７０１０で作成された仮想ボリューム１０５１には、ステップ１７０２０でファイル透過移行によって書き込まれた容量分が既に割り当てられている。このため、結果的には、ステップ１６０００の仮想ボリュームの割当容量から、ステップ１６０００のサーバ使用容量を引いた残りの容量が、ステップ１７０３０によって開放される。すなわち、上記処理によって、仮想プール１０６０自体の割当容量削減（言い換えると、仮想プール１０６０の空き容量の増加）も達成される。
【０２０９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、割当容量削減が終わっていない仮想ボリューム１０５１があるか否かを判定する（ステップ１７０４０）。すなわち、管理計算機１３００は、まだ割当容量削減処理が行われていない仮想ボリューム１０５１をステップ１５０６０のリストから見つけ出す。
【０２１０】
ステップ１７０４０の処理終了後、割当容量削減が終わっていない仮想ボリューム１０５１がある場合、処理はステップ１６０００に戻る（Ａ）。その後、ステップ１６０００以降の処理が継続される。一方、割当容量削減が終わってない仮想ボリューム１０５１がない場合、すなわちステップ１５０８０のリストに登録されたすべての仮想ボリューム１０５１を対象として割当容量削減が終了している場合、処理はステップ１７０５０に進む。
【０２１１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、仮想ボリューム１０５１の容量を監視する必要があるか否かを判定する（ステップ１７０５０）。具体的には、図１２又は図１３の画面による設定に基づいて本処理が実行されている場合には、さらに容量監視を継続する必要があるため、処理はステップ１５０３０に戻る（Ｄ）。一方、容量監視の結果に基づいて自動的に本処理が実行されていない場合、具体的には、例えば図１４の画面による設定に基づいて本処理が実行されるように、手動で本処理が実行される場合には、本処理を終了する。
【０２１２】
なお、容量監視の結果に基づいて自動的に本処理が実行されている場合であっても、ユーザが容量監視を中止してもよいと判定する可能性がある。このような場合に備えるため、ステップ１７０５０において、管理計算機１３００は、ユーザに容量監視を継続する必要があるか否かを判定させてもよい。その場合には、容量監視の継続の要否を選択させる画面又はコマンドラインを用意することが望ましい。
【０２１３】
図１８は、本発明の第一の実施形態において、別の仮想プール１０６０の仮想ボリューム１０５１へのファイル移行によって仮想ボリューム１０５１の割当容量削減を行なう処理を示すフローチャートの一例である。
【０２１４】
既に説明したように、図１７の処理によれば、仮想ボリューム１０５１に格納されたファイルを、その仮想ボリュームが属するものと同じ仮想プール１０６０に属する別の仮想ボリューム１０５１に移行することによって、割当容量が削減される。一方、図１８は、仮想ボリューム１０５１に格納されたファイルを、その仮想ボリューム１０５１が属するものとは別の仮想プール１０６０に属する仮想ボリューム１０５１に移行することによって、割当容量を削減する処理を示す。以下の説明において、割当容量削減対象の仮想ボリューム１０５１が属する仮想プール１０６０とは別の仮想プール１０６０を、他の仮想プール１０６０と記載する。
【０２１５】
ファイル移行先として他の仮想プール１０６０の仮想ボリューム１０５１が指定されるほかは、図１６及び図１７に示す処理と同様な処理が実行される。
【０２１６】
なお、仮想ボリュームにファイルを格納するためには、仮想ボリュームの一部の記憶領域をメタデータ領域として確保する。メタデータ領域には、仮想ボリュームに格納したと表現されるファイルそれぞれに対応したメタデータ情報が格納される。なお、メタデータ情報は、対応するファイルの属性情報（例えば、読み書き属性、作成時刻、更新時刻）と、ファイルのデータとして書き込まれたデータを格納した仮想ボリューム内の位置情報と、を含む。
【０２１７】
なお、ファイルに対する（ファイル名）の管理方法はファイルシステムによって異なるが、例えば、ファイル名（パス名を含む）と対応するメタデータ情報を示す識別子の組を格納する名前空間情報（Ｕｎｉｘの場合はディレクトリファイルの集合がこれに該当する）（Ｕｎｉｘは登録商標）が仮想ボリュームには格納されている。なお、過去に作成されたが、削除されたファイルに関するデータは仮想ボリュームに残っている場合もあり、また過去において対応していたメタデータ情報も残っている場合もある。ただし、名前空間情報には削除されたファイルは存在しない。
【０２１８】
これによって、ファイルシステムプログラムを有するファイルサーバは、ファイル名で指定したファイルを読み込む場合は、名前空間情報を参照することで指定されたファイル名に対応するメタデータ情報を特定し、特定したメタデータ情報を参照することで指定されたファイルのデータが格納されている仮想ボリューム上の位置を特定し、当該位置にを指定したＩ／Ｏリクエストを発行することでファイルのデータを読み書きしている（読む場合は特に顕著である）。なお、ストレージ装置に対するＩ／Ｏリクエストは固定長ブロックを指定する形式で行う。
【０２１９】
逆にファイルシステムプログラムを有するファイルサーバは、ファイル名で指定したファイルを新規に書き込む場合は、メタデータ情報を確保し、当該確保したメタデータ情報と新規ファイルに対応したファイル名の組を名前空間情報に格納し、書き込みが発生した場合は、仮想ボリューム上に書き込みデータを格納する記憶領域を格納すると共に、前述の属性と書き込みデータを書き込んだ位置をメタデータ情報に書き込む。
【０２２０】
上記仮想ボリュームに格納した一つ以上のファイルを移動する場合は、ファイルサーバは名前空間で現在格納中のファイルのファイル名を特定することで、削除済みをファイルのデータを移行対象から外すことが出来る。その後ファイルサーバは前述の読み込みと書き込みの処理を併用（ただし、メタデータ情報に格納した属性をファイル作成時に指定またはコピー）することで、新たな仮想ボリュームにファイルの属性及び名前空間を作成しつつ、ファイルのデータを移行することができる。
【０２２１】
図１８に示す処理は、図１６のステップ１６０４０において、実ボリューム１０５０を仮想ボリューム１０５１として追加することによって、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量に相当する仮想プール１０６０の空き容量を確保できないと判定された場合に実行される。
【０２２２】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からストレージ連携プログラム１３３２を介して、ストレージ１０００の全仮想プール情報をストレージ１０００から取得する（ステップ１８０００）。具体的には、全仮想プール情報は、仮想プール容量テーブル７０００から取得される。ステップ１６０１０の仮想プール情報の取得によって全仮想プール情報が取得されてもよい。その場合、ステップ１８０００は実行されなくてもよい。
【０２２３】
ステップ１８０００の処理終了後、処理はステップ１８０１０に進む。
【０２２４】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１８０００で取得した他の仮想プール１０６０が、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量以上の空き容量を持つか否かを判定する（ステップ１８０１０）。管理計算機１３００は、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量をすでに取得しているので、そのサーバ使用容量分の空き容量が他の仮想プール１０６０にあるか否かを、仮想プール容量テーブル７０００に基づいて判定する。ステップ１８０００で取得した他の仮想プール１０６０がサーバ使用容量分の空き容量を持っていれば、当該他の仮想プール１０６０に割当容量削減対象の仮想ボリューム１０５１のデータを移行することは可能である。
【０２２５】
ステップ１８０１０において、仮想プール１０６０が割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量以上の空き容量を持つと判定された場合、処理はステップ１８０４０に進み、そうでない場合、処理はステップ１８０２０に進む。
【０２２６】
例えば、仮想ボリューム「Ｖ２０００」が割当容量削減対象である場合において、実ボリュームテーブル８０００に実ボリューム「Ｖ３０」及び「Ｖ４０」の容量がいずれも２０Ｇ（すなわち５０Ｇ未満）である場合、仮想プール「Ｐ２００」にどの実ボリューム１０５０を追加しても、仮想プール「Ｐ２００」の空き容量は１２０Ｇにしかならない（図７及び図８参照）。この空き容量は、仮想ボリューム「Ｖ２０００」のサーバ使用容量より小さい。したがって、この場合、ステップ１６０４０で「Ｎｏ」と判定され、ステップ１８０１０が処理される。
【０２２７】
この場合には、ステップ１８０１０において、他の仮想プール１０６０の空き容量と仮想ボリューム「Ｖ２０００」のサーバ使用容量について処理を行なう必要がある。ここでは、説明の簡単化のため、ステップ１８０００において複数の仮想プール１０６０が取得された場合、それらのうち割当容量の少ない仮想プール１０６０が他の仮想プール１０６０として選択される。
【０２２８】
この場合、仮想ボリューム「Ｖ２０００」のサーバ使用容量が１５０Ｇであるので、空き領域が１５０Ｇ以上あり、かつ、割当容量が少ない仮想プール１０６０が仮想プール容量テーブル７０００から順に選択され、調べられる。この場合には仮想プール「Ｐ３００」が該当する仮想プール１０６０である。図７の例では、仮想プール「Ｐ３００」の空き容量は４５０Ｇである。この空き容量は、仮想ボリューム「Ｖ２０００」のサーバ使用容量である１５０Ｇより大きいと判定される（ステップ１８０１０）。よってこの場合、処理はステップ１８０４０に進む。
【０２２９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、ステップ１８０００で取得した仮想プール１０６０に、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分以上の仮想プールボリューム１０５２を追加できるか否かを判定する（ステップ１８０２０）。仮想プール１０６０に仮想プールボリューム１０５２として追加することができる実ボリューム１０５０の情報（すなわち実ボリューム情報８０００）は、ステップ１６０３０によって取得されている。実ボリューム情報に基づいて、一つ又は複数の実ボリューム１０５０を仮想プールボリューム１０５２に変更することで、仮想プール１０６０の容量が割当容量削減対象の仮想ボリュームのサーバ使用容量分以上になることが確認できれば、ステップ１８０２０の処理は成功となる。
【０２３０】
ステップ１８０２０の処理が成功であれば、ステップ１８０３０に進み、処理失敗、すなわち、実ボリューム１０５０を仮想プールボリューム１０５２として追加することによって仮想プール１０６０の容量を割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分確保できなければ、処理はステップ１８１００に進む。
【０２３１】
例えば、仮想ボリューム「Ｖ２０００」が割当容量削減対象である場合において、仮想プール容量テーブル７０００に、（図７の例とは異なり、）仮想プール「Ｐ１００」が登録されておらず、Ｐ３００の割当容量７０３０として「３６０Ｇ」が登録されて（すなわち空き容量が１４０Ｇになって）おり、かつ、（図８の例とは異なり、）実ボリューム１０５０として実ボリューム「Ｖ５０」のみが存在する場合、ステップ１８１００が処理される。
【０２３２】
この場合には、ステップ１６０２０において、他の仮想プール１０６０の空き容量と仮想ボリューム「Ｖ２０００」のサーバ使用容量と、について処理を行なう必要がある。ここでは、説明の簡単化のため、仮想プール１０６０の選択は、割当容量の少ない仮想プール１０６０（上記の例では仮想プール「Ｐ３００」）が他の仮想プール１０６０として選択される。また、閾値をこの場合は考えないこととする。
【０２３３】
この場合、仮想ボリューム「Ｖ２０００」のサーバ使用容量は１５０Ｇであるので、仮想プール「Ｐ３００」に実ボリューム１０５０が追加される。例えば実ボリューム「Ｖ５０」（２０Ｇ）を仮想プールボリューム１０５２に変更して追加することで、仮想プール「Ｐ３００」の空き容量が１６０Ｇとなる。この場合は空き容量分確保可能であるため、処理はステップ１８０３０に進む。ただし、仮想プールの閾値を考慮する場合、又は、実ボリューム「Ｖ５０の」サイズが５Ｇであった場合には、サーバ使用容量を仮想プール「Ｐ３００」が確保できないので、処理はステップ１８１００に進む。
【０２３４】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３を呼び出し、割当容量削減対象の仮想ボリューム１０５１のサーバ使用容量分以上の仮想プールボリューム１０５２となる実ボリューム１０５０を選択する（ステップ１８０３０）。そして、仮想ボリューム設定プログラム１３３３は、ストレージ連携プログラム１３３２を介して、ステップ１８０２０で選択した仮想プール１０６０に、上記選択した実ボリューム１０５０を、仮想プールボリューム１０５２に変更して追加する。すなわちステップ１６０５０と同等の処理が実行される。
【０２３５】
ステップ１８０３０の処理終了後、処理はステップ１８０４０に進む。
【０２３６】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３を呼び出し、ステップ１８０１０又はステップ１８０２０で取得した仮想プール１０６０に、ステップ１６０００で選択した仮想ボリューム１０５１と同一の仮想容量を持つ仮想ボリューム１０５１を作成するように指示する（ステップ１８０４０）。そして仮想ボリューム設定プログラム１３３３は、ストレージ連携プログラム１３３２を介して、ステップ１８０１０又は１８０２０で選択した仮想プール１０６０に、ステップ１６０００で選択した仮想ボリューム１０５１と同一の仮想容量を持つ仮想ボリューム１０５１を新規に作成する。すなわちステップ１６０６０と同等の処理が実行される。
【０２３７】
ステップ１８０４０の処理終了後、処理はステップ１８０５０に進む。
【０２３８】
例えば、仮想ボリューム「Ｖ２０００」が割当容量削減対象である場合、仮想ボリューム「Ｖ２０００」の仮想容量である８００Ｇの容量の仮想ボリューム１０５１が作成される。
【０２３９】
なお、図１６を参照して説明したように、移行先の仮想ボリューム１０５１に移行元のサーバ使用容量と同等の仮想容量があれば、サーバ１１００は後述するファイル透過移行を実行できる。このため、移行先の仮想ボリューム１０５１の仮想容量は、少なくともステップ１６０００で選択した仮想ボリューム１０５１のサーバ使用容量分あれば十分であり、移行元の仮想ボリューム１０５１の仮想容量と同じである必要はない。
【０２４０】
また、既存の仮想ボリューム１０５１のうち、まだ利用されていない仮想ボリューム１０５１があれば、それを移行先として用いてもよい。
【０２４１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ファイル移行用仮想ボリューム、すなわちステップ１８０４０で作成した仮想ボリューム１０５１をサーバ１１００にマウントするように指示する（ステップ１８０５０）。すなわち、管理計算機１３００は、ファイル移行用仮想ボリュームをサーバ１１００で扱えるように指示する。そしてサーバ１１００は、サーバボリュームアクセスプログラムによって、指示された仮想ボリューム１０５１をマウントする。これは従来のファイルシステムの機能によって達成される。すなわち、ステップ１７０００と同等の処理が実行される。
【０２４２】
ステップ１８０５０の処理終了後、処理はステップ１８０６０に進む。
【０２４３】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ステップ１６０００で選択した仮想ボリューム１０５１の全ファイルを、ステップ１８０５０でサーバ１１００にマウントした仮想ボリューム１０５１にファイル透過移行することを指示する（ステップ１８０６０）。すなわちステップ１７０１０と同等の処理が実行される。
【０２４４】
例えば、仮想ボリューム「Ｖ２０００」がステップ１６０００で選択された場合、サーバボリュームテーブル１１０００を参照することによって、仮想ボリューム「Ｖ２０００」がファイルＦ５及びＦ６を持っていることがわかる。ファイルＦ５及びＦ６の全てが、ステップ１８０５０でサーバ１１００にマウントされた仮想ボリューム１０５１にファイル透過移行される。
【０２４５】
ステップ１８０６０の処理終了後、処理はステップ１８０７０に進む。
【０２４６】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５からサーバ連携プログラム１３３１を介して、ステップ１８０６０で指示したファイル透過移行が終わったか否かを確認する（ステップ１８０７０）。すなわちステップ１７０２０と同等の処理が実行される。本処理は定期的なサーバ１１００への問い合わせによって実現されてもよいし、サーバ側から終了したことの通知を受けることによって実現されてもよい。そしてファイル透過移行の終了が確認できたところで、ステップ１８０７０の処理は終了する。
【０２４７】
ステップ１８０７０の処理終了後、処理はステップ１８０８０に進む。
【０２４８】
上記の処理によって、ステップ１６０００で選択した仮想ボリュームの全ファイルが、ステップ１８０５０でサーバにマウントした仮想ボリュームにファイル透過移行される。すなわち、ステップ１８０７０によって終了が確認された時点で、ステップ１６０００で選択した仮想ボリューム１０５１に格納されたファイルのうち、サーバ１１００が使用していたファイルのみがステップ１８０５０の仮想ボリュームに移行されている。その移行が終了した後、ステップ１６０００の仮想ボリューム１０５１は、サーバ１１００によって使用されないため、削除することができる。
【０２４９】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５から仮想ボリューム設定プログラム１３３３に、ステップ１６０００で選択した仮想ボリューム１０５１を削除すること指示する（ステップ１８０８０）。そして仮想ボリューム設定プログラム１３３３はストレージ連携プログラム１３３２を介して、ステップ１６０００で選択した仮想ボリューム１０５１を削除する。ステップ１６０００で選択した仮想ボリューム１０５１の削除に際して、ホストへの仮想ボリューム１０５１の割当設定も削除する必要がある場合は、この設定も削除し、最終的に仮想ボリューム１０５１を削除できるような環境にした後で仮想ボリューム１０５１を削除する。すなわちステップ１７０３０と同等の処理が実行される。
【０２５０】
ステップ１８０８０によって、削除された仮想ボリューム１０５１の割当容量は仮想プール１０６０に返却される。返却された割当容量は、削除された仮想ボリューム１０５１と同じ仮想プール１０６０に属する他の仮想ボリューム１０５１に新たに割り当てることが可能な空き容量として扱われる。ステップ１８０４０で作成された仮想ボリューム１０５１には、ステップ１８０６０でファイル透過移行によって書き込まれた容量分が既に割り当てられている。このため、結果的には、ステップ１６０００の仮想ボリュームの割当容量から、ステップ１６０００のサーバ使用容量を引いた残りの容量が、ステップ１８０８０によって開放される。すなわち、上記処理によって、仮想プール１０６０自体の割当容量削減も達成される。
【０２５１】
管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、他の仮想プール１０６０に仮想ボリューム１０５１が移動したことを通知する（ステップ１８０９０）。そして処理は図１７のステップ１７０４０に戻る（Ｅ）。
【０２５２】
ステップ１８０２０の処理が失敗であった場合、管理計算機１３００は、仮想ボリューム容量管理プログラム１３３５によって、割当容量削減対象の仮想ボリューム１０５１の移行先となりうる仮想ボリューム１０５１を作成できないため、仮想ボリューム１０５１の割当容量削減が不可であることを通知する（ステップ１８１００）。その後、処理は図１７のステップ１７０４０に戻る（Ｅ）。
【０２５３】
図１８までの処理によって、他の仮想プール１０６０にファイル透過移行先の仮想ボリューム１０５１が作成され、これによって仮想ボリューム１０５１の割当容量削減が実現される。
【０２５４】
ステップ１８０８０によって、前述のとおり、ステップ１６０００で選択された仮想ボリューム１０５１（例えば仮想ボリューム「Ｖ２０００」）に割り当てられていた容量が、その仮想ボリューム１０５１が属していた仮想プール１０６０（例えば仮想プール「Ｐ２００」）に開放される。したがって、ステップ１６０００で選択された仮想ボリュームが属していた仮想プール（例えば仮想プール「Ｐ２００」）に新たな仮想ボリューム１０５１を作成し、その作成された新たな仮想ボリューム１０５１に、他の仮想プール（例えば仮想プール「Ｐ３００」）に移行した仮想ボリューム１０５１のデータをファイル透過移行によって移行することもできる。これによって、一旦他の仮想プール１０６０に移行したデータが、元の仮想プール１０６０に戻される。
【０２５５】
上記の処理は、ステップ１８０４０からステップ１８０８０によって達成される。ただし、これらのステップにおいて、移行元は、他の仮想プール１０６０に作成した仮想ボリューム１０５１、移行先は、ステップ１６０００で選択された仮想ボリューム１０５１が属していた仮想プール１０６０に新たに作成された仮想ボリューム１０５１である。
【０２５６】
また、本実施形態において、ファイルのライトが起こっていない仮想ボリューム１０５１があれば、その仮想ボリューム１０５１のサーバ使用容量と少なくとも同一の容量を有する実ボリューム１０５０へ、その仮想ボリューム１０５１のデータを移行してもよい。ファイルのライトが起こっているか否かは、例えば、ファイルのアクセスパターンを監視した結果に基づいて判定されてもよいし、ユーザの設定に基づいて判定されてもよい。
【０２５７】
また本実施形態において、仮想プール１０６０の閾値７０４０の値を超えたら、関連する仮想プール１０６０の仮想ボリューム１０５１を対象に、図１５以降の処理が実行されてもよい。
【０２５８】
また、図１６のステップ１６０２０の処理、ステップ１６０４０の処理、図１８のステップ１８０１０の処理、及びステップ１８０２０の処理において、各々Ｙｅｓとなれば、その時点で仮想ボリューム１０５１の割当容量削減の条件が満たされる。よって、この場合、管理計算機１３００は、仮想ボリューム割当容量削減を実行できることを、管理計算機１３００の入出力装置１３１０などを用いてユーザに向けて表示してもよい。また、ステップ１６０４０及びステップ１８０２０でＹｅｓと判定された場合は、仮想プールボリューム１０５２を仮想プール１０６０に設定する必要があるので、その旨も管理計算機１３００の入出力装置１３１０などを用いて表示されてもよい。
【０２５９】
また、図１５のステップ１５０５０において、容量の差が使用率差分を超えたと判定された場合、管理計算機１３００は、容量の差が使用率差分を超えたこと、そのときの仮想ボリュームのＩＤ、仮想容量、仮想ボリューム割当容量及びサーバ使用容量を、ユーザに向けて、入出力装置１３１０などを用いて表示してもよい。仮想ボリュームのＩＤ、仮想容量、仮想ボリューム割当容量及びサーバ使用容量は、図１４の仮想ボリューム１４１１０、仮想容量１４１２０、仮想ボリューム割当容量１４１３０及びサーバ使用容量１４１４０と同等の形式で表示されてもよい。使用率差分の情報も表示する場合には、上記と同様に各ボリュームに対して、使用率差分が表示されてもよい。
【０２６０】
次に、本発明の第二の実施形態について説明する。
【０２６１】
図１９は、本発明の第二の実施形態の計算機システムの構成を示すブロック図である。
【０２６２】
図１９に示す第二の実施形態の計算機システムは、複数のストレージ１０００がサーバ１１００に接続されていることを除いて、図１に示す第１の実施形態の計算機システムと同じである。
【０２６３】
図２から図１８及びそれらの説明は、第二の実施形態の計算機システムにも適用される。
【０２６４】
本実施形態において、前述したとおり、管理計算機１３００及びサーバ１１００が複数のストレージ１０００を管理することができる。また、図１８に示すように、移行先の仮想ボリューム１０５１が他の仮想プール１０６０に属する場合、当該他の仮想プール１０６０は、割当容量削減対象の仮想ボリューム１０５１が属するものとは別のストレージ１０００の仮想プール１０６０から選択されてもよい。
【０２６５】
上記によって、複数のストレージ１０００管理することができる。
【０２６６】
また、図１２の設定画面においては、ストレージ１０００の識別子を設定させて、ストレージ１０００ごとに条件を設定させてもよい。
【０２６７】
次に、本発明の第三の実施形態について説明する。
【０２６８】
図２０は、本発明の第三の実施形態の計算機システムの構成を示すブロック図である。
【０２６９】
図２０に示す第三の実施形態の計算機システムは、複数のサーバ１１００が存在することを除いて、図１９に示す第二の実施形態の計算機システムと同じである。
【０２７０】
図２から図１８及びそれらの説明は、第三の実施形態の計算機システムにも適用される。
【０２７１】
Ｇｌｏｂａｌ  Ｎａｍｅ  Ｓｐａｃｅ等の技術によって、複数のサーバ１１００間でも共通のネームスペースを利用したファイル仮想化が実現可能である。例えば、複数のサーバにわたるローカルファイルシステムがシステムロケーション情報を交換することで、共通のネームスペースを複数のサーバ間で共有し、ファイルを格納することができる。そして、共通のネームスペースを利用することで、サーバ間のファイル移行もホストには透過的に行なうこと、すなわちファイル透過移行を可能としている。よって、ファイル透過移行は、単一のサーバ１１００内のファイル移行だけでなく、サーバ１１００をまたがったファイル移行にも適用することができる。
【０２７２】
上記によって、複数のサーバ１１００を対象としても、本発明の操作は可能となる。
【０２７３】
次に、本発明の第四の実施形態について説明する。
【０２７４】
図２１は、本発明の第四の実施形態の計算機システムの構成を示すブロック図である。
【０２７５】
図２１に示す第四の実施形態の計算機システムは、管理計算機１３００が存在せず、第一の実施形態で示した管理計算機１３００の処理をサーバ１１００にて実現する点を除いて、図１に示した第一の実施形態の計算機システムと同じである。本実施形態のサーバ１１００の構成は、第一の実施形態のサーバ１１００とは異なっているため、図２２にて説明する。
【０２７６】
図２、図４から図１８及びそれらの説明は、第四の実施形態の計算機システムにも適用される。
【０２７７】
また第二及び第三の実施形態の構成においても、第四の実施形態と同様、管理計算機１３００の処理をサーバ１１００にて実現することができる。そのような実施形態は、第二及び第三の実施形態の管理計算機１３００が保持する情報を、あるサーバ１１００が管理することで実現される。
【０２７８】
図２２は、本発明の第四の実施形態のサーバ１１００の構成を示すブロック図である。
【０２７９】
図２２に示す第四の実施形態のサーバ１１００は、メモリ１１３０に格納されたプログラムを除いて、図３に示す第一の実施形態のサーバ１１００と同じである。
【０２８０】
具体的には、第一の実施形態の管理計算機１３００で使用するプログラムである、ストレージ連携プログラム１３３２、仮想ボリューム設定プログラム１３３３及び仮想ボリューム容量管理プログラム１３３５がサーバ１１００のメモリ１１３０に格納される。これによって、第一の実施形態の管理計算機１３００で実行される処理が、サーバ１１００によって実行される。
【０２８１】
また、本実施形態の計算機システムは管理計算機１３００を備えないため、管理計算機連携プログラム１１３１は不要となり、サーバ１１００内のプログラムによってサーバ１１００内で情報がやりとりされる。また図１２、図１３及び図１４の画面においては、画面によらず、それらの図に示したものと同様の条件が、コマンドライン又はファイルなどの形式でサーバ１１００から設定されてもよい。本実施形態によって、管理計算機１３００が存在しない構成で、本発明の処理を実現することができる。
【図面の簡単な説明】
【０２８２】
【図１】本発明の第一の実施形態の計算機システムを構成する各装置と各装置の接続関係を表すブロック図の一例である。
【図２】本発明の第一の実施形態の計算機システムに含まれるストレージの構成を示すブロック図の一例である。
【図３】本発明の第一の実施形態の計算機システムに含まれるサーバの構成を示すブロック図の一例である。
【図４】本発明の第一の実施形態の計算機システムに含まれるホストの構成を示すブロック図の一例である。
【図５】本発明の第一の実施形態の計算機システムに含まれる管理計算機の構成を示すブロック図の一例である。
【図６】本発明の第一の実施形態のストレージのストレージ構成情報に含まれる仮想ボリューム情報を管理するテーブルの一例を示す説明図である。
【図７】本発明の第一の実施形態のストレージのストレージ構成情報に含まれる仮想プール容量情報を管理するテーブルの一例を示す説明図である。
【図８】本発明の第一の実施形態のストレージのストレージ構成情報に含まれる実ボリューム情報を管理するテーブルの一例を示す説明図である。
【図９】本発明の第一の実施形態のストレージのストレージ構成情報に含まれる仮想プールの割当状態を管理するテーブルの一例を示す説明図である。
【図１０】本発明の第一の実施形態のストレージのストレージ構成情報に含まれる仮想ボリュームの割当状態を管理するテーブルの一例を示す説明図である。
【図１１】本発明の第一の実施形態のサーバのサーバボリューム情報の一例を示す説明図である。
【図１２】本発明の第一の実施形態において仮想ボリューム割当容量削減を行なうための条件を設定する画面の一例を示す説明図である。
【図１３】本発明の第一の実施形態において仮想ボリューム割当容量削減を行なうための条件を設定する画面の別の例を示す説明図である。
【図１４】本発明の第一の実施形態において仮想ボリューム割当容量削減指示を行なうための画面の一例を示す説明図である。
【図１５】本発明の第一の実施形態において、仮想ボリュームの中から割当容量削減を行なう仮想ボリュームを選択する処理を示すフローチャートの一例である。
【図１６】本発明の第一の実施形態において、仮想ボリューム割当容量削減のために、仮想ボリュームの移行先ボリュームを作成する処理を示すフローチャートの一例である。
【図１７】本発明の第一の実施形態において、ファイル移行によって仮想ボリューム１０５１の割当容量削減を行なう処理を示すフローチャートの一例である。
【図１８】本発明の第一の実施形態において、別の仮想プールの仮想ボリュームへのファイル移行によって仮想ボリュームの割当容量削減を行なう処理を示すフローチャートの一例である。
【図１９】本発明の第二の実施形態の計算機システムの構成を示すブロック図である。
【図２０】本発明の第三の実施形態の計算機システムの構成を示すブロック図である。
【図２１】本発明の第四の実施形態の計算機システムの構成を示すブロック図である。
【図２２】本発明の第四の実施形態のサーバの構成を示すブロック図である。
【符号の説明】
【０２８３】
１０００  ストレージ
１１００  サーバ
１２００  ホスト
１３００  管理計算機
１４００  第一ネットワーク
１５００  第二ネットワーク
１６００  管理ネットワーク
【図１】
2010073095.tif 000003
【図２】
2010073095.tif 000004
【図３】
2010073095.tif 000005
【図４】
2010073095.tif 000006
【図５】
2010073095.tif 000007
【図６】
2010073095.tif 000008
【図７】
2010073095.tif 000009
【図８】
2010073095.tif 000010
【図９】
2010073095.tif 000011
【図１０】
2010073095.tif 000012
【図１１】
2010073095.tif 000013
【図１２】
2010073095.tif 000014
【図１３】
2010073095.tif 000015
【図１４】
2010073095.tif 000016
【図１５】
2010073095.tif 000017
【図１６】
2010073095.tif 000018
【図１７】
2010073095.tif 000019
【図１８】
2010073095.tif 000020
【図１９】
2010073095.tif 000021
【図２０】
2010073095.tif 000022
【図２１】
2010073095.tif 000023
【図２２】
2010073095.tif 000024