以下、図面を参照して、第1の実施形態について説明する。図1は、第1の実施形態のシステムの全体構成の一例を示す図である。第1の実施形態のシステムは、運用サイト10と災害対策サイト20とデータサーバ5とリポジトリサーバ6とを含む。運用サイト10は、データサーバ5および災害対策サイト20と、Wide Area Network(WAN)または専用回線を介して相互に通信を行うことができる。災害対策サイト20は、データサーバ5、リポジトリサーバ6、および運用サイト10と、WANまたは専用回線を介して相互に通信を行うことができる。
運用サイト10は、クラウドサービスに使用される運用サーバ1と運用サーバ1を管理する第1管理サーバ2とを含む。運用サーバ1は、例えば、複数のユーザに使用される仮想マシン(Virtual Machine:VM)が搭載されている。第1管理サーバ2は、運用サーバ1とLocal Area Network(LAN)等のネットワークを介して相互に通信を行うことができる。運用サイト10は、複数の運用サーバ1を含んでいてもよい。運用サーバ1は、第1装置の一例である。第1管理サーバ2は、例えば、クラウドコントローラである。
災害対策サイト20は、運用サイト10と同様の構成を有するバックアップサーバ3と第2管理サーバ4とを含む。第2管理サーバ4は、バックアップサーバ3とLAN等のネットワークを介して相互に通信を行うことができる。バックアップサーバ3は、例えば、運用サーバ1に障害が発生した場合、運用サーバ1の代わりに使用される。第2管理サーバ4は、コンピュータ、およびデータ移行管理装置の一例である。バックアップサーバ3は、第2装置の一例である。
データサーバ5は、運用サーバ1が有するデータのうち、ユーザの固有のデータをバックアップデータとして記憶する。
リポジトリサーバ6は、運用サーバ1が有するデータと同一のデータを記憶する。リポジトリサーバ6は、例えば、複数のVMが共通で使用するデータをバックアップ用データとして記憶する。リポジトリサーバ6が記憶するデータは、例えば、VMに適用されるプログラム等の各種データを含むパッケージである。リポジトリサーバ6は、第3装置の一例である。
以下、運用サーバ1のデータのバックアップに関する処理について説明するが、データのバックアップは、データの移行の一例である。例えば、運用サーバ1のVM等を他のサイトに移転させる際にも同様の処理を適用することができる。
図2は、バックアップ方法の第1の例を示す図である。第1の例において、第1管理サーバ2は、運用サーバ1のバックアップ対象のVMに関する全データについて、バックアップデータを取得する(1-1)。運用サーバ1のバックアップ方法は、フルバックアップまたは差分バックアップのいずれであってもよい。バックアップデータは、プログラムおよびユーザの固有データ(例えば、顧客データ)等を含む。第1管理サーバ2は、取得したバックアップデータをデータサーバ5に送信する(1-2)。災害対策サイト20の第2管理サーバ4は、データサーバ5に記憶されたバックアップデータを取得し(1-3)、取得したバックアップデータに基づいて、バックアップサーバ3にVMを構築する(1-4)。
以上の処理により、第2管理サーバ4は、バックアップサーバ3に運用サーバ1内のVMと同様のVMを構築することができる。しかし、図2に示す例では、複数のVMに共通するプログラムがあったとしても、VM毎に全プログラムのバックアップを行うため、バックアップデータの量が多く、処理に時間がかかる。
図3は、バックアップ方法の第2の例を示す図である。第1の例において、第1管理サーバ2は、複数のVMに共通で使用するデータ(プログラム等)を含むパッケージと、ユーザの固有データを区別して、バックアップデータとして取得する(2-1)。第1管理サーバ2は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得する。第1管理サーバ2は、VMのパッケージ構成やOS設定等を含むテンプレートを更新する。
そして、第1管理サーバ2は、取得したパッケージと、テンプレートとを第2管理サーバ4に送信する(2-2)。また、第1管理サーバ2は、ユーザの固有データをデータサーバ5に送信する(2-3)。第2管理サーバ4は、受信したパッケージとテンプレートに基づいて、バックアップサーバ3にVMを構築する(2-4)。第2管理サーバ4は、データサーバ5からユーザの固有データを受信し、ユーザの固有データを含めたVMをバックアップサーバ3に構築してもよい。
以上の処理により、第2管理サーバ4は、バックアップサーバ3に運用サーバ1内のVMと同様のパッケージ構成を有するVMを構築することができる。また、第1管理サーバ2は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得し、第2管理サーバ4に送信するので、バックアップを効率化することができる。しかし、運用サイト10と災害対策サイト20の距離が遠い等の理由により回線速度が遅い場合、パッケージの転送に時間がかかる。
図4は、第1の実施形態におけるバックアップ方法の概要を示す例である。図4に示す例は、第2管理サーバ4がリポジトリサーバ6からパッケージを取得する点で、図3に示す例と異なる。第1管理サーバ2は、複数のVMに共通で使用するデータ(プログラム等)を含むパッケージと、ユーザの固有データを区別して、バックアップデータとして取得する(3-1)。第1管理サーバ2は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得する。第1管理サーバ2は、VMのパッケージ構成やOS設定等を含むテンプレートを更新する。
第1管理サーバ2は、第2管理サーバ4にテンプレートを送信する(3-2)。第2管理サーバ4は、テンプレートに記載されたパッケージを、リポジトリサーバ6または運用サイト10のうち回線速度が速い方から受信する(3-3)。
第1管理サーバ2は、データサーバ5にユーザの固有データを送信する(3-4)。第2管理サーバ4は、受信したパッケージを用いて、バックアップサーバ3にVMを構築する(3-5)。第2管理サーバ4は、データサーバ5からユーザの固有データを受信し、ユーザの固有データを含めたVMをバックアップサーバ3に構築してもよい。
以上のように、第1の実施形態における第2管理サーバ4は、パッケージを、リポジトリサーバ6または運用サイト10のうち回線速度が速い方から受信することにより、迅速にパッケージを取得し、VMを構築することができる。
図5は、運用サーバ1の機能構成の一例を示す図である。運用サーバ1は、ホストOS11と管理エージェント12と複数のVM13とを含む。
ホストOS11は、運用サーバ1のOSである。管理エージェントは、VM13を管理するソフトウェアである。VM13は、ホストOS11上で動作する仮想マシンであり、例えば、ユーザの業務サーバとして使用される。なお、バックアップサーバ3の機能構成は、運用サーバ1の機能構成と同様である。
図6は、第1管理サーバ2の機能構成の一例を示す図である。第1管理サーバ2は、制御部21と送信部22と受信部23と転送部24と記憶部25とを含む。
制御部21は、運用サーバ1のパッケージの転送等に関する各種制御処理を行う。制御部21は、例えば、バックアップ対象のVM13のテンプレート、およびバックアップ対象のパッケージに関するパッケージ管理情報を生成する。
送信部22は、バックアップ対象のVM13のテンプレート、バックアップ対象のパッケージに関するパッケージ管理情報、パッケージをバックアップサーバ3に移行させる指示を第2管理サーバ4に送信する。テンプレートは、VM13内に含まれるパッケージの識別情報、VM13のOSの設定等を含む。パッケージ管理情報は、パッケージ毎の可用リポジトリの識別情報等を含む。可用リポジトリは、リポジトリサーバ6のうち、運用サーバ1に使用されるパッケージと同一のパッケージを記憶するリポジトリサーバ6である。
受信部23は、運用サーバ1からバックアップ対象のパッケージ、およびユーザの固有データを受信する。転送部24は、リポジトリサーバ6からのパッケージ取得成功を示す通知を第2管理サーバ4から受信しない場合、運用サーバ1から受信したバックアップ対象のパッケージを第2管理サーバ4に転送する。また、転送部24は、ユーザの固有データをデータサーバ5に転送する。
記憶部25は、バックアップ対象のVM13のテンプレート、パッケージ管理情報、転送済みのパッケージを記録する転送済みパッケージリスト等を記憶する。パッケージ管理情報および転送済みパッケージリストについて、詳細は後述する。
図7は、第2管理サーバ4の機能構成の一例を示す図である。第2管理サーバ4は、受信部41と特定部42と決定部43と通知部44と構築部45と記憶部46と制御部47とを含む。
受信部41は、運用サーバ1に記憶された移行対象(バックアップ)対象のパッケージの識別情報と、パッケージと同一のパッケージを記憶するリポジトリサーバ6の識別情報と、パッケージをバックアップサーバ3に移行させる指示を受信する。パッケージは、第1データおよび第2データの一例である。なお、第1データおよび第2データは、パッケージに限られず、ユーザの固有データ等であってもよい。バックアップ対象のパッケージの識別情報は、例えば、VM13のテンプレートに記録されている。パッケージを記憶するリポジトリサーバ6の識別情報は、例えば、パッケージ管理情報に可用リポジトリとして記録された識別情報である。
特定部42は、パッケージ管理情報を参照して、複数のリポジトリサーバ6から、運用サーバ1が記憶するバックアップ対象のパッケージと同一のパッケージを記憶するリポジトリサーバ6を特定する。特定部42は、例えば、バックアップ対象のパッケージを記憶する複数のリポジトリサーバ6が存在する場合、その複数のリポジトリサーバ6のうち、バックアップサーバ3との間の回線速度が最速であるリポジトリサーバ6を特定する。リポジトリサーバ6とバックアップサーバ3との間の回線速度は、予め測定され、記憶部46に記憶されている。
決定部43は、運用サーバ1とバックアップサーバ3との間の回線速度と、バックアップサーバ3とリポジトリサーバ6との間の回線速度とに基づいて、運用サーバ1が記憶するパッケージとリポジトリサーバ6が記憶するパッケージとのうちのどちらをバックアップサーバ3に移行させるかを決定する。決定部43は、例えば、運用サーバ1とバックアップサーバ3との間の回線速度と、バックアップサーバ3とリポジトリサーバ6との回線速度を比較して、バックアップ対象のパッケージを運用サーバ1とリポジトリサーバ6のどちらから取得するか決定する。
通知部44は、リポジトリサーバ6からのパッケージの取得が成功した場合、第1管理サーバ2にパッケージ取得成功を示す通知を送信する。
構築部45は、第1管理サーバ2から受信したパッケージまたはリポジトリサーバ6から受信したパッケージを用いて、バックアップサーバ3に仮想マシン(VM13)を構築する。
記憶部46は、バックアップサーバ3とリポジトリサーバ6との間の回線速度を含むリポジトリ管理情報、および運用サイト10と災害対策サイト20との間の回線速度等を記憶する。また、記憶部46は、第1管理サーバ2またはリポジトリサーバ6から受信したパッケージを一時的に記憶する。
制御部47は、バックアップサーバ3におけるパッケージの取得等に関する各種制御処理を行う。制御部47は、例えば、第1管理サーバ2から受信したテンプレートに記録された全パッケージの処理が完了したかの判定を行う。また、各パッケージを取得する際に、パッケージの取得状況を判定し、その結果に応じて、通知部44の送信動作を制御する。
なお、第2管理サーバ4は、上記決定部43の処理を行い、決定した結果を第2管理サーバ4とは異なる他の装置に送信してもよい。そして、他の装置が、決定部43の結果に従って運用サーバ1またはリポジトリサーバ6からパッケージを受信し、バックアップサーバ3の仮想マシンの構築を行ってもよい。
図8は、パッケージ管理情報の一例を示す図である。パッケージ管理情報は、第1管理サーバ2の記憶部25に記憶される。図8に示すようにパッケージ管理情報として、パッケージの識別情報と、パッケージのハッシュ値と、パッケージのサイズと、可用リポジトリの識別情報とが対応付けて記憶されている。可用リポジトリは、運用サーバ1に記憶されたパッケージと同一のパッケージを記憶するリポジトリサーバ6である。
図9は、転送済みパッケージリストの一例を示す図である。転送済みパッケージリストは、第1管理サーバ2の記憶部25に記憶される。転送済みパッケージリストには、図8に示すパッケージ管理情報に含まれるパッケージのうち、第2管理サーバ4に転送したパッケージの識別情報とそのパッケージのハッシュ値とが対応づけて記憶される。また、転送済みパッケージリストには、第2管理サーバ4からパッケージの取得成功通知を受信した場合、そのパッケージの識別情報とそのパッケージのハッシュ値とが対応づけて記憶される。
図10は、リポジトリ管理情報の一例を示す図である。リポジトリ管理情報は、第2管理サーバ4の記憶部46に記憶される。図10に示すように、災害対策サイト20のリポジトリ管理情報として、リポジトリサーバ6の名称であるリポジトリ名と、リポジトリサーバ6のIPアドレスと、災害対策サイト20とリポジトリサーバ6との間の回線速度が対応付けられて記憶されている。なお、本実施形態では、災害対策サイト20内での通信遅延を無視する。よって、図10に示す回線速度は、バックアップサーバ3とリポジトリサーバ6との間の回線速度、および第2管理サーバ4とリポジトリサーバ6との間の回線速度と同一であるとする。
第2管理サーバ4は、例えば、災害対策サイト20内のバックアップサーバ3とリポジトリサーバ6との間の回線速度を測定し、図10に示すリポジトリ管理情報として記憶する。第2管理サーバ4は、例えば、通信障害等により、通信ができない状態である場合、回線速度として「0MB/S」を記憶する。
図11は、運用サイト10と災害対策サイト20との間の回線速度の一例を示す図である。図11に示す情報は、第2管理サーバ4の記憶部46に記憶される。図11に示すように、運用サイト10の名称と、その運用サイト10と災害対策サイト20との間の回線速度とが対応付けて記憶されている。第2管理サーバ4は、例えば、運用サーバ1とバックアップサーバ3との間の回線速度を予め測定し、運用サイトの名称と対応づけて記憶する。
図12は、第1の実施形態における第1管理サーバ2の処理の一例を示すフローチャートである。なお、第1管理サーバ2は、例えば、ユーザの指示に応じて図12に示す処理を開始する。また、第1管理サーバ2は、運用サーバ1のプログラム更新が行われる前後に、図12に示す処理を自動実行してもよい。
制御部21は、運用サーバ1内のVM13のうち、バックアップ対象の全VM13に関して後述のステップS102~S105の処理が完了したか判定する(ステップS101)。ステップS101でNOの場合、制御部21は、バックアップ対象のVM13のうちの一つを選択する(ステップS102)。送信部22は、バックアップ対象のVM13のテンプレートと、パッケージをバックアップサーバ3に移行させる指示を第2管理サーバ4に送信する(ステップS103)。なお、制御部21は、テンプレートを送信する前に、最新の状態に更新する。
制御部21は、バックアップ対象のVM13内の全パッケージの転送処理が完了したか判定する(ステップS104)。ステップS104でNOの場合、第1管理サーバ2は、パッケージ転送処理を実行する(ステップS105)。ステップS105の処理は、バックアップ対象のVM13内のパッケージ毎に実行される。ステップS105について、詳細は後述する。
ステップS104でYESの場合、処理は、ステップS101に移行する。ステップS101でYESの場合、第1管理サーバ2の処理は終了する。
図13は、第1の実施形態における第1管理サーバ2のパッケージ転送処理の詳細を示すフローチャートである。図13に示す処理は、図12のステップS105の処理の詳細である。制御部21は、処理対象のパッケージが転送済みか判定する(ステップS201)。処理対象のパッケージは、テンプレートに含まれるパッケージであり、バックアップ対象のパッケージである。制御部21は、例えば、処理対象のパッケージが転送済みパッケージリスト(例えば、図9)に存在するか判定する。
ステップS201でNOの場合、送信部22は、処理対象のパッケージに関するパッケージ管理情報を、第2管理サーバ4に送信する(ステップS202)。送信部22は、例えば、図8に示す情報のうち、処理対象のパッケージに対応付けられた可用リポジトリを示す情報を第2管理サーバ4に送信する。すなわち、送信部22は、処理対象のパッケージと同一のパッケージを記憶するリポジトリサーバ6の識別情報を送信する。
制御部21は、リポジトリサーバ6からのパッケージ取得成功を示す通知を第2管理サーバ4から受信したか判定する(ステップS203)。制御部21は、例えば、ステップS202の処理後、所定時間待機し、所定時間内にパッケージ取得成功を示す通知を第2管理サーバ4から受信したか判定する。ステップS203でNOの場合、転送部24は、処理対象のパッケージを第2管理サーバ4に転送する(ステップS204)。
ステップS203でYESの場合、またはステップS204の処理後、制御部21は、処理対象のパッケージの識別情報を転送済みパッケージリストに追加する(ステップS205)。ステップS205の処理後、またはステップS201でYESの場合、第1管理サーバ2は、パッケージ転送処理を終了する。
図14は、第1の実施形態における第2管理サーバ4の処理の一例を示すフローチャートである。受信部41は、処理対象のVMのテンプレートと、パッケージをバックアップサーバ3に移行させる指示を第1管理サーバ2から受信する(ステップS301)。ステップS301で受信する処理対象のVMのテンプレートは、図12のステップS103で第1管理サーバ2が送信したテンプレートである。
制御部47は、受信したテンプレートに記録された全パッケージの処理が完了したか判定する(ステップS302)。ステップS302でNOの場合、受信部41は、処理対象のパッケージに関するパッケージ管理情報を受信する(ステップS303)。受信部41が受信するパッケージ管理情報は、図13のステップS202で第1管理サーバ2が送信した情報である。
特定部42は、パッケージ管理情報を参照し、処理対象のパッケージに対応付けられた可用リポジトリが存在するか判定する(ステップS304)。ステップS304でYESの場合、特定部42は、リポジトリ管理情報(例えば、図10)を参照し、パッケージ管理情報において可用リポジトリとして記録されているリポジトリサーバ6のうち、災害対策サイト20との間の回線速度が最速であるリポジトリサーバ6を特定する(ステップS305)。パッケージ管理情報に含まれる、処理対象のパッケージに対応付けられた可用リポジトリが一つである場合、特定部42は、リポジトリ管理情報を参照せず、その可用リポジトリ(リポジトリサーバ6)をパッケージの取得先として特定してもよい。
決定部43は、バックアップサーバ3と特定されたリポジトリサーバ6との回線速度が、運用サーバ1とバックアップサーバ3との間の回線速度(例えば、図11)より速いか判定する(ステップS306)。ステップS306でYESの場合、決定部43は、処理対象のパッケージをリポジトリサーバ6から取得することを決定する(ステップS307)。そして、受信部41は、処理対象のパッケージを、特定されたリポジトリサーバ6から受信する(ステップS308)。
制御部47は、パッケージの取得が成功したかを判定する(ステップS309)。ステップS309でYESの場合、通知部44は、第1管理サーバ2にパッケージ取得成功を示す通知を送信する(ステップS310)。例えば、通信障害等によりパッケージの取得が失敗した場合、ステップS309でNOとなる。ステップS304でNOの場合、またはステップS306でNOの場合、またはステップS309でNOの場合、決定部43は、パッケージを運用サーバ1から取得することを決定する(ステップS311)。
ステップS310、S311の処理後、処理はステップS302に戻る。ステップS302でYESの場合、構築部45は、受信したパッケージを用いて、バックアップサーバ3に仮想マシン(VM13)を構築する(ステップS312)。第2管理サーバ4は、仮想マシンを構築する前に、データサーバ5からユーザの固有データを受信し、ユーザの固有データを含めた仮想マシンを構築してもよい。
以上のように、第1の実施形態の第2管理サーバ4は、回線速度に基づいて、運用サイト10とリポジトリサーバ6のどちらからパッケージを取得するか決定することにより、迅速にパッケージに移行させることができる。これにより、第2管理サーバ4は、データのバックアップを迅速に行うことができる。
また、第2管理サーバ4は、複数のリポジトリサーバ6のうち、第2管理サーバ4との間の回線速度が最速であるリポジトリサーバ6からパッケージを取得するので、バックアップを迅速に行うことができる。
次に、第2管理サーバ4のハードウェア構成の一例を説明する。図15は、第2管理サーバ4のハードウェア構成の一例を示す図である。図15の例に示すように、第2管理サーバ4において、バス100に、プロセッサ111とメモリ112と補助記憶装置113と通信インタフェース114と媒体接続部115と入力装置116と出力装置117とが接続される。
プロセッサ111は、メモリ112に展開されたプログラムを実行する。実行されるプログラムには、実施形態における処理を行うデータ移行管理プログラムが適用されてもよい。
メモリ112は、例えば、Random Access Memory(RAM)である。補助記憶装置113は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。補助記憶装置113に実施形態の処理を行うデータ移行管理プログラムが記憶されていてもよい。
通信インタフェース114は、LAN、WAN等の通信ネットワークに接続され、通信に伴うデータ変換等を行う。
媒体接続部115は、可搬型記録媒体118が接続可能なインタフェースである。可搬型記録媒体118には、光学式ディスク(例えば、Compact Disc(CD)またはDigital Versatile Disc(DVD)等)、半導体メモリ等が適用されてもよい。可搬型記録媒体118に実施形態の処理を行うデータ移行管理プログラムが記録されていてもよい。
入力装置116は、例えば、キーボード、ポインティングデバイス等であり、ユーザからの指示及び情報等の入力を受け付ける。
出力装置117は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザへの問い合わせ又は指示、及び処理結果等を出力する。
図7に示す記憶部46は、メモリ112、補助記憶装置113または可搬型記録媒体118等により実現されてもよい。図7における受信部41、特定部42、決定部43、通知部44、構築部45、および制御部47は、メモリ112に展開されたデータ移行プログラムをプロセッサ111が実行することにより実現されてもよい。
メモリ112、補助記憶装置113および可搬型記録媒体118は、コンピュータが読み取り可能であって非一時的な有形の記憶媒体であり、信号搬送波のような一時的な媒体ではない。
なお、第2管理サーバ4が図15に示す全ての構成要素を含んでいなくてもよく、一部の構成要素が省略されていてもよい。また、一部の構成要素が第2管理サーバ4の外部装置に存在し、第2管理サーバ4が外部装置に接続して、外部装置内の構成要素を利用してもよい。また、第1管理サーバ2のハードウェア構成は、図15に示すハードウェア構成と同様であるとする。
<実施例>
次に、図8~図11の情報を用いて、パッケージ1~3のそれぞれに対する処理について説明する。まず、処理対象パッケージがパッケージ1である場合について説明する。図8に示すようにパッケージ1の可用リポジトリは、リポジトリ1およびリポジトリ3である。特定部42は、図10に示すリポジトリ管理情報を参照して、リポジトリ1およびリポジトリ3のうち、バックアップサーバ3との間の回線速度が速いリポジトリ1を特定する。決定部43は、バックアップサーバ3とリポジトリ1との間の回線速度(5MB/S)と、バックアップサーバ3と運用サーバ1との間の回線速度(1MB/S)(図11)とを比較する。バックアップサーバ3とリポジトリ1との間の回線速度(5MB/S)が速いため、決定部43は、リポジトリ1からパッケージを取得することを決定する。
処理対象パッケージがパッケージ2である場合について説明する。図8に示すようにパッケージ2の可用リポジトリは、リポジトリ2およびリポジトリ3である。特定部42は、図10に示すリポジトリ管理情報を参照して、リポジトリ2およびリポジトリ3のうち、バックアップサーバ3との間の回線速度が速いリポジトリ2を特定する。決定部43は、バックアップサーバ3とリポジトリ2との間の回線速度(0.2MB/S)と、バックアップサーバ3と運用サーバAとの間の回線速度(1MB/S)(図11)とを比較する。なお、運用サーバAは、運用サーバ1の一例である。バックアップサーバ3と運用サーバ1との間の回線速度(1MB/S)が速いため、決定部43は、運用サーバ1からパッケージを取得することを決定する。
処理対象パッケージがパッケージ3である場合について説明する。図8に示すようにパッケージ3の可用リポジトリは、リポジトリ3である。決定部43は、バックアップサーバ3とリポジトリ3との間の回線速度(0MB/S)と、バックアップサーバ3と運用サーバ1との間の回線速度(1MB/S)(図11)とを比較する。バックアップサーバ3と運用サーバ1との間の回線速度(1MB/S)が速いため、決定部43は、運用サーバ1からパッケージを取得することを決定する。
<第2の実施形態>
以下、図面を参照して、第2の実施形態について説明する。図16は、第2の実施形態のシステムの全体構成の一例を示す図である。第2の実施形態のシステムは、運用サイト10と災害対策サイト20とリポジトリサーバ6とを含む。運用サイト10は、災害対策サイト20と、WANまたは専用回線を介して相互に通信を行うことができる。災害対策サイト20は、運用サイト10およびリポジトリサーバ6と、WANまたは専用回線を介して相互に通信を行うことができる。
運用サイト10は、クラウドサービスに使用される運用サーバ1と運用サーバ1を管理する第3管理サーバ7とを含む。運用サーバ1は、例えば、複数のユーザに使用されるVMが搭載されている。運用サイト10は、複数の運用サーバ1を含んでいてもよい。第3管理サーバ7は、運用サーバ1とLocal Area Network(LAN)等のネットワークを介して相互に通信を行うことができる。運用サーバ1は、第1装置の一例である。第3管理サーバ7は、例えば、クラウドコントローラである。運用サーバ1の機能構成は、図5に示す第1の実施形態の機能構成と同様であるとする。
災害対策サイト20は、運用サイト10と同様の構成を有するバックアップサーバ3と第4管理サーバ8とを含む。バックアップサーバ3は、例えば、運用サーバ1に障害が発生した場合に運用サーバ1の代わりに使用される。第4管理サーバ8は、コンピュータ、およびデータ移行管理装置の一例である。バックアップサーバ3は、第2装置の一例である。
リポジトリサーバ6は、運用サーバ1が有するデータと同一のデータをバックアップデータとして記憶する。リポジトリサーバ6は、例えば、仮想マシンに適用されるプログラム等の各種データを含むパッケージを記憶する。リポジトリサーバ6は、第3装置の一例である。
図17は、バックアップ方法の第3の例を示す図である。第3の例において、第3管理サーバ7は、運用サーバ1のバックアップ対象のVMに関する全データについて、バックアップデータを取得する(4-1)。運用サーバ1のバックアップ方法は、フルバックアップまたは差分バックアップのいずれであってもよい。バックアップデータは、プログラムおよびユーザの固有データ(例えば、顧客データ)等を含む。第1管理サーバ2は、取得したバックアップデータを災害対策サイト20の第4管理サーバ8に送信する(4-2)。第4管理サーバ8は、受信したデータに基づいて、バックアップサーバ3にVMを構築する(4-3)。
以上の処理により、第4管理サーバ8は、バックアップサーバ3に運用サーバ1内のVMと同様のVMを構築することができる。しかし、図17に示す例では、図2に示す例と同様に、複数のVMに共通するプログラムがあったとしても、VM毎に全プログラムのバックアップを行うため、バックアップデータの量が多く、処理に時間がかかる。
図18は、バックアップ方法の第4の例を示す図である。第4の例において、第3管理サーバ7は、複数のVMに共通で使用するデータ(プログラム等)を含むパッケージと、ユーザの固有データを区別して、バックアップデータとして取得する(5-1)。第3管理サーバ7は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得する。第3管理サーバ7は、VMのパッケージ構成やOS設定等を含むテンプレートを更新する。
そして、第3管理サーバ7は、取得したパッケージと、テンプレートとを第2管理サーバ4に送信する(5-2)。また、第3管理サーバ7は、ユーザの固有データを第2管理サーバ4に送信する(5-3)。第4管理サーバ8は、受信したパッケージ、テンプレート、およびユーザの固有データに基づいて、バックアップサーバ3にVMを構築する(5-4)。
以上の処理により、第4管理サーバ8は、バックアップサーバ3に運用サーバ1内のVMと同様のパッケージ構成を有するVMを構築することができる。また、第3管理サーバ7は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得し、第4管理サーバ8に送信するので、バックアップを効率化することができる。しかし、運用サイト10と災害対策サイト20の距離が遠い場合、パッケージの転送に時間がかかり、転送中の通信障害により転送が失敗するリスクが高まる。そして、例えば、上記5-2の処理と5-3の処理との間に通信障害が発生した場合、災害対策サイト20のバックアップサーバ3を最新の状態にすることができない可能性がある。
図19は、第2の実施形態におけるバックアップ方法の概要を示す例である。第2の実施形態において、第3管理サーバ7は、複数のVMに共通で使用するデータ(プログラム等)を含むパッケージと、ユーザの固有データを区別して、バックアップデータとして取得する(6-1)。第3管理サーバ7は、複数のVMが共通で使用するパッケージが存在する場合、重複しないように取得する。第3管理サーバ7は、VMのパッケージ構成やOS設定等を含むテンプレートを更新する。
そして、第3管理サーバ7は、取得したパッケージに関するパッケージ管理情報と、テンプレートとを第2管理サーバ4に送信する(6-2)。第4管理サーバ8は、テンプレートおよびパッケージ管理情報を参照し、バックアップ対象のパッケージがリポジトリサーバ6から取得可能か判定する。第4管理サーバ8は、リポジトリサーバ6から取得できないパッケージを示す情報を第3管理サーバ7に通知する(6-3)。第3管理サーバ7は、第4管理サーバ8がリポジトリサーバ6から取得できないパッケージを第4管理サーバ8に送信する(6-4)。
第4管理サーバ8は、第3管理サーバ7からパッケージを取得した後に、リポジトリサーバ6から取得可能なパッケージを取得する(6-5)。また、第3管理サーバ7は、ユーザの固有データを第2管理サーバ4に送信する(6-5)。第4管理サーバ8は、受信したパッケージ、テンプレート、およびユーザの固有データに基づいて、バックアップサーバ3にVMを構築する(6-7)。
以上の処理により、第4管理サーバ8は、バックアップサーバ3に運用サーバ1内のVMと同様のパッケージ構成を有するVMを構築することができる。第4管理サーバ8は、リポジトリサーバ6との間に通信障害等が発生した場合、リポジトリサーバ6から取得できないバックアップ対象のデータを、第3管理サーバ7を介して運用サーバ1から取得する。また、第4管理サーバ8は、第3管理サーバ7からパッケージを取得した後に、リポジトリサーバ6から取得可能なパッケージを取得する。すなわち、第3管理サーバ7からパッケージを優先的に取得するため、運用サイト10と災害対策サイトの距離が遠く、回線障害等が発生しても、バックアップが失敗するリスクを軽減することができる。
図20は、第3管理サーバ7の機能構成の一例を示す図である。第3管理サーバ7は、制御部71と送信部72と受信部73と転送部74と記憶部75とを含む。
制御部71は、運用サーバ1のパッケージの転送等に関する各種制御処理を行う。制御部71は、例えば、バックアップ対象のVM13のテンプレート、およびバックアップ対象のパッケージに関するパッケージ管理情報を生成する。
送信部72は、バックアップ対象のVM13のテンプレート、処理対象のパッケージに関するパッケージ管理情報、およびパッケージのバックアップ指示を第4管理サーバ8に送信する。テンプレートは、VM内に含まれるパッケージの識別情報、VM13のOSの設定等を含む。パッケージ管理情報は、第1の実施形態におけるパッケージ管理情報(例えば、図8)と同様である。
受信部73は、運用サーバ1からバックアップ対象のパッケージ、およびユーザの固有データを受信する。転送部74は、処理対象のパッケージがリポジトリサーバ6から未取得であることを示す情報を、第4管理サーバ8から受信した場合、運用サーバ1から受信したバックアップ対象のパッケージを第4管理サーバ8に転送する。また、転送部74は、運用サーバ1から受信したユーザの固有データを第4管理サーバ8に転送する。
記憶部75は、パッケージに関する情報であるパッケージ管理情報と、転送待ちパッケージを記録する転送待ちパッケージリスト、転送済みのパッケージを記録する転送済みパッケージリストを記憶する。転送済みパッケージリストは、第1の実施形態における転送済みパッケージリスト(例えば、図9)と同様である。
図21は、第4管理サーバ8の機能構成の一例を示す図である。第4管理サーバ8は、受信部81と決定部82と通知部83と構築部84と記憶部85と制御部86とを含む。
受信部81は、運用サーバ1に記憶されたバックアップ対象のパッケージの識別情報と、そのパッケージと同一のパッケージを記憶するリポジトリサーバ6の識別情報と、パッケージのバックアップ指示を受信する。パッケージは、例えば、VM13に適用されるプログラムのパッケージであり、第1データおよび第2データの一例である。なお、第1データおよび第2データは、パッケージに限られず、ユーザの固有データ等であってもよい。バックアップ対象のパッケージの識別情報は、例えば、VM13のテンプレートに記録されている。パッケージを記憶するリポジトリサーバ6の識別情報は、例えば、パッケージ管理情報に可用リポジトリとして記録された識別情報である。受信部81は、さらに、ユーザの固有データを第3管理サーバ7から受信する。
決定部82は、バックアップ対象の複数のパッケージのうち、受信可能なパッケージをリポジトリサーバ6から受信し、リポジトリサーバ6から受信できないパッケージと同一のパッケージを運用サーバ1から受信することを決定する。例えば、通信障害等により、パッケージを記憶するリポジトリサーバ6との通信が困難である場合、決定部82は、パッケージを運用サーバ1から受信することを決定する。なお、第2の実施形態では、運用サーバ1とバックアップサーバ3との間の距離よりリポジトリサーバと6バックアップサーバ3との間の距離の方が近いとする。
通知部83は、決定部83が処理対象のパッケージをリポジトリサーバ6から取得できないことを決定した場合、そのパッケージの識別情報とともに、そのパッケージをリポジトリサーバ6から取得できないことを第3管理サーバ7に通知する。
構築部84は、第3管理サーバ7を介して運用サーバ1から受信したパッケージ、リポジトリサーバ6から受信したパッケージ、およびユーザの固有データを用いて、バックアップサーバ3に仮想マシン(VM13)を構築する。
記憶部85は、第1の実施形態の記憶部46と同様に、リポジトリサーバ6との間の回線速度を含むリポジトリ管理情報(例えば、図10)、運用サイト10と災害対策サイト20との間の回線速度(例えば、図11)を記憶する。記憶部85は、さらに、取得予定のパッケージを示すパッケージ取得リストを記憶する。また、記憶部46は、第1管理サーバ2またはリポジトリサーバ6から受信したパッケージ、およびユーザの固有データを一時的に記憶する。
制御部86は、第3管理サーバから受信したテンプレートに基づいて、転送対象となるパッケージの転送順番を制御する。また、パッケージの転送状況に応じて、パッケージ取得リストの情報を編集する。
図22は、転送待ちパッケージリストの一例を示す図である。転送待ちパッケージリストは、第3管理サーバ7の記憶部75に記憶される。制御部71は、処理対象のパッケージをリポジトリサーバ6から取得できないことを示す通知を、第4管理サーバ8から受信した場合、そのパッケージの識別情報を転送待ちパッケージリストに追加する。制御部71は、転送待ちパッケージリスト内のパッケージを第4管理サーバ8に転送した場合、転送したパッケージの識別情報を転送待ちパッケージリストから削除する。
図23は、パッケージ取得リストの一例を示す図である。制御部86は、例えば、第3管理サーバから受信したテンプレートに基づいて、取得予定のパッケージの識別情報とハッシュ値を記録する。また、決定部82は、処理対象のパッケージをリポジトリサーバ6から取得するか運用サーバ1から取得するかを決定した場合、決定に応じた取得先を記録する。また、取得状況の初期設定は、「未」であり、制御部86は、パッケージを取得した場合、そのパッケージ取得状況を「済」に変更する。
図24は、第2の実施形態における第3管理サーバ7の処理の一例を示すフローチャートである。なお、第3管理サーバ7は、例えば、ユーザの指示に応じて図24に示す処理を実行する。また、第3管理サーバ7は、運用サーバ1のプログラム更新が行われる前後に、図24に示す処理を自動実行してもよい。
制御部71は、運用サーバ1内のVM13のうち、バックアップ対象のVM13に関して後述のステップS402~S405の処理が完了したか判定する(ステップS401)。ステップS401でNOの場合、制御部71は、バックアップ対象のVM13のうちの一つを選択する(ステップS402)。送信部72は、バックアップ対象のVM13のテンプレートとともにパッケージのバックアップ指示を第4管理サーバ8に送信する(ステップS403)。なお、制御部71は、テンプレートを送信する前に、最新の状態に更新する。
制御部71は、バックアップ対象のVM13内の全パッケージの転送処理が完了したか判定する(ステップS404)。ステップS404でNOの場合、第3管理サーバ7は、パッケージ転送処理を実行する(ステップS405)。ステップS405の処理は、バックアップ対象のVM13内のパッケージ毎に実行される。ステップS405について、詳細は後述する。
ステップS404でYESの場合、処理は、ステップS401に移行する。ステップS401でYESの場合、第3管理サーバ7の処理は終了する。
図25は、第2の実施形態における第3管理サーバ7のパッケージ転送処理の詳細を示すフローチャートである。図25に示す処理は、図24のステップS405の処理の詳細である。制御部71は、処理対象のパッケージが転送済みか判定する(ステップS501)。処理対象のパッケージは、テンプレートに含まれるパッケージであり、バックアップ対象のパッケージである。制御部71は、例えば、処理対象のパッケージが転送済みパッケージリスト(例えば、図9)に存在するか判定する。
ステップS501でNOの場合、送信部72は、処理対象のパッケージに関するパッケージ管理情報を、第4管理サーバ8に送信する(ステップS502)。送信部72は、例えば、図8に示す情報のうち、処理対象のパッケージに対応付けられた可用リポジトリを示す情報を第2管理サーバ4に送信する。すなわち、送信部72は、処理対象のパッケージと同一のパッケージを記憶するリポジトリサーバ6の識別情報を送信する。
制御部71は、処理対象のパッケージをリポジトリサーバ6から取得できないことを示す通知を、第4管理サーバ8から受信した場合(ステップS503でYES)、制御部71は、そのパッケージの識別情報を転送待ちパッケージリストに追加する(ステップS504)。転送部74は、処理対象のパッケージを第4管理サーバ8に転送する(ステップS505)。制御部71は、転送したパッケージの識別情報を転送待ちパッケージリストから削除する(ステップS506)。ステップS506の処理後、またはステップS503でNOの場合、制御部71は、転送したパッケージの識別情報を転送済みパッケージリストに追加する(ステップS507)。ステップS507の処理後、またはステップS501でYESの場合、第3管理サーバ7は、パッケージ転送処理を終了する。
図26は、第2の実施形態における第4管理サーバ8の処理の一例を示すフローチャートである。受信部81は、処理対象のVMのテンプレートおよびパッケージのバックアップ指示を第3管理サーバ7から受信する(ステップS601)。ステップS601で受信する処理対象のVMのテンプレートは、図24のステップS403で第3管理サーバ7が送信したテンプレートである。
制御部86は、受信したテンプレートに記録された全パッケージの処理が完了したか判定する(ステップS602)。ステップS602でNOの場合、受信部81は、処理対象のパッケージに関するパッケージ管理情報を受信する(ステップS603)。受信部81が受信するパッケージ管理情報は、図25のステップS502で第3管理サーバ7が送信した情報である。
制御部86は、パッケージ管理情報を参照し、処理対象のパッケージに対応付けられた可用リポジトリが存在するか判定する(ステップS604)。ステップS604でYESの場合、決定部82は、処理対象のパッケージがリポジトリサーバ6から取得可能か判定する(ステップS605)。決定部82は、例えば、リポジトリ管理情報(例えば、図10)において、リポジトリサーバ6の回線速度が0MB/Sでない場合、そのリポジトリサーバ6から取得可能であると判定する。
ステップS605でYESの場合、決定部82は、処理対象のパッケージをリポジトリサーバ6から取得することを決定する(ステップS606)。この場合、決定部43は、パッケージ取得リスト(図23)に、処理対象のパッケージの取得先として「リポジトリサーバ」と記録する。ステップS604でNOの場合、またはステップS605でNOの場合、決定部82は、処理対象のパッケージを運用サーバ1から取得することを決定する(ステップS607)。この場合、決定部82は、パッケージ取得リスト(図23)に、処理対象のパッケージの取得先として「運用サーバ」と記録する。そして、通知部83は、処理対象のパッケージの識別情報とともにそのパッケージをリポジトリサーバ6から取得しないことを第3管理サーバ7に通知する(ステップS608)。ステップS608が実行された場合、図25のステップS505の処理により、第3管理サーバ7からパッケージが転送される。
ステップS606、またはS608の処理後、処理はステップS602に戻る。ステップS602でYESの場合、制御部86は、運用サーバ1から取得することが決定された全パッケージを、運用サーバ1から第3管理サーバ7を介して取得したかを判定する(ステップS609)。制御部86は、例えば、パッケージ取得リスト(図23)で「運用サーバ」と記録されている全パッケージを取得したか判定する。第4管理サーバ8は、パッケージ取得リストで「運用サーバ」と記録されているパッケージが存在しない場合、ステップS609の処理を省略してもよい。制御部86は、運用サーバから取得することが決定された全パッケージを取得するまで、待機する。
ステップS609でYESの場合、受信部81は、リポジトリサーバ6から取得すると決定されたパッケージを、リポジトリサーバ6から受信する(ステップS610)。受信部81は、例えば、パッケージ取得リストを参照し、「リポジトリサーバ」と記録されているパッケージを受信する。また、受信部81は、第3管理サーバ7から、ユーザの固有データを受信する(ステップS611)。構築部84は、受信したパッケージおよびユーザの固有データを用いて、バックアップサーバ3に仮想マシン(VM13)を構築する(ステップS612)。
以上のように、第2の実施形態の第4管理サーバ8は、運用サーバ1とリポジトリサーバ6の両方からパッケージを取得する場合、リポジトリサーバ6からパッケージを取得した後に、運用サーバ1からパッケージを取得する。これにより、第4管理サーバ8は、通信障害等により、リポジトリサーバ6より遠い距離に存在する運用サーバ1からのパッケージ取得が失敗し、バックアップが失敗するリスクを軽減することができる。
なお、第3管理サーバ7および第4管理サーバ8のハードウェア構成は、図15に示す例と同様である。
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で様々な変更、追加、省略が適用可能である。
以上の第1の実施形態および第2の実施形態に関し、更に以下の付記を開示する。
(付記1)
第1装置に記憶された第1データを第2装置に移行させる指示を受け付けた場合、前記第1データと同一の第2データを記憶している第3装置を示す情報を参照し、移行対象の前記第1データと同一の第2データを記憶している第3装置を特定する特定部と、
前記第1装置と前記第2装置との間の回線速度と、前記第2装置と特定された前記第3装置との間の回線速度とに基づいて、前記第1データと前記第2データとのうちのどちらを前記第2装置に移行させるかを決定する決定部と を備えることを特徴とするデータ移行管理装置。
(付記2)
前記特定部は、前記第2データを記憶している前記第3装置が複数存在する場合、前記複数の第3装置のうち、前記第2装置との間の回線速度が最速である前記第3装置を特定する
ことを特徴とする付記1記載のデータ移行管理装置。
(付記3)
前記第1データまたは前記第2データを用いて、前記第2装置に仮想マシンを構築する構築部をさらに備える
ことを特徴とする付記1または2記載のデータ移行管理装置。
(付記4)
第1装置に記憶された第1データを第2装置に移行させる指示を受け付けた場合、前記第1データと同一の第2データを記憶している第3装置を示す情報を参照し、移行対象の前記第1データと同一の第2データを記憶している第3装置を特定し、
前記第1装置と前記第2装置との間の回線速度と、前記第2装置と特定された前記第3装置との間の回線速度とに基づいて、前記第1データと前記第2データとのうちのどちらを前記第2装置に移行させるかを決定する
処理をコンピュータに実行させるためのデータ移行管理プログラム。
(付記5)
コンピュータが、
第1装置に記憶された第1データを第2装置に移行させる指示を受け付けた場合、前記第1データと同一の第2データを記憶している第3装置を示す情報を参照し、移行対象の前記第1データと同一の第2データを記憶している第3装置を特定し、
前記第1装置と前記第2装置との間の回線速度と、前記第2装置と特定された前記第3装置との間の回線速度とに基づいて、前記第1データと前記第2データとのうちのどちらを前記第2装置に移行させるかを決定する
処理を実行することを特徴とするデータ移行管理方法。
(付記6)
第1データを記憶する第1装置と第2装置との間の距離より、前記第1データと同一の第2データを記憶する第3装置と第2装置との間の距離が近い場合、複数の前記第2データのうち、受信可能な前記第2データを前記第3装置から受信し、前記第3装置から受信しない前記第2データと同一の前記第1データを前記第1装置から受信することを決定する決定部と、
前記第3装置から受信しない前記第2データを示す識別情報を前記第1装置に通知する通知部と、
前記第1データを前記第1装置から受信した後に、第2データを前記第3装置から受信する受信部と、を備える
ことを特徴とするデータ移行管理装置。
(付記7)
第1データを記憶する第1装置と第2装置との間の距離より、前記第1データと同一の第2データを記憶する第3装置と第2装置との間の距離が近い場合、複数の前記第2データのうち、受信可能な前記第2データを前記第3装置から受信し、前記第3装置から受信しない前記第2データと同一の前記第1データを前記第1装置から受信することを決定し、
前記第3装置から受信しない前記第2データを示す識別情報を前記第1装置に通知し、
前記第1データを前記第1装置から受信した後に、第2データを前記第3装置から受信する
処理をコンピュータに実行させるためのデータ移行管理プログラム。
(付記8)
コンピュータが、
第1データを記憶する第1装置と第2装置との間の距離より、前記第1データと同一の第2データを記憶する第3装置と第2装置との間の距離が近い場合、複数の前記第2データのうち、受信可能な前記第2データを前記第3装置から受信し、前記第3装置から受信しない前記第2データと同一の前記第1データを前記第1装置から受信することを決定し、
前記第3装置から受信しない前記第2データを示す識別情報を前記第1装置に通知し、
前記第1データを前記第1装置から受信した後に、第2データを前記第3装置から受信する
処理を実行することを特徴とするデータ移行管理方法。