なお、以後の説明では「aaaテーブル」、「aaa一覧」等の表現にて本発明の情報を説明するが、これら情報はテーブル、一覧、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaa一覧」等について「aaa情報」と呼ぶことがある。
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「番号」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって記憶装置にインストールされてもよい。
本発明は、以下に説明する実施例に限定されるものではない。
以下、図面を用いて実施例を説明する。なお、本発明が本実施例に限定されるものではない。
図1は、実施例1の計算機システムの機能構成図である。
<計算機システム構成>
実施例1の計算機システムは、複数のアプリケーションサーバ300と、コピー処理サーバ100と、管理サーバ200と、複数のストレージ装置500と、を備える。複数のアプリケーションサーバ300と、複数のストレージ装置500とは、例えば、FC、iSCSIなどのストレージネットワークN2を介して接続されている。各アプリケーションサーバ300、コピー処理サーバ100、及び、管理サーバ200の各サーバは、例えば、LAN(Local Area Network)などのIP(Internet Protocol)ネットワークN1を介して、互いに接続されている。各サーバは、物理的なサーバであってもよいし、1または複数の物理計算機で動作する機能的なサーバであってもよい。アプリケーションサーバ300は、業務毎のアプリケーションを実行する。なお、以下の説明及び図面においては、各アプリケーションサーバ300a乃至dで実行されるアプリケーションをAPP#1乃至4と記載する場合がある。
ストレージ装置500は、1つ以上のディスク制御部900と、図示しない複数の物理記憶デバイスとを有する。ディスク制御部900は、複数の物理記憶デバイスに基づき、アプリケーションサーバ300にLU(Logical Unit)600を提供する。なお、本実施例では、1つのディスク制御部900が1つのLUを1つのアプリケーションサーバ300に提供している例を示しているがこれに限られない。物理記憶デバイスは、例えば、SAS(Serial Attached Small Computer System Interface)−HDD(Hard Disk Drive)、SATA(Serial Advanced Technology Attachment)−HDD、SSD(Solid State Drive)であってもよいし、半導体記憶デバイスであってもよい。また、複数の物理記憶デバイスによりRAID(Redundant Arrays of Inexpensive Disks)グループが構成されてよい。
本実施例においては、例えば、APP#1乃至3を実行するアプリケーションサーバ300a乃至cと、これら各アプリケーションサーバ300a乃至cに対応するLU600(LU#1乃至3)を有するストレージ装置#1と、これらアプリケーションサーバ300a乃至cとを含むシステムを、実際の業務が実行される本番環境に属するサブシステムとする。このサブシステムを、以下の説明及び図面においては、第1システムまたは本番環境システムという場合がある。また、本実施例においては、APP#4を実行するアプリケーションサーバ300dと、このアプリケーションサーバ300dに対応するLU#4を有するストレージ装置#2とを、本番環境システムで実行されるアプリケーションの開発、及び、開発したアプリケーションのテストが実行される開発環境に属するサブシステムとする。このサブシステムを、以下の説明及び図面においては、第2システムまたは開発環境システムという場合がある。
コピー処理サーバ100は、本番環境システム内のデータを、開発環境システムへコピーするコピー処理機能を有するサーバである。本実施例では、コピー処理サーバ100は、コピー処理機能を有する物理的なサーバであるとするが、ホスト計算機(以下、ホスト301)で実現される機能的なサーバであってもよい。具体的には、例えば、コピー処理サーバ100は、SAP社のTest Data Migration Serverである。コピー処理サーバ100は、対象データの情報を含むコピー指示に基づき、対象データのコピー処理を実行する。コピー処理サーバ100がコピー処理を実行するとは、例えば、コピー処理サーバ100が、対象データのコピー元及びコピー先を特定し、対象データをコピー元から読み出してコピー先に送信する処理であってもよいし、コピー処理サーバ100が、対象データのコピー先及びコピー元などの情報を含むコピー命令を、コピー処理の実行対象に送信してもよい。ここで、コピー処理の実行対象は、予め設定されており、例えば、対象データのコピー元またはコピー先のストレージ装置500であってもよいし、管理サーバ200などの他のサーバであってもよい。
また、本番環境システムにおいては、コピー処理サーバ100に関連するアプリケーションサーバと、コピー処理サーバ100に関連しないアプリケーションサーバとが存在する。コピー処理サーバ100に関連するアプリケーションサーバとは、例えば、コピー処理サーバ100で実行されるアプリケーションと同じベンダから提供されるアプリケーションを実行するサーバである。本実施例では、例えば、APP#1及び#2を実行するアプリケーションサーバ300a、300bが、コピー処理サーバ100に関連するアプリケーションサーバである。コピー処理サーバ100と、アプリケーションサーバ300a、300bとは、互いが互いの存在を認識でき、必要に応じて通信できる。一方、APP#3を実行するアプリケーションサーバ300cは、コピー処理サーバ100とは関連しないアプリケーションサーバである。つまり、アプリケーションサーバ300cは、コピー処理サーバ100、アプリケーションサーバ300a、300bとは関係なく動作している。言い換えれば、アプリケーションサーバ300cと、コピー処理サーバ100、アプリケーションサーバ300a及び300bとは、互いに存在を認識し得ない。アプリケーションサーバ300cは、例えば、LU#1及びLU#2からLU#3へのバックアップ処理を実行するサーバである。
管理サーバ200は、本番環境システムと、コピー処理サーバ100とを管理するためのサーバである。なお、管理サーバ200は、本番環境システムに含まれてもよい。
以下、本番環境システムのデータを開発環境システムにおいて使用するために、コピー処理サーバ100が、LU#1に記憶されたファイル700内のある領域のデータ800と、LU#2に記憶されたファイル710内のある領域のデータ810との、LU#4へのコピー処理を実行する場合を説明する。
本実施例では、簡単のため、ストレージ装置500のLU600毎に設けられたディスク制御部900が、各アプリケーションサーバ300に対しLU600を提供する例を示しているがこれに限られない。図1において、LU#1には、アプリケーションサーバ300aにより生成されたファイル700が記憶され、LU#2には、アプリケーションサーバ300bにより生成されたファイル710が記憶されている。また、LU#2のファイル710は、アプリケーションサーバ300cにより、定期的にまたは不定期にLU#3にバックアップされている。
コピー処理サーバ100が、ユーザより、LU#1のファイル700内のデータ800をコピー対象データとする、コピー指示を受信したとする。この場合、コピー処理サーバ100は、ユーザのコピー指示に基づき、LU#1のファイル700内のデータ800と、コピー処理サーバ100及びアプリケーションサーバ300aに関連するアプリケーションサーバ300bにより生成されたデータであって、データ800に関連性のあるデータであるLU#2のファイル710内のデータ810とを、LU#4にコピーする旨のコピー命令を管理サーバ200に送信する。
管理サーバ200は、コピー命令を受信し、本番環境システムに記憶されているストレージ情報及びアプリケーション情報を取得し、アプリケーションサーバ300毎の対応するLU600のIO(Input or Output)帯域使用量(IO転送レート)の時間変化を予測する。具体的には、管理サーバ200は、コピー命令に基づき、アプリケーションサーバ300aによるLU#1のIO帯域使用量の時間変化と、アプリケーションサーバ300b及び300cによるLU#2のIO帯域使用量の時間変化を、それぞれ予測する。この予測から対象データ800、810のコピー開始時刻及びコピー速度をそれぞれ決定する。管理サーバ200は、決定したコピー開始時刻及びコピー速度を含むコピー指示を、コピー処理サーバ100に送信する。
コピー指示を受信したコピー処理サーバ100は、対象データの800、810のコピー処理を実行する。
上記の処理により、本番環境システムが有するリソースの負荷を低減したコピー処理ができる。具体的には、対象データ800を格納するLU#1のアプリケーションサーバ300aによる負荷(例えばIO帯域使用量)と対象データ810を格納するLU#2のアプリケーションサーバ300bによる負荷(例えばIO帯域使用量)とだけでなく、コピー処理サーバ100及びアプリケーションサーバ300bとは関連しないアプリケーションサーバ300cによる、LU#2に対する負荷も考慮したコピー開始時刻及びコピー速度で、対象データ800、810のコピー処理をそれぞれ行う事が出来る。
図2は、管理サーバ200の構成図である。
管理サーバ200は、プロセッサ(CPU)201と、メモリ202と、ストレージ装置500に通信するためのストレージインタフェース(I/F)203と、各サーバと通信するためのネットワークインタフェース(I/F)204と、を有する。
また、管理サーバ200は、管理サーバ200を制御するためのキーボード・マウス・ディスプレイなどのインタフェースを備えてもよい(図示なし)。
メモリ202は、CPU201で実行されるコンピュータプログラムやデータを記憶する。具体的には、例えば、メモリ202は、コンピュータプログラムとして、アプリ設定情報取得処理部210と、アプリIO情報取得処理部211と、ストレージ構成情報取得処理部212と、ストレージIO情報取得処理部213と、ホスト構成情報取得処理部214と、統合設定情報取得処理部215と、予測処理部216と、制御処理部217とを記憶する。以下、各処理部が実行する処理を簡単に説明する。
アプリ設定情報取得処理部210は、動作しているアプリケーションサーバ300からアプリケーションの設定情報を取得する。アプリIO情報取得処理部211は、アプリケーションが生成するIOによる負荷(単位時間(例えば1秒)当たりのIOにより転送されるデータ量)を示すアプリケーションIO帯域使用量の情報を取得する。ストレージ構成情報取得処理部212は、ストレージ装置500からそのストレージ装置500内部の構成情報を取得する。ストレージIO情報取得処理部213は、ストレージ装置500が記憶するストレージ装置500の各記憶領域(例えばLU)に対するIOによる負荷(単位時間(例えば1秒)当たりのIOにより転送されるデータ量)示すLUIO帯域使用量の情報を取得する。サーバ構成情報取得処理部214は、アプリケーションサーバ300の内部構成情報を取得する。統合設定情報取得処理部215は、上記の各処理部211乃至215が取得した情報に基づき、アプリケーションとLU、及び、予定されているアプリケーションの実行期間を関連付けた情報を生成する。予測処理部216は、各情報から、コピー指示によりユーザが指定した時点以降について、対象LUのアプリケーション毎の帯域使用量の時間変化を予測する。制御処理部217は、上記の各処理部211乃至216の制御をすることにより、本番環境システム全体の制御を行う。
図3は、アプリケーションサーバ300が管理する情報を説明する図である。
本実施例においては、アプリケーションサーバ300は、ホスト301で動作する機能的なサーバとして説明する。なお、ホスト301は、物理的な計算機であってもよいし、物理的な計算機内のプロセッサであってもよい。具体的には、例えば、ホスト301上でVM(Virtual Machine)302が動作し、そのVM302上でOS303が動作し、そのOS303上でアプリケーション304が動作することによりアプリケーションサーバ300が実現されるとする。従って、本実施例では、1つのホスト301は、1つのアプリケーションサーバ300として機能する。なお、ホスト301上でOSが動作し、そのOS上でアプリケーションが動作することによりアプリケーションサーバ300が実現されてもよい。また、ホスト301上に1つまたは複数のVM302が動作してもよいし、OS303上に複数のアプリケーションが動作してもよい。
ホスト301は、アプリケーションIO負荷情報1000、アプリケーション設定情報1100、ホスト及びストレージ間情報1200、アプリ・VM・ホスト関係情報1300などの情報を、外部記憶装置又はホスト301内のメモリに保存する。本実施例では、ホスト301にストレージ装置500が接続されている。この場合、ストレージ装置500がホスト301の外部記憶装置として機能してもよい。例えば、図のように、各情報1000乃至1300は、ストレージ装置500内部のLU600に記憶されていてもよいし、ディスク制御部900内のメモリに記憶されてもよいし、各ディスク制御部900に共有されるメモリに記憶されてもよい。各情報1000乃至1300は、ホスト301から参照される。以下、各情報1000乃至1300を説明する。
アプリケーションIO負荷情報1000は、各時刻における、アプリケーションIO帯域使用量を記録するテーブルである。
アプリケーションIO負荷情報1000は、IOが発生した日時毎のエントリを有する。各エントリは、当該IOが発生した年月日及び時刻、当該IOの要求元のアプリケーション304を識別するアプリ#(番号)、当該IOによる帯域使用量を有する。アプリケーションIO帯域使用量は、アプリケーション304からストレージ装置500に対して送信されるIOによる単位時間(1秒)当たりの帯域使用量(IOのデータ量)である。具体的には、本図においては、2015年1月10日の21時15分21秒に発生したAPP#1のアプリケーションIO帯域使用量は、18Mbpsである。
アプリケーション設定情報1100は、アプリケーション304毎の設定情報を示すテーブルである。アプリケーション設定情報1100は、アプリケーション304毎のエントリを有する。各エントリは、当該アプリケーション304を識別するアプリ#(番号)と、当該アプリケーション304の設定情報として、アプリケーション304の動作の開始時刻及び終了時刻を示す稼働期間とを有する。なお、アプリケーションの設定情報は、これに限られず、アプリケーション304が参照するファイル名、稼働期間以外のアプリケーション304の動作を決定するためのパラメータなどであってもよい。
ホスト及びストレージ間情報1200は、ホスト301及びストレージ装置500間の接続情報を示すテーブルである。具体的には、例えば、ホスト及びストレージ間情報1200は、ホスト301毎のエントリを有する。各エントリは、当該ホスト301の識別子を示すホスト#(番号)、当該ホスト301を識別するWWN(World Wide Name)、ストレージ装置500を識別するStorage WWN、当該ホスト301に提供されるLUのLU#(番号)とを有する。
アプリ・VM・ホスト関連情報1300は、ホスト301と、ホスト301で動作するVM302と、VMで動作するアプリケーション304とを関連づけたテーブルである。アプリ・VM・ホスト関連情報1300は、アプリケーション304毎のエントリを有する。各エントリは、当該アプリケーション304の識別子であるアプリ#(番号)と、当該アプリケーション304が動作するVM302の識別子であるVM#(番号)と、当該VM302が動作するホストの識別子であるホスト#(番号)とを有する。なお、本実施例は、ホスト301でVM302が動作し、アプリケーションサーバ300がホスト301上のVM302で実現されている例を示している。例えば、ホスト301上にVM302が存在しない場合には、VM#には、何も記憶されない。
図4は、アプリケーションサーバ300のIO処理を示す模式図である。
OS303で、アプリケーション304が実行される。ホスト301は、アプリケーションIO処理履歴1050を生成し、アプリケーションIO処理履歴1050より前述したアプリケーションIO負荷情報1000を生成する。アプリケーションIO処理履歴1050は、ホスト301の内部の図示しないメモリに記憶される。本実施例では、ホスト301にストレージ装置500が接続されている。このため、アプリケーションIO処理履歴1050は、図のようにストレージ装置500内部のLU600に記憶されていてもよいし、ディスク制御部900内のメモリに記憶されてもよいし、各ディスク制御部900に共有されるメモリに記憶されてもよい。アプリケーションIO処理履歴1050は、ホスト301から参照される。
アプリケーションIO処理履歴1050は、IO処理の要求元のアプリケーション304と、要求のあった日時及び要求先を対応づけるテーブルである。アプリケーションIO処理履歴1050は、例えば、図3において説明したIO処理によって生成される。アプリケーションIO処理履歴1050は、IO処理を要求したアプリケーション、対象データの格納先のLU、LBA、対象データにアクセスを開始した年月日、時刻、IO処理に要した時間である処理時間、及び、対象データのサイズを保持する。アプリケーションIO処理履歴1050の各情報は、ドライバ360が取得し、各LU600に対応するディスク制御部900に送信されて、ストレージ装置500に記憶される。しかし、ホスト301内のメモリの空き領域の容量が十分あれば、当該メモリに記憶されてもよい。なお、ドライバ360は、ファイルシステム350から通知される対象データの格納先の情報だけでは、アプリケーション304の情報を取得できない。このため、ファイルシステム350からドライバ360にIO処理の通知が来たタイミングで、そのIO処理のプロセスを特定し、OS303が管理している情報からアプリケーション304の名称を取得し、そのアプリケーション304とLU600の情報を関連付けて記憶する。以下、アプリケーションIO負荷情報1000が生成される過程を説明する。
OS303は、アプリケーション304からのIO処理を実現するファイルシステム350と、ストレ−ジ装置500にデータをライトするためのドライバ360とを含む。アプリケーション304は、例えば、ユーザまたは自らによるIO処理の要求に応じて、対象データをライトまたはリードするファイルのファイル名、対象データのサイズ、対象データまたは対象データを読み出す場所などの情報をファイルシステム350に対して送信する。ファイルシステム350は、アプリケーション304から受信した情報に基づき、対象データの格納先のドライブ情報を抽出し、ドライバ360に通知する。ドライブ情報は、例えばWindows(登録商標)であれば「C:」、Linux(登録商標)であれば「/dev/hda1」などである。通知を受けたドライバ360は、アプリ・VM・ホスト関連情報1300、ホスト及びストレージ間情報1200、及び、対象データの格納先のドライブ情報に基づき、対象データの格納先のLU及びLBAの情報を特定し、ホスト301とストレージ装置500との間のプロトコルに従い、ホスト301からストレージ装置500に対してIO処理の要求を出す。上記処理から得られた情報により、ドライバ360は、アプリケーション301とLU600とを関連づけたアプリケーションIO処理履歴1050を生成する。そして、ドライバ360は、アプリケーションIO処理履歴1050に基づき、アプリケーションIO負荷情報1000を生成する。
図5は、ストレージ装置500が有する情報の一例である。
ストレージ装置500は、ストレージ構成情報1400とLU600毎のストレージIO負荷情報1500とを記憶する。これらの情報は、各LU600に記憶されてもよいし、ディスク制御部900内部のメモリに記憶されてもよいし、各ディスク制御部900に共有されるメモリに記憶されてもよい。
ストレージ構成情報1400は、ストレージ装置500の構成を示すテーブルである。ストレージ構成情報1400は、ホスト301毎のエントリを有する。各エントリは、当該ストレージ装置500を識別するWWNと、ホスト301を識別するHost WWNと、当該LU600を識別するLU名と、当該LU600を制御するディスク制御部900を識別するディスク制御名と、を有する。
ストレージIO負荷情報1500は、各時刻における、LUIO帯域使用量を記録するテーブルである。本実施例では、ストレージIO負荷情報1500は、LU毎のテーブルを生成しているが、LUIO帯域使用量が記憶されていればよく、複数のLUのストレージIO負荷情報1500をまとめて記憶してもよい。
ストレージIO負荷情報1500は、IOをストレージ装置500が受信した日時毎のエントリを有する。各エントリは、当該LU宛てのIOを受信した年月日及び時刻、当該LUのLUIO帯域使用量、当該IOの要求元のホスト301を識別するHost WWN、IOの宛先を示すLBA、IOのデータのサイズを有する。LUIO帯域使用量は、そのLUを宛て先としたIOによる単位時間(1秒)当たりの帯域使用量(IOのデータ量)である。また、LUが複数のアプリケーションからアクセスされる場合、LUIO帯域使用量には、複数のアプリケーションIO帯域使用量が含まれる。
なお、ホスト301及びストレージ間情報1200やアプリ・VM・ホスト関連情報1300のような機器あるいはソフトウェアの接続を表現する情報は、必要時に動的に確認してもよい。
以上の情報を活用して、本番環境システムへの影響を抑えたコピー処理を実現する。以下、その具体的な方法について説明する。
図6は、情報取得処理のフローチャートである。
情報取得処理は、コピー処理サーバ100及び管理サーバ200が、本番環境に影響ないコピーを実現するために必要となる情報を取得及び整理する処理である。以下、図に従い説明する。
コピー処理サーバ100は、ユーザからコピー指示を受信する(ステップS100)。コピー処理サーバ100は、受信したコピー指示に基づき、本番環境システムからコピーすべき対象データの情報を特定し、特定した対象データの情報と、コピー指示を受信した日時とを含むコピー命令を管理サーバ200に送信する(ステップS110)。なお、対象データの情報は、例えば、対象データの格納場所であるLU及びLBAの識別子、対象データのサイズなどである。
管理サーバ200は、コピー命令を受信し、対象データの情報から対象データが格納されるLU600を特定する(ステップS120)。対象データが複数の場合は、各データが格納されるLUが特定される。以下、特定したLU600を対象LUという。
ステップS130乃至ステップS150が、図7に示す統合設定情報1700を生成する処理である。以下、処理を説明する。
管理サーバ200は、ストレージ構成情報1400を取得し、対象LUを提供するホスト301を特定する(ステップS130)。
管理サーバ200は、ホスト及びストレージ間情報1200とアプリ・VM・ホスト関連情報1300とを取得し、対象LUを利用するアプリケーション304を特定する。そして、管理サーバ200は、アプリケーション設定情報1100に基づき、特定したアプリケーション304の設定情報としての実行期間を取得する(ステップS140)。こうして得られた結果を整理して、対象LUを利用しているアプリケーション304の一覧と、その設定情報を整理して、管理サーバ200は、統合構成情報1700を生成する(ステップS150)。管理サーバ200は、生成した統合構成情報1700を自身のメモリに記憶してもよい。
上記処理においては、統合構成情報1700は、ストレージ装置500が有する情報と、ストレージ装置500に接続されたホスト301が有する情報とに基づき生成される。このため、従来、コピー処理サーバ100が認識できていなかったホスト301で動作するアプリケーション304の実行期間を、そのアプリケーション304を利用するLU600と結びつけることができる。
ステップS160及びステップS170が、予測処理である。予測処理の結果(予測結果)を図8に示す。以下、予測処理を説明する。
対象LUを特定した後(ステップS120)、管理サーバ200は、対象LUに関するIO帯域使用量の情報として、ストレージIO負荷情報1500とアプリケーションIO負荷1000を取得する(ステップS160)。
取得したストレージIO負荷情報1500及びアプリケーションIO負荷1000と、コピー処理サーバ100がコピー指示を受信した日時とに基づき、管理サーバ200の予測処理部216は、コピー指示を受信した時点から所定時間後までの期間について、対象LUを利用するアプリケーション304毎のIO帯域使用量の時間変化を予測する(ステップS170)。LU#1の予測結果1800を図8に示す。予測処理を行うことにより、LU毎に、アプリケーション別のIO帯域使用量の時間変化の予測結果を生成できる。管理サーバ200は、生成した予測結果1800を自身のメモリに記憶してもよい。
管理サーバ200は、本番環境システムから開発環境システムへのデータのコピー方法判定処理を実行する(ステップS180)。管理サーバ200は、コピー処理には、ステップS130乃至150で生成された統合構成情報1700及びステップS160乃至170で生成された予測結果が用いられる。
なお、上記の処理においては、管理サーバ200は、コピー処理サーバ100からのコピー命令を受けて対象LUを特定した後、ホスト301及びストレージ装置500から情報を収集している。しかし、管理サーバ200は、コピー処理サーバ100から要求を受け付ける前に、これらの情報を収集しておいてもよい。この場合、コピー処理サーバ100からのコピー命令をきっかけに、管理サーバ200は収集済みのデータから必要となる情報を生成してもよい。
コピー処理は、幾つかの方法が考えられる。例えば、コピー処理方法として、アプリケーション304が動作していない期間にコピー処理を実行する第1のコピー処理方法と、本番環境システムの帯域に余裕がある場合に、その使用していない帯域をコピー処理に使用する第2のコピー処理方法と、対象LUを利用するアプリケーションの処理の時間をずらすまたは中止するという第3のコピー処理方法と、が考えられる。コピー処理方法は、いずれの方法が選択されてよい。管理サーバ200は、以下に説明するコピー処理判定方法により、選択したコピー処理方法が適切か否かを判定する。以下、第1のコピー処理方法、及び、第1のコピー処理方法にかかるコピー処理判定方法を説明する。
図9は、第1のコピー処理方法を説明する図である。この図では、本番環境システムにおいて、対象LU(LU#1)において、APP#1及び#3の2つのアプリケーション304が動作していることを示している。ここでは、APP#1は対象データを利用するアプリケーション304であり、APP#3は、APP#1に関連しないアプリケーション304であるとする。図では、2つのアプリケーション(APP#1、#3)のいずれも動作していない期間t1、t2、つまり、LU#1に対してAPP#1、#3からのIOによる負荷がかからない期間t1、t2が、LU#1におけるアプリ未稼働期間である。管理サーバ200は、統合構成情報1700に基づき、アプリ未稼働期間を予測し、予測したアプリ未稼働期間により、コピー処理を実行する期間(コピー処理可能期間)を決定する。これにより、複数のアプリケーション304による対象LUのIOによる負荷を考慮したコピー処理ができる。このため、アプリケーションが利用する開発環境システムのリソースへの影響を抑えたコピー処理を行うことができる。また、このとき、対象データを利用するアプリケーション304であって、コピー処理サーバ100に関連しないアプリケーション304のIOによる負荷も考慮できる。
図10は、第1のコピー方法判定処理のフローチャートである。
第1のコピー方法判定処理は、第1のコピー処理方法を優先して用いる。つまり、第1のコピー方法判定処理は、主に、第1のコピー処理方法が実行可能か否かを判定する。管理サーバ200は、統合構成情報1700を取得し、コピー処理の対象である対象LUにアクセスするアプリケーションの起動タイミングから、アプリケーションが動作していない期間を検索する(ステップS200)。具体的には、例えば、指定された開始時点、例えばユーザがコピー指示を行った時点から検索可能な範囲内に、どのアプリケーション304も動作していないアプリ未稼働期間があるか否かを検索する。管理サーバ200は、検索の結果、アプリ未稼働期間があったか否かを判定する(ステップS202)。
判定の結果、アプリ未稼働期間がない場合は(S202:該当期間なし)、アプリケーションは常に動作中であることを意味し、第1のコピー処理方法は適用できない。このため、管理サーバ200は、ステップS214に処理を進める。一方、判定の結果、アプリ未稼働期間がある場合(S202:該当期間あり)、管理サーバ200は、このアプリ未稼働期間を取得し、そのコピー速度を算出する(ステップS210)。具体的には、例えば、管理サーバ200は、対象LUに対し、統合設定情報1700に基づき、アプリケーション304の次のアクセスの開始時刻を検索し、この時刻の直前の時刻をコピー処理の終了時刻とした期間を抽出する。そして、管理サーバ200は、抽出した期間と、情報取得処理においてコピー処理サーバ100から通知された対象データのサイズに基づき、抽出した期間でコピー処理を完了し得るか否かを判定する。コピー処理を完了し得る場合、管理サーバ200は、その期間をコピー処理可能期間の候補とし、その期間でコピー処理を完了し得るコピー速度を決定する。例えば、コピー速度は、候補となるコピー処理可能期間に対象データのすべてをコピーし得る最低の速度であってよい。なお、対象データが複数の場合には、管理サーバ200は、複数のデータについて続けてコピー処理を完了し得るか否かを判定し、コピー処理期間の候補がある場合は、複数のデータの合計サイズに基づき、その期間で複数のデータがコピー処理を完了し得るコピー速度を決定するようにしてもよい。なお、対象データが複数の場合とは、ユーザからのコピー指示に含まれるデータが複数ある場合、ユーザからのコピー指示に含まれる1つの対象に関連するデータがある場合等である。
管理サーバ200は、再検索が必要か否かを判定する(ステップS212)。再検索は、例えば、ユーザにより設定された検索可能な範囲で行ってよい。再検索をする場合(S212:再検索する)、管理サーバ200は、S200に処理を戻す。再検索しない場合(S212:再検索しない)、管理サーバ200は、S214に処理を進める。再検索により、検索可能な範囲の全ての未稼働期間が、コピー処理可能期間の候補となり得るか否かを判定し、候補となり得る期間についてコピー開始時刻及びコピー速度を算出する。例えば、図9の例においては、管理サーバ200は、検索可能な範囲におけるコピー処理可能期間の候補(t1及びt2)について、対象データのコピー開始時刻及びコピー速度を算出している。
管理サーバ200は、1つ以上のコピー処理可能期間の候補が取得されたか否かを判定する(ステップS214)。コピー処理可能期間の候補が取得されなかった場合(S214:処理期間候補なし)、管理サーバ200は、他のコピー方法判定処理を行えるか否かを判定する(ステップS215)。他のコピー方法判定処理を行える場合(S215:他の方法あり)、管理サーバ200は、後述する他のコピー方法判定処理を実行する。一方、他のコピー方法判定処理を行えない場合(S215:他の方法なし)、管理サーバ200は、コピー処理を実行できる期間がないことをユーザに通知して(ステップS240)、処理を終了する。なお、他のコピー方法判定処理については、後の実施例において詳細に説明する。
一方、コピー処理可能期間の1つ以上候補が取得された場合(ステップS214:候補あり)、管理サーバ200は、その(またはそれらの)期間におけるコピー開始時刻及びコピー速度の結果をユーザに確認するか否かを判定する(ステップS216)。ユーザに確認をする場合(S216:確認する)、管理サーバ200は、結果をユーザに提示する(ステップS220)。結果の提示画面の一例を図11に示す。対象LUを利用するAPP#1及び3が動作しない時間帯をコピー処理可能期間(Copy Process)とし、コピー処理可能期間に算出されたコピー速度でコピー処理を行った場合の、コピー処理の開始時刻(Start Time)と、算出したコピー速度においてコピー処理を実行した場合の予測終了時刻(Estimation End Time)とを提示している。ユーザは、この画面が提示する時間帯にコピー処理を行うか否かを選択する。
ユーザに結果の確認をしない場合(S216:確認しない)は、管理サーバ220は、自動でコピー開始時刻及びコピー速度を決定する(ステップS230)。ここで、コピー開始時刻及びコピー速度を決定する基準を、いくつか例示する。第一の基準は、例えば、算出されたコピー速度が、ストレージ装置500が取りうる範囲内であることである。第二の基準は、例えば、ユーザが設定ファイルなどを使って、コピー処理の開始時刻、終了時刻、及び、速度などの条件を事前に設定している場合、その条件に違反していないことである。第三の基準は、コピー指示時にユーザに指定されたコピー処理の開始時刻、終了時刻、及び、速度などの条件がある場合、その条件に違反していないことである。第一乃至第三の基準のいずれかに違反しており(S218:設定不可)、他のコピー方法判定処理を行えない場合(S215:他の方法なし)、管理サーバ200は、本実施例のコピー処理方法では対象データのコピーができないことをユーザに通知し処理を終了する(ステップS240)。一方、これらの基準のいずれかに違反しており(S218:設定不可)、他のコピー方法判定処理を行える場合(S215:他の方法あり)、管理サーバ200は、後述する他のコピー方法判定処理を実行する。なお、管理サーバ200は、S218において、第一乃至第三の基準のすべてに違反している場合であっても設定不可としてもよい。
一方、第一乃至第三の基準を満たしている場合(S218:設定可)、管理サーバ200は、自動で決定したコピー処理の開始時刻及びコピー速度によって、第一の方法のコピー処理を実行する(ステップS250)。なお、管理サーバ200は、S218において、第一乃至第三の基準の1つ以上の基準を満たしている場合に、設定可としてもよい。
S220の結果の表示に対し、ユーザが、コピー処理をしない旨の指示をした場合(S217:キャンセル)、管理サーバ200は、コピー処理を終了する。一方、ユーザが、コピー処理を実行する旨の指示をした場合(S217:実行(選択))、管理サーバ200は、ユーザが確認した(または指定した)コピー処理の開始時刻及びコピー速度を含む情報と共に、コピー処理の実行の指示をコピー処理サーバに送信し(ステップS250)、処理を終了する。
上記の処理の後、コピー処理サーバ100は、S250のコピー処理の実行指示を受信した場合、指定されたコピー処理の開始時刻及びコピー速度でコピー処理を実行する。具体的には、例えば、コピー処理サーバ100は、S250のコピー処理の実行指示を受信した場合、対象データのコピー元及びコピー先を特定し、対象データをコピー元から読み出してコピー先に送信する処理であってもよいし、コピー処理サーバ100が、コピー先及びコピー元の情報などの対象データの情報を含むコピー命令を、対象データのコピー元またはコピー先のストレージ装置500に送信してもよい。
また、別の方法として、1つのコピー処理可能期間の候補が及取得できた時点でステップS220またはステップS230の処理に進んでもよい。この場合、再検索する条件によって具体的な処理方法が定義される。同様に、S210のコピー速度の算出についても、ステップS220またはステップS230のタイミングで行ってもよい。
上記処理により、対象LUを利用するアプリケーション304が動作していない期間に、その期間にあった適切なコピー速度で、対象データの本番環境システムから開発環境システムへのコピー処理を行うことができる。これにより、本番環境システムが有するリソースに対する、アプリケーションのIOによる負荷を考慮して、本番環境システムへのコピー処理の影響を低減できる。
また、管理サーバ200が、対象データのコピー処理の開始時刻と、コピー速度を含めたコピー指示をコピー処理サーバ100に送信することで、コピー処理サーバ100は、自身の機能を追加することなく、対象データのコピー処理を実行することができる。
以下、実施例2を説明する。以下では、実施例1と異なるところを主に説明し、実施例1と重複するところの説明を省略または簡略する。実施例2では、実施例1とは別のコピー処理方法が行われる。
図12は、第2のコピー処理を説明する図である。
第2のコピー処理は、アプリケーションによるLU600のIO帯域使用量に余裕がある場合に、その使用していない帯域をコピー処理に使用する方法である。この方法においては、LU600を利用する他のアプリケーションに比較して、コピー処理の優先度が低く設定されていること、及び、コピー速度が常に変動し、コピー処理の終了時刻が確実に予測できないことを前提としている。あるいは、この方法の前提として、コピー処理は他のアプリケーションを意識せずに自身の処理のために固定的に帯域を利用するとしてもよい。本実施例では、コピー速度が、幾つかの段階に切り替えられる場合、具体的には、高速、中速、低速の3段階に切り替えられる場合を説明する。なお、コピー速度の各段階は、予め設定されており管理サーバ200によって管理されてよい。具体的には、例えば、コピー速度の各段階は、管理サーバ200のメモリ、または、ストレージ装置500のメモリまたはLU600に記憶されてよい。
図の横軸が時刻(time)、縦軸が帯域使用量を示している。Xは、予測処理部216により生成される、アプリケーションによる対象LUへのIOによる各時刻の帯域使用量(IO帯域使用量)の予測値を示している。本図においては、対象LUをLU#1としている。具体的には、例えば、IO帯域使用量は、コピー処理サーバ100と関連するアプリケーション304であるか否かに関わらず、対象LUを利用するすべてのアプリケーションからのIOによる帯域使用量である。また、対象LUにおける、使用可能なLU帯域使用量の最大値(MAX)を基準とする。Yは、対象LUの対象データについてコピー処理を行った場合の、各コピー速度における、コピー処理期間と当該コピー処理の帯域使用量(コピー帯域使用量)との関係を示す。具体的には、例えば、Yは、対象データについて、高速でコピー処理を行った場合のコピー帯域使用量及びコピー処理期間の関係を「高」、中速でコピー処理を行った場合のコピー帯域使用量及びコピー処理期間の関係を「中」、低速でコピー処理を行った場合のコピー帯域使用量及びコピー処理期間の関係を「低」の領域で示ししている。この場合、各時刻において、各コピー速度で対象データのコピー処理を行った場合のコピー帯域使用量と、予測されたIO帯域使用量との合計が、対象LUが使用可能なLU帯域使用量(MAX)を超えないように設定する必要がある。例えば、本図の例では、対象データのコピー処理は、高速で行うことはできない。一方、中速及び低速では、対象データのコピー処理は可能となる。
これにより、アプリケーション304による対象LUのIO負荷を考慮したコピー処理ができる。このとき、コピー処理サーバ100に関連するアプリケーションのみならず、関連しないアプリケーション304のIOによる負荷も考慮できる。
図13は、第2のコピー方法判定処理のフローチャートである。
第のコピー方法判定処理は、第2のコピー処理方法を優先して用いる。つまり、第2のコピー方法判定処理は、主に、第2のコピー処理方法が実行可能か否かを判定する。管理サーバ200は、コピー処理サーバ100より通知されたコピー命令(図6のS110参照)に含まれる対象データの情報と、ストレージIO負荷情報1500と、アプリケーションIO負荷1000とから、対象LUのIOによる帯域使用量(IO帯域使用量)を予測する(ステップS300)。
管理サーバ200は、段階ごとに設定されたコピー速度と、対象データの情報に含まれる対象データのサイズに基づき、コピー速度の各段階において必要なコピー処理期間及びコピー処理の帯域使用量(コピー帯域使用量)を算出する(ステップS310)。このステップにより、例えば、図12のY(「高」、「中」、「低」)が決定する。
管理サーバ200は、コピー速度の段階毎に、コピー処理が可能な開始時刻を検索する(ステップS320)。具体的には、例えば、まず、管理サーバ200は、Yの各段階(高、中、低)を、対象LUのLU帯域使用量の最大値(MAX)の軸と、現在の時刻(Time=0)の軸とに接するように配置する(図12参照)。次に、管理サーバ200は、図12においてYの各段階(高、中、低)が、予測される各時刻におけるIO帯域使用量(X)と交わらないように平行移動させて検索する。この処理は、例えば、ユーザにより設定された設定情報(図示なし)に基づき、必要な条件及び回数繰り返される。再度行う場合は(S322:再検索する)、管理サーバ200は、各段階において選択しうる開始時刻を検索する。なお、設定情報は、情報取得処理の際にGUIを介してユーザによって指定され記憶されていてもよい。また、再検索は、「低」の段階を選択した場合のコピー処理期間よりも早く終了するコピー速度及びコピー処理期間が選択された場合に終了するようにしてもよい。一方、再検索しない場合(S322再検索しない)、管理サーバ200は、ステップS324に処理を進める。
管理サーバ200は、コピー処理が可能な開始時刻の候補があるか否かを判定する(ステップS324)。開始時刻の候補がない場合(S324:開始時刻候補なし)、管理サーバ200は、他のコピー方法判定処理が行えるか否かを判定する(ステップS326)。他のコピー方法判定処理が行えない場合(S326:他の方法なし)、管理サーバ200は、どの段階においても開始時刻の候補がない旨を、その理由とともにユーザに通知し(ステップS360)、処理を終了する。他のコピー方法判定処理が行える場合(S326:他の方法あり)、他の実施例のコピー方法判定処理を実行する(ステップS370)。
管理サーバ200は、検索結果をユーザに確認するか否かを判定する(ステップS328)。ユーザに検索結果を確認する場合(S328:確認する)、管理サーバ200は、検索結果をユーザに提示する(ステップS330)。検索結果として、コピー処理可能期間及びコピー速度の選択肢が提示される。検索結果の提示画面の一例を図14に示す。各段階のコピー速度について、コピー処理が選択できるか否かと、選択できる段階については、コピー処理可能期間におけるコピー処理の予測開始時刻及びそのコピー処理可能期間にそのコピー速度でコピー処理を行った場合の予測終了時刻が示される。ユーザは、選択可能な段階のコピー速度を指定し、指定した段階のコピー速度でコピー処理を行うか否かを選択する。ユーザがコピー処理を行う旨を選択しなかった場合(S332:キャンセル)、管理サーバ200は処理を終了する。ユーザがコピー処理を行う旨を選択した場合(S332:選択)、管理サーバ200は、S350に処理を進める。
ユーザに結果の確認をしない場合(S328:確認しない)は、管理サーバ220は、自動でコピー処理の開始時刻及びコピー速度の段階を決定し(ステップS340)、ステップS350に処理を進める。コピー処理の開始時刻及びコピー速度の段階は、本番環境システムがサービスとして定義しているまたはユーザが指定した制限期間内にコピー処理が終了するように決定される、または、コピー処理が一番早く終了されるように決定されるなど、どのような基準で決定されてもよい。
管理サーバ200は、ユーザが確認した(または指定した)コピー処理の開始時刻及びコピー速度を含む情報と共に、コピー処理の実行の指示をコピー処理サーバに送信し(ステップS350)、処理を終了する。
上記の処理の後、コピー処理サーバ100は、S350のコピー処理の実行指示を受信した場合、指定された開始時刻及びコピー速度でコピー処理を実行する。具体的には、例えば、コピー処理サーバ100は、S350のコピー処理の実行指示を受信した場合、対象データのコピー元及びコピー先を特定し、対象データをコピー元から読み出してコピー先に送信する処理であってもよいし、コピー処理サーバ100が、コピー先及びコピー元の情報などの対象データの情報を含むコピー命令を、対象データのコピー元またはコピー先のストレージ装置500に送信してもよい。
上記処理により、対象LUのLU帯域使用量に余裕のある期間(コピー処理可能期間)に、そのコピー処理可能期間にみあった適切なコピー速度で、本番環境システムから開発環境システムへの、対象データのコピー処理を行うことができる。これにより、本番環境システムが有するリソースへのコピー処理の影響を低減できる。
また、管理サーバ200が、対象データのコピー処理の開始時刻とコピー速度を含めたコピー指示をコピー処理サーバ100に送信することで、コピー処理サーバ100は、自身の機能を追加することなく、対象データのコピー処理を実行することができる。
以下、実施例3を説明する。以下では、実施例1または2と異なるところを主に説明し、実施例1または2と重複するところの説明を省略または簡略する。実施例3では、実施例1及び2とは別のコピー処理方法が行われる。
図15は、第3のコピー処理方法を説明する図ある。第3のコピー処理方法は、対象LUを利用するアプリケーションの実行期間をずらすまたは中止するという方法である。図15の上図では、対象LUに対してAPP#1とAPP#3とが動作しており、これらのアプリケーション304による対象LUのIO帯域使用量の各時刻における合計値は、対象LUのLU帯域使用量のおおよそ最大値(MAX)となっている。また、図の期間においては(t0→t1)、これらのアプリケーション(APP#1、#3)は継続して動作している。さらに、APP#1は、対象データを利用するアプリケーションであり、APP#3は、APP#1と関連性のないアプリケーションであるとする。このような場合に、いずれかのアプリケーションの実行期間をずらすことができれば、そのずらした期間の帯域を利用してコピー処理を実行できる。一方、実行期間をずらすことができるアプリケーションとできないアプリケーションがある。ここでは、APP#1は、実行期間をずらすまたは実行を中止することができないアプリケーションであるとする。一方、APP#3は、バックアップ処理を実行するアプリケーションであるため、実行期間をずらすことができるとする。この場合、図15の下図に示すように、APP#3の実行期間をずらして、ずらした期間にコピー処理を実行できる。本図の例では、対象データについて、高速でのコピー処理(コピー速度「高」)を選択できない。高速でコピー処理を実行した場合、そのコピー帯域使用量と、APP#1によるIO帯域使用量との各時刻の合計が、対象LUの使用可能なLU帯域使用量の最大値(MAX)を超えてしまうためである。このとき、APP#3の開始時刻をt0からt2にずらすことで、対象データのコピー速度について「中」を選択できる。これにより、アプリケーション304による対象LUのIOによる負荷を考慮したコピー処理ができる。このとき、コピー処理サーバ100に関連するアプリケーションのみならず、関連しないアプリケーション304のIOによる負荷も考慮できる。
図16は、第3のコピー方法判定処理のフローチャートである。
第3のコピー方法判定処理は、第3のコピー処理方法を優先して用いる。つまり、第3のコピー方法判定処理は、主に、第3のコピー処理方法が実行可能か否かを判定する。管理サーバ200は、コピー処理サーバ100より通知されたコピー命令(図6のS110参照)に含まれる対象データの情報と、ストレージIO負荷情報1500と、アプリケーションIO負荷1000とから、対象LUのIOによる帯域使用量(IO帯域使用量)をアプリケーション毎に予測する(ステップS400)(図15上図参照)。予測される値は、例えば図8に示す値であってよい。
管理サーバ200は、段階ごとに設定されたコピー速度と、対象データの情報に含まれる対象データのサイズに基づき、コピー速度の各段階において必要なコピー処理期間及びコピー処理の帯域使用量(コピー帯域使用量)を算出する(ステップS410)。このステップにより、例えば、図15の下図のYの各段階(高、中、低)が決定される。
管理サーバ200は、対象LUを利用するアプリケーション304のうち、実行期間を変更できるアプリケーション304を検索する(ステップS420)。実行期間を変更できるアプリケーション304は、例えば、予め設定されたアプリケーション304の優先順位または制約情報(図示なし)に従って決定されてもよい。アプリケーションの制約情報としては、例えば、最終顧客が利用するような業務のアプリケーションについては、その動作を停止または遅延させることはできず、バックアップ処理のアプリケーションについては、その動作の停止または遅延を許容できるとしてもよい。なお、優先順位及び制約情報は、設定ファイルとして予め管理サーバ200のメモリに記憶されてもよいし、ユーザの指定によってもよい。なお、管理サーバ200は、このステップを行わず、優先順位及び制約情報を考慮しないコピー処理期間の変更案の一覧を作成して提示し、コピー処理時に、対象データのコピー処理期間をユーザに判断させるようにしてもよい。
管理サーバ200は、検索されたアプリケーションの実行期間を変更することにより確保された期間で、対象データのコピー帯域使用量が確保可能かどうかを確認する(ステップS430)。これらの処理は、設定情報に基づき必要な条件及び回数繰り返される。設定情報は、情報取得処理の際にGUIを介してユーザによって指定され記憶されていてもよいし、事前に定義されてもよい。再検索される場合は(S432:再検索する)、管理サーバ200は、S420に処理を戻す。
検索の結果、実行期間の変更可能なアプリケーションがない場合(S434:変更不可能)、管理サーバ200は、他のコピー処理方法がないか否かを判定する(ステップS438)。他のコピー処理方法がない場合(S438:他の方法なし)、管理サーバ200は、どのアプリケーションの実行期間も変更できず、対象データのコピー帯域使用量分の空きのある期間を確保できなかった場合は、その理由をユーザに通知して(ステップS480)、処理を終了する。他のコピー処理方法がある場合(S438:他の方法あり)、他の実施例のコピー処理方法を実行する。
管理サーバ200は、検索結果をユーザに確認するか否かを判定する(ステップS436)。ユーザに検索結果を確認する場合(S436:確認する)、管理サーバ200は、検索結果をユーザに提示する(ステップS450)。検索結果の提示画面の一例を図17に示す。この例では、実行期間を変更可能なアプリケーションとして、APP#3が示されている。APP#3の実行期間をずらすことで、中速(コピー速度「中」)での対象データのコピー処理を実現できる。ユーザは、指定されたコピー速度(中)で、コピー処理を行うか否かを選択する。ユーザがコピー処理を行う旨を選択しなかった場合(S452:キャンセル)、管理サーバ200は処理を終了する。ユーザがコピー処理を行う旨を選択した場合(S452:選択)、管理サーバ200は、S460に処理を進める。
ユーザに結果の確認をしない場合(S426:確認しない)は、管理サーバ220は、検索された実行期間を変更できるアプリケーション304から、自動的に実行期間を変更するアプリケーション304を決定し(ステップS440)、ステップS460に処理を進める。自動的に実行期間を変更するアプリケーション304を決定する方法としては、例えば、予め定義された制約条件を確認する、SLAが守れることを確認するなどがある。
管理サーバ200は、ユーザが指定した、または自動で決定されたアプリケーション304の実行期間を一時的に変更する(ステップS460)。例えば、管理サーバ200は、アプリケーション304の開始時刻を、指定された時間だけずらすようにしてもよいし、対象データのコピー処理が終了したのを契機に、アプリケーション304の実行を開始するように設定してもよい。
管理サーバ200は、ユーザが確認した(または指定した)コピー処理の開始時刻及びコピー速度を含む情報と共に、コピー処理の実行の指示をコピー処理サーバに送信し(ステップS470)、処理を終了する。
上記の処理の後、コピー処理サーバ100は、S470のコピー処理の実行指示を受信した場合、指定されたコピー処理の開始時刻及びコピー速度でコピー処理を実行する。具体的には、例えば、コピー処理サーバ100は、S470のコピー処理の実行指示を受信した場合、対象データのコピー元及びコピー先を特定し、対象データをコピー元から読み出してコピー先に送信する処理であってもよいし、コピー処理サーバ100が、コピー先及びコピー元の情報などの対象データの情報を含むコピー命令を、対象データのコピー元またはコピー先のストレージ装置500に送信してもよい。
上記処理により、対象LUのLU帯域使用量に余裕のない場合には、対象LUを利用するアプリケーション304の実行期間を変更することで、そのアプリケーションによる対象LUのIO帯域使用量を削減し、LU帯域使用量の空きのある期間を作り、その期間にあった適切なコピー速度で、本番環境システムから開発環境システムへの、対象データのコピー処理を行うことができる。これにより、本番環境システムが有するリソースへのコピー処理の影響を低減できる。
また、管理サーバ200が、対象データのコピー処理の開始時刻と、コピー速度を含めたコピー指示をコピー処理サーバ100に送信することで、コピー処理サーバ100は、自身の機能を追加することなく、対象データのコピー処理を実行できる。
上記において、第1乃至第3のコピー処理方法を説明した。これらのコピー処理方法を利用することで、従来、コピー処理サーバ100から認識できなかったアプリケーションの動作を考慮したコピー処理を行うことができる。このため、本番環境システムのリソースへの影響を抑えた、対象データのコピー処理を行うことができる。なお、第1乃至第3のコピー方法判定処理は、それぞれ独立している。各コピー処理方法において他のコピー処理方法へ処理を進めるとの判定が行われた場合(ステップS250、S370、S490)に、他のコピー方法判定処理方法がおこなわれてよい。例えば、第1、第2、第3の順序でコピー方法判定処理方法を行ってもよいし、どのような順序でおこなわれてよい。
以下、実施例4を説明する。以下では、実施例1乃至3と異なるところを主に説明し、実施例1乃至3と重複するところの説明を省略または簡略する。実施例4では、実施例1乃至3のコピー方法判定処理の中で補足的に行われるスナップショット適用処理である。
図18は、実施例4のスナップショット適用処理を説明する図である。実施例4のスナップショット適用処理は、コピー処理サーバ100が対象LU内の複数のデータをコピー処理対象にした場合に行われる。コピー処理サーバ100は、ユーザがコピー指示により指定したデータだけでなく、指定したデータを利用するアプリケーション304に関連するアプリケーション304が利用するデータのコピー処理を行う場合がある。このため、コピー指示により、ユーザが指定したデータ以外のデータもコピー処理の対象となり得る。コピー処理サーバ100は、基本的に、データの関連性の順序を保持し、この順序に従いデータのコピー処理を行っている。なお、複数のデータ間に関連がある場合とは、例えば、これら複数のデータが、同じベンダが提供するアプリケーションで作成された場合などである。
図18においては、LU#1内の4つのファイル内のデータ(d#1乃至4)に関連性がある。ユーザのコピー指示には、例えば、コピー処理の対象データとして、左端のファイルのデータ(d#1)が指定される。ここで、対象データ(d#1)が別のデータ(d#2)を参照し、このデータ(d#2)が別のデータ(d#3)を参照し、このデータ(d#3)が別のデータ(d#4)を参照しているとする。このとき、データ(d#2、d#3、d#4)は、対象データ(d#1)に対して関連性を有するため、関連データと呼ばれる。このとき、関連性の順序において、データ(d#2)の順序は1であり、データ(d#3)の順序は2であり、データ(d#4)の順序は3である。また、ユーザのコピー指示には、対象データに関連性のある関連データをコピー処理に含める旨と、対象データに対し、どの順序までの関連データまでをコピー処理に含めるかを示す値である参照段数とが含まれてもよい。この場合、コピー処理サーバ10は、対象データ(d#1)だけではなく関連データも認識し、コピー処理を行う。なお、参照段数が1の関連データを含めたコピー処理を行う旨のコピー指示を受信した場合、コピー処理サーバ100は、対象データ(d#1)と、対象データ(d#1)に関連する1つの関連データ(d#2)とのコピー処理を行う。また、参照段数が3の関連データを含めたコピー処理を行う旨のコピー指示を受信した場合、コピー処理サーバ100は、対象データ(d#1)と、対象データ(d#1)に関連する関連データ(d#2)と、その関連データ(d#2)に関連する関連データ(d#3)と、さらにその関連データ(d#3)に関連する関連データ(d#4)とのコピー処理を行う。
図19は、対象データのコピー処理のタイミングを説明する図である。
上述したように、第1乃至第3のコピー処理方法では、対象データを含む複数のデータについてのコピー処理は実現できる。しかし、本実施例では、対象データのコピー処理について、LUよりも小さな領域をコピー処理の単位として認識することで、より効率的なコピー処理を実現できる。具体的には、例えば、第1乃至第3のコピー処理方法では、対象データを含む複数のデータのコピー処理が一度に行えない場合、管理サーバ200は、その一部のデータの領域のスナップショットを、コピー先である開発環境システムに作成することをストレージ装置500に指示する。この際、重要度が低い、参照される可能性が低い、または、参照されても利用回数が少ないと判断できるデータの領域のスナップショットが作成されてよい。
管理サーバ200は、その後、本番環境システムにおいて、対象LUのLU帯域使用量が低いときに、スナップショットが作成された領域のデータのコピー処理を行う旨のコピー指示をコピー処理サーバ100に送信する。このように、複数のデータのうちスナップショット作成の対象となる対象領域のスナップショットをコピー先である開発環境システムに作成することで、対象データを含む複数のデータのうちの一部のデータのコピー処理の開始時刻を変更できる。なお、この場合、アプリケーションIO負荷情報1000には、アプリケーションIO履歴情報1050で取得されたLBA毎の、IO帯域使用量の情報も含めてよい。
この図では、LU#1における、d#3及び#4の格納領域のスナップショットを開発環境システムに提供し、LU#1のLU帯域使用量が低く、d#3及び#4のコピー処理を実行しても、LU#1における使用可能なLU帯域使用量の最大値(MAX)を超えないときに、d#3、4のコピー処理を実行する。具体的には、例えば、コピー処理サーバ100は、ユーザからの指定に基づくコピー命令を管理サーバ200に送信する。この際、コピー命令には、対象データの識別子(d#1)と、対象データの格納領域(LU#1、LBA)と、関連データのコピーを行う旨の指示と、対象データを含んだデータ数(4)または対象データからの参照段数(3)とが含まれてよい。そして、管理サーバ200は、コピー命令に基づき、対象データを含む複数のデータのそれぞれについて、第1乃至第3のコピー方法判定処理により、コピー処理の開始時刻、コピー速度、及びコピー処理方法を決定し、決定した情報を含めたコピー指示を、コピー処理サーバに送信する。この際、管理サーバ200は、対象データを含む複数のデータ(d#1乃至4)それぞれについてのコピー指示を送信してもよいし、続けてコピー処理されるデータをまとめたコピー指示を送信してもよい。例えば、管理サーバ200は、対象データ(d#1)と関連性の順序1の関連データ(d#2)をコピーするためのコピー指示と、データ(d#3)を対象データとし、対象データと関連性の順序1の関連データ(d#4)をコピーするためのコピー指示とを、それぞれ、コピー処理サーバ100に送信してもよい。
なお、開発環境システムにおいて、ホスト301がd#3及び#4のスナップショットにアクセスした場合、実際には本番環境システムのデータであるd#3及び#4へのアクセスが発生する。また、スナップショットが作成された領域へのアクセス頻度や開始時刻を考慮すれば、開発環境システム側のサーバは、コピー処理が予定されているデータを効率よく利用することができる。さらに、対象LUについて、IO帯域使用量などを考慮したコピー処理を行うことにより、対象データを含む複数のデータのすべてのデータを続けてコピーする場合に比べて、本番環境システムのリソースへの影響を抑えたコピー処理が行うことができる。
図20は、コピー処理範囲の指定画面の一例である。
スナップショットを作成する領域は、予め、例えばコピー処理開始時にユーザが指定してもよい。この場合の画面イメージを図20に示す。
ユーザは、コピー処理を行う時間であるコピー範囲と、対象データからの参照段数と、参照段数以下の関連性の順序のうちスナップショットの作成を開始する順序である開始段数とを指定する。なお、以下の説明及び図面では、関連性の順序においてデータが他のデータを参照する回数の単位を「ホップ」という場合がある。例えば、データAがデータBと関連性があり、データBがデータCと関連性がある場合、データBはデータAの1ホップ先のデータであり、データCはデータAの2ホップ先のデータである。ユーザがスナップショットを作成する開始段数を指定することで、本番環境システムのリソースに影響を与えない範囲を指定でき、効率よく対象領域のデータを開発環境システムにコピーすることができる。
図21は、スナップショット適用処理のフローチャートである。
スナップショット適用処理は、第1乃至第3のコピー方法判定処理のいずれかまたはすべてを行った後に行われるか、またはこれらのコピー方法判定処理の中に組み込まれてよい。具体的には、管理サーバ200は、第1乃至第3のコピー方法判定処理のいずれかにおいて他のコピー処理方法へ進んだときに、この処理が組み込まれてよい(図10、S260、図13、S370、図16、S490)。また、スナップショット適用処理は、第1乃至第3のコピー方法判定処理の前に行われてもよい。
まず、管理サーバ200は、対象データ含む複数のデータについて、スナップショットを作成可能な領域を特定する(ステップS500)。
スナップショットを作成可能な領域がない場合(S502:領域なし)、管理サーバ200は、第1乃至第3のいずれかのコピー方法判定処理に処理を戻し、ユーザへスナップショットが作成できない旨をユーザに通知し(S240、S360またはS480)、処理を終了する。
スナップショットを作成可能な領域がある場合(S502:領域あり)、管理サーバ200は、特定した領域のスナップショットを作成する(ステップS510)。管理サーバ200は、対象LUにおいて、スナップショットを作成した領域を除いた領域のデータのコピー処理ができるか否かを判定する(ステップS520)。具体的には、例えば、管理サーバ200は、上述した第1乃至第3のいずれかのコピー方法判定処理により、判定してよい。
なお、管理サーバ200は、スナップショットを作成した領域を除いた領域のデータについてコピー処理が可能な場合は、第1乃至第3のコピー方法判定処理に処理を戻す(a)。具体的には、例えば、管理サーバ200は、スナップショットを作成していない領域の場所と容量を、第1乃至第3のコピー方法判定処理に渡す。なお、スナップショットを作成した領域を除いた領域のデータについて、コピー処理が可能なことを確認できない場合、管理サーバ200は、その旨をユーザに通知するようにしてもよい。
また、管理サーバ200は、第1乃至第3のコピー方法判定処理において、スナップショットが作成された領域以外の領域のデータについてのコピー処理が終了した後、スナップショットが作成された領域のデータのコピー処理が実行できるか否かを確認する(ステップS530)。管理サーバ200は、スナップショットが作成された領域のデータについて、第1乃至第3のコピー方法判定処理に処理を戻す(a)。具体的には、例えば、管理サーバ200は、スナップショットが作成された領域の場所と容量を、第1乃至第3のコピー方法判定処理に渡す。
上記処理により、最初のコピー処理可能期間にコピー処理を行う事が出来なかったデータについては、その後のコピー処理可能期間にコピー処理を行うことができる。また、コピー処理可能期間に、対象データを含む複数のデータのすべてのコピー処理を行う事が出来ない場合であっても、スナップショットの作成が可能なデータの領域のスナップショットを開発環境システムに作成することで、開発環境システムは、対象データを含む複数のデータのコピー処理が完了する前に、そのすべてのデータを利用する事が出来る。これにより、対象LUについて、IO帯域使用量などを考慮したコピー処理を行うことができ、対象データを含む複数のデータのすべてのデータを続けてコピーする場合に比べて、本番環境システムのリソースへの影響を抑えたコピー処理が行うことができる。
なお、スナップショットを作成しなかった領域と、スナップショットを作成した領域で同じコピー方法判定処理を行う必要はなく、それぞれ別のコピー方法判定処理を実行してもよい。ただし、スナップショットを作成した領域のコピー処理は必須である。例えば、管理サーバ200は、本実施例のスナップショット適用処理を用いれば、第1乃至第3のコピー方法判定処理によって、対象データを含む複数のデータのコピー処理が実現できると判断できた場合に、別途スナップショットを作成した領域におけるデータのコピー処理の開始時刻及び終了時刻を確認し、その情報とともに本実施例のスナップショット適用処理を実行するかを判断するようにしてもよい。例えばステップS220、S330、S450のユーザに情報を提示するタイミングで、スナップショットを適用しない領域について、そのコピー処理の結果と共にスナップショットを適用した領域のコピー処理の実施予定を提示して、ユーザに判断させるようにしてもよい。
以下、実施例5を説明する。以下では、実施例1乃至4と異なるところを主に説明し、実施例1乃至4と重複するところの説明を省略または簡略する。実施例5では、第1乃至第3のコピー処理方法、前述のスナップショット適用処理のための順序変更処理である。
図22は、実施例5の順序変更処理を説明する図である。
順序変更処理は、ユーザのコピー指示により指定された対象データと関連する関連データが、対象LUの領域のみならず、別のLUの領域にも存在する場合に行われる。具体的には、図22の例においては、LU#1内の3つのファイル内のデータ(d#5、d#7、d#8)とLU#2内の1つのファイル内のデータ(d#6)に関連性がある。また、ユーザのコピー指示には、例えば、コピー処理の対象データとして、左上のファイルのデータ(d#5)が指定される。この場合、コピー処理サーバ10は、対象データ(d#5)だけではなく関連データも認識し、コピー処理を行う。例えば、参照段数が3の関連データを含めたコピー処理を行う旨のコピー指示を受信した場合、コピー処理サーバ100は、対象データ(d#5)と、対象データ(d#5)に関連する関連データ(d#6)と、その関連データ(d#6)に関連する関連データ(d#7)と、さらにその関連データ(d#7)に関連する関連データ(d#8)とのコピー処理を行う。
図23は、対象データのコピー処理の順番を説明する図である。
一般に、対象データを含む関連性のある複数のデータは、ユーザのコピー指示により指定された対象データからの参照段数の値が増えるに従い、そのデータの重要度が下がっていくと考えられる。一方、コピー処理サーバ100は、対象データを含む複数のデータの関連性の順序を変更したコピー処理を実行することができない。このため、コピー処理サーバ100は、基本的に、対象データの関連性の順序を保持し、この順序に従い対象データのコピー処理を行っている。
図23の左図は、通常の場合、つまり対象データを含む複数のデータの関連性の順序に従う場合のコピー処理サーバ100が保持している対象データを含む複数のデータの関連性の順序を示している。この場合、図23の例においては、コピー処理は、d#5、d#6、d#7、d#8の順序で行われる。しかし、例えば、LU#2において、使用可能なLU帯域使用量が不足している場合、その分、データ(d#6)のコピー処理に待ちが発生してしまい、データの関連性の順序通りにコピー処理を行ったとすれば、結果としてコピー処理全体の終了時刻を遅くしてしまう。
上記の状況において、本実施例の順序変更処理を用いた場合の、対象データを含む複数のデータのコピー処理の順序を図23の右図に示す。
前提として、コピー処理サーバ100は、ユーザからの指定に基づくコピー命令を管理サーバ200に送信する。この際、コピー命令には、対象データの識別子(d#5)と、対象データの格納領域(LU#1、LBA)と、関連データのコピー処理を行う旨の指示と、対象データを含んだデータ数(4)または対象データからの参照段数(3)とが含まれてよい。
管理サーバ200は、コピー命令に基づき、通常の場合における、対象データを含む複数のデータ(d#5乃至8)のコピー処理の終了時刻を、通常の終了予定時刻として予測する(図23の右図参照)。図示例では、LU#2の使用可能なLU帯域使用量が不足しており、対象データ(d#6)のコピー処理に待ちが発生しているため、データ(d#6)がコピー処理全体のボトルネックになると考えられる。このため、管理サーバ200は、データ(d#6)の待ち時間の間に、データ(d#7、d#8)のコピー処理を実行した場合のデータ(d#7、d#8)のコピー処理の終了時刻を、仮の終了時刻として予測する(図23の右図参照)。さらに、管理サーバ200は、データ(d#7、d#8)のコピー処理を実行した後にデータ(d#6)のコピー処理を実行した場合の、コピー処理全体の終了時刻を、調整後の終了予定時刻として予測する(図23の右図参照)。図のように、通常の終了予定時刻よりも調整後の終了予定時刻のほうが早い場合、開発環境システムに、ボトルネックとなるデータ(d#6)のスナップショットを作成するか、または、データ(d#6)を含むデータのスナップショットを作成する。そして、スナップショットを作成したデータについては、そのデータが格納されるLU#2の帯域に余裕のあるときに、コピー処理を行ってよい。
図24は、順序変更処理のフローチャートである。
実施例5の順序変更処理は、第1乃至第3のコピー方法判定処理のいずれかが行われた後に行われるか、またはこれらのコピー方法判定処理の中に組み込まれる処理であってよい。具体的には、管理サーバ200は、第1乃至第3のコピー方法判定処理において他のコピー方法判定処理へ進んだときに、この処理が組み込まれてよい(図10、S260、図13、S370、図16、S490)。また、スナップショット適用処理は、第1乃至第3のコピー方法判定処理の前に行われてもよい。
まず、管理サーバ200は、コピー処理サーバ100からコピー命令を受信し、コピー命令に含まれる対象データ及び関連データを特定する。(ステップS600)。
管理サーバ200は、対象データを含む複数のデータの関連性の順序に従った順序でコピー処理を行った場合の終了時刻(通常の終了予定時刻)を算出する(ステップS610)。この際、管理サーバ200は、特定した複数のデータのコピー処理をした場合に、最も早く終了する時刻を調べる。具体的には、例えば、管理サーバ200は、各データに対して第1乃至第3のいずれかのコピー方法判定処理、またはこれらのコピー方法判定処理を組み合わせて、最も早い時間にコピー処理を終了できるコピー処理方法を調べる。
管理サーバ200は、対象データを含む複数のデータについて、関連性の順序に従った通常のコピー処理を行った場合に、待ちの発生するデータがあるか否かを調べる。調べた結果、LU帯域使用量の不足により待ちの発生するデータがあり、そのデータのコピー処理の開始が遅れる場合、管理サーバ200は、ここをボトルネックと判断する。管理サーバ200は、ボトルネックが存在するか否かを判定する(ステップS612)。ボトルネックが存在しない場合(S612:ボトルネックなし)、管理サーバ200は、ステップS640に処理を進める。一方、ボトルネックが存在する場合(S612:ボトルネックあり)、管理サーバ200は対象データを含む複数のデータの関連性の順序を変更した場合のコピー処理の終了時刻である、調整後の終了時刻を算出する(ステップS620)。なお、このとき、管理サーバ200は、ボトルネックとなるデータが格納されたLU600以外のLU600に格納されたデータについてのみコピー処理を行った場合のコピー処理の終了時刻(仮の終了予定時刻)を算出する。そして、管理サーバ20は、仮の終了予定時刻後にボトルネックとなるデータのコピー処理を行うように順序を変更した場合の複数のデータすべてのコピー処理の終了時刻を、調整後の終了時刻として算出してもよい。
管理サーバ200は、S620で算出した調整後の終了時刻の結果を、ユーザに確認するか否か判定する(ステップS622)。確認しない場合(S622:確認しない)、管理サーバ200は、再検索が必要であれば(S622:再検索実施)S610に処理を戻し、再検索が必要でなければ(S622:再検索しない)、S640に処理を進める。なお、ユーザに結果を確認しない場合は、当初の予定よりもコピー期間が短縮できている、などの判断理由を元に自動的に適用可否を判断してもよい。この場合、スナップショットの適用により自動的にコピー処理の順序が変更になるため、管理サーバ200は、この順序変更後のボトルネックの有無をさらに確認してもよい。この判断は、ユーザによる指示のほか、当初の処理期間と比べた場合の処理期間の削減率などをきっかけに、自動的にするようにしてもよい。
一方、ユーザに調整後の終了時刻の結果を確認する場合(S622:確認する)、管理サーバ200は、ユーザに結果を通知する(ステップS630)。ユーザへの結果の通知画面の一例を図25に示す。通知画面では、通常の終了予定時刻(Original End Time)と、仮の終了予定時刻(Copy End Time)と、調整後の終了予定時刻(Complete End Time)と、を表示している。ユーザは、この画面に従いコピー順序を変更したコピー処理を実行するか否かを決定する。
管理サーバ200は、順序変更処理を行うか否かを判定する(S632)。順序変更処理を実行しない場合(S632:キャンセル)、管理サーバ200は、処理を終了する。一方、順序変更処理を実行する場合(S632:実行)、管理サーバ200は、再検索を実施するとき(S624:再検索実施)は、S610に処理を戻し、再検索を実施しないとき(S624:再検索しない)は、S640に処理を進める。
管理サーバ200は、ボトルネックとなるデータの記憶領域のスナップショットを作成する旨の命令を、そのデータを記憶するストレージ装置500に送信する(S640)。そして、管理サーバ200は、スナップショットを作成した以外のデータについて、第1乃至第3のコピー方法判定処理に処理を戻す(a)。具体的には、例えば、管理サーバ200は、スナップショットを作成した以外のデータが格納される領域の場所とデータのサイズ、データのコピー順序などを、第1乃至第3のコピー方法判定処理に渡す。
第1乃至第3のコピー方法判定処理の終了により、ボトルネックとなるデータ以外のデータのコピー処理は終了している。このため、管理サーバ200は、コピー処理サーバ100に対し、ボトルネックとなるデータのコピー処理の実行を指示する(ステップS650)。このように、順序変更処理を実行し、ボトルネックとなるデータのスナップショット作成することで、の関連性を維持した順序で、開発環境システムに対象データを含む複数のデータを提供できる。このため、開発環境システムにおいては、コピー処理にかかる期間を意識せずに対象データを含む複数のデータを利用できる。なお、本実施例ではスナップショットを多用する可能性があるため、コピー先からのアクセス発生状況を考えた上で適用可否を判断する必要がある。例えば、コピー先環境でコピーしたデータを利用する時刻が確定している場合という状況であれば、本方法を適用しやすい。上記では、ボトルネックとなる対象データの記憶領域のみのスナップショットを作成する例を示したが、これに限られない。例えば、管理サーバ200は、対象データを含む複数のデータの記憶領域のすべてのスナップショットを作成するように、ストレージ装置500に命令してもよい。また、スナップショットを作成する領域は、予め、例えばコピー処理開始時にユーザが指定してもよい。
以上の方法により、本番環境システムのリソースに対する影響抑えて、対象データを含む複数のデータのコピー処理を実現することができる。なお、以上の実施例ではストレージ装置500に記憶されたデータのコピー処理を対象にしていたが、対象データは仮想マシン(仮想ストレージ装置)に記憶されていてもよい。本実施例を適用することで仮想マシンが利用している環境のリソースに対するに影響を抑えた対象データのコピー処理を実現できる。この場合、管理サーバ200は、本番環境システムの全てのホスト301の情報を把握しており、各ホスト301のCPUやメモリの利用状況の他、ホスト301間のネットワークの負荷情報を把握することで、本番環境システムのリソースへの影響を抑えたコピー処理を実行する。さらに、仮想イメージの移動も含めた仮想マシンのマイグレーション(ストレージマイグレーション)や仮想マシンのクローンも本番環境に影響なく実現することができる。ストレージマイグレーションやクローンの場合は、CPU、メモリ、ホスト間のネットワーク負荷情報に加え、上述のようにストレージの状況も踏まえて処理を実行する。
なお、第1システムは、本番環境システムなどに対応し、第2システムは、開発環境システムなどに対応する。