(57)【要約】　　　（修正有）【課題】ＰＣのバックアップと回復処理を内部デイスクかリモートデイスクのいづれに対して行うかを決める。【解決手段】ＰＣのデータバックアップと回復を、内部及びリモートのディスクドライブの使用可能性を組み合わせたＰＣの動作状態に基づいて行う。この動作状態に基づいて、データＩ／Ｏが、内部及び／又はリモートディスクドライブに対して実施される。リモートディスクドライブへのデータバックアップ及びリモートディスクドライブからのデータの回復に整合するように、対応するビットマップの更新が実施される。【選択図】　図１
2004145854.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣ（パソコン）デバイスにおいて、データをバックアップする為の方法であって、該方法は、
一つ以上のＩ／Ｏ（入／出力）要求を受け付け；
該Ｉ／Ｏ要求に従って、第一のデータストレージデバイスとの間で情報を交換し、該情報の幾つかを該第一のデータストレージデバイスの一つ以上のデータブロックに保存し；
該一つ以上のデータブロックの各々に対して、ランタイムビットマップのエントリに第一の値をセットし、該ランタイムビットマップは、該第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを持ち；
該第一の値にセットされた該ランタイムビットマップの各エントリに対して、該第一のデータストレージデバイスから第二のデータストレージデバイスにコピー処理を実施し、該各エントリの値をクリアし、該コピー処理は、一つ以上のＩ／Ｏ要求の該受付けに対して非同期に実施することを
含む、データをバックアップする為の方法。
【請求項２】
前記に於いて、該第一のデータストレージデバイスは内部ディスクドライブであり、該第二のデータストレージデバイスはリモートディスクドライブであり、該ランタイムビットマップは、該内部ディスクドライブから得られる、請求項１の方法。
【請求項３】
前記に於いて、該第一のデータストレージデバイスはリモートディスクドライブであり、該第二のデータストレージデバイスは内部ディスクドライブであり、該ランタイムビットマップは、該リモートディスクドライブから得られる、請求項１の方法。
【請求項４】
前記に於いて、該交換される情報は、該ランタイムビットマップの対応するエントリが該第一の値にセットされているか否かに基づいて、該リモートディスクドライブから、又は該内部ディスクドライブからのデータブロックの読み取り情報を含む、請求項３の方法。
【請求項５】
前記に於いて、該交換される情報は、該ランタイムビットマップの対応するエントリが該第一の値にセットされておれば、該リモートディスクドライブからのデータブロックの読み取り情報の一つを含み、該ランタイムビットマップの対応するエントリが該第一の値にセットされていなければ、該内部ディスクドライブからのデータブロックの読み取り情報を含む、請求項４の方法。
【請求項６】
前記に於いて、シャットダウン要求を受け付け、これに応じて、
該第一のデータストレージデバイスが内部ディスクドライブで、該第二のデータストレージデバイスがリモートディスクドライブの場合、該第一の値にセットされている該ランタイムビットマップの各対応するエントリに対して、該第一のデータストレージデバイスからのデータブロックを該第二のデータストレージデバイスにコピーし；更に
該第一のデータストレージデバイスがリモートディスクドライブで、該第二のデータストレージデバイスが内部ディスクドライブの場合でかつ、該第一の値にセットされている該ランタイムビットマップの各対応するエントリに対して、該リモートディスクドライブから該内部ディスクドライブへ、データブロックをコピーするに要する時間が、規定の限界値を超える場合は、該ランタイムビットマップを該第一のデータストレージデバイスにコピーする、請求項１の方法
【請求項７】
データバックアップをする為のコンピュータプログラムプロダクトであって、該コンピュータプログラムはデータストレージ上に記憶されており、該コンピュータプログラムは：
一つ以上のＩ／Ｏ（入／出力）要求を受け付けるためにプロセッサを動作させるのに適した第一のプログラムコード；及び
該Ｉ／Ｏ要求に従って、第一のデータストレージデバイスとの間で情報を交換し、該情報の幾つかを該第一のデータストレージデバイスの一つ以上のデータブロックに保存するために該プロセッサを動作させるのに適した第二のプログラムコード；及び
該一つ以上のデータブロックの各々に対して、ランタイムビットマップのエントリに第一の値をセットし、該ランタイムビットマップは該第一のデータストレージデバイスを構成する複数のデータブロックの各々に対応するエントリを持たせる、該プロセッサを動作させるのに適した第三のプログラムコード；及び
該ランタイムビットマップの各エントリに該第一の値をセットし、該第一のデータストレージデバイスの対応するデータブロックの情報を第二のデータストレージデバイスにコピーするために該プロセッサを動作させるのに適した第四のプログラムコードであって、該各エントリの値をクリアすることを含み、該第二のプログラムコードに対して非同期に動作する第四のプログラムコード、
から構成されるコンピュータプログラムプロダクト
【請求項８】
前記に於いて、該第一のデータストレージデバイスは内部ディスクドライブであり、該第二のデータストレージデバイスはリモートディスクドライブである、請求項７のコンピュータプログラムプロダクト。
【請求項９】
前記に於いて、該第一のデータストレージデバイスはリモートディスクドライブであり、該第二のデータストレージデバイスは内部ディスクドライブである、請求項７のコンピュータプログラムプロダクト。
【請求項１０】
前記に於いて、該交換される情報は、該ランタイムビットマップの対応するエントリが該第一の値にセットされているか否かに基づいて、該リモートディスクドライブから、又は該内部ディスクドライブからのデータブロックの読み取り情報を含む、請求項９のコンピュータプログラムプロダクト。
【請求項１１】
内部ディスクドライブ；及び
リモートディスクドライブと交信する通信回路；及び
請求項７のコンピュータプログラムを格納するメモリシステム、
から構成されるＰＣシステム
【請求項１２】
ＰＣに於いての、データバックアップと回復の為の方法であって、該方法は、ビットマップを保存している内部ディスクドライブが使用可能かを判定し；
ビットマップを保存しているリモートディスクドライブが使用可能かを判定し；
もし該内部ディスクドライブ及び該リモートディスクドライブが共に、使用可能なら；
該内部ディスクドライブの第一の情報にアクセスし；
もし、該第一の情報が第一のモードを示しておれば、第一の動作ステータスをセットし；
もし、該第一の情報が第二のモードを示しておれば、第二の動作ステータスをセットし；
もし、該内部ディスクドライブから該第一の情報がアクセスできなければ、該リモートディスクドライブに保存されている該ビットマップの全てのエントリを第一の状態にセットし、該第二の動作ステータスをセットし；
もし、該内部ディスクドライブが使用可能で、該リモートディスクドライブが、使用不能なら；
該内部ディスクドライブの第一の情報にアクセスし；
もし、該第一の情報が第一のモードを示しておれば、第三の動作ステータスをセットし；
もし、該第一の情報が該第二のモードを示すか、又は該第一の情報が該内部ディスクドライブからアクセスできなければ、該ＰＣの動作を停止し；
もし、該リモートディスクドライブが使用可能で、該内部ディスクドライブが使用不能なら、第四の動作ステータスをセットし、
該ステータスに対応して、該内部ディスクドライブの該ビットマップを、又は、該リモートディスクドライブの該ビットマップを、ランタイムビットマップとして該ＰＣのメモリ内にロードし、
書き込み動作の間に、該ランタイムビットマップのエントリには第一の値をセットし、
該ランタイムビットマップの内容と該ステータスに基づいて、該内部ディスクドライブと該リモートディスクドライブとの間でデータブロックのコピーを実施して、
データのバックアップと回復を実施する方法。
【請求項１３】
前記に於いて、該判定は、ブートオーダテーブルの内容に基づく、請求項１２の方法。
【請求項１４】
前記に於いて、更にシャットダウン要求を受け付け、これに応答して、
（ｉ）該ステータスが、該第一の動作ステータスなら、該ランタイムビットマップの内容に基づいて、該内部ディスクドライブから該リモートディスクドライブにデータブロックのコピーを行い、
（Ａ）該ランタイムビットマップをクリアし、該ランタイムビットマップを該内部ディスクドライブ及び該リモートディスクドライブに保存し、該内部ディスクドライブ及び該リモートディスクドライブ双方に対して、該第一の情報を該第一のモードにセットし；
（ｉｉ）該ステータスが、該第三の動作ステータスなら、該ランタイムビットマップを該内部ディスクドライブにコピーし；
（ｉｉｉ）該ステータスが、該第二の動作ステータスなら、
（Ａ）データブロックを該リモートディスクドライブから該内部ディスクドライブにコピーするに要する時間を推定し、該時間が限界値以下であれば、該ランタイムビットマップに基づいて、該リモートディスクドライブから該内部ディスクドライブにデータブロックのコピーを行い、該（ｉ）（Ａ）を実行し；
（Ｂ）該時間が該限界値を超えれば、該ランタイムビットマップを該リモートディスクドライブにコピーし、該内部ディスクドライブ及び該リモートディスクドライブ双方に対して該第一の情報を該第二のモードにセットし；
（ｉｖ）該ステータスが、第四の動作ステータスなら、該（ｉｉｉ）（Ｂ）に従ったコピーと設定を行う、請求項１２の方法。
【請求項１５】
内部ディスクドライブとの間でデータの入出力を行う第一の回路；及び
リモートディスクドライブとの間でデータの入出力を行う第二の回路；及び
請求項１２の方法に従って、基本入出力動作を行うシステム、
から構成されるＰＣデバイス。
【発明の詳細な説明】
【発明の属する技術分野】
【従来の技術】
ＰＣ（Ｐｅｒｓｏｎａｌ　Ｃｏｍｐｕｔｅｒ：パソコン）は日常生活の全ての局面で、必須ツールとして使用されて久しい。殆ど全てのビジネス処理が、ＰＣに依存していることは、言うに及ばない。インターネットアクセス又は業務処理のために、家庭内でも遍く使用されるに至っている。一般的にＰＣは、ＣＰＵチップ及びこれをサポートするＲＡＭ（Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ：ランダムアクセスメモリ）、メモリコントローラ、グラフィックコントローラ等の多数の回路を実装する“マザーボード”から構成される。一般的には、内部ハードディスクドライブ、ＣＤ（Ｃｏｍｐａｃｔ　Ｄｉｓｋ　：コンパクトディスク）リーダ或いはリーダ／ライタ装置、フロッピドライブ等の多様なデータストレージ装置が含まれる。このようなマシーンの“頭脳”は、ＰＣ上で動作する各種のソフトウエアコンポーネントである。例えば、重要なソフトウエアコンポーネントの一つは、多様なプログラムコードで成り立つＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ：オペレーティングシステム）である。
ハードディスクドライブにはメカニカルな負担がかかっており、ＰＣを障害にさせる第一のコンポーネントの一つである。ハードディスクドライブのメカニカルな障害は、一般的にはデータストレージ媒体の破壊に結びつく。この状況は、ディスクドライブクラッシュとか、ヘッドクラッシュ（読み出し／書き込み用のヘッドがストレージ媒体上に接触するので）と呼ばれている。ディスクドライブクラッシュの場合には、クラッシュされたディスクからデータを回復する術はなく、データは事前にバックアップされていない限り失われてしまう。このような事態を望まないユーザは、手動（例えば家庭環境の場合）やソフトウエアの助けを借りて、データを頻繁にバックアップしている。
ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ　Ａｒｒａｙ　ｏｆ　Ｉｎｅｘｐｅｎｓｉｖｅ　Ｄｉｓｋ：低価格ディスクの冗長配列（ディスクアレイ装置））は、データ回復のためのハード的解決策である。ＲＡＩＤの標準は、多くのレベルのバックアップ手段を提供しており、各々異なった性能とデータ回復能力を持っている。ＲＡＩＤ１は、データが一つのディスクドライブから他のディスクドライブ（バックアップディスクドライブと呼ばれる）に、ファイルレベルではなくブロックレベルで複製されるレベルである。アプリケーションからは、ただ一台の論理ディスクドライブが見えるだけである。しかしながら、この論理ディスクドライブはミラーリングと呼ばれるＲＡＩＤ１構成の２台のハードディスクドライブから構成されている。アプリケーションが論理ディスクドライブに書き込みコマンドを発行すると、該コマンドは背後にある両方のディスクドライブに発行され、その結果両方のディスクドライブは常に同じデータを保持している。かくして、ディスクドライブのうちの１台がクラッシュしても、他の生存ディスクドライブのデータが使用可能である。
ＲＡＩＤ１は一般にディスクコントローラカードに実装され、これには、ＬＶＭ（Ｌｏｇｉｃａｌ　Ｖｏｌｕｍｅ　Ｍａｎａｇｅｒ：論理ボリュームマネージャ）とＲＡＩＤディスクアレイが含まれる。ディスクコントローラカードはＰＣＩ又はＰＣカードで、ＰＣに挿入され、２台のハードディスクドライブに接続される。このカードは、ＰＣのＣＰＵによって発行されるＩ／Ｏコマンドを実行するためのプロセッサを持っている。ＬＶＭはＯＳ中のソフトウエアモジュールである。このＬＶＭコンポーネントは、両方のディスクドライブを“管理”し、ディスクＩ／Ｏを実行するためのＩ／Ｏルーチン（システムコール）を提供する。これより上位レベルのアプリケーションプログラムには、ただ一台の論理ディスクドライブが見えるだけである。ＲＡＩＤディスクアレイは外部ボックスであり、内部に多数のディスクドライブを持ち、一つ以上のＰＣからのＩ／Ｏコマンドを実行するディスクコントローラを有する。ＲＡＩＤディスクアレイとＰＣはＳＣＳＩインターフェース又はファイバチャネルインターフェース或いは同種のインターフェースを通して結合される。しかしながら、ＲＡＩＤシステムは典型的には可搬ではない。かくして、通常のＲＡＩＤによる解決策は、可搬コンピュータ、例えばラップトップコンピュータには向かない。
【発明が解決しようとする課題】
一つのコンピュータシステムにおいて、バックアップと回復処理には、情報の読み書きを内部ディスクかリモートディスクの何れに対して行うかを決めるために、オペレーションのモード及び動作ステータスを特定することが必要になる。
【課題を解決するための手段】
ランタイムビットマップは、当該コンピュータシステムの動作ステータスに基づいて、対応するディスクブロックが、一つのディスクドライブから他のディスクドライブにコピーされるべきか否かを示す。シャットダウン処理には、当該コンピュータシステムの動作ステータスに基づいて、ランタイムビットマップに従ってリモートディスクドライブから内部ディスクドライブにデータブロックをコピーすること、又は単にビットマップをリモートディスクドライブにコピーすることが含まれる。
【発明の実施の形態】
図１は本発明に従った、データバックアップ及び回復システムの実施例の一般的ブロックダイアグラムである。システム０１０６は、ＰＣ（パソコン）０１０１とネットワーク０１０３を介してアクセス可能なリモートディスクドライブ０１０５を含む。ネットワークの例には、イーサネットやファイバチャネルが含まれる。ｉＳＣＳＩプロトコルは、イーサネット上でのＰＣとリモートディスクドライブとの間のデータ転送に使用され、ＳＣＳＩ／ＦＣプロトコルはファイバチャネル上でのデータ転送に使用される。
ＰＣ０１０１は、ＣＰＵ０１０１０１、ＲＡＭ等で構成されるメモリコンポーネント０１０１０３、及び内部ディスクドライブ０１０１０９等のデータストレージデバイスで一般的に構成される。特定の実装の場合、ＰＣは、一般的にはファームウエアに格納されるＢＩＯＳ（Ｂａｓｉｃ　Ｉ／Ｏ　Ｓｙｓｔｅｍ：基本Ｉ／Ｏシステム）０１０１０５を含む。このＢＩＯＳは、データストレージデバイスの順序付けを指定するブートオーダテーブル０１０１０７を含む。ブートプログラムは、各データストレージデバイスをブートオーダテーブルで示される順序で検索する事により、取得される。ＣＰＵとメモリは、典型的なコンピュータに於いて、ＯＳ等のプログラムを走行させるための重要コンポーネントである。ＢＩＯＳはＰＣの立ち上がりに、最初に実行されるプログラムである。このＢＩＯＳの役割は、ブートプログラムをメモリに読み込み、ブートコードに制御を渡すことである。このブートプログラムがＰＣ操作に必要なプログラム、即ちＯＳを読み込むことになる。内部ディスクドライブは、ＩＤＥインターフェースやＳＣＳＩインターフェース等の適当なデータＩ／Ｏ接続を経由して、ＰＣに結合される。
図２は、ＰＣ上で走行（実行）する典型的ソフトウエア構成を示す。ＯＳ０２０３は、アプリケーション０２０１が走行できるようにする。このＯＳ機能には、メモリ管理、デバイス管理及びプロセススケジューリング等が含まれる。本発明に関連して、ＬＶＭ（論理ボリュームマネージャ）０２０３０３がＯＳのデータＩ／Ｏコンポーネントとして組み込まれており、データストレージデバイスに対するＩ／Ｏ処理を実行する。
ＯＳ上で走行するアプリケーションは、ファイルシステム０２０３０１をデータストレージシステムとの間のデータ交換（データの読み書き）の為のインターフェースとして使用する。このファイルシステムは、ＯＳの一コンポーネントで、アプリケーションに対してファイルレベルのＩ／Ｏ処理を提供する。ＬＶＭは、ファイルシステムの下で走行し、このファイルシステムに内部ディスクドライブとリモートディスクドライブのペアを１論理ビューとして見えるようにする。このファイルシステムは論理ディスクドライブに対して、ブロックレベルＩ／Ｏ要求を出力する。
このＬＶＭ０２０３０３を構成するコンポーネントは、Ｉ／Ｏエージェントデーモン０２０３０３ａ、同期エージェントデーモン０２０３０３ｂ、ＬＶＭ＿Ｉｎｉｔ処理０２０３０３ｃ、ＬＶＭ＿Ｓｈｕｔｄｏｗｎ処理０２０３０３ｄ、及びＬＶＭステータスデータ記録０２０３０３ｅを含む。Ｉ／Ｏエージェントはファイルシステム０２０３０１からの要求を処理する。同期エージェントは、通常動作の場合、（以下に議論されるように）内部ディスクドライブからリモートディスクドライブへのデータのコピー、又は回復動作の場合、（以下に同様に議論されるように）逆方向のデータコピーを実行する。ＬＶＭ＿Ｉｎｉｔ処理は、ブートアップ期間での処理を実行する。ＬＶＭ＿Ｓｈｕｔｄｏｗｎ処理は、ＯＳがシャットダウンされるときにコールされる。ＬＶＭステータスはＬＶＭの動作状態を決定する。
ディスクドライブの論理ビューは、図２Ａに示される如く、１論理ディスクドライブ０２０１１として参照される。論理ディスクドライブは、内部ディスクドライブ０１０１０９とリモートディスクドライブ０１０５から構成される。ＬＶＭソフトウエアコンポーネント０２０３０３は、両方のディスクドライブが同一のデータを維持する責任を持つ。ファイルシステム０２０３０１は、２つのディスクドライブを区別しない。このファイルシステムは、論理ディスクドライブにＩ／Ｏコマンドを発行し、ＬＶＭがこのコマンドを処理する。ＬＶＭが如何にＩ／Ｏコマンドを処理するかは、後に述べる。
図３は、内部ディスクドライブ（０１０１０９、図１）とリモートディスクドライブ（０１０５）のディスクスペースの論理的分割を示す。内部ディスクドライブとリモートディスクドライブ双方のディスクスペースは、４つのパーテイションに分割されている。本発明の一実施例では、ブートブロック部０３０１０１、ＬＶＭスーパブロック部０３０１０３、データ部０３０１０５、及びビットマップ部０３０１０７が存在する。データ部０３０１０５はディスクスペースの大部分を占め、ユーザのデータファイル類の格納に使用される。
ブートブロック部０３０１０１は、ディスクからＯＳを読み込み、ＯＳプログラムを実行する為のブートストラップコードを保存している。ＰＣのＢＩＯＳがＰＣ起動時にこのブートストラップコード（“ブートストラップローダー”）を読み込み、このコードを実行する。このブートストラップコードは次に、ＯＳプログラムを一つのディスクドライブから読み込み、これを実行する。このプロセスは、一般的にブートストラッピングと呼ばれる。ＯＳプログラムは、ＯＳの核となるプログラムであるカーネルを含めて、多くのコンポーネントから構成される。
［１８］　　　　　ＬＶＭスーパブロック部０３０１０３はＬＶＭ構成に関する情報を保持している。図４にＬＶＭスーパブロックの詳細を示す。ＬＶＭスーパブロックは４種類の情報：ＬＶＭ名０４０１０１、ＬＶＭモード０４０１０３、内部ディスク０４０１０５、及びリモートディスク０４０１０７を有する。ＬＶＭ名は、論理ディスクドライブを特定する文字列である。
ＬＶＭモードは、通常と回復の二つのモードのうちの一つを指定する。通常モードでは、内部ディスクドライブが最新のデータを保持する。通常モードのＬＶＭ動作の間に、ＬＶＭは内部ディスクドライブからリモートディスクドライブにデータのコピーを行う。回復モードでは、リモートディスクドライブが最新のデータを保持しているので、ＬＶＭはリモートディスクドライブから内部ディスクドライブにデータのコピーを行う。回復モードは、内部ディスクドライブが新ドライブに交換されたか、又はそれ以外で、最早最新データを保持していない場合を示す。
内部ディスク部分０４０１０５及びリモートディスク部分０４０１０７は、各々、どのディスクドライブがオリジナルディスクドライブとして、どのディスクドライブがオリジナルのコピーディスクドライブとして使用されているかを示す。内部ディスク部分にＩＤが記されているディスクドライブがオリジナルとして使用される。同様に、リモートディスク部分にＩＤが記されているディスクドライブがコピーディスクとして使用される。ディスクドライブのＩＤは、例えば、当該ドライブのシリアル番号やシリアルコード等の幾つかの方法で指定できる。
ビットマップ部０３０１０７は、内部ディスクドライブ０１０１０９の各ブロックに対応して一つのエントリを持つマップである。リモートディスクドライブ０１０５も同様のビットマップを持つ。内部ディスクドライブに保存されたビットマップ（ブロックマップ）の各エントリは、対応するブロックのデータが内部ディスクドライブでは更新されて、未だリモートディスクドライブに反映されていない事を示すために用いられる。リモートディスクドライブに保存されたビットマップ（ブロックマップ）の各エントリは、リモートディスクドライブの対応するブロックのデータが内部ディスクドライブに未だコピーされていない事を示すために用いられる。これらビットマップの使用法については、後で更に議論される。
図５にビットマップ０５０１の実装例を示す。このビットマップは、ブロック番号０５０１０１とこれに対応するフラグ０５０１０３を持つ。ブロックはＬＶＭ０２０３０３が扱うデータの単位である。例えば、１ディスクドライブの容量が１ＧＢ（２３０バイト）として、ＬＶＭの１ブロックが１ＭＢ（２２０バイト）とすると、当該ディスクドライブは、１ｋブロック（２１０ブロック）を有することになる。ＬＶＭは、ディスクドライブ中の各ブロックにアクセスするのに、ブロック番号を使用する。この例では、ビットマップは１０２４エントリを持つことになる。フラグ部分は一般的な意味で、各エントリに対応するブロックが、他のディスクにコピーされているか否かを示す。単純に慣例に従えば、“１”はブロックがコピー未であることを、“０”はブロックがコピー済みであることを示す。上述のように、具体的な意味付けはＬＶＭの動作モードによって決まる。以下に説明されるように、ＬＶＭが通常モードなら、データは内部ディスクドライブからリモートディスクドライブにコピーされ、回復モードなら、データはリモートディスクドライブから内部ディスクドライブにコピーされる。
図６は、ＬＶＭステータスデータ部分０６０１を示す。ＬＶＭステータスはＰＣの“動作状況”を示すために使用される。本発明の一実施例では、４つの動作状態：ＯＦＦＩＣＥ，ＨＯＭＥ，ＲＥＣＯＶＥＲＹ，及びＥＭＥＲＧＥＮＣＹが定義される。
このＬＶＭは、ＯＦＦＩＣＥ動作状態では動作可能である。この動作状態では、ＰＣの内部ディスクドライブ０１０１０９（図１）は動作可能で、最新データを保持している。更にこの動作状態では、リモートディスクドライブ０１０５もアクセス可能である。例えばこの状態は、名前で想像される通り、バックアップサーバが存在するオフィス環境を暗示しており、内部ディスクドライブに対する全てのデータ更新は、このバックアップサーバ上のリモートディスクドライブにコピーされる。更に又、このＰＣがバックアップサーバと非結合状態（例えば、家庭環境での業務）にある間のデータ更新も、結合回復後に、このリモートディスクドライブにバックアップされる。この状態でのビットマップも、後に説明されるように、内部ディスクドライブからリモートディスクドライブへのコピーが必要なブロックを表示する。
このＬＶＭは、ＨＯＭＥ動作状態では動作可能である。この動作状態では、ＰＣは、内部ディスクドライブにのみアクセスし、リモートディスクドライブはアクセス不能である。この状態は、名前で想像される通り、ＰＣが家庭かどこかリモートディスクドライブが使用不能な状態で使用されることを示している。この動作状態では、内部ディスクドライブとリモートディスクドライブとの間のデータコピーは行われない。内部ディスクドライブに保存されたビットマップは、内部ディスクドライブからリモートディスクドライブへのコピーが必要なブロックを表示する。
このＬＶＭは、ＲＥＣＯＶＥＲＹ動作状態では動作可能である。この動作状態では、ＰＣは、内部ディスクドライブとリモートディスクドライブ双方にアクセス可能であるが、リモートディスクドライブがより最新のデータを保持している。この動作状態が発生する一つのシナリオは、内部ディスクドライブが交換されて、リモートディスクドライブがバックアップデ−タを保有しているケースである。もう一つのシナリオは、リモートディスクドライブから内部ディスクドライブへのコピーバック状態になり、このコピーが終了していない状態が該当する。どちらの状態でも、リモートディスクドライブ上のビットマップの各エントリは、内部ディスクドライブへのコピーが必要なリモートディスクドライブのブロックを表示する。
［２７］　　　　　第四のＬＶＭ状態は、ＥＭＥＲＧＥＮＣＹ動作状態である。この状態では、ＰＣはリモートディスクドライブにのみアクセス可能である。この動作状態は、内部ディスクドライブがクラッシュしたか、動作不能になりながらも、ユーザは、このＰＣを使い続けているときに発生する。リモートディスクドライブ上のビットマップは、この動作状態の間に書き込まれたブロック内部ディスクドライブへのコピーが必要なブロックを表示する。
図７はブートオーダテーブル０７０１の例を示す。このテーブルは、ブートストラップコードを見つけるためのドライブ探索順序を示す。このＰＣは、ブートストラップコードを複数のストレージデバイスに持つことが可能である。このテーブルの各エントリは、ＢＩＯＳがどのストレージデバイスをどの順序で調べれば良いかを示す。かくして、プライオリテイ部分０７０１０１は、探索順序を示す。ドライブ部分０７０１０３は、データストレージデバイス名を示す。典型的には、ＢＩＯＳは、ユーザが探索順序を指定することを可能にしている。
以降は、本発明の一実施例による、このＰＣとＰＣのコンポーネントの動作に関する議論である。最初に、ブートアッププロセスを説明する。一般に、ＰＣがパワーオンされると、このＰＣのＢＩＯＳが、ブートオーダテーブル０７０１に従って選ばれたディスクドライブから、ブートストラップコードを読み出す。本発明のこの実装例では、内部ディスクドライブ０１０１０９とリモートディスクドライブ０１０５が存在する。この例では、ＢＩＯＳコードは、使用可能なディスクドライブを特定する。図８に示されるように４つのケースが存在する。
・ケースＡ（０８０７）内部ディスクドライブとリモートディスクドライブが共に使用可能
・ケースＢ（０８０９）内部ディスクドライブのみが使用可能
・ケースＣ（０８１５）リモートディスクドライブのみが使用可能
ケースＤ（０８１７）ディスクドライブは共に使用不能
図８は、本発明の一実施例による、ＢＩＯＳの処理を示す。ＢＩＯＳはＰＣの起動を契機に実行開始する（ステップ０８０１）。ＢＩＯＳは、よく知られたディスクＩ／Ｏ技術により、内部ディスクドライブが使用可能か否かを判定する（ステップ０８０３）。ＢＩＯＳは、次に、リモートディスクドライブが使用可能か否かを判定する（ステップ０８０５、０８１１）。もし、内部ディスクドライブ及びリモートディスクドライブが共に使用可能なら、ＢＩＯＳはケースＡとして記録する（ステップ０８０７）。もし、内部ディスクドライブのみが使用可能なら、ＢＩＯＳはケースＢとして記録する（ステップ０８０９）。もし、リモートディスクドライブのみが使用可能なら、ＢＩＯＳはケースＣとして記録する（ステップ０８１５）。もし、ディスクドライブが共に使用不能なら、標準的なエラ−メッセージが表示され（ステップ０８１３）、プロセスは停止する（ステップ０８１７）。
図９は、ケースＡ、即ち、内部ディスクドライブとリモートディスクドライブが共に使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ブートストラップコードは、ブートオーダテーブルで決められたディスクドライブから読み込まれ（ステップ０９０３）、実行される。ブートオーダテーブルは、その時点の内部及びリモートディスクドライブの使用可能状態に対応したＰＣの状態を反映して、ブートオーダがセットされていなければならない。典型的には、内部ディスクドライブが、最高のプライオリテイを有する。しかしながら、内部ディスクドライブが例えばドライブのクラッシュ障害等で交換されて間がない場合は、リモートディスクドライブがブートオーダテーブルにおいて最高のプライオリテイを有する必要がある。
ブートストラップコードは、ＬＶＭスーパブロック０３０１０３をブートドライブ（即ちこのブートストラップコードが読み出されたディスクドライブ）から読み込む（ステップ０９０５）。このＬＶＭスーパブロックからＬＶＭモード０４０１０３が読み込まれ、チェックされる（ステップ０９０７）。もし、通常モードであれば、ＬＶＭステータス０６０１はＯＦＦＩＣＥにセットされ（ステップ０９０９）、カーネルが内部ディスクドライブから読み込まれる（ステップ０９１１）。もし、回復モードであれば、ＬＶＭステータスはＲＥＣＯＶＥＲＹにセットされ（ステップ０９１７）
カーネルはリモートディスクドライブから読み込まれる（ステップ０９１９）。内部ディスクドライブが交換後のドライブであれば、ＬＶＭスーパブロックはこのドライブには存在しない。この場合は、ブートストラップコードは、ＬＶＭスーパブロックの読み込みに失敗する。ブートストラップコードは、内部ディスクドライブから正当なＬＶＭスーパブロックの読み込みに失敗した場合は、ＬＶＭモードを回復モードにセットする（ステップ０９１３）。加えて、リモートディスクドライブのビットマップに全て“１”のフラグをセットする（ステップ０９１５）。次に、ＬＶＭステータスをＲＥＣＯＶＥＲＹにセットして（ステップ０９１７）、カーネルコードがリモートディスクドライブから読み込まれる（ステップ０９１９）。
次にＯＳのブートアップが始まる（ステップ０９２１）。ＯＳブートアップのシーケンスは以下に議論される。
図１０は、ケースＢ、即ち内部ディスクドライブのみが使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ＢＩＯＳは、内部ディスクドライブから、ブートストラップコードを読み込む（ステップ１００３）。ブートストラップコードは、ＬＶＭスーパブロックを、内部ディスクドライブから読み込む（ステップ１００５）。ＬＶＭモードは、ＬＶＭスーパブロックから読み込まれ、チェックされる（ステップ１００７）。もし、通常モードであれば、ＬＶＭステータスは、ＨＯＭＥにセットされ（ステップ１００９）、カーネルコードが読み込まれ実行される（ステップ１０１１）。ＯＳのブートアップ処理（後に議論される）が開始される（ステップ０９２１）。もし、回復モードであれば、内部ディスクドライブは、正当なＬＶＭスーパブロックを持っておらず、ユーザには、ＰＣが内部ディスクドライブからブート出来ないことが知らされる（ステップ１０１５）。回復モードの場合は、リモートディスクドライブからブートする必要があるが、このケースＢの場合は、使用不能である。更に、内部ディスクドライブは読み取り可能であるものの、正当なＬＶＭスーパブロックが存在しない場合は、内部ディスクドライブは新規にインストールされたドライブとみなされ、ＰＣはやはりブートできない。
図１１は、ケースＣ、即ちリモートディスクドライブのみが使用可能の場合の、ブートストラップ読み取りとＬＶＭ動作ステータスを決めるためのＬＶＭ処理の、上位レベルのフローチャートを示す。ＢＩＯＳは、ブートストラップコードをリモートディスクドライブから読み取る（ステップ１１０３）。ＬＶＭステータスは、ＥＭＥＲＧＥＮＣＹにセットされる（ステップ１１０５）。カーネルコードは、リモートディスクドライブから読み込まれ（ステップ１１０７）、ＯＳのブートアップ処理が開始される（ステップ０９２１）。
図１２は、本発明の一実施例での、ＯＳブートシーケンスの上位レベルの処理を示す。ＯＳは、多様なＯＳサービスを立ち上げるために、ハードウエアと全てのソフトウエアコンポーネントを初期化する（ステップ１２０３）。このステップは、慣用的なものであり、よく知られたものである。この慣用的処理に加えて、ＯＳはＬＶＭソフトウエアコンポーネントを初期化する（ステップ１２０５）。ＬＶＭコンポーネントが初期化されると、ＬＶＭコンポーネントはＯＳに対し論理ディスクドライブにアクセス出来るようにする。かくして、ＯＳは、論理ディスクドライブをマウントする（ステップ１２０７）。ＯＳは更に、必要な最終初期化を実施し（ステップ１２０９）、ブートアップシーケンスは完了する。
図１３は、ＯＳのシャットダウン処理の上位レベルのダイアグラムを示す。全てのアプリケーションとＯＳサービスは、適切にシャットダウンされる（ステップ１３０３）。次いで論理ディスクドライブはアンマウントされる（ステップ１３０５）。次に、ＬＶＭシャットダウン処理がコールされる（ステップ１３０７）。全ての残りの、シャットダウン処理は、ステップ１３０９で実行され、この後にＰＣは停止される。
図１４は、ＬＶＭソフトウエアコンポーネントの初期化処理の上位レベルのフローチャートである。最初に、ＬＶＭコンポーネントは、ＬＶＭステータスを判定する（ステップ１４０３）。もし、ＯＦＦＩＣＥステータスの場合は、ランタイムビットマップは、内部ディスクドライブのビットマップから読み出されて、メモリ０１０１０３に格納される（ステップ１４０５）。次に、同期エージェントデーモンが起動される（ステップ１４０７）。もし、ＨＯＭＥステータスの場合は、ランタイムビットマップは、内部ディスクドライブのビットマップから単純に読み出されて、メモリに格納される（ステップ１４０９）同期エージェントデーモンは起動されない。もし、ＲＥＣＯＶＥＲＹステータスの場合は、ランタイムビットマップは、リモートディスクドライブのビットマップから読み出されて、メモリに格納され（ステップ１４１１）、同期エージェントデーモンが起動される（ステップ１４１３）。もし、ＥＭＥＲＧＥＮＣＹステータスの場合は、ランタイムビットマップは、リモートディスクドライブのビットマップから単純に読み出されて、メモリに格納される（ステップ１４１５）同期エージェントデーモンは起動されない。何れのステータスでも、最後に、Ｉ／Ｏエージェントデーモンが起動される（ステップ１４１７）。
図１５は、ＬＶＭシャットダウン処理の上位レベルの処理プロセスを示す。ＬＶＭステータスがＯＦＦＩＣＥの場合は、ＬＶＭは、ランタイムビットマップが、同期エージェントデーモンにより、クリアされるのを待つ（ステップ１５０５）。同期エージェントデーモンの処理については、以降に述べる。クリアされたランタイムビットマップは、次いで、内部ディスクドライブ及びリモートディスクドライブに保存されるビットマップにコピーバックされる（ステップ１５０７）。この状況は、両ディスクドライブが同一内容であることを示す。内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも通常モードにセットされる（ステップ１５０９）。最後に、同期エージェントデーモン及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
もし、ＨＯＭＥステータスの場合は、ＬＶＭモジュールは、ランタイムビットマップを単純に内部ディスクドライブに書き戻す。内部ディスクドライブのスーパブロックのＬＶＭモードは通常モードにセットされる（ステップ１５１３）。最後に、同期エージェントデーモン及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
ＲＥＣＯＶＥＲＹステータスの場合は、ＬＶＭは、リモートディスクドライブから内部ディスクドライブにすべてのデータをコピーして、ビットマップをクリアするのに要する時間を推定する（ステップ１５１５）。もし、推定のコピー時間が限界値を超えたら、同期エージェントデーモンは停止される。ランタイムビットマップは単純に、リモートディスクドライブにコピーされる（ステップ１５１７）。更に、内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも回復モードにセットされる（ステップ１５１９）。次いで、同期及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。推定のコピー時間が限界値以内であれば、処理は、ステップ１５０５からステップ１５０９を経由して１５２１に至る。
ＥＭＥＲＧＥＮＣＹステータスの場合は、ビットマップは単純に、リモートディスクドライブに書き戻される（ステップ１５１７）。更に、内部ディスクドライブ及びリモートディスクドライブのスーパブロックのＬＶＭモードは、双方とも回復モードにセットされる。次いで、同期及びＩ／Ｏエージェントデーモンは停止する（ステップ１５２１）。
図１８は、Ｉ／Ｏエージェントデーモン処理の上位レベルのフローチャートを示す。このＩ／Ｏエージェントデーモンは、ファイルシステムから、論理ディスクドライブに対するデータ読み書きのためにデータＩ／Ｏ要求を受け取る（ステップ１８０３）。次いで、Ｉ／Ｏ要求のタイプが決められる（ステップ１８０５）。もし、要求が書き込み要求なら、書き込みシーケンス処理が実行される（ステップ１８０７）。この書き込み処理の結果は、ファイルシステムに返送される（ステップ１８１１）。もし、要求が読み込み処理なら、読み込みシーケンス処理が実行され（ステップ１８０９）、この読み込み処理の結果は、ファイルシステムに返送される（ステップ１８１１）。
図１６は、本発明の一実施例による、書き込みシーケンス処理の上位レベルのフローチャートを示す。先ず、ＬＶＭステータスがチェックされる（ステップ１６０３）。もし、ＯＦＦＩＣＥ又はＨＯＭＥステータスであれば、データは、内部ディスクドライブに書き込まれる（ステップ１６０５）。書き込みブロックに対応するランタイムビットマップ（ＬＶＭ初期化時点で、内部ディスクドライブからメモリに読み込まれたもの、図１４を参照）のエントリは“１”のフラグがセットされる（ステップ１６０９）。既に議論されたように、内部ディスクドライブのビットマップエントリが“１”のフラグを持っていることは、内部ディスクドライブの対応ブロックのリモートディスクドライブへのコピーが必要なことを示している。
もし、ＲＥＣＯＶＥＲＹ又はＥＭＥＲＧＥＮＣＹステータスであれば、データは、リモートディスクドライブに書き込まれる（ステップ１６０７）。書き込みブロックに対応するランタイムビットマップ（ＬＶＭ初期化時点で、リモートディスクドライブからメモリに読み込まれたもの、図１４を参照）のエントリは“１”のフラグがセットされる。既に議論されたように、リモートディスクドライブのビットマップエントリが“１”のフラグを持っていることは、リモートディスクドライブの対応ブロックの内部ディスクドライブへのコピーが必要なことを示している。
図１７は、本発明の一実施例による、読み込みシーケンス処理の上位レベルのフローチャートを示す。もし、ＬＶＭステータスがＯＦＦＩＣＥ又はＨＯＭＥステータスであれば、データは、内部ディスクドライブから読み込まれる（ステップ１７０５）。もし、ＬＶＭステータスがＲＥＣＯＶＥＲＹ又はＥＭＥＲＧＥＮＣＹステータスであれば、ランタイムビットマップ（リモートディスクドライブからコピーされたもの）がチェックされる（ステップ１７０７）。もし、読み取り要求されたブロックに対応するエントリが“１”にセットされていなければ、読み取り要求が、内部ディスクドライブからブロックを読み込むことで達成される（ステップ１７０５）。一方、読み取り要求されたブロックに対応するエントリが“１”にセットされていれば、ブロックは、リモートディスクドライブから読み込まれる（ステップ１７０９）。対応するエントリが“１”にセットされている場合に、リモートディスクドライブから読み込む理由は、リモートディスクドライブの該当データブロックがまだ対応する内部ディスクドライブのデータブロックにコピーされていない場合があるからである。
図１９は、本発明の一実施例による、同期エージェントデーモンが実施する処理の上位レベルのフローチャートである。同期エージェントデーモンは、ランタイムビットマップのどれかのエントリに“１”がセットされるまでは、何もしない（ステップ１９０３）。もし、ランタイムビットマップのどれかのエントリに“１”がセットされると、同期エージェントデーモンは、ＬＶＭステータスをチェックする（ステップ１９０５）。もし、ステータスがＯＦＦＩＣＥステータスの場合は、内部ディスクドライブの該当ブロックが読み出され（ステップ１９０７）、リモートディスクドライブの該当ブロックに書き込まれる（ステップ１９０９）。この後、当該エントリはクリアされる（“１”以外が書き込まれる）（ステップ１９１５）。
もし、ステータスがＲＥＣＯＶＥＲＹステータスであれば、リモートディスクドライブの該当ブロックから読み出され（ステップ１９１１）、内部ディスクドライブの該当ブロックにコピーされる（ステップ１９１３）。この後、当該エントリはクリアされる（“１”以外が書き込まれる）（ステップ１９１５）。
同期デーモンとＩ／Ｏデーモンは分離されたプロセスで、互いに独立に動作する。従って、同期デーモンは、Ｉ／Ｏデーモンに送られるＩ／Ｏ要求とは非同期に、内部ディスクドライブとリモートディスクドライブ間のデータコピー動作を実行する。
これまで述べてきた具体的な解決は、本発明の原理に従った一実施例の一つの実装を説明するためである事に理解いただきたい。以降に続く請求項で定義されるように本発明の範囲と精神から離れることなく幾多の修正が可能であることは、本分野に造詣のある人には、明白である。
【図面の簡単な説明】
【図１】図１は、本発明の実施例に従った、ＰＣシステムの実装を示す上位レベルのシステムブロックダイアグラムである。
【図２】図２は，本発明の実施例に従った、ＰＣシステムのソフトウエア及びハードウエアコンポーネントの上位レベルのブロックダイアグラムを示す
【図２Ａ】図２Ａは，本発明の実施例に従った、ＰＣシステムのソフトウエア及びハードウエアコンポーネントの上位レベルのブロックダイアグラムを示す
【図３】図３は本発明の実施例に従った、ディスクドライブのデータ構造図を示す。
【図４】図４は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図５】図５は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図６】図６は、本発明の実施例の特定の実装に従った、ＬＶＭソフトウエアコンポーネントで使用される各種データテーブルを示す。
【図７】図７はブートオーダテーブルを示す。
【図８】図８は、各種のブートアップのケースを示す。
【図９】図９は、図８で示される各ケースに対応した上位レベルのブート処理を示す。
【図１０】図１０は、図８で示される各ケースに対応した上位レベルのブート処理を示す。
【図１１】図１１は、図８で示される各ケースに対応した上位レベルのブート処理を示す。。
【図１２】図１２は、本発明の実施例に従った、ＰＣ　ＯＳのブートシーケンスの上位レベルの処理を示す。
【図１３】図１３は、本発明の実施例に従った、ＰＣ　ＯＳの上位レベルのシャットダウンシーケンスを示す。
【図１４】図１４は、本発明の実施例に従った、ＬＶＭ初期化シーケンスの上位レベルのフローチャートを示す。
【図１５】図１５は、本発明の実施例に従った、ＬＶＭシャットダウンシーケンスの上位レベルのフローチャートを示す。
【図１６】図１６は、本発明の実施例に従った、Ｉ／Ｏエージェントデーモンの上位レベルの処理を示す。
【図１７】図１７は、本発明の実施例に従った、Ｉ／Ｏエージェントデーモンの上位レベルの処理を示す。
【図１８】図１８は、Ｉ／Ｏ要求処理を示す。
【図１９】図１９は、本発明の実施例に従った、同期エージェントデーモン処理を示す。
【符号の説明】
０１０１・・・ＰＣ（Ｐｅｒｓｏｎａｌ　Ｃｏｍｐｕｔｅｒ：パソコン）、０１０１０１・・・ＣＰＵ、０１０１０３・・・メモリ、０１０１０５・・・ＢＩＯＳ（バイオス）、０１０１０７・・・ブートオーダ、０１０１０９・・・内部ディスクドライブ、０１０３・・・ネットワーク、０１０５・・・リモートディスクドライブ、０２０１・・・アプリケーション、０２０３　　　　・・・オペレーティングシステム、０２０３０１・・・ファイルシステム、０２０３０３・・・論理ボリュームマネージャ（ＬＶＭ）、０２０３０３ａ・・・Ｉ／Ｏエージェント、０２０３０３ｂ・・・同期エージェント、０２０３０３ｃ・・・ＬＶＭ＿Ｉｎｉｔ、０２０３０３ｄ・・・ＬＶＭ＿Ｓｈｕｔｄｏｗｎ、０２０３０３ｅ・・・ＬＶＭステータス
【図１】
2004145854.tif 000003
【図２】
2004145854.tif 000004
【図２Ａ】
2004145854.tif 000005
【図３】
2004145854.tif 000006
【図４】
2004145854.tif 000007
【図５】
2004145854.tif 000008
【図６】
2004145854.tif 000009
【図７】
2004145854.tif 000010
【図８】
2004145854.tif 000011
【図９】
2004145854.tif 000012
【図１０】
2004145854.tif 000013
【図１１】
2004145854.tif 000014
【図１２】
2004145854.tif 000015
【図１３】
2004145854.tif 000016
【図１４】
2004145854.tif 000017
【図１５】
2004145854.tif 000018
【図１６】
2004145854.tif 000019
【図１７】
2004145854.tif 000020
【図１８】
2004145854.tif 000021
【図１９】
2004145854.tif 000022
【外国語明細書】
2004145854.tif 000023
2004145854.tif 000024
2004145854.tif 000025
2004145854.tif 000026
2004145854.tif 000027
2004145854.tif 000028
2004145854.tif 000029
2004145854.tif 000030
2004145854.tif 000031
2004145854.tif 000032
2004145854.tif 000033
2004145854.tif 000034
2004145854.tif 000035
2004145854.tif 000036
2004145854.tif 000037
2004145854.tif 000038
2004145854.tif 000039
2004145854.tif 000040
2004145854.tif 000041
2004145854.tif 000042
2004145854.tif 000043
2004145854.tif 000044
2004145854.tif 000045
2004145854.tif 000046
2004145854.tif 000047
2004145854.tif 000048
2004145854.tif 000049
2004145854.tif 000050
2004145854.tif 000051
2004145854.tif 000052
2004145854.tif 000053
2004145854.tif 000054
2004145854.tif 000055
2004145854.tif 000056
2004145854.tif 000057
2004145854.tif 000058
2004145854.tif 000059
2004145854.tif 000060
2004145854.tif 000061
2004145854.tif 000062
2004145854.tif 000063
2004145854.tif 000064
2004145854.tif 000065
2004145854.tif 000066
2004145854.tif 000067
2004145854.tif 000068
2004145854.tif 000069
2004145854.tif 000070
2004145854.tif 000071
2004145854.tif 000072
2004145854.tif 000073
2004145854.tif 000074
2004145854.tif 000075
2004145854.tif 000076
2004145854.tif 000077
2004145854.tif 000078
2004145854.tif 000079
2004145854.tif 000080