【手続補正書】
【提出日】平成18年6月1日(2006.6.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】        明細書
【発明の名称】    データバックアップ方法、コンピュータプログラム及び情報処理装置並びにデータのバックアップ及び回復方法
【特許請求の範囲】
【請求項１】
可搬型の情報処理装置においてデータをバックアップするためのデータバックアップ方法であって、
データ入出力要求を受け付け、該データ入出力要求に従って、第一のデータストレージデバイスとの間でデータを交換し、該データの幾つかを該第一のデータストレージデバイスの一つ以上のデータブロックに保存する第一のステップと、
該データが保存されたデータブロックについて、第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリをもつランタイムビットマップの対応する該エントリに第一の値をセットする第二のステップと、
該第一の値にセットされた該ランタイムビットマップの各エントリについて、該データ入出力要求の受け付けとは非同期に、該第一のデータストレージデバイスの対応するデータブロックに保存されたデータを第二のデータストレージデバイスにコピーするコピー処理を実行すると共に、該ランタイムビットマップの各エントリの値をクリアする第３のステップと
を備えることを特徴とするデータバックアップ方法。
【請求項２】
該第一のデータストレージデバイスは内部ディスクドライブであり、該第二のデータストレージデバイスはリモートディスクドライブであり、該ランタイムビットマップを該内部ディスクドライブから取得する
ことを特徴とする請求項１に記載のデータバックアップ方法。
【請求項３】
該第一のデータストレージデバイスはリモートディスクドライブであり、該第二のデータストレージデバイスは内部ディスクドライブであり、該ランタイムビットマップを該リモートディスクドライブから取得する
ことを特徴とする請求項１に記載のデータバックアップ方法。
【請求項４】
該第一のデータストレージデバイスとの間で交換されるデータは、該ランタイムビットマップの対応するエントリが該第一の値にセットされているか否かに基づいて、該リモートディスクドライブ又は該内部ディスクドライブの対応するデータブロックから読み出したデータを含む
ことを特徴とする請求項３に記載のデータバックアップ方法。
【請求項５】
該第一のデータストレージデバイスとの間で交換されるデータは、該ランタイムビットマップの対応するエントリが該第一の値にセットされているときには、該リモートディスクドライブの対応するデータブロックから読み出したデータの一つを含み、該ランタイムビットマップの対応するエントリが該第一の値にセットされていないときには、該内部ディスクドライブの対応するデータブロックから読み出したデータを含む
ことを特徴とする請求項４に記載のデータバックアップ方法。
【請求項６】
シャットダウン要求を受け付け、これに応じて、
該第一のデータストレージデバイスが内部ディスクドライブで、該第二のデータストレージデバイスがリモートディスクドライブの場合、該第一の値にセットされている該ランタイムビットマップの各対応するエントリに対して、該第一のデータストレージデバイスの対応するデータブロックから読み出したデータを該第二のデータストレージデバイスの対応するデータブロックにコピーし；更に
該第一のデータストレージデバイスがリモートディスクドライブで、該第二のデータストレージデバイスが内部ディスクドライブの場合でかつ、該第一の値にセットされている該ランタイムビットマップの各対応するエントリに対して、該リモートディスクドライブから該内部ディスクドライブに、対応するデータブロックのデータをコピーするのに要する時間が、規定の限界値を超える場合は、該ランタイムビットマップを該第一のデータストレージデバイスにコピーする
ことを特徴とする請求項１に記載のデータバックアップ方法。
【請求項７】
データバックアップをするためのコンピュータプログラムであって、
データ入出力要求を受け付け、該データ入出力要求に従って、第一のデータストレージデバイスとの間でデータを交換し、該データの幾つかを該第一のデータストレージデバイスの一つ以上のデータブロックに保存する第一のステップと、
該データが保存されたデータブロックについて、第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリをもつランタイムビットマップの対応する該エントリに第一の値をセットする第二のステップと、
該第一の値にセットされた該ランタイムビットマップの各エントリについて、該データ入出力要求の受け付けとは非同期に、該第一のデータストレージデバイスの対応するデータブロックに保存されたデータを第二のデータストレージデバイスにコピーするコピー処理を実行すると共に、該ランタイムビットマップの各エントリの値をクリアする第３のステップと
を備える処理をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項８】
該第一のデータストレージデバイスは内部ディスクドライブであり、該第二のデータストレージデバイスはリモートディスクドライブであり、該ランタイムビットマップを該内部ディスクドライブから取得する
ことを特徴とする請求項７に記載のコンピュータプログラム。
【請求項９】
該第一のデータストレージデバイスはリモートディスクドライブであり、該第二のデータストレージデバイスは内部ディスクドライブであり、該ランタイムビットマップを該リモートディスクドライブから取得する
ことを特徴とする請求項７に記載のコンピュータプログラム。
【請求項１０】
該第一のデータストレージデバイスとの間で交換されるデータは、該ランタイムビットマップの対応するエントリが該第一の値にセットされているか否かに基づいて、該リモートディスクドライブ又は該内部ディスクドライブの対応するデータブロックから読み出したデータを含む
ことを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１１】
内部に収納された内部ディスクドライブと、
外部に設けられたリモートディスクドライブと交信するための通信回路と、
コンピュータプログラムが格納されたメモリシステムと
を備え、
該メモリシステムに、
データ入出力要求を受け付け、該データ入出力要求に従って、該内部ディスクドライブ又は該リモートディスクドライブとの間でデータを交換し、該データの幾つかを該内部ディスクドライブ又は該リモートディスクドライブの一つ以上のデータブロックに保存する第一のステップと、
該データが保存されたデータブロックについて、該内部ディスクドライブ又は該リモートディスクドライブを構成する複数のデータブロックの各々に対応するエントリをもつランタイムビットマップの対応する該エントリに第一の値をセットする第二のステップと、
該第一の値にセットされた該ランタイムビットマップの各エントリについて、該データ入出力要求の受け付けとは非同期に、該内部ディスクドライブ又は該リモートディスクドライブの対応するデータブロックに保存されたデータを該リモートディスクドライブ又は該内部ディスクドライブにコピーするコピー処理を実行すると共に、該ランタイムビットマップの各エントリの値をクリアする第３のステップと
を備える処理を実行させるためのプログラムが格納された
ことを特徴とする情報処理装置。
【請求項１２】
情報処理装置におけるデータのバックアップ及び回復方法であって、
ビットマップを保存している内部ディスクドライブが使用可能かを判定すると共に、該ビットマップを保存しているリモートディスクドライブが使用可能かを判定する第１のステップと、
データのバックアップ及び回復処理を実行する第２のステップと
を備え、
前記第２のステップでは、
該内部ディスクドライブ及び該リモートディスクドライブが共に使用可能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第一の動作ステータスをセットする一方、該第一の情報が第二のモードを示しているときには、第二の動作ステータスをセットし、
該内部ディスクドライブから該第一の情報がアクセスできないときには、該リモートディスクドライブに保存されている該ビットマップの全てのエントリを第一の状態にセットし、該第二の動作ステータスをセットし、
該内部ディスクドライブが使用可能で、該リモートディスクドライブが使用不能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第三の動作ステータスをセットする一方、該第一の情報が該第二のモードを示すか又は該第一の情報が該内部ディスクドライブからアクセスできないときには、該情報処理装置の動作を停止し、
該リモートディスクドライブが使用可能で、該内部ディスクドライブが使用不能なときには、第四の動作ステータスをセットし、
該ステータスに対応して、該内部ディスクドライブの該ビットマップ又は該リモートディスクドライブの該ビットマップを、ランタイムビットマップとして該情報処理装置のメモリ内にロードし、
書き込み動作の間に、該ランタイムビットマップのエントリに第一の値をセットし、
該ランタイムビットマップの内容と該ステータスに基づいて、該内部ディスクドライブと該リモートディスクドライブとの間でデータブロックのコピーを実施する
ことを特徴とするデータのバックアップ及び回復方法。
【請求項１３】
該判定は、ブートオーダテーブルの内容に基づく
ことを特徴とする請求項１２のデータのバックアップ及び回復方法。
【請求項１４】
更にシャットダウン要求を受け付け、これに応答して、
(i) 該ステータスが、該第一の動作ステータスのときには、該ランタイムビットマップの内容に基づいて、該内部ディスクドライブから該リモートディスクドライブにデータブロックのコピーを行い、
該ランタイムビットマップをクリアし、該ランタイムビットマップを該内部ディスクドライブ及び該リモートディスクドライブに保存し、該内部ディスクドライブ及び該リモートディスクドライブ双方に対して、該第一の情報を該第一のモードにセットし、
(ii) 該ステータスが、該第三の動作ステータスのときには、該ランタイムビットマップを該内部ディスクドライブにコピーし、
(iii) 該ステータスが、該第二の動作ステータスのときには、
(A) データブロックを該リモートディスクドライブから該内部ディスクドライブにコピーするに要する時間を推定し、該時間が限界値以下であれば、該ランタイムビットマップに基づいて、該リモートディスクドライブから該内部ディスクドライブにデータブロックのコピーを行い、該(i)の処理を実行し、
(B) 該時間が該限界値を超えるときには、該ランタイムビットマップを該リモートディスクドライブにコピーし、該内部ディスクドライブ及び該リモートディスクドライブ双方に対して該第一の情報を該第二のモードにセットし、
(iv) 該ステータスが、第四の動作ステータスのときには、該(iii)(B)に従ったコピーと設定を行う
ことを特徴とする請求項１２に記載のデータのバックアップ及び回復方法。
【請求項１５】
内部ディスクドライブとの間でデータの入出力を行う第一の回路と、
リモートディスクドライブとの間でデータの入出力を行う第二の回路と、
予め与えられたプログラムに基づいて所定の制御処理を実行するプロセッサと
を備え、
該プロセッサは、該プログラムに基づいて、
ビットマップを保存している内部ディスクドライブが使用可能かを判定すると共に、該ビットマップを保存しているリモートディスクドライブが使用可能かを判定する第１のステップと、
データのバックアップ及び回復処理を実行する第２のステップと
を備える制御処理を実行し、
前記第２のステップでは、
該内部ディスクドライブ及び該リモートディスクドライブが共に使用可能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第一の動作ステータスをセットする一方、該第一の情報が第二のモードを示しているときには、第二の動作ステータスをセットし、
該内部ディスクドライブから該第一の情報がアクセスできないときには、該リモートディスクドライブに保存されている該ビットマップの全てのエントリを第一の状態にセットし、該第二の動作ステータスをセットし、
該内部ディスクドライブが使用可能で、該リモートディスクドライブが使用不能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第三の動作ステータスをセットする一方、該第一の情報が該第二のモードを示すか又は該第一の情報が該内部ディスクドライブからアクセスできないときには、該情報処理装置の動作を停止し、
該リモートディスクドライブが使用可能で、該内部ディスクドライブが使用不能なときには、第四の動作ステータスをセットし、
該ステータスに対応して、該内部ディスクドライブの該ビットマップ又は該リモートディスクドライブの該ビットマップを、ランタイムビットマップとして該情報処理装置のメモリ内にロードし、
書き込み動作の間に、該ランタイムビットマップのエントリに第一の値をセットし、
該ランタイムビットマップの内容と該ステータスに基づいて、該内部ディスクドライブと該リモートディスクドライブとの間でデータブロックのコピーを実施する
ことを特徴とする情報処理装置。
【請求項１６】
情報処理装置においてデータをバックアップするデータバックアップ方法であって、
一つ以上のＩ／Ｏ（入／出力）要求を受信する第１のステップと、
ローカルデータストレージデバイス及びリモートデータストレージデバイスのうち、いずれがアクセス可能であるかを判定する第２のステップと、
データのバックアップ処理を実行する第３のステップと
を備え、
前記第３のステップでは、
前記ローカルストレージデバイスがアクセス可能である場合には、
該Ｉ／Ｏ要求に従って、該ローカルデータストレージデバイスとの間で情報を交換し、該情報の一部を該ローカルデータストレージデバイスの一つ以上のデータブロックに保存し、
ランタイムビットマップは、該第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを有し、更新された該一つ以上のデータブロックの各々について、該ランタイムビットマップのエントリを第一の値にセットし、
該第一の値にセットされた該ランタイムビットマップの各エントリについて、該ローカルデータストレージデバイスから該リモートデータストレージデバイスにデータのコピー処理を実施し、該各エントリをクリアし、該コピー処理は、該一つ以上のＩ／Ｏ要求の受信と非同期に実施し、
該ローカルストレージデバイスがアクセス不能である場合には、
該Ｉ／Ｏ要求に従って、該リモートデータストレージデバイスとの間で情報を交換し、該情報の一部を該リモートデータストレージデバイスの一つ以上のデータブロックに保存し、
第二のランタイムビットマップは、該リモートデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを有し、更新された該一つ以上のデータブロックの各々について、該第二のランタイムビットマップのエントリを第一の値にセットし、
該ローカルストレージデバイスがアクセス可能になった後、該第一の値にセットされた該第二のランタイムビットマップの各エントリについて、該リモートデータストレージデバイスから該ローカルデータストレージデバイスにデータのコピー処理を実施し、該各エントリをクリアし、該コピー処理は、該一つ以上のＩ／Ｏ要求の受信と非同期に実施することを含み、
後続のコピー処理は、該二つのデータストレージデバイスのうち、一方のデータストレージデバイスのランタイムビットマップに基づき該一方のデータストレージデバイスから他方のストレージデバイスにデータのコピー処理を実施する
ことを特徴とするデータバックアップ方法。
【請求項１７】
データバックアップをするためのコンピュータプログラムであって、
一つ以上のＩ／Ｏ（入／出力）要求を受信する第１のステップと、
ローカルデータストレージデバイス及びリモートデータストレージデバイスのうち、いずれがアクセス可能であるかを判定する第２のステップと、
データのバックアップ処理を実行する第３のステップと
を備え、
前記第３のステップでは、
前記ローカルストレージデバイスがアクセス可能である場合には、
該Ｉ／Ｏ要求に従って、該ローカルデータストレージデバイスとの間で情報を交換し、該情報の一部を該ローカルデータストレージデバイスの一つ以上のデータブロックに保存し、
ランタイムビットマップは、該第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを有し、更新された該一つ以上のデータブロックの各々について、該ランタイムビットマップのエントリを第一の値にセットし、
該第一の値にセットされた該ランタイムビットマップの各エントリについて、該ローカルデータストレージデバイスから該リモートデータストレージデバイスにデータのコピー処理を実施し、該各エントリをクリアし、該コピー処理は、該一つ以上のＩ／Ｏ要求の受信と非同期に実施し、
該ローカルストレージデバイスがアクセス不能である場合には、
該Ｉ／Ｏ要求に従って、該リモートデータストレージデバイスとの間で情報を交換し、該情報の一部を該リモートデータストレージデバイスの一つ以上のデータブロックに保存し、
第二のランタイムビットマップは、該リモートデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを有し、更新された該一つ以上のデータブロックの各々について、該第二のランタイムビットマップのエントリを第一の値にセットし、
該ローカルストレージデバイスがアクセス可能になった後、該第一の値にセットされた該第二のランタイムビットマップの各エントリについて、該リモートデータストレージデバイスから該ローカルデータストレージデバイスにデータのコピー処理を実施し、該各エントリをクリアし、該コピー処理は、該一つ以上のＩ／Ｏ要求の受信と非同期に実施することを含み、
後続のコピー処理は、該二つのデータストレージデバイスのうち、一方のデータストレージデバイスのランタイムビットマップに基づき該一方のデータストレージデバイスから他方のストレージデバイスにデータのコピー処理を実施する
処理をコンピュータに実行させるためのコンピュータプログラム。
【請求項１８】
情報処理装置におけるデータのバックアップ及び回復方法であって、
ビットマップを保存している内部ディスクドライブが使用可能かを判定すると共に、該ビットマップを保存しているリモートディスクドライブが使用可能かを判定する第１のステップと、
データのバックアップ及び回復処理を実行する第２のステップと
を備え、
前記第２のステップでは、
該内部ディスクドライブ及び該リモートディスクドライブが共に使用可能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第一の動作ステータスをセットする一方、該第一の情報が第二のモードを示しているときには、第二の動作ステータスをセットし、
該内部ディスクドライブから該第一の情報がアクセスできないときには、該リモートディスクドライブに保存されている該ビットマップの全てのエントリを第一の状態にセットし、該第二の動作ステータスをセットし、
該内部ディスクドライブが使用可能で、該リモートディスクドライブが使用不能なときには、
該内部ディスクドライブの第一の情報にアクセスし、
該第一の情報が第一のモードを示しているときには、第三の動作ステータスをセットする一方、該第一の情報が該第二のモードを示すか又は該第一の情報が該内部ディスクドライブからアクセスできないときには、該情報処理装置の動作を停止し、
該ステータスに対応して、該内部ディスクドライブの該ビットマップ又は該リモートディスクドライブの該ビットマップを、ランタイムビットマップとして該情報処理装置のメモリ内にロードし、
書き込み動作の間に、該ランタイムビットマップのエントリに第一の値をセットし、
該ランタイムビットマップの内容と該ステータスに基づいて、該内部ディスクドライブと該リモートディスクドライブとの間でデータブロックのコピーを実施する
ことを特徴とするデータのバックアップ及び回復方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データバックアップと回復のための方法と装置に関し、例えばＰＣに関する。
【０００２】
【従来の技術】
ＰＣ（Personal Computer：パソコン）は日常生活の全ての局面で、必須ツールとして使用されて久しい。殆ど全てのビジネス処理が、ＰＣに依存していることは、言うに及ばない。インターネットアクセス又は業務処理のために、家庭内でも広く使用されるに至っている。一般的にＰＣは、ＣＰＵチップ及びこれをサポートするＲＡＭ（Random Access Memory：ランダムアクセスメモリ）、メモリコントローラ、グラフィックコントローラ等の多数の回路を実装する"マザーボード"から構成される。一般的には、内部ハードディスクドライブ、ＣＤ（Compact Disk：コンパクトディスク）リーダ或いはリーダ／ライタ装置、フロッピドライブ等の多様なデータストレージ装置が含まれる。このようなマシーンの"頭脳"は、ＰＣ上で動作する各種のソフトウエアコンポーネントである。例えば、重要なソフトウエアコンポーネントの一つは、多様なプログラムコードで成り立つＯＳ（Operating System：オペレーティングシステム）である。
【０００３】
ハードディスクドライブにはメカニカルな負担がかかっており、ＰＣを障害にさせる第一のコンポーネントの一つである。ハードディスクドライブのメカニカルな障害は、一般的にはデータストレージ媒体の破壊に結びつく。この状況は、ディスクドライブクラッシュとか、ヘッドクラッシュ（読み出し／書き込み用のヘッドがストレージ媒体上に接触するので）と呼ばれている。ディスクドライブクラッシュの場合には、クラッシュされたディスクからデータを回復する術はなく、データは事前にバックアップされていない限り失われてしまう。このような事態を望まないユーザは、手動（例えば家庭環境の場合）やソフトウエアの助けを借りて、データを頻繁にバックアップしている。
【０００４】
ＲＡＩＤ（Redundant Array of Inexpensive Disk：低価格ディスクの冗長配列（ディスクアレイ装置））は、データ回復のためのハード的解決策である。ＲＡＩＤの標準は、多くのレベルのバックアップ手段を提供しており、各々異なった性能とデータ回復能力を持っている。ＲＡＩＤ１は、データが一つのディスクドライブから他のディスクドライブ（バックアップディスクドライブと呼ばれる）に、ファイルレベルではなくブロックレベルで複製されるレベルである。アプリケーションからは、ただ一台の論理ディスクドライブが見えるだけである。しかしながら、この論理ディスクドライブはミラーリングと呼ばれるＲＡＩＤ１構成の２台のハードディスクドライブから構成されている。アプリケーションが論理ディスクドライブに書き込みコマンドを発行すると、該コマンドは背後にある両方のディスクドライブに発行され、その結果両方のディスクドライブは常に同じデータを保持している。かくして、ディスクドライブのうちの１台がクラッシュしても、他の生存ディスクドライブのデータが使用可能である。
【０００５】
ＲＡＩＤ１は一般にディスクコントローラカードに実装され、これには、ＬＶＭ（Logical Volume Manager：論理ボリュームマネージャ）とＲＡＩＤディスクアレイが含まれる。ディスクコントローラカードはＰＣＩ又はＰＣカードで、ＰＣに挿入され、２台のハードディスクドライブに接続される。このカードは、ＰＣのＣＰＵによって発行されるＩ／Ｏコマンドを実行するためのプロセッサを持っている。ＬＶＭはＯＳ中のソフトウエアモジュールである。このＬＶＭコンポーネントは、両方のディスクドライブを"管理"し、ディスクＩ／Ｏを実行するためのＩ／Ｏルーチン（システムコール）を提供する。これより上位レベルのアプリケーションプログラムには、ただ一台の論理ディスクドライブが見えるだけである。ＲＡＩＤディスクアレイは外部ボックスであり、内部に多数のディスクドライブを持ち、一つ以上のＰＣからのＩ／Ｏコマンドを実行するディスクコントローラを有する。ＲＡＩＤディスクアレイとＰＣはＳＣＳＩインターフェース又はファイバチャネルインターフェース或いは同種のインターフェースを通して結合される。しかしながら、ＲＡＩＤシステムは典型的には可搬ではない。かくして、通常のＲＡＩＤによる解決策は、可搬コンピュータ、例えばラップトップコンピュータには向かない。
【０００６】
【発明が解決しようとする課題】
一つのコンピュータシステムにおいて、バックアップと回復処理には、情報の読み書きを内部ディスクかリモートディスクの何れに対して行うかを決めるために、オペレーションのモード及び動作ステータスを特定することが必要になる。
【０００７】
【課題を解決するための手段】
ランタイムビットマップは、当該コンピュータシステムの動作ステータスに基づいて、対応するディスクブロックが、一つのディスクドライブから他のディスクドライブにコピーされるべきか否かを示す。このランタイムビットマップは、第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリをもつ。シャットダウン処理には、当該コンピュータシステムの動作ステータスに基づいて、ランタイムビットマップに従ってリモートディスクドライブから内部ディスクドライブにデータブロックをコピーすること、又は単にビットマップをリモートディスクドライブにコピーすることが含まれる。
【０００８】
【発明の実施の形態】
図１は本発明に従った、データバックアップ及び回復システムの実施例の一般的ブロックダイアグラムである。システム０１０６は、ＰＣ（パソコン）０１０１とネットワーク０１０３を介してアクセス可能なリモートディスクドライブ０１０５を含む。ネットワークの例には、イーサネットやファイバチャネルが含まれる。ｉＳＣＳＩプロトコルは、イーサネット上でのＰＣとリモートディスクドライブとの間のデータ転送に使用され、ＳＣＳＩ／ＦＣプロトコルはファイバチャネル上でのデータ転送に使用される。
【０００９】
ＰＣ０１０１は、ＣＰＵ０１０１０１、ＲＡＭ等で構成されるメモリコンポーネント０１０１０３、及び内部ディスクドライブ０１０１０９等のデータストレージデバイスで一般的に構成される。特定の実装の場合、ＰＣは、一般的にはファームウエアに格納されるＢＩＯＳ（Basic I/O System：基本Ｉ／Ｏシステム）０１０１０５を含む。このＢＩＯＳは、データストレージデバイスの順序付けを指定するブートオーダテーブル０１０１０７を含む。ブートプログラムは、各データストレージデバイスをブートオーダテーブルで示される順序で検索する事により、取得される。ＣＰＵとメモリは、典型的なコンピュータに於いて、ＯＳ等のプログラムを走行させるための重要コンポーネントである。ＢＩＯＳはＰＣの立ち上がりに、最初に実行されるプログラムである。このＢＩＯＳの役割は、ブートプログラムをメモリに読み込み、ブートコードに制御を渡すことである。このブートプログラムがＰＣ操作に必要なプログラム、即ちＯＳを読み込むことになる。内部ディスクドライブは、ＩＤＥインターフェースやＳＣＳＩインターフェース等の適当なデータＩ／Ｏ接続を経由して、ＰＣに結合される。
【００１０】
図２は、ＰＣ上で走行（実行）する典型的ソフトウエア構成を示す。ＯＳ０２０３は、アプリケーション０２０１が走行できるようにする。このＯＳ機能には、メモリ管理、デバイス管理及びプロセススケジューリング等が含まれる。本発明に関連して、ＬＶＭ（論理ボリュームマネージャ）０２０３０３がＯＳのデータＩ／Ｏコンポーネントとして組み込まれており、データストレージデバイスに対するＩ／Ｏ処理を実行する。
【００１１】
ＯＳ上で走行するアプリケーションは、ファイルシステム０２０３０１をデータストレージシステムとの間のデータ交換（データの読み書き）の為のインターフェースとして使用する。このファイルシステムは、ＯＳの一コンポーネントで、アプリケーションに対してファイルレベルのＩ／Ｏ処理を提供する。ＬＶＭは、ファイルシステムの下で走行し、このファイルシステムに内部ディスクドライブとリモートディスクドライブのペアを１論理ビューとして見えるようにする。このファイルシステムは論理ディスクドライブに対して、ブロックレベルＩ／Ｏ要求を出力する。
【００１２】
このＬＶＭ０２０３０３を構成するコンポーネントは、Ｉ／Ｏエージェントデーモン０２０３０３ａ、同期エージェントデーモン０２０３０３ｂ、ＬＶＭ＿Ｉｎｉｔ処理０２０３０３ｃ、ＬＶＭ＿Ｓｈｕｔｄｏｗｎ処理０２０３０３ｄ、及びＬＶＭステータスデータ記録０２０３０３ｅを含む。Ｉ／Ｏエージェントはファイルシステム０２０３０１からの要求を処理する。同期エージェントは、通常動作の場合、（以下に議論されるように）内部ディスクドライブからリモートディスクドライブへのデータのコピー、又は回復動作の場合、（以下に同様に議論されるように）逆方向のデータコピーを実行する。ＬＶＭ＿Ｉｎｉｔ処理は、ブートアップ期間での処理を実行する。ＬＶＭ＿Ｓｈｕｔｄｏｗｎ処理は、ＯＳがシャットダウンされるときにコールされる。ＬＶＭステータスはＬＶＭの動作状態を決定する。
【００１３】
ディスクドライブの論理ビューは、図２Ａに示される如く、１論理ディスクドライブ０２０１１として参照される。論理ディスクドライブは、内部ディスクドライブ０１０１０９とリモートディスクドライブ０１０５から構成される。ＬＶＭソフトウエアコンポーネント０２０３０３は、両方のディスクドライブが同一のデータを維持する責任を持つ。ファイルシステム０２０３０１は、２つのディスクドライブを区別しない。このファイルシステムは、論理ディスクドライブにＩ／Ｏコマンドを発行し、ＬＶＭがこのコマンドを処理する。ＬＶＭが如何にＩ／Ｏコマンドを処理するかは、後に述べる。
【００１４】
図３は、内部ディスクドライブ（０１０１０９、図１）とリモートディスクドライブ（０１０５）のディスクスペースの論理的分割を示す。内部ディスクドライブとリモートディスクドライブ双方のディスクスペースは、４つのパーテイションに分割されている。本発明の一実施例では、ブートブロック部０３０１０１、ＬＶＭスーパブロック部０３０１０３、データ部０３０１０５、及びビットマップ部０３０１０７が存在する。データ部０３０１０５はディスクスペースの大部分を占め、ユーザのデータファイル類の格納に使用される。
【００１５】
ブートブロック部０３０１０１は、ディスクからＯＳを読み込み、ＯＳプログラムを実行する為のブートストラップコードを保存している。ＰＣのＢＩＯＳがＰＣ起動時にこのブートストラップコード（"ブートストラップローダー"）を読み込み、このコードを実行する。このブートストラップコードは次に、ＯＳプログラムを一つのディスクドライブから読み込み、これを実行する。このプロセスは、一般的にブートストラッピングと呼ばれる。ＯＳプログラムは、ＯＳの核となるプログラムであるカーネルを含めて、多くのコンポーネントから構成される。
【００１６】
ＬＶＭスーパブロック部０３０１０３はＬＶＭ構成に関する情報を保持している。図４にＬＶＭスーパブロックの詳細を示す。ＬＶＭスーパブロックは４種類の情報：ＬＶＭ名０４０１０１、ＬＶＭモード０４０１０３、内部ディスク０４０１０５、及びリモートディスク０４０１０７を有する。ＬＶＭ名は、論理ディスクドライブを特定する文字列である。
【００１７】
ＬＶＭモードは、通常と回復の二つのモードのうちの一つを指定する。通常モードでは、内部ディスクドライブが最新のデータを保持する。通常モードのＬＶＭ動作の間に、ＬＶＭは内部ディスクドライブからリモートディスクドライブにデータのコピーを行う。回復モードでは、リモートディスクドライブが最新のデータを保持しているので、ＬＶＭはリモートディスクドライブから内部ディスクドライブにデータのコピーを行う。回復モードは、内部ディスクドライブが新ドライブに交換されたか、又はそれ以外で、最早最新データを保持していない場合を示す。
【００１８】
内部ディスク部分０４０１０５及びリモートディスク部分０４０１０７は、各々、どのディスクドライブがオリジナルディスクドライブとして、どのディスクドライブがオリジナルのコピーディスクドライブとして使用されているかを示す。内部ディスク部分にＩＤが記されているディスクドライブがオリジナルとして使用される。同様に、リモートディスク部分にＩＤが記されているディスクドライブがコピーディスクとして使用される。ディスクドライブのＩＤは、例えば、当該ドライブのシリアル番号やシリアルコード等の幾つかの方法で指定できる。
【００１９】
ビットマップ部０３０１０７は、内部ディスクドライブ０１０１０９の各ブロックに対応して一つのエントリを持つマップである。リモートディスクドライブ０１０５も同様のビットマップを持つ。内部ディスクドライブに保存されたビットマップ（ブロックマップ）の各エントリは、対応するブロックのデータが内部ディスクドライブでは更新されて、未だリモートディスクドライブに反映されていない事を示すために用いられる。リモートディスクドライブに保存されたビットマップ（ブロックマップ）の各エントリは、リモートディスクドライブの対応するブロックのデータが内部ディスクドライブに未だコピーされていない事を示すために用いられる。これらビットマップの使用法については、後で更に議論される。
【００２０】
図５にビットマップ０５０１の実装例を示す。このビットマップは、ブロック番号０５０１０１とこれに対応するフラグ０５０１０３を持つ。ブロックはＬＶＭ０２０３０３が扱うデータの単位である。例えば、１ディスクドライブの容量が１ＧＢ（２３０バイト）として、ＬＶＭの１ブロックが１ＭＢ（２２０バイト）とすると、当該ディスクドライブは、１ｋブロック（２１０ブロック）を有することになる。ＬＶＭは、ディスクドライブ中の各ブロックにアクセスするのに、ブロック番号を使用する。この例では、ビットマップは１０２４エントリを持つことになる。フラグ部分は一般的な意味で、各エントリに対応するブロックが、他のディスクにコピーされているか否かを示す。単純に慣例に従えば、"１"はブロックがコピー未であることを、"０"はブロックがコピー済みであることを示す。上述のように、具体的な意味付けはＬＶＭの動作モードによって決まる。以下に説明されるように、ＬＶＭが通常モードなら、データは内部ディスクドライブからリモートディスクドライブにコピーされ、回復モードなら、データはリモートディスクドライブから内部ディスクドライブにコピーされる。
【００２１】
図６は、ＬＶＭステータスデータ部分０６０１を示す。ＬＶＭステータスはＰＣの"動作状況"を示すために使用される。本発明の一実施例では、４つの動作状態：ＯＦＦＩＣＥ，ＨＯＭＥ，ＲＥＣＯＶＥＲＹ，及びＥＭＥＲＧＥＮＣＹが定義される。
【００２２】
このＬＶＭは、ＯＦＦＩＣＥ動作状態では動作可能である。この動作状態では、ＰＣの内部ディスクドライブ０１０１０９（図１）は動作可能で、最新データを保持している。更にこの動作状態では、リモートディスクドライブ０１０５もアクセス可能である。例えばこの状態は、名前で想像される通り、バックアップサーバが存在するオフィス環境を暗示しており、内部ディスクドライブに対する全てのデータ更新は、このバックアップサーバ上のリモートディスクドライブにコピーされる。更に又、このＰＣがバックアップサーバと非結合状態（例えば、家庭環境での業務）にある間のデータ更新も、結合回復後に、このリモートディスクドライブにバックアップされる。この状態でのビットマップも、後に説明されるように、内部ディスクドライブからリモートディスクドライブへのコピーが必要なブロックを表示する。
【００２３】
このＬＶＭは、ＨＯＭＥ動作状態では動作可能である。この動作状態では、ＰＣは、内部ディスクドライブにのみアクセスし、リモートディスクドライブはアクセス不能である。この状態は、名前で想像される通り、ＰＣが家庭かどこかリモートディスクドライブが使用不能な状態で使用されることを示している。この動作状態では、内部ディスクドライブとリモートディスクドライブとの間のデータコピーは行われない。内部ディスクドライブに保存されたビットマップは、内部ディスクドライブからリモートディスクドライブへのコピーが必要なブロックを表示する。
【００２４】
このＬＶＭは、ＲＥＣＯＶＥＲＹ動作状態では動作可能である。この動作状態では、ＰＣは、内部ディスクドライブとリモートディスクドライブ双方にアクセス可能であるが、リモートディスクドライブがより最新のデータを保持している。この動作状態が発生する一つのシナリオは、内部ディスクドライブが交換されて、リモートディスクドライブがバックアップデ−タを保有しているケースである。もう一つのシナリオは、リモートディスクドライブから内部ディスクドライブへのコピーバック状態になり、このコピーが終了していない状態が該当する。どちらの状態でも、リモートディスクドライブ上のビットマップの各エントリは、内部ディスクドライブへのコピーが必要なリモートディスクドライブのブロックを表示する。
【００２５】
第四のＬＶＭ状態は、ＥＭＥＲＧＥＮＣＹ動作状態である。この状態では、ＰＣはリモートディスクドライブにのみアクセス可能である。この動作状態は、内部ディスクドライブがクラッシュしたか、動作不能になりながらも、ユーザは、このＰＣを使い続けているときに発生する。リモートディスクドライブ上のビットマップは、この動作状態の間に書き込まれたブロック内部ディスクドライブへのコピーが必要なブロックを表示する。
【００２６】
図７はブートオーダテーブル０７０１の例を示す。このテーブルは、ブートストラップコードを見つけるためのドライブ探索順序を示す。このＰＣは、ブートストラップコードを複数のストレージデバイスに持つことが可能である。このテーブルの各エントリは、ＢＩＯＳがどのストレージデバイスをどの順序で調べれば良いかを示す。かくして、プライオリテイ部分０７０１０１は、探索順序を示す。ドライブ部分０７０１０３は、データストレージデバイス名を示す。典型的には、ＢＩＯＳは、ユーザが探索順序を指定することを可能にしている。
【００２７】
以降は、本発明の一実施例による、このＰＣとＰＣのコンポーネントの動作に関する議論である。最初に、ブートアッププロセスを説明する。一般に、ＰＣがパワーオンされると、このＰＣのＢＩＯＳが、ブートオーダテーブル０７０１に従って選ばれたディスクドライブから、ブートストラップコードを読み出す。本発明のこの実装例では、内部ディスクドライブ０１０１０９とリモートディスクドライブ０１０５が存在する。この例では、ＢＩＯＳコードは、使用可能なディスクドライブを特定する。図８に示されるように４つのケースが存在する。
【００２８】
・ケースＡ（０８０７）内部ディスクドライブとリモートディスクドライブが共  に使用可能
・ケースＢ（０８０９）内部ディスクドライブのみが使用可能
・ケースＣ（０８１５）リモートディスクドライブのみが使用可能
・ケースＤ（０８１７）ディスクドライブは共に使用不能
【００２９】
図８は、本発明の一実施例による、ＢＩＯＳの処理を示す。ＢＩＯＳはＰＣの起動を契機に実行開始する（ステップ０８０１）。ＢＩＯＳは、よく知られたディスクＩ／Ｏ技術により、内部ディスクドライブが使用可能か否かを判定する（ステップ０８０３）。ＢＩＯＳは、次に、リモートディスクドライブが使用可能か否かを判定する（ステップ０８０５、０８１１）。もし、内部ディスクドライブ及びリモートディスクドライブが共に使用可能なら、ＢＩＯＳはケースＡとして記録する（ステップ０８０７）。もし、内部ディスクドライブのみが使用可能なら、ＢＩＯＳはケースＢとして記録する（ステップ０８０９）。もし、リモートディスクドライブのみが使用可能なら、ＢＩＯＳはケースＣとして記録する（ステップ０８１５）。もし、ディスクドライブが共に使用不能なら、標準的なエラ−メッセージが表示され（ステップ０８１３）、プロセスは停止する（ステップ０８１７）。
【００３０】
図９は、ケースＡ、即ち、内部ディスクドライブとリモートディスクドライブが共に使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ブートストラップコードは、ブートオーダテーブルで決められたディスクドライブから読み込まれ（ステップ０９０３）、実行される。ブートオーダテーブルは、その時点の内部及びリモートディスクドライブの使用可能状態に対応したＰＣの状態を反映して、ブートオーダがセットされていなければならない。典型的には、内部ディスクドライブが、最高のプライオリテイを有する。しかしながら、内部ディスクドライブが例えばドライブのクラッシュ障害等で交換されて間がない場合は、リモートディスクドライブがブートオーダテーブルにおいて最高のプライオリテイを有する必要がある。
【００３１】
ブートストラップコードは、ＬＶＭスーパブロック０３０１０３をブートドライブ（即ちこのブートストラップコードが読み出されたディスクドライブ）から読み込む（ステップ０９０５）。このＬＶＭスーパブロックからＬＶＭモード０４０１０３が読み込まれ、チェックされる（ステップ０９０７）。もし、通常モードであれば、ＬＶＭステータス０６０１はＯＦＦＩＣＥにセットされ（ステップ０９０９）、カーネルが内部ディスクドライブから読み込まれる（ステップ０９１１）。もし、回復モードであれば、ＬＶＭステータスはＲＥＣＯＶＥＲＹにセットされ（ステップ０９１７）、カーネルはリモートディスクドライブから読み込まれる（ステップ０９１９）。内部ディスクドライブが交換後のドライブであれば、ＬＶＭスーパブロックはこのドライブには存在しない。この場合は、ブートストラップコードは、ＬＶＭスーパブロックの読み込みに失敗する。ブートストラップコードは、内部ディスクドライブから正当なＬＶＭスーパブロックの読み込みに失敗した場合は、ＬＶＭモードを回復モードにセットする（ステップ０９１３）。加えて、リモートディスクドライブのビットマップに全て"１"のフラグをセットする（ステップ０９１５）。次に、ＬＶＭステータスをＲＥＣＯＶＥＲＹにセットして（ステップ０９１７）、カーネルコードがリモートディスクドライブから読み込まれる（ステップ０９１９）。
【００３２】
次にＯＳのブートアップが始まる（ステップ０９２１）。ＯＳブートアップのシーケンスは以下に議論される。
【００３３】
図１０は、ケースＢ、即ち内部ディスクドライブのみが使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ＢＩＯＳは、内部ディスクドライブから、ブートストラップコードを読み込む（ステップ１００３）。ブートストラップコードは、ＬＶＭスーパブロックを、内部ディスクドライブから読み込む（ステップ１００５）。ＬＶＭモードは、ＬＶＭスーパブロックから読み込まれ、チェックされる（ステップ１００７）。もし、通常モードであれば、ＬＶＭステータスは、ＨＯＭＥにセットされ（ステップ１００９）、カーネルコードが読み込まれ実行される（ステップ１０１１）。ＯＳのブートアップ処理（後に議論される）が開始される（ステップ０９２１）。もし、回復モードであれば、内部ディスクドライブは、正当なＬＶＭスーパブロックを持っておらず、ユーザには、ＰＣが内部ディスクドライブからブート出来ないことが知らされる（ステップ１０１５）。回復モードの場合は、リモートディスクドライブからブートする必要があるが、このケースＢの場合は、使用不能である。更に、内部ディスクドライブは読み取り可能であるものの、正当なＬＶＭスーパブロックが存在しない場合は、内部ディスクドライブは新規にインストールされたドライブとみなされ、ＰＣはやはりブートできない。
【００３４】
図１１は、ケースＣ、即ちリモートディスクドライブのみが使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ＢＩＯＳは、ブートストラップコードをリモートディスクドライブから読み取る（ステップ１１０３）。ＬＶＭステータスは、ＥＭＥＲＧＥＮＣＹにセットされる（ステップ１１０５）。カーネルコードは、リモートディスクドライブから読み込まれ（ステップ１１０７）、ＯＳのブートアップ処理が開始される（ステップ０９２１）。
【００３５】
図１２は、本発明の一実施例での、ＯＳブートシーケンスの上位レベルの処理を示す。ＯＳは、多様なＯＳサービスを立ち上げるために、ハードウエアと全てのソフトウエアコンポーネントを初期化する（ステップ１２０３）。このステップは、慣用的なものであり、よく知られたものである。この慣用的処理に加えて、ＯＳはＬＶＭソフトウエアコンポーネントを初期化する（ステップ１２０５）。ＬＶＭコンポーネントが初期化されると、ＬＶＭコンポーネントはＯＳに対し論理ディスクドライブにアクセス出来るようにする。かくして、ＯＳは、論理ディスクドライブをマウントする（ステップ１２０７）。ＯＳは更に、必要な最終初期化を実施し（ステップ１２０９）、ブートアップシーケンスは完了する。
【００３６】
図１３は、ＯＳのシャットダウン処理の上位レベルのダイアグラムを示す。全てのアプリケーションとＯＳサービスは、適切にシャットダウンされる（ステップ１３０３）。次いで論理ディスクドライブはアンマウントされる（ステップ１３０５）。次に、ＬＶＭシャットダウン処理がコールされる（ステップ１３０７）。全ての残りの、シャットダウン処理は、ステップ１３０９で実行され、この後にＰＣは停止される。
【００３７】
図１４は、ＬＶＭソフトウエアコンポーネントの初期化処理の上位レベルのフローチャートである。最初に、ＬＶＭコンポーネントは、ＬＶＭステータスを判定する（ステップ１４０３）。もし、ＯＦＦＩＣＥステータスの場合は、ランタイムビットマップは、内部ディスクドライブのビットマップから読み出されて、メモリ０１０１０３に格納される（ステップ１４０５）。次に、同期エージェントデーモンが起動される（ステップ１４０７）。もし、ＨＯＭＥステータスの場合は、ランタイムビットマップは、内部ディスクドライブのビットマップから単純に読み出されて、メモリに格納される（ステップ１４０９）同期エージェントデーモンは起動されない。もし、ＲＥＣＯＶＥＲＹステータスの場合は、ランタイムビットマップは、リモートディスクドライブのビットマップから読み出されて、メモリに格納され（ステップ１４１１）、同期エージェントデーモンが起動される（ステップ１４１３）。もし、ＥＭＥＲＧＥＮＣＹステータスの場合は、ランタイムビットマップは、リモートディスクドライブのビットマップから単純に読み出されて、メモリに格納される（ステップ１４１５）同期エージェントデーモンは起動されない。何れのステータスでも、最後に、Ｉ／Ｏエージェントデーモンが起動される（ステップ１４１７）。
【００３８】
図１５は、ＬＶＭシャットダウン処理の上位レベルの処理プロセスを示す。ＬＶＭステータスがＯＦＦＩＣＥの場合は、ＬＶＭは、ランタイムビットマップが、同期エージェントデーモンにより、クリアされるのを待つ（ステップ１５０５）。同期エージェントデーモンの処理については、以降に述べる。クリアされたランタイムビットマップは、次いで、内部ディスクドライブ及びリモートディスクドライブに保存されるビットマップにコピーバックされる（ステップ１５０７）。この状況は、両ディスクドライブが同一内容であることを示す。内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも通常モードにセットされる（ステップ１５０９）。最後に、同期エージェントデーモン及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
【００３９】
もし、ＨＯＭＥステータスの場合は、ＬＶＭモジュールは、ランタイムビットマップを単純に内部ディスクドライブに書き戻す。内部ディスクドライブのスーパブロックのＬＶＭモードは通常モードにセットされる（ステップ１５１３）。最後に、同期エージェントデーモン及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
【００４０】
ＲＥＣＯＶＥＲＹステータスの場合は、ＬＶＭは、リモートディスクドライブから内部ディスクドライブにすべてのデータをコピーして、ビットマップをクリアするのに要する時間を推定する（ステップ１５１５）。もし、推定のコピー時間が限界値を超えたら、同期エージェントデーモンは停止される。ランタイムビットマップは単純に、リモートディスクドライブにコピーされる（ステップ１５１７）。更に、内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも回復モードにセットされる（ステップ１５１９）。次いで、同期及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。推定のコピー時間が限界値以内であれば、処理は、ステップ１５０５からステップ１５０９を経由して１５２１に至る。
【００４１】
ＥＭＥＲＧＥＮＣＹステータスの場合は、ビットマップは単純に、リモートディスクドライブに書き戻される（ステップ１５１７）。更に、内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも回復モードにセットされる。次いで、同期及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
【００４２】
図１８は、Ｉ／Ｏエージェントデーモン処理の上位レベルのフローチャートを示す。このＩ／Ｏエージェントデーモンは、ファイルシステムから、論理ディスクドライブに対するデータ読み書きのためにデータＩ／Ｏ要求を受け取る（ステップ１８０３）。次いで、Ｉ／Ｏ要求のタイプが決められる（ステップ１８０５）。もし、要求が書き込み要求なら、書き込みシーケンス処理が実行される（ステップ１８０７）。この書き込み処理の結果は、ファイルシステムに返送される（ステップ１８１１）。もし、要求が読み込み処理なら、読み込みシーケンス処理が実行され（ステップ１８０９）、この読み込み処理の結果は、ファイルシステムに返送される（ステップ１８１１）。
【００４３】
図１６は、本発明の一実施例による、書き込みシーケンス処理の上位レベルのフローチャートを示す。先ず、ＬＶＭステータスがチェックされる（ステップ１６０３）。もし、ＯＦＦＩＣＥ又はＨＯＭＥステータスであれば、データは、内部ディスクドライブに書き込まれる（ステップ１６０５）。書き込みブロックに対応するランタイムビットマップ（ＬＶＭ初期化時点で、内部ディスクドライブからメモリに読み込まれたもの、図１４を参照）のエントリは"１"のフラグがセットされる（ステップ１６０９）。既に議論されたように、内部ディスクドライブのビットマップエントリが"１"のフラグを持っていることは、内部ディスクドライブの対応ブロックのリモートディスクドライブへのコピーが必要なことを示している。
【００４４】
もし、ＲＥＣＯＶＥＲＹ又はＥＭＥＲＧＥＮＣＹステータスであれば、データは、リモートディスクドライブに書き込まれる（ステップ１６０７）。書き込みブロックに対応するランタイムビットマップ（ＬＶＭ初期化時点で、リモートディスクドライブからメモリに読み込まれたもの、図１４を参照）のエントリは"１"のフラグがセットされる。既に議論されたように、リモートディスクドライブのビットマップエントリが"１"のフラグを持っていることは、リモートディスクドライブの対応ブロックの内部ディスクドライブへのコピーが必要なことを示している。
【００４５】
図１７は、本発明の一実施例による、読み込みシーケンス処理の上位レベルのフローチャートを示す。もし、ＬＶＭステータスがＯＦＦＩＣＥ又はＨＯＭＥステータスであれば、データは、内部ディスクドライブから読み込まれる（ステップ１７０５）。もし、ＬＶＭステータスがＲＥＣＯＶＥＲＹ又はＥＭＥＲＧＥＮＣＹステータスであれば、ランタイムビットマップ（リモートディスクドライブからコピーされたもの）がチェックされる（ステップ１７０７）。もし、読み取り要求されたブロックに対応するエントリが"１"にセットされていなければ、読み取り要求が、内部ディスクドライブからブロックを読み込むことで達成される（ステップ１７０５）。一方、読み取り要求されたブロックに対応するエントリが"１"にセットされていれば、ブロックは、リモートディスクドライブから読み込まれる（ステップ１７０９）。対応するエントリが"１"にセットされている場合に、リモートディスクドライブから読み込む理由は、リモートディスクドライブの該当データブロックがまだ対応する内部ディスクドライブのデータブロックにコピーされていない場合があるからである。
【００４６】
図１９は、本発明の一実施例による、同期エージェントデーモンが実施する処理の上位レベルのフローチャートである。同期エージェントデーモンは、ランタイムビットマップのどれかのエントリに"１"がセットされるまでは、何もしない（ステップ１９０３）。もし、ランタイムビットマップのどれかのエントリに"１"がセットされると、同期エージェントデーモンは、ＬＶＭステータスをチェックする（ステップ１９０５）。もし、ステータスがＯＦＦＩＣＥステータスの場合は、内部ディスクドライブの該当ブロックが読み出され（ステップ１９０７）、リモートディスクドライブの該当ブロックに書き込まれる（ステップ１９０９）。この後、当該エントリはクリアされる（"１"以外が書き込まれる）（ステップ１９１５）。
【００４７】
もし、ステータスがＲＥＣＯＶＥＲＹステータスであれば、リモートディスクドライブの該当ブロックから読み出され（ステップ１９１１）、内部ディスクドライブの該当ブロックにコピーされる（ステップ１９１３）。この後、当該エントリはクリアされる（"１"以外が書き込まれる）（ステップ１９１５）。
【００４８】
同期デーモンとＩ／Ｏデーモンは分離されたプロセスで、互いに独立に動作する。従って、同期デーモンは、Ｉ／Ｏデーモンに送られるＩ／Ｏ要求とは非同期に、内部ディスクドライブとリモートディスクドライブ間のデータコピー動作を実行する。
【００４９】
これまで述べてきた具体的な解決は、本発明の原理に従った一実施例の一つの実装を説明するためである事に理解いただきたい。以降に続く請求項で定義されるように本発明の範囲と精神から離れることなく幾多の修正が可能であることは、本分野に造詣のある人には、明白である。
【００５０】
【図面の簡単な説明】
【図１】図１は、本発明の実施例に従った、ＰＣシステムの実装を示す上位レベルのシステムブロックダイアグラムである。
【図２】図２は，本発明の実施例に従った、ＰＣシステムのソフトウエア及びハードウエアコンポーネントの上位レベルのブロックダイアグラムを示す。
【図２Ａ】図２Ａは，本発明の実施例に従った、ＰＣシステムのソフトウエア及びハードウエアコンポーネントの上位レベルのブロックダイアグラムを示す。
【図３】図３は本発明の実施例に従った、ディスクドライブのデータ構造図を示す。
【図４】図４は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図５】図５は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図６】図６は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図７】図７はブートオーダテーブルを示す。
【図８】図８は、各種のブートアップのケースを示す。
【図９】図９は、図８で示される各ケースに対応した上位レベルのブート処理を示す。
【図１０】図１０は、図８で示される各ケースに対応した上位レベルのブート処理を示す。
【図１１】図１１は、図８で示される各ケースに対応した上位レベルのブート処理を示す。
【図１２】図１２は、本発明の実施例に従った、ＰＣ  ＯＳのブートシーケンスの上位レベルの処理を示す。
【図１３】図１３は、本発明の実施例に従った、ＰＣ  ＯＳの上位レベルのシャットダウンシーケンスを示す。
【図１４】図１４は、本発明の実施例に従った、ＬＶＭ初期化シーケンスの上位レベルのフローチャートを示す。
【図１５】図１５は、本発明の実施例に従った、ＬＶＭシャットダウンシーケンスの上位レベルのフローチャートを示す。
【図１６】図１６は、本発明の実施例に従った、Ｉ／Ｏエージェントデーモンの上位レベルの処理を示す。
【図１７】図１７は、本発明の実施例に従った、Ｉ／Ｏエージェントデーモンの上位レベルの処理を示す。
【図１８】図１８は、Ｉ／Ｏ要求処理を示す。
【図１９】図１９は、本発明の実施例に従った、同期エージェントデーモン処理を示す。
【符号の説明】
０１０１……ＰＣ（Personal Computer：パソコン）、０１０１０１……ＣＰＵ、０１０１０３……メモリ、０１０１０５……ＢＩＯＳ（バイオス）、０１０１０７……ブートオーダ、０１０１０９……内部ディスクドライブ、０１０３……ネットワーク、０１０５……リモートディスクドライブ、０２０１……アプリケーション、０２０３……オペレーティングシステム、０２０３０１……ファイルシステム、０２０３０３……論理ボリュームマネージャ（ＬＶＭ）、０２０３０３ａ……Ｉ／Ｏエージェント、０２０３０３ｂ……同期エージェント、０２０３０３ｃ……ＬＶＭ＿Ｉｎｉｔ、０２０３０３ｄ……ＬＶＭ＿Ｓｈｕｔｄｏｗｎ、０２０３０３ｅ……ＬＶＭステータス。