(57)【要約】【課題】データの複製の完了時において業務アプリケーションによるアクセス要求の発行先となるストレージを設定し直す必要のないデータ移行を実現する。【解決手段】業務アプリケーション５０から送信されるアクセス要求の発行先を、移行元ストレージ１０のデバイスノード１０Ａから移行先ストレージ２０のデバイスノード２０Ａに切替える。そして、移行元ストレージ１０のデータを移行先ストレージ２０へと複製する。その一方で、データの複製中に発行された、ストレージ格納データに対する読込処理又は書込処理の要求を、デバイスノード１０Ａに転送し、移行元ストレージ１０に対して処理を実行する。さらに、移行元ストレージ１０で実行された書込処理の対象データが既に複製済みのときに、その対象データを移行先ストレージ２０へ再複製する。そして、データの複製が完了したときに、デバイスノード１０Ａへのアクセス要求の転送を中止する。【選択図】  図１
2010123055.tif 000002
【特許請求の範囲】
【請求項１】
第１のストレージから第２のストレージへとデータ移行を行うデータ移行プログラムであって、
業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替えるステップと、
前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製するステップと、
データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送するステップと、
前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行するステップと、
前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製するステップと、
前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止するステップと、
をコンピュータに実現させることを特徴とするデータ移行プログラム。
【請求項２】
データの複製中に業務アプリケーションから発行された入出力要求が、ストレージ属性の設定要求であるときには、その入出力要求を前記第２のストレージのデバイスノードに対して送信するステップと、
前記第２のストレージのデバイスノードに対して送信されたストレージ属性の設定要求に従い、前記第１のストレージに対してストレージ属性の設定処理を実行するステップと、
をさらに含むことを特徴とする請求項１記載のデータ移行プログラム。
【請求項３】
前記複製するステップは、前記第１のストレージのデータブロックに夫々対応したビットで構成されたビットマップであって各ビットが前記第２のストレージに対するデータの複製が未完了であることを示す未完了値又はデータの複製が完了したことを示す完了値のいずれかを示すビットマップを参照し、そのビットマップを構成する全てのビットが完了値になるまで前記第２のストレージへのデータの複製を行うことを特徴とする請求項１又は請求項２に記載のデータ移行プログラム。
【請求項４】
前記切替えるステップは、業務アプリケーションから発行される入出力要求の発行先を示すドライブレター又はマウントポイントに対してオペレーティングシステムにより関連付けられるストレージのデバイスノードを、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードへと切替えることを特徴とする請求項１〜請求項３のいずれか１つに記載のデータ移行プログラム。
【請求項５】
第１のストレージから第２のストレージへとデータ移行を行うデータ移行方法であって、
業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替えるステップと、
前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製するステップと、
データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送するステップと、
前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行するステップと、
前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製するステップと、
前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止するステップと、
をコンピュータに実行させることを特徴とするデータ移行方法。
【請求項６】
第１のストレージから第２のストレージへとデータ移行を行うデータ移行装置であって、
業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替える手段と、
前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製する手段と、
データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送する手段と、
前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行する手段と、
前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製する手段と、
前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止する手段と、
を含んで構成されたことを特徴とするデータ移行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおいて、ストレージ間でデータを移行する技術に関する。
【背景技術】
【０００２】
コンピュータシステムの運用においては、システムメンテナンスの際に、各サーバに設けられたストレージ（外部記憶装置）を置き換えるべく、ストレージ間におけるデータ移行が行われる。かかるデータ移行作業では、まず、データ移行中に業務アプリケーションによりストレージへの入出力要求（Ｉ／Ｏ（Input／Output）要求）が送信されることを回避するべく、業務アプリケーションの処理を停止させる。そして、移行元ストレージに格納されたデータを、移行先ストレージに複製する。さらに、業務アプリケーションからストレージに対して発行される入出力要求の発行先を、移行元ストレージから移行先ストレージへと切替えた上で、業務アプリケーションの処理を再開する。
【０００３】
ここで、近年では、業務アプリケーションの処理量の増加に伴い、サーバが備えるストレージの容量が増加しており、ストレージ間のデータ移行において移行対象となるデータ量が増加している。このため、移行元ストレージから移行先ストレージへのデータの複製に要する時間が長くなり、業務アプリケーションを停止させなければならない時間が長くなる傾向にある。しかし、その一方で、例えばインターネットを用いて提供されるサービスなど、２４時間３６５日体制でサービスを提供するシステムが増加している。このため、業務アプリケーションの処理を停止した状態でデータの複製を行うことが難しくなってきている。そこで、次のような技術が提案されている。即ち、業務アプリケーションの処理と並行して、移行元ストレージから移行先ストレージへとデータの複製を行う。このとき、データ複製開始後に業務アプリケーションから発行される入出力要求の発行先は、移行元ストレージのままである。このため、ストレージを制御するサブシステム側で、移行元ストレージと移行先ストレージとを対応付けるテーブルを参照して、移行先ストレージを特定する。そして、サブシステム側で、その入出力要求の発行先を移行先ストレージへと変換し、移行先ストレージにおいて、その入出力要求を処理する。このとき、入出力要求が、移行先ストレージへの複製が完了していないデータを対象とする読出処理又は書込処理であるときには、その対象データを移行先ストレージに複製した上で、読出処理又は書込処理を行うようにする。
【０００４】
しかしながら、かかる技術では、データの複製完了後であっても、業務アプリケーション側において入出力要求の発行先の切替えを行わない限り、サブシステム側では、入出力要求の発行先を移行元ストレージから移行先ストレージへと変換し続ける必要がある。かかる変換処理は、ストレージに対するアクセスにおいては本来不要な冗長処理であり、業務アプリケーションの処理遅延の原因となってしまう。このため、かかる変換処理を可能な限り回避するには、システム管理者が、移行先ストレージへのデータの複製が完了した後速やかに、業務アプリケーションから発行される入出力要求の発行先が移行先ストレージとなるように設定を切替えることが望ましい。しかしながら、システム管理者がデータの複製の完了時点を正確に予測することは困難である。データ移行に要する時間は、移行対象となるデータ量やサーバの処理能力等に依存するほか、移行中に業務アプリケーションから発行される入出力要求に応じたストレージの更新量によっても変動するからである。このため、システム管理者がデータの複製の完了時点で業務アプリケーションによる入出力要求の発行先を設定し直すためには、データの複製が完了するのを監視しておかなければならなかった。
【特許文献１】特開２００８−６５４８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
以上のような問題点に鑑み、移行元ストレージから移行先ストレージへのデータの複製の完了時に、システム管理者が業務アプリケーションによる入出力要求の発行先の切替えを行う必要のない、ストレージ間のデータ移行を実現することを目的とする。
【課題を解決するための手段】
【０００６】
開示のシステムにおいては、第１のストレージ（移行元ストレージ）から第２のストレージ（移行先ストレージ）へのデータ移行において、まず、業務アプリケーションから送信される入出力要求の発行先を、移行元ストレージのデバイスノードから移行先ストレージのデバイスノードに切替える。そして、移行先ストレージに対し、移行元ストレージに格納されたデータを複製する。その一方で、データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読出処理又は書込処理の要求であるとき、その入出力要求を移行元ストレージのデバイスノードに対して転送する。そして、その転送された読出処理又は書込処理の要求に従い、移行元ストレージに対して読出処理又は書込処理を実行する。さらに、移行元ストレージに対して実行された書込処理が少なくとも移行元ストレージから移行先ストレージへと複製済みのデータを対象としているときに、移行元ストレージで書込処理を行った対象データを、移行元ストレージから移行先ストレージへと再複製する。そして、移行先ストレージに対するデータの複製が完了したときに、移行元ストレージのデバイスノードへの入出力要求の転送を中止する。
【発明の効果】
【０００７】
開示のシステムによれば、データの複製の開始前に業務アプリケーションによる入出力要求の発行先を移行先ボリュームのデバイスノードへと切替えても、データの複製中に発行された入出力要求によるストレージ格納データの読出処理又は書込処理は、必ず移行元ストレージに対して行われる。このため、データの複製中であっても、読出処理及び書込処理の対象データの複製が済んでいるか否かに関わらず、データの読出及び書込を正確且つ確実に行うことができる。また、移行元ストレージにおいて、移行先ストレージに複製済みのデータに対して行われた書込処理の対象データは、移行先ボリュームに再複製される。このため、データ複製中に生じる書込処理によって、移行元ストレージ及び移行先ストレージ間においてデータの不整合が生じることもない。したがって、データの複製の開始前に業務アプリケーションによる入出力要求の発行先を移行先ボリュームのデバイスノードへと切替えても、データ移行を正常に行うことができる。そして、システム管理者は、データの複製後に、業務アプリケーションにおける入出力要求の発行先を移行先ボリュームに切替える必要がなく、データの複製の完了を監視する必要がない。
【発明を実施するための最良の形態】
【０００８】
図１は、ストレージ間におけるデータ移行を実現するデータ移行機構を具現化したデータ移行装置の全体構成を示す。この装置の各構成要素は、少なくともＣＰＵ（Central Processing Unit）及びメモリを備えたサーバにおいて、オペレーティングシステム（以下、ＯＳという）が動作している環境で実現される。そして、本装置は、図１に示すように、移行元ボリューム１０と，移行元ボリューム１０に対応するデバイスノード１０Ａ及びフィルタドライバ１０Ｂと，移行先ボリューム２０と，移行先ボリューム２０に対応するデバイスノード２０Ａ及びフィルタドライバ２０Ｂと，移行管理部３０と，移行管理部３０により用いられるビットマップ３０Ａと，レジストリ４０と，業務アプリケーション５０と，を含む。
【０００９】
移行元ボリューム１０は、本データ移行機構において、データの移行元となるストレージである。そして、移行元ボリューム１０には、業務アプリケーション５０で使用されるデータが格納されている。データ移行前においては、業務アプリケーション５０から発行される入出力要求は、ＯＳによるドライブレター又はマウントポイント（以下、ドライブレター等という）の割り当てにより、移行元ボリューム１０が発行先となっている。
【００１０】
デバイスノード１０Ａは、業務アプリケーション５０に対し、移行元ボリューム１０を制御するためのインタフェースとして機能する。
フィルタドライバ１０Ｂは、デバイスノード１０Ａのアッパーフィルタ（Upper Filter）として機能する。そして、フィルタドライバ１０Ｂは、デバイスノード１０Ａへと送られる入出力要求を必要に応じて遮断（インタセプト）し、ライブラリとしての移行管理部３０に渡す。ここで、業務アプリケーション５０から発行される入出力要求は、次の種類のものを含む。即ち、ボリューム内に格納されたデータ（ストレージ格納データ）に対する読出処理及び書込処理の要求，ボリューム属性の設定要求（パーティション情報取得要求，マウント要求又はボリュームのリザーブ・リリース要求等）及びボリュームの使用用途通知等を含む。また、入出力要求のデータ（ＩＲＰ：Ｉ／Ｏ Request Packet）は、次の情報を含む。即ち、入出力要求の発行先のボリュームに対応するデバイスノード及び上述の入出力要求の種類を特定可能な情報を含む。また、入出力要求の種類がボリューム内に格納されたデータに対する読出処理又は書込処理の要求である場合には、さらに、読出処理又は書込処理の対象データが属するデータブロックの識別子や、対象データのデータ長等を含む。
【００１１】
移行先ボリューム２０は、データの移行先となるストレージである。そして、移行先ボリューム２０には、移行元ボリューム１０に格納されたデータが複製される。
デバイスノード２０Ａは、移行元ボリューム１０に対応するデバイスノード１０Ａと同様に、業務アプリケーション５０に対し、移行元ボリューム２０を制御するためのインタフェースとして機能する。
【００１２】
フィルタドライバ２０Ｂも、移行元ボリューム１０に対するフィルタドライバ１０Ｂと同様に、デバイスノード２０Ａのアッパーフィルタとして機能する。そして、フィルタドライバ２０Ｂは、デバイスノード２０Ａへと送られる入出力要求を必要に応じてインタセプトし、ライブラリとしての移行管理部３０に渡す。
【００１３】
移行管理部３０（Migration Manager）は、フィルタドライバ１０Ｂ及びフィルタドライバ２０Ｂと連係して動作するライブラリである。そして、フィルタドライバ１０Ｂ又はフィルタドライバ２０Ｂで受信した入出力要求の発行先を、その入出力要求の種類により必要に応じて変更し、転送を行う。また、移行管理部３０は、移行元ボリューム１０のデータブロックに対応するビットで構成されたビットマップ３０Ａを用い、データ移行が完了したか否かをデータブロックごとに記録して、データ移行状況を管理する。
【００１４】
レジストリ４０には、データの移行元となるボリューム及び移行先となるボリュームを特定するための情報である移行情報が格納される。なお、このレジストリ４０は、本装置が実装されているサーバが再起動されたときに、移行管理部３０に対して移行情報を設定し直すために用いられる。
【００１５】
業務アプリケーション５０は、使用するボリュームのドライブレター等を指定して、ボリュームに対する入出力要求を発行する。
ここで、ＯＳでは、予め、業務アプリケーション５０により使用されるボリュームに対し、ドライブレター等の割り当て（マッピング）がなされている。そして、ＯＳでは、業務アプリケーション５０から発信された入出力要求の発行先としてのドライブレター等が割り当てられているボリュームに対応するデバイスノードに対し、入出力要求を発行する。
【００１６】
次に、本データ移行装置を適用してデータの移行を行う手順について、図２を用いて説明する。なお、以下の手順は、本データ移行装置が実装されるサーバにインストールされたＯＳがＷｉｎｄｏｗｓ（登録商標）である場合を例として説明するが、本データ移行機構は、他のＯＳがインストールされたサーバにおいても同様に適用可能である。また、下記説明の（）内の番号は、図２に付されている（）内の番号に対応する。
（１）システム管理者は、移行元ボリューム１０と同一サイズで移行先ボリューム２０を作成し、移行先ボリューム２０を移行元ボリューム１０と同一のファイルシステムでフォーマットする。
（２）業務アプリケーション５０から発行される入出力要求は、ＯＳにおけるドライブレター等の割り当てにより、移行元ボリューム１０のデバイスノード１０Ａに対して発行されている。ここで、システム管理者は、業務アプリケーション５０の処理を一時的に停止する。
（３）さらに、システム管理者は、移行管理部３０をインストールするとともに、この移行管理部３０をライブラリとして用いて連係処理を行うように、フィルタドライバ１０Ｂ及びフィルタドライバ２０Ｂをインストールする。そして、システム管理者は、移行先ボリューム２０を初期化すること及びインストールした移行管理部３０やフィルタドライバ１０Ｂ，フィルタドライバ２０Ｂの機能を有効にすること等の理由により、サーバを再起動する。なお、サーバが再起動されたとき、ＯＳは、まずライブラリである移行管理部３０をロードし、さらに、フィルタドライバ１０Ｂ及びフィルタドライバ２０Ｂをロードする。
（４）ここで、システム管理者は、ＯＳに対し、ドライブレター等の割り当てを移行元ボリューム１０から移行先ボリューム２０へ切替えるための、ドライブレター等切替えコマンドを発行する。ＯＳは，このドライブレター等切替えコマンドが発行されると、ドライブレター等の割り当てを、移行元ボリューム１０から移行先ボリューム２０へと切替える。具体的には、ドライブレター等の移行元ボリューム１０への割り当てを解除し（DeleteVolumeMountPoint()）、代わりに移行先ボリューム２０に対してそのドライブレター等を割り当てる（SetVolumeMountPoint()）。
【００１７】
図３は、ＯＳによるドライブレター等の割り当て変更の説明図である。ドライブレター等切替えコマンドの実行前は、図３（Ａ）に示すように、業務アプリケーション５０（アプリＡ及びアプリＢ）が入出力要求を発行する発行先としてのドライブレター「Ｆ：」及びマウントポイント「Ｃ：￥Ｇｙｏｍｕ」は、ＯＳにより、いずれも移行元ボリューム１０（￥Ｄｅｖｉｃｅ￥ＨａｒｄｄｉｓｋＶｏｌｕｍｅ１）に割り当てられている。そして、ドライブレター等切替えコマンドが発行されることにより、図３（Ｂ）に示すように、ドライブレター「Ｆ：」及びマウントポイント「Ｃ：￥Ｇｙｏｍｕ」は、いずれも移行先ボリューム２０（￥Ｄｅｖｉｃｅ￥ＨａｒｄｄｉｓｋＶｏｌｕｍｅ２）に割り当てられるようになる。（以下、図２の説明に戻る。）
（５）システム管理者は、データ移行処理を開始することを移行管理部３０に通知するため、データの移行元として移行元ボリューム１０を、データの移行先として移行先ボリューム２０を、夫々移行情報として指定して、移行開始コマンドを発行する。移行管理部３０は、移行開始コマンドが発行されると、この移行情報をレジストリ４０に記録する。ここで、システム管理者は、再度サーバを再起動する。
（６）サーバが再起動されるときに、移行管理部３０は、レジストリ４０から移行情報を読み込み、データの移行元として移行元ボリューム１０を、データの移行先として移行先ボリューム２０を、夫々メモリに登録する。
【００１８】
なお、（５）及び（６）の手順についてさらに具体的に説明すると、次のようになる。即ち、システム管理者は、移行元ボリューム１０及び移行先ボリューム２０に夫々割り当てられたドライブレター等を指定して、移行開始コマンドを発行する。移行管理部３０は、このドライブレター等が指定された移行情報をレジストリ４０に記録し、サーバが再起動されると、この移行情報をレジストリ４０から読み込む。この再起動時に、ＯＳの機能により、移行元ボリューム１０に割り当てられているドライブレター等がフィルタドライバ１０Ｂに対してマウント要求として通知される。同様に、移行先ボリューム２０に割り当てられているドライブレター等がフィルタドライバ２０Ｂに対してマウント要求として通知される。そして、フィルタドライバ１０Ｂ及びフィルタドライバ２０Ｂでは、移行管理部３０に対し、自ボリュームに割り当てられたドライブレター等と自ボリュームを物理的に特定することが可能な識別子である物理ボリューム情報とを関連付けた情報を通知する。移行管理部３０では、この物理ボリューム情報と移行情報に含まれる移行元ボリューム１０及び移行先ボリューム２０のドライブレター等に基づき、移行元ボリューム１０及び移行先ボリューム２０の物理ボリューム情報を特定し、メモリに登録する。
（７）フィルタドライバ１０Ｂ及びフィルタドライバ２０Ｂは、夫々移行元ボリューム１０及び移行先ボリューム２０が移行管理部３０により登録されているときには、以後、入出力要求を移行管理部３０へ渡すようにする。一方、移行管理部３０は、入出力要求の種類に応じて、その入出力要求の発行先を変更する。
【００１９】
さらに具体的に説明すると、上記（４）において、業務アプリケーション５０から発行される入出力要求の発行先が移行先ボリューム２０のデバイスノード２０Ａに切替えられている。このため、この段階においては、移行管理部３０では、実質的にはフィルタドライバ２０Ｂからのみ入出力要求を渡されることとなる。そして、入出力要求がストレージ格納データに対する読出処理及び書込処理のときには、その発行先を移行元ボリューム１０のデバイスノード１０Ａに変更し、デバイスノード１０Ａに対して転送する。また、入出力要求がボリューム属性の設定要求であるときには、その発行先を移行先ボリューム２０のデバイスノード２０Ａのまま変更せず、デバイスノード２０Ａに対して送信する。さらに、入出力要求がボリュームの使用用途通知等であるときには、その発行先を移行先ボリューム２０のデバイスノード２０Ａ及び移行元ボリューム１０のデバイスノード１０Ａとし、デバイスノード２０Ａに対して送信する一方、デバイスノード１０Ａに対しても転送する。なお、上述の（５）において再度サーバを再起動する理由には、このボリュームの使用用途通知等の送信及び転送を、ＯＳの起動中に発行されるものから全て対象として行うということが含まれる。データ移行完了時に、移行元及び移行先の両方のボリュームに対して同一の使用用途通知等が発行された状態になっていることを保証するためである。
システム管理者は、この状態で、業務アプリケーション５０の処理を再開させる。
【００２０】
（８）システム管理者は、移行元ボリューム１０のデータを移行先ボリューム２０へ複製させるためのバックグラウンドコピーコマンドを発行する。このバックグラウンドコピーコマンドが発行されることにより、移行管理部３０は、業務アプリケーション５０の処理と並行して、移行元ボリューム１０に格納された全データを、移行先ボリューム２０へバックグラウンドコピーする。また、移行管理部３０は、移行元ボリューム１０のデータが一定の領域ごとに区分けされたデータブロックのうち、どのデータブロックが複製済みであるかが判別可能になるように、ビットマップ３０Ａに記録する。さらに、バックグラウンドコピー中に、移行元ボリューム１０から移行先ボリューム２０へ複製済みのデータに対し、業務アプリケーション５０により書込要求が発行されたときには、移行管理部３０は次のような処理を行う。即ち、書込要求に従って移行元ボリューム１０のデータに対して書込（更新）する一方、ビットマップ３０Ａのビットのうち、書込を行ったデータの属するデータブロックに対応するビットについては、複製が済んでいないものとして記録し直す。そして、移行管理部３０は、ビットマップ３０Ａを参照しつつ、全てのデータブロックに対応するビットが複製済みとなるまでバックグラウンドコピーを続行する。
（９）移行管理部３０では、移行元ボリューム１０に格納されたデータ全ての移行先ボリューム２０へのバックグラウンドコピーが完了したことを条件として、入出力要求の転送設定を自動変更する。具体的には、移行元ボリューム１０のデバイスノード１０Ａへ入出力要求の転送を中止する。これにより、移行先ボリューム２０に対して発行される入出力要求が、そのまま移行先ボリューム２０のデバイスノード２０Ａに送信されるようになる。この段階で、データ移行が完了する。
（１０）なお、データ移行完了後、システム管理者は、必要に応じて移行元ボリューム１０を再利用することができる。また、システム管理者は、ＯＳ等において自動的に周辺機器を認識してリソースの割り当て等を行うプラグアンドプレイの仕様に従い，ディスクを動的に取り外すこともできる。
【００２１】
次に、業務アプリケーション５０から入出力要求が発行されたときに、移行管理部３０において実行される処理内容について、図４に示すフローチャートを用いて説明する。
ステップ１（図ではＳ１と略記する。以下同様）では、発行された入出力要求の種類をチェックする。
【００２２】
ステップ２では、入出力要求の種類がボリューム内に格納されたデータに対する読出処理又は書込処理の要求であるか否かを判定する。入出力要求がボリューム内に格納されたデータに対する読出処理又は書込処理の要求であるときにはステップ３に進み（Ｙｅｓ）、そうでないときにはステップ６に進む（Ｎｏ）。
【００２３】
ステップ３では、入出力要求の発行先を移行元ボリューム１０のデバイスノード１０Ａに変更し、入出力要求をデバイスノード１０に対して転送する。なお、デバイスノード１０Ａでは、この読出処理又は書込処理の要求に従って、移行元ボリューム１０に対し、読出処理又は書込処理を実行する。
【００２４】
ステップ４では、さらに、入出力要求の種類が書込処理の要求であるか否かを判定し、書込処理の要求であれば、ステップ５に進む（Ｙｅｓ）一方、書込処理の要求でなければ、処理を終了する。
【００２５】
ステップ５では、ビットマップ３０Ａを構成するビットのうち、書込処理の要求があったデータの属するデータブロックに対応するビットに、複製が完了していないことを示す値（以下、未完了値という）を設定する。
【００２６】
ステップ６では、入出力要求の種類がボリューム属性の設定要求であるか否かを判定する。ボリューム属性の設定要求であるときにはステップ７に進み（Ｙｅｓ）、そうでないときにはステップ８に進む（Ｎｏ）。
【００２７】
ステップ７では、入出力要求を、そのまま移行先ボリューム２０のデバイスノード２０Ａに送信する。なお、デバイスノード２０Ａでは、このボリューム属性の設定要求に従って、移行先ボリューム２０に対し、ボリューム属性の設定処理を実行する。
【００２８】
ステップ８では、入出力要求を、移行元ボリューム１０のデバイスノード１０Ａに転送する一方、そのまま移行先ボリューム２０のデバイスノード２０Ａにも送信する。なお、ステップ８の処理を行う条件としては、入出力要求がボリュームの使用用途通知等であった場合が該当する。また、デバイスノード１０Ａ及びデバイスノード２０Ａでは、このボリュームの使用用途通知等の要求に従って、夫々移行元ボリューム１０及び移行先ボリューム２０に対し、ボリュームの使用用途通知等の処理を実行する。
【００２９】
次に、移行管理部３０で実行されるバックグラウンドコピーの処理内容について、図５に示すフローチャートを用いて説明する。なお、この処理は、システム管理者により移行開始コマンドが発行されたときに実行される。
【００３０】
ステップ１１では、ビットマップ３０Ａを参照する。なお、バックグラウンドコピー前は、ビットマップの全てのビットには、未完了値が設定されている。
ステップ１２では、ビットマップ３０Ａに、未完了値のビットが存在するか否かを判定し、存在すれば、ステップ１３に進み（Ｙｅｓ）、存在しなければ、処理を終了する。
【００３１】
ステップ１３では、未完了値のビットに、複製が完了したことを示す値（以下、完了値という）に設定する。
ステップ１４では、移行元ボリューム１０のデータブロックのうち、ステップ１３で完了値にしたビットに対応するデータブロックのデータを、移行元ボリューム１０から移行先ボリューム２０へ複製する。そして、ステップ１２に戻る。
【００３２】
ここで、ビットマップ３０Ａを用いたバックグラウンドコピーの処理について具体的に説明する。データ複製前は、ビットマップ３０Ａの全てのビットに、未完了値である「１」が設定されている。そして、移行管理部３０は、移行元ボリューム１０のデータブロックを移行先ボリューム２０に対して複製し、そのデータブロックに対応するビットを、完了値である「０」に変更する。また、バックグラウンドコピー中に、移行元ボリューム１０から移行先ボリューム２０へ複製済みのデータ、即ち、ビットマップ３０Ａのビットが「０」であるデータブロックに属するデータに対し、業務アプリケーション５０により書込要求が発行されたときには、そのビットを「１」に戻す。
【００３３】
なお、図６は、ビットマップ３０Ａと移行元ボリューム１０及び移行先ボリューム２０との関係を示す図である。図６に示すように、ビットマップ３０Ａの各ビットは、移行元ボリューム１０に格納された各データブロックに対応している。そして、移行元ボリューム１０のデータブロックのうち、Ａ及びＣに対応するビットは「０」であり、移行先ボリューム２０への複製が完了していることを示している。一方、移行先ボリューム２０のデータブロックのうち、Ｂ及びＤに対応するビットは「１」であり、移行先ボリューム２０への複製が完了していないことを示している。
【００３４】
かかるデータ移行装置によれば、データの複製中に業務アプリケーション５０からデバイスノード２０Ａに対して発行された入出力要求は、その種類に応じて移行元ボリューム１０のデバイスノード１０Ａ又は移行先ボリューム２０のデバイスノード２０Ａに振り分けられる。このとき、特に、データの読出処理又は書込処理の要求については、デバイスノード１０Ａに転送され、移行元ボリューム１０に対して読出処理又は書込処理がなされる。このため、データの複製中であっても、読出処理及び書込処理の対象データの複製が済んでいるか否かに関わらず、データの読出及び書込を正確且つ確実に行うことができる。また、データの複製中に書込処理の要求がなされたときには、その書込処理の対象データについては、再度移行先ボリューム２０に対して複製がなされる。このため、既に移行先ボリューム２０に複製済みのデータに対して書込処理を行っても、移行元ボリューム１０及び移行先ボリューム２０間においてデータの不整合が生じることがない。したがって、データの複製の開始前に業務アプリケーションによる入出力要求の発行先を移行先ボリュームのデバイスノードへと切替えても、データ移行を正常に実現することができる。そして、システム管理者は、データの複製後に、業務アプリケーションにおける入出力要求の発行先を移行先ボリュームに切替える必要がなく、データの複製の完了を監視する必要がない。
【００３５】
また、このように、システム管理者が、いつ終了するか予測できないデータの複製の完了を監視する必要がないため、コンピュータシステム全体で複数のデータ移行を行う場合であっても、その作業スケジュールを立てることが容易になる。
【００３６】
さらに、業務アプリケーション５０から発行された入出力要求が、ボリューム属性の設定要求であるときには、移行元ボリューム１０のデバイスノード１０Ａへの転送は行われず、移行先ボリューム２０のデバイスノード２０Ａにそのまま送信される。一方で、入出力要求が、ボリュームの使用用途の設定要求であるときには、移行元ボリューム１０のデバイスノード１０Ａへの転送が行われるとともに、移行先ボリューム２０のデバイスノード２０Ａにそのまま送信される。このように、入出力要求の種類に応じて、移行元ボリューム１０及び移行先ボリューム２０において夫々必要な情報のみを送信することで、移行元ボリューム１０及び移行先ボリューム２０の設定における不整合を回避することができる。
【００３７】
なお、上記実施例においては、業務アプリケーション５０により発行される入出力要求の発行先を移行元ボリューム１０から移行先ボリューム２０に変更する方法として、ＯＳにおけるドライブレター等の割り当てを変更している。しかし、本データ移行機構は、この方法に限らず、例えば、業務アプリケーション５０内の設定において、入出力要求の発行先が移行元ボリューム１０から移行先ボリューム２０になるように変更しても実現可能である。
【００３８】
以上の発明の詳細な説明に関し、更に以下の付記を開示する。
【００３９】
（付記１）第１のストレージから第２のストレージへとデータ移行を行うデータ移行プログラムであって、業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替えるステップと、前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製するステップと、データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送するステップと、前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行するステップと、前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製するステップと、前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止するステップと、をコンピュータに実現させることを特徴とするデータ移行プログラム。
【００４０】
（付記２）データの複製中に業務アプリケーションから発行された入出力要求が、ストレージ属性の設定要求であるときには、その入出力要求を前記第２のストレージのデバイスノードに対して送信するステップと、前記第２のストレージのデバイスノードに対して送信されたストレージ属性の設定要求に従い、前記第１のストレージに対してストレージ属性の設定処理を実行するステップと、をさらに含むことを特徴とする付記１記載のデータ移行プログラム。
【００４１】
（付記３）前記第２のストレージのデバイスノードが発行先となった入出力要求が、ストレージ使用用途通知であるときには、その入出力要求を前記第２のストレージのデバイスノードに送信するとともに、前記第１のストレージのデバイスノードに転送するステップと、前記第２のストレージのデバイスノードに対して送信されたストレージ使用用途通知の要求に従い、前記第２のストレージに対してストレージ使用用途通知処理を実行する一方、前記第１のストレージのデバイスノードに対して転送されたストレージ使用用途通知の要求に従い、前記第１のストレージに対してストレージ使用用途通知処理を実行するステップと、をさらに含むことを特徴とする付記１又は付記２に記載のデータ移行プログラム。
【００４２】
（付記４）前記複製するステップは、前記第１のストレージのデータブロックに夫々対応したビットで構成されたビットマップであって各ビットが前記第２のストレージに対するデータの複製が未完了であることを示す未完了値又はデータの複製が完了したことを示す完了値のいずれかを示すビットマップを参照し、そのビットマップを構成する全てのビットが完了値になるまで前記第２のストレージへのデータの複製を行うことを特徴とする付記１〜付記３のいずれか１つに記載のデータ移行プログラム。
【００４３】
（付記５）前記複製するステップは、前記ビットマップのうち、前記第２のストレージへのデータの複製が完了したデータブロックに対応するビットを完了値に変更する一方、前記第１のストレージから前記第２のストレージへと複製済みのデータに対して書込処理を行ったときには、その書込処理の対象データの属するデータブロックに対応するビットを未完了値に変更することを特徴とする付記４記載のデータ移行プログラム。
【００４４】
（付記６）前記切替えるステップは、業務アプリケーションから発行される入出力要求の発行先を示すドライブレター又はマウントポイントに対してオペレーティングシステムにより関連付けられるストレージのデバイスノードを、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードへと切替えることを特徴とする付記１〜付記５のいずれか１つに記載のデータ移行プログラム。
【００４５】
（付記７）前記切替えるステップは、業務アプリケーション内における、入出力要求の発行先の設定を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードへと切替えることを特徴とする付記１〜付記５のいずれか１つに記載のデータ移行プログラム。
【００４６】
（付記８）第１のストレージから第２のストレージへとデータ移行を行うデータ移行方法であって、業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替えるステップと、前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製するステップと、データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送するステップと、前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行するステップと、前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製するステップと、前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止するステップと、をコンピュータに実行させることを特徴とするデータ移行方法。
【００４７】
（付記９）第１のストレージから第２のストレージへとデータ移行を行うデータ移行装置であって、業務アプリケーションから発行される入出力要求の発行先を、前記第１のストレージのデバイスノードから前記第２のストレージのデバイスノードに切替える手段と、前記第２のストレージに対し、前記第１のストレージに格納されたデータを複製する手段と、データの複製中に業務アプリケーションから発行された入出力要求が、少なくともストレージ格納データに対する読込処理又は書込処理の要求であるとき、その入出力要求を前記第１のストレージのデバイスノードに対して転送する手段と、前記第１のストレージのデバイスノードに対して転送された読込処理又は書込処理の要求に従い、前記第１のストレージに対して読込処理又は書込処理を実行する手段と、前記第１のストレージに対して実行された書込処理が、少なくとも前記第１のストレージから前記第２のストレージへと複製済みのデータを対象としているとき、その書込処理の対象データを、前記第１のストレージから前記第２のストレージへと再複製する手段と、前記第２のストレージに対するデータの複製が完了したときに、前記第１のストレージのデバイスノードへの入出力要求の転送を中止する手段と、を含んで構成されたことを特徴とするデータ移行装置。
【図面の簡単な説明】
【００４８】
【図１】データ移行装置の全体構成図
【図２】データ移行の手順の説明図
【図３】ＯＳによるドライブレター等の割り当て変更の説明図であって、（Ａ）は割り当て変更前の状態、（Ｂ）は割り当て変更後の状態を示す。
【図４】移行管理部による入出力要求受信時の処理のフローチャート
【図５】移行管理部によるバックグラウンドコピーの処理のフローチャート
【図６】ビットマップの説明図
【符号の説明】
【００４９】
１０    移行元ボリューム
１０Ａ  フィルタドライバ
１０Ｂ  デバイスノード
２０    移行先ボリューム
２０Ａ  フィルタドライバ
２０Ｂ  デバイスノード
３０    移行管理部
３０Ａ  ビットマップ
４０    レジストリ
５０    業務アプリケーション
【図１】
2010123055.tif 000003
【図２】
2010123055.tif 000004
【図３】
2010123055.tif 000005
【図４】
2010123055.tif 000006
【図５】
2010123055.tif 000007
【図６】
2010123055.tif 000008