(57)【要約】【課題】不揮発性の高速メモリを用いずに、データ移動の際のデータ一貫性、耐障害性、および障害発生時の効率的な回復を実現することが課題である。【解決手段】実施形態のデータ処理システムは、データを格納している移動元記憶領域と、データの移動先である移動先記憶領域と、データにアクセスするアプリケーションを有するコンピュータと、移動元記憶領域から移動先記憶領域へのデータ移動を行い、データ移動の進捗情報を管理し、進捗情報を移動元記憶領域と移動先記憶領域のと空き領域に格納するデータ移動処理部と、データ移動中にアクセスを受信し、進捗情報を参照して移動元記憶領域または移動先記憶領域に格納されたデータへのアプリケーションからのアクセスを処理するアクセス処理部と、データ移動中に何らかの障害が発生しデータの移動が中断して終了した場合に空き領域に格納された進捗情報を参照してデータ移動の再開を行う回復判定部とを備える。【選択図】図１
2012088817.tif 000002
【特許請求の範囲】
【請求項１】
データを格納している移動元記憶領域と、
前記データの移動先である移動先記憶領域と、
前記データにアクセスするアプリケーションを有するコンピュータと、
前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行い、前記データ移動の進捗情報を管理し、前記進捗情報を前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納するデータ移動処理部と、
前記データ移動中に前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理するアクセス処理部と、    
前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行う回復判定部と、を備え、
前記データ移動処理部は、記憶領域を複数のブロックに細分して管理し、各ブロックごとにデータの移動処理を行い、各ブロックについて前記データ移動処理を行っていないブロックを「移動前」とし、前記データ移動処理を行っているブロックを「移動中」とし、前記データ移動処理を行ったブロックを「移動後」として前記進捗情報を管理し、
前記アクセス処理部は、前記「移動前」のデータへのアクセス要求を受信した場合、前記移動元記憶領域の該当データへアクセスし、前記「移動中」のデータへの読み込みのアクセス要求を受信した場合、前記移動元記憶領域の該当データを読み込み、前記「移動中」のデータへの書き込みのアクセス要求を受信した場合、当該データの移動処理が完了するのを待ち合わせた後、前記移動先記憶領域の該当データを書き換え、前記「移動後」のデータへのアクセス要求を受信した場合、前記移動先記憶領域の該当データへアクセスし、
前記回復判定部は、空き領域に格納された前記進捗情報にて「移動前」となっているブロックは「移動前」とし、「移動中」となっているブロックは「移動前」とし、「移動後」となっているブロックは「移動後」とした進捗情報を生成して、前記データ移動の再開を行うデータ処理システム。
【請求項２】
前記データ移動処理部は、各ブロックを決まった順序で逐次的に処理し、
前記回復判定部は、前記「移動後」に最後に移行したブロックを特定する情報を進捗情報として取得し、当該ブロックより前のブロックを「移動後」とし、当該ブロックおよび以降のブロックを「移動前」とする請求項１に記載のデータ処理システム。
【請求項３】
前記アクセス処理部は、前記「移動中」のデータへの書き込みのアクセス要求を受信した場合、前記移動元記憶領域と前記移動先記憶領域の双方の該当データを書き換える請求項１乃至請求項２のいずれか１項に記載のデータ処理システム。
【請求項４】
データを格納している移動元記憶領域と、前記データの移動先である移動先記憶領域と、  前記データにアクセスするアプリケーションを有するコンピュータと、前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行い、前記データ移動の進捗情報を管理し、前記進捗情報を前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納するデータ移動処理部と、前記データ移動中に前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理するアクセス処理部と、前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行う回復判定部と、を備えるデータ処理システムのデータ移動方法であって、
前記データ移動処理部が前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行うステップと、
前記データ移動処理部が前記データ移動の進捗情報を管理するステップと、
前記データ移動処理部が前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納するステップと、
前記アクセス処理部が、前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理するステップと、
前記回復判定部が、前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行うステップと、
を備えるデータ移動方法。
【請求項５】
データを格納している移動元記憶領域と、前記データの移動先である移動先記憶領域と、  前記データにアクセスするアプリケーションを有するコンピュータと、前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行い、前記データ移動の進捗情報を管理し、前記進捗情報を前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納するデータ移動処理部と、前記データ移動中に前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理するアクセス処理部と、前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行う回復判定部と、を備えるデータ処理システムのデータ移動プログラムであって、
コンピュータに、
前記データ移動処理部が前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行う機能と、
前記データ移動処理部が前記データ移動の進捗情報を管理する機能と、
前記データ移動処理部が前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納する機能と、
前記アクセス処理部が、前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理する機能と、
前記回復判定部が、前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行う機能と、
を実行させるデータ移動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はデータ処理システム、データ移動方法、およびデータ移動プログラムに関する。
【背景技術】
【０００２】
ハードディスクドライブ（ＨＤＤ）やフラッシュメモリドライブ（ＳＳＤ）などのドライブによって構成される記憶装置やこの記憶装置によって構成されるストレージシステムなどにおける記憶装置の間のデータの移動にはさまざまな形態がある。例えば可搬性のある記憶装置と固定の記憶装置との間の移動、よりセキュリティや信頼性の高い記憶装置への移動、あるいはコスト削減のため記憶単価の安い記憶装置への移動などがある。また、情報ライフサイクル管理の一環として、さまざまな種類の記憶装置の間でのポリシーベースでのデータの移動なども行われる。
【０００３】
該データの移動においては、データのサイズが大きい場合にデータサイズに比例して時間がかかる。例えば、１００Ｇバイトのデータを１００Ｍｂpｓで移動するとき、理論上２時間以上の時間がかかる計算になる。したがって、運用中の大きなサイズのデータを移動したい場合には、データの移動中にもデータを読み出しや書き換えなどの運用が可能なデータの移動方法が求められる。なお、移動中でも読み出しや書き換えが任意に行われる可能性のあるデータのことをオンラインデータという。以下、システムの使用中にデータを移動することをオンラインデータ移動という。
【０００４】
オンラインデータ移動においては、記憶装置間のデータの移動に際しデータの内容が不整合にならないという「データの一貫性」と、データの移動中に発生したコンピュータの停止障害等により移動が中断した場合でもデータが失われないという「データの耐障害性」が主に要求される。
【０００５】
ここで、停止障害の例としては、停電による装置の停止や装置内部の矛盾を検出し装置自身がフェイルストップする場合があげられる。停止障害からの回復方法は、例えば装置を再起動することである。このとき、装置に含まれるＣＰＵやメインメモリは初期化され障害発生時の状態は失われるが、ハードディスクや不揮発性メモリ等に記憶されたデータは失われない。以下、耐障害性とは、停止障害に対してデータが失われないことを指す。なお、停止障害が発生する対象には、データ移動元の記憶装置、データ移動先の記憶装置、データの移動処理を実行しているコンピュータ等がある。また、これらの装置に対して別々に、あるいは同時に停止障害が発生する可能性がある。さまざまな停止障害のパターンに対して耐障害性を有することが要求される。
【０００６】
また、オンラインデータ移動においては、障害等が発生してデータの移動が停止した場合のデータの移動を再開するために要する時間の合理性、すなわち障害等からの「回復処理の効率化」がさらに要求される。なお、回復処理の効率化とは、例えばデータの移動が全体の９９％まで進行した時点で中断した時、再開後のデータの移動にかかる時間は、残りの１％程度の分で済むというような障害からの回復処理の効率化をさす。
【０００７】
記憶装置間でのデータ移動の従来の方法として、いったんデータをコピーし、コピーがすべて完了した後に元のデータを削除するという方法がある。なお、障害からの回復に当たっては、元のデータをもう一度コピーしなおす。この方法では、移動がすべて完了するまで元のデータを維持しているため一貫性と耐障害性を保つことが可能である。
【０００８】
次に、上述した記憶装置間のデータ移動方法においてオンラインデータ移動を行う従来の方法として、データ移動中のデータの読み出しは単に元のデータにアクセスし、書き換えはオンラインデータのコピー技術を利用して実行するという方法がある。ここで、オンラインデータのコピー技術とは、例えばストレージシステムのミラーリング技術（あるいはレプリケーション技術）がある。
【０００９】
なお、データの移動はデータのコピーと類似しているが、データのコピーでは元のデータが残されるのに対し、データの移動では元のデータは残されないという違いがある。これらは目的によって使い分けられている。例えば、バックアップの用途ではデータのコピーが主に行われるが、セキュリティやライセンスが関係している用途などデータの移動でなければならない場合もある。
【００１０】
ストレージシステムの従来のミラーリング技術においてオンラインデータ移動のデータの一貫性を保つ方法として、データ移動中に書き換えが発生した場合にコピー元およびコピー先の両方を書き換える方法がある。
【００１１】
また、このオンラインデータ移動において障害が起こった際にデータ移動再開のための回復処理を効率的に行う従来の方法としては、データの格納領域を適当なサイズのブロックに分割し、各ブロック毎に回復処理時にコピーが必要であることを管理する差分ビットマップを不揮発性の高速メモリに保持するという方法がある。なお、この方法では、コピー済みの箇所に書き換えが発生した場合には、この差分ビットマップの該当ビットをセットする。
【００１２】
また、回復処理の効率化の別の従来の方法として、書き換えの際にそのデータを不揮発性の高速メモリを用いたキャッシュメモリに記憶しておき、コピー元およびコピー先に書き換えが完了するまで保持する方法がある。この方法では、障害時点で書き換え中であったデータを回復処理時にキャッシュメモリから読み出し、再度コピー元およびコピー先に書き換えを行う。
【００１３】
すなわち、上述した従来技術では、記憶装置間でのオンラインデータの移動の一貫性、耐障害性、回復処理の効率性の各要件をすべて満たすには、不揮発性の高速メモリが構成要素として必要である。なお従来技術では、不揮発性の高速メモリは特別なハードウェアとして実装される。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００７−４１７０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
不揮発性の高速メモリを用いずに、データ移動の際のデータ一貫性、耐障害性、および回復処理の効率化を実現することが課題である。
【課題を解決するための手段】
【００１６】
本実施形態のデータ処理システムは、データを格納している移動元記憶領域と、前記データの移動先である移動先記憶領域と、前記データにアクセスするアプリケーションを有するコンピュータと、前記移動元記憶領域から前記移動先記憶領域へのデータ移動を行い、前記データ移動の進捗情報を管理し、前記進捗情報を前記移動元記憶領域の空き領域および前記移動先記憶領域の空き領域に格納するデータ移動処理部と、前記データ移動中に前記アクセスを受信し、前記進捗情報を参照して前記移動元記憶領域または前記移動先記憶領域に格納されたデータへの前記アプリケーションからのアクセスを処理するアクセス処理部と、前記データ移動中に何らかの障害が発生し、前記データの移動が中断して終了した場合に、空き領域に格納された前記進捗情報を参照して前記データ移動の再開を行う回復判定部と、を備える。
【図面の簡単な説明】
【００１７】
【図１】第１の実施形態に係るデータ処理システムの機能構成を示すブロック図である。
【図２】第１の実施形態に係るシステムの記憶領域の一例を示す図である。
【図３】第１の実施形態に係るシステムのデータ移動処理の手順の一例を示すフローチャートである。
【図４】第１の実施形態に係るシステムのアクセス処理の手順の一例を示すフローチャートである。
【図５】第１の実施形態に係るシステムの回復判定処理の手順の一例を示すフローチャートである。
【図６】第２の実施形態に係るデータ処理システムの機能構成を示すブロック図である。
【図７】第２の実施形態に係る記憶装置のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本実施形態のデータ処理システム１００、データ移動方法、およびデータ移動プログラムについて図面を参照して説明する。なお、本明細書および図面において実質的に同一の機能構成を有する構成要素については同一の符号を付し、重複する説明は省略する。また、以下のデータの移動とは、移動元記憶領域３０から移動先記憶領域４０にデータの格納場所を移動して、データの移動が完了した後には移動元記憶領域３０は不要とし移動先記憶領域４０のみを使って当該データにアクセスできるようにすることを意味する。特に、移動元記憶領域３０から移動先記憶領域４０にデータをコピーし、コピーが完了した後に移動元記憶領域３０の移動が完了したデータを削除することも含まれる。
【００１９】
（第１の実施形態）
図１は本発明の第１の実施形態が適用されたデータ処理システム１００の概略図の一例を示すブロック図である。
【００２０】
図１に示すように本実施形態のデータ処理システム１００は、アプリケーション部１０とデータ処理管理部２０とを有するコンピュータ５００と、データ移動元の記憶装置３１（第１の記憶装置）と、データの移動先の記憶装置４１（第２の記憶装置）とが通信ネットワーク６０を介して接続して構成されている。
【００２１】
なお、通信ネットワーク６０は例えばストレージ・エリア・ネットワーク（ＳＡＮ）がファイバチャネル（Fibre Channel）の技術を用いて構築されている。また、ＳＡＮの構築においては、ファイバチャネルに限定されるものではなく、例えばｉＳＣＳＩ（Internet Small  Computer System Interface）を用いて構築してもよい。
【００２２】
アプリケーション部１０はデータ処理管理部２０を経由して、本実施形態の移動元記憶装置３１または移動先記憶装置４１に格納されたデータにアクセスする機能を有する。
【００２３】
データ処理管理部２０は、データ移動処理を行うデータ移動処理部２１と、アプリケーション部１０からのアクセスを処理するアクセス処理部２２と、データ移動中の障害発生時のデータ移動再開におけるデータ移動開始位置の判定処理（以下、回復判定処理という）を行う回復判定部２３とを有する。なお、データ移動処理、アクセス処理、および回復判定処理については後述する。
【００２４】
データ処理管理部２０のデータ移動処理部２１は、データ移動処理として移動元記憶領域３０から順にデータを読み出し、読み出したデータを移動先記憶領域４０に順に書き出す。また、データ移動処理部２１はデータ移動処理を行う際に、データ移動処理の進捗状況を管理するための情報である進捗情報の作成、更新を行う。すなわち、データ移動処理部２１はデータ移動処理の進捗状況を進捗情報を用いて管理する。
【００２５】
具体的には、データ移動処理部２１は、データ移動処理の終わった記憶領域を「移動後」記憶領域、データの移動処理を実行中の記憶領域を「移動中」記憶領域とし、データの移動処理をまだ開始していない記憶領域を「移動前」記憶領域として、進捗状況を管理する。その際データ移動処理部２１は、データの移動処理が終わった部分の状態を「移動後」に遷移する際に、この遷移をあらわす情報を含む進捗情報を、移動元記憶領域３０あるいは移動先記憶領域４０の「空き領域」に書き込んでおく。ここで「空き領域」とは、移動元記憶領域３０の「移動後」に対応する領域あるいは移動先記憶領域４０の「移動前」に対応する領域を指す。
【００２６】
ここで、図２に移動元記憶領域３０と移動先記憶領域４０の一例を示す。斜線で示された記憶領域が移動対象のデータを格納するために用いる記憶領域であり、空白で示された記憶領域が移動対象のデータを格納するために用いない記憶領域である。
【００２７】
また、移動元記憶領域３０と移動先記憶領域４０は概念上、一定のサイズのｎ個のブロックに分割されているとする。なお、ｎは３以上の整数である。分割されたそれぞれのブロックには＃１〜＃ｎ（ｎ≧３）の番号が振られる。なお、分割されたそれぞれのブロック番号は＃１以外の番号から開始されても良い。
【００２８】
また２≦ｍ≦ｎ−１（ｎ≧３）を満たす番号ｍ（ｍ：整数）をあらかじめ設定する。設定された番号ｍにあたるブロックを中間ブロックという。なお、ブロック番号は、記憶領域の先頭方向から昇順に振ってもよいし、降順に振ってもよい。あるいはそのほかのあらかじめ設定された順に振ってもよい。なお、移動元記憶領域３０と移動先記憶領域４０とで同じ番号をもつブロックは、移動元と移動先として１対１に対応する。
【００２９】
図２に示したように、移動元記憶領域３０においては「移動前」および「移動中」記憶領域が、移動対象のデータが格納された記憶領域である。これに対し、移動先記憶領域４０では「移動中」および「移動後」記憶領域が、移動対象のデータが格納された記憶領域である。なお、記憶装置とは例えばハードディスクドライブ（ＨＤＤ）やフラッシュメモリドライブ（ＳＳＤ）などのドライブによって構成される記憶装置やこの記憶装置によって構成されるストレージシステムなどである。
【００３０】
すなわち、データ移動処理部２１は、移動元記憶領域３０のブロックからデータを読み出し、そのデータを移動先記憶領域４０の対応する番号のブロックに書き込む。その際の「移動中」のブロック番号をｉとすると、例えば進捗情報においては、ｉより小さい番号のブロックは「移動後」であり、ｉより大きい番号のブロックは「移動前」である。
【００３１】
アクセス処理部２２は、アプリケーション部１０からの読み出しまたは書き換えのいずれかのアクセス要求を受信し、アクセス要求に基づいた位置であるアクセス位置のデータにアクセスする。該データが移動元記憶領域３０もしくは移動先記憶領域４０の「移動前」記憶領域に格納されているときは、移動元記憶領域３０の該データにアクセスしアプリケーション部１０に応答する。該データが「移動後」記憶領域に格納されているときは、移動先記憶領域４０の該データにアクセスしアプリケーション部１０に応答する。
【００３２】
すなわち、アクセス処理部２２は、アクセス要求が「移動後」記憶領域に対するものである場合、読み出しの場合も書き換えの場合のも移動先記憶領域４０にアクセスする。従来技術では、「移動後」記憶領域に対する書き換えの場合に移動元記憶領域と移動先記憶領域の双方を書き換える必要があったが、本実施形態によると書き換えの場合の処理を効率化することができる。
【００３３】
アクセス要求が「移動中」記憶領域に対する読み出しのときは、移動元記憶領域３０の該当部分にアクセスしアプリケーション部１０に応答する。アクセス要求が「移動中」記憶領域に対する書き換えのときは、データ移動処理部２１との間で調整を行って当該ブロックの移動処理を待ち合わせた後、移動先記憶領域４０の該当部分に書きこみ、アプリケーション部１０に応答する。
【００３４】
ここで、アクセス要求に基づいた位置であるアクセス位置からブロック位置を算出する方法は既知の従来技術である。例えば、アクセス要求に基づいた位置であるアクセス位置は、典型的な場合、データ全体の先頭からのオフセットとアクセス長の組で表される。これに対応するブロック位置は以下のように計算する。
【００３５】
ブロック番号を記憶領域の先頭方向から昇順に振っている場合、アクセスの先頭ブロック番号は、１＋（オフセット÷ブロック長）として計算する。アクセスの後尾ブロック番号は、（オフセット＋アクセス長＋ブロック長−１）÷ブロック長として計算する。
【００３６】
ブロック番号を昇順でも降順でもないあらかじめ決まった順に振っている場合には、例えば、いったん昇順の場合の上記式で計算した結果から、あらかじめ決まった順を表す変換テーブルを引くことによってブロック番号を計算する。
【００３７】
ブロック番号が計算されると、当該データの格納場所が「移動前」「移動中」「移動後」のいずれに該当するかがデータ移動処理部２１により判明する。なお、アクセスにかかわる一連のブロックが「移動前」「移動中」「移動後」にまたがる場合は、アクセス処理部２２において内部的にそれぞれに処理を分割し、結果を取りまとめてアプリケーション部１０に応答すればよい。
【００３８】
回復判定部２３は、データ移動処理中に何らかの障害が発生してデータ移動処理システム１００が停止した場合、該データ移動処理システム１００の再起動後に、障害発生直前にデータ移動処理部２１が作成した進捗情報を取得し、この進捗情報を参照して回復判定処理を行う。ここでは、移動元記憶領域３０と移動先記憶領域４０とを参照し、それぞれ記憶領域の「空き領域」に書き込まれた進捗情報を取得する。回復判定部２３は、取得した進捗情報において「移動後」とされる記憶領域については、再開後も「移動後」として管理する。それ以外の記憶領域、すなわち「移動前」、および「移動中」記憶領域についてはデータ移動再開処理の際に「移動前」に変更する。
【００３９】
回復判定処理完了後、データ移動処理部２１はデータ移動処理を再開する。再開後は、データ移動処理部２１が移動元記憶領域３０の「移動前」の記憶領域から順にデータを読み出し、読み出したデータを移動先記憶領域４０の「移動後」記憶領域に順次書き出す。
【００４０】
ここで、図３乃至図５を参照して本実施形態のデータ処理システム１００の動作について説明する。
【００４１】
まず、データ移動処理部２１が移動元記憶領域３０のブロック＃ｉ（ここでは１≦ｉ≦ｎ，ｉ：整数）を移動先記憶領域４０のブロック＃ｉに移動する際のデータ処理システム１００の動作について図３を参照して説明する。
【００４２】
図３は本実施形態のデータ処理システム１００に係るデータ移動処理部２１によるデータ移動処理の手順の一例を示すフローチャートである。
【００４３】
まず、データ移動処理部２１は、ｉを最初のブロック番号に初期化する（ステップＳ１０）。そしてデータ移動処理部２１は、データ移動処理の対象のブロック番号であるｉがブロック数ｎ以下の番号であることを確認する（ステップＳ１１）。
【００４４】
ブロック＃ｉがブロック数であるｎ以下の番号である場合（ステップＳ１１がＹｅｓ）、移動元記憶領域３０のブロック＃ｉのデータを移動先記憶領域４０のブロック＃ｉにコピーする（ステップＳ１２）。
【００４５】
続いて、データ移動処理部２１は、番号ｉの情報を含む進捗情報Ｐ（ｉ）を書き込む「空き領域」の判定として、まずブロック番号ｉが中間ブロックの番号ｍ以下か否か判定をする（ステップＳ１３）。
【００４６】
ｉ≦ｍの場合（ステップＳ１３がＹｅｓ）、進捗情報Ｐ（ｉ）を移動先のブロック＃ｎに書き込む（ステップＳ１４）。ｉ≦ｍでない場合（ステップＳ１３がＮｏ）、ステップＳ１４を行わず、ステップＳ１５へと進む。
【００４７】
次に、ｉが中間ブロックｍ以上か否か判定をする（ステップＳ１５）。ｉ≧ｍの場合（ステップＳ１５がＹｅｓ）、進捗情報Ｐ（ｉ）を移動元のブロック＃１に書き込む（ステップＳ１６）。ｉ≧ｍでない場合（ステップＳ１５がＮｏ）、ステップＳ１６を行わず、ステップＳ１７へと進む。
【００４８】
すなわち、データ移動処理部２１がブロック番号ｉの情報を含む進捗情報Ｐ（ｉ）を書き込む「空き領域」の場所は、ｉ＜ｍのときは移動先のブロック＃ｎであり、ｉ＞ｍのときは移動元のブロック＃１である。ｉ＝ｍのときは移動先のブロック＃ｎと移動元のブロック＃１の双方に書き込む。
【００４９】
進捗情報Ｐ（ｉ）の書き込み完了後、データ移動処理部２１はｉにｉ＋１を代入する（ステップＳ１７）。そしてステップＳ１１に戻り処理を繰り返す。
【００５０】
ステップＳ１１においてｉ≦ｎでない場合（ステップＳ１１がＮｏ）、データ移動処理部２１はデータ移動処理を終了する。なお、データ移動処理部２１はデータ移動処理の開始時に初期化処理として進捗情報Ｐ（０）を移動先のブロック＃ｎに書き込んでおく。Ｐ（０）は移動元記憶領域３０および移動先記憶領域４０の全てのブロックが「移動前」である。
【００５１】
また、進捗情報を書き込む空き領域は、移動先記憶領域４０ではブロック＃ｎ、移動元記憶領域３０ではブロック＃１であるとしたが、移動先記憶領域４０ではブロック＃ｍ＋１〜＃ｎの範囲、移動元記憶領域３０ではブロック＃１〜＃ｍ−１の範囲のあらかじめ決まった場所であればよい。また、進捗情報の書き込みは同一の場所に上書きするのではなく、追加しながら書いていくジャーナル書き込みとしてもよい。
【００５２】
なお、移動元記憶領域３０の「移動後」となったブロックで、進捗情報の保存に使用されないものは随時、フリー領域として開放し、他の用途に流用することもできる。
【００５３】
次に、アクセス処理部２２によるアクセス処理について図４を参照して説明する。
【００５４】
図４は本実施形態のデータ処理システム１００に係るアクセス処理部２２によるアクセス処理の手順の一例を示すフローチャートである。
【００５５】
まず、アクセス処理の開始としてアクセス処理部２２は、アプリケーション部１０からの読み出しまたは書き換えのいずれかのアクセス要求を受ける。そのアクセス対象に含まれるブロックの先頭のブロック番号をｊとする。すなわち、アクセス要求が複数のブロックにまたがっている場合は、各ブロックごとのアクセス要求に分割してから処理する。
【００５６】
アクセス処理部２２は、「移動中」のデータのブロック番号ｉとアクセスが含まれるブロック番号ｊとの大小関係を確認する（ステップＳ２１）。
【００５７】
ブロック番号ｉがアクセスが含まれるブロック番号ｊよりも大きい（ｊ＜ｉ）場合（ステップＳ２１Ｙｅｓ）、アクセス処理部２２は、移動先記憶領域４０のアクセス対象のブロック＃ｊにアクセスし（ステップＳ２８）、ステップＳ２５へ進む。
【００５８】
ブロック番号ｉがアクセスが含まれるブロック番号ｊ以下（ｊ≧ｉ）である場合（ステップＳ２１がＮｏ）、アクセス処理部２２は、ブロック番号ｊとブロック番号ｉとが等しいか否かを判定する（ステップＳ２２）。
【００５９】
ブロック番号ｊとブロック番号ｉとが等しくない場合（ステップＳ２２がＮｏ）、すなわち、ｊ＞ｉである場合、アクセス処理部２２は移動元記憶領域３０のアクセス対象のブロック＃ｊにアクセスし（ステップＳ２４）、ステップＳ２５へ進む。
【００６０】
ブロック番号ｊとブロック番号ｉとが等しい場合（ステップＳ２２がＹｅｓ）、アクセス処理部２２は、アクセス要求が読み出しか否かを判定する（ステップＳ２３）。アクセス要求が読み出しである場合（ステップＳ２３がＹｅｓ）、アクセス処理部２２は、移動元記憶領域３０のアクセス対象のブロック＃ｊにアクセスし（ステップＳ２４）、ステップＳ２５へ進む。
【００６１】
アクセス要求が読み出しでない場合（ステップＳ２３がＮｏ）、すなわち、アクセス要求が書き換えである場合、アクセス処理部２２はデータ移動処理部２１との間で調整を行った後、移動先記憶領域４０のブロック＃ｊを書き換える（ステップＳ２７）。すなわち、アクセス処理部２２は当該ブロックの移動完了を待ち合わせた後、移動先記憶領域４０の該当部分であるアクセス対象のブロック＃ｊにアクセスしステップＳ２５へ進む。
【００６２】
続いてステップＳ２５へ進む。ステップＳ２５で、アクセス処理部２２はアクセス対象のブロック番号ｊがアクセス対象の最後のブロック番号であるか否かを判定する（ステップＳ２５）。
【００６３】
最後のブロック番号でない場合（ステップＳ２５がＮｏ）、次のアクセス対象のブロックに対してステップＳ２１から同様の処理を繰り返す。
【００６４】
最後のブロック番号である場合（ステップＳ２５がＹｅｓ）、アクセス処理部２２はアプリケーション部１０に応答し（ステップＳ２６）、アクセス処理を終了する。
【００６５】
なお、ｊ＝ｉの時の読み出し（ステップＳ２３がＹｅｓ）は、データ移動処理部２１がブロック番号ｉのデータ移動のために読み出したデータを参照するように実装してもよい。
【００６６】
次に、回復判定部２３による回復判定処理について図５を参照して説明する。
【００６７】
図５は本実施形態のデータ処理システム１００に係る回復判定部２３による回復判定処理の手順の一例を示すフローチャートである。
【００６８】
ここでは、何らかの障害によって本実施形態のデータ処理システム１００の動作が中断された場合に、データ処理システム１００が再び起動された際に行われる処理について図５を用いて説明する。
【００６９】
まず、障害が発生してデータ処理システム１００が停止した際に、障害が復旧した後データ処理システム１００が再び起動する。起動すると、まず回復判定部２３が、移動先記憶領域４０のブロック＃ｎから進捗情報Ｐ（ｉ）を読み出す（ステップＳ３１）。続いて回復判定部２３は、読み出された進捗情報Ｐ（ｉ）が有効であるか否かを判定する（ステップＳ３２）。
【００７０】
進捗情報Ｐ（ｉ）が有効であるか否かは、例えばこの進捗情報Ｐ（ｉ）から「移動後」に遷移した最後のブロックの番号を取得し、取得したブロック番号と中間ブロックの番号ｍとの大小関係によって判定する。進捗情報Ｐ（ｉ）から取得したブロック番号が中間ブロック番号ｍより小さい場合（ステップＳ３２がＹｅｓ）には有効であり、この取得した番号をｉとする（ステップＳ３３）。また、進捗情報Ｐ（ｉ）の有効性の判定のためにＣＲＣ（巡回冗長符号）等を含めて進捗情報Ｐ（ｉ）を記録する従来技術を併用してもよい。
【００７１】
進捗情報Ｐ（ｉ）が有効でない場合（ステップＳ３２がＮｏ）、回復判定部２３は移動先記憶領域４０のブロック＃ｎの進捗情報Ｐ（ｉ）は無効であるとし、移動元記憶領域３０のブロック＃１から進捗情報Ｐ（ｉ）を読み出す（ステップＳ３５）。
【００７２】
そして、回復判定部２３は、読み出した進捗情報Ｐ（ｉ）から「移動後」に遷移した最後のブロックの番号ｉを取得する（ステップＳ３６）。
【００７３】
続いて、回復判定部２３はステップＳ３３もしくはステップＳ３６で取得された番号ｉに１を加えて、このｉを次の移動対象ブロック番号とし（ステップＳ３４）、回復判定処理を終了する。回復判定処理終了後、データ移動処理部２１がデータ移動処理を再開する。
【００７４】
回復判定処理で使用される進捗情報は、保存されている進捗情報のうちの「移動後」に遷移した最後の情報だけでよい。上述した本実施形態における進捗情報は従来用いられてきた差分ビットマップやキャッシュメモリによる管理に比べて格段に小さい量である。また、その更新頻度も、移動処理の進捗に比例した量だけであり、書き換えの量に依存しない。そのため、一定の小さい頻度である。したがって、この進捗情報の書き込みのオーバヘッドによる性能の劣化はほとんどない。
【００７５】
上述したように、本実施形態のデータ移動処理システムによると、特別なハードウェアを備えていない環境でも、オンラインデータの移動の一貫性、耐障害性、回復処理の効率の各要件を満たしたデータの移動を実現できる。これにより、コンュータ・システムの効率的な運用と耐障害性の向上、障害回復処理の迅速化につながる。
【００７６】
本実施形態のデータ移動処理システムは、データ処理管理部２０、移動元記憶装置３１、および移動先記憶装置４１のうちのいずれかひとつまたは複数の動作が障害によって停止したとしても、記憶装置間でのオンラインデータの移動の一貫性、耐障害性、回復処理の効率の各要件をすべて満たす。
【００７７】
なお、本実施形態ではデータ処理管理部２０、移動元記憶装置３１、移動先記憶装置４１のすべてが動作していなければ移動中のデータに完全にはアクセスできない。従来技術では、データ処理管理部２０、移動元記憶装置３１が動作していれば、移動先記憶装置４１が動作していなくても、移動中のデータに完全にアクセスできる。しかしこの点は、用途がデータのコピーではなく移動であることを考えれば、問題ではない。なぜなら、移動が完了した後はいずれにせよ、移動先記憶装置４１が動作していなければデータには完全にアクセスできなくなるからである。
【００７８】
また、移動元のデータ領域と移動先のデータ領域に含まれるデータだけから回復判定を行えるシンプルな構成とすることによって、高度に分散した環境においても効率よく確実に回復判定を行うことができ、さまざまな分散環境で適用可能である。
【００７９】
また本実施形態は、記憶装置に格納されるデータのサイズと形式を変換しない方式のため互換性が高く、従来の記憶装置をそのまま使用する環境でも、ソフトウェアとして実装することができるという特徴もある。
【００８０】
（第２の実施形態）
本発明の第２の実施形態について図６乃至図７を参照して説明する。
【００８１】
図６は移動元記憶装置３１と移動先記憶装置４１がそれぞれストレージ装置であるデータ処理システム１００の構成の一例を示すブロック図である。図６に示すように、本実施形態のデータ処理システム１００では、データ処理管理部２０は移動元記憶装置３１に備えられている。
【００８２】
図７に、本実施形態の移動元記憶装置３１および移動先記憶装置４１であるストレージ装置１１のハードウェア構成を示すブロック図を示す。
【００８３】
図７に示すように、ストレージ装置１１は、ホスト装置に接続するためのホストインタフェース（ホスト  Ｉ／Ｆ）２０１と、ＣＰＵ２０２と、プログラムメモリ２０３と、フラッシュメモリ２０４と、ハードディスクドライブに接続するためのハードディスクインタフェース（ＨＤＤ  Ｉ／Ｆ）２０５とを有するコントローラ２００と、記憶媒体であるハードディスクドライブ（ＨＤＤ）２０６とを備える。コントローラ２００は、データを格納するＨＤＤへのデータ転送処理を制御する。なお、記憶装置であるＨＤＤは、少なくとも１つのＨＤＤにより構成される論理的な記憶領域としてもよい。
【００８４】
コントローラ２００は、ＨＤＤ２０６と、外部のホスト装置などの上位装置との間のデータ送受信とを制御する機能を有する。また、コントローラ２００は、ＨＤＤ２０を制御する。
【００８５】
ＣＰＵ２０２は、コントローラ２００における必要処理を実行するものであり、フラッシュメモリ２０４は、そのための各種プログラムが格納されている不揮発メモリである。プログラムメモリ２０３には、不揮発メモリであるフラッシュメモリ２０４からロードされたプログラムとＣＰＵ２０２が利用するデータ等を格納するためのデータ領域が確保されている。
【００８６】
本実施形態で適用されるデータ移動処理の手法は、このプログラムメモリ２０３にロードされ、格納されている本実施形態のデータ移動プログラムをＣＰＵ２０２が読み取って実行することによって実現されるものとする。すなわち、本実施形態のデータ移動プログラムがプログラムメモリ２０３にロードされ、格納されているコントローラ２００は図１のデータ処理管理部２０として機能する。なお、プログラムメモリ２０３には、上述のプログラムを格納するための領域に加えて、ＣＰＵ２０２が利用するデータ等を格納するための領域も確保されている。
【００８７】
なお、本実施形態のデータ処理システム１００は、移動元記憶装置３１であるストレージ装置にのみ、本実施形態のデータ移動プログラムを備える。
【００８８】
上述したように本実施形態のデータ移動方法は、ストレージ装置間のデータ移動に適用可能であり、データの移動中でもそのことを意識することなくストレージシステムにアクセスできる。また、本実施形態のデータ処理システム１００が停止した後でも、データの移動の一貫性、耐障害性、回復処理の効率の各要件が満たされている。また本実施形態のストレージシステムは、データの移動に係わる不揮発性高速メモリ等のハードウェア・リソースの使用量を削減することを可能にする。このため、ストレージシステムのコストパフォーマンスを向上させることができる。
【００８９】
なお、本発明の実施形態のデータ移動方法を、ネットワークブートに対応していない汎用オペレーティングシステムをネットワークブートする際に行われるデータ移動に適用しても良い。
【００９０】
オペレーティングシステムをネットワーク上の記憶装置（以下、ネットワークストレージという）に格納し、ネットワーク経由で接続されたコンピュータでこのオペレーティングシステムを起動することをネットワークブート（もしくはネットブート）という。このネットワークブートは内蔵ディスクにデータを残さないためセキュリティ対策として近年特に注目されている。
【００９１】
例えば、ネットワークブートに対応していない汎用のオペレーティングシステムは、ローカルディスクにインストールされていることを前提として、コンピュータの立ち上げ処理を行うように設計されているものが主流である。そして、ローカルディスクにインストールされていることを前提としているオペレーティングシステムを、ネットワーク上のストレージに格納し、ネットワーク経由で接続されたコンピュータからこれを起動（ネットワークブート）しようとする場合、すなわち、内蔵されたディスクドライブから起動する通常のコンピュータシステムをネットワークブートに移行する場合、内蔵ディスクに格納されたデータをネットワークストレージに移動する必要がある。
【００９２】
本発明の実施形態のデータ移動方法を適用すると、オペレーティングシステムはコンピュータを運用し続けながら内蔵ディスクからネットワークブートにシームレスに移行することができる。また、移行中にコンピュータの停止障害が発生した場合でも、コンピュータの再起動後に、移行の続きを効率的に行うことができる。
【００９３】
すなわち、本実施形態のデータ移動方法を適用すると、データの移動中でもそのことを意識することなく利用することができる。またデータの移動中にコンピュータが再起動した場合でも、データの移動の一貫性、耐障害性、回復処理の効率の各要件が満たされている。
【００９４】
したがって、従来技術においてオペレーティングシステムをネットワークブートに移行する際の、コピーが完了するまではコンピュータが利用できない、あるいは途中で中断した場合には最初からやり直さなければならないといった問題を解決することが可能となる。
【００９５】
なお、移動元と移動先を逆にして、ネットワークブートから通常起動のコンピュータに移行する場合にも、同様に本発明を適用可能である。
【００９６】
また、本発明の実施形態のデータ移動方法を適用すると、コンピュータを運用し続けながら内蔵ディスクからネットワークブートにシームレスに移行することができるようになる。また、移行中にコンピュータの停止障害が発生した場合でも、コンピュータの再起動後に、移行の続きを効率的に行うことができる。また、第１の実施形態および第２の実施形態と同様に、記憶装置に格納されるデータのサイズと形式を変換することのない互換性の高い方法を提供することができる。
【００９７】
すなわち、上述したような本発明の実施形態によれば、特別なハードウェアが備わっていない環境でも、オンラインデータの移動の一貫性、耐障害性、回復処理の効率の各要件をすべて満たしたデータの移動を実現でき、コンピュータ・システムの効率的な運用と耐障害性の向上、障害回復処理の迅速化につながる。
【００９８】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００９９】
例えばデータ処理管理部２０は、アプリケーション部１０の備えるコンピュータ５００に備えられてもよい。もしくは別のコンピュータに備えられてもよい。また、移動元記憶装置３１または移動先記憶装置４１に在ってもよい。すなわち、データ処理管理部２０とアプリケーション部１０、データ処理管理部２０と移動元記憶領域３０、データ処理管理部２０と移動先記憶領域４０のそれぞれの間にアクセスパスが確保されていればよい。
【０１００】
また、本実施形態のデータ移動方法は、ハードディスクドライブ上のデータに限らず、ファイルシステムにおけるファイルデータの移動にも適用可能である。この場合、移動元記憶装置３１と移動先記憶装置４１はファイルシステムである。また、本実施形態のデータ移動プログラムはアプリケーションに組み込まれる。
【０１０１】
上述したファイルシステムによると、データの移動中でもそのことを意識することなくファイルにアクセスできる。また、アプリケーションやファイルシステムに障害停止が発生した後でも、データの移動の一貫性、耐障害性、回復処理の効率の各要件が満たされている。なお、この場合、ファイルシステム自体が一貫性、耐障害性を保持する。
【０１０２】
また、上述したファイルシステムは、当該データ移動プログラムを含むアプリケーションに障害停止が発生した後、当該データ移動プログラムを含む別のアプリケーションを別のコンピュータで起動し、データの移動を再開するというアプリケーションのフェイルオーバが可能となる。これは、移動元のデータ領域と移動先のデータ領域に含まれるデータのみから回復判定を行えるシンプルな構成となっているためである。
【符号の説明】
【０１０３】
１０…アプリケーション部
２０…データ処理管理部
２１…データ移動処理部
２２…アクセス処理部
２３…回復判定部
３０…移動元記憶領域
３１…移動元記憶装置
４０…移動先記憶領域
４１…移動先記憶装置
６０…ストレージエリアネットワーク
５００…コンピュータ
【図１】
2012088817.tif 000003
【図２】
2012088817.tif 000004
【図３】
2012088817.tif 000005
【図４】
2012088817.tif 000006
【図５】
2012088817.tif 000007
【図６】
2012088817.tif 000008
【図７】
2012088817.tif 000009