計算機システム及び計算機システムの管理方法
【課題】仮想的な論理ボリュームに実記憶領域を提供するプールの容量が不足した場合、適切な対処法を選択して実行する。
【解決手段】管理計算機は、各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定する。管理計算機は、所定プールが検出された場合、所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、仮想的な論理ボリュームのデータを所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、選択された方法に従って、所定プールのプールサイズを拡張させる。
【解決手段】管理計算機は、各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定する。管理計算機は、所定プールが検出された場合、所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、仮想的な論理ボリュームのデータを所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、選択された方法に従って、所定プールのプールサイズを拡張させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計算機システム及び計算機システムの管理方法に関する。
【背景技術】
【0002】
大型のストレージはストレージサブシステムとも呼ばれ、高速かつ大容量なデータ保管を可能とするだけでなく、高度なデータ管理機能を有する。ストレージ内にはハードディスクドライブなどの物理的な記憶装置が複数搭載される。それら記憶装置内の記憶領域を用いて、論理的な記憶領域である論理ボリュームが構成される。ストレージ装置は、論理ボリュームをホスト計算機に提供する。ホスト計算機は、論理ボリュームに対して、データを読み書きする。
【0003】
近年、論理ボリュームの容量効率を向上させるシンプロビジョニング技術が提案されている。シンプロビジョニング技術は、従来の論理ボリュームに代わる仮想的な論理ボリューム(以下、仮想ボリューム)をホストに提供する。
【0004】
従来の論理ボリュームは、ボリューム作成時に指定されたサイズの、物理的な記憶領域(実記憶領域)を必要とする。これに対し、仮想ボリュームは、実際にデータの書き込みが発生した時点で、そのデータを記憶するための実記憶領域をプールから取り出して、仮想ボリュームに割り当てるようになっている。シンプロビジョニング技術を用いると、実際にデータの書き込みが発生するまでの間は、仮想ボリュームに実記憶領域を割り当てる必要がないため、実記憶領域を節約することができる。
【0005】
しかし、仮想ボリュームへのデータ書き込み状況によっては、仮想ボリュームに書き込まれるデータの量が、仮想ボリュームに割り当て可能な実記憶領域のサイズを超えてしまう場合が考えられる。仮想ボリュームに割り当てるべき実記憶領域が不足すると、エラーが発生しうる。
【0006】
そのため、シンプロビジョニング技術を用いる場合は、仮想ボリュームに割り当て可能な実記憶領域の量(実使用量)を正確に管理することが好ましい。
【0007】
第1の従来技術では、プールに容量不足が発生した場合、使用可能なボリュームをプールに追加して、プールのサイズを拡張する(特許文献1)。第2の従来技術では、プールを利用している仮想ボリュームを他のプールに移行させることにより、移行元のプールの容量不足を解消する(特許文献2)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2007−193573号公報
【特許文献1】特開2010−86424号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
プールのサイズが不足した場合の対処法として、前記の二通りの方法が知られている。しかし、計算機システムの構成は複雑であり、かつ、状況は変化するため、計算機システムの管理者であるユーザは、どの対処法を選択すべきなのか判断に迷う。
【0010】
複数の異種ストレージが混在するヘテロジニアスな計算機システムでは、考慮すべき要素が多くなるため、適切な対処法の選択がより難しい。特に、経験が少なく、知識の乏しいユーザの場合は、頼るべき基準を持たないため、対象法の選択は一層困難となる。
【0011】
そこで、本発明の目的は、複数の方法の中から所定の選択基準に基づいて少なくとも一つの方法を選択して実行することにより、管理者の負担を軽減し、プールサイズを拡張できるようにした 計算機システム及び計算機システムの管理方法を提供することにある。
【課題を解決するための手段】
【0012】
上記課題を解決すべく、本発明に従う計算機システムは、少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機と、各記憶制御装置とホスト計算機とを管理するための少なくとも一つの管理計算機とを含む計算機システムであって、各記憶制御装置は、ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を仮想的な論理ボリュームに割り当て、ホスト計算機から受信するライトデータを、割り当てられた実記憶領域に記憶させるようになっており、管理計算機は、マイクロプロセッサと、マイクロプロセッサにより読み込まれて実行される所定のコンピュータプログラムを記憶するメモリと、各記憶制御装置及びホスト計算機と通信するための通信インターフェース部とを備えており、マイクロプロセッサは、所定のコンピュータプログラムを読み込んで実行することにより、各プールの使用状態を取得し、取得された各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、所定プールが検出された場合は、(A)所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)仮想的な論理ボリュームのデータを所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、選択された方法に従って、所定プールのプールサイズを拡張させる。
【0013】
マイクロプロセッサは、ボリューム追加方法とデータ移動方法のいずれかを選択する場合に、仮想的な論理ボリュームを使用するアプリケーションプログラムの稼働状況を考慮して、所定時間内に所定プールのプールサイズの拡張が完了するか否かを判定することもできる。
【0014】
ボリューム追加方法は、各記憶制御装置のうち所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを所定プールに追加させる、第1のボリューム追加方法を含ませてもよい。
【0015】
マイクロプロセッサは、第1のボリューム追加方法を実行する場合、所定の選択基準として、第1の実ボリュームのボリュームサイズと、所定プールに予め設定されている属性ラベルと第1の実ボリュームに予め設定されている属性ラベルとの適合状態と、所定プールに第1の実ボリュームを追加した場合の所定プールの応答性能とを考慮してもよい。
【0016】
ボリューム追加方法には、各記憶制御装置のうち所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを所定の記憶制御装置に接続することにより、第2の未使用の実ボリュームを所定プールに追加させる、第2のボリューム追加方法を含めてもよい。
【0017】
ボリューム追加方法には、各記憶制御装置のうち所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして所定プールに追加させる、第3のボリューム追加方法を含めてもよい。
【0018】
ボリューム追加方法には、所定の記憶制御装置以外の他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして所定プールに追加させる、第4のボリューム追加方法を含めてもよい。
【0019】
データ移動方法には、ホスト計算機が仮想的な論理ボリュームのデータを所定のプール以外の他のプールに移動させる、第1のデータ移動方法を含めてもよい。
【0020】
データ移動方法には、所定の記憶制御装置が仮想的な論理ボリュームのデータを所定のプール以外の他のプールに移動させる、第2データ移動方法を含めてもよい。
【0021】
本発明は、コンピュータプログラムまたはコンピュータプログラムを記録する記録媒体として把握することもできる。さらに、本発明は、上述した各観点の組合せに限らず、それら以外の組合せを含むことができる。
【図面の簡単な説明】
【0022】
【図1】図1は、本実施例に係る計算機システムの全体構成図。
【図2】図2は、プールサイズの拡張方法を模式的に示す図。
【図3】図3は、ホストが使用する仮想ボリュームの情報を示す図。
【図4】図4は、ストレージの情報を示す図。
【図5】図5は、プールの情報を示す図。
【図6】図6は、未使用ボリュームの情報を示す図。
【図7】図7は、管理ポリシーの情報を示す図。
【図8】図8は、プールの使用率を監視する処理のフローチャート。
【図9】図9は、プールサイズを拡張する処理のフローチャート。
【図10】図10は、自ストレージ内でプールサイズを拡張する処理を示すフローチャート。
【図11】図11は、仮想ボリュームを移動させる処理のフローチャート。
【図12】図12は、他ストレージを用いてプールサイズを拡張する処理を示すフローチャート。
【図13】図13は、他のプールで使用されているボリュームを流用して、プールサイズを拡張する処理を示すフローチャート。
【図14】図14は、仮想ボリュームにプール内の実記憶領域を割り当てる様子と、ホスト計算機が仮想ボリュームを移動させた場合に得られる効果とを示す模式図。
【発明を実施するための形態】
【0023】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、後述のように、プールのサイズが不足した場合に、その容量不足を解消するための対処法を選択する方法を提示する。
【0024】
対処法は、例えば、以下の観点に基づいて選択してもよい。
【0025】
(観点1)異種のホスト計算機及び異種のストレージが混在する環境を考慮
計算機システムに含まれる各ホスト計算機及び各ストレージが有する、対処機能(例えば、プールを拡張する機能、および、仮想ボリュームを移動させる機能)は、同一であるとは限らない。従って、対処機能の有無と前提条件とを管理計算機が把握した上で、対処法を選択する。
【0026】
(観点2)対処の緊急性と対処に要する時間とに関する考慮
所要時間の長い対処法を選択して実施した場合に起こり得るリスクを低減する。リスクとは、プールサイズの拡張が間に合わず、プールサイズが枯渇することである。例えば、アプリケーションプログラムの稼働していない期間中に、仮想ボリュームを他のプールに移動させる、という対処法を選択する場合には、注意が必要であろう。仮想ボリュームの移動が完了する前にアプリケーションプログラムが稼働を開始した場合、プールサイズが枯渇する可能性があるかも知れない。一方、所要時間が短ければ短いほど良い対処法である、とは必ずしも言えない。必要以上に所要時間の短い対処法を選択すると、対処法を選択する自由度が低下し、使い勝手に影響を与えるかも知れない。
【0027】
(観点3)プール使用率の適正化に関する考慮
ある対策を実施しても、プールの使用率が高いままでは、容量不足は解消しない。つまり、プールの使用率低下に有効な対処法を実施する必要がある。しかし、プール使用率を必要以上に低下させる運用は、記憶サイズの浪費を招くであろう。
【0028】
(観点4)ボリュームおよびプールの属性に関する考慮
仮想ボリューム、実ボリューム(論理ボリューム)、プールには、それぞれの構成または目的等に応じた属性(例えば、性能、価格、所属部門等)を有する。それらの属性を無視して、仮想ボリュームを他のプールに移動させたり、プールに実ボリュームを自由に追加したりすると、使い勝手等が低下するかも知れない。例えば、高速応答を要求される仮想ボリュームを応答性能の低いプールに移動させたり、高い信頼性を要求される仮想ボリュームを信頼性の低いプールに移動させるような場合である。さらに、例えば、高速な論理ボリュームから構成されるプールに低速な論理ボリュームを追加すると、そのプールの応答性能が低下する。そこで、仮想ボリューム、論理ボリューム及びプールに、属性ラベル(後述の実施例では「区分」と呼ぶ)を設定し、属性ラベルが適合するように、対処法を選択する。
【0029】
(観点5)対処法の実行前後の性能変化に関する考慮
対処法を実行すると、仮想ボリュームの性能、または、プールの性能が変化する。対処法の実行前後で、仮想ボリュームの性能またはプールの性能が許容範囲以下に低下しないように、対処法の選択時に考慮する。
【実施例1】
【0030】
以下、図面に従い、発明を実施するための形態について述べる。図1は、本実施例に係る計算機システムの全体構成図である。計算機システムは、例えば、少なくとも一つの管理端末10と、少なくとも一つの管理計算機20と、複数のストレージ30と、少なくとも一つのホスト計算機40と、管理用ネットワーク51と、ストレージネットワーク52とを含む。
【0031】
管理端末10と、管理計算機20と、各ストレージ30及びホスト計算機40は、管理用ネットワーク51によって双方向通信可能に結ばれている。さらに、管理計算機20と、各ストレージ30及びホスト計算機40は、ストレージネットワーク52によって双方向通信可能に接続されている。
【0032】
管理用ネットワーク51及びストレージネットワーク52は通信回線であり、各情報処理装置間でデータを送受信するための通信経路である。なお、図1では、管理用ネットワーク51とストレージネットワーク52を別の通信回線として示すが、両方のネットワーク51,52を共通の通信回線として構成してもよい。
【0033】
管理端末10は、情報処理装置であり、例えば、メモリ11と、マイクロプロセッサ(図中、CPU)12と、ディスプレイ装置13と、キーボード14と、マウス15と、ホストインターフェース(以下、インターフェースをI/Fと表示)16とを備える。
【0034】
メモリ11は、データ及びコンピュータプログラムを記憶する。マイクロプロセッサ(以下、プロセッサ)12は、メモリ11からコンピュータプログラムを読み込んで実行する。ディスプレイ装置13は、データ等を表示する。キーボード14は、ユーザからの文字による入力を受け付ける。マウス15は、ディスプレイ装置に表示された画面上の任意の地点を指し示すために使用される。ホストI/F16は、管理用ネットワーク51を介して、管理計算機20とデータを送受信する。なお、ユーザインターフェースとしては、ディスプレイ装置、キーボード、マウスに限らず、例えば、音声による指示装置、脳波による指示装置等を用いることもできる。
【0035】
メモリ11には、コンソールプログラム111が格納されている。プロセッサ12がコンソールプログラム111を実行することにより、ホストI/F16及び管理用ネットワーク51を介して管理計算機20とデータを交換する機能と、ディスプレイ装置13に情報を表示させる機能と、キーボード14及びマウス15を介してユーザからの入力を受け付ける機能とが実現される。
【0036】
管理端末10は、ストレージの運用及び管理に携わるユーザ(ストレージ管理者)が、ストレージ30を運用したり、管理したりするための窓口として用いられる。
【0037】
管理計算機20は、情報処理装置であり、例えば、メモリ21と、プロセッサ22と、SAN I/F23と、ホストI/F24とを備える。
【0038】
メモリ21は、データやコンピュータプログラムを記憶する。プロセッサ22は、メモリ21からコンピュータプログラムを読み込み、実行する。これにより、後述する各機能が実現される。SAN I/F23は、ストレージネットワーク52を経由して各ストレージ30に操作指示または情報照会等を行なうための回路である。ホストI/F24は、管理用ネットワーク51を介して、他の情報処理装置10,30,40とデータ通信するための回路である。
【0039】
管理サーバプログラム211は、各ストレージ30を管理するためのコンピュータプログラムであり、メモリ21に格納されている。ホスト−ボリューム情報212は、ホスト計算機40上で使用される仮想ボリュームの構成及び利用状況等を管理するための情報である。ストレージ情報213は、各ストレージ30が搭載している機能を管理するための情報である。プール情報214は、各プールの構成及び使用状況等を管理するための情報である。未使用ボリューム情報215は、各ストレージ30内の未使用ボリュームに関する情報である。管理ポリシー情報216は、管理サーバプログラム211の動作を定義する情報である。
【0040】
ホスト−ボリューム情報212、ストレージ情報213、プール情報214、未使用ボリューム情報215及び管理ポリシー情報216は、メモリ21に格納される。それら情報212,213,214,215,216の詳細については後述する。
【0041】
なお、図1には、管理計算機20とホスト計算機40とを別々に構成する場合を示しているが、これに代えて、ホスト計算機40に管理計算機の機能を実現させてもよい。例えば、複数のホスト計算機40のうち少なくとも一つのホスト計算機40に、管理計算機20の有するコンピュータプログラム211及び各種管理情報212−216を設ける構成としてもよい。
【0042】
「記憶制御装置」としての各ストレージ30は、情報を記憶するための装置である。各ストレージ30は、例えば、ストレージコントローラ31と、ディスクユニット32とを備える。
【0043】
ストレージコントローラ31は、ホストI/F311と、SAN I/F312と、マイクロプロセッサ313と、メモリ314と、ディスクコントローラ315を備える。ホスト I/F311は、管理用ネットワーク51に接続するための回路である。SAN I/F312は、ストレージネットワーク52に接続するための回路である。
【0044】
メモリ314には、例えば、入出力処理プログラム(図中、I/Oプログラム)3141と、ボリューム移行プログラム(図中、マイグレーションプログラム)3142と、シンプロビジョニングプログラム3143とが記憶される。マイクロプロセッサ313は、それらコンピュータプログラム3141,3142,3143を読み込んで実行する。ディスクコントローラ315は、ディスクドライブ321に対するデータの読み書きを制御する。
【0045】
ディスクユニット32は、複数のディスクドライブ321を備える。各ディスクドライブ321がそれぞれ有する物理的記憶領域をグループ化し、そのグループ化された物理的記憶領域に複数の論理的記憶領域を設定することができる。その論理的な記憶領域を論理ボリューム322と呼ぶ。
【0046】
ディスクドライブとしては、例えば、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ等のデータを読み書き可能な種々のデバイスを利用可能である。
【0047】
ハードディスクドライブを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。また、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access
Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々の記憶装置を用いることもできる。
【0048】
入出力処理プログラム3141は、管理計算機20からの要求に応じて論理ボリュームを定義する。さらに、入出力処理プログラム3141は、ホスト計算機40からの求めに応じて、論理ボリューム及び仮想ボリュームに対してデータを読み書きする。
【0049】
ボリューム移行プログラム3142は、管理計算機20からの指示に応じて、仮想ボリュームを他のプールに移行させる。仮想ボリュームとプールに関する説明は、図2で後述する。
【0050】
シンプロビジョニングプログラム3143は、例えば、プールの構成管理、プールの稼動管理、仮想ボリュームの構成管理、仮想ボリュームの稼動管理、データ読み書き機能等を提供する。
【0051】
ホスト計算機40は、情報処理装置であり、例えば、SAN I/F41と、ホストI/F42と、プロセッサ43と、メモリ40を備える。
【0052】
SAN I/F41は、ストレージネットワーク52を経由して、各ストレージ30とデータ通信するための回路である。ホストI/F42は、管理用ネットワーク51を介して、管理計算機20とデータ通信するための回路である。
【0053】
メモリ44には、例えば、管理エージェントプログラム441と、マイグレーションプログラム(ボリューム移行プログラムとも呼ぶ)442と、アプリケーションプログラム443と、OS(オペレーティングシステム)444とが記憶されている。プロセッサ43は、各コンピュータプログラム441,442,443を読み込んで実行する。
【0054】
管理エージェントプログラム441は、管理サーバプログラム211からの指示に基づいて、ボリューム移行プログラム442を実行させる。
【0055】
ボリューム移行プログラム442は、論理ボリュームまたは仮想ボリュームのデータを、他の論理ボリュームまたは他の仮想ボリュームに移すプログラムである。
【0056】
アプリケーションプログラム443は、ホスト計算機40で業務処理を実行するためのプログラムである。
【0057】
OS444は、管理エージェントプログラム441及びアプリケーションプログラム443の実行基盤となる基本ソフトウェアである。
【0058】
図2は、シンプロビジョニング技術を用いた情報処理システムの論理的な構成、及び、プール容量不足時の対処法を示す概念図である。
【0059】
まず最初に、シンプロビジョニング技術におけるプールと仮想ボリュームとについて説明する。ストレージ30(1)は「DKC−A」という識別名で特定されるストレージである。ストレージ30(1)の内部には、「POOL−A」という識別名で特定されるプール611が含まれる。
【0060】
プール611は、複数の論理ボリューム621,622,623を含む。プール611には、「VVOL−A」という識別名で特定される仮想ボリューム631と、「VVOL−B」という識別名で特定される仮想ボリューム632とが所属している。
【0061】
仮想ボリューム631は、ホスト計算機40(1)上において、「VOL−A」という識別名で特定されるボリューム651となっている。ボリューム651は、「AP−A」という識別名で特定されるアプリケーションプログラム443(1)から利用される。このような構成において、アプリケーションプログラム443(1)がボリューム651にデータを書き込むと、以下の処理が行われる。
【0062】
ボリューム651に対する書き込み要求を受けたOS444は、ストレージ30(1)に、ボリューム651に対応する仮想ボリューム631への書き込み要求を発行する。その書き込み要求を受けたストレージ30(1)内の入出力処理プログラム3141は、シンプロビジョニングプログラム3143に、書き込み要求があった旨を通知する。シンプロビジョニングプログラム3143は、その通知を受けると、仮想ボリューム631の全記憶領域のうち書き込み対象の記憶領域(仮想ページ)に、プール611内の記憶領域(実ページまたはチャンク)を割り当て済みか否かを判定する。
【0063】
シンプロビジョニングプログラム3143は、書き込み対象の仮想ページに実ページが未割り当てであると判定した場合、プール611を構成する各論理ボリュームの有する実記憶領域の中から実ページを選択して、書き込み対象の仮想ページに割り当てる。
、仮想ページに割り当てられた実ページには、アプリケーションプログラム443(1)からのデータが書き込まれる。書き込み対象の仮想ページに実ページが既に割り当てられている場合、その割り当て済みの実ページに、アプリケーションプログラム443(1)から書き込まれるデータを保存する。
【0064】
以上の処理は、プール611を共有する仮想ボリューム632と、それを利用するボリューム652、さらには、アプリケーションプログラム443(2)についても同様に行われる。仮想ボリューム631に割り当てられた実ページの総数と仮想ボリューム632に割り当てられてた実ページの総数との合計に対応する量の記憶領域(実記憶領域)が、プール611から使用されることになる。
【0065】
次に、プールサイズが不足した場合の対処法について述べる。例えば、ストレージ30(2)内のプール612が容量不足になった場合の対処法としては、以下に述べる五つを挙げることができる。
【0066】
第一の対処法は、同一ストレージ30(2)内の未使用ボリューム642を使用してプール612を拡張をすることである(図2の矢印691)。ストレージ30(2)内に未使用ボリューム642が存在する場合、そのボリューム642をプール612に追加することにより、プール612のサイズを拡張することができる。
【0067】
第二の対処法は、他のストレージ30(4)内の未使用ボリューム643を使用してプール612を拡張することである(図2の矢印692)。第二の対処法が利用できる条件は、他のストレージ30(4)に未使用ボリューム643が存在すること、及び、他のストレージ30(4)内のボリュームにストレージ30(2)がアクセスする機能を有することである。
【0068】
一方のストレージ30(2)が他方のストレージ30(4)内のボリューム643にアクセスする機能を、外部接続機能と呼ぶことができる。一方のストレージ30(2)から見ると、他方のストレージ30(4)は一方のストレージ30(2)の外部に存在する外部ストレージである。他方のストレージ30(4)内のボリューム643は、一方のストレージ30(1)の外部に存在する外部ボリュームである。一方のストレージ30(1)内に外部ボリューム643と接続するための仮想的なボリューム625を設ける。その接続用のボリューム625は、外部接続ボリュームと呼ぶことができる。外部接続ボリューム625をプール612に追加して、プール612のサイズを拡張できる。
【0069】
外部ボリューム643と外部接続ボリューム625とを接続する場合は、外部ボリューム643と外部接続ボリューム625との接続関係を定義する接続テーブルを設ける。接続テーブルとは、簡単に言えば、外部接続ボリューム625の記憶空間と外部ボリューム643の記憶空間との対応関係を示すマッピングテーブルである。
【0070】
一方のストレージ30(2)は、ホスト計算機からコマンドを受信すると、マッピングテーブルを用いて、そのコマンドを他方のストレージ30(4)に送信するためのコマンドに変換する。一方のストレージ30(2)は、変換されたコマンドを他方のストレージ30(4)に送信する。一方のストレージ30(2)は、他方のストレージ30(4)からの応答に基づいて、ホスト計算機に応答する。
【0071】
第三の対処法は、他のストレージ30(4)内のプール614を構成する論理ボリューム627を流用してプール612拡張することである(図2の矢印693)。第三の対処法が利用できる条件は、第二の対処法の条件に加え、他ストレージ30(4)内のプール614から論理ボリューム627を取り外すことが可能であることである。
【0072】
第四の対処法は、ストレージ30(2)の機能を利用して他のストレージ30(3)内のプール613に仮想ボリューム634を移行させることである(図2の矢印694)。第四の対処法が利用できる条件は、ストレージ30(2)が他ストレージ30(3)に仮想ボリューム634を移行させる機能を有すること、及び、仮想ボリューム634を収容するだけの容量的な余裕が移行先プール613にあることである。仮想ボリューム634を他のプール613に移行させるとは、仮想ボリューム634を他のプール613の記憶領域に対応付けるという意味である。
【0073】
なお、仮想ボリューム634を他のプール693に移行させる機能を実行するにあたって、アプリケーションプログラム443(3)が稼働していないこと(非稼働中)が前提条件となる場合がある。その場合は、第四の対処法を利用する条件に、その前提条件も含まれる。
【0074】
第五の対処法は、ホスト計算機40(2)の機能を利用して他のストレージ30(1)内のプール611に仮想ボリュームを移行させることである(図2の矢印695)。第五の対処法が利用できる条件は、ホスト計算機40(2)がストレージ30(2)から他ストレージ30(3)に、仮想ボリューム633(移行後の仮想ボリューム632)を移行させる機能を有すること、及び、仮想ボリューム633を収容するだけの容量的な余裕が移行先プール611にあることである。
【0075】
なお、第四の対処法と同様に、仮想ボリューム633を他のプール611に移行させる機能の実行に際して、アプリケーションプログラム443(2)の停止(非稼動)を前提条件とする場合は、その前提条件も満たす必要がある。
【0076】
なお、ストレージ30(2)内に複数のプールが存在する場合、ストレージ30(2)内の一方のプールからストレージ30(2)内の他のプールに、仮想ボリュームを移行させることもできる。さらに、ストレージ30(2)内の他のプールを構成する論理ボリュームを取り外して、一方のプールに追加することもできる。
【0077】
次に、管理サーバプログラム211により使用される各種情報と、管理サーバプログラム211により実行される処理について説明する。以下、選択された対処法を管理サーバプログラム211が自動的に実行する場合を説明する。これに代えて、管理サーバプログラム211は、選択された対処法をユーザに提示するに止める構成でもよい。ユーザが、提示された対処法を承認した場合、その対処法が実行される。
【0078】
図3は、管理サーバプログラム211により使用されるホスト−ボリューム情報212のデータ構造及びデータ例を示す。ホスト−ボリューム情報212は、仮想ボリューム単位に情報を保持する。その属性情報は、仮想ボリューム番号(図中、VVOL#)2121、アプリケーションプログラム番号(図中、AP#)2122、所属プール番号(図中、POOL番号)2123、使用サイズ2124、アプリケーションプログラム稼動期間2125、ボリューム移行機能(図中、マイグレーション機能)2126、及び、コスト区分2127である。
【0079】
以下の説明において、名前、識別子、識別情報、番号は、それぞれ対象物を他の対象物と区別するために使用される情報であり、相互に変換可能である。例えば、仮想ボリューム番号は仮想ボリューム識別子または仮想ボリューム名と呼び変えることができる。さらに、各テーブルの構成は図示の例に限られない。例えば、複数のテーブルをリンクさせることにより、本実施例で必要な情報を管理することもできる。
【0080】
次に、ホスト−ボリューム情報212の各属性を説明する。仮想ボリューム番号2121は、仮想ボリュームの識別名を保持する。アプリケーションプログラム番号2122は、仮想ボリュームを使用するアプリケーションプログラム443の識別名を保持する。所属プール番号2123は、仮想ボリュームが所属するプールの識別名を保持する。使用サイズ2124は、仮想ボリュームの全ボリュームサイズのうち実際に使用されているサイズ、言い換えるとプール内のページが割り当てられているサイズを保持する。
【0081】
アプリケーションプログラム稼動期間2125は、仮想ボリュームを使用するアプリケーションプログラム443の稼動期間を保持する。ボリューム移行機能2126は、仮想ボリュームを使用するホスト計算機40上でボリューム移行が可能か否かを示す。可能な場合は、アプリケーションプログラム443の稼動中に移行できるか否かも示す。図3の例で「I/O無停止」となっているのは、アプリケーションプログラム443の稼動中に、仮想ボリュームの移行が可能なことを示している。
【0082】
コスト区分2127は、仮想ボリュームの所属するプールのコスト区分を示す。コスト区分は識別名である。コスト区分は、プールを構成する各論理ボリュームのグレードまたは所属先の部門を区別するために設定される。
【0083】
グレードは、例えば、論理ボリュームの価格帯などによって分けられる。例えば「A」は高価格帯のボリュームを示し、「B」は中価格帯のボリュームを示し、「C」は低価格帯のボリュームを示す。コスト区分「A」の設定されているプールは、高価格帯のボリュームのみから構成される。コスト区分「A,B」の設定されているプールは、高価格帯ボリュームまたは/及び中価格帯ボリュームから構成される。高価格帯ボリュームを高信頼性ボリュームと、中価格帯ボリュームを中信頼性ボリュームと、低価格帯ボリュームを低信頼性ボリュームと、呼び変えることもできる。高信頼性ボリュームは、高信頼性のディスクドライブから構成される。中信頼性ボリュームは、中信頼性のディスクドライブから構成される。低信頼性ボリュームは、低信頼性のディスクドライブから構成される。
【0084】
所属先の部門は、プールを構成する各論理ボリュームを部門別に割り当てる場合に使用される。部門Aには「A」、部門Bには「B」、部門Cには「C」と設定される。コスト区分は、仮想ボリューム及びプールの、性質または位置付けが変化するのを防止するために使用される。
【0085】
コスト区分が適合しているか否かを判定することにより、例えば、高価格帯の各論理ボリュームから構成されるプールに対応付けられるべき重要な仮想ボリュームが、低価格帯の各論理ボリュームから構成されるプールに移行されてしまうのを防止できる。または、部門Aで使用される仮想ボリュームが、部門Bの論理ボリュームで構成されているプールに移行されたりするのを防止できる。
【0086】
コスト区分2144は、上述のように複数の区分を含んでも良い。複数区分が設定されている場合は、どちらも適用可能であることを示す。なお、ホスト−ボリューム情報212は、ストレージ30内のシンプロビジョニングプログラム3143と、ホスト計算機40上のアプリケーションプログラム443と、ボリューム移行プログラム442等から取得できる情報、及び、管理者からの入力される情報に基づいて作成できる。
【0087】
図4は、管理サーバプログラム211により使用されるストレージ情報213のデータ構造及びデータ例を示す。ストレージ情報213は、ストレージ30単位に情報を保持する。その属性情報は、ストレージ番号(図中、ストレージ#)2131、ボリューム移行機能(図中、マイグレーション機能)2132、他ストレージ内のボリュームへのアクセス機能(図中、外部接続機能)2133である。
【0088】
ストレージ番号2131は、ストレージ30の識別名を保持する。ボリューム移行機能2132は、ストレージ30がボリューム移行機能を持つか否かを保持する。移行機能を持つ場合は、アプリケーションプログラム443が停止中の場合のみ移行可能か否かも併せて示す。例えば、図4の例で「I/O停止」とあるのは、アプリケーションプログラム443が停止されており、I/O要求が発生しない場合のみ、ボリュームを移行可能であることを示している。なお、ストレージ情報213は、ストレージ30内の入出力プログラム3141及びボリューム移行プログラム3142などから取得できる情報等に基づいて作成することができる。
【0089】
図5は、管理サーバプログラム211により使用されるプール情報214のデータ構造及びデータ例を示す。プール情報214は、プール単位に情報を保持する。その属性情報は、プール番号(図中、プール#)2141、プールサイズ2142、使用率2143、コスト区分2144である。
【0090】
プール番号2141は、プールの識別名を保持する。プールサイズ2142は、プールの総サイズ、即ち、仮想ボリュームに割当可能な実ページの総サイズを保持する。使用率2143は、プールサイズ2142に占める、仮想ボリュームに割当済みのページサイズの割合を示す。全プールサイズを仮想ボリュームに割り当てた場合、使用率は100%となる。
【0091】
コスト区分2144は、ホスト−ボリューム情報212におけるコスト区分2127と同じ目的で付与されている。コスト区分2144は、プールを構成する論理ボリュームを区別するための識別名である。なお、プール情報214は、ストレージ30内のシンプロビジョニングプログラム3143、及び、管理者から直接入力される情報等に基づいて作成すればよい。
【0092】
図6は、管理サーバプログラム211により使用される未使用ボリューム情報215のデータ構造及びデータ列を示す。未使用ボリューム情報215は、未使用のボリューム単位に情報を保持する。その属性情報は、未使用ボリューム番号2151、ストレージ番号2152、サイズ2153、コスト区分2154である。
【0093】
未使用ボリューム番号2151は、未使用ボリュームの識別名を保持する。ストレージ番号2152は、未使用ボリュームが存在するストレージの識別名を保持する。サイズ2153は、未使用ボリュームの記憶サイズを保持する。コスト区分2154は、未使用ボリュームのコスト区分を示す識別名を保持する。コスト区分2154は、複数の識別名を保持しても良い。なお、未使用ボリューム情報215は、ストレージ30内のシンプロビジョニングプログラム3143と、ディスクコントローラ315から取得できる情報及び管理者から直接入力される情報等に基づいて作成すればよい。
【0094】
図7は、管理サーバプログラム211により使用される管理ポリシー情報216のデータ構造及びデータ列を示す。管理ポリシー情報216は、管理ポリシー単位に情報を保持する。管理ポリシーとは、管理サーバプログラム211が各種管理操作を実行する上での指針を示す情報である。管理ポリシーは、例えば、プールサイズが不足した場合の対応方針を示す。
【0095】
管理ポリシー情報216の属性は、ポリシー番号2161、適用対象2162、起動条件2163、アクション2164、成功条件2165である。ポリシー番号2161は、ポリシーの識別名を保持する。適用対象2162は、ポリシーの適用対象を保持する。図7の例で「全プール」となっている場合、全てのプールに同じポリシーを適用することを示している。適用対象として特定のプールの識別名が指定されている場合、ポリシーは、その特定されたプールのみに適用される。
【0096】
起動条件2163は、特定のアクションを実行するきっかけとなる条件を保持する。図7の例では、起動条件を、プール使用率に関する条件として規定している。アクション2164は、アクションの種別を保持する。アクションの種別としては、「プールサイズ拡張」、「警告」等を挙げることができる。「プールサイズ拡張」は、例えば、プールサイズが不足した場合にプールサイズを拡張させることを意味する。「警告」とは、例えば、プールサイズが不足しそうな場合に、ユーザに警告を発することを意味する。
【0097】
成功条件2165は、アクションの目的となる条件を保持する。図示の例では、プールの使用率を特定の範囲に収めることを、アクションの成功条件(目的)としている。なお、管理ポリシー情報216は、管理サーバプログラム211のベンダにより予め用意されている構成でもよいし、管理者が手動で作成できる構成でもよい。
【0098】
図8は、プールの容量使用率を監視するための処理を示すフローチャートである。以下、ステップをSと略記する。プールの容量使用率は、プールサイズの過不足を測る指標であり、その値が100%に近いほどサイズが不足していることを示す。容量使用率の監視では、予め監視用の閾値を設定しておき、各プールの容量使用率がその閾値を超えた場合に、何らかのアクションを実行する。具体的な手順を以下に示す。以下の説明では、動作の主体を管理計算機として説明する。マイクロプロセッサ22が管理サーバプログラム211を読み込んで実行することにより以下の機能が実現されるため、マイクロプロセッサ22または管理サーバプログラム211を動作の主体として説明することもできる。
【0099】
管理計算機20は、プール情報214を参照し、先頭のプールを選択する(S8101)。管理計算機20は、処理対象のプールを選択できたか否かを判定する(S8102)。もしも、選択するプールがなければ処理を終了する(S8102:NO)。選択するプールがあれば以下の処理を実行する。
【0100】
管理計算機20は、選択したプールの容量使用率を取得する(S8103)。管理計算機20は、S8103で取得した容量使用率が管理ポリシー情報216で規定された閾値を超えたか否かをチェックする(S8104)。換言すれば、取得した容量使用率が起動条件2163に合致するか否かを判定する。
【0101】
もしも、容量使用率が閾値を超えた場合(S8104:YES)、管理計算機20は、容量不足に対応すべく、プールサイズを拡張する処理を実施する(S8105)。プールサイズ拡張処理の詳細については、図9で後述する。
【0102】
処理対象プールの容量使用率が起動条件に一致しない場合(S8104:NO)、S8105をスキップする。
【0103】
管理計算機20は、プール情報214から次のプールを新たな処理対象プールとして選択し(S8106)、S8102に戻る。プール情報214に登録されている全てのプールについて処理を完了して、選択可能なプールが無くなると(S8102:NO)、本処理は正常に終了する。
【0104】
図9は、プールサイズの不足に対応するために、プールサイズを拡張させる処理のフローチャートである。図9のフローチャートは、図8のS8105で実行される。本処理では、プールサイズが不足した場合の各対処法の妥当性を順番に評価し、妥当と評価された対処法を実行する。以下に具体的な手順を説明する。以下、処理対象のストレージ30を自ストレージと呼び、処理対象ストレージ以外の他のストレージと区別する。
【0105】
最初に、管理計算機20は、容量不足が発生したストレージ(自ストレージ)内でプール拡張が可能か否かを判定し、それが可能ならば実行する(S8201)。自ストレージ内でプールサイズを拡張する処理の詳細については、図10で後述する。S8201の実行によって、プールの容量不足が解消した場合(S8202:YES)、本処理は終了する。
【0106】
S8201を実行してもプールの容量不足が解消しない場合(S8202:NO)、管理計算機20は、自ストレージを除く他ストレージの一覧(他ストレージ一覧)を、ストレージ情報213に基づいて作成する(S8203)。なお、他ストレージ一覧をストレージ情報213と別に作成するのではなく、ストレージ情報213から他ストレージの情報を取得する構成でもよい。その場合、S8204及びS8211で、自ストレージを選択しないようにする。
【0107】
管理計算機20は、他ストレージ一覧の先頭に記載される他ストレージを一つ選択する(S8204)。管理計算機20は、処理対象の他ストレージを選択できたか否かを判定する(S8205)。他ストレージを選択できなかった場合(S8205:NO)、管理計算機20は、プールの容量不足を解消するための方法が見つからない旨を示すアラートを発行して(S8206)、本処理を終了する。
【0108】
処理対象の他ストレージを選択できた場合(S8205:YES)、管理計算機20は、仮想ボリュームの移行によるプールサイズの拡張という対処法の妥当性をチェックし、もしも妥当ならその対処法を実行する(S8207)。仮想ボリュームの移動によるプールサイズの拡張方法については、図11で後述する。S8207を処理した結果、プールの容量不足が解消した場合は、本処理を終了する(S8208:YES)。
【0109】
仮想ボリュームを移動させることができない場合、または、仮想ボリュームを移動させてもプールの容量不足が解消しない場合のいずれかの場合(S8208:NO)、管理計算機20は、他ストレージを用いたプールサイズの拡張という対処法の妥当性をチェックし、もしも妥当ならその対処法実行する(S8209)。S8209の詳細については、図12で後述する。
【0110】
他ストレージを用いたプールサイズの拡張方法を実行した結果、プールの容量不足が解消した場合には、本処理を終了する(S8210:YES)。他ストレージを用いても、プールの容量不足を解消できない場合(S8210:NO)、管理計算機20は、他ストレージ一覧から次の他ストレージを選択し(S8211)、S8205に戻る。
【0111】
図10は、自ストレージ内でプールサイズを拡張する処理を示すフローチャートであり、図9のS8201で実行される。以下の処理では、自ストレージ内の各未使用ボリュームについて、そのサイズ、そのコスト、その性能の各観点で、プールサイズの拡張用ボリュームとして適切か否かの妥当性を評価する。妥当と評価された未使用ボリュームは、サイズの不足しているプールに追加され、そのプールのサイズを拡張させる。
【0112】
最初に、管理計算機20は、自ストレージ内の未使用ボリュームの一覧(以下、拡張用の候補ボリューム一覧とも呼ぶ)を、未使用ボリューム情報215から作成する(S8301)。
【0113】
なお、候補ボリューム一覧を、未使用ボリューム情報215と別に作成するのではなく、未使用ボリューム情報215から候補ボリューム一覧を取得する構成でも良い。その場合、S8302及びS8307では、自ストレージ内の未使用ボリュームのみを選択するようにする。
【0114】
管理計算機20は、候補ボリューム一覧から最初の未使用ボリュームを選択する(S8302)。選択可能な未使用ボリュームが無い場合(S8303:NO)は、対策未完として本処理を終了する。なお、選択可能な未使用ボリュームが見つからない場合(S8303:NO)、図13で後述する処理(S8600)を実施してもよい。
【0115】
管理計算機20は、候補ボリューム一覧から未使用ボリュームを一つ選択できた場合(S8303:YES)、その未使用ボリュームのサイズが所定サイズであるか否かを判定する(S8304)。
【0116】
所定サイズとは、例えば、プールサイズの不足を解消するために必要なサイズである。具体的には、所定サイズとは、管理ポリシーの成功条件2165を満たすために必要なサイズを意味する。このように、未使用ボリュームのサイズが目的に合致するか否かは、管理ポリシー一覧216の内容に基づいて判断できる。
【0117】
例えば、容量使用率が75%のプールには、図7に示すように、起動条件2163が「プール使用率70〜84%」のポリシーが適用される。そのポリシーのアクションに関する成功条件2165の内容は「プールの使用率を40−60%の範囲に低減すること」と規定されている。ここで、「40%」という使用率の下限を設定する理由は、行き過ぎた対処を防ぐためである。現在のプールのサイズと容量使用率とから、目標とする容量使用率を得るために必要な追加サイズは次の(1)式によって求められる。
【0118】
(追加サイズ)=(1÷目標とする容量使用率)×現在の容量使用率×現在のプールサイズ−現在のプールサイズ・・・(1)
【0119】
もしも、選択された未使用プールのサイズが100TBの場合、容量使用率75%を40%にするために必要な追加サイズは、上記(1)式より、(1÷0.4)×0.75×100−100=87.5TBとなる。同様に、容量使用率75%を60%にするために必要な追加サイズは、(1÷0.6)×0.75×100−100=25TBとなる。
【0120】
従って、プールの容量使用率を現在の75%から、40%〜60%の範囲に収めるためには、25TB〜87.5TBの範囲の追加サイズが必要となる。選択された未使用ボリュームのサイズが上記の範囲内であれば、そのボリュームを使用したプール拡張が妥当であると判断できる。
【0121】
選択された未使用ボリュームのサイズが所定サイズに合致しない場合(S8304:NO)、管理計算機20は候補ボリューム一覧から次の未使用ボリュームを選択し(S8307)、S8303に移る。
【0122】
選択された未使用ボリュームのサイズが所定サイズに合致する場合(S8304:YES)、管理計算機20は、その未使用ボリュームのコスト区分の妥当性を評価する(S8305)。図中では、便宜上、「コスト区分」を「コスト」と簡略化して示す。
【0123】
管理計算機20は、具体的には、選択された未使用ボリュームに設定されているコスト区分の内容が(未使用ボリューム情報215のコスト区分2154の内容)が、割当先のプールに設定されているコスト区分の内容(プール情報214のコスト区分2144の内容)に含まれているか否かを判定する。
【0124】
例えば、図6に示すように、「UVOL−A」の識別名を有する未使用ボリュームには、コスト区分2154として「A」が設定されている。一方、図5に示すように、「POOL−B」の識別名を有するプールには、コスト区分2144として「A,B」が設定されている。この場合、未使用ボリュームのコスト区分「A」は、プールのコスト区分「A,B」に含まれているため、そのプール(POOL−B)のコスト区分と未使用ボリュームのコスト区分とは適合する。
【0125】
未使用プールのコスト区分とプールのコスト区分とが適合しないと判定された場合(S8305:NO)、管理計算機20は、S8307に移る。
【0126】
未使用ボリュームのコスト区分とプールのコスト区分とが適合する場合(S8305:YES)、管理計算機20は、プールサイズを拡張した後の性能を予測して評価する(8306)。管理計算機20は、選択された未使用ボリュームをプールに追加した場合、そのプールが所定値以上の性能を維持できるか否かを判定する。
【0127】
例えば、高速な論理ボリュームから構成されているプールに、低速な論理ボリュームを追加した場合、そのプールの平均応答性能は低下する。プールの応答性能が低下すると、そのプール内のページを使用する仮想ボリュームのI/O性能も低下する。
【0128】
仮想ボリュームの性能低下を防ぐためには、例えば、追加対象の未使用ボリュームを、現在使われている論理ボリュームの性能と同じかそれ以上の性能を有する論理ボリュームに限定すればよい。
【0129】
なお、未使用ボリュームをプールに追加することにより、そのプール内の各論理ボリュームに対するI/O処理の並列性が高まる。従って、低速の論理ボリュームを追加した場合でも、プールとしての平均性能は低下しないか、または、高まる可能性もある。S8306では、この点を考慮に加えても良い。
【0130】
さらに、S8306では、仮想ボリュームの性能低下の度合を推定し、その度合が許容範囲内の場合は、選択された未使用ボリュームをプールに追加する構成でもよい。
【0131】
ボリューム追加後に性能上の問題が生じないと予測される場合(S8306:YES)、管理計算機20は、選択された未使用ボリュームを用いてプールのサイズ拡張を実施させ(S8308)、本処理を終了する。
【0132】
選択された未使用ボリュームをプールに追加すると、そのプールが所定値以上の性能を維持できないと予測される場合(S8306:NO)、管理計算機20は、候補ボリューム一覧から次の未使用ボリュームを選択(S8307)し、S8303に戻る。
【0133】
なお、図10の処理では、一つの未使用ボリュームをプールに追加するだけで、そのプールの容量不足に対処できる場合を説明している。しかし、一つの未使用ボリュームを追加する構成に限らず、複数の未使用ボリュームをプールに追加してプールの容量不足を解消する構成でも良い。
【0134】
その場合、例えば、S8304のサイズチェックでは、未使用ボリュームのサイズが上限値をオーバーする場合を除いて、追加目的に合致すると判定する。そして、S8305及びS8306それぞれのチェックを通る、未使用ボリュームのリストを作成し、そのリストから、合計サイズが所定サイズとなる複数の未使用ボリュームを抽出して、それら複数の未使用ボリュームをプールに追加する構成でも良い。
【0135】
さらに、S8304で所定サイズに満たないと判定された一つの未使用ボリュームを、プールに追加する構成でもよい。その場合、図10に示す対処法以外に、複数の対処法(図11,図12)を併用することが前提となる。
【0136】
さらに、成功条件として定義されている目標使用率に達しない場合でも、未使用ボリュームを一つも追加しない場合よりは、プールの使用率を低下させることができる。従って、所定サイズに満たない未使用ボリュームであっても、プールに追加することにより、プールサイズが枯渇するリスクを軽減できる。
【0137】
さらに、自ストレージ内に複数のプールが存在する場合、容量不足となっている処理対象プール以外の他プール(自ストレージ内の他プール)で使用されている論理ボリュームを、処理対象プールに移すことで、容量不足に対処することも可能である。
【0138】
そのような対処法を図10ではS8600として示す。図13を参照して、自ストレージ内の他プールを利用する対処法を説明する。
【0139】
図10のフローチャートで対策未完として終了する前に、管理計算機20は、自ストレージ内に存在する一つまたは複数の他プールについて、それらの他プールを構成する各論理ボリュームの一覧を作成する(S8601)。
【0140】
管理計算機20は、他プールを構成するボリューム一覧の中から先頭のボリュームを選択する(S8602)。管理計算機20は、選択されたボリュームが、処理対象のプール(容量不足となっている自プール)に流用可能か否か判断する(S8603)。
【0141】
流用可能か否かを判断するための一つの基準として、例えば、その論理ボリュームを他プールから取り外した場合でも、他プールの容量使用率が予め定めた基準以下となることを挙げることができる。この基準は、論理ボリュームを流用したことによって、流用元のプールが容量不足になることを防ぐために設けられる。
【0142】
他プール内の論理ボリュームを流用可能な場合(S8603:YES)、管理計算機20は、図10で述べたと同様の各判定を行う。管理計算機20は、その論理ボリュームが所定サイズを有するか否かを判定する(S8604)。次に、管理計算機20は、その論理ボリュームのコスト区分と流用先のプール(自プール)のコスト区分とが適合するか否かを判定する(S8605)。次に、管理計算機20は、自プールが所定値以上の性能を有するか否か予測する(S8606)。
【0143】
さらに、管理計算機20は、他プールから論理ボリュームを取り外すと、他プールの性能が低下する可能性がある点と、論理ボリュームの取り外しに時間を要する点を考慮することができる(S8607)。
【0144】
他プールから論理ボリュームを一つ取り外すと、他プールを構成する論理ボリュームの数が少なくなるため、他プールにおけるI/O処理の並列性が低下する。従って、他プールの応答性能が低下する可能性がある。他プールから論理ボリュームを取り外す場合、その論理ボリュームに記憶されているデータを、他プール内の別の論理ボリュームにコピーして移動させる必要がある。従って、流用対象の論理ボリュームに記憶されているデータの量によっては、データコピー時間が長くなる可能性がある。この観点から、記憶されているデータ量の多い論理ボリュームは、流用できないボリュームであると判定する構成としてもよい。
【0145】
なお、流用可能な論理ボリュームが複数存在する場合は、例えば、流用元プールの容量使用率、論理ボリュームのサイズの少なさ、取り外しに要する時間の短さ、性能低下の少なさ、などの基準に従って、いずれか一つの論理ボリュームを選択すればよい。
【0146】
各判断ステップを満たさない場合、管理計算機20は、次のボリュームを選択して(S8608)、S8603に戻る。各判断ステップを全て満たす場合、管理計算機20は、他プール内の論理ボリュームを他プールから取り外して、容量不足状態の自プールに追加させる(S8609)。図11に戻る。
【0147】
図11は、仮想ボリュームの移動によりプールの容量不足を解消する処理を示すフローチャートであり、図9のS8207で実行される。本処理では、容量不足のプールを利用している各仮想ボリュームについて、移行手段の有無、ボリュームサイズ、コスト区分の適合可否、移行完了時間、移行後の性能の各点で、評価する。他ストレージの他プールへの移動が妥当であると判断された仮想ボリュームは、他ストレージ内の他プールに移動される。以下に具体的な手順を示す。
【0148】
最初に、管理計算機20は、容量不足のプールを利用している仮想ボリュームの一覧を作成する(S8401)。その仮想ボリュームの一覧は、移行候補となる仮想ボリュームの一覧を示すため、以下の説明では、移行候補仮想ボリューム一覧と呼ぶ。
【0149】
移行候補仮想ボリューム一覧は、仮想ボリューム情報212から作成すれば良い。または、移行候補仮想ボリューム一覧は、仮想ボリューム情報212と別に作成するのではなく、仮想ボリューム情報212から得ることもできる。その場合は、S8402及びS8409では、容量不足のプールに所属している仮想ボリュームの中から選択する。
【0150】
管理計算機20は、移行候補仮想ボリューム一覧から最初の仮想ボリュームを選択する(S8402)。仮想ボリュームを選択できなかった場合(S8403:NO)、本処理は、対策未完として終了する。
【0151】
仮想ボリュームを一つ選択できた場合(S8403:YES)、管理計算機20は、選択されている他ストレージ30に、その仮想ボリュームを移動させる手段の有無を確認する(S8404)。ストレージ30側で仮想ボリュームを移動させる手段と、ホスト計算機40側で仮想ボリュームを移動させる手段とがある。
【0152】
ストレージ30が仮想ボリュームを移動させる手段を備えているか否かは、ストレージ情報213のボリューム移行機能2132の内容で判断できる。ホスト計算機40が仮想ボリュームを移動させる手段を備えているか否かは、仮想ボリューム情報212のボリューム移行機能2126の内容によって判断できる。
【0153】
管理計算機20は、ストレージ側での仮想ボリューム移行手段の有無と、ホスト計算機側での仮想ボリュームの移行手段の有無とを確認し、仮想ボリュームを他ストレージへ移行させるための手段が少なくとも一つ存在するか否かを判定する(S8404)。
【0154】
仮想ボリュームを他ストレージへ移行させるための手段が一つも無い場合(S8404:NO)、管理計算機20は、次の仮想ボリュームを選択して(S8409)、S8403に戻る。
【0155】
仮想ボリュームを他ストレージへ移動させる手段が少なくとも一つ存在する場合(S8409:YES)、管理計算機20は、その仮想ボリュームのサイズが所定サイズであるか否かを判定する(S8405)。仮想ボリュームのサイズが、管理ポリシーの目的に合致するか否かは、管理ポリシー一覧216の内容によって判断することができる。
【0156】
例えば、容量使用率が75%のプールには、図7に示すように、起動条件2163が「プール使用率70〜84%」のポリシーが適用される。そのポリシーのアクションに関する成功条件2165の内容は「プールの使用率を40−60%の範囲に低減すること」と規定されている。現在のプールのサイズと容量使用率とから、目標とする容量使用率を得るために必要な仮想ボリュームの移行サイズは、次の(2)式によって求められる。
【0157】
(移行サイズ)=(現在の容量使用率−目標とする容量使用率)×プールサイズ・・・(2)
【0158】
もしも、プールのサイズが100TBの場合、容量使用率75%を40%に低下させるために必要な追加サイズは、(0.75−0.4)×100=35TBとなる。同様に、容量使用率75%を60%に低下させるために必要な追加サイズは、(0.75−0.6)×100=15TBとなる。
【0159】
従って、プールの容量使用率を40%から60%の範囲に収めるためには、15TB〜35TBの範囲のボリュームサイズを持つ仮想ボリュームを、他ストレージの他プールへ移行させる必要がある。
【0160】
S8403で選択された仮想ボリュームのサイズが上記の範囲内であれば、その仮想ボリュームの移行は妥当であると判断できる。仮想ボリュームのサイズが所定サイズに合致しないと判断された場合(S8405:NO)、S8409に移る。
【0161】
仮想ボリュームのサイズが所定サイズに合致する場合(S8405:YES)、管理計算機20は、その仮想ボリュームに設定されているコスト区分と、移行先の他プールに設定されているコスト区分とが適合するか否かを判定する(S8406)。
【0162】
具体的には、仮想ボリューム情報212のコスト区分2154の内容が、プール情報214のコスト区分2144の内容に含まれている場合、両者のコスト区分が適合すると判断できる。例えば、図3に示す、「VVOL−B」の識別名を有する仮想ボリュームを、図5に示す、「POOL−A」の識別名を有するプールに移動させることを評価する場合を説明する。図3に示すように、仮想ボリューム(VVOL−B)のコスト区分2154は「A,B」である。図5に示すように、プール(POOL−A)のコスト区分2144には「A」が設定されている。移行先のプールのコスト区分「A」は、仮想ボリュームのコスト区分「A,B」に含まれているため、管理計算機20は、両者のコスト区分が適合すると判定する。仮想ボリュームのコスト区分と移行先プールのコスト区分とが適合しないと判断された場合は、S8409に進む。
【0163】
両者のコスト区分が適合すると判断された場合(S8406:YES)、管理計算機20は、仮想ボリュームを他プールに移行させるために要する時間(移行所要時間)が、プールの容量不足の解消に間に合うか否かを判定する(S8407)。
【0164】
例えば、プールの容量使用率が急上昇した場合、プールの容量不足に至急対処する必要がある。プールの容量使用率が100%になる前に、そのプールのサイズを拡張する必要がある。そのためには、プールの容量使用率が100%に到達する日時(プールサイズが枯渇する日時)と、容量不足の対策が完了する日時(移行完了日時)とを、それぞれ推定する必要がある。
【0165】
プールサイズの枯渇日時は、例えば、プール容量使用率の過去の履歴から単位時間あたりの増加率を求め、その増加率に基づいて計算すればよい。移行完了日時は、例えば、(a)アプリケーションプログラム443が稼動中に仮想ボリュームを移行可能であるか否か、(b)アプリケーションプログラム443の稼動期間、(c)仮想ボリュームの移行所要処理時間、などの情報に基づいて計算すればよい。
【0166】
(a)は、ホスト計算機40内のボリューム移行プログラム442については、仮想ボリューム情報212のボリューム移行機能2126を参照すれば、確認できる。ストレージ30内のボリューム移行プログラム3142を使用する場合は、ストレージ情報213のボリューム移行機能2132を参照すれば確認できる。
【0167】
(b)については、仮想ボリューム情報212のアプリケーションプログラム稼動期間2125を参照することで確認できる。
【0168】
(c)については、仮想ボリュームのサイズとサイズあたりの仮想ボリューム移行時間との乗算で求められる。サイズあたりの仮想ボリューム移行時間は、例えば、予め設定される参考値に基づいて算出したり、または、過去の仮想ボリュームの移行に要した時間から選択したりできる。参考値は、各論理ボリュームの性能毎にそれぞれ用意される。
【0169】
移動完了日時の算出方法は、(a)の内容によって異なる。即ち、アプリケーションプログラム443を停止させずに仮想ボリュームの移動が可能である場合は、現在時刻に(c)の移行所要時間を加えた時刻となる。
【0170】
これに対し、アプリケーションプログラム443の稼働中に仮想ボリュームを移動させることができな場合は、アプリケーションプログラム443の稼動終了時刻に、(c)の移行所要時間を加えた時刻となる。
【0171】
なお、仮想ボリュームの移行所要時間が長い場合等には、業務開始時刻までに仮想ボリュームの移行が完了しない可能性が考えられる。そのような事態が発生するのを防止するために、例えば、(a)のアプリケーションプログラム443の稼働中に仮想ボリュームを移動させることができない場合であって、かつ、予測される移行完了日時がアプリケーションプログラム443の開始時刻以降となる場合は、その仮想ボリュームを移行させることはできない、と判断すればよい。
【0172】
なお、プールサイズの枯渇日時及び仮想ボリュームの移行完了日時は、いずれも推定値となるため、余裕を持って判断するのが好ましい。即ち、プールサイズの枯渇日時は、例えば、予測値よりも一定量早い時刻を採用する。移行完了日時は、予測値よりも一定量遅い時刻を採用する。これにより、予想よりも早くプールサイズが枯渇する事態、または、仮想ボリュームの移行が予想よりも遅く完了する事態、の発生を抑制できる。
【0173】
さらに、上記の代替案として、容量使用率の絶対値が所定の上限値よりも高い場合、あるいは、容量使用率の増加率が所定の増加率よりも高い場合など、比較的対応が急がれる場合には、対処完了までの処理時間が相対的に短い対処法(例えばプール拡張)を常に選択する構成としてもよい。
【0174】
なお、ホスト計算機40内のボリューム移行プログラム442による仮想ボリュームの移行と、ストレージ30内のボリューム移行プログラム3142による仮想ボリュームの移行との両方を実施できる場合は、何らかの方法によっていずれかを一つを選択する必要がある。
【0175】
その選択基準としては、例えば、処理完了までの時間の早さ、ホスト計算機40の負荷の大きさ、ストレージ30の負荷の大きさなどを挙げることができる。なお、図14に示すように、ホスト計算機40のボリューム移行プログラム442を用いる場合は、データ転送サイズを比較的少なくでき、かつ、不要なデータを除去できるかも知れないという効果を奏する。
【0176】
図14を参照する。ファイルシステムは、サイズSZ1のデータD1,D2,D3をn個管理している。ファイルシステム上の使用サイズは、SZ1×nとなる。それらのデータD1,D2,D3は、仮想ボリューム720にばらばらに書き込まれるとする。仮想ボリューム720には、各データD1,D2,D3を格納するために、n個のチャンク(実ページ)C1,C2,C3が割り当てられる。チャンクのサイズをSZ2とする(SZ2>SZ1)。従って、仮想ボリューム720へのページ割り当てサイズは、SZ2×nとなる。
【0177】
ホスト計算機40が仮想ボリュームを移動させる場合のデータ転送量はSZ1×nとなるのに対し、ストレージ30が仮想ボリュームを移動させる場合のデータ転送量はSZ2×nとなり、後者の方が大きい。このため、図14に示す例では、ストレージ30が仮想ボリュームを移動させる場合、ホスト計算機40が仮想ボリュームを移動させる場合に比べて、移行所要時間が長くなる。
【0178】
従って、ファイルシステム上の使用サイズ(SZ1×n)と仮想ボリュームへのページ割り当てサイズ(SZ2×n)との差異を、ボリューム移行手段を選択するための基準として用いても良い。
【0179】
さらに、OS444のファイルシステム710上でデータが削除されても、削除されたデータが不要データであることを、ストレージ30が認識できない場合も考えられる。その場合、不要なデータのために、仮想ボリューム720にページ(チャンク)が割り当てられたままとなる。
【0180】
ホスト計算機40内のボリューム移行プログラム442が、削除されたデータを除外してデータを移行させる仕組みを持つと仮定する。ボリューム移行プログラム442を用いて仮想ボリュームのデータを移行元プール720から移行先プール721に移行させると(図14の矢印751,752)、移行先プール721には、削除された不要データが格納されない。従って、仮想ボリュームの移行前に比べて、プールの使用サイズを少なくできる。
【0181】
この現象を利用して、ファイルシステム710上の使用サイズと仮想ボリュームへのページ割り当てサイズの差(または比率)が一定以上になる場合,ホスト計算機40内のボリューム移行プログラム442を優先して実行するようにしても良い。
【0182】
図11に戻る。S8407を実行した結果、プールの容量不足状態が仮想ボリュームのデータ移行完了時刻まで待てないと判定された場合(S8407:NO)、S8409に進む。
【0183】
仮想ボリュームのデータ移行が完了するまで待つことができると判断された場合(S8407:YES)、管理計算機20は、仮想ボリューム移行後における仮想ボリュームの性能を予測して評価する(S8408)。即ち、管理計算機20は、移行後においても、仮想ボリュームの性能を維持できるか否か判断する。
【0184】
仮想ボリュームを自ストレージ内のプールから他ストレージのプールに移行させることによって、仮想ボリュームのI/O性能が低下する可能性がある。移行後に仮想ボリュームのI/O性能が低下するか否かについては、移行元プール及び移行先プールのそれぞれについて、プールを構成する論理ボリュームの性能、論理ボリュームの数、プールの負荷の大きさ、移行対象の仮想ボリュームのI/O量などを考慮して判断すればよい。仮想ボリュームの性能低下の度合が許容範囲内である場合は、特に問題無しとして、その移行を認めてもよい。
【0185】
S8408実行の結果、性能上の問題が無さそうであると判断された場合、選択された仮想ボリュームを、選択された他ストレージ30に移行させ(S8410)、対策完として本処理を終了する。
【0186】
移行後に仮想ボリュームの性能が所定値以上低下するような場合(S8408:NO)、移行候補仮想ボリューム一覧から次の仮想ボリュームを選択し(S8409)、S8403に戻る。
【0187】
なお、図11のフローチャートでは、一つの仮想ボリュームを移行させるだけで、移行元プールの容量を拡張する場合を示しているが、これに限らず、複数の仮想ボリュームを移動させる構成でもよい。その場合、例えば、S8405でのボリュームサイズのチェックでは、仮想ボリュームのサイズがオーバーする場合を除いて、プール容量不足を解消させる目的に合うものと判定する。S8404、S8406、S8407のそれぞれの判定に合格する複数の仮想ボリュームのリストを作成し、そのリストから、仮想ボリュームの合計サイズが必要なサイズ範囲になるように、複数の仮想ボリュームを抽出する。抽出された複数の仮想ボリュームを複数の他プールへ移行させる。
【0188】
なお、S8405で仮想ボリュームのサイズが所定サイズに達していない場合でも、その仮想ボリュームの移行を実施させる構成としても良い。その場合、複数の対処法を併用することになる。最終目標の容量使用率に達しなくても、仮想ボリュームの移行を実施しない場合と比べると、プールの容量使用率を低下させることができる。従って、プールサイズが枯渇するリスクを軽減できる。
【0189】
図11のフローチャートでは詳しく述べていないが、他ストレージ内に複数のプールが存在する場合は、S8405からS8408までの各ステップを、他ストレージ内の各プールのそれぞれについて実施することになる。
【0190】
仮想ボリュームの移行に適したプールが複数ある場合は、例えば、移行先プールの容量使用率、移行時間の短さ、移行後の性能低下の少なさ、などによって移行先プールを一つ選択すればよい。
【0191】
なお、図11のフローチャートでは図示を省略しているが、自ストレージ内に複数のプールが存在する場合への考慮を加えても良い。自ストレージ内に複数のプールが存在する場合、容量不足のプールから、空き容量の十分あるプールに、仮想ボリュームを移行させるという対処法も選択肢に含めることができる。その場合、図11のフローチャートと同様に、例えば、他プールへ仮想ボリュームを移行させる手段の有無、仮想ボリュームのサイズが目的に合致するか、移行先プールのコスト区分と仮想ボリュームのコスト区分が適合するか、容量不足のプールは移行完了時刻まで待てるか、移行後の性能は維持されるか、などの評価を行えばよい。
【0192】
図12は、他ストレージの有する論理ボリュームを利用して、自ストレージのプールのサイズ拡張を図る処理のフローチャートであり、図9のS8209で実行される。本処理では、以下に述べるように、選択された他ストレージのボリューム(外部ボリューム)に、自ストレージから接続可能か否かをチェックする。もしも接続可能であれば、選択された他ストレージ内の各ボリュームのうち未使用のボリュームについて、ボリュームサイズ、コスト区分、性能変化の各点で、プール拡張用のボリュームとして適切であるかの妥当性を評価する。妥当と評価された未使用の外部ボリュームが存在する場合、自ストレージからその未使用の外部ボリュームに接続し、その外部ボリュームを自ストレージ内のプールに割り当ててプールサイズを拡張する。
【0193】
最初に、管理計算機20は、選択された他ストレージのボリュームに接続する機能(外部接続機能)を、自ストレージが有するか否かをチェックする(S8501)。このチェックのためには、ストレージ情報213の外部接続機能2133を参照すればよい。
【0194】
自ストレージが外部接続機能を備えていない場合(S8501:NO)、本処理は、対策未完として終了する。自ストレージが外部接続機能を有する場合(S8501:YES)、以下の処理が実施される。
【0195】
管理計算機20は、選択された他ストレージ内の未使用ボリューム一覧(以下、候補ボリューム一覧)を、未使用ボリューム情報215から作成する(S8502)。なお、候補ボリューム一覧を、未使用ボリューム情報215と別に作成するのではなく、未使用ボリューム情報215から未使用の候補ボリュームの情報を読み出す構成でもよい。その場合、S8503及びS8508では、選択された他ストレージ内の未使用ボリュームのみを選択する。
【0196】
管理計算機20は、候補ボリューム一覧から先頭の未使用ボリュームを一つ選択する(S8503)。管理計算機20は、未使用ボリュームを選択できたか否かを判断する(S8504)。選択可能な未使用ボリュームが無い場合(S8504:NO)、対策未完として本処理を終了する。
【0197】
他ストレージ内の未使用ボリュームを選択できた場合(S8504:YES)、管理計算機20は、その未使用ボリュームのサイズが所定サイズであるか否かを判定する(S8505)。つまり、選択された未使用ボリュームが、自ストレージ内のプールの容量不足を解消させるのに適切なサイズであるかを確認する。未使用ボリュームのサイズが所定サイズであるか否かは、管理ポリシー一覧216の内容によって判断すれば良い。その処理内容は、図10のS8304と同じである。より詳しくは、管理計算機20は、未使用ボリュームのサイズが目的達成に必要な範囲のサイズであるか否かを判定する。
【0198】
選択された未使用ボリュームのサイズが所定サイズではない場合(S8505:NO)、管理計算機20は、候補ボリューム一覧から次の未使用ボリュームを選択し(S8508)、S8504に戻る。
【0199】
選択された未使用ボリュームのサイズが所定サイズの場合(S8505:YES)、管理計算機20は、未使用ボリュームのコスト区分と割当先のプールのコスト区分とが適合するか否かを判断する(S8506)。その具体的な処理内容は、図10のS8305と同じである。
【0200】
未使用ボリュームのコスト区分とプールのコスト区分とが適合しない場合(S8506:NO)、S8508に移る。
【0201】
未使用ボリュームのコスト区分とプールのコスト区分とが適合する場合(S8506:YES)、管理計算機20は、未使用ボリュームをプールに追加した場合の性能を評価する(S8507)。性能評価の方法は、図10のS8306と同様である。
【0202】
しかし、S8507の場合は、外部接続機能を利用して、他ストレージ内の未使用ボリュームを自ストレージ内のプールに追加する。従って、自ストレージから他ストレージにアクセスする必要があり、オーバーヘッドが生じる。そのため、オーバーヘッド分の補正を実施すると良い。即ち、本処理では、オーバーヘッドを考慮して、プールの性能値の変化を予測する。例えば、予め固定値として設定されているオーバーヘッドの量を用いて、プール性能を予測することができる。あるいは、ストレージ30の入出力処理プログラム3141に、オーバーヘッド量を測定させる機能を設け、それにより測定された値に基づいてプール性能を予測する構成でもよい。
【0203】
他ストレージ内の未使用ボリュームをプールに追加しても、そのプールの性能が維持されると判断された場合(S8507:YES)、選択された未使用ボリュームを用いてプールサイズを拡張する(S8509)。本処理は、対策完として終了する。プールの性能が許容値以上低下すると予測された場合(S8507:NO)、S8508に移る。
【0204】
なお、図12のフローチャートでは、一つの未使用ボリュームをプールに追加するだけでプールの容量不足に対処する場合を説明した。これに代えて、複数の未使用ボリュームをプールに追加して、プールの容量不足に対処する構成でも良い。
【0205】
その場合、例えばS8505のサイズチェックでは、ボリュームサイズが所定サイズ(所定のサイズ範囲)を超える場合を除いて、目的に合うものと判定する。さらに、S8506及びS8507のそれぞれのチェックに合格する未使用ボリュームのリストを作成し、そのリストから、未使用ボリュームの合計サイズが必要なサイズ範囲になる複数の未使用ボリュームを抽出する。抽出された複数の未使用ボリュームをプールに追加することにより、プールサイズを拡張することもできる。
【0206】
なお、所定サイズに達しない未使用ボリュームを用いて、プールサイズを拡張する構成としても良い。その場合、複数の対処法を実施することになる。目標の容量使用率を実現するための未使用ボリュームが得られない場合でも、未使用ボリュームをプールに一つも追加しない場合に比べると、プールの容量使用率を下げることができる。従って、不十分なサイズの未使用ボリュームであっても、その未使用ボリュームをプールに追加することで、プールの容量が枯渇するリスクを軽減できる。
【0207】
図12のフローチャートでは、他ストレージ内の未使用ボリュームを用いて、自ストレージのプールサイズ拡張について述べている。これに代えて、他プールに割り当てられている、使用済みの論理ボリュームを、自ストレージのプールのサイズ拡張用に流用する構成でもよい。
【0208】
そのために、図13で述べたS8600の処理を、S8504で「NO」と判定された後に実施すればよい。
【0209】
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【符号の説明】
【0210】
10:管理端末、20:管理計算機、30:ストレージ、40:ホスト計算機
【技術分野】
【0001】
本発明は、計算機システム及び計算機システムの管理方法に関する。
【背景技術】
【0002】
大型のストレージはストレージサブシステムとも呼ばれ、高速かつ大容量なデータ保管を可能とするだけでなく、高度なデータ管理機能を有する。ストレージ内にはハードディスクドライブなどの物理的な記憶装置が複数搭載される。それら記憶装置内の記憶領域を用いて、論理的な記憶領域である論理ボリュームが構成される。ストレージ装置は、論理ボリュームをホスト計算機に提供する。ホスト計算機は、論理ボリュームに対して、データを読み書きする。
【0003】
近年、論理ボリュームの容量効率を向上させるシンプロビジョニング技術が提案されている。シンプロビジョニング技術は、従来の論理ボリュームに代わる仮想的な論理ボリューム(以下、仮想ボリューム)をホストに提供する。
【0004】
従来の論理ボリュームは、ボリューム作成時に指定されたサイズの、物理的な記憶領域(実記憶領域)を必要とする。これに対し、仮想ボリュームは、実際にデータの書き込みが発生した時点で、そのデータを記憶するための実記憶領域をプールから取り出して、仮想ボリュームに割り当てるようになっている。シンプロビジョニング技術を用いると、実際にデータの書き込みが発生するまでの間は、仮想ボリュームに実記憶領域を割り当てる必要がないため、実記憶領域を節約することができる。
【0005】
しかし、仮想ボリュームへのデータ書き込み状況によっては、仮想ボリュームに書き込まれるデータの量が、仮想ボリュームに割り当て可能な実記憶領域のサイズを超えてしまう場合が考えられる。仮想ボリュームに割り当てるべき実記憶領域が不足すると、エラーが発生しうる。
【0006】
そのため、シンプロビジョニング技術を用いる場合は、仮想ボリュームに割り当て可能な実記憶領域の量(実使用量)を正確に管理することが好ましい。
【0007】
第1の従来技術では、プールに容量不足が発生した場合、使用可能なボリュームをプールに追加して、プールのサイズを拡張する(特許文献1)。第2の従来技術では、プールを利用している仮想ボリュームを他のプールに移行させることにより、移行元のプールの容量不足を解消する(特許文献2)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2007−193573号公報
【特許文献1】特開2010−86424号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
プールのサイズが不足した場合の対処法として、前記の二通りの方法が知られている。しかし、計算機システムの構成は複雑であり、かつ、状況は変化するため、計算機システムの管理者であるユーザは、どの対処法を選択すべきなのか判断に迷う。
【0010】
複数の異種ストレージが混在するヘテロジニアスな計算機システムでは、考慮すべき要素が多くなるため、適切な対処法の選択がより難しい。特に、経験が少なく、知識の乏しいユーザの場合は、頼るべき基準を持たないため、対象法の選択は一層困難となる。
【0011】
そこで、本発明の目的は、複数の方法の中から所定の選択基準に基づいて少なくとも一つの方法を選択して実行することにより、管理者の負担を軽減し、プールサイズを拡張できるようにした 計算機システム及び計算機システムの管理方法を提供することにある。
【課題を解決するための手段】
【0012】
上記課題を解決すべく、本発明に従う計算機システムは、少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機と、各記憶制御装置とホスト計算機とを管理するための少なくとも一つの管理計算機とを含む計算機システムであって、各記憶制御装置は、ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を仮想的な論理ボリュームに割り当て、ホスト計算機から受信するライトデータを、割り当てられた実記憶領域に記憶させるようになっており、管理計算機は、マイクロプロセッサと、マイクロプロセッサにより読み込まれて実行される所定のコンピュータプログラムを記憶するメモリと、各記憶制御装置及びホスト計算機と通信するための通信インターフェース部とを備えており、マイクロプロセッサは、所定のコンピュータプログラムを読み込んで実行することにより、各プールの使用状態を取得し、取得された各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、所定プールが検出された場合は、(A)所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)仮想的な論理ボリュームのデータを所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、選択された方法に従って、所定プールのプールサイズを拡張させる。
【0013】
マイクロプロセッサは、ボリューム追加方法とデータ移動方法のいずれかを選択する場合に、仮想的な論理ボリュームを使用するアプリケーションプログラムの稼働状況を考慮して、所定時間内に所定プールのプールサイズの拡張が完了するか否かを判定することもできる。
【0014】
ボリューム追加方法は、各記憶制御装置のうち所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを所定プールに追加させる、第1のボリューム追加方法を含ませてもよい。
【0015】
マイクロプロセッサは、第1のボリューム追加方法を実行する場合、所定の選択基準として、第1の実ボリュームのボリュームサイズと、所定プールに予め設定されている属性ラベルと第1の実ボリュームに予め設定されている属性ラベルとの適合状態と、所定プールに第1の実ボリュームを追加した場合の所定プールの応答性能とを考慮してもよい。
【0016】
ボリューム追加方法には、各記憶制御装置のうち所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを所定の記憶制御装置に接続することにより、第2の未使用の実ボリュームを所定プールに追加させる、第2のボリューム追加方法を含めてもよい。
【0017】
ボリューム追加方法には、各記憶制御装置のうち所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして所定プールに追加させる、第3のボリューム追加方法を含めてもよい。
【0018】
ボリューム追加方法には、所定の記憶制御装置以外の他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして所定プールに追加させる、第4のボリューム追加方法を含めてもよい。
【0019】
データ移動方法には、ホスト計算機が仮想的な論理ボリュームのデータを所定のプール以外の他のプールに移動させる、第1のデータ移動方法を含めてもよい。
【0020】
データ移動方法には、所定の記憶制御装置が仮想的な論理ボリュームのデータを所定のプール以外の他のプールに移動させる、第2データ移動方法を含めてもよい。
【0021】
本発明は、コンピュータプログラムまたはコンピュータプログラムを記録する記録媒体として把握することもできる。さらに、本発明は、上述した各観点の組合せに限らず、それら以外の組合せを含むことができる。
【図面の簡単な説明】
【0022】
【図1】図1は、本実施例に係る計算機システムの全体構成図。
【図2】図2は、プールサイズの拡張方法を模式的に示す図。
【図3】図3は、ホストが使用する仮想ボリュームの情報を示す図。
【図4】図4は、ストレージの情報を示す図。
【図5】図5は、プールの情報を示す図。
【図6】図6は、未使用ボリュームの情報を示す図。
【図7】図7は、管理ポリシーの情報を示す図。
【図8】図8は、プールの使用率を監視する処理のフローチャート。
【図9】図9は、プールサイズを拡張する処理のフローチャート。
【図10】図10は、自ストレージ内でプールサイズを拡張する処理を示すフローチャート。
【図11】図11は、仮想ボリュームを移動させる処理のフローチャート。
【図12】図12は、他ストレージを用いてプールサイズを拡張する処理を示すフローチャート。
【図13】図13は、他のプールで使用されているボリュームを流用して、プールサイズを拡張する処理を示すフローチャート。
【図14】図14は、仮想ボリュームにプール内の実記憶領域を割り当てる様子と、ホスト計算機が仮想ボリュームを移動させた場合に得られる効果とを示す模式図。
【発明を実施するための形態】
【0023】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態では、後述のように、プールのサイズが不足した場合に、その容量不足を解消するための対処法を選択する方法を提示する。
【0024】
対処法は、例えば、以下の観点に基づいて選択してもよい。
【0025】
(観点1)異種のホスト計算機及び異種のストレージが混在する環境を考慮
計算機システムに含まれる各ホスト計算機及び各ストレージが有する、対処機能(例えば、プールを拡張する機能、および、仮想ボリュームを移動させる機能)は、同一であるとは限らない。従って、対処機能の有無と前提条件とを管理計算機が把握した上で、対処法を選択する。
【0026】
(観点2)対処の緊急性と対処に要する時間とに関する考慮
所要時間の長い対処法を選択して実施した場合に起こり得るリスクを低減する。リスクとは、プールサイズの拡張が間に合わず、プールサイズが枯渇することである。例えば、アプリケーションプログラムの稼働していない期間中に、仮想ボリュームを他のプールに移動させる、という対処法を選択する場合には、注意が必要であろう。仮想ボリュームの移動が完了する前にアプリケーションプログラムが稼働を開始した場合、プールサイズが枯渇する可能性があるかも知れない。一方、所要時間が短ければ短いほど良い対処法である、とは必ずしも言えない。必要以上に所要時間の短い対処法を選択すると、対処法を選択する自由度が低下し、使い勝手に影響を与えるかも知れない。
【0027】
(観点3)プール使用率の適正化に関する考慮
ある対策を実施しても、プールの使用率が高いままでは、容量不足は解消しない。つまり、プールの使用率低下に有効な対処法を実施する必要がある。しかし、プール使用率を必要以上に低下させる運用は、記憶サイズの浪費を招くであろう。
【0028】
(観点4)ボリュームおよびプールの属性に関する考慮
仮想ボリューム、実ボリューム(論理ボリューム)、プールには、それぞれの構成または目的等に応じた属性(例えば、性能、価格、所属部門等)を有する。それらの属性を無視して、仮想ボリュームを他のプールに移動させたり、プールに実ボリュームを自由に追加したりすると、使い勝手等が低下するかも知れない。例えば、高速応答を要求される仮想ボリュームを応答性能の低いプールに移動させたり、高い信頼性を要求される仮想ボリュームを信頼性の低いプールに移動させるような場合である。さらに、例えば、高速な論理ボリュームから構成されるプールに低速な論理ボリュームを追加すると、そのプールの応答性能が低下する。そこで、仮想ボリューム、論理ボリューム及びプールに、属性ラベル(後述の実施例では「区分」と呼ぶ)を設定し、属性ラベルが適合するように、対処法を選択する。
【0029】
(観点5)対処法の実行前後の性能変化に関する考慮
対処法を実行すると、仮想ボリュームの性能、または、プールの性能が変化する。対処法の実行前後で、仮想ボリュームの性能またはプールの性能が許容範囲以下に低下しないように、対処法の選択時に考慮する。
【実施例1】
【0030】
以下、図面に従い、発明を実施するための形態について述べる。図1は、本実施例に係る計算機システムの全体構成図である。計算機システムは、例えば、少なくとも一つの管理端末10と、少なくとも一つの管理計算機20と、複数のストレージ30と、少なくとも一つのホスト計算機40と、管理用ネットワーク51と、ストレージネットワーク52とを含む。
【0031】
管理端末10と、管理計算機20と、各ストレージ30及びホスト計算機40は、管理用ネットワーク51によって双方向通信可能に結ばれている。さらに、管理計算機20と、各ストレージ30及びホスト計算機40は、ストレージネットワーク52によって双方向通信可能に接続されている。
【0032】
管理用ネットワーク51及びストレージネットワーク52は通信回線であり、各情報処理装置間でデータを送受信するための通信経路である。なお、図1では、管理用ネットワーク51とストレージネットワーク52を別の通信回線として示すが、両方のネットワーク51,52を共通の通信回線として構成してもよい。
【0033】
管理端末10は、情報処理装置であり、例えば、メモリ11と、マイクロプロセッサ(図中、CPU)12と、ディスプレイ装置13と、キーボード14と、マウス15と、ホストインターフェース(以下、インターフェースをI/Fと表示)16とを備える。
【0034】
メモリ11は、データ及びコンピュータプログラムを記憶する。マイクロプロセッサ(以下、プロセッサ)12は、メモリ11からコンピュータプログラムを読み込んで実行する。ディスプレイ装置13は、データ等を表示する。キーボード14は、ユーザからの文字による入力を受け付ける。マウス15は、ディスプレイ装置に表示された画面上の任意の地点を指し示すために使用される。ホストI/F16は、管理用ネットワーク51を介して、管理計算機20とデータを送受信する。なお、ユーザインターフェースとしては、ディスプレイ装置、キーボード、マウスに限らず、例えば、音声による指示装置、脳波による指示装置等を用いることもできる。
【0035】
メモリ11には、コンソールプログラム111が格納されている。プロセッサ12がコンソールプログラム111を実行することにより、ホストI/F16及び管理用ネットワーク51を介して管理計算機20とデータを交換する機能と、ディスプレイ装置13に情報を表示させる機能と、キーボード14及びマウス15を介してユーザからの入力を受け付ける機能とが実現される。
【0036】
管理端末10は、ストレージの運用及び管理に携わるユーザ(ストレージ管理者)が、ストレージ30を運用したり、管理したりするための窓口として用いられる。
【0037】
管理計算機20は、情報処理装置であり、例えば、メモリ21と、プロセッサ22と、SAN I/F23と、ホストI/F24とを備える。
【0038】
メモリ21は、データやコンピュータプログラムを記憶する。プロセッサ22は、メモリ21からコンピュータプログラムを読み込み、実行する。これにより、後述する各機能が実現される。SAN I/F23は、ストレージネットワーク52を経由して各ストレージ30に操作指示または情報照会等を行なうための回路である。ホストI/F24は、管理用ネットワーク51を介して、他の情報処理装置10,30,40とデータ通信するための回路である。
【0039】
管理サーバプログラム211は、各ストレージ30を管理するためのコンピュータプログラムであり、メモリ21に格納されている。ホスト−ボリューム情報212は、ホスト計算機40上で使用される仮想ボリュームの構成及び利用状況等を管理するための情報である。ストレージ情報213は、各ストレージ30が搭載している機能を管理するための情報である。プール情報214は、各プールの構成及び使用状況等を管理するための情報である。未使用ボリューム情報215は、各ストレージ30内の未使用ボリュームに関する情報である。管理ポリシー情報216は、管理サーバプログラム211の動作を定義する情報である。
【0040】
ホスト−ボリューム情報212、ストレージ情報213、プール情報214、未使用ボリューム情報215及び管理ポリシー情報216は、メモリ21に格納される。それら情報212,213,214,215,216の詳細については後述する。
【0041】
なお、図1には、管理計算機20とホスト計算機40とを別々に構成する場合を示しているが、これに代えて、ホスト計算機40に管理計算機の機能を実現させてもよい。例えば、複数のホスト計算機40のうち少なくとも一つのホスト計算機40に、管理計算機20の有するコンピュータプログラム211及び各種管理情報212−216を設ける構成としてもよい。
【0042】
「記憶制御装置」としての各ストレージ30は、情報を記憶するための装置である。各ストレージ30は、例えば、ストレージコントローラ31と、ディスクユニット32とを備える。
【0043】
ストレージコントローラ31は、ホストI/F311と、SAN I/F312と、マイクロプロセッサ313と、メモリ314と、ディスクコントローラ315を備える。ホスト I/F311は、管理用ネットワーク51に接続するための回路である。SAN I/F312は、ストレージネットワーク52に接続するための回路である。
【0044】
メモリ314には、例えば、入出力処理プログラム(図中、I/Oプログラム)3141と、ボリューム移行プログラム(図中、マイグレーションプログラム)3142と、シンプロビジョニングプログラム3143とが記憶される。マイクロプロセッサ313は、それらコンピュータプログラム3141,3142,3143を読み込んで実行する。ディスクコントローラ315は、ディスクドライブ321に対するデータの読み書きを制御する。
【0045】
ディスクユニット32は、複数のディスクドライブ321を備える。各ディスクドライブ321がそれぞれ有する物理的記憶領域をグループ化し、そのグループ化された物理的記憶領域に複数の論理的記憶領域を設定することができる。その論理的な記憶領域を論理ボリューム322と呼ぶ。
【0046】
ディスクドライブとしては、例えば、ハードディスクドライブ、半導体メモリドライブ、光ディスクドライブ、光磁気ディスクドライブ等のデータを読み書き可能な種々のデバイスを利用可能である。
【0047】
ハードディスクドライブを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を用いることができる。また、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(MagnetoresistiveRandom Access
Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々の記憶装置を用いることもできる。
【0048】
入出力処理プログラム3141は、管理計算機20からの要求に応じて論理ボリュームを定義する。さらに、入出力処理プログラム3141は、ホスト計算機40からの求めに応じて、論理ボリューム及び仮想ボリュームに対してデータを読み書きする。
【0049】
ボリューム移行プログラム3142は、管理計算機20からの指示に応じて、仮想ボリュームを他のプールに移行させる。仮想ボリュームとプールに関する説明は、図2で後述する。
【0050】
シンプロビジョニングプログラム3143は、例えば、プールの構成管理、プールの稼動管理、仮想ボリュームの構成管理、仮想ボリュームの稼動管理、データ読み書き機能等を提供する。
【0051】
ホスト計算機40は、情報処理装置であり、例えば、SAN I/F41と、ホストI/F42と、プロセッサ43と、メモリ40を備える。
【0052】
SAN I/F41は、ストレージネットワーク52を経由して、各ストレージ30とデータ通信するための回路である。ホストI/F42は、管理用ネットワーク51を介して、管理計算機20とデータ通信するための回路である。
【0053】
メモリ44には、例えば、管理エージェントプログラム441と、マイグレーションプログラム(ボリューム移行プログラムとも呼ぶ)442と、アプリケーションプログラム443と、OS(オペレーティングシステム)444とが記憶されている。プロセッサ43は、各コンピュータプログラム441,442,443を読み込んで実行する。
【0054】
管理エージェントプログラム441は、管理サーバプログラム211からの指示に基づいて、ボリューム移行プログラム442を実行させる。
【0055】
ボリューム移行プログラム442は、論理ボリュームまたは仮想ボリュームのデータを、他の論理ボリュームまたは他の仮想ボリュームに移すプログラムである。
【0056】
アプリケーションプログラム443は、ホスト計算機40で業務処理を実行するためのプログラムである。
【0057】
OS444は、管理エージェントプログラム441及びアプリケーションプログラム443の実行基盤となる基本ソフトウェアである。
【0058】
図2は、シンプロビジョニング技術を用いた情報処理システムの論理的な構成、及び、プール容量不足時の対処法を示す概念図である。
【0059】
まず最初に、シンプロビジョニング技術におけるプールと仮想ボリュームとについて説明する。ストレージ30(1)は「DKC−A」という識別名で特定されるストレージである。ストレージ30(1)の内部には、「POOL−A」という識別名で特定されるプール611が含まれる。
【0060】
プール611は、複数の論理ボリューム621,622,623を含む。プール611には、「VVOL−A」という識別名で特定される仮想ボリューム631と、「VVOL−B」という識別名で特定される仮想ボリューム632とが所属している。
【0061】
仮想ボリューム631は、ホスト計算機40(1)上において、「VOL−A」という識別名で特定されるボリューム651となっている。ボリューム651は、「AP−A」という識別名で特定されるアプリケーションプログラム443(1)から利用される。このような構成において、アプリケーションプログラム443(1)がボリューム651にデータを書き込むと、以下の処理が行われる。
【0062】
ボリューム651に対する書き込み要求を受けたOS444は、ストレージ30(1)に、ボリューム651に対応する仮想ボリューム631への書き込み要求を発行する。その書き込み要求を受けたストレージ30(1)内の入出力処理プログラム3141は、シンプロビジョニングプログラム3143に、書き込み要求があった旨を通知する。シンプロビジョニングプログラム3143は、その通知を受けると、仮想ボリューム631の全記憶領域のうち書き込み対象の記憶領域(仮想ページ)に、プール611内の記憶領域(実ページまたはチャンク)を割り当て済みか否かを判定する。
【0063】
シンプロビジョニングプログラム3143は、書き込み対象の仮想ページに実ページが未割り当てであると判定した場合、プール611を構成する各論理ボリュームの有する実記憶領域の中から実ページを選択して、書き込み対象の仮想ページに割り当てる。
、仮想ページに割り当てられた実ページには、アプリケーションプログラム443(1)からのデータが書き込まれる。書き込み対象の仮想ページに実ページが既に割り当てられている場合、その割り当て済みの実ページに、アプリケーションプログラム443(1)から書き込まれるデータを保存する。
【0064】
以上の処理は、プール611を共有する仮想ボリューム632と、それを利用するボリューム652、さらには、アプリケーションプログラム443(2)についても同様に行われる。仮想ボリューム631に割り当てられた実ページの総数と仮想ボリューム632に割り当てられてた実ページの総数との合計に対応する量の記憶領域(実記憶領域)が、プール611から使用されることになる。
【0065】
次に、プールサイズが不足した場合の対処法について述べる。例えば、ストレージ30(2)内のプール612が容量不足になった場合の対処法としては、以下に述べる五つを挙げることができる。
【0066】
第一の対処法は、同一ストレージ30(2)内の未使用ボリューム642を使用してプール612を拡張をすることである(図2の矢印691)。ストレージ30(2)内に未使用ボリューム642が存在する場合、そのボリューム642をプール612に追加することにより、プール612のサイズを拡張することができる。
【0067】
第二の対処法は、他のストレージ30(4)内の未使用ボリューム643を使用してプール612を拡張することである(図2の矢印692)。第二の対処法が利用できる条件は、他のストレージ30(4)に未使用ボリューム643が存在すること、及び、他のストレージ30(4)内のボリュームにストレージ30(2)がアクセスする機能を有することである。
【0068】
一方のストレージ30(2)が他方のストレージ30(4)内のボリューム643にアクセスする機能を、外部接続機能と呼ぶことができる。一方のストレージ30(2)から見ると、他方のストレージ30(4)は一方のストレージ30(2)の外部に存在する外部ストレージである。他方のストレージ30(4)内のボリューム643は、一方のストレージ30(1)の外部に存在する外部ボリュームである。一方のストレージ30(1)内に外部ボリューム643と接続するための仮想的なボリューム625を設ける。その接続用のボリューム625は、外部接続ボリュームと呼ぶことができる。外部接続ボリューム625をプール612に追加して、プール612のサイズを拡張できる。
【0069】
外部ボリューム643と外部接続ボリューム625とを接続する場合は、外部ボリューム643と外部接続ボリューム625との接続関係を定義する接続テーブルを設ける。接続テーブルとは、簡単に言えば、外部接続ボリューム625の記憶空間と外部ボリューム643の記憶空間との対応関係を示すマッピングテーブルである。
【0070】
一方のストレージ30(2)は、ホスト計算機からコマンドを受信すると、マッピングテーブルを用いて、そのコマンドを他方のストレージ30(4)に送信するためのコマンドに変換する。一方のストレージ30(2)は、変換されたコマンドを他方のストレージ30(4)に送信する。一方のストレージ30(2)は、他方のストレージ30(4)からの応答に基づいて、ホスト計算機に応答する。
【0071】
第三の対処法は、他のストレージ30(4)内のプール614を構成する論理ボリューム627を流用してプール612拡張することである(図2の矢印693)。第三の対処法が利用できる条件は、第二の対処法の条件に加え、他ストレージ30(4)内のプール614から論理ボリューム627を取り外すことが可能であることである。
【0072】
第四の対処法は、ストレージ30(2)の機能を利用して他のストレージ30(3)内のプール613に仮想ボリューム634を移行させることである(図2の矢印694)。第四の対処法が利用できる条件は、ストレージ30(2)が他ストレージ30(3)に仮想ボリューム634を移行させる機能を有すること、及び、仮想ボリューム634を収容するだけの容量的な余裕が移行先プール613にあることである。仮想ボリューム634を他のプール613に移行させるとは、仮想ボリューム634を他のプール613の記憶領域に対応付けるという意味である。
【0073】
なお、仮想ボリューム634を他のプール693に移行させる機能を実行するにあたって、アプリケーションプログラム443(3)が稼働していないこと(非稼働中)が前提条件となる場合がある。その場合は、第四の対処法を利用する条件に、その前提条件も含まれる。
【0074】
第五の対処法は、ホスト計算機40(2)の機能を利用して他のストレージ30(1)内のプール611に仮想ボリュームを移行させることである(図2の矢印695)。第五の対処法が利用できる条件は、ホスト計算機40(2)がストレージ30(2)から他ストレージ30(3)に、仮想ボリューム633(移行後の仮想ボリューム632)を移行させる機能を有すること、及び、仮想ボリューム633を収容するだけの容量的な余裕が移行先プール611にあることである。
【0075】
なお、第四の対処法と同様に、仮想ボリューム633を他のプール611に移行させる機能の実行に際して、アプリケーションプログラム443(2)の停止(非稼動)を前提条件とする場合は、その前提条件も満たす必要がある。
【0076】
なお、ストレージ30(2)内に複数のプールが存在する場合、ストレージ30(2)内の一方のプールからストレージ30(2)内の他のプールに、仮想ボリュームを移行させることもできる。さらに、ストレージ30(2)内の他のプールを構成する論理ボリュームを取り外して、一方のプールに追加することもできる。
【0077】
次に、管理サーバプログラム211により使用される各種情報と、管理サーバプログラム211により実行される処理について説明する。以下、選択された対処法を管理サーバプログラム211が自動的に実行する場合を説明する。これに代えて、管理サーバプログラム211は、選択された対処法をユーザに提示するに止める構成でもよい。ユーザが、提示された対処法を承認した場合、その対処法が実行される。
【0078】
図3は、管理サーバプログラム211により使用されるホスト−ボリューム情報212のデータ構造及びデータ例を示す。ホスト−ボリューム情報212は、仮想ボリューム単位に情報を保持する。その属性情報は、仮想ボリューム番号(図中、VVOL#)2121、アプリケーションプログラム番号(図中、AP#)2122、所属プール番号(図中、POOL番号)2123、使用サイズ2124、アプリケーションプログラム稼動期間2125、ボリューム移行機能(図中、マイグレーション機能)2126、及び、コスト区分2127である。
【0079】
以下の説明において、名前、識別子、識別情報、番号は、それぞれ対象物を他の対象物と区別するために使用される情報であり、相互に変換可能である。例えば、仮想ボリューム番号は仮想ボリューム識別子または仮想ボリューム名と呼び変えることができる。さらに、各テーブルの構成は図示の例に限られない。例えば、複数のテーブルをリンクさせることにより、本実施例で必要な情報を管理することもできる。
【0080】
次に、ホスト−ボリューム情報212の各属性を説明する。仮想ボリューム番号2121は、仮想ボリュームの識別名を保持する。アプリケーションプログラム番号2122は、仮想ボリュームを使用するアプリケーションプログラム443の識別名を保持する。所属プール番号2123は、仮想ボリュームが所属するプールの識別名を保持する。使用サイズ2124は、仮想ボリュームの全ボリュームサイズのうち実際に使用されているサイズ、言い換えるとプール内のページが割り当てられているサイズを保持する。
【0081】
アプリケーションプログラム稼動期間2125は、仮想ボリュームを使用するアプリケーションプログラム443の稼動期間を保持する。ボリューム移行機能2126は、仮想ボリュームを使用するホスト計算機40上でボリューム移行が可能か否かを示す。可能な場合は、アプリケーションプログラム443の稼動中に移行できるか否かも示す。図3の例で「I/O無停止」となっているのは、アプリケーションプログラム443の稼動中に、仮想ボリュームの移行が可能なことを示している。
【0082】
コスト区分2127は、仮想ボリュームの所属するプールのコスト区分を示す。コスト区分は識別名である。コスト区分は、プールを構成する各論理ボリュームのグレードまたは所属先の部門を区別するために設定される。
【0083】
グレードは、例えば、論理ボリュームの価格帯などによって分けられる。例えば「A」は高価格帯のボリュームを示し、「B」は中価格帯のボリュームを示し、「C」は低価格帯のボリュームを示す。コスト区分「A」の設定されているプールは、高価格帯のボリュームのみから構成される。コスト区分「A,B」の設定されているプールは、高価格帯ボリュームまたは/及び中価格帯ボリュームから構成される。高価格帯ボリュームを高信頼性ボリュームと、中価格帯ボリュームを中信頼性ボリュームと、低価格帯ボリュームを低信頼性ボリュームと、呼び変えることもできる。高信頼性ボリュームは、高信頼性のディスクドライブから構成される。中信頼性ボリュームは、中信頼性のディスクドライブから構成される。低信頼性ボリュームは、低信頼性のディスクドライブから構成される。
【0084】
所属先の部門は、プールを構成する各論理ボリュームを部門別に割り当てる場合に使用される。部門Aには「A」、部門Bには「B」、部門Cには「C」と設定される。コスト区分は、仮想ボリューム及びプールの、性質または位置付けが変化するのを防止するために使用される。
【0085】
コスト区分が適合しているか否かを判定することにより、例えば、高価格帯の各論理ボリュームから構成されるプールに対応付けられるべき重要な仮想ボリュームが、低価格帯の各論理ボリュームから構成されるプールに移行されてしまうのを防止できる。または、部門Aで使用される仮想ボリュームが、部門Bの論理ボリュームで構成されているプールに移行されたりするのを防止できる。
【0086】
コスト区分2144は、上述のように複数の区分を含んでも良い。複数区分が設定されている場合は、どちらも適用可能であることを示す。なお、ホスト−ボリューム情報212は、ストレージ30内のシンプロビジョニングプログラム3143と、ホスト計算機40上のアプリケーションプログラム443と、ボリューム移行プログラム442等から取得できる情報、及び、管理者からの入力される情報に基づいて作成できる。
【0087】
図4は、管理サーバプログラム211により使用されるストレージ情報213のデータ構造及びデータ例を示す。ストレージ情報213は、ストレージ30単位に情報を保持する。その属性情報は、ストレージ番号(図中、ストレージ#)2131、ボリューム移行機能(図中、マイグレーション機能)2132、他ストレージ内のボリュームへのアクセス機能(図中、外部接続機能)2133である。
【0088】
ストレージ番号2131は、ストレージ30の識別名を保持する。ボリューム移行機能2132は、ストレージ30がボリューム移行機能を持つか否かを保持する。移行機能を持つ場合は、アプリケーションプログラム443が停止中の場合のみ移行可能か否かも併せて示す。例えば、図4の例で「I/O停止」とあるのは、アプリケーションプログラム443が停止されており、I/O要求が発生しない場合のみ、ボリュームを移行可能であることを示している。なお、ストレージ情報213は、ストレージ30内の入出力プログラム3141及びボリューム移行プログラム3142などから取得できる情報等に基づいて作成することができる。
【0089】
図5は、管理サーバプログラム211により使用されるプール情報214のデータ構造及びデータ例を示す。プール情報214は、プール単位に情報を保持する。その属性情報は、プール番号(図中、プール#)2141、プールサイズ2142、使用率2143、コスト区分2144である。
【0090】
プール番号2141は、プールの識別名を保持する。プールサイズ2142は、プールの総サイズ、即ち、仮想ボリュームに割当可能な実ページの総サイズを保持する。使用率2143は、プールサイズ2142に占める、仮想ボリュームに割当済みのページサイズの割合を示す。全プールサイズを仮想ボリュームに割り当てた場合、使用率は100%となる。
【0091】
コスト区分2144は、ホスト−ボリューム情報212におけるコスト区分2127と同じ目的で付与されている。コスト区分2144は、プールを構成する論理ボリュームを区別するための識別名である。なお、プール情報214は、ストレージ30内のシンプロビジョニングプログラム3143、及び、管理者から直接入力される情報等に基づいて作成すればよい。
【0092】
図6は、管理サーバプログラム211により使用される未使用ボリューム情報215のデータ構造及びデータ列を示す。未使用ボリューム情報215は、未使用のボリューム単位に情報を保持する。その属性情報は、未使用ボリューム番号2151、ストレージ番号2152、サイズ2153、コスト区分2154である。
【0093】
未使用ボリューム番号2151は、未使用ボリュームの識別名を保持する。ストレージ番号2152は、未使用ボリュームが存在するストレージの識別名を保持する。サイズ2153は、未使用ボリュームの記憶サイズを保持する。コスト区分2154は、未使用ボリュームのコスト区分を示す識別名を保持する。コスト区分2154は、複数の識別名を保持しても良い。なお、未使用ボリューム情報215は、ストレージ30内のシンプロビジョニングプログラム3143と、ディスクコントローラ315から取得できる情報及び管理者から直接入力される情報等に基づいて作成すればよい。
【0094】
図7は、管理サーバプログラム211により使用される管理ポリシー情報216のデータ構造及びデータ列を示す。管理ポリシー情報216は、管理ポリシー単位に情報を保持する。管理ポリシーとは、管理サーバプログラム211が各種管理操作を実行する上での指針を示す情報である。管理ポリシーは、例えば、プールサイズが不足した場合の対応方針を示す。
【0095】
管理ポリシー情報216の属性は、ポリシー番号2161、適用対象2162、起動条件2163、アクション2164、成功条件2165である。ポリシー番号2161は、ポリシーの識別名を保持する。適用対象2162は、ポリシーの適用対象を保持する。図7の例で「全プール」となっている場合、全てのプールに同じポリシーを適用することを示している。適用対象として特定のプールの識別名が指定されている場合、ポリシーは、その特定されたプールのみに適用される。
【0096】
起動条件2163は、特定のアクションを実行するきっかけとなる条件を保持する。図7の例では、起動条件を、プール使用率に関する条件として規定している。アクション2164は、アクションの種別を保持する。アクションの種別としては、「プールサイズ拡張」、「警告」等を挙げることができる。「プールサイズ拡張」は、例えば、プールサイズが不足した場合にプールサイズを拡張させることを意味する。「警告」とは、例えば、プールサイズが不足しそうな場合に、ユーザに警告を発することを意味する。
【0097】
成功条件2165は、アクションの目的となる条件を保持する。図示の例では、プールの使用率を特定の範囲に収めることを、アクションの成功条件(目的)としている。なお、管理ポリシー情報216は、管理サーバプログラム211のベンダにより予め用意されている構成でもよいし、管理者が手動で作成できる構成でもよい。
【0098】
図8は、プールの容量使用率を監視するための処理を示すフローチャートである。以下、ステップをSと略記する。プールの容量使用率は、プールサイズの過不足を測る指標であり、その値が100%に近いほどサイズが不足していることを示す。容量使用率の監視では、予め監視用の閾値を設定しておき、各プールの容量使用率がその閾値を超えた場合に、何らかのアクションを実行する。具体的な手順を以下に示す。以下の説明では、動作の主体を管理計算機として説明する。マイクロプロセッサ22が管理サーバプログラム211を読み込んで実行することにより以下の機能が実現されるため、マイクロプロセッサ22または管理サーバプログラム211を動作の主体として説明することもできる。
【0099】
管理計算機20は、プール情報214を参照し、先頭のプールを選択する(S8101)。管理計算機20は、処理対象のプールを選択できたか否かを判定する(S8102)。もしも、選択するプールがなければ処理を終了する(S8102:NO)。選択するプールがあれば以下の処理を実行する。
【0100】
管理計算機20は、選択したプールの容量使用率を取得する(S8103)。管理計算機20は、S8103で取得した容量使用率が管理ポリシー情報216で規定された閾値を超えたか否かをチェックする(S8104)。換言すれば、取得した容量使用率が起動条件2163に合致するか否かを判定する。
【0101】
もしも、容量使用率が閾値を超えた場合(S8104:YES)、管理計算機20は、容量不足に対応すべく、プールサイズを拡張する処理を実施する(S8105)。プールサイズ拡張処理の詳細については、図9で後述する。
【0102】
処理対象プールの容量使用率が起動条件に一致しない場合(S8104:NO)、S8105をスキップする。
【0103】
管理計算機20は、プール情報214から次のプールを新たな処理対象プールとして選択し(S8106)、S8102に戻る。プール情報214に登録されている全てのプールについて処理を完了して、選択可能なプールが無くなると(S8102:NO)、本処理は正常に終了する。
【0104】
図9は、プールサイズの不足に対応するために、プールサイズを拡張させる処理のフローチャートである。図9のフローチャートは、図8のS8105で実行される。本処理では、プールサイズが不足した場合の各対処法の妥当性を順番に評価し、妥当と評価された対処法を実行する。以下に具体的な手順を説明する。以下、処理対象のストレージ30を自ストレージと呼び、処理対象ストレージ以外の他のストレージと区別する。
【0105】
最初に、管理計算機20は、容量不足が発生したストレージ(自ストレージ)内でプール拡張が可能か否かを判定し、それが可能ならば実行する(S8201)。自ストレージ内でプールサイズを拡張する処理の詳細については、図10で後述する。S8201の実行によって、プールの容量不足が解消した場合(S8202:YES)、本処理は終了する。
【0106】
S8201を実行してもプールの容量不足が解消しない場合(S8202:NO)、管理計算機20は、自ストレージを除く他ストレージの一覧(他ストレージ一覧)を、ストレージ情報213に基づいて作成する(S8203)。なお、他ストレージ一覧をストレージ情報213と別に作成するのではなく、ストレージ情報213から他ストレージの情報を取得する構成でもよい。その場合、S8204及びS8211で、自ストレージを選択しないようにする。
【0107】
管理計算機20は、他ストレージ一覧の先頭に記載される他ストレージを一つ選択する(S8204)。管理計算機20は、処理対象の他ストレージを選択できたか否かを判定する(S8205)。他ストレージを選択できなかった場合(S8205:NO)、管理計算機20は、プールの容量不足を解消するための方法が見つからない旨を示すアラートを発行して(S8206)、本処理を終了する。
【0108】
処理対象の他ストレージを選択できた場合(S8205:YES)、管理計算機20は、仮想ボリュームの移行によるプールサイズの拡張という対処法の妥当性をチェックし、もしも妥当ならその対処法を実行する(S8207)。仮想ボリュームの移動によるプールサイズの拡張方法については、図11で後述する。S8207を処理した結果、プールの容量不足が解消した場合は、本処理を終了する(S8208:YES)。
【0109】
仮想ボリュームを移動させることができない場合、または、仮想ボリュームを移動させてもプールの容量不足が解消しない場合のいずれかの場合(S8208:NO)、管理計算機20は、他ストレージを用いたプールサイズの拡張という対処法の妥当性をチェックし、もしも妥当ならその対処法実行する(S8209)。S8209の詳細については、図12で後述する。
【0110】
他ストレージを用いたプールサイズの拡張方法を実行した結果、プールの容量不足が解消した場合には、本処理を終了する(S8210:YES)。他ストレージを用いても、プールの容量不足を解消できない場合(S8210:NO)、管理計算機20は、他ストレージ一覧から次の他ストレージを選択し(S8211)、S8205に戻る。
【0111】
図10は、自ストレージ内でプールサイズを拡張する処理を示すフローチャートであり、図9のS8201で実行される。以下の処理では、自ストレージ内の各未使用ボリュームについて、そのサイズ、そのコスト、その性能の各観点で、プールサイズの拡張用ボリュームとして適切か否かの妥当性を評価する。妥当と評価された未使用ボリュームは、サイズの不足しているプールに追加され、そのプールのサイズを拡張させる。
【0112】
最初に、管理計算機20は、自ストレージ内の未使用ボリュームの一覧(以下、拡張用の候補ボリューム一覧とも呼ぶ)を、未使用ボリューム情報215から作成する(S8301)。
【0113】
なお、候補ボリューム一覧を、未使用ボリューム情報215と別に作成するのではなく、未使用ボリューム情報215から候補ボリューム一覧を取得する構成でも良い。その場合、S8302及びS8307では、自ストレージ内の未使用ボリュームのみを選択するようにする。
【0114】
管理計算機20は、候補ボリューム一覧から最初の未使用ボリュームを選択する(S8302)。選択可能な未使用ボリュームが無い場合(S8303:NO)は、対策未完として本処理を終了する。なお、選択可能な未使用ボリュームが見つからない場合(S8303:NO)、図13で後述する処理(S8600)を実施してもよい。
【0115】
管理計算機20は、候補ボリューム一覧から未使用ボリュームを一つ選択できた場合(S8303:YES)、その未使用ボリュームのサイズが所定サイズであるか否かを判定する(S8304)。
【0116】
所定サイズとは、例えば、プールサイズの不足を解消するために必要なサイズである。具体的には、所定サイズとは、管理ポリシーの成功条件2165を満たすために必要なサイズを意味する。このように、未使用ボリュームのサイズが目的に合致するか否かは、管理ポリシー一覧216の内容に基づいて判断できる。
【0117】
例えば、容量使用率が75%のプールには、図7に示すように、起動条件2163が「プール使用率70〜84%」のポリシーが適用される。そのポリシーのアクションに関する成功条件2165の内容は「プールの使用率を40−60%の範囲に低減すること」と規定されている。ここで、「40%」という使用率の下限を設定する理由は、行き過ぎた対処を防ぐためである。現在のプールのサイズと容量使用率とから、目標とする容量使用率を得るために必要な追加サイズは次の(1)式によって求められる。
【0118】
(追加サイズ)=(1÷目標とする容量使用率)×現在の容量使用率×現在のプールサイズ−現在のプールサイズ・・・(1)
【0119】
もしも、選択された未使用プールのサイズが100TBの場合、容量使用率75%を40%にするために必要な追加サイズは、上記(1)式より、(1÷0.4)×0.75×100−100=87.5TBとなる。同様に、容量使用率75%を60%にするために必要な追加サイズは、(1÷0.6)×0.75×100−100=25TBとなる。
【0120】
従って、プールの容量使用率を現在の75%から、40%〜60%の範囲に収めるためには、25TB〜87.5TBの範囲の追加サイズが必要となる。選択された未使用ボリュームのサイズが上記の範囲内であれば、そのボリュームを使用したプール拡張が妥当であると判断できる。
【0121】
選択された未使用ボリュームのサイズが所定サイズに合致しない場合(S8304:NO)、管理計算機20は候補ボリューム一覧から次の未使用ボリュームを選択し(S8307)、S8303に移る。
【0122】
選択された未使用ボリュームのサイズが所定サイズに合致する場合(S8304:YES)、管理計算機20は、その未使用ボリュームのコスト区分の妥当性を評価する(S8305)。図中では、便宜上、「コスト区分」を「コスト」と簡略化して示す。
【0123】
管理計算機20は、具体的には、選択された未使用ボリュームに設定されているコスト区分の内容が(未使用ボリューム情報215のコスト区分2154の内容)が、割当先のプールに設定されているコスト区分の内容(プール情報214のコスト区分2144の内容)に含まれているか否かを判定する。
【0124】
例えば、図6に示すように、「UVOL−A」の識別名を有する未使用ボリュームには、コスト区分2154として「A」が設定されている。一方、図5に示すように、「POOL−B」の識別名を有するプールには、コスト区分2144として「A,B」が設定されている。この場合、未使用ボリュームのコスト区分「A」は、プールのコスト区分「A,B」に含まれているため、そのプール(POOL−B)のコスト区分と未使用ボリュームのコスト区分とは適合する。
【0125】
未使用プールのコスト区分とプールのコスト区分とが適合しないと判定された場合(S8305:NO)、管理計算機20は、S8307に移る。
【0126】
未使用ボリュームのコスト区分とプールのコスト区分とが適合する場合(S8305:YES)、管理計算機20は、プールサイズを拡張した後の性能を予測して評価する(8306)。管理計算機20は、選択された未使用ボリュームをプールに追加した場合、そのプールが所定値以上の性能を維持できるか否かを判定する。
【0127】
例えば、高速な論理ボリュームから構成されているプールに、低速な論理ボリュームを追加した場合、そのプールの平均応答性能は低下する。プールの応答性能が低下すると、そのプール内のページを使用する仮想ボリュームのI/O性能も低下する。
【0128】
仮想ボリュームの性能低下を防ぐためには、例えば、追加対象の未使用ボリュームを、現在使われている論理ボリュームの性能と同じかそれ以上の性能を有する論理ボリュームに限定すればよい。
【0129】
なお、未使用ボリュームをプールに追加することにより、そのプール内の各論理ボリュームに対するI/O処理の並列性が高まる。従って、低速の論理ボリュームを追加した場合でも、プールとしての平均性能は低下しないか、または、高まる可能性もある。S8306では、この点を考慮に加えても良い。
【0130】
さらに、S8306では、仮想ボリュームの性能低下の度合を推定し、その度合が許容範囲内の場合は、選択された未使用ボリュームをプールに追加する構成でもよい。
【0131】
ボリューム追加後に性能上の問題が生じないと予測される場合(S8306:YES)、管理計算機20は、選択された未使用ボリュームを用いてプールのサイズ拡張を実施させ(S8308)、本処理を終了する。
【0132】
選択された未使用ボリュームをプールに追加すると、そのプールが所定値以上の性能を維持できないと予測される場合(S8306:NO)、管理計算機20は、候補ボリューム一覧から次の未使用ボリュームを選択(S8307)し、S8303に戻る。
【0133】
なお、図10の処理では、一つの未使用ボリュームをプールに追加するだけで、そのプールの容量不足に対処できる場合を説明している。しかし、一つの未使用ボリュームを追加する構成に限らず、複数の未使用ボリュームをプールに追加してプールの容量不足を解消する構成でも良い。
【0134】
その場合、例えば、S8304のサイズチェックでは、未使用ボリュームのサイズが上限値をオーバーする場合を除いて、追加目的に合致すると判定する。そして、S8305及びS8306それぞれのチェックを通る、未使用ボリュームのリストを作成し、そのリストから、合計サイズが所定サイズとなる複数の未使用ボリュームを抽出して、それら複数の未使用ボリュームをプールに追加する構成でも良い。
【0135】
さらに、S8304で所定サイズに満たないと判定された一つの未使用ボリュームを、プールに追加する構成でもよい。その場合、図10に示す対処法以外に、複数の対処法(図11,図12)を併用することが前提となる。
【0136】
さらに、成功条件として定義されている目標使用率に達しない場合でも、未使用ボリュームを一つも追加しない場合よりは、プールの使用率を低下させることができる。従って、所定サイズに満たない未使用ボリュームであっても、プールに追加することにより、プールサイズが枯渇するリスクを軽減できる。
【0137】
さらに、自ストレージ内に複数のプールが存在する場合、容量不足となっている処理対象プール以外の他プール(自ストレージ内の他プール)で使用されている論理ボリュームを、処理対象プールに移すことで、容量不足に対処することも可能である。
【0138】
そのような対処法を図10ではS8600として示す。図13を参照して、自ストレージ内の他プールを利用する対処法を説明する。
【0139】
図10のフローチャートで対策未完として終了する前に、管理計算機20は、自ストレージ内に存在する一つまたは複数の他プールについて、それらの他プールを構成する各論理ボリュームの一覧を作成する(S8601)。
【0140】
管理計算機20は、他プールを構成するボリューム一覧の中から先頭のボリュームを選択する(S8602)。管理計算機20は、選択されたボリュームが、処理対象のプール(容量不足となっている自プール)に流用可能か否か判断する(S8603)。
【0141】
流用可能か否かを判断するための一つの基準として、例えば、その論理ボリュームを他プールから取り外した場合でも、他プールの容量使用率が予め定めた基準以下となることを挙げることができる。この基準は、論理ボリュームを流用したことによって、流用元のプールが容量不足になることを防ぐために設けられる。
【0142】
他プール内の論理ボリュームを流用可能な場合(S8603:YES)、管理計算機20は、図10で述べたと同様の各判定を行う。管理計算機20は、その論理ボリュームが所定サイズを有するか否かを判定する(S8604)。次に、管理計算機20は、その論理ボリュームのコスト区分と流用先のプール(自プール)のコスト区分とが適合するか否かを判定する(S8605)。次に、管理計算機20は、自プールが所定値以上の性能を有するか否か予測する(S8606)。
【0143】
さらに、管理計算機20は、他プールから論理ボリュームを取り外すと、他プールの性能が低下する可能性がある点と、論理ボリュームの取り外しに時間を要する点を考慮することができる(S8607)。
【0144】
他プールから論理ボリュームを一つ取り外すと、他プールを構成する論理ボリュームの数が少なくなるため、他プールにおけるI/O処理の並列性が低下する。従って、他プールの応答性能が低下する可能性がある。他プールから論理ボリュームを取り外す場合、その論理ボリュームに記憶されているデータを、他プール内の別の論理ボリュームにコピーして移動させる必要がある。従って、流用対象の論理ボリュームに記憶されているデータの量によっては、データコピー時間が長くなる可能性がある。この観点から、記憶されているデータ量の多い論理ボリュームは、流用できないボリュームであると判定する構成としてもよい。
【0145】
なお、流用可能な論理ボリュームが複数存在する場合は、例えば、流用元プールの容量使用率、論理ボリュームのサイズの少なさ、取り外しに要する時間の短さ、性能低下の少なさ、などの基準に従って、いずれか一つの論理ボリュームを選択すればよい。
【0146】
各判断ステップを満たさない場合、管理計算機20は、次のボリュームを選択して(S8608)、S8603に戻る。各判断ステップを全て満たす場合、管理計算機20は、他プール内の論理ボリュームを他プールから取り外して、容量不足状態の自プールに追加させる(S8609)。図11に戻る。
【0147】
図11は、仮想ボリュームの移動によりプールの容量不足を解消する処理を示すフローチャートであり、図9のS8207で実行される。本処理では、容量不足のプールを利用している各仮想ボリュームについて、移行手段の有無、ボリュームサイズ、コスト区分の適合可否、移行完了時間、移行後の性能の各点で、評価する。他ストレージの他プールへの移動が妥当であると判断された仮想ボリュームは、他ストレージ内の他プールに移動される。以下に具体的な手順を示す。
【0148】
最初に、管理計算機20は、容量不足のプールを利用している仮想ボリュームの一覧を作成する(S8401)。その仮想ボリュームの一覧は、移行候補となる仮想ボリュームの一覧を示すため、以下の説明では、移行候補仮想ボリューム一覧と呼ぶ。
【0149】
移行候補仮想ボリューム一覧は、仮想ボリューム情報212から作成すれば良い。または、移行候補仮想ボリューム一覧は、仮想ボリューム情報212と別に作成するのではなく、仮想ボリューム情報212から得ることもできる。その場合は、S8402及びS8409では、容量不足のプールに所属している仮想ボリュームの中から選択する。
【0150】
管理計算機20は、移行候補仮想ボリューム一覧から最初の仮想ボリュームを選択する(S8402)。仮想ボリュームを選択できなかった場合(S8403:NO)、本処理は、対策未完として終了する。
【0151】
仮想ボリュームを一つ選択できた場合(S8403:YES)、管理計算機20は、選択されている他ストレージ30に、その仮想ボリュームを移動させる手段の有無を確認する(S8404)。ストレージ30側で仮想ボリュームを移動させる手段と、ホスト計算機40側で仮想ボリュームを移動させる手段とがある。
【0152】
ストレージ30が仮想ボリュームを移動させる手段を備えているか否かは、ストレージ情報213のボリューム移行機能2132の内容で判断できる。ホスト計算機40が仮想ボリュームを移動させる手段を備えているか否かは、仮想ボリューム情報212のボリューム移行機能2126の内容によって判断できる。
【0153】
管理計算機20は、ストレージ側での仮想ボリューム移行手段の有無と、ホスト計算機側での仮想ボリュームの移行手段の有無とを確認し、仮想ボリュームを他ストレージへ移行させるための手段が少なくとも一つ存在するか否かを判定する(S8404)。
【0154】
仮想ボリュームを他ストレージへ移行させるための手段が一つも無い場合(S8404:NO)、管理計算機20は、次の仮想ボリュームを選択して(S8409)、S8403に戻る。
【0155】
仮想ボリュームを他ストレージへ移動させる手段が少なくとも一つ存在する場合(S8409:YES)、管理計算機20は、その仮想ボリュームのサイズが所定サイズであるか否かを判定する(S8405)。仮想ボリュームのサイズが、管理ポリシーの目的に合致するか否かは、管理ポリシー一覧216の内容によって判断することができる。
【0156】
例えば、容量使用率が75%のプールには、図7に示すように、起動条件2163が「プール使用率70〜84%」のポリシーが適用される。そのポリシーのアクションに関する成功条件2165の内容は「プールの使用率を40−60%の範囲に低減すること」と規定されている。現在のプールのサイズと容量使用率とから、目標とする容量使用率を得るために必要な仮想ボリュームの移行サイズは、次の(2)式によって求められる。
【0157】
(移行サイズ)=(現在の容量使用率−目標とする容量使用率)×プールサイズ・・・(2)
【0158】
もしも、プールのサイズが100TBの場合、容量使用率75%を40%に低下させるために必要な追加サイズは、(0.75−0.4)×100=35TBとなる。同様に、容量使用率75%を60%に低下させるために必要な追加サイズは、(0.75−0.6)×100=15TBとなる。
【0159】
従って、プールの容量使用率を40%から60%の範囲に収めるためには、15TB〜35TBの範囲のボリュームサイズを持つ仮想ボリュームを、他ストレージの他プールへ移行させる必要がある。
【0160】
S8403で選択された仮想ボリュームのサイズが上記の範囲内であれば、その仮想ボリュームの移行は妥当であると判断できる。仮想ボリュームのサイズが所定サイズに合致しないと判断された場合(S8405:NO)、S8409に移る。
【0161】
仮想ボリュームのサイズが所定サイズに合致する場合(S8405:YES)、管理計算機20は、その仮想ボリュームに設定されているコスト区分と、移行先の他プールに設定されているコスト区分とが適合するか否かを判定する(S8406)。
【0162】
具体的には、仮想ボリューム情報212のコスト区分2154の内容が、プール情報214のコスト区分2144の内容に含まれている場合、両者のコスト区分が適合すると判断できる。例えば、図3に示す、「VVOL−B」の識別名を有する仮想ボリュームを、図5に示す、「POOL−A」の識別名を有するプールに移動させることを評価する場合を説明する。図3に示すように、仮想ボリューム(VVOL−B)のコスト区分2154は「A,B」である。図5に示すように、プール(POOL−A)のコスト区分2144には「A」が設定されている。移行先のプールのコスト区分「A」は、仮想ボリュームのコスト区分「A,B」に含まれているため、管理計算機20は、両者のコスト区分が適合すると判定する。仮想ボリュームのコスト区分と移行先プールのコスト区分とが適合しないと判断された場合は、S8409に進む。
【0163】
両者のコスト区分が適合すると判断された場合(S8406:YES)、管理計算機20は、仮想ボリュームを他プールに移行させるために要する時間(移行所要時間)が、プールの容量不足の解消に間に合うか否かを判定する(S8407)。
【0164】
例えば、プールの容量使用率が急上昇した場合、プールの容量不足に至急対処する必要がある。プールの容量使用率が100%になる前に、そのプールのサイズを拡張する必要がある。そのためには、プールの容量使用率が100%に到達する日時(プールサイズが枯渇する日時)と、容量不足の対策が完了する日時(移行完了日時)とを、それぞれ推定する必要がある。
【0165】
プールサイズの枯渇日時は、例えば、プール容量使用率の過去の履歴から単位時間あたりの増加率を求め、その増加率に基づいて計算すればよい。移行完了日時は、例えば、(a)アプリケーションプログラム443が稼動中に仮想ボリュームを移行可能であるか否か、(b)アプリケーションプログラム443の稼動期間、(c)仮想ボリュームの移行所要処理時間、などの情報に基づいて計算すればよい。
【0166】
(a)は、ホスト計算機40内のボリューム移行プログラム442については、仮想ボリューム情報212のボリューム移行機能2126を参照すれば、確認できる。ストレージ30内のボリューム移行プログラム3142を使用する場合は、ストレージ情報213のボリューム移行機能2132を参照すれば確認できる。
【0167】
(b)については、仮想ボリューム情報212のアプリケーションプログラム稼動期間2125を参照することで確認できる。
【0168】
(c)については、仮想ボリュームのサイズとサイズあたりの仮想ボリューム移行時間との乗算で求められる。サイズあたりの仮想ボリューム移行時間は、例えば、予め設定される参考値に基づいて算出したり、または、過去の仮想ボリュームの移行に要した時間から選択したりできる。参考値は、各論理ボリュームの性能毎にそれぞれ用意される。
【0169】
移動完了日時の算出方法は、(a)の内容によって異なる。即ち、アプリケーションプログラム443を停止させずに仮想ボリュームの移動が可能である場合は、現在時刻に(c)の移行所要時間を加えた時刻となる。
【0170】
これに対し、アプリケーションプログラム443の稼働中に仮想ボリュームを移動させることができな場合は、アプリケーションプログラム443の稼動終了時刻に、(c)の移行所要時間を加えた時刻となる。
【0171】
なお、仮想ボリュームの移行所要時間が長い場合等には、業務開始時刻までに仮想ボリュームの移行が完了しない可能性が考えられる。そのような事態が発生するのを防止するために、例えば、(a)のアプリケーションプログラム443の稼働中に仮想ボリュームを移動させることができない場合であって、かつ、予測される移行完了日時がアプリケーションプログラム443の開始時刻以降となる場合は、その仮想ボリュームを移行させることはできない、と判断すればよい。
【0172】
なお、プールサイズの枯渇日時及び仮想ボリュームの移行完了日時は、いずれも推定値となるため、余裕を持って判断するのが好ましい。即ち、プールサイズの枯渇日時は、例えば、予測値よりも一定量早い時刻を採用する。移行完了日時は、予測値よりも一定量遅い時刻を採用する。これにより、予想よりも早くプールサイズが枯渇する事態、または、仮想ボリュームの移行が予想よりも遅く完了する事態、の発生を抑制できる。
【0173】
さらに、上記の代替案として、容量使用率の絶対値が所定の上限値よりも高い場合、あるいは、容量使用率の増加率が所定の増加率よりも高い場合など、比較的対応が急がれる場合には、対処完了までの処理時間が相対的に短い対処法(例えばプール拡張)を常に選択する構成としてもよい。
【0174】
なお、ホスト計算機40内のボリューム移行プログラム442による仮想ボリュームの移行と、ストレージ30内のボリューム移行プログラム3142による仮想ボリュームの移行との両方を実施できる場合は、何らかの方法によっていずれかを一つを選択する必要がある。
【0175】
その選択基準としては、例えば、処理完了までの時間の早さ、ホスト計算機40の負荷の大きさ、ストレージ30の負荷の大きさなどを挙げることができる。なお、図14に示すように、ホスト計算機40のボリューム移行プログラム442を用いる場合は、データ転送サイズを比較的少なくでき、かつ、不要なデータを除去できるかも知れないという効果を奏する。
【0176】
図14を参照する。ファイルシステムは、サイズSZ1のデータD1,D2,D3をn個管理している。ファイルシステム上の使用サイズは、SZ1×nとなる。それらのデータD1,D2,D3は、仮想ボリューム720にばらばらに書き込まれるとする。仮想ボリューム720には、各データD1,D2,D3を格納するために、n個のチャンク(実ページ)C1,C2,C3が割り当てられる。チャンクのサイズをSZ2とする(SZ2>SZ1)。従って、仮想ボリューム720へのページ割り当てサイズは、SZ2×nとなる。
【0177】
ホスト計算機40が仮想ボリュームを移動させる場合のデータ転送量はSZ1×nとなるのに対し、ストレージ30が仮想ボリュームを移動させる場合のデータ転送量はSZ2×nとなり、後者の方が大きい。このため、図14に示す例では、ストレージ30が仮想ボリュームを移動させる場合、ホスト計算機40が仮想ボリュームを移動させる場合に比べて、移行所要時間が長くなる。
【0178】
従って、ファイルシステム上の使用サイズ(SZ1×n)と仮想ボリュームへのページ割り当てサイズ(SZ2×n)との差異を、ボリューム移行手段を選択するための基準として用いても良い。
【0179】
さらに、OS444のファイルシステム710上でデータが削除されても、削除されたデータが不要データであることを、ストレージ30が認識できない場合も考えられる。その場合、不要なデータのために、仮想ボリューム720にページ(チャンク)が割り当てられたままとなる。
【0180】
ホスト計算機40内のボリューム移行プログラム442が、削除されたデータを除外してデータを移行させる仕組みを持つと仮定する。ボリューム移行プログラム442を用いて仮想ボリュームのデータを移行元プール720から移行先プール721に移行させると(図14の矢印751,752)、移行先プール721には、削除された不要データが格納されない。従って、仮想ボリュームの移行前に比べて、プールの使用サイズを少なくできる。
【0181】
この現象を利用して、ファイルシステム710上の使用サイズと仮想ボリュームへのページ割り当てサイズの差(または比率)が一定以上になる場合,ホスト計算機40内のボリューム移行プログラム442を優先して実行するようにしても良い。
【0182】
図11に戻る。S8407を実行した結果、プールの容量不足状態が仮想ボリュームのデータ移行完了時刻まで待てないと判定された場合(S8407:NO)、S8409に進む。
【0183】
仮想ボリュームのデータ移行が完了するまで待つことができると判断された場合(S8407:YES)、管理計算機20は、仮想ボリューム移行後における仮想ボリュームの性能を予測して評価する(S8408)。即ち、管理計算機20は、移行後においても、仮想ボリュームの性能を維持できるか否か判断する。
【0184】
仮想ボリュームを自ストレージ内のプールから他ストレージのプールに移行させることによって、仮想ボリュームのI/O性能が低下する可能性がある。移行後に仮想ボリュームのI/O性能が低下するか否かについては、移行元プール及び移行先プールのそれぞれについて、プールを構成する論理ボリュームの性能、論理ボリュームの数、プールの負荷の大きさ、移行対象の仮想ボリュームのI/O量などを考慮して判断すればよい。仮想ボリュームの性能低下の度合が許容範囲内である場合は、特に問題無しとして、その移行を認めてもよい。
【0185】
S8408実行の結果、性能上の問題が無さそうであると判断された場合、選択された仮想ボリュームを、選択された他ストレージ30に移行させ(S8410)、対策完として本処理を終了する。
【0186】
移行後に仮想ボリュームの性能が所定値以上低下するような場合(S8408:NO)、移行候補仮想ボリューム一覧から次の仮想ボリュームを選択し(S8409)、S8403に戻る。
【0187】
なお、図11のフローチャートでは、一つの仮想ボリュームを移行させるだけで、移行元プールの容量を拡張する場合を示しているが、これに限らず、複数の仮想ボリュームを移動させる構成でもよい。その場合、例えば、S8405でのボリュームサイズのチェックでは、仮想ボリュームのサイズがオーバーする場合を除いて、プール容量不足を解消させる目的に合うものと判定する。S8404、S8406、S8407のそれぞれの判定に合格する複数の仮想ボリュームのリストを作成し、そのリストから、仮想ボリュームの合計サイズが必要なサイズ範囲になるように、複数の仮想ボリュームを抽出する。抽出された複数の仮想ボリュームを複数の他プールへ移行させる。
【0188】
なお、S8405で仮想ボリュームのサイズが所定サイズに達していない場合でも、その仮想ボリュームの移行を実施させる構成としても良い。その場合、複数の対処法を併用することになる。最終目標の容量使用率に達しなくても、仮想ボリュームの移行を実施しない場合と比べると、プールの容量使用率を低下させることができる。従って、プールサイズが枯渇するリスクを軽減できる。
【0189】
図11のフローチャートでは詳しく述べていないが、他ストレージ内に複数のプールが存在する場合は、S8405からS8408までの各ステップを、他ストレージ内の各プールのそれぞれについて実施することになる。
【0190】
仮想ボリュームの移行に適したプールが複数ある場合は、例えば、移行先プールの容量使用率、移行時間の短さ、移行後の性能低下の少なさ、などによって移行先プールを一つ選択すればよい。
【0191】
なお、図11のフローチャートでは図示を省略しているが、自ストレージ内に複数のプールが存在する場合への考慮を加えても良い。自ストレージ内に複数のプールが存在する場合、容量不足のプールから、空き容量の十分あるプールに、仮想ボリュームを移行させるという対処法も選択肢に含めることができる。その場合、図11のフローチャートと同様に、例えば、他プールへ仮想ボリュームを移行させる手段の有無、仮想ボリュームのサイズが目的に合致するか、移行先プールのコスト区分と仮想ボリュームのコスト区分が適合するか、容量不足のプールは移行完了時刻まで待てるか、移行後の性能は維持されるか、などの評価を行えばよい。
【0192】
図12は、他ストレージの有する論理ボリュームを利用して、自ストレージのプールのサイズ拡張を図る処理のフローチャートであり、図9のS8209で実行される。本処理では、以下に述べるように、選択された他ストレージのボリューム(外部ボリューム)に、自ストレージから接続可能か否かをチェックする。もしも接続可能であれば、選択された他ストレージ内の各ボリュームのうち未使用のボリュームについて、ボリュームサイズ、コスト区分、性能変化の各点で、プール拡張用のボリュームとして適切であるかの妥当性を評価する。妥当と評価された未使用の外部ボリュームが存在する場合、自ストレージからその未使用の外部ボリュームに接続し、その外部ボリュームを自ストレージ内のプールに割り当ててプールサイズを拡張する。
【0193】
最初に、管理計算機20は、選択された他ストレージのボリュームに接続する機能(外部接続機能)を、自ストレージが有するか否かをチェックする(S8501)。このチェックのためには、ストレージ情報213の外部接続機能2133を参照すればよい。
【0194】
自ストレージが外部接続機能を備えていない場合(S8501:NO)、本処理は、対策未完として終了する。自ストレージが外部接続機能を有する場合(S8501:YES)、以下の処理が実施される。
【0195】
管理計算機20は、選択された他ストレージ内の未使用ボリューム一覧(以下、候補ボリューム一覧)を、未使用ボリューム情報215から作成する(S8502)。なお、候補ボリューム一覧を、未使用ボリューム情報215と別に作成するのではなく、未使用ボリューム情報215から未使用の候補ボリュームの情報を読み出す構成でもよい。その場合、S8503及びS8508では、選択された他ストレージ内の未使用ボリュームのみを選択する。
【0196】
管理計算機20は、候補ボリューム一覧から先頭の未使用ボリュームを一つ選択する(S8503)。管理計算機20は、未使用ボリュームを選択できたか否かを判断する(S8504)。選択可能な未使用ボリュームが無い場合(S8504:NO)、対策未完として本処理を終了する。
【0197】
他ストレージ内の未使用ボリュームを選択できた場合(S8504:YES)、管理計算機20は、その未使用ボリュームのサイズが所定サイズであるか否かを判定する(S8505)。つまり、選択された未使用ボリュームが、自ストレージ内のプールの容量不足を解消させるのに適切なサイズであるかを確認する。未使用ボリュームのサイズが所定サイズであるか否かは、管理ポリシー一覧216の内容によって判断すれば良い。その処理内容は、図10のS8304と同じである。より詳しくは、管理計算機20は、未使用ボリュームのサイズが目的達成に必要な範囲のサイズであるか否かを判定する。
【0198】
選択された未使用ボリュームのサイズが所定サイズではない場合(S8505:NO)、管理計算機20は、候補ボリューム一覧から次の未使用ボリュームを選択し(S8508)、S8504に戻る。
【0199】
選択された未使用ボリュームのサイズが所定サイズの場合(S8505:YES)、管理計算機20は、未使用ボリュームのコスト区分と割当先のプールのコスト区分とが適合するか否かを判断する(S8506)。その具体的な処理内容は、図10のS8305と同じである。
【0200】
未使用ボリュームのコスト区分とプールのコスト区分とが適合しない場合(S8506:NO)、S8508に移る。
【0201】
未使用ボリュームのコスト区分とプールのコスト区分とが適合する場合(S8506:YES)、管理計算機20は、未使用ボリュームをプールに追加した場合の性能を評価する(S8507)。性能評価の方法は、図10のS8306と同様である。
【0202】
しかし、S8507の場合は、外部接続機能を利用して、他ストレージ内の未使用ボリュームを自ストレージ内のプールに追加する。従って、自ストレージから他ストレージにアクセスする必要があり、オーバーヘッドが生じる。そのため、オーバーヘッド分の補正を実施すると良い。即ち、本処理では、オーバーヘッドを考慮して、プールの性能値の変化を予測する。例えば、予め固定値として設定されているオーバーヘッドの量を用いて、プール性能を予測することができる。あるいは、ストレージ30の入出力処理プログラム3141に、オーバーヘッド量を測定させる機能を設け、それにより測定された値に基づいてプール性能を予測する構成でもよい。
【0203】
他ストレージ内の未使用ボリュームをプールに追加しても、そのプールの性能が維持されると判断された場合(S8507:YES)、選択された未使用ボリュームを用いてプールサイズを拡張する(S8509)。本処理は、対策完として終了する。プールの性能が許容値以上低下すると予測された場合(S8507:NO)、S8508に移る。
【0204】
なお、図12のフローチャートでは、一つの未使用ボリュームをプールに追加するだけでプールの容量不足に対処する場合を説明した。これに代えて、複数の未使用ボリュームをプールに追加して、プールの容量不足に対処する構成でも良い。
【0205】
その場合、例えばS8505のサイズチェックでは、ボリュームサイズが所定サイズ(所定のサイズ範囲)を超える場合を除いて、目的に合うものと判定する。さらに、S8506及びS8507のそれぞれのチェックに合格する未使用ボリュームのリストを作成し、そのリストから、未使用ボリュームの合計サイズが必要なサイズ範囲になる複数の未使用ボリュームを抽出する。抽出された複数の未使用ボリュームをプールに追加することにより、プールサイズを拡張することもできる。
【0206】
なお、所定サイズに達しない未使用ボリュームを用いて、プールサイズを拡張する構成としても良い。その場合、複数の対処法を実施することになる。目標の容量使用率を実現するための未使用ボリュームが得られない場合でも、未使用ボリュームをプールに一つも追加しない場合に比べると、プールの容量使用率を下げることができる。従って、不十分なサイズの未使用ボリュームであっても、その未使用ボリュームをプールに追加することで、プールの容量が枯渇するリスクを軽減できる。
【0207】
図12のフローチャートでは、他ストレージ内の未使用ボリュームを用いて、自ストレージのプールサイズ拡張について述べている。これに代えて、他プールに割り当てられている、使用済みの論理ボリュームを、自ストレージのプールのサイズ拡張用に流用する構成でもよい。
【0208】
そのために、図13で述べたS8600の処理を、S8504で「NO」と判定された後に実施すればよい。
【0209】
なお、本発明は、上述した実施形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
【符号の説明】
【0210】
10:管理端末、20:管理計算機、30:ストレージ、40:ホスト計算機
【特許請求の範囲】
【請求項1】
少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、前記仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機と、前記各記憶制御装置と前記ホスト計算機とを管理するための少なくとも一つの管理計算機とを含む計算機システムであって、
前記各記憶制御装置は、前記ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を前記仮想的な論理ボリュームに割り当て、前記ホスト計算機から受信するライトデータを、割り当てられた前記実記憶領域に記憶させるようになっており、
前記管理計算機は、
マイクロプロセッサと、前記マイクロプロセッサにより読み込まれて実行される所定のコンピュータプログラムを記憶するメモリと、前記各記憶制御装置及び前記ホスト計算機と通信するための通信インターフェース部とを備えており、
前記マイクロプロセッサは、前記所定のコンピュータプログラムを読み込んで実行することにより、
前記各プールの使用状態を取得し、
取得された前記各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、
前記所定プールが検出された場合は、(A)前記所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)前記仮想的な論理ボリュームのデータを前記所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、
前記選択された方法に従って、前記所定プールのプールサイズを拡張させる、
計算機システム。
【請求項2】
(A)前記ボリューム追加方法には、
(A1)前記各記憶制御装置のうち前記所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを前記所定プールに追加させる、第1のボリューム追加方法と、
(A2)前記各記憶制御装置のうち前記所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを前記所定の記憶制御装置に接続することにより、前記第2の未使用の実ボリュームを前記所定プールに追加させる、第2のボリューム追加方法と、
(A3)前記各記憶制御装置のうち前記所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第3のボリューム追加方法と、
(A4)前記所定の記憶制御装置以外の前記他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第4のボリューム追加方法と、
が含まれており、
(B)前記データ移動方法には、
(B1)前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第1のデータ移動方法と、
(B2)前記所定の記憶制御装置が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第2データ移動方法と、
が含まれており、
前記マイクロプロセッサは、
(C1)前記第1のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第1の実ボリュームが前記所定プールの使用率を所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている属性ラベルと、前記第1の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第1の実ボリュームを追加した場合でも前記所定プールの応答性能が所定のプール性能値以上となる場合に、前記第1のボリューム追加方法を実行し、
(C2)前記第2のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第2の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第2の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第2の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定のプール性能値以上となる場合に、前記第2のボリューム追加方法を実行し、
(C3)前記第3のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第3の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第3の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第3の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定値以上となり、かつ、前記第3の実ボリュームを前記第1の他のプールから取り外しても前記第1の他のプールの応答性能が他のプール性能値以上となる場合に、前記第3のボリューム追加方法を実行し、
(C4)前記第4のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第4の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第4の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第4の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定のプール性能値以上となる場合に、前記第4のボリューム追加方法を実行し、
(C5)前記第1のデータ移動方法を実行する場合の前記所定の選択基準として、前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための機能を有しており、かつ、前記仮想的な論理ボリュームのデータのサイズが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのサイズを有しており、かつ、前記仮想的な論理ボリュームに予め設定されている属性ラベルと、前記他のプールに予め設定されている属性ラベルとが適合し、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための時間が予め設定される所定時間よりも短く、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させた場合でも前記仮想的な論理ボリュームの応答性能が所定のボリューム性能値以上となる場合に、前記第1のデータ移動方法を実行し、
(C6)前記第2のデータ移動方法を実行する場合の前記所定の選択基準として、前記記憶制御装置が前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための機能を有しており、かつ、前記仮想的な論理ボリュームのデータのサイズが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのサイズを有しており、かつ、前記仮想的な論理ボリュームに予め設定されている属性ラベルと、前記他のプールに予め設定されている属性ラベルとが適合し、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための時間が予め設定される所定時間よりも短く、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させた場合でも前記仮想的な論理ボリュームの応答性能が所定のボリューム性能値以上となる場合に、前記第2のデータ移動方法を実行し、
さらに、(A1)前記第1のボリューム追加方法、(A2)前記第2のボリューム追加方法、(B1)前記第1のデータ移動方法、(B2)前記第2のデータ移動方法、(A3)前記第3のボリューム追加方法、(A4)前記第4のボリューム追加方法、の順番で優先順位が設定されており、
前記マイクロプロセッサは、前記優先順位に基づいて前記各方法を実行する、
請求項1に記載の計算機システム。
【請求項3】
前記マイクロプロセッサは、前記ボリューム追加方法と前記データ移動方法のいずれかを選択する場合に、前記仮想的な論理ボリュームを使用するアプリケーションプログラムの稼働状況を考慮して、所定時間内に前記所定プールのプールサイズの拡張が完了するか否かを判定する、
請求項1に記載の計算機システム。
【請求項4】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを前記所定プールに追加させる、第1のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項5】
前記マイクロプロセッサは、前記第1のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第1の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第1の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第1の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項4に記載の計算機システム。
【請求項6】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを前記所定の記憶制御装置に接続することにより、前記第2の未使用の実ボリュームを前記所定プールに追加させる、第2のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項7】
前記マイクロプロセッサは、前記第2のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第2の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第2の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第2の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項6に記載の計算機システム。
【請求項8】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第3のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項9】
前記マイクロプロセッサは、前記第3のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第3の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている前記属性ラベルと前記第3の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第3の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項8に記載の計算機システム。
【請求項10】
前記ボリューム追加方法には、
前記所定の記憶制御装置以外の前記他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第4のボリューム追加方法が含まれている、請求項1に記載の計算機システム。
【請求項11】
前記マイクロプロセッサは、前記第4のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第4の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第4の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第4の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項10に記載の計算機システム。
【請求項12】
前記データ移動方法には、
前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第1のデータ移動方法が含まれている、
請求項1に記載の計算機システム。
【請求項13】
前記データ移動方法には、
前記所定の記憶制御装置が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第2データ移動方法が含まれている、
請求項1に記載の計算機システム。
【請求項14】
少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、前記仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機とを含む計算機システムを管理するための方法であって、
前記各記憶制御装置は、前記ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を前記仮想的な論理ボリュームに割り当て、前記ホスト計算機から受信するライトデータを、割り当てられた前記実記憶領域に記憶させるようになっており、
前記各プールの使用状態を取得し、
取得された前記各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、
前記所定プールが検出された場合は、(A)前記所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)前記仮想的な論理ボリュームのデータを前記所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、
前記選択された方法に従って、前記所定プールのプールサイズを拡張させる、
計算機システムの管理方法。
【請求項1】
少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、前記仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機と、前記各記憶制御装置と前記ホスト計算機とを管理するための少なくとも一つの管理計算機とを含む計算機システムであって、
前記各記憶制御装置は、前記ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を前記仮想的な論理ボリュームに割り当て、前記ホスト計算機から受信するライトデータを、割り当てられた前記実記憶領域に記憶させるようになっており、
前記管理計算機は、
マイクロプロセッサと、前記マイクロプロセッサにより読み込まれて実行される所定のコンピュータプログラムを記憶するメモリと、前記各記憶制御装置及び前記ホスト計算機と通信するための通信インターフェース部とを備えており、
前記マイクロプロセッサは、前記所定のコンピュータプログラムを読み込んで実行することにより、
前記各プールの使用状態を取得し、
取得された前記各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、
前記所定プールが検出された場合は、(A)前記所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)前記仮想的な論理ボリュームのデータを前記所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、
前記選択された方法に従って、前記所定プールのプールサイズを拡張させる、
計算機システム。
【請求項2】
(A)前記ボリューム追加方法には、
(A1)前記各記憶制御装置のうち前記所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを前記所定プールに追加させる、第1のボリューム追加方法と、
(A2)前記各記憶制御装置のうち前記所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを前記所定の記憶制御装置に接続することにより、前記第2の未使用の実ボリュームを前記所定プールに追加させる、第2のボリューム追加方法と、
(A3)前記各記憶制御装置のうち前記所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第3のボリューム追加方法と、
(A4)前記所定の記憶制御装置以外の前記他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第4のボリューム追加方法と、
が含まれており、
(B)前記データ移動方法には、
(B1)前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第1のデータ移動方法と、
(B2)前記所定の記憶制御装置が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第2データ移動方法と、
が含まれており、
前記マイクロプロセッサは、
(C1)前記第1のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第1の実ボリュームが前記所定プールの使用率を所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている属性ラベルと、前記第1の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第1の実ボリュームを追加した場合でも前記所定プールの応答性能が所定のプール性能値以上となる場合に、前記第1のボリューム追加方法を実行し、
(C2)前記第2のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第2の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第2の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第2の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定のプール性能値以上となる場合に、前記第2のボリューム追加方法を実行し、
(C3)前記第3のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第3の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第3の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第3の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定値以上となり、かつ、前記第3の実ボリュームを前記第1の他のプールから取り外しても前記第1の他のプールの応答性能が他のプール性能値以上となる場合に、前記第3のボリューム追加方法を実行し、
(C4)前記第4のボリューム追加方法を実行する場合の前記所定の選択基準として、前記第4の実ボリュームが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのボリュームサイズを有しており、かつ、前記所定プールに予め設定されている前記属性ラベルと、前記第4の実ボリュームに予め設定されている属性ラベルとが適合しており、かつ、前記所定プールに前記第4の実ボリュームを追加した場合でも前記所定プールの応答性能が前記所定のプール性能値以上となる場合に、前記第4のボリューム追加方法を実行し、
(C5)前記第1のデータ移動方法を実行する場合の前記所定の選択基準として、前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための機能を有しており、かつ、前記仮想的な論理ボリュームのデータのサイズが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのサイズを有しており、かつ、前記仮想的な論理ボリュームに予め設定されている属性ラベルと、前記他のプールに予め設定されている属性ラベルとが適合し、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための時間が予め設定される所定時間よりも短く、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させた場合でも前記仮想的な論理ボリュームの応答性能が所定のボリューム性能値以上となる場合に、前記第1のデータ移動方法を実行し、
(C6)前記第2のデータ移動方法を実行する場合の前記所定の選択基準として、前記記憶制御装置が前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための機能を有しており、かつ、前記仮想的な論理ボリュームのデータのサイズが前記所定プールの使用率を前記所定の使用率以下に低下させるだけのサイズを有しており、かつ、前記仮想的な論理ボリュームに予め設定されている属性ラベルと、前記他のプールに予め設定されている属性ラベルとが適合し、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させるための時間が予め設定される所定時間よりも短く、かつ、前記仮想的な論理ボリュームのデータを前記他のプールに移動させた場合でも前記仮想的な論理ボリュームの応答性能が所定のボリューム性能値以上となる場合に、前記第2のデータ移動方法を実行し、
さらに、(A1)前記第1のボリューム追加方法、(A2)前記第2のボリューム追加方法、(B1)前記第1のデータ移動方法、(B2)前記第2のデータ移動方法、(A3)前記第3のボリューム追加方法、(A4)前記第4のボリューム追加方法、の順番で優先順位が設定されており、
前記マイクロプロセッサは、前記優先順位に基づいて前記各方法を実行する、
請求項1に記載の計算機システム。
【請求項3】
前記マイクロプロセッサは、前記ボリューム追加方法と前記データ移動方法のいずれかを選択する場合に、前記仮想的な論理ボリュームを使用するアプリケーションプログラムの稼働状況を考慮して、所定時間内に前記所定プールのプールサイズの拡張が完了するか否かを判定する、
請求項1に記載の計算機システム。
【請求項4】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定プールの属する所定の記憶制御装置が有する、未使用の第1の実ボリュームを前記所定プールに追加させる、第1のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項5】
前記マイクロプロセッサは、前記第1のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第1の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第1の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第1の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項4に記載の計算機システム。
【請求項6】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定の記憶制御装置以外の他の記憶制御装置が有する、未使用の第2の実ボリュームを前記所定の記憶制御装置に接続することにより、前記第2の未使用の実ボリュームを前記所定プールに追加させる、第2のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項7】
前記マイクロプロセッサは、前記第2のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第2の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第2の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第2の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項6に記載の計算機システム。
【請求項8】
前記ボリューム追加方法には、
前記各記憶制御装置のうち前記所定の記憶制御装置の有する第1の他のプールに設けられている第3の実ボリュームを取り外し、その取り外された第3の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第3のボリューム追加方法が含まれている、
請求項1に記載の計算機システム。
【請求項9】
前記マイクロプロセッサは、前記第3のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第3の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている前記属性ラベルと前記第3の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第3の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項8に記載の計算機システム。
【請求項10】
前記ボリューム追加方法には、
前記所定の記憶制御装置以外の前記他の記憶制御装置が有する、第2の他のプールに設けられている第4の実ボリュームを取り外し、その取り外された第4の実ボリュームを未使用の実ボリュームとして前記所定プールに追加させる、第4のボリューム追加方法が含まれている、請求項1に記載の計算機システム。
【請求項11】
前記マイクロプロセッサは、前記第4のボリューム追加方法を実行する場合、前記所定の選択基準として、
前記第4の実ボリュームのボリュームサイズと、前記所定プールに予め設定されている属性ラベルと前記第4の実ボリュームに予め設定されている属性ラベルとの適合状態と、前記所定プールに前記第4の実ボリュームを追加した場合の前記所定プールの応答性能とを考慮する、
請求項10に記載の計算機システム。
【請求項12】
前記データ移動方法には、
前記ホスト計算機が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第1のデータ移動方法が含まれている、
請求項1に記載の計算機システム。
【請求項13】
前記データ移動方法には、
前記所定の記憶制御装置が前記仮想的な論理ボリュームのデータを前記所定のプール以外の前記他のプールに移動させる、第2データ移動方法が含まれている、
請求項1に記載の計算機システム。
【請求項14】
少なくとも一つの仮想的な論理ボリュームを生成する複数の記憶制御装置と、前記仮想的な論理ボリュームを使用する少なくとも一つのホスト計算機とを含む計算機システムを管理するための方法であって、
前記各記憶制御装置は、前記ホスト計算機からのライトアクセスに応じて、プール内の実ボリュームの有する実記憶領域を前記仮想的な論理ボリュームに割り当て、前記ホスト計算機から受信するライトデータを、割り当てられた前記実記憶領域に記憶させるようになっており、
前記各プールの使用状態を取得し、
取得された前記各プールの使用状態に基づいて、プールサイズの拡張が必要な所定プールが存在するか否かを判定し、
前記所定プールが検出された場合は、(A)前記所定プールに未使用の実ボリュームを追加させるボリューム追加方法と、(B)前記仮想的な論理ボリュームのデータを前記所定プール以外の他のプールに移動させるデータ移動方法のうち、少なくともいずれか一つの方法を所定の選択基準に基づいて選択し、
前記選択された方法に従って、前記所定プールのプールサイズを拡張させる、
計算機システムの管理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−73825(P2012−73825A)
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2010−218242(P2010−218242)
【出願日】平成22年9月29日(2010.9.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.RRAM
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願日】平成22年9月29日(2010.9.29)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.RRAM
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]