(57)【要約】方法、システム、及び構成された記憶媒体がフレキシブル・データ・ミラーリングのために提供される。特に、本発明は、ローカル−リモート役割逆転（１５０６）、「メディア・ノット・レディ」信号によるホット・スタンドバイ・サーバ状態の実現（１５０８）、いくつかの代替バッファコンテンツ、バッファリング・スキーム、トランザクショニング（１５１６）、「仮想」リモート・ミラーリング・ユニットの使用による多対一ミラーリング（１５２０）、アプリケーション固有情報を用いず、アプリケーションのログが記録された動作、又は解析された動作に基づく、頻繁にアクセスされたデータの特定（１５２２）、正式でない手法による副サーバの使用（１５２６）を提供する。
2004523017.tif 000002
【特許請求の範囲】
【請求項１】
データをミラーリングするステップと、ミラーリング・ユニットのローカル−リモート役割逆転を実行するステップとを含む、データ・ミラーリングの方法。
【請求項２】
データ・ミラーリングの方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データをミラーリングするステップと、ミラーリング・ユニットのローカル−リモート役割逆転を実行するステップとを含む、コンピュータ記憶媒体。
【請求項３】
少なくとも２つのミラーリング・ユニットを含むデータ・ミラーリング・システムであって、各ミラーリング・ユニットが、システム内のミラーリング・ユニットのリモート−ローカル役割逆転を実行する手段によって構成される、データ・ミラーリング・システム。
【請求項４】
データをミラーリングするステップと、変更されたデータをバッファに保管するのではなく、変更された論理ブロック番号をバッファに保管するステップとを含む、データ・ミラーリングの方法。
【請求項５】
論理ブロック番号に対応するブロックが上書きされる時に、第１位置のデータを参照するのではなく、第２位置のデータを参照するためにバッファ内の同じ位置で論理ブロック番号を変更するステップをさらに含み、第１位置が、ブロックが上書きされる前のブロックのデータを保持し、第２位置が、ブロックが上書きされた後のブロックのデータを保持する、請求項４に記載の方法。
【請求項６】
データ・ミラーリングの方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データをミラーリングするステップと、変更されたデータを環状バッファに保管するのではなく、変更された論理ブロック番号を環状バッファに保管するステップとを含む、コンピュータ記憶媒体。
【請求項７】
方法が、さらに、論理ブロック番号に対応するブロックが上書きされる時に、第１位置のデータを参照するのではなく、第２位置のデータを参照するためにバッファ内の同じ位置で論理ブロック番号を変更するステップを含み、第１位置が、ブロックが上書きされる前のブロックのデータを保持し、第２位置が、ブロックが上書きされた後のブロックのデータを保持する、請求項６に記載の構成された媒体。
【請求項８】
バッファと、変更されたデータをバッファに保管するのではなく変更された論理ブロック番号をバッファに保管する手段とを含む、ミラーリング・ユニット。
【請求項９】
保管する手段が、仮想ブロック割振り構造を含む、請求項８に記載のミラーリング・ユニット。
【請求項１０】
仮想ブロック割振り構造が、ブロック・データではなくブロック・チェックサムを含む、請求項９に記載のミラーリング・ユニット。
【請求項１１】
ミラーリング・ユニットが、２つのミラーリング・ユニットの再同期中に、ジャーニー・リンクを介してブロック・データを送信するのではなく、ジャーニー・リンクを介して別のミラーリング・ユニットにブロック・チェックサムを送信する、請求項１０に記載のミラーリング・ユニット。
【請求項１２】
副サーバをホット・スタンバイ・モードにする方法であって、副サーバをブートするステップと、副サーバに、副役割であるミラーリング・ユニットから「メディア・ノット・レディ」信号を副サーバに供給するステップであって、これによって、エミュレーション層が、データのサイズおよび可用性に関する副サーバからの要求に応答するが、ミラーリング・ユニットの役割が変更されるまでは副サーバによるデータ内容へのアクセスを拒否する、ステップとを含む方法。
【請求項１３】
各ミラーリング・ユニットの役割を変更するために、データ・ミラーリング・システム内のミラーリング・ユニットともう１つのミラーリング・ユニットとの間でローカル−リモート役割逆転を実行するステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
副サーバをホット・スタンバイ・モードにする方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、副サーバから照会信号を受け取るステップと、副サーバに応答信号を供給するステップであって、これによって、ミラーリング・ユニットのエミュレーション層が、少なくともミラーリング・ユニット・データのサイズに関する情報を供給することによって副サーバからの要求に応答するが、ミラーリング・ユニット・データ内容に対する副サーバ・アクセスを拒否する、ステップとを含む、コンピュータ記憶媒体。
【請求項１５】
方法が、さらに、データ・ミラーリング・システム内のミラーリング・ユニットともう１つのミラーリング・ユニットとの間のローカル−リモート役割逆転を実行するステップを含む、請求項１４に記載の構成された媒体。
【請求項１６】
データ記憶媒体とエミュレーション層とを含むミラーリング・ユニットであって、エミュレーション層が、記憶媒体に保管されたデータの特性を提供することと、上記データの内容への副サーバ・アクセスを拒否することとによって、副サーバからの要求に応答する手段を有する、ミラーリング・ユニット。
【請求項１７】
データをミラーリングするステップと、バスをスヌープするステップと、スヌープするステップによって得られた少なくとも１つのコマンドをバッファリングするステップとを含む、データ・ミラーリングの方法。
【請求項１８】
さらに、書込性質コマンドから読取性質コマンドを分離するステップを含み、読取性質コマンドが、読取性質であるスヌープされるバス上のホスト・コントローラからの要求であり、書込性質コマンドが、書込性質であるバス上のホスト・コントローラからのコマンドであり、バッファリングするステップが、書込性質コマンドをバッファリングする、請求項１７に記載の方法。
【請求項１９】
さらに、バッファリングされたコマンドを、第１ミラーリング・ユニットから通信リンクを介して第２ミラーリング・ユニットに転送するステップを含む、請求項１７に記載の方法。
【請求項２０】
さらに、第１ミラーリング・ユニットによってバッファリングされたコマンドを第２ミラーリング・ユニットから中継するステップを含む、請求項１７に記載の方法。
【請求項２１】
データ・ミラーリングの方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データをミラーリングするステップと、ＳＣＳＩバスをスヌープするステップと、スヌープするステップによって得られた少なくとも１つのＳＣＳＩコマンドをバッファリングするステップとを含む、コンピュータ記憶媒体。
【請求項２２】
バッファリングするステップが、少なくとも１つの書込コマンドをバッファリングする、請求項２１に記載の構成された媒体。
【請求項２３】
方法が、さらに、第１ミラーリング・ユニットによってバッファリングされたコマンドを第２ミラーリング・ユニットから中継するステップを含む、請求項２１に記載の構成された媒体。
【請求項２４】
ＳＣＳＩバスと、データをミラーリングする手段と、ＳＣＳＩバスをスヌープする手段と、スヌーピングによって得られたＳＣＳＩコマンドをバッファリングする手段との少なくとも１つを含む、データ・ミラーリング・システム。
【請求項２５】
データをミラーリングするステップと、トランザクショナル・ファイルシステム機能性を提供するためにカーネル・ウェッジを使用するステップとを含む、データ・ミラーリングの方法。
【請求項２６】
データ・ミラーリングの方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データをミラーリングするステップと、トランザクショナル・ファイルシステム機能性を提供するためにカーネル・ウェッジを使用するステップとを含む、コンピュータ記憶媒体。
【請求項２７】
ミラーリングに関するデータのソースと、データ・ミラーリング中にトランザクショナル・ファイルシステム機能性を提供するカーネル・ウェッジとを含む、データ・ミラーリング・システム。
【請求項２８】
ローカル・システムおよびリモート・システムを含み、リモート・システムが、ローカル・システムからデータ変更情報を受け取り、リモート・システムでバッファリングされるデータ変更のログを保持し、管理者の要求での変更ロールバックをサポートするソフトウェアを含む、請求項２７に記載のデータ・ミラーリング・システム。
【請求項２９】
データ・ミラーリングの方法であって、ローカル・ミラーからデータのブロックを読み取るステップと、そのデータのブロックを新しいブロックとして一時記憶装置に書き込むステップと、キュー内の論理ブロック番号エントリを更新するステップと、新しいブロックをミラー・データの集合に書き込むステップと、新しいブロック論理ブロック番号エントリをキューに追加するステップとを含む方法。
【請求項３０】
データ・ミラーリングの方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、ローカル・ミラーからデータのブロックを読み取るステップと、そのデータのブロックを新しいブロックとして一時記憶装置に書き込むステップと、データ構造内の論理ブロック番号エントリを更新するステップと、新しいブロックをミラー・データの集合に書き込むステップと、新しいブロック論理ブロック番号エントリをデータ構造に追加するステップとを含む、コンピュータ記憶媒体。
【請求項３１】
データ・ミラーリング・システムであって、ローカル・ミラーからデータのブロックを読み取る手段と、そのデータのブロックを新しいブロックとして一時記憶装置に書き込む手段と、データ構造内の論理ブロック番号エントリを更新する手段と、新しいブロックをミラー・データの集合に書き込む手段と、新しいブロック論理ブロック番号エントリをデータ構造に追加する手段との少なくとも１つを含むデータ・ミラーリング・システム。
【請求項３２】
データ記憶管理の方法であって、データを読み取るステップと、仮想リモート・ミラーリング・ユニットを提供するステップとを含む方法。
【請求項３３】
データ記憶管理の方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データを読み取るステップと、単一のハードウェア・プラットフォーム上で複数の仮想リモート・ミラーリング・ユニットを実行するステップとを含む、コンピュータ記憶媒体。
【請求項３４】
単一のハードウェア・プラットフォーム上の少なくとも２つの仮想リモート・ミラーリング・ユニットを含むデータ・ミラーリング・システム。
【請求項３５】
データ記憶管理の方法であって、データを読み取るステップと、アプリケーションによる記憶動作の順序および頻度に関する前のアプリケーション固有の知識なしで、頻繁にアクセスされるデータ要素を識別するステップとを含む方法。
【請求項３６】
データ記憶管理の方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データを読み取るステップと、アプリケーションによる記憶動作に関するアプリケーション固有の知識なしで、頻繁にアクセスされるデータ要素を識別するステップとを含む、コンピュータ記憶媒体。
【請求項３７】
改良されたデータ記憶管理システムであって、改良が、アプリケーション固有の知識なしで頻繁にアクセスされるデータ要素を識別する手段を含む、改良されたデータ記憶管理システム。
【請求項３８】
改良が、データ・ミラーリング・ユニットを含み、アプリケーション固有の知識なしで頻繁にアクセスされるデータ要素を識別する手段が、アプリケーション状態が回復されるまで、連続するデータ・ブロックをアンコミットすることと、状態ブロック更新の間に書き込まれた状態ブロック更新をアンコミットすることとによって、アプリケーションの状態の回復を支援する手段と互いに整合的に作用する、請求項３７に記載の改良されたデータ記憶管理システム。
【請求項３９】
データ記憶管理の方法であって、データを読み取るステップと、主データ・ボリュームの代わりに副データ・ボリュームを使用した後に、主データ・ボリュームから正式でない副データ・ボリュームを再同期させるステップとを含む方法。
【請求項４０】
データ記憶管理の方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データを読み取るステップと、主データ・ボリュームとして副データ・ボリュームを使用した後に、主データ・ボリュームから正式でない副データ・ボリュームを再同期させるステップとを含む、コンピュータ記憶媒体。
【請求項４１】
改良されたデータ記憶管理システムであって、改良が、主データ・ボリュームとして副データ・ボリュームを使用した後に、主データ・ボリュームから正式でない副データ・ボリュームを再同期させるソフトウェアを含む、改良されたデータ記憶管理システム。
【請求項４２】
データ記憶管理の方法であって、データを読み取るステップと、ミラーリングされるデータ要素の順序付きキューおよびミラーリングされるデータ要素の現在のコピーを同一の物理記憶システムで維持するステップであって、これによって、物理的に区分されたシステムを実施するために記憶システムに同一のデータを２回書き込む必要がなくなる、ステップとを含む方法。
【請求項４３】
データ記憶管理の方法を実行するように構成されたコンピュータ記憶媒体であって、方法が、データを読み取るステップと、ミラーリングされるデータ要素の順序付きキューおよびミラーリングされるデータ要素の現在のコピーを同一の物理記憶システムで維持するステップとを含む、コンピュータ記憶媒体。
【請求項４４】
改良されたデータ記憶管理システムであって、改良が、ミラーリングされるデータ要素の順序付きデータ構造およびミラーリングされるデータ要素の現在のコピーを同一の物理記憶システムで維持するソフトウェアを含む、改良されたデータ記憶管理システム。
【発明の詳細な説明】
【０００１】
（発明の技術分野）
本発明は、よりよいフォールト・トレランスおよび／または障害回復を提供するための、サーバまたは他のコンピュータからのディジタル・データのリモート・ミラーリングに関し、具体的には、リモート・データ・ミラーリングの柔軟性を高めるツールおよび技法に関する。
【０００２】
（発明の技術的背景）
米国特許第５５３７５３３号に、主ネットワーク・サーバからリモート・ネットワーク・サーバへディジタル・データをリモート・ミラーリングするツールおよび技法が記載されている。その発明によるシステムには、主サーバ・インターフェースおよび主リンク・インターフェースを有する主データ転送ユニットと、リモート・リンク・インターフェースおよびリモート・サーバ・インターフェースを有するリモート・データ転送ユニットが含まれる。主リンク・インターフェースには、主ネットワーク・サーバに関する事前アクノレッジを生成することができるスプーフ・パケット・ジェネレータが含まれる。すなわち、このシステムは、ミラーリングされるデータが主リンク・インターフェース内の不揮発性バッファに保管された後で、ミラーリングされたデータがリモート・サーバによって保管されたことを示すアクノレッジが到着する前に、事前アクノレッジまたは「スプーフ」を主サーバに与える「スマート・バッファ」を有する。
【０００３】
米国ユタ州ソルト・レーク・シティのミラリンク  コーポレーション（ＭｉｒａＬｉｎｋ  Ｃｏｒｐｏｒａｔｉｏｎ）社が、米国特許第５５３７５３３号の所有者である。ＭｉｒａＬｉｎｋ社は、本明細書の日付の１年以上前に、オフーサイトサーバ（Ｏｆｆ−ＳｉｔｅＳｅｒｖｅｒ）製品（ＯＦＦ−ＳＩＴＥＳＥＲＶＥＲはミラリンク社の商標である）を商業的に入手可能にした。オフーサイトサーバ製品には、地理的に離れた位置にある別のサーバに低帯域幅遠隔通信リンクを介してＮｏｖｅｌｌ  ＮｅｔＷａｒｅサーバのディスクをリモート・ミラーリングする技術が含まれる（「ＮＥＴＷＡＲＥ」は、ノヴェル・インク（Ｎｏｖｅｌｌ，Ｉｎｃ．）社の商標である）。
【０００４】
主ネットワーク・サーバからリモート置換ネットワーク・サーバへの、データ・ミラーリングを使用するデータのリモート・ミラーリングは、データをバック・アップする強力で効率的な方法である。リモート・ミラーリングでは、元のデータから安全な距離にデータのコピーを作成し、元のデータの保管と実質的に同時にこれを行う。リモートに保管されたデータは、「ウォーム」リモート・ネットワーク・サーバすなわち、実際の障害またはシミュレートされた障害の時間の間に主サーバとして動作していることができるリモート・サーバにコピーされた場合に、障害のほぼ直後に使用可能にすることができる。
【０００５】
通常のインストールでは、オフーサイトサーバ製品の使用に、ローカル・ボックス内とリモート・ボックス内のオフーサイトサーバの対が用いられる。オフーサイトサーバボックスは、全般的に米国特許第５５３７５３３号に記載されているように、特殊化されたハードウェアと、ファームウェアおよび／または他のソフトウェアとを用いて構成される。プロプラエタリ・シリアル回線によって、ローカルＮｅｔＷａｒｅサーバがこれらのボックスの１つに接続される。ＮｅｔＷａｒｅサーバ自体は、Ｖｉｎｃａカードを使用する（ＶＩＮＣＡは、Ｖｉｎｃａ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標である）。このカードは、ＮｅｔＷａｒｅ・ローダブル・モジュール（ＮＬＭと略す）によって駆動され、ＮＬＭは、ディスクドライバ要求をインターセプトし、シリアル回線を介してデータをローカルオフーサイトサーバボックスに送る。
【０００６】
ローカルオフーサイトサーバボックスは、ＩＤＥディスク・ドライブなどの、４ギガバイト不揮発性バッファを有する。データは、このオフーサイトサーババッファに事前アクノレッジされる。ローカル・サーバのオペレーティング・システムに関する限り、第２の「ミラーリングされた」書込が、ローカルに行われる。実際には、オフーサイトサーバ製品が、ＮＬＭからこのデータを受け取り、ローカル・バッファに保管している。ローカルオフーサイトサーバボックスは、セクタおよびトラック（またはブロック・レベル）のデータ変更を、リモート位置にあるリモートオフーサイトサーバボックスにそのデータを安全に送信できるようになるまで、保管する。ローカルオフーサイトサーバボックス内のバッファは、遠隔通信リンクがローカルに処理できるものを超えるすべてのデータを保管するという点で、「スマート」でもある。このデータは、リモートオフーサイトサーバボックスがリモート副サーバに成功裡に書き込み、ローカル（主）オフーサイトサーバボックスにアクノレッジを送り返すまで、ローカルオフーサイトサーバボックスに保管される。このアクノレッジが受信された時に、ローカルオフーサイトサーバボックスが、成功裡に送信されたセクタ／トラック／ブロック・データによって占有されているローカル不揮発性バッファ内のスペースを解放する。
【０００７】
オフーサイトサーバ製品は、ローカル（主）サイトでのデータ出力にＶ．３５インターフェースを使用する。Ｖ．３５は、チャネル・サービス・ユニット／データ・サービス（ＣＳＵ／ＤＳＵ）に接続されるシリアル遠隔通信標準規格であり、このＣＳＵ／ＤＳＵが、遠隔通信リンクとインターフェースする。リモート（副）位置は、第２のＣＳＵ／ＤＳＵを有し、このＣＳＵ／ＤＳＵが、セクタ／トラック／ブロック情報を、リモート副オフーサイトサーバボックスのＶ．３５入力インターフェースに中継する。副オフーサイトサーバボックスは、このセクタ／トラック／ブロック・データを、副（リモート）サーバ内のもう１つのＶｉｎｃａカードに接続されたシリアル・ケーブルを使用して、プロプラエタリ・シリアル接続を介して出力する。リモート・サーバのデータ・ミラーリング・ソフトウェアおよびシステム・ソフトウェアは、このセクタ／トラック／ブロック情報を、リモート・サーバのディスク・ドライブに書き込み、その書込が、ローカルオフーサイトサーバボックスにアクノレッジされる。このシステムは、１時間に約３００メガバイトの変更データを処理することができる。
【０００８】
オフーサイトサーバ製品は、帯域幅の増加または減少がある場合、および／または遠隔通信リンクがダウンした場合を感知するのに十分にインテリジェントである。リンク・ダウンタイム期間中に、オフーサイトサーバボックスは、サーバからのデータ変更をローカル不揮発性スマート・バッファに保管することができる。リンクがアクティブになった時に、オフーサイトサーバ製品が、送信を自動的に開始する。オフーサイトサーバ製品は、使用可能な帯域幅が減るか増える時に、オンザフライでその帯域幅出力を変更することができる。上で説明した伝送のすべてに、標準ソフトウェア・チェックサム・エラー検出および訂正、および／またはハードウェア・エラー訂正コード（ＥＣＣ）エラー処理も組み込まれている。
【０００９】
ローカル（主）ＮｅｔＷａｒｅサーバでのディスク障害またはサーバ障害の場合には、上で説明した形でリモート（副）オフーサイトサーバボックスに接続された副（リモート）サーバが、ローカル（主）サーバ上のすべてのデータの完全にミラーリングされたディスク・コピーを有する。このリモート・バックアップ・コピーを、ローカル（主）サーバに復元することができる。この副リモート・サーバは、障害の場合にローカル主サーバの代役をつとめることもできる。そのような副復元および／または代役は、単純なコマンド・ラインのセットを用いて比較的すばやく実行することができる。
【００１０】
要するに、オフーサイトサーバ製品および他のリモート・データ・ミラーリング技術は、ミッション・クリティカル・データおよび他の文脈の両方での、貴重なフォールト・トレランス能力および障害回復能力を提供する。それにもかかわらず、これらの既存の手法は、不必要に制限された柔軟性を有する。
【００１１】
たとえば、オフーサイトサーバ製品は、Ｖｉｎｃａ  Ｃｏｒｐｏｒａｔｉｏｎ社のハードウェアおよびソフトウェアの特別なバージョンを必要とする。このＶｉｎｃａ製品の必要なバージョンは、Ｎｏｖｅｌｌ  ＮｅｔＷａｒｅプラットフォーム以外のオペレーティング・システム／ファイル・システム・プラットフォームを全くサポートしない。必要なＶｉｎｃａパッケージのハードウェア・コンポーネントは、より新しくより高速なサーバおよびより大きいディスク・ボリュームをサポートしない。
【００１２】
元々のオフーサイトサーバ製品は、１つのローカル・サーバを１つのリモート・サーバに接続するように設計されていた。単一のサーバだけが、所与の時点でリモート・サーバにミラーリングすることができる。異なる位置にある複数のサーバが、単一のリモート・サイトに簡単にミラーリングすることはできない。同様に、企業が、異なるオペレーティング・システムおよび／またはファイル・システムを実行する複数のローカル・サーバを有する場合に、別々のプラットフォームを動作させる各サーバは、一致するリモート・サーバにミラーリングされなければならない。
【００１３】
さらに、元々のオフーサイトサーバ製品は、ローカル・サーバ上のＮＬＭを必要とし、私有専用遠隔通信リンクを使用するように設計されていた。従来のミラーリングでは、ミラーリングされた情報をリモート位置でブート可能な形で保持するために、リモート・サーバも必要である。
【００１４】
これらおよび他の制限が、原出願である米国特許出願第０９／４３８１８４号に注記されている。本願は、原出願に記載の技術ならびに他の進歩を利用するために、リモート・データ・ミラーリングの追加のツールおよび技法を提供する。
【００１５】
（発明の簡潔な要約）
本発明は、原出願の発明または他の実施形態と組み合わせて使用することができる、データ・ミラーリングのツールおよび技法を提供する。原出願である、仮出願でない米国特許出願第０９／４３８１８４号が、本明細書に組み込まれるが、この簡単な要約では、前に強調されなかったツールおよび技法の便利について焦点を合わせる。たとえば、本発明は、ローカル−リモート役割逆転、「メディア・ノット・レディ」信号を介するホット・スタンバイ・サーバ状況の実施、複数の代替バッファ内容およびバッファリング方式、トランザクショニング、「仮想」リモート・ミラーリング・ユニットの使用を介する多対１ミラーリング、アプリケーション固有の知識なしで、アプリケーションのログ記録され分析された挙動に基づく、頻繁にアクセスされるデータの識別、および正式でない形での副サーバの使用などのツールおよび技法を提供する。本発明の他の特徴および長所は、以下の説明から完全に明白になる。
【００１６】
（図面の簡単な説明）
本発明の長所および特徴が得られる形を例示するために、本発明のより具体的な説明を、添付図面に関して示す。これらの図面は、本発明の選択された態様および／またはその文脈を例示するのみであり、したがって、本発明の範囲を制限しない。
【００１７】
（好ましい実施形態の詳細な説明）
本発明は、柔軟なデータ・ミラーリングに関するコンピュータ・システム、方法、および構成された記憶媒体に関する。注記したように、本願は、原出願である、仮出願でない米国特許出願第０９／４３８１８４号を含む複数の出願の優先権を主張し、それらを組込み、本明細書で請求される発明は、原出願で請求された発明から利益を得る実施形態または他の実施形態と共に使用することができる。用語「発明」は、本明細書では、各明細書で請求項によって発明が定義されることの理解と共に、原出願との一貫性を有する形で使用される。特に示される場合を除いて、本願および原出願の両方で使用される他の用語は、本明細書で、原出願での使用との一貫性を有する形で使用されることを同様に意図されている。
【００１８】
原出願で注記されているように、本発明は、非侵略的ミラーリング、専用の私有遠隔通信リンクを用いるか用いないミラーリング、およびリモート・ミラーリング・ユニットを支援するための宛先の専用サーバまたは別のサーバを用いるか用いないミラーリングを提供する。本発明は、複数の地理的に分散した位置にある、同一のまたは異なるオペレーティング・システムおよび／またはファイル・システムを実行するローカル・サーバからのミラーリングを含む多対１データ・ミラーリングも提供する。さらに、本発明は、ミラーリングされたデータを保持するのに１つまたは複数の外部記憶ユニットおよび／またはＲＡＩＤユニットのさまざまな組合せを使用できるようにすることによって、柔軟性を提供する。これらの話題は、原出願で具体的に対処されており、下でその議論を複写する。
【００１９】
本発明は、原出願で本明細書と同様に詳細には対処されていないツールおよび技法も提供する。その例には、ミラーリング・ユニット役割逆転、サーバ・ホット・スタンバイ・モード実施形態、ミラーリングされるデータの保管のオプション、変更されたデータを伴うＳＣＳＩコマンドの保管および再生、トランザクショニング、仮想リモート・ミラーリング・ユニット、アプリケーション状態回復、およびデータ・ボリューム再同期化が含まれる。これらの話題は、所与の話題について提供される関係する情報が、必ずしも図１５およびそれを直接に参照するテキストだけにあるのではないことの理解と共に、図１５（原出願にはない図面）に関して述べる。
【００２０】
本発明は、方法、システム、および／または構成された記憶媒体で実施することができる。明瞭に他の形で示されない限り、実施形態のタイプの１つの議論は、他の実施形態タイプにも適用される。たとえば、発明的システムの議論は、そのようなシステムを構成する発明的方法および／またはデータをミラーリングさせるためにそのようなシステムを介してデータを送る方法を理解するのにも役立ち、逆も同様である。具体的に言うと、図１５に流れ図が示されているが、これは、方法に厳密に制限されるのではなく、本発明に従って構成された媒体およびシステムを例示するのにも役立つ。
【００２１】
［コンピュータ及びネットワークの概要］
図１に、ローカル・サーバ１０２が、リモート・サーバ１０６への普通のルート１０４を介してミラーリングされるネットワーク１００を示す。普通のルート１０４は、遠隔通信リンク自体に制限されるのではなく、モデム、データ転送ユニット、および、そのようなリンクでデータを送信し、かつ／またはそのように送信されるデータを受信するのに使用される他の普通のツールおよび技法も含まれる。具体的かつ制限なしに、普通のルート１０４に、米国特許第５５３７５３３号の図１に記載され、その特許で述べられたサーバ・インターフェース、リンク・インターフェース、およびＤＴＵを含めることができる。
【００２２】
さらに、普通のルート１０４に、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）パフォーマンス・エクステンダまたは標準ストレージ・アクセス・ネットワーク（ＳＡＮ）コネクタを含めることができる。そのようなデバイスは、非常に広い帯域幅のリンクおよび最小限の待ち時間を必要とする。そのようなデバイスは、距離によって待ち時間が導入されるので、おそらくは１６ｋｍまたは３２ｋｍ（１０マイルまたは２０マイル）の距離制限を有する傾向がある。たとえば、単一モード・ファイバ構成では、所与のＳＣＳＩエクステンダの待ち時間から、データ・ソースと宛先の間で、おそらく１５ｋｍの距離が許容される。マルチモード・ファイバを使用することによって、使用可能な距離が、待ち時間のゆえにおそらくこの２／３に減る。そのような接続は、１０分の数秒を超えない遅延または割込みをほとんどまたは全く許容せず、あるいは、せいぜい数秒の遅延を優雅に処理できるだけである。これと同一の問題が、メインフレームのチャネル・エクステンダにもあてはまる。
【００２３】
図示のネットワーク１００は、従来のツールおよび技法によるミラーリング用に構成されているが、本発明に従う適応および使用に適する多数の可能なネットワークの１つでもある。そのような適応には、使用される本発明の特定の実施形態に応じて、さまざまなステップが含まれる。たとえば、適応に、もはや必要でない場合のリモート・サーバ１０６からの切断、本発明に従ってリンクされるミラーリング・ユニットによる普通のミラーリング・ルート１０４の補足または置換、ローカル・サーバ１０２からのミラーリングＮＬＭまたは他の専門ソフトウェアのアンロード、やはりミラーリングされるより多くのローカル・サーバの追加、および／または、外部記憶ボリュームおよび／またはＲｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ）ユニットの形のリモート記憶装置の追加を含めることができる。しかし、最低限でも、適応に、通常は、少なくとも１つのローカル・ミラーリング・ユニットおよび少なくとも１つのリモート・ミラーリング・ユニットの追加が含まれ、このリモート・ミラーリング・ユニットは、本発明による動作のために互いにリンクされることが可能である。
【００２４】
適応の前および／または後に、ネットワーク１００を、ＬＡＮまたはＷＡＮあるいはインターネットまたはイントラネットの部分を含む他のネットワーク１０８に、ゲートウェイまたは類似する機構を介して接続することができ、これによって、より大きいネットワークが形成される。図示のネットワーク１００では、ローカル・サーバ１０２が、通信リンクまたはネットワーク信号線１１０によって、１つまたは複数のネットワーク・クライアント１１２に接続される。他の適当なネットワークに、マルチサーバ・ネットワークおよびピアツーピア・ネットワークが含まれる。特定のネットワーク内のサーバ１０２およびクライアント１１２は、ユニプロセッサ・マシン、マルチプロセッサ・マシン、またはクラスタ化プロセッサ・マシンとすることができる。サーバ１０２およびクライアント１１２のそれぞれに、ランダム・アクセス・メモリなどのアドレス可能記憶媒体が含まれる。
【００２５】
適当なネットワーク・クライアント１１２には、制限なしに、パーソナル・コンピュータ、ラップトップ機１１４、携帯情報端末および他のモバイル・デバイス、およびワークステーション１１６が含まれる。信号線１１０には、より線対、同軸ケーブル、または光ファイバ・ケーブル、電話回線、衛星回線、マイクロ波リレー、変調されたＡＣ電源線、ＲＦ接続、ネットワーク・リンク、ダイヤルアップ・リンク、赤外線リンクなどのポータブル・リンク、および／または当業者に既知の他のデータ伝送「ワイヤ」または通信リンクを含めることができる。リンク１１０は、従来の信号または新規の信号を実施することができ、具体的には、本明細書に記載のデータ・ミラーリング用の新規の一連のコマンドおよび／またはデータ構造を実施することができる。リモート・サーバ１０６は、普通のルート１０４を介して得るミラーリングされるデータを、外部ハード・ディスクおよび／またはＲＡＩＤサブシステム１１８などの接続された記憶手段に保管することができる。
【００２６】
［柔軟なミラーリング・ユニット・システムの例］
図２に、本発明によるシステム内の本発明を示す。前に述べた従来の手法と異なって、この図によるシステムは、リモート・サーバを必要としない。ローカル・サーバ２００またはなんらかの他のホスト２００が、ローカル・リンク２０２を介してローカル・ミラーリング・ユニット２０４と通信する。ローカル・ミラーリング・ユニット２０４は、ジャーニー・リンク２０６を介してリモート・ミラーリング・ユニット２０８と通信する。ローカル・ミラーリング・ユニットに、ローカル・サーバ２００へデータを事前アクノレッジするためのスプーフ・パケット・ジェネレータと、ミラーリングされたデータがリモート位置で保管される前にそのデータを保持する不揮発性データ・バッファ２１０を含めることができる。リモート・ミラーリング・ユニットは、ジャーニー・リンク２０６を介してローカル・ミラーリング・ユニット２０４から受け取ったミラーリングされるデータの宛先不揮発性記憶装置を有する。リモート・ミラーリング・ユニットは、１６ｋｍ（１０マイル）未満、少なくとも１６ｋｍ（１０マイル）、または少なくとも１６０ｋｍ（１００マイル）など、さまざまな距離だけローカル・サーバ２００から物理的に離すことができる。これらの距離は、単なる例である。というのは、本発明が、ジャーニー・リンク２０６を完全に活用することができ、本発明によるシステムが、固有の距離制限を有しないからである。個々のミラーリング・ユニットを、図２から１２に示された例示的システムでの柔軟性の例示に関して、また、その構成要素および動作全般に関して、下で詳細に説明する。
【００２７】
しかし、ローカル・ミラーリング・ユニット２０４のいくつかの実施形態に、ＳＣＳＩエミュレーション・ソフトウェアおよび／またはハードウェアが含まれ、ローカル・リンク２０２をＳＣＳＩ接続にすることができ、このＳＣＳＩ接続を介して、ローカル・ミラーリング・ユニット２０４が、ローカル・サーバ２００または他のホスト２００にとって、ＳＣＳＩディスクまたは他の普通のＳＣＳＩデバイスに見えることを注記することが役立つであろう。これは、ローカル・ミラーリング・ユニット２０４内で、より普通のイニシエータ・モードではなくターゲット・モードで動作しているＳＣＳＩホスト・アダプタを使用することによって達成することができる。そのようなターゲット・モードを有する適切なＳＣＳＩホスト・アダプタには、少なくともＡｄａｐｔｅｃ社の２９４０ＵＷアダプタおよびＱＬｏｇｉｃ社のＱＬＡ−１０４０アダプタが含まれる。類似する形で、ローカル・リンク２０２を、ファイバ・チャネル接続、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）接続、メインフレーム・チャネル・エクステンダ、Ｖ．３５  ＣＳＵ／ＤＳＵ接続、ＦｉｒｅＷｉｒｅ（ＩＥＥＥ  １３９４）接続、メモリ・タイプ（たとえば、ディスクではなく、ＡＳ／４００ミラー・メモリ）、ＩＤＥバス、ＰＣＭＣＩＡ接続、シリアル接続、イーサネット接続、Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）接続、または、ディスクおよび／またはＲｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ）サブシステムをサーバに接続する別の標準バスとすることができる。したがって、ミラーリングされるデータが、ジャーニー・リンク２０６を介してリモート位置に送られるのではなく単純に別のローカル・ディスクに送られるかのように、普通のミラーリング（別のローカル・ディスクへのコピーという意味での）ハードウェアおよび／またはソフトウェアを、ローカル・サーバ２００内で使用することができる。
【００２８】
前に述べた普通の手法の長距離リンクと異なって、ジャーニー・リンク２０６は、専用の私有遠隔通信リンクである必要がない。そのようなリンクは、いくつかの実施形態で使用することができるが、本発明は、プロトコルのルータビリティまたは非ルータビリティにかかわらずに、イーサネット、ＦＤＤＩ、Ｖ．３５、または他のデータリンク・プロトコル、インターネット・プロトコル（ＩＰ）または他のネットワーク・プロトコル、および／またはユーザ・データグラム・プロトコル（ＵＤＰ）、転送制御プロトコル（ＴＣＰ）、または他のトランスポート・プロトコルを使用する、ネットワークまたはインターネットなどの一連のネットワークを介して通信するミラーリング・ユニット２０４および２０８も提供する。したがって、望まれる場合に、２つのミラーリング・ユニット２０４および２０８を、数１０ｋｍまたは数百ｋｍだけ離すことができる。
【００２９】
ジャーニー・リンク２０６には、普通のリンク１０４およびデータ獲得ポイントとしてのスプーフィング・ローカル・ミラーリング・ユニット２０４を介して供給することができる。しかし、ジャーニー・リンク２０６は、普通のリンク１０４によって課せられることがしばしばである、広い帯域幅および低い待ち時間の要件を必ずしも課さない。たとえばＳＡＮと異なり、ジャーニー・リンク２０６を使用するシステムは、制限されない距離だけ離れたソースから宛先へ、ミラーリングされるデータを送信することができる。ジャーニー・リンク２０６は、通常はインターネットまたは広域ネットワークを横切る時に行うように、共用される帯域幅を提供することもできる。さらに、ジャーニー・リンク２０６および／またはミラーリング・ユニットは、発明的システムに、割込みおよび切断に関する比較的高い許容範囲という長所を提供する。
【００３０】
図示のリモート・ミラーリング・ユニット２０８は、大きいバッファ２１２を有する。その結果、リモート・ミラーリング・ユニット２０８は、ローカル・サーバ２００または他のホスト２００の完全なボリュームをバッファリングすることができる。いくつかの実施形態では、ローカル・ミラーリング・ユニット２０４にも、大きいバッファが含まれる。たとえば、一実施形態では、ローカル・サーバ２００のボリュームおよび大きいバッファ（ローカルおよびリモート）が、それぞれ、不揮発性記憶装置に１テラバイトまでのデータを保持することができる。このバッファリングは、たとえば、ローカル・ミラーリング・ユニット２０４またはリモート・ミラーリング・ユニット２０８内でＱＬｏｇｉｃ  ＱＬＡ−１０４０アダプタを使用して、実質的な修正の必要がない１テラバイトまでのデータを制御することによって、達成することができる。したがって、ローカル・サーバ２００の完全なボリューム・イメージを、ミラーリング・ユニット内のバッファに保管することができる。
【００３１】
追加のデータ回復能力のために、任意選択のローカル・ミラー２３０も作成することができ、これは、一般に、一貫性があり使用可能であるが必ずしも全体が最新ではないという意味で、「フル」ローカル・ミラーである。このローカル・ミラーリングは、さまざまな形で達成することができる。これには、実際に地理的にローカル・ホスト２００に近い「リモート」ディスク・サブシステムにデータをミラーリングするのに、第２のローカル・ミラーリング・ユニット２０４またはマルチポート式ローカル・ミラーリング・ユニット２０４の第２ポートを使用することと、ローカル・ミラーリング・ユニット２０４内でそのユニット２０４のディスク・エミュレーション層の下でデータを二股にわけ、これによって、ＳＣＳＩまたは類似するバスを介してローカルに接続されたディスク・サブシステムに送られる別のコピーを作成すること（第１のコピーは、ジャーニー・リンク２０６を介してリモート・ミラーリング・ユニットに送られる）と、ローカル・ミラーリング・ユニット２０４と共に他の形で普通のツールおよび技法を使用して、ローカル・ミラー２３０を作成し、維持することが、制限なしに含まれる。
【００３２】
ミラー２３０には、ハードウェア・エラーまたはソフトウェア・エラーの場合の回復を可能にするために、サーバ２００のコピーが含まれる。しかし、ローカル・ミラー２３０は、リモートではなくローカルなので、天災、社会不安、テロリストの攻撃、物理的破壊、および他の地理的に局所化されたサーバ２００への危険に対する実質的な保護を提供しない。したがって、ローカル・ミラー２３０は、ローカル・ミラー２３０に別のミラーリング・ユニット２０４が含まれるか、ローカル・ミラー２３０が他の形で本発明を実施する場合であっても、リモート・ミラーリングと同程度のデータ保護を提供しない。ローカル・ミラー２３０は、経路１０４などの普通のリンクまたは本発明による新規のリンクを含めることができる経路２３２によってミラーリング・ユニット２０４に接続される。ローカル・ミラー２３０は、他の図に明示的に図示されてはいないが、１つまたは複数のローカル・ミラーを、他の図に示されたシステムまたは本発明による他のシステムと共に使用することもできる。
【００３３】
たとえば、１つの手法では、Ｎｏｎｓｔｏｐ  Ｎｅｔｗｏｒｋｓ  Ｌｉｍｉｔｅｄ社の技術または他の技術を使用して、２つのサーバの間でミラーリングを行い、ローカル・ミラーリング・ユニットが、副サーバの唯一の（主）ディスク・サブシステムとして使用される。もう１つの手法では、ローカル・ミラーリング・ユニットをホスト２００用の唯一のディスク・サブシステムとて使用することによって、すべてのミラーリングをミラーリング・ユニットの対の内部にすることができ、ローカル・ミラー２３０が、主ディスクになり、リモート・ミラーが、唯一の真のミラーとして働く。この最後の手法は、より低い保証の構成であるが、より低いコストでより高い性能を提供することもできる。
【００３４】
図３は、ローカル・サーバ２００が、ローカル・リンク２０２を介してローカル・ミラーリング・ユニット２０４と通信するシステムを示す図である。ローカル・ミラーリング・ユニット２０４は、ジャーニー・リンク２０６を介してリモート・ミラーリング・ユニット３０８と通信する。ローカル・サーバ２００のボリューム全体からのデータを保持することができる大きい不揮発性バッファ２１２を有するリモート・ミラーリング・ユニット２０８と異なって、リモート・ミラーリング・ユニット３０８は、数ギガバイト、たとえば４ギガバイトだけを保持するバッファ３１０など、比較的小さい不揮発性バッファ３１０だけを有する。
【００３５】
しかし、図３によるシステムには、関連する不揮発性内部記憶装置または不揮発性外部記憶装置を有するリモート・サーバ３００が含まれる。これを例示するために、図３に、ある点でリモート・サーバ３００によって制御することができるＲＡＩＤユニット３１２が示されている。ＲＡＩＤユニット３１２は、コンピュータ３００の動作中にＲＡＩＤユニット３１２内の障害を発生したドライブを取り出し、交換できることを意味する「ホットスワップ可能」である。置換ドライブのファイル・システム構造および他のデータは、その後に、自動的に構築される。ＲＡＩＤユニット３１２は、いくつかの場合に、図３でＲＡＩＤユニット３１２からサーバ３００への矢印によって示されるように、サーバ３００の一部または、サーバ３００上の専用のミラーリング・ソフトウェアを含む手段などの普通の手段によってサーバ３００に接続されるとみなすことができる。
【００３６】
しかし、ＲＡＩＤユニット３１２を、下で説明し、図１４に示されているように、構成１４００の二重ホスト接続によってリモート・ミラーリング・ユニット３０８およびサーバ３００に接続することもできる。二重ホスト接続を用いると、ミラーリングだけに使用される受動リモート・サーバ３００、リモートＲＡＩＤユニット３１２、または他のリモート・ディスク・サブシステムと、読取要求をサービスするのに能動的に使用されるローカル・ミラーおよび／またはローカル・ホスト２００ディスクとを有する第１の「通常ミラーリング」状態から、リモートＲＡＩＤユニット３１２または他のリモート・ディスク・サブシステムでミラーリングされたデータからの読取要求をサービスする能動リモート・サーバ３００を有する第２の「回復」状態への切替が可能になる。
【００３７】
第１の（通常のミラーリング）状態では、リモート・ミラーリング・ユニット３０８が、たとえばイーサネットおよび／またはＴＣＰ／ＩＰ接続２０６を使用して、ローカル・ミラーリング・ユニット２０４からデータを受け取る。図２に関して注記したように、ローカル・リンク２０２は、ＳＣＳＩバス、ＵＳＢ、ファイバ・チャネル、または類似する接続とすることができる。リモート・ミラーリング・ユニット３０８は、リモート・リンク３０２およびリモート・ミラーリング・ユニット３０８を介してリモート・サーバ３００にホットスワップ可能ＲＡＩＤユニット３１２への後続の保管のためにデータを転送するか、二重ホスト接続１４００が使用されている場合にリモート・ミラーリング・ユニット３０８からＲＡＩＤユニット３１２に直接に、データを転送する。リモート・リンク３０２は、たとえばＳＣＳＩバス接続とすることができ、したがって、リモート・ミラーリング・ユニット３０８は、リモート・サーバ３００にとってたとえばＳＣＳＩディスクに見え、このＳＣＳＩディスクが、リモート・サーバ３００によってもう１つの「ディスク」すなわちＲＡＩＤユニット３１２にミラーリングされる。リモート・リンク３０２は、シリアル接続、イーサネット接続、ＦＤＤＩ接続、ＵＳＢ接続・ファイバ・チャネル接続、または他の非プロプラエタリ接続とすることもできる。
【００３８】
ローカル・ミラーリング・ユニット２０４は、リモート・ミラーリング・ユニットの小さいバッファ３１０に類似するか同一である（そこに保管される特定のデータ以外に関して）不揮発性バッファを有する。ローカル・サーバ２００からのデータは、ローカル・ミラーリング・ユニット２０４のバッファに事前アクノレッジされる。主サーバ２００に関する限り、第２の「ミラーリングされた」書込は、ローカルに発生したものである。実際には、ローカル・ミラーリング・ユニット２０４が、このデータを受け取り、このローカル・バッファに保管した。ローカル・ミラーリング・ユニット２０４は、ローカル・ミラーリング・ユニット２０４がジャーニー・リンク２０６を介してリモート・ミラーリング・ユニット３０８に安全にデータを送信できるまで、このセクタおよびトラック変更データ（または類似するブロック・レベル・データ）を保管する。ローカル・ミラーリング・ユニット２０４内のスマート・バッファに、ジャーニー・リンク２０６がローカルに処理できるものに関するすべてのデータが保管される。そのようなデータは、リモート・ミラーリング・ユニット３０８がリモート・サーバ３００に成功裡に書き込み、ローカル・ミラーリング・ユニット２０４にアクノレッジを送り返すまで、ローカル・ミラーリング・ユニット２０４内に保管される。このアクノレッジを受信した時に、ローカル・ミラーリング・ユニット２０４は、成功裡に送信されたセクタ／トラック／ブロック・データを、ローカル不揮発性バッファから除去する。普通のシステムと異なって、サーバ２００および３００の両方が、標準のファイル・システムおよびオペレーティング・システム・ソフトウェアと異なって、ＮＬＭまたは特にデータ・ミラーリングのために設計された他のソフトウェアを必ずしも必要としない。
【００３９】
図４に、図面で同一の符号の使用によって示されるように、上で述べた複数の構成要素を有するシステムを示す。しかし、図４のシステムでは、リモート・ミラーリング・ユニット４０８に、小さい不揮発性バッファ３１０と大きい不揮発性バッファの両方が含まれ、大きいバッファは、リモート・ミラーリング・ユニット４０８に直接に接続されるホットスワップ可能ＲＡＩＤユニット３１２として実施される。小さいバッファ３１０は、ジャーニー・リンク２０６を介して受け取られるデータのバッファリングに使用され、そのデータを、ローカル・ミラーリング・ユニット２０４にアクノレッジできるようにし、そのデータがリモート・ミラーリング・ユニット４０８によって大きいバッファ３１２に保管されるまでデータがバッファリングされる。リモート・サーバは不要である。
【００４０】
図５に、複数のローカル・サーバ２００が、リモート・ミラーリング・ユニット５０８に書き込むシステムを示す。この図および他所で、ローカル・サーバ２００への言及は、サーバでないホスト２００をも一般的に含むものとして理解されたい。すなわち、本発明は、ミラーリング・ユニット２０４に接続されるすべてのホスト・コンピュータ・システム２００のミラーリングに使用することができる。サーバは、適切なホスト２００の広く認識される例であるが、他の適切なホスト２００に、クラスタ、サーバでないコンピュータ、メインフレーム、および、ストレージ・アクセス・ネットワーク（ＳＡＮ）またはネットワーク接続ストレージ（ＮＡＳ）データ・ソースが含まれる。ローカル・サーバ２００または他のホスト２００は、１６ｋｍ（１０マイル）未満、少なくとも１６ｋｍ（１０マイル）、または少なくとも１６０ｋｍ（１００マイル）など、さまざまな距離だけ互いに物理的に離すことができる。この図の当のシステムでは、特定のシステム内の各ローカル・サーバ２００が、同一のオペレーティング・システムおよびファイル・システム・プラットフォームに頼るが、図５による異なるシステムが、異なるプラットフォームを使用することができる。たとえば、各サーバ２００を、そのようなシステムでＮｏｖｅｌｌ  ＮｅｔＷａｒｅサーバとすることができ、各サーバ２００を、別のそのようなシステムでＮＴファイル・システム（ＮＴＦＳ）を使用するＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＮＴサーバとすることができる。
【００４１】
システム内の各ホスト２００は、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、シリアル信号線、あるいは他の標準記憶サブシステム接続または他の周辺接続２０２によって、それ自体のローカル・ミラーリング・ユニット２０４に接続される。ローカル・ミラーリング・ユニット２０４は、ジャーニー・リンク２０６によって、単一のリモート・ミラーリング・ユニット５０８に接続される。リモート・ミラーリング・ユニット５０８は、ローカル・ミラーリング・ユニット２０４ごとに、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似するコントローラ・カードを有する。
【００４２】
各ローカル・ミラーリング・ユニット２０４からのデータは、リモート・ミラーリング・ユニット５０８内のＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似する接続によって、ＲＡＩＤユニットのグループ５１２内の個々のホットスワップ可能ＲＡＩＤ記憶ユニット３１２に直接に（すなわち、リモート・サーバを介さずに）転送することができる。ＲＡＩＤユニット３１２は、ジャーニー・リンク２０６への接続用のイーサネット・カードを含む部分など、リモート・ミラーリング・ユニット５０８の少なくとも一部に対して物理的に外部とすることができる。しかし、リモート・ミラーリング・ユニット５０８は、パッケージングではなく機能性によって定義される。具体的に言うと、ＲＡＩＤユニット３１２は、他の形で示されない限り（たとえば図１４の議論など）、リモート・ミラーリング・ユニット５０８の一部とみなされる。各ＲＡＩＤ記憶ユニット３１２は、リモート・ブート可能ボリュームを有し、データは、セクタ／トラックまたはブロックの形で書き込まれる。図示のリモート・ミラーリング・ユニット５０８には、ジャーニー・リンク２０６を介して受け取られたデータのアクノレッジおよびバッファリングを可能にするための小さいバッファ３１０も含まれる。
【００４３】
図６に、図５に示されたシステムに類似するが、リモート・ミラーリング・ユニット６０８が、外部ブート可能記憶ボリュームのグループ６１６内の外部ブート可能記憶ボリューム６１４に書き込むシステムを示す。同一のプラットフォームで実行中のローカル・サーバ２００が、実際にはローカル・ミラーリング・ユニット２０４である「ディスク」に書き込み、このローカル・ミラーリング・ユニット２０４が、そのデータをリモート・ミラーリング・ユニット６０８に書き込む。リモート・ミラーリング・ユニット６０８は、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似するコントローラ・カードと、ローカル・ミラーリング・ユニット２０４のそれぞれに対応するブート可能記憶ボリューム６１４を有する。各ローカル・ミラーリング・ユニット２０４からのデータは、リモート・ミラーリング・ユニット６０８から、ＳＣＳＩバスまたは他のデータ信号線を使用して、対応する記憶ボリューム６１４に直接に転送される。各ボリューム６１４は、リモート・ブート可能ボリュームであり、データは、セクタ／トラックまたはブロックの形で書き込まれる。
【００４４】
全般的に図６によるシステムの代替実施形態および他のシステムで、ミラーリングされたデータを対応する別々のディスク６１４（たとえば図６のように）または別々のＲＡＩＤユニット３１２（たとえば図５のように）に保持するのではなく、別々の区画を使用して、めいめいのローカル・サーバ２００のミラーリングされたデータを保持することができる。さまざまな多対１システムで、新しい接続が行われる時にそれ自体をｆｏｒｋするプロセスを始動し、ＩＰＣまたは他の機構を使用する複数のミラーリングの試みからボリューム・ミラーをロックすることが必要になる場合がある。
【００４５】
図７に、リモート・ミラーリング・ユニット７０８に、個々の外部記憶ボリューム６１４およびＲＡＩＤユニット３１２の両方が含まれるシステムを示す。ミラーリングされるデータは、リモート・ミラーリング・ユニット７０８によって、記憶サブシステム３１２および６１４の両方に保管されて、データが必要な時に使用可能になることの余分な保証が提供される。
【００４６】
図７には、複数のローカル・ミラーリング・ユニット２０４が、１つのリモート・ミラーリング・ユニット７０８に書き込み、それぞれ図５および図６に示されているように、ミラーリングされるデータが複数のリモート記憶ユニット３１２または６１４に分割されるのではなく、複数のローカル・サーバ２００のすべてのミラーリングされるデータが、リモート・ミラーリング・ユニット７０８に直接にマウントされる１つの大きい記憶ボリューム（さまざまな実施形態で、３１２または６１４もしくはその両方）に送られるシステムも図示されている。リモート・ミラーリング・ユニット７０８によって使用されるボリュームは、ローカル・ミラーリング・ユニット２０４ごとに１区画を有する。各区画は、リモート・ブート可能「ボリューム」を提供し、データは、通常通りに、セクタ／トラックまたはブロックの形で書き込まれる。
【００４７】
やはり図７に示された代替システムでは、ミラーリングされるデータが、リモート・ミラーリング・ユニット７０８に直接に接続された複数の記憶ユニットの間で分割され、所与の記憶ユニットが、所与のローカル・ミラーリング・ユニット２０４のミラーリングされるデータを保持する。しかし、ＲＡＩＤユニットだけ（図５）または外部ディスクだけ（図６）を使用するシステムとは異なって、外部ディスク６１４およびＲＡＩＤユニット３１２の混合が使用される。たとえば、外部ディスク６１４が、第１のローカル・ミラーリング・ユニット２０４からのデータを保持し、ＲＡＩＤユニット３１２が、第２のローカル・ミラーリング・ユニット２０４からのデータを保持する。そのようなシステムでは、リモート・ミラーリング・ユニット７０８が、各ローカル・ミラーリング・ユニット２０４に対応するＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似するコントローラ・カードを有し、各ローカル・ミラーリング・ユニット２０４からのデータが、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似する通信信号線を介して、個々の外部ホットスワップ可能ＲＡＩＤユニット３１２または外部ブート可能ドライブ６１４に直接に（サーバ３００などのサーバなしで）転送される。
【００４８】
図８に、図５に関して説明したシステムに似たシステムを示す。しかし、図８のシステムでは、ローカル・サーバ２００が、符号８２２、８２４、および８２６の存在によって示されるように、異なるプラットフォームに頼る。もちろん、この図または他の図によるシステムは、必ずしも、正確に３つのローカル・サーバ２００および対応するローカル・ミラーリング・ユニット２０４を有するのではなく、各対にサーバ２００および対応するローカル・ミラーリング・ユニット２０４が含まれる、複数の対を有するだけである。たとえば、図８による１つのシステムに、Ｎｏｖｅｌｌ  ＮｅｔＷａｒｅサーバ８２２と、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＮＴサーバ８２４が含まれるが、図８による別のシステムに、２つのＮｏｖｅｌｌ  ＮｅｔＷａｒｅサーバ８２２、８２６およびＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＮＴサーバ８２４が含まれる。
【００４９】
図９に、図５および図８に関して説明したシステムに似たシステムを示す。しかし、図５と異なって、ローカル・サーバ２００が、異なるプラットフォームに頼り、図８と異なって、リモート・ミラーリング・ユニットが、ＲＡＩＤユニット３１２のグループ５１２ではなく、外部ディスク６１４のグループ６１６を使用するユニット６０８である。
【００５０】
図１０に、図７に関して述べたシステムに似たシステムを示す。しかし、図１０によるシステムのローカル・サーバ２００は、異なるプラットフォームに頼る。図７と同様に、ローカル・ミラーリング・ユニット２０４を、いくつかのシステムで、区画または記憶ユニットにマッピングすることができる。区画にマッピングする時に、ローカル・ミラーリング・ユニット２０４を、ＲＡＩＤユニット３１２内の区画、外部ドライブ６１４内の区画、または外部ドライブ６１４にもミラーリングされるＲＡＩＤユニット３１２内の区画にマッピングすることができる。ローカル・ミラーリング・ユニット２０４を記憶ユニットにマッピングする時に、１つまたは複数のローカル・ミラーリング・ユニット２０４が、リモート・ミラーリング・ユニット７０８を介して対応する外部ドライブ６１４にデータを送ることができ、１つまたは複数の他のローカル・ミラーリング・ユニット２０４が、リモート・ミラーリング・ユニット７０８を介して対応するＲＡＩＤユニット３１２にデータを送る。
【００５１】
図１１に、データが複数のリモート位置にミラーリングされるシステムを示す。そのようなシステムは、図５から１０に「多対１」ミラーリング・システム（複数のローカル・サーバが１つのリモート宛先にミラーリングされる）が示されているが、図１１に「１対多」ミラーリング・システム（１つのローカル・サーバが複数のリモート宛先にミラーリングされる）が示されているという意味で、図５から１０に示されたシステムの対照物である。一般に、ローカル・ミラーリング・ユニット２０４は、すべてが同一のデータをミラーリングするが、複数のローカル・ミラーリング・ユニット２０４を使用することによって、少なくとも１つのジャーニー・リンク２０６を介するミラーリングを、所与のローカル・ミラーリング・ユニット２０４が使用不能である場合にも中断されずに継続できるようになる。ローカル・リンク２０２は、すべてが同一の接続タイプとすることができ、あるいは、異なる接続を使用することができる。たとえば、１つのローカル・リンク２０２をＳＣＳＩ接続とし、もう１つのローカル・リンク２０２を、ＵＳＢ接続とすることができる。ジャーニー・リンク２０６も、均一とするか変更することができる。同様に、リモート・ミラーリング・ユニットは、それぞれが同一の構成要素を有する（たとえば、それぞれがＲＡＩＤユニット３１２を有する）ものとするか、異なる位置の異なる構成要素を使用することができる。
【００５２】
図１２に、データがやはり複数のリモート位置にミラーリングされるという点で図１１に示されたシステムに似たシステムを示す。しかし、図１２のローカル・ミラーリング・ユニット２０４は、マルチポート・ミラーリング・ユニットである。すなわち、このミラーリング・ユニットは、普通のマルチポート・サーバの同時接続に似た形で、複数のジャーニー・リンク２０６に同時に接続することができる。マルチポート・ミラーリング・ユニット２０４は、ホスト２００からのミラー・データを、アクティブ接続２０６のそれぞれを介して送り、これによって、互いに数ｋｍ離れたものとすることができる複数のリモート位置にホスト２００をミラーリングするのを助ける。マルチポート・ローカル・ミラーリング・ユニット２０４は、１つのローカル・バッファだけを必要とし、他のシステムのミラーリング・ユニット２０４と同様に、任意選択として完全なローカル・ミラー２３０が含まれる。
【００５３】
［ミラーリング・ユニットについての追加情報］
ミラーリング・ユニットの構成要素および動作を、図２から１２に関して上で説明した。下で提供する追加情報の所与の部分は、必ずしも本発明によるすべてのシステム内のすべてのミラーリング・ユニットに関係しないが、この追加情報は、それでも、ミラーリング・ユニットが、データが正しくミラーリングされていることを保証する責任を負う人および企業にどのようにして高い柔軟性を提供するかを理解するのを助ける。
【００５４】
ミラーリング・ユニットの少なくとも一部は、Ｎｏｖｅｌｌ  ＮｅｔＷａｒｅおよび／またはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＮＴプラットフォームの下で動作する標準サーバ・ドライバを介する、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似する接続によって接続されたディスク・ドライブを信頼性のある形でエミュレートすることができる。他のオペレーティング・システムの下でのＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似するエミュレーションも提供することができる。
【００５５】
ローカル・ミラーリング・ユニットおよびリモート・ミラーリング・ユニットのそれぞれが、それに接続されたモニタ、キーボード、およびマウスを介する入出力をサポートするように構成されることが好ましい。一部のミラーリング・ユニットは、ネットワーク・アドレスを有し、そうでない場合には、ネットワーク管理者が、リモート・ワークステーション１１６上のウェブ・ブラウザまたは他の手段を介して、適応されたネットワーク１００上の特定のミラーリング・ユニットにアクセスできるようにする。
【００５６】
ミラーリング・ユニットは、シンプル・ネットワーク管理プロトコル（ＳＮＭＰ）対応であることが好ましい。ネットワーク管理者は、ローカルとリモートの両方のミラーリング・デバイスにリモート・アクセスすることができる。ミラーリング・ユニット２０４のソフトウェアが、モニタリング・ユーティリティへのインターフェースを提供する。具体的に言うと、各ローカル・ミラーリング・ユニット２０４は、ユニット２４０が、ローカル・サーバ２００への書込／読取の回数、各ローカル・サーバ２００の状況、各ローカル・サーバ２００の再起動／ウォーム・スタートの回数などを追跡し、必要な時にＳＮＭＰトラップを生成するという点で、ネットワーク・エージェントのように動作する。データの下記の部分も、ローカル・ミラーリング・ユニット２０４によって管理者に提供することができる：現在バッファ２１０内にあるブロックの数、バッファ２１０が満杯になり、かつ／またはある指定された閾値を超えて書き込まれる時の警告、サーバ２００が起動してから送信されたブロックの数、およびサーバ２００が起動してから受信されたブロックの数。
【００５７】
一部のローカルミラーリング・ユニット２０４は、増分ダイヤルアップ・オプションも有する。顧客が、ダイヤルアップ接続を用いるミラーリング・ユニット２０４を使用しており、常時接続することを望まない場合に、ユニット２０４は、指定された時刻にジャーニー・リンク２０６を介してデータを送信するオプションを提供する。また、ローカル・ミラーリング・ユニット２０４は、適応されたネットワーク１００またはジャーニー・リンク２０６の別の部分でのトラフィックが多い期間中にデータの送信を許可しない設定を有することができる。ローカル・ミラーリング・ユニット２０４内のバッファ２１０は、これらの非送信期間中にローカル・サーバ２００から受け取るデータをバッファリングするのに十分に大きいものでなければならない。
【００５８】
より一般的には、ローカル・ミラーリング・ユニット２０４は、データ転送速度、信頼性、および互換性に関して、高速ＲＡＩＤディスク・サブシステムの性能をサーバ２００上の既存のプラットフォームと一致させることが好ましい。主にソフトウェアでの実施形態が、これらの性能目標を満たす可能性が少ないので、ローカル・ミラーリング・ユニット２０４に、特殊目的のハードウェアが含まれることが好ましい。必要なファームウェアを含む適切なソフトウェアおよびハードウェアの設計および構成は、普通のミラーリング経路１０４と、本明細書で識別されるＳＣＳＩコントローラまたは類似するＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、または類似するコントローラと、バッファ２１０、２１２、３１０、ディスク６１４、ＲＡＩＤユニット３１２、およびこれらのインターフェースなどの個々に既知のサブシステムと、ＦｒｅｅＢＳＤドライバなどのソフトウェアと、イーサネットおよび個々に既知のネットワーク・インターフェース・カード（ＮＩＣ）と、イーサネットおよびＴＣＰ／ＩＰプロトコルなどのネットワーク・プロトコルと、本明細書で提供される説明および例と、当業者が現在または今後に入手可能な他のツールおよび技法とに特に注意して、当業者が達成することができる。
【００５９】
ローカル・ミラーリング・ユニット２０４への書込は、通常は、アクノレッジされ、ローカル・バッファ２１０に書き込まれなければならず、普通の経路１０４または別の経路を介して完全なローカル・ミラーリングされるボリューム２３０にも書き込むことができるが、そのようなローカル・ミラーリングは、図３から１２には明示的に図示されていない。性能のために、ローカル・ミラーリング・ユニット２０４またはローカル・サーバ２００もしくはその両方のＲＡＭキャッシュを介して書込をバッファリングすることが、一般に許容可能である。具体的に言うと、実施形態で、使用可能なハードウェアＲＡＩＤユニット３１２のキャッシュあるいは他のＳＣＳＩキャッシュ、ファイバ・チャネル・キャッシュ、ＵＳＢキャッシュまたは類似するキャッシュを利用することができる。ローカル・ミラーリング・ユニット２０４からの読取は、一般に、ローカル・ミラー２３０からの正しいデータを用いてサービスしなければならない。
【００６０】
ローカル・ミラーリング・ユニット２０４は、クラッシュまたはリブートあるいは他の種類のサービス中断の後にオンラインに戻った時に、そのローカル・バッファ２１０からリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８へのデータ送信を自動的に開始する。ローカル・ミラーリング・ユニット２０４は、ＳＣＳＩリセット、ファイバ・チャネル・リセット、ＵＳＢリセットまたは類似するリセットを発行してはならない。というのは、これによって、ホスト・マシン２００をクラッシュさせる可能性があるからである。ローカル・ミラーリング・ユニットのバッファ２１０に書き込まれたデータは、ネットワークまたはジャーニー・リンク２０６を介して、先入れ先出しの形でリモート・ミラーリング・ユニットに送信されなければならない。これは、ＴＣＰ／ＩＰプロトコルまたは別のジャーニー・リンク・プロトコルを使用して行うことができる。リモート・ミラーリング・ユニットが、完全で一貫性のあるミラーを維持し、したがって、リモート・ボリュームが、ミラー同期状況に無関係にいつでもオペレーティング・システムによって使用可能であり、マウント可能であることが好ましい。
【００６１】
少なくともＦｒｅｅＢＳＤベースのソフトウェアを使用する実施形態では、本質的なミラーリング・ハードウェアまたはミラーリング・ソフトウェアの障害がある場合のほかは、カーネル・パニックが、ローカル・ミラーリング・ユニット２０４で発生しないことが好ましい。ローカル・ミラーリング・ユニット２０４ソフトウェアの誤った構成が、システム・シャットダウンをもたらさず、ホスト・サーバ２００のどのような挙動ももたらさないことが好ましい。リブートなしでミラーリング・ユニット・ソフトウェアを再構成できることが好ましく、各ソフトウェア変更に、一意のバージョン番号が付随しなければならない。したがって、ソフトウェアは、ミラーリング・ユニットによるデータ処理を中断せずに、すべての初期化情報を読み取り、管理者が使用可能なシステム呼出しを介してそれ自体を構成することが好ましい。ホスト・サーバ２００が、中断されてはならない。ローカル・ミラーリング・ユニット２０４は、リモート・ミラーリング・ユニットがオンラインであるか否かにかかわらず、ネットワークまたは他のジャーニー・リンク２０６の帯域幅が使用可能であるか否かにかかわらず、ローカル・バッファ２１０が満杯でない限り、ホスト・システム２００からの書込を受け入れることが好ましい。
【００６２】
ローカル・バッファ２１０が満たされる場合に、ローカル・ミラーリング・ユニット２０４が、ローカル・ミラー２３０（存在する場合）の維持を継続することが好ましく、ローカル・バッファ２１０からデータの環状キューのデキューを継続することが好ましい。しかし、ローカル・ミラーリング・ユニット２０４は、ユーザ（通常は管理者）プロセスによってキューイングを再開するように指示されるまで、キューへの追加を停止することが好ましい。リブートではなくシステム呼出しによって、ユーザ空間プロセスがローカル・バッファ２１０のキューイングをディスエーブルでき、再イネーブルできることが好ましい。
【００６３】
ミラーリング・ユニットは、ネットワークまたは他のジャーニー・リンク２０６の帯域幅の消失および再接続を自動検出することが好ましい。たとえば、ローカル・ミラーリング・ユニットのイーサネット・ケーブルの切断および翌日の再接続は、ローカル・ミラーリング・ユニット２０４が切断されている間に蓄積されるデータ変更を保持するのに十分なスペースがローカル・バッファ２１０にある場合に、０データ消失をもたらし、ネットワーク・オペレータの側での介入を必要としないことが好ましい。
【００６４】
ミラーリング・ユニット内またはこれらのユニットに関連するモニタリング・ソフトウェアは、前のブートの後にシステムがクリーンにシャット・ダウンされたかどうかを判定し、その結果、モニタリング・ソフトウェアが、リモート・ミラーが同期はずれである可能性を判定できるようになることが好ましい。ローカル・ミラーリング・ユニット２０４は、停電の場合にできる限り少ないデータを失うことが好ましい。したがって、一部のミラーリング・ユニットに、無停電電源装置（ＵＰＳ）が含まれる。停電の場合に、ＲＡＭにバッファリングされた書込をローカル・ミラー（存在する場合に）および／またはローカル・バッファ２１０にフラッシュする時間があると仮定することができる。
【００６５】
一実施形態では、ミラーリング・ユニット・オペレーティング・システム（たとえばＦｒｅｅＢＳＤ）が、読取専用モードのハード・ディスクからブートして、ＦｒｅｅＢＳＤ自体のファイルシステムの問題を回避する。構成データは、より小さい区画に書き込まれ、ミラーリング・ユニット・ピアの同一の情報から、またはミラーリング・ユニットが構成データを失い、復元されるまでオフラインになることのＳＮＭＰ警告を送出することによってのいずれかで、復元することができる。警告は、ピア・ミラーリング・ユニットが到達可能でない場合に使用することができる。いくつかの実施形態では、たとえばバス・リセットを防ぐために、ディスク・ドライブがそれ自体で実行しないコントローラ・カード初期化ルーチンも防止される。また、ミラーリング・ユニット・バッファが満杯になる場合に、その書込を単純にアクノレッジし、ローカルにミラーリングすると同時に、バッファが満杯であり、リモート・ミラーがローカル・ミラーと同期していないことの警告を送ることが、よりよい可能性がある。
【００６６】
注記したように、特にＳＣＳＩハンドシェーク、ファイバ・チャネル・ハンドシェーク、ＵＳＢハンドシェークまたは類似するハンドシェークに関して、ホスト・システム２００を妨害せずに、ローカル・ミラーリング・ユニット２０４をコールドリブートすることが可能であることが好ましい。ローカル・ミラーリング・ユニットのバッファ２１０は、書込要求の順序を維持し、ローカル・ミラーリング・ユニット２０４によって受け取られたのと同一の順序で書込要求をリモート・ミラーリング・ユニットに送信して、常時データ一貫性を保つ。
【００６７】
リモート・ミラーリング・ユニットは、ＴＣＰプロトコル・データ・ユニット（本明細書でＴＣＰパケットとも称する）を、たとえばローカル・ミラーリング・ユニット２０４から受け取り、ディスク・サブシステム（外部ドライブ６１４またはＲＡＩＤユニット３１２など）に書き込み、ドライブが、ローカル・ミラー２３０がある場合に少なくとも論理的にブロックごとにローカル・ミラー２３０と同一であり、前の時のホスト２００ボリュームと同一であるようにする。ミラーリングされるデータは、古い場合があるが、一貫していなければならない。
【００６８】
データ回復のために、リモート・ミラーリング・ユニット・ソフトウェアは、ユーザ空間へのインターフェースを有し、その結果、ユーザ空間プログラムが、ミラーリング・ユニット・ソフトウェアによるリモート・ミラーの読取、書込、および／またはシークをディスエーブルまたは再イネーブルでき、同一チェーン上の第２のＳＣＳＩホストがリモート・ディスク・サブシステム（したがって、ミラーリングされたデータ）にアクセスできるようにすることが好ましい。リモート・サイトでは、リモート・ミラーリング・ユニットおよびバックアップ・ホスト・サーバが、共用ディスク・サブシステムに接続される。たとえば、リモート・ミラーリング・ユニットが、ＳＣＳＩ  ＩＤ６を使用することができ、回復に使用されるリモート・サーバが、ＳＣＳＩ  ＩＤ７を使用することができる。リモート・ミラーリング・ユニットがミラーリングを行っている間に、リモート・ホストは、共用ドライブをマウントされないままになる。データ回復に関して、切替の一部として、リモート・ミラーリング・ユニットが、共用ドライブへのアクセスを停止し、バックアップ・ホスト・サーバがそれをマウントすることができる。
【００６９】
リモート・ミラーリング・ユニットは、ローカル・ミラーリング・ユニット２０４から受け取ったブロック数をユーザ空間プログラムに報告することが好ましい。リモート・ミラーリング・ユニットは、ディスク・サブシステムへミラーリングし、ボリュームを、ローカル・ボリュームを作成したローカル・サーバ２００と同一のオペレーティング・システムを有するホストがマウントできるようにする。リモート・ミラーリング・ユニットが、論理ブロック番号Ｎへの書込の要求をローカル・ミラーリング・ユニット２０４から受け取る場合に、そのデータは、リモート・ミラーリング・ユニットのディスク・サブシステム３１２または６１４の論理ブロックＮに書き込まれなければならない。ローカル・ミラーリング・ユニット２０４からの書き込み要求は、データ一貫性を保つために、ローカル・ミラーリング・ユニット２０４によって要求が受け取られた順序でリモート・ミラーリング・ユニットのディスク・サブシステム３１２または６１４に書き込まれなければならない。
【００７０】
ジャーニー・リンク２０６内で、ローカル・ミラーリング・ユニット２０４とリモート・ミラーリング・ユニットの間の通信に、ＴＣＰプロトコルを使用することができる。というのは、ＴＣＰプロトコルが、エラー回復および伝送保証を特徴とするからである。リモート・ミラーリング・ユニット・ソフトウェアは、ＴＣＰサーバとして働き、ローカル・ミラーリング・ユニット２０４は、リモート・ユニットのクライアントとして働く。ネットワーク帯域幅または接続性の消失が、ローカル・ミラーリング・ユニット２０４またはリモート・ミラーリング・ユニットのどちらも中断させないことが好ましい。同様に、リモート位置でのデータ回復が、ローカル・ミラーリング・ユニット２０４を中断させないことが好ましい。ローカル・ミラーリング・ユニット２０４とリモート・ミラーリング・ユニットの間の接続が、タイム・アウトになるか他の形で壊される場合に、ローカル・ミラーリング・ユニット２０４が、接続が再確立されるまで再接続を試みることが好ましい。その後、ローカル・ミラーリング・ユニット２０４が、中断したミラー・データの送信を継続するか、他の形で普通の動作を再開することが好ましい。
【００７１】
発明的ミラーリング・ユニットは、発明的ミラーリング・ユニットが、ＦｒｅｅＢＳＤ  ＵＮＩＸオペレーティング・システムに基づく修正されたオペレーティング・システムを実行するという点で、元のオフーサイトサーバ製品より「インテリジェント」である。１つの修正に、ＱＬｏｇｉｃ  ＳＣＳＩコントローラのドライバを変更して、そのカードがホストではなくＳＣＳＩターゲットとして働くようにし、したがって、そのコントローラがディスク・ドライブをエミュレートすることが含まれ、他のコントローラも、適切なドライバと共に使用することができる。ブート・プロセスも修正されて、ログイン・プロンプトの代わりにミラーリング・ユニット構成ユーティリティがコンソールに示され、カーネルが再コンパイルされた。ソースでは、各ミラーリング・ユニット２０４が、ホスト・サーバ２００と完全に独立に動作できるようにするオペレーティング・システムを実行している。その結果として、提供される柔軟なミラーリング特性の１つが、ミラーリング・ユニット２０４が、ホスト・サーバ２００上の初期化または接続ソフトウェアを必要としないことである（元のオフーサイトサーバ製品では、このソフトウェアが、Ｖｉｎｃａ  ＮＬＭの形であった）。
【００７２】
その代わりに、ミラーリング・ユニット２０４のオペレーティング・システムが、ＳＣＳＩまたは他の標準ディスクもしくはデータ獲得ポイントをエミュレートする。したがって、ミラーリング・ユニット２０４は、たとえば、少なくともＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ９５、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ９８、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＮＴ、Ｎｏｖｅｌｌ  ＮｅｔＷａｒｅ、ＦｒｅｅＢＳＤ、およびＬｉｎｕｘオペレーティング・システムを含む、ＳＣＳＩをサポートするすべてのオペレーティング・システムの下で、ミラーリングされたＳＣＳＩディスクとしてマウントすることができる。ディスク・エミュレーションは、ディスク読取およびディスク書込に加えて、ディスク・フォーマット、ディスク区画作成、スキャンディスクなどのディスク一貫性検査などのサーバ２００要求の処理を含めて、すべての標準ディスク動作を実行できる（少なくともサーバ２００の展望から）点まで実行されることが好ましい。
【００７３】
本発明によるシステムは、フォールト・トレランスのために完全にミラーリングされるボリューム２３０をローカルに維持することもできる。このミラーリング動作は、ミラーリング・ユニット２０４内のソフトウェアのエミュレーション層の下でデータを二股にする（または２回の書込を行う）ことによって行われるので、ミラーリング・ユニット２０４は、シーケンシャル・データ変更バッファと共にこのローカル・ボリューム２３０を維持することができる。これによって、ミラーリング・ユニット２０４が、過度の待ち時間なしでサーバ２００によるローカル読取をサービスできるようになり、これによって、システムが、ディスク・ハンディキャップおよびスプリットシーク・ソフトウェアなしで動作できるようになり、潜在的なソフトウェア互換性の問題が除去される。これによって、発明的システムが、ジャーニー・リンク２０６を介して進むのではなく、ローカル・ディスク・ミラーリングの下でサーバ２００のローカル・ディスクにデータをミラーリングすることも可能になる。さらに、ローカル・ミラー２３０が維持される場合には、ローカル・ミラーリング・ユニット２０４に、ホスト２００に書込を事前アクノレッジするためのスプーフ・ジェネレータを含める必要がない。というのは、ローカル・ミラー２３０が、ジャーニー・リンク２０６を介するミラーリングされるデータの送信に関連する遅延およびリスクの対象ではないからである。
【００７４】
本発明によるミラーリング・ユニットには、通常は、オペレーティング・システム・ソフトウェアが含まれる。したがって、少なくともいくつかのミラーリング・ユニットが、複数の「ホスト」アプリケーションを実行して、獲得したミラーリングされるデータを操作することができる。このシステムを、ドライバおよび／または他のアプリケーション・ソフトウェアおよび／またはハードウェアを使用して、特定の環境での要件を満たすためにスケール・アップまたはスケール・ダウンすることもできる。たとえば、プロセスを、複数のプロセッサ、ＳＣＳＩカード、および／または他の「インテリジェント」デバイスにまたがって分散させて、より多くのアクティビティおよび作業負荷を処理することができる。同様に、システムをスケールダウンして、コストを減らしながらより低い性能要件の必要を満たすことができる。アプリケーション・ソフトウェアを用いて、ローカル・ミラーリング・ユニット２０４が、独立のインテリジェント・ディスク・サブシステムとして動作することができ、あるいは、ローカル・フォールト・トレランスのフェールオーバとして、ホスト２００オペレーティング・システムのエミュレーションを実行することができる。ローカル・ディスク・ボリューム２３０は、ホスト２００ディスク・サブシステムがクラッシュした場合に、ローカル・フォールト・トレランスのためのローカルにミラーリングされた置換として働くことができる。
【００７５】
このシステムは、部分的に、データを維持し、先入れ先出しに基づいてデータを送るインテリジェント・バッファ２１０によって、リモート位置で一貫性および可用性を維持する。この形で、データ・ブロックが、ローカル・ミラーリング・ユニット２０４でエミュレーション層を介して受け取られた正確な順序で、リモート位置に送信される。シーケンス番号および／またはタイムスタンプも使用することができる。というのは、パケット化されたデータが、必ずしも送信されたのと同一の順序で宛先に到着しないからである。
【００７６】
いくつかの実施形態で、シャットダウンの場合にデータを保護するために、環状バッファおよび他の手段と共に下記の手法が使用される。ディスク・ターゲット・エミュレータとして使用されるＱＬｏｇｉｃカードのほかに、ローカル・ミラーリング・ユニットが、ローカルＳＣＳＩディスク・コントローラを介して接続された２つのディスク・システムを有する。一方のディスクに、ホスト・オペレーティング・システム（たとえばＦｒｅｅＢＳＤ  ３．１）と、関連するユーティリティおよびミラーリング・ユニット管理ソフトウェアが含まれる。このディスクは、バッファ２１０ディスクとしても働く。ミラーリング・ユニットに接続される他方のディスク・システムは、少なくとも、ミラーリングされるホスト２００ディスクと同程度の大きさであり、ホスト２００ディスクのローカル・ミラー３２０として働く。
【００７７】
ＳＣＳＩデータが、ＱＬｏｇｉｃカードから読み出され、読取要求または書込要求としてカーネル内で評価される。ＱＬｏｇｉｃカードから来る読取要求は、ローカル・ミラー・ディスク２３０を使用して満足され、ネットワーク２０６を介して送られないことが好ましい。書込コマンドは、ローカル・ミラー・ディスク２３０に直接にコピーされ、できる限り早くホスト・システム２００にアクノレッジされ（必ずしも事前アクノレッジではない）、バッファ・ディスクまたは不揮発性ＲＡＭの環状キューに追加される。
【００７８】
ブロックが環状キューに書き込まれるたびに、実際には２つのブロックが、シーケンシャルに書き込まれ、一方のブロックは、送信される実際のデータ・ブロックであり、もう一方は、おそらくはＬＢＮ（論理ブロック番号）などの他のデータを伴う、キューの現在の末尾ポインタのタイムスタンプである。この第２ブロックが、いわゆるメタデータ・ブロックである。この手法は、スペース効率が良くはないが、キュー・ポインタを維持するのに必要なディスク書込の数が減る。キュー・ポインタは、少なくともそれらのコピー、およびおそらくは環状キュー全体を、不揮発性ＲＡＭが使用可能な場合にその不揮発性ＲＡＭ内で保持することによっても維持することができる。スペースと時間の両方を節約する方法が、環状バッファを一時に大きな塊で書き込み、書込を実行するのに十分に蓄積されるまで、メモリ内でブロックをバッファリングすることである。これによって、メタデータ・ブロックを多数のデータ・ブロックに使用できるようになり、ディスク書込動作の数が減り、ディスク・スペースが節約される。
【００７９】
システムのシャットダウンおよび再起動の場合に、キューの先頭は、メタデータ・セグメント内で最新のタイムスタンプを有するブロックを検索し、そのメタデータ・セグメントを使用して末尾ポインタを突き止めることによって見つけられる。これは、たとえば、バイナリ・サーチを実行することによって行うことができる。バッファ実施形態は、環状なので、送信されたブロックを物理的にバッファから除去する（すなわち、削除するか０にする）必要はなく、末尾ポインタを増分することによって、効果的にこれが行われる。バッファ満杯状態は、先頭ポインタが末尾ポインタより１つ小さい時に検出される。ポインタは、環状バッファ内の位置を参照し、バッファ自体の中のデータを参照しない（すなわち、バッファはリンク・リストではなく配列である）。
【００８０】
６４ビット・タイムスタンプを保持する必要がない可能性がある。というのは、最新の秒を有することが、システム・シャットダウンの前に最後に書き込まれたブロックを判定するのに十分である可能性があるからである。たとえば、４つのブロックが、同一の秒に書き込まれ、同一のタイムスタンプを有すると仮定する。この場合に、タイムスタンプによる最後のブロックは、これが順序付きのキューなので、最後に書き込まれたブロックである。タイムスタンプが、計算的に高価にすぎる場合には、単純に増分されるカウンタで十分である可能性があるが、これは、２０３８年の前にロールオーバーする可能性がある。キュー・バッファ・サイズは、エンド・ユーザのデータ変更速度およびネットワーク２０６機能休止に抵抗するために顧客が必要とする時間の長さに応じて変更される。キュー・バッファは、数百メガバイト程度に小さくすることができ、あるいは、ミラーリングされるホスト・ボリュームと同程度に大きくすることができる。バッファの最小サイズおよび最大サイズには、固有の制限がなく、高いデータ変更速度およびジャーニー・リンク２０６の頻繁な長い中断が予想される場合には、バッファを、ミラーリングされるホスト・ボリュームより大きくする必要が生じる場合がある。
【００８１】
ユーザ空間またはシステム空間で動作することができる別のプロセスが、環状キューからブロックを読み取り、ネットワーク２０６を介してリモート・ミラーリング・ユニットに送る。この送信プロセスは、送信プロセスの現在のポインタ位置についてキューイング・プロセスに時々知らせることができ、タイムスタンプを調べて、キューが空である時を判定することができる。これは、メタデータに保管される末尾ポインタが多少古い場合に、よいことになる可能性がある。というのは、再送信数がシステム再起動の場合に過大なサイズにならないと仮定して、最悪の場合に、システムが既に送信した複数のブロックを再送信することになるからである。送信プロセスが、サーバ始動以降のブロック数も判定できることが好ましい。いくつかの場合に、バッファが、ホスト・ボリューム全体をバッファリングできないと仮定することができる。「害をなさない」という哲学の下で、ＳＣＳＩバスを低速化し、既に満杯のキューにおさまらないデータを単純にダンプするという危険を犯さず、ユーザ空間モニタリング・プロセスにこのイベントについて知らせることがよりよいはずである。
【００８２】
再送信されるブロックの数を減らすことを試みるために、システムは、ローカル・ミラーに対する書込を検査し、それらが実際に異なる場合に限って環状バッファに追加すると同時に、遅延書込の問題を回避することができる。これは、ディスク上のＬＢＮごとにチェックサムのハッシュ・テーブルを維持することによって達成される。トレードオフの１つが、チェックサムを計算するプロセッサ時間およびメモリと、追加のディスク動作である。
【００８３】
［一般的な方法（Ｍｅｔｈｏｄｓ  Ｇｅｎｅｒａｌｌｙ）］
図１３および１５に、リモート・データ・ミラーリングの、本発明の方法を示す。いくつかの方法に、ミラーリング・ユニットをインストールするステップが含まれ、便宜上、これらのステップを、インストール・ステップ１３３０内のステップとして集合的に識別する。たとえば、システム・インテグレータ、ミラーリング機器ベンダ、および管理者が、図２から１２のどれかに示されたものなどのシステムをインストールする時に、ステップ１３００内に示されたステップの一部またはすべてを実行するライセンスを得ることができる。本発明の他の方法には、データを１つまたは複数のミラーリング・ユニットに送信するステップが含まれ、便宜上、これらのステップを、送信ステップ１３０２内のステップとして集合的に識別する。これらの送信ステップは、インストール・ステップ１３００の一部としてインストーラによってテスト・データを用いてライセンスの下で実行することができるが、これらは、本発明によるシステムの正規のユーザの命令で、ミッション・クリティカル・データを用いて日常的に実行することもできる。
【００８４】
接続ステップ１３０４中に、少なくとも１つのサーバ２００が、少なくとも１つのローカル・ミラーリング・ユニット２０４に接続される。上で述べたように、この接続は、ＳＣＳＩバス、ファイバ・チャネル接続、ＵＳＢ接続、または他の標準ディスク・サブシステム・バスの形とすることができる。１つのローカル・ミラーリング・ユニット２０４が、ディスク・サブシステムをエミュレートするので、ステップ１３０４中のそれの接続は、基本的に、少なくともサーバ２００の観点から、サーバ２００への普通のディスク・サブシステムの接続と同一である。具体的に言うと、特殊なミラーリングＮＬＭまたは他のミラーリング・ソフトウェアのインストールが、不要である。
【００８５】
接続ステップ１３０６中に、少なくとも１つのローカル・ミラーリング・ユニット２０４が、少なくとも１つの対応するジャーニー・リンク２０６に接続される。状況に応じて、このステップに、さまざまな動作を含めることができる。たとえば、ジャーニー・リンク２０６に、ローカル・エリア・ネットワークが含まれる場合に、ローカル・ミラーリング・ユニット２０４を、他のネットワーク・ノードのようにそのネットワークに接続することができ、ＳＮＭＰサポートも構成することができる。ジャーニー・リンク２０６に、ローカル・ミラーリング・ユニット２０４からのダイヤルアップ接続が含まれる場合には、ダイヤルアップ・パラメータを構成する。同様に、ジャーニー・リンク２０６に、Ｔ１回線などの専用私有遠隔通信回線が含まれる場合には、よく知られた動作が、接続を行うために実行される。
【００８６】
接続ステップ１３０８中に、少なくとも１つのリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８が、少なくとも１つの対応するジャーニー・リンク２０６に接続される。これは、ステップ１３０６中のローカル・ミラーリング・ユニット２０４の接続と全般的に同一の形で達成することができる。しかし、リモート・ミラーリング・ユニットが、所与の実施形態でＴＣＰサーバとして働く時には、ローカル・ミラーリング・ユニット２０４が、リモート・ミラーリング・ユニットのクライアントとして働く。したがって、そのような実施形態では、接続ステップ１３０６で、ＴＣＰクライアントが接続され、接続ステップ１３０８で、ＴＣＰサーバが接続される。
【００８７】
テスト・ステップ１３１０中に、ミラーリング・ユニットに対してテストが実行される。このテストには、たとえば、ローカル・ミラーリング・ユニット２０４のスループット性能の、ＲＡＩＤユニットの性能との比較と、リモート・サイトからローカル・サイトへのデータの再ミラーリングと、ローカル・ミラーリング・ユニット２０４への不正な構成情報の入力およびその情報の訂正と、ローカル・ミラーリング・ユニット２０４のリブートと、ジャーニー・リンク２０６の切断と、ローカル・ミラーリング・ユニット２０４への電力の中断と、リモート・ミラーリング・ユニットへの電力の中断と、ローカル・ミラーリング・ユニット２０４のバッファ２１０のオーバーフローと、他のテストを含めることができる。具体的に、制限なしに、テスト・ステップ１３１０に、本文書の「Ｔｅｓｔ  Ｓｕｉｔｅ」セクションに記載のテストのうちの１つまたは複数の実行を含めることができる。テスト１３１０では、下でステップ１３０２に関して説明するデータ送信を用いることもできるが、テストは、例示を明瞭にするために、図１３で別のステップとして示した。
【００８８】
送信ステップ１３０２には、サーバ２００から標準バスを介してローカル・ミラーリング・ユニット２０４にデータを送信する送信ステップ１３１２を含めることができる。これが可能であるのは、本発明が、普通の経路１０４と異なって、ディスクまたはＲＡＩＤサブシステムをエミュレートするミラーリング・ユニットを提供するからである。
【００８９】
送信ステップ１３１４中に、ミラーリングされるデータを、ジャーニー・リンク２０６を介して送信する。注記したように、これは、普通の経路１０４の場合のように専用リンクを用いて行うことができるが、ローカル・エリア・ネットワークおよび／またはインターネットなどの関連する普通のネットワーキング・インフラストラクチャを含めて、イーサネットおよび／またはＴＣＰおよび／または他のオープン標準プロトコルなどの標準プロトコルを使用して行うこともできる。
【００９０】
いくつかの実施形態で、ミラーリングされるデータに、ローカル・ミラーリング・ユニット２０４がタイムスタンプを付けて、データのブロックがミラーリングされたシーケンスのレコードを維持し、データを特定の時点に結び付ける。これは、ミラーリングされたボリュームの最新のコピーを単純に保持するのではなく、ミラーリングされたボリュームの１つまたは複数のスナップショットと、そのボリュームに対するセクタ／トラック／ブロック・レベルでの増分変更を保持するのに十分に大きい、リモートおよび／またはローカルのデータ記憶装置に結合される。好ましい実施形態では、１つのスナップショットだけが必要である。単一のスナップショットが、ベースラインを提供し、後続の変更が、ジャーナリングされ、その結果、所望の点（ジャーナリング粒度の対象）でのボリュームの状態を回復できるようになる。ジャーナルは、任意の大きさとし、それを保持する必要に応じて追加の記憶スペースを追加されるものとすることができ、あるいは、ある固定されたサイズのＦＩＦＯ環状バッファ内に保持し、ジャーナル・バッファが最初に満たされた後に、古いジャーナル・エントリが新しいエントリによって上書きされるものとすることができる。より一般的には、適当な再ミラーリング・ソフトウェアとスナップショットおよび（必要な場合に）増分変更を使用して、後に、指定された以前の時刻に存在した、ミラーリングされたディスク・ボリュームを再構成することができる。
【００９１】
送信ステップ１３１６中に、ミラーリングされるデータが、サーバレス・リモート・ミラーリング・ユニットに送信される。この構成は、たとえば図２に示されている。リモート・ミラーリング・ユニットは、普通のサーバに共通するハードウェアおよび機能能力を有するが、普通のサーバではない。サーバは、ミラーリング・ユニットより一般的な機能性を提供する。ミラーリング・ユニットは、実質的に連続した、ほぼリアルタイムのリモート・データ・ミラーリングの効果的提供に焦点を合わせたものである。リモート・ミラーリング・ユニットは、ジャーニー・リンク２０６を介するデータの獲得に関してはリモート・ミラーリング・サーバのように振る舞うが、それ以外の点では、マウントされたディスクに非常に似ている。具体的に言うと、リモート・ミラーリング・ユニットは、副サーバが接続される場合に、副サーバに関するディスクまたはＲＡＩＤユニットのように振る舞う。リモート・ミラーリング・ユニットが、必要になった場合にジャーナル・リンク２０６を介してローカル・サーバ２００へすべてのデータを再ミラーリングするために、副サーバは必要でない。
【００９２】
データが、ローカル・ミラーリング・ユニット２０４から宛先のリモート・ミラーリング・ユニットに送信された後に、リモート・ミラーリング・ユニットが、さまざまなことを行うことができる。たとえば、リモート・ミラーリング・ユニットが、受信したデータ・パケットを、単一の外部ディスク６１４に書き出されるデータ・ブロックに単純に変換することができる。リモート・ミラーリング・ユニットは、これらのデータ・パケットをディスク・ブロックに変換し、内部ディスク・サブシステムおよび／またはディスク区画に書き込むことができる。リモート・ミラーリング・ユニットは、パケット・データを受け取り、ディスク・データ・ブロックに変換し、内部ストライピング（ＲＡＩＤ）ソフトウェアを使用して「非インテリジェント」ディスク・サブシステムの複数のディスクにまたがってデータをストライピングする外部データ・サブシステムの形のＲＡＩＤサブシステム３１２に書き込むことができる。パケットからディスク・ブロック・データからストライピングされた（ＲＡＩＤ）データへのこの同一の変換を、外部「非インテリジェント」ディスク・サブシステムへの保管を用いる、ハードウェア・コントローラおよび関連するドライバを介して行うこともできる。リモート・ミラーリング・ユニットは、外部インテリジェントＲＡＩＤサブシステム３１２にも書き込むことができ、ディスク・ブロックは、データ・ストリームでディスク・サブシステムに書き込まれ、インテリジェントＲＡＩＤサブシステムによってストライピングされる。
【００９３】
受け取ったデータを即座にリモート・ミラー３１２または６１４に書き込むのではなく、リモート・ミラーリング・ユニットは、データをまずリモート・バッファに書き込み、その後、データのあるタイプの「署名」（チェックサムまたは巡回冗長検査値など）を伴うＡＣＫをローカル・ミラーリング・ユニットに送る。ローカル・ミラーリング・ユニットは、データのＡＣＫ−ＡＣＫまたはＮＡＫ−ＡＣＫのいずれか（署名の検証に応じて）を行い、ローカル・ミラーリング・ユニットからＡＣＫ−ＡＣＫを受信する時に限って、リモート・ミラーリング・ユニットが、リモート・バッファからリモート・ミラーへデータをコミットする。そのような実施形態では、リモート・ミラーリング・ユニットは、データだけを受け取るのではなく、ローカル・ミラーリング・ユニットから元の署名も受け取る場合に、元の署名が正しく検証されない場合に元のデータ送信をＮＡＫする。
【００９４】
より一般的には、データをＡＣＫするさまざまな手法が可能である。たとえば、リモート・ミラーリング・ユニットとローカル・ミラーリング・ユニットを、一方が他方のサブシステムであるのではなく、ピアとみなすことができる。この場合に、リモート・ミラーリング・ユニット側で、ＡＣＫが、リモート・ミラー・ディスク自体から（おそらくはそのキャッシュから）少しずつ入り、ローカル・ミラーリング・ユニット側で、ＡＣＫが、ローカル・ミラー・ディスク自体から（おそらくはそのキャッシュから）少しずつ入るが、ローカル・ミラーリング・ユニット側では、ＡＣＫが、リモート・ミラーリング・ユニットからは不要であり、ホストにＡＣＫする前にジャーニー・リンクのローカル端からのみ必要である。ローカル・ミラーリング・ユニット側で、ローカル・バッファからブロックを削除する前にリモート・ミラーリング・ユニットからのＡＣＫを待つことが、慎重ではあるが、これは、ホストにＡＣＫしてからかなり後に行うことができる。
【００９５】
少なくとも１つの副サーバ３００がシステムに存在する場合に、追加ステップが可能である。たとえば、リモート・ミラーリング・ユニットが、サーバのネットワーク・オペレーティング・システムを介してリモート・サーバ３００に直接にデータを中継することができる。このオペレーティング・システムは、能動状態または受動状態とすることができる。どちらの場合でも、接続３０２を介して受信されるデータを、サーバ３００のオペレーティング・システムを介して内部ローカル・ディスク・サブシステムに書き込むことができる。この手法は、リモート位置のオペレーティング・システムごとに特定のソフトウェアを必要とする。リモート・ミラーリング・ユニットは、インターネット・ベースのデータ・ウィンドウを使用して、リモート・ミラーリング・ユニットと副サーバ３００の間でデータを送受することもできる。このデータ・ウィンドウは、ブラウザ・インターフェースへのプラグイン拡張を介するか、Ｍｉｃｒｏｓｏｆｔ  ＡｃｔｉｖｅＸ拡張など、コア・オペレーティング・システムへのインターネット・コンポーネント拡張を介するものとすることができる。
【００９６】
上のどのシナリオでも、ローカル・ミラーリング・ユニットは、ミラーリングされるデータを１つのリモート・ミラーリング・ユニットまたは複数のリモート・ミラーリング・ユニットに中継するのに十分に「インテリジェント」とすることができる。図１２に示されたものなどの１対多システムは、めいめいのジャーニー・リンク２０６によって単一のマルチポート式ローカル・ミラーリング・ユニット２０４に接続される３つのリモート・ミラーリング・ユニットを有し、マルチポート・ミラーリング・ユニットを、本発明による他のシステムで、単独でまたは単一ポート・ミラーリング・ユニットと組み合わせて、同様に使用することができる。所与のシステム内のリモート・ミラーリング・ユニットの数に、ハード制限はない。
【００９７】
リモート・ミラーリング・ユニットは、ミラーリングされるデータを、さらなるフォールト・トレランスのために、近くのミラーリング・ユニットおよび／または別のより離れたリモート・ミラーリング・ユニットに中継することもできる。リモート・ミラーリング・ユニットは、データ・ミラーの継続的一貫性および完全さに適当に注意を払いながら、負荷を分配し、フォールト・トレランスを提供するために、複数の続くリモート・ミラーリング・ユニットの間で負荷平衡を行うヘッド・エンドとして働くことができる。Ｎ個のリモート・ミラーリング・ユニットを、互いに接続し、同一のネットワーク・アドレスまたはドメイン・ネーム・システム（ＤＮＳ）名を維持して、さらなるフォールト・トレランスを提供することができる。これらのさまざまな手法の組合せも、使用することができる。
【００９８】
リモート・ミラーリング・ユニットに接続される１つまたは複数の別々の完全に独立のリモート・ディスク・サブシステムを有する実施形態では、リモート・ミラーリング・ユニットが、ＳＣＳＩマスタ（たとえば）として振る舞い、データをリモート・ディスクに書き出す。副サーバ３００が存在する場合には、このサーバ３００は、リモート・ミラーリング・ユニットとＳＣＳＩチェーン内のリモート・ディスク・サブシステムの両方に従う。データ・ミラーリング中に、副サーバ３００は、通常は、スレーブ状態および／または受動状態である。ミラーリングされるローカル・サーバ２００の故障の場合に、リモート・サーバ３００が、外部ボリュームをマウントし、ＳＣＳＩマスタになる。それと同時に、リモート・ミラーリング・ユニットが、そのリモート・ディスク・サブシステムドライバをマウント解除し、受動（スレーブ）状態に入る。
【００９９】
具体的に言うと、これは、「二重ホスト」接続１４００を含む、図１４に示されたものに類似する構成を使用して達成することができる。多くの通常の手法の下で、唯一のホスト・アダプタが、ＳＣＳＩチェーン上で、通常はＬＵＮ  ７として存在する。パワー・アップまたはリセット中に、ホストが、他のすべてのＬＵＮをサイクルして、何が接続されているかを判定する。システムが、二重ホスト対応アダプタを使用する場合に、第２ホストが、通常はＬＵＮ  ６に存在し、ＬＵＮ０から５までだけをリセットし、質問する。したがって、ＬＵＮ  ７が主と見なされ、ＬＵＮ  ６が副と見なされる。どの場合でも、両方のホストが、図１４に示されているように接続された時に、より低い順序のターゲットに「アクセス」できる。
【０１００】
二重ホスト接続自体は、新しいものではない。具体的に言うと、ＢｕｓＬｏｇｉｃ  ＥＩＳＡカードおよびＮｏｖｅｌｌ  ＮｅｔＷａｒｅサーバを用いる二重ホスト接続が既知である。しかし、Ｎｏｖｅｌｌサーバが提出されたデマンドに基づいてそのファイル割振りテーブルをリフレッシュすることができないので、この場合に二重ホスト接続によって提供される能力の意義が失われる。二重ホスト接続に関する全般的な情報は、オンラインＳＣＳＩ  ＦＡＱを含むソースから公衆が入手可能である。二重ホスト接続が使用されない場合には、リモート・サーバ３００が、リモート・ミラーリング・ユニットから直接にミラーリングされたデータを受け取り、可能な後の使用のためにそれを保管できるように、リモート・サーバ３００が、ドライバ、ＮＬＭ、および／または他のミラーリング専用のソフトウェアを必要とする。
【０１０１】
二重ホスト接続１４００を使用する本発明の実施形態では、リモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８が、切替を実行できるようにするために停止を指示される時まで、ＲＡＩＤユニット３１２または他のリモート・ディスク・サブシステムを制御する。この時間中に、リモート・ミラーリング・ユニットが、データ・ミラーリングを実行し、ＳＣＳＩマスタとして、他所で述べたようにＲＡＩＤユニット３１２にデータを送る。この時の間に、Ｎｏｖｅｌｌまたは他の副サーバ３００は、受動（マウント解除）状態になる。これによって、サーバ３００、リモート・ミラーリング・ユニット、およびＲＡＩＤユニット３１２または他のリモート・ディスク・サブシステムを、図１４に示されているように２対１の形で一緒に配線することによって引き起こされる損傷が防がれる。
【０１０２】
切替を実行するために、リモート・ミラーリング・ユニットは、ＲＡＩＤユニット３１２ドライバをマウント解除し、サーバ３００が、ＲＡＩＤユニット３１２をマウントする。その後、サーバ３００は、ＳＣＳＩマスタになる。必ず副サーバＳＣＳＩカード選択を予測または実行することはできないので、リモート・ミラーリング・ユニットが、副ホスト位置（ＬＵＮ  ６）を有することが好ましい。２つのマシンが来る時に、リモート・ミラーリング・ユニットが、ドライバのパワー・アップの際に第２のリセットを経験する可能性がある。これは、正常であるが、リモート・ミラーリング・ユニットは、デバイス・ドライバ・レベルで回復できなければならない。二重ホスト（二重チャネルではなく）方法を使用することによって、配線が、普通に終端されたＳＣＳＩチェーンになり、追加のハードウェアは不要である。切替は、記憶サブシステムおよび／またはドライバのマウント解除、マウント、および関連する動作を介して、完全にソフトウェアによって達成することができる。
【０１０３】
前の説明は、リモート・ミラーリング・ユニットと副サーバ３００の間の１対１の関係を暗黙のうちに仮定しているとみなすことができる。しかし、ソフトウェアまたは機械式ＳＣＳＩスイッチ（たとえば）を使用して、複数の潜在的なホスト・サーバ３００へのリモート・ミラーリング・ユニットの接続を可能にすることができる。ファイバ・チャネルなどのプロトコルおよび／またはＳＡＮアーキテクチャには、従来のＳＣＳＩマスタ／スレーブ関係がない。その代わりに、ＤＮＳおよび／または数値アドレスを介して行われるアドレス関係がある。そのようなシステムでは、切替が、アドレス変更を介して行われ、リモート・ミラーリング・ユニットは、それでも受動状態に入る。
【０１０４】
リモート・ミラーリング・ユニットは、完全なネットワーク・オペレーティング・システムを実行するようにすることができる。障害の場合に、そのようなリモート・ミラーリング・ユニットは、能動状態に入り、ミラーリングされるデータを送ったディスク・サブシステム上の情報に関する完全に機能するサーバになる。リモート・ミラーリング・ユニットは、ローカル・サイトの指定されたホスト・オペレーティング・システムの下のサーバをエミュレートできるようになるエミュレーション・プログラムも実行することができる。リモート・ミラーリング・ユニットは、ミラーリングの下で使用したオペレーティング・システムと、すべての関係するプログラムとをシャット・ダウンするプログラムを実行し、その後、指定されたホスト・オペレーティング・システムを別の内部ディスクまたは別の区画から再起動することもできる。
【０１０５】
リモート・ミラーリング・ユニットは、普通にデータ・ミラーリングのみの専用になるのではなく、副サーバとして継続的に動作するように機能強化することもできる。しかし、それを行うことによって、ミラーリング性能が大きく低下し、ミラーリングが完全に失敗する危険性が高まる可能性がある。
【０１０６】
リモート・ミラーリング・ユニットが、ローカル・ミラーリング・ユニット２０４と本質的に同一のソフトウェアを有する場合に、リモート・ミラーリング・ユニットが、ローカル・ミラーリング・ユニット２０４として動作することができる。たとえば、サイトＡからサイトＢを経てサイトＣへのミラーリングの時に、サイトＢのミラーリング・ユニットは、サイトＡに関してリモート・ミラーリング・ユニットであり、サイトＣに関してローカル・ミラーリング・ユニットである。リモート・ミラーリング・ユニットは、リモート位置からソースへの回復の際に、ローカル・ミラーリング・ユニット２０４として動作することもできる。すなわち、サイトＡからサイトＢへのミラーリングの時に、サイトＡのミラーリング・ユニットがローカルであり、サイトＢのミラーリング・ユニットがリモートであるが、サイトＢからサイトＡにデータを回復する際には、サイトＡのミラーリング・ユニットがリモートであり、サイトＢのミラーリング・ユニットがローカルである。
【０１０７】
最後に、いくつかの発明的システムは、複数のユーザ・セッションに対処することができ、ユーザ・セッションが、ミラーリングされるデータ中継セッションまたはデータ保管セッションになる。したがって、上のシナリオの複数の組合せおよびインスタンスが、適当な環境で並列にまたは別々に発生することができる。特定の組合せを達成するために、より多くのプロセッサ、ディスク、メモリなどを含めることが必要になる場合がある。
【０１０８】
これらのさまざまなツールおよび技法は、本発明による１対多ミラーリング・システムおよび多対１ミラーリング・システムにも使用することができる。同様に、パケットに言及するツールおよび技法の議論は、ＩＰ、イーサネット、トークン・リング、または他のパケット化されたデータ環境を指し、他のサポートされる環境で、パケットを使用するのではなくデータ・ストリームで書き込むことができることを理解されたい。
【０１０９】
上および本明細書の他所で述べた方法ステップは、あるステップの結果が別のステップへの入力として必要である場合を除いて、さまざまな順序でおよび／または並列に実行することができる。たとえば、接続ステップ１３０４、１０３６、および１３０８は、さまざまな順序でおよび／または並列に行うことができるが、テスト・ステップ１３１０の多くの動作では、示された接続の一部またはすべてが、少なくとも名目上は存在することが前提になっている。ステップ１３１２中のローカル・ミラーリング・ユニットへのデータの送信は、必ず、ステップ１３１４中のジャーニー・リンク２０６を介するかローカル・ミラー２３０へのそのデータの送信に先立つ。その一方で、送信ステップ１３１６は、送信がサーバレス・リモート・ミラーリング・ユニットへのものである場合に、送信ステップ１３１４を実行することによって（または私有専用リンク２０６を使用することによって）実行することができる。図に示されたステップは、このＤｅｔａｉｌｅｄ  Ｄｅｓｃｒｉｐｔｉｏｎで任意選択として明示的に記述されるかどうかに無関係に、発行される請求項で必要でない限り、省略することもできる。ステップを、繰り返す、組み合わせる、または別の名前を付けることもできる。
【０１１０】
注意を図１５におよび下のテキストに向けるが、下のテキストでは、その図を直接に参照すると同時に、ローカル−リモート役割逆転、ホット・スタンバイ・サーバ状況の実施、複数の代替バッファ内容およびバッファリング方式、トランザクショニング、多対１ミラーリング（すでに図５から１０で多少対処した）、頻繁にアクセスされるデータの識別、および正式でない形での副サーバの使用などに使用することができる（単独でまたはさまざまな組合せで）追加のツールおよび技法を述べる。
【０１１１】
［役割逆転（Ｒｏｌｅ  Ｒｅｖｅｒｓａｌ）］
サーバ２００などの主サーバが、動作不能になり、変更データが、リモート・サイトに完全にフラッシュされる時に、２０４および２０８などのミラーリング・ユニットが、役割を変更することができ、これによって、たとえばＷＡＮ上のサーバ３００などのリモート・サーバが、ネットワーク・ピアに障害回復を提供できるようになる。譲受人ミラリンクの最初の特許、米国特許第５５３７５３３号に、継続的に使用可能なリモート・ミラーリングされる置換ネットワーク・サーバが記載されている。しかし、役割逆転可用性は、明らかにその特許に記載されていない。役割逆転では、ミラーリング・ユニット・アーキテクチャ全体が、性質を逆転される。ローカルとリモートの両方のミラーリング・ユニットが、何であれ障害回復の必要につながるイベントから助かる場合に、ローカル−リモート役割逆転の後に、元のリモート側が、ローカル側とみなされ、そこで記録されたデータ変更が、元のローカル（現在はリモート役割）にミラーリングされる。
【０１１２】
一実施形態では、役割逆転ステップ１５０６が、下記のように実施される。第１に、「ボックス」（ユニット２０４、２０８などのミラーリング・ユニット）の対が、動作の変換を容易にするために同一の形で構成されることが好ましい。次に、ＳＣＳＩエミュレーションを処理するカーネル・モジュールが、ローカル・ボックス内でアクティブであり、リモート・ボックス内で休止している。下で述べる「メディア・ノット・レディ」特徴に実際につながるのは、このソフトウェア状態である。ローカル・ボックスが、その変更データのすべてをリモート・ボックスにコミットした時に、ユーザが、役割逆転を指令することができる。これによって、ローカル・ボックスのミラーリングが非アクティブになり、リモートＳＣＳＩエミュレーション層がアクティブになり、その結果、リモート・サーバが、リモート・ミラーリング・ユニットをマウントするコマンドを受け取れるようになる。したがって、各サイトのミラーリング・ユニットが、その役割を変更し、サーバが、変更をもたらすために参加する。ミラーリング・ユニットの現在の役割は、ビットフラグまたは他の変数によって内部的に示すことができる。
【０１１３】
ローカル役割で動作しているミラーリング・ユニットの送信バッファとして使用される物理ディスクは、そのミラーリング・ユニットが役割を逆転１５０６し、リモート役割での動作を開始する時に、受信バッファとして使用される。ユニット２０４などのローカル・ミラーリング・ユニット内では、このディスクが、ジャーニー・リンク２０６に関する変更データを保管する送信バッファである。リモート・ミラーリング・ユニット内では、この同一のディスクが、変更データが検証され、リモート側ミラー・バッファ・ディスクまたは他の不揮発性記憶装置にコミットされるまで、受信１５０４した変更データを保持する受信バッファである。検証のレベルおよびコミットの時間遅れは、いくつかの実施形態でプログラム可能とすることができる。
【０１１４】
［メディア・ノット・レディ状況を副サーバに通知（Ｍｅｄｉａ  Ｎｏｔ  Ｒｅａｄｙ  Ｓｔａｔｕｓ  ｔｏ  ｔｈｅ  Ｓｅｃｏｎｄａｒｙ  Ｓｅｒｖｅｒ）］
１５０８「メディア・ノット・レディ」状況を使用することによって、副サーバ３００を「ホット」スタンバイ・モードにすることができる。これがないと、リモート・ミラーリング・ユニット３０８がオンラインになった後に副サーバを立ち上げ、その結果、副サーバが、リモート・ミラーリング・ユニット３０８の存在についてＳＣＳＩチェーンに質問できるようにする必要が生じる可能性がある。ステップ１５０８中に、リモート・ミラーリング・ユニットのＳＣＳＩエミュレーション層が、データ・サイズおよびデータ可用性などのデータ特性に関するリモート・サーバ３００からの要求に応答するが、リモート・サーバ３００は、データの内容へのアクセスを拒否される。サーバ３００照会に対するこれらの制限された応答は、標準ＳＣＳＩ応答フォーマットを使用して、ユニット３０８によって供給される。
【０１１５】
その代わりに、リモート・ミラーリング・ユニット３０８を副サーバ３００に配線せずに、副サーバ３００を立ち上げることができる。その結果の障害の後に、ケーブルを接続し、その後、デバイス・チェーンのＳＣＳＩプローブを実行して、新しいハードウェアを検出しなければならない。サーバ３００は、その後、デバイス３０８をマウントする。対照的に、メディア・ノット・レディ・モードを使用１５０８する好ましい手法を用いると、ボリューム３０８を「電源を入れ」、「検出する」が、フェールオーバが必要になるまでマウントされないままにすることができる。
【０１１６】
［環状バッファ（Ｃｉｒｃｕｌａｒ  Ｂｕｆｆｅｒ）］
動作の２つの追加モードによって、時間および／または帯域幅を与えられて、そこから回復することができる「一貫性のない」ミラー・モード（すなわち、もはや完全に忠実ではない時間潜在ミラー）を可能にすることによって、バッファ内のデータの環状キューの有用性が拡張される。この環状キューを、「スケーラブル・インテリジェント・バッファ」、「環状バッファ・キュー」、または「ＣＢＱ」とも称する。環状キューでは、ディスク・スペースを通常モードでＦＩＦＯ（先入れ先出し構造）として使用し、最高水準に達するまで変更ブロックを保管し、最高水準に達した点で、ミラーリング・ユニットが、実際の変更データを保管するのではなく変更された論理ブロック番号（ＬＢＮ）を保管１５１０する。これは、ＣＢＱに対して行われる保管のサイズの削減を表し（１２８個のＬＢＮ［それぞれ４バイト］対１つの変更されたブロック［それぞれ５１２バイト］）、これによって、ＣＢＱが満たされる速度が減り、ジャーニー・リンク２０６を復元する時間が増える。ジャーニー・リンク２０６が、ＣＢＱが完全に満杯になるのに十分に長くダウンしたままになる場合には、完全な再ミラーリングが必要である。しかし、システムは、変更されたブロックの復元だけを必要とし、したがって、ＣＢＱを、仮想ファイル割振りテーブル（ＦＡＴ）または類似するブロック（たとえばクラスタまたはセクタ）割振り構造に縮小することができ、チェックサムまたは巡回冗長検査値が、ブロックごとにＣＢＱに保存される。ジャーニー・リンク２０６が復元された時に、リモート・ミラーリング・ユニットが、それを再ミラーリングする必要についてローカル・ミラーリング・ユニットによって通知１３２０され、ＣＲＣのブロックまたは類似物をローカル・ミラーリング・ユニットと交換して、ディスクのどのクラスタ（たとえば）を送信する必要があるかの判定を可能にする。たとえば、初期ミラーと異なって、ハード・ドライブの９０％超が、変更されない可能性があり、したがって、リンク２０６を介して送信する必要がない。初期ミラーでは、データの１００％が、ローカル・ドライブとリモート・ドライブの間で異なると仮定される。
【０１１７】
［スカジー・スヌープ・バッファリング（ＳＣＳＩ  Ｓｎｏｏｐ  Ｂｕｆｆｅｒｉｎｇ）］
いくつかの実施形態で、通常モードのスケーラブル・インテリジェント・バッファ（たとえば環状バッファ・キュー）が閾値に達するまで、このバッファに変更ブロックが保管され、閾値に達した時点で、ミラーリング・ユニットが、実際の変更データではなく変更された論理ブロック番号（ＬＢＮ）を保管１５１０する。「ＳＣＳＩスヌープ・バッファリング」を使用する変形形態では、データ・ミラーリング・システムが、ブロック・データを切り出し、これらのＳＣＳＩコマンドをバッファリングするのではなく、実際のＳＣＳＩコマンドをバッファリングする。これは、下記のように行うことができる。図１５に示されたステップ１５１２の異なる実施形態に、本明細書で集合的に符号１５１２によって示される特定の動作の１つまたは複数を含めるか省略することができることに留意されたい。
【０１１８】
ミラーリング・デバイス２０４内のターゲット・アダプタが、受動的な形でＳＣＳＩバスをリスン１５１２する。この文脈での「受動的」は、物理デバイス２０４が、バスに電気的に参加するのではなく、バス上で見たものを記録１５１２することを意味する。ターゲット・アダプタは、ＳＣＳＩアナライザに使用されるものに性質が似るが目的が異なる既存の物理ハードウェアを使用することができる。ＳＣＳＩアナライザは、ユーザが、実際にＳＣＳＩバスに参加せずにＳＣＳＩバスのアクティビティを監視できるようにする分析ツールである。発明的ターゲット・アダプタによってＳＣＳＩバスから収集１５１２されたデータは、ＳＣＳＩバス上の特定の実際の参加者または「ターゲット」から発するかそれに向けられたアクティビティについて解釈１５１２される。そのようなデータには、ＳＣＳＩバス上で見られる１５１２カプセル化されたＳＣＳＩコマンドの組が含まれる。
【０１１９】
コマンド突合せ１５１２によって、判断基準をフィルタリングする、すなわち、当のＳＣＳＩバス参加者だけに関するコマンドが、適当なバッファリング・アルゴリズムを使用して、観察された順序でキューに入れられる１５１２。ＳＣＳＩバスから収集１５１２されたデータは、必ずしも、バス上の特定の参加者からのコマンドまたは応答の認識１５１２を超えて分析または解釈１５１２されない。しかし、（ａ）読取の性質を有するバス上のホスト・コントローラからの要求を（ｂ）書込の性質を有するバス上のホスト・コントローラからのコマンドを分割１５１２するために、処置を講じることができる。書込の性質のコマンドをバッファリング１５１２することによって、バッファに、ＳＣＳＩバス上のターゲットの参加者に対するデータの変更または他の形の状態の変更に関連するトランザクションだけが含まれる。
【０１２０】
バッファリングされたＳＣＳＩコマンド・データが、第２のミラーリング・ユニット２０８、３０８などに、ジャーニー・リンク２０６などの通信リンクを介して転送１５０２される。受信１５０４された後に、コマンドが、同一のまたは類似する参加者（第１のバス上の対照物と同一の状態で始動する）を有する第２の物理的に別のＳＣＳＩバス上で繰り返すことによって「再生」１５１４される。この形で、第２のＳＣＳＩバス上の重複するターゲット参加者を、コマンドが元のＳＣＳＩバスから読み取られ１５１２た時の元のターゲット参加者と同一の状態にし、同一のデータを含むようにすることができる。ＳＣＳＩバス以外のバスは、コマンドの取込および再生と、本発明の他の態様に関して、類似する形で使用することができる。
【０１２１】
このミラーリング・システムを実施する時には、読取要求と書込要求の間の微妙な望ましくない相互作用に注意することが重要である。これは、注意されるＳＣＳＩバス参加者が、前の読取動作に依存して後続の書込動作の挙動を変更する、暗黙だが簡単には可視にならない内部状態を保持する場合に特にそうである。
【０１２２】
さらに、コマンドが取り込まれる監視されるＳＣＳＩバスの参加者から報告されるエラーを、第２のＳＣＳＩバスで一貫性のある形で処理１５１４する必要があるが、第２のＳＣＳＩバスは、必ずしも同一のエラーを生成できない。また、第２のＳＣＳＩバスで生成されるエラー状態によって、第２のＳＣＳＩバスが、第１のＳＣＳＩバスからの状態およびデータに関して一貫性がなくなる可能性がある。
【０１２３】
［一時的トランザクショニング（Ｔｅｍｐｏｒａｌ  Ｔｒａｎｓａｃｔｉｏｎｉｎｇ）］
一時的トランザクショニング１５１６では、ミラーリング・ユニット２０４、２０８などのバッファを使用して、トランザクショナル・ファイルシステム機能性を提供する。ステップ１５１６の異なる実施形態に、本明細書で集合的に符号１５１６によって示される特定の動作の１つまたは複数を含めるか省略できることに留意されたい。オペレーティング・システム・エージェントおよび／またはカーネル・ウェッジを用いて、まだトランザクションをサポートしていないファイルシステムで動作のロールバックをサポートする（１５１６）ために、ファイルのオープン、クローズ、およびファイル動作タイムスタンプを追跡する（１５１６）ことができる。
【０１２４】
これに関して、「カーネル・ウェッジ」は、既存のバイナリ・コードまたはソース・コードに詰め込んで、オペレーティング・システムを修正することができる、バイナリ・パッチまたはソース・コード・パッチである。カーネル・ウェッジ挿入は、オペレーティング・システム内で、追加ソフトウェアをその場所にリンクされるか他の形で挿入されるように特に設計されてはいない位置で行われるので、カーネル・ウェッジは、デバイス・ドライバまたはエージェントとは異なる。オペレーティング・システム内で、ファイルのオープンおよびクローズなどの動作が行われる点にコードを挿入（１５１６）することによって、これらのイベントに基づいて処置を講じることができる。
【０１２５】
この手法は、複製ではファイルがクローズされている時にファイルがコピーされ、ミラーリングではファイルが書き込まれる時にオープン・ファイルがコピーされるので、ミラーリングと複製の混成物と見なすことができる。この手法では、ファイルが書込のためにオープンまたはクローズされる時に基づいて、ミラーリングされるデータにタイムスタンプまたは他のマーカーを添付（１５１６）する。したがって、プログラムによってオープンされた後にファイルに対して行われる変更のすべてが、そのオープン／クローズ・サイクルに関連付け（１５１６）られ、ファイルが再オープンされた後の後続の変更は、現在のサイクルに関連付けられない。
【０１２６】
スペースの欠如または他の要因によって、オープン／クローズが行われる時にファイルに関連する特定のブロックを追跡（１５１６）することが困難になる場合があるが、特定のオープン／クローズ・イベントが発生した正確な時刻を追跡（１５１６）することは簡単にでき、ブロックがバッファに入った正確な時刻を追跡（１５１６）することもできる。したがって、後に、システム管理者が、ウェッジによって提供１５１６されるオープン／クローズ・ログを見、指定された時間期間に一致する変更されたデータ・ブロックを選択的に除去することができる。
【０１２７】
この手法は、長時間にわたってファイルをオープンし、長時間にわたってデータを書き込む、データベースなどのアプリケーションのみと共に使用される場合に、ほとんど利益をもたらさないことに留意されたい。しかし、この手法は、ファイルシステムを安全に保つか、誤って上書きされたワード・プロセッサ・ファイルを回復（１５１６）するのに非常に有用である。というのは、これらの動作が、短い時間の期間内に、通常はできる限り速く行われるからである。ファイルシステム変更は、ワード・プロセッサからのファイル保存動作と同様に、それが発生した適度に正確な時点まで追跡（１５１６）することができる。その後、この時刻に対応するデータ変更ミラーリング動作を識別（１５１６）することができ、選択されたデータ変更動作を、ミラーリングを実行したデータ変更動作のストリームから編集（１５１６）することができる。
【０１２８】
トランザクショニング（１５１６）は、バッファ内にデータの変更ログを保持（１５１６）し、ある時間の期間について変更をロールバック１５１６することができる、リモート・システム・エージェントまたは他のプログラムを用いて達成することができる。リモート・システム・エージェントは、ユニット２０８などのリモート・データ・ミラーリング・ユニットに常駐し、通信リンク２０６を介してローカル・データ・ミラーリング・ユニット２０４からデータ変更情報を受け取る（１５０４、１５１６）。
【０１２９】
いくつかの実施形態では、システムが、ローカルとリモートの両方のミラー・ディスクおよびバッファ・ディスクを有するが、リモート／ローカル役割が交換（１５０６）され、その結果、リモートでミラーリングされたデータをそれがミラーリングされた元の位置から回復できるようになる時など、なんらかの理由でリモート・システムがもはやリモートである必要がなく、ローカルにならない限り、バッファ３１０などのリモート側バッファ・ディスクが実際には使用されない。したがって、リモート側バッファ・ディスクを使用して、トランザクション・ログを保持（１５１６）することができる。
【０１３０】
ログは、送信キューに似た構造に編成することができ、したがって、データ・ブロックならびにそれに関する情報（ＬＢＮおよびタイムスタンプ）が、順序付けられた形で保存（１５１６）される。データを即座にディスクに書き込むのではなく、本発明は、バッファ・スペース可用性および／または管理者プリファレンスによって決定される時間の期間に、データをバッファに保管（１５１６）する。その時間が満了した時に、データが、バッファから除去（１５１６）され、ミラー・イメージに書き込まれる（１５００）。この時点で、管理者は、その書込を元に戻す選択肢を有しない。リモート２０８が、ローカル２０４になる１５０６ことを必要とする場合に、同一のバッファ・スペース３１０をデータ送信専用にする１５００前に、リモート・バッファ３１０全体を、ＲＡＩＤユニット３１２などのディスクにコミットする必要がある。
【０１３１】
より一般的には、タイムスタンプ情報と共にバッファを使用することによって、ミラーリングされるサーバ２００およびミラーリングされたデータを受け取るリモート・システムのバッファ３１０で既に行われたが、たとえばＲＡＩＤユニット３１２のミラー・イメージのためにバッファ３１０から出ていないものを、効果的に元に戻す（１５１６）ことができる。元に戻す動作は、管理ユーティリティを使用して、当のブロックをリモート側のキューから単純に除去（１５１６）することによって、管理者が実行することができる。
【０１３２】
［代替バッファリング方式（Ａｌｔｅｒｎａｔｅ  Ｂｕｆｆｅｒｉｎｇ  Ｓｃｈｅｍｅ）］
異なるバッファリング方式を、いくつかのミラーリング・ユニット２０４で使用して、単純な環状キューと比較してバッファ・スペースおよび時間を節約することができる。ブロックが、受け取られた時にローカル・ミラー２３０に書き込まれ、ＬＢＮ番号が、順序付きキューだけに保存されると仮定する。本明細書で使用する「順序付きキュー」は、その構造にサブミットされた順序と同一の順序で項目を取り出すことができる、すべてのキュー、リスト、ＦＩＦＯ、テーブル、あるいは１つまたは複数の構造の他の組を指す。具体的に言うと、環状キューが、順序付きキューの例である。
【０１３３】
ミラーリングされるブロックが、既にキュー内にあるがリモート・サイトにコピー１３０２されていないブロックの上に書き込まれる場合に、既存のブロックが、前に説明した実施形態での動作に類似する形でバッファ・スペースにコピーされる（たとえば、ブロックへのポインタだけが実際のキューに配置され、ブロック自体はスワップ・スペースに保管される）。この代替バッファリング方式を用いると、バッファ全体を「コンパクト」モードにすると同時に安全にすることができる。変更の変更だけがバッファリングされる。
【０１３４】
「コンパクト・モード」および「通常モード」は、バッファリング・モードを指す。コンパクト・モードでは、バッファが満杯になる時に活動し始める「最善を尽くす」戦略が実施される。通常モードは、管理者が定義した閾値または他の空きバッファ・スペース閾値に達するまで普通に使用されるバッファリング手法である。隠喩として、水がその高さになった時にそれについて何かをした方がよいので、閾値を、時々「最高水準」と称する。閾値に達した後に、バッファは、コンパクト・モードで動作し、このモードでは、ＬＢＮおよびデータではなく、変更されたＬＢＮだけが追跡１５１０されるので、もはやすべての場合にデータ保存性が保証されなくなる。データは、通常通りにローカル・ミラー２３０に書き込まれ、ＬＢＮがキューから読み取られる時に、送信（１５００）されるデータが、ローカル・ミラー２３０から読み取られる。多くの状況で、これは良好に機能し、すべてのデータがミラーリングされる。
【０１３５】
しかし、いくつかの状況で、ファイルが書き込まれ、その後、さらなる変更を伴って再書込される。両方の変更が、キューに置かれるが、最初の変更がキューから除去される時に、送信（１５００）されるデータは、実際には第２の（またはより後の）変更からのものであり、したがって、その時の前にリモート・ミラーでディスク３１０／３１２に現れる。これは、ファイルシステム・オブジェクトがしばしば上書きされるので、個々のワード・プロセッサ・ファイルではなくファイルシステムをミラーリングする場合に、実質的な問題になる可能性がある。しかし、これは、「ある時に機能する可能性がある」方式であり、やはりある度合の保護を提供し、したがって、単純にバッファを使い果たすよりよい。
【０１３６】
この手法を改良するこの代替バッファリング方式は、ほぼ同一の形で動作する。しかし、所与のデータ・ブロックへの後続の書込の際に、ローカル・ミラー２３０のブロックが、コピーされ、バッファ内の別の場所に保管され、その結果、バッファ内のＬＢＮ番号が、より新しいデータではなく正しいデータを参照するようになる。このデータをキューに挿入しなおすことは実現可能でない。一般に、その余地を作るために、あまりに多数のキュー要素を移動する必要があるからである。しかし、特定のＬＢＮの個々のエントリをその場で変更して、システム上の他の位置にあるデータを参照することができる。たとえば、第２の記憶域を、ローカル・ミラーリング・ユニット２０４が使用して、これらのブロックを保持することができる。
【０１３７】
この代替バッファリング方式の長所は、ほとんどの場合に、１つの書込動作だけが必要になることである。時折読取／書込／書込動作１５１８を行う必要が生じる、すなわち、ローカル・ミラー２３０からデータを読み取り、それを一時記憶装置に書き込み、キュー内のＬＢＮエントリを更新して、ミラー内ではなく一時記憶装置内のブロックを指すようにし、新しいブロックをミラー２３０の、データの前のコピーが保管されていたところに書き込み、新しいブロックのＬＢＮエントリをキューに追加する。
【０１３８】
［リモート多対一ミラーリング（Ｒｅｍｏｔｅ Ｍａｎｙ−ｔｏ−Ｏｎｅ Ｍｉｒｒｏｒｉｎｇ）］
この革新には、本明細書の他所で述べた技術が含まれるが、この技術は、本明細書で述べるように、中央バックアップ・サイトまたはサービス・プロバイダとの多対１解決策でハードウェア／ソフトウェア・プラットフォームを提供するようにさらに適合される。ローカル・システムは、全般的に上で説明したように動作する。ローカル・ミラーリング・ユニット２０４は、ＳＣＳＩバスを介してホスト・サーバ・システム２００に接続され、固定ディスク・ドライブとして現れ、この固定ディスク・ドライブが、（たとえば）ＲＡＩＤ−１ミラーの一部として使用される。データは、ローカル・バッファ２１０からローカル・ミラーリング・ユニット２０４の伝送プロトコルを介してリモート・サイトに送信１５００され、動作の状態は、本明細書の他所で説明した通りである。管理インターフェースが、ローカル・システムと、ユニット５０８、６０８などのミラーリング・ユニットでのリモート多対１解決策との間の１対１ビュー（ローカル・ミラーリング・システムの観点からの）をサポートする。
【０１３９】
リモート多対１解決策では、ミラーリング・システムのトランスポートおよびバッファ管理ソフトウェアの複数のインスタンスすなわち、前に説明したリモート・ミラーリング・ユニット２０８、３０４、および４０８のソフトウェアに似たソフトウェアの複数のインスタンスを実行１５２０することができる。しかし、これらの実施形態では、カーネル・モジュールが、前に説明したシステムのカーネル・インターフェースをエミュレート（１５２０）するユーザ空間制御モジュールによって置換される。複数の「仮想リモート・ミラーリング・ユニット」（本明細書では「仮想システム」または「仮想１．１システム」とも称する）を、サーバ３００または修正されたミラーリング・ユニット２０８、３０８、および４０８内の１つのハードウェア・プラットフォーム上でホスト（１５２０）することができる。ハードウェア・プラットフォームは、共通の使用可能なＰｏｓｉｘ／Ｕｎｉｘ／ＳＲＶ４環境を提供することができる、任意のハイエンド・サーバ・システムとすることができる。例には、制限なしに、Ｓｏｌａｒｉｓ／Ｌｉｎｕｘを実行するＳｕｎ社のサーバ、またはＡＩＸ／Ｌｉｎｕｘを実行するＩＢＭ社のサーバが含まれる。
【０１４０】
望み通りに動作（１５２０）する仮想システム・トランスポート・ソフトウェアの実施を容易にするために、このソフトウェアは、たとえば、ローカル・バッファ、リモート・バッファ、ローカル・ミラー、リモート・ミラーおよびカーネルを含むデバイスについて、データがデバイスからデバイスへどのように流れるかに関する仮定を一切設けずに、モジュラー式に記述されなければならない。データがどこからどこへ流れるかに関する制御は、カーネル・インターフェースを介して行われ、このカーネル・インターフェースは、ミラーの状態およびユーザが開始した状態変更に関する状態情報を維持する。
【０１４１】
いくつかの実施形態で、ハードウェア・プラットフォームが、ＳＡＮ管理ソフトウェアを実行し、このＳＡＮ管理ソフトウェアが、ミラーリング・ユニット管理層とインターフェースして、動作のさまざまな状態（バッファ・デバイス、ミラー・デバイス、変化するミラー・デバイスなど）を実施する必要に応じてＳＡＮ記憶装置上のデバイスをローカル・デバイスにルーティングするなどの機能を提供する。多対１システムの管理インターフェースは、ＭＩＢ拡張およびワールド・ワイド・ウェブスタイルのＧＵＩ拡張を介してＳＮＭＰを使用することによって、前に説明したミラーリング・ユニットの管理インターフェースから導出することができる。管理層内で、主（ローカル）ミラーリング・システムとの１対１関係が設けられ、なおかつ、リモート・システム上で必要な状態動作が可能である。ＳＡＮ管理パケットは、チェックポイントのセット・アップ、ミラーリングされるデータの複数のコピーの作成、および／またはミラーリングされるようになるデバイスの変更などのタスクを自動化するために実施形態の管理層で使用することができる、類似するインターフェースのモデルとして使用することができる。
【０１４２】
［アプリケーション固有情報を用いない、頻繁にアクセスされるデータの識別（Ｉｄｅｎｔｉｆｙｉｎｇ  Ｆｒｅｑｕｅｎｔｌｙ  Ａｃｃｅｓｓｅｄ  Ｄａｔａ  Ｅｌｅｍｅｎｔｓ  Ｗｉｔｈｏｕｔ  Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｋｎｏｗｌｅｄｇｅ）］
このセクションおよびこれに続く２つのセクションでは、データのブロックが、「データ要素」の例であり、ディスク・セクタが、「記憶要素」の例である。「現在の組」は、ディスク・ドライブの抽象とみなすことができる。
フォールト・トレラント・データ・システムに共通する問題は、それを使用するアプリケーションが、アプリケーションが終了する前にデータ記憶動作の組の一部だけが完了した時の回復の方法を使用しないことである。フォールト・トレラントになるように設計されたアプリケーションは、通常は、データ記憶動作の組を実行する方法を有するが、ある最終動作が実行されるまで動作が有効であるとみなさず、したがって、動作のどれかが成功しなかった場合に、動作全体が有効でないとみなされる。しかし、多くのアプリケーションは、そのように設計されていない。
【０１４３】
フォールト・トレラントになるように特に設計されてはいないアプリケーションにフォールト・トレランスを提供する方法の１つが、実行される必要がある動作の詳細な知識を含むアプリケーション固有情報を有し、アプリケーションの外部でアプリケーションの状態を追跡することである。トランザクションが、アプリケーションを監視する外部エージェントを介してコミットされていない場合には、完全なトランザクションを、アクティブ・データ・セットから除去することができる。しかし、これは、モニタリング・エージェントが、アプリケーションの挙動に関する特殊化された知識を必要とし、したがって、アプリケーション自体の外部のデータ変更に敏感になるという点で、問題である。
【０１４４】
本明細書で説明する手法では、そのようなアプリケーション固有情報を有しないモニタリング・エージェントを使用して、頻繁にアクセスされるデータを識別１５２２する。エージェントは、アプリケーションによる記憶トランザクションの組が、時間的に関係するクラスタ内で行われることと、これに、通常は、隣接するデータ要素の第１グループに対する動作の組が含まれることと、記憶動作が、隣接するデータ要素の第１グループに対する動作の組の前および／または後に行われることと、記憶動作が、第１グループ以外の場所に配置され、異なるトランザクションに共通する隣接するデータ要素の第２グループまたはその付近で行われることを仮定１５２２する。これらの共通の要素を、本明細書では「状態ブロック」と称する。
【０１４５】
例として、ファイル・システム書込動作を検討されたい。データ・ファイルは、物理的保管媒体上で連続する隣接する記憶要素の組を通常は用いる１つまたは複数の動作の組で更新される。その後、更新が、ファイル・システム・テーブルに対して行われ、これは、異なるが一貫した形で参照される位置に保管され、限られた個数の物理的に関連する記憶要素の組の中にある。ファイルのユーザ・データを保持するセクタまたはクラスタは、隣接するデータ要素の第１グループに対応し、ファイル・システム・テーブル、ビットマップ、または類似するファイル・システム・データ構造を保持するセクタまたはクラスタは、隣接するデータ要素の第２グループに対応する。
【０１４６】
多くのアプリケーションが、これに似た書込戦略をサポートする。書込性能を高めるために、所与のオペレーティング・システムが、関係しない書込動作を単一の書込動作にクラスタ化することを試みる場合がある。その結果、データ・ファイル更新が、オペレーティング・システムに依存する時刻に行われる可能性がある。
【０１４７】
本発明を用いると、トランザクションを識別（１５２２）する方法の１つが、これらの特殊な状態ブロックに対する更新の間の記憶装置書込動作の追跡である。トランザクションには、２つの状態ブロック更新の間にデータ・ファイルに書き込まれるすべてのデータが含まれる。状態ブロックの識別（１５２２）は、正常な動作の範囲にわたってアプリケーションを動作（１５２２）させ、どの記憶動作がどれだけ頻繁にどの順序で書き込まれたかを追跡１５２２することによって行うことができる。ニューラル・ネット、統計分析、または類似する技法およびツールを使用して、結果のログから状態ブロックの識別を抽出（１５２２）することができる。計時的に、集約ログから、ある記憶要素が、他の記憶要素よりはるかに頻繁にアクセス／書き込まれることが示されなければならず、したがって、状態ブロックとみなされ（１５２２）なければならない。そのような明瞭な統計的に関係するパターンが見つからない場合には、この方法は、当のアプリケーションに適用可能でない。発明的方法は、必ずしも記憶装置を使用するすべてのアプリケーションと共に動作しない。
【０１４８】
この方法が、適切に使用される時には、アプリケーションが障害を発生し、回復できない場合に、アプリケーションが状態を回復できるまで、隣接するデータ・ブロックをアンコミット（１５２４）し、状態ブロック更新の間に書き込まれた状態ブロック更新をアンコミット（１５２４）することによって、回復を支援することができる。このアンコミット機能をサポートするために、本発明では、何らかの形の不揮発性記憶装置に、状態ブロック更新の間に上書きされるデータ要素を保管する。代替案では、本発明は、記憶動作をディスクにコミットする前に、その記憶動作をバッファリングし、状態ブロック記憶動作の次の組が検出され処理された後に、当のバッファ空間を解放することができる。読取動作は、コミットされたコピーからではなく、バッファリングされた記憶装置から読み取らなければならない。テーブルを維持して、バッファ内またはコミットされた記憶装置内の所与のデータ要素の位置を示すことができる。
【０１４９】
［主データ・ボリュームから正式でない副データ・ボリュームの回復（Ｒｅｓｙｎｃｉｎｇ  ａ  Ｎｏｎ−Ａｕｔｈｏｒｉｔａｔｉｖｅ  Ｓｅｃｏｎｄａｒｙ  Ｄａｔａ  Ｖｏｌｕｍｅ  ｆｒｏｍ  ａ  Ｐｒｉｍａｒｙ  Ｄａｔａ  Ｖｏｌｕｍｅ）］
本発明は、ある時間期間にわたって副データ・ボリュームを主データ・ボリュームとして使用した後の障害回復のための、ローカル・ミラー２１０などの主データ・ボリュームからのリモート・ミラー・ディスク・サブシステム３１２または６１４などの正式でない副データ・ボリュームの再同期化のツールおよび技法も提供する。
通常の動作では、データ要素が、主データ・ボリュームに書き込まれ、その後、ミラーリング・ユニット２０４および２０８などのなんらかの手段によって副データ・ボリュームに書き込まれる。主データ・ボリュームのデータは、正式とみなされ、したがって、データ要素にアクセスする必要がある時に顧慮される。主データ・ボリュームの破壊的でない障害の場合（たとえば、停電または保管されたデータ要素の使用するアプリケーションからの一時的分離）に、使用するアプリケーションは、新しいデータ要素の保管とデータ要素の読取の両方に関して、副データ・ボリュームに向かうことができる。リスト（またはテーブル、あるいは別のデータ構造）が、保持され１５２６、主ボリュームが使用不能である間に副ボリュームで変更されたデータ要素が示される。このリストは、主ボリュームが使用可能になった時に、副データ・ボリュームの内容を主ボリュームの内容と再同期化１５２６するために顧慮される。再同期化１５２６処理では、主ボリュームから対応するデータ要素を読み取り、副データ・ボリュームに書き込む。
【０１５０】
副データ・ボリュームに対して行われた変更は、このシナリオでは正式でないと仮定され、通常は再同期化１５２６によって上書きされる。たとえば、使用するアプリケーションに固有の理由について、これがあてはまる場合がある。
したがって、適切な状況で、本発明は、２つのデータ・ボリュームの間の主−副関係を再確立する単純な方法を提供する。この再同期化１５２６は、役割逆転１５０６とは異なり、役割逆転では、副ボリュームが主の正式なボリュームになるが、再同期化１５２６では、主ボリュームが正式のままになる。
【０１５１】
［同一の物理的記憶システムにおける順序付きキューおよび現在のコピーの保管（Ｍａｉｎｔａｉｎｉｎｇ  ａｎ  Ｏｒｄｅｒｅｄ  Ｑｕｅｕｅ  ａｎｄ  ａ  Ｃｕｒｒｅｎｔ  Ｃｏｐｙ  ｏｎ  ｔｈｅ  Ｓａｍｅ  Ｐｈｙｓｉｃａｌ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ）］
本明細書の他所で述べるように、いくつかの実施形態で、データ要素書込が、ミラーリング・ユニット２０４によって、受け取られた順序で順序付きキューに保管され、その結果、これらを順番に読み戻すことができる。いくつかの実施形態では、データ記憶要素の組が、「現在のコピー」になるように定義され、データ要素を、現在のコピーから全体として読み戻す（１５２８）ことができる。記憶装置の所与のデータ要素に対する新しい記憶動作によって、現在のコピーのデータ要素が更新（１５２８）されるが、データ要素は、以前のシステム状態を回復するために、順序通りの読取のために使用可能（１５２８）である。
【０１５２】
これは、現在のコピーの記憶要素位置のテーブル（または他のデータ構造）を維持（１５２８）することによって管理される。このテーブルでは、現在のコピーの所与の記憶要素の最新のデータ要素のアドレスが識別される。読取要求が処理される時に、データ要素が、テーブル内でルック・アップ１５２８され、順序付きキューの、テーブルから参照される点から読み取られる。順序付き読取要求は、順序付きキューの既知の位置から、キューの順方向への形で読み取ることによって処理（１５２８）される。
【０１５３】
この手法では、物理的に区分された同一のデータ要素の２つのコピーを保持する、説得力のある理由がない。本発明は、物理的に区分されたシステムを実施するために記憶システムに同一のデータ要素を２回書き込むことをしない。ステップ１５２８の異なる実施形態に、符号１５２８によって集合的に示される特定の動作の１つまたは複数を含めるか省略できることに留意されたい。
【０１５４】
物理記憶システムが、順序付きキュー・データで満杯になる時に、最も古い順序付きキュー要素が、満了（１５２８）し、その記憶域が、新しい順序付きキュー要素のために解放される。現在の組の古い順序付きキュー要素を満了させる必要がある場合に、その要素を副記憶装置にコピー（１５２８）し、この新しい位置を参照するように順序付きの組を更新（１５２８）することができる。これが一般的なシナリオになるかどうかはアプリケーション固有であるが、多くのシナリオで、本発明のこの態様（１５２８）が、現在の組およびデータ要素の組の順序付きキュー・ビューの両方を維持するのに必要な書込動作の数を減らす傾向がある。
【０１５５】
順序付きキューを保持することの結果として、前の現在の組が、再構成（１５２８）に使用可能になる。前の現在の組は、新しい現在の組になる順序付きキュー内のある時点を選択（１５２８）することと、選択された時点より新しい順序付きキューの要素への参照について参照テーブルをスキャン（１５２８）することと、現在の組の正しい部分を参照する、より古い順序付きキュー要素を参照するように参照テーブルを更新（１５２８）することによって、再構成することができる。
【０１５６】
多くの状況で、本発明のそのような実施形態１５２８による読取動作について、性能ペナルティを受ける。というのは、これらの読取動作が、ある状況で連続する記憶要素に対して行われないからである。しかし、記憶動作は、どの順序でも効率的である。というのは、記憶動作が、必ず、たとえば順序付きキューが記憶システムの記憶要素の線形アレイとして実施される場合に、順序付きキュー配置内の連続する記憶要素に対するものでることが好ましいからである。
【０１５７】
［構成された記憶媒体、信号（Ｃｏｎｆｉｇｕｒｅｄ  Ｓｔｏｒａｇｅ  Ｍｅｄｉａ，  Ｓｉｇｎａｌｓ）］
本発明の範囲内の製造品には、コンピュータ可読記憶媒体の基板の特定の物理構成と組み合わされるコンピュータ可読記憶媒体が含まれる。基板構成によって、本明細書に記載の特定の事前に定義された形でコンピュータに動作させるデータおよび命令が表現される。適切な記憶装置には、フロッピ・ディスク、ハード・ディスク、テープ、ＣＤ−ＲＯＭ、ＲＡＭ、フラッシュ・メモリ、および１つまたは複数のコンピュータによって可読の他の媒体が含まれる。そのような媒体のそれぞれによって、図１３に記載のステップの一部またはすべてを実行する方法および図２から１２に記載のシステムをインストールし、かつ／または使用する方法を制限なしに含む、実質的に本明細書に記載の柔軟なミラーリング方法ステップを実行するために計算機によって実行可能である、プログラム、関数、および／または命令が有形に実施される。本発明は、そのようなプログラム内またはそのようなプログラムによって使用される新規の信号も提供する。信号は、「ワイヤ」、ＲＡＭ、ディスク、あるいは他の記憶媒体またはデータ担体で実施することができる。
【０１５８】
［追加情報（Ａｄｄｉｔｉｏｎａｌ  Ｉｎｆｏｒｍａｔｉｏｎ）］
人および企業が本発明を理解し、正しく実践するのをさらに助けるために、追加の洞察および詳細を下で示す。これらのコメントは、実施形態タイプ（方法、システム、構成された記憶媒体）のいずれかの議論が、そうでないことが明らかに示されない限り、他の実施形態タイプにも適用されるという前提を継続するものとして与えられる。
【０１５９】
［発明の改良の特別の例（Ｓｐｅｃｉｆｉｃ  Ｅｘａｍｐｌｅｓ  ｏｆ  ｔｈｅ  Ｉｎｖｅｎｔｉｏｎ’ｓ  Ｉｍｐｒｏｖｅｍｅｎｔｓ）］
データ保護の問題に対する多くの他の解決策（テープ・バックアップ、ローカル・クラスタリング、複製、シャドウイング、リモート・メインフレーム・チャネル拡張など）は、多少はホスト２００のオペレーティング・システムに直接につながり、依存する。この依存によって、顧客にとっての問題が生じるが、これは、本発明を使用することによって回避することができる。たとえば、依存する専用ソフトウェアに頼ることは、そのソフトウェアが現在のホスト・オペレーティング・システムまたはオペレーティング・システムに対するアップグレードと共に完全には機能しない時に、互換性の問題およびバグを引き起こす可能性がある。専用のホスト・ミラーリング・ソフトウェアに依存するソフトウェア解決策は、ホストでの追加の作業を課すので、性能の問題も提示する可能性がある。依存ソフトウェア解決策は、不安定性のポイントになる可能性もある。ディスク・ボリュームが大きくなり、ソフトウェアおよびオペレーティング・システムが複雑になるにつれて、依存ソフトウェアを必要とする手法に関して、これらの問題が増える。さらに、ホスト２００のオペレーティング・システムが、フリーズする場合に、そのオペレーティング・システムに依存する解決策も、機能を停止する。
【０１６０】
対照的に、いくつかの実施形態で、本発明は、ホスト・コンピュータ（たとえばローカル・サーバ２００）にロードされるソフトウェアを全く有しておらず、これによって、前述の問題が軽減されるか回避される。ホスト・オペレーティング・システムがフリーズする場合に、ミラーリング・ユニットは、動作を継続し、ミラーリングされるデータは、ミラーリング・ユニットがそれ自体のオペレーティング・システムを実行しているので、使用可能である。ディスク・ボリュームが増え、ソフトウェアが複雑になるにつれて、コアでの実施的な修正を必要とする解決策と異なって、本発明は、簡単にスケーリングされる。より高速のプロセッサが登場した場合には、望みに応じてこのプロセッサを単純にミラーリング・ユニットで使用する。ディスク・サイズが大きくなる場合には、ミラーリング・ユニットにより大きいディスクを付ける。データ変更速度が、ディスクへの書込の現在の能力を超える場合には、キャッシング・コントローラを使用し、システムにメモリを追加する。他の解決策のいくつかは、バグなしで統合され、正しく動作するために、オペレーティング・システム製造業者からの協力を必要とする。すべてのオペレーティング・システムが、予見できる将来についてＳＣＳＩおよびファイバ・チャネル（たとえば）をサポートするので、そのような協力は、本発明のインストールおよび使用について必要ではない。
【０１６１】
他の解決策は、障害を発生する時に、上で概要を示した密な相互作用のゆえに、ホスト２００を巻き添えにする可能性がある。本発明は、ホスト２００から独立に動作することができるので、障害を発生する場合に、ホスト・コンピュータに深刻に影響する必要はない。従来のディスク・ミラーリングは、元々は、ローカル・フォールト・トレランスのために設計された。２つのディスクが、並列に書き込まれ、一方のディスクが障害を発生した場合に、コンピュータが、動作を継続する。障害を発生したディスクは、バックグラウンドでオペレーティング・システムからマウント解除される。オペレーティング・システムおよびコンピュータは、しばししば、全く止まらずに動作し続ける。発明的ミラーリング・ユニットは、ＳＣＳＩディスクのように見え、ミラーリングされたディスクとしてマウントすることができるので、類似する長所を提供する。ミラーリング・ユニットが壊れた場合に、簡単にマウント解除することができる。たとえば、ミラーリング・ユニットのオペレーティング・システムまたは他のソフトウェアが障害を発生する場合に、ミラーリング・ユニットが、ディスクのエミュレーションを停止する。その結果、ホスト２００上のオペレーティング・システムは、もはやミラーリング・ユニットを認識しなくなる。これに応答して、ホスト２００上のオペレーティング・システムは、単純にミラーリング・ユニット２０４をマウント解除し、動作を継続する。
【０１６２】
少なくともいくつかの前のミラーリング・システム実施形態で、単一ディスクＩＤＥバッファが使用された。スプーフィングを用いる場合であっても、そのようなスマート・バッファは、ハードウェア・ストライピングを用いる高速ＳＣＳＩ  ＲＡＩＤユニットに追従することができなかった。リモート位置に送信されつつある最もクリティカルなデータが、スマート・バッファ・レベルでのフォールト・トレランスを有しない単一のディスクに委ねられた。本発明を用いると、対照的に、ローカルおよびリモートのミラーリング・ユニットの両方が、フォールト・トレランスのために単一のディスク・バッファをミラーリングすることができ、複数のディスクにまたがるハードウェアＲＡＩＤストライピングを実行することができる。これによって、サーバ側の新しい高速記憶サブシステムに追従する能力と、よりよいフォールト・トレランスがもたらされる。サーバ２００のボリュームまたはミラーリング・ユニットのディスク２１０、３１０での個々のディスクの障害の場合に、バッファリングされたデータを失う危険性も減る。
【０１６３】
従来の手法の限られたデータ入力能力によって、市場に受け入れられつつある新しい技術に対処することが非常に困難になる。たとえば、少なくともいくつかの従来の手法では、ストレージ・アクセス・ネットワーク（ＳＡＮ）またはネットワーク接続ストレージ（ＮＡＳ）サポートがない。サーバ３００などの標準のリモート・サーバを必要とすることによって、優勢になりつつあるＳＡＮおよびＮＡＳのディスク・サブシステムのバックアップおよびミラーリングが困難または不可能になる。しかし、これらのサブシステムのすべてが、イーサネット、ファイバ・チャネル、および／またはＳＣＳＩを介してローカル・ミラーリングを実行することができる。発明的ミラーリング・ユニットは、ＳＣＳＩ、イーサネット、およびファイバ・チャネルの入力を含む、複数の入力タイプを受け入れることができる。
【０１６４】
本発明は、より大きい記憶サブシステムのサポートも提供する。多くの以前のフォールト・トレランス解決策は、６ギガバイトのストレージ・ボリュームが非常に大きいと思われていた環境用に設計されている。記憶装置コストが下がるにつれて、ディスク・サブシステムが、非常に速い速度でサイズを増やしつつある。サーバが、１００ギガバイトの複数のボリュームを有することが、現在では一般的である。本発明は、部分的に、ホスト・サーバ２００の同期化をバックグラウンドですなわち、ミラーリング・ユニットで処理することによって、これらのより大きいボリュームに対処する。ホスト・サーバからミラーリング・ユニットにこのタスクをオフロードすることによって、大きい性能低下なしにメイン・ホスト・サーバ２００の真のミラーリングが可能になる。対照的に、ミラーについて必要な同期化を処理するためにローカル・サーバを必要とする代替の「クラスタ化」解決策および／またはミラーリング解決策は、主サーバを極端に低速化するか、クラッシュさせる可能性がある。
【０１６５】
少なくともいくつかの以前の再ミラーリングの実施形態では、遠隔通信リンクを介するミラーリングされたディスクの再同期化（再ミラーリング）を回避するためにかなりのことを行ってはいるが、ローカル・バッファがローカル・ボリューム全体をサポートできない場合に、ローカル・サーバ２００が介入することを必要とした。再ミラーリングによって、メイン／主／ホスト・サーバ２００が、停止まで速度を落とし、数日を要する可能性があった。したがって、再ミラーリングは、一般に、ユーザが少ないのでネットワークが低速で動作することができる週末にのみ実行されてきた。しかし、ディスク・サブシステムが大きくなるにつれて、これが受入可能ではなくなってきた。本発明は、リモート位置だけではなくローカル・ミラーリング・ユニット２０４内で、リモート位置にミラーリングされつつある完全なボリュームを保持するのに十分に大きい不揮発性記憶装置をサポートする。これによって、ローカル・ミラーリング・ユニット２０４が、完全なローカル・ディスク記憶ボリュームをローカル化されたスマート・バッファに事前アクノレッジできるようになり、再ミラーリングに関係するタスクを、サーバ２００の観点から「バックグラウンド」で実行できるようになる。
【０１６６】
少なくともいくつかの従来の手法では、ローカルまたはリモートのいずれかの位置からのＴ１出力の最大速度の制限によって、フレーム・リレー・ネットワーク、ＡＴＭ、および／またはＶＳＡＴネットワークが使用可能である場合であっても、再ミラーリングが低速になった。対照的に、本発明を用いると、より高い入出力パイプ能力が柔軟に可能になり、これによって、再ミラーがよりすばやく、データ配布がより効率的になるので、性能を改善することができる。リモートに保管されるミラーリングされるデータが、使用不能になる場合には、使用不能なサイトに保管されたデータを、高速私有データ・ネットワークを使用して別の施設に高速で移動することができる。これらのデータ・ネットワークは、通常は、ＯＣ４８レート（２．４８８ギガビット毎秒）までの帯域幅をサポートする。この１例が、通常はシカゴにデータをミラーリングし、現在は回復のためにニュー・ヨークの施設を使用する必要がある顧客である。このタイプの必要は、当初に認識されたよりもはるかに一般的である。
【０１６７】
元のオフーサイトサーバ製品は、オープンなアプリケーション・プログラミング・インターフェース（「ＡＰＩ」）を提供できなかった。その代わりに、元のオフーサイトサーバ製品は、クローズドなプロプラエタリ・ハードウェア（ミラリンクの）およびクローズドなプロプラエタリ・ソフトウェア（Ｖｉｎｃａの）だけのために記述された。会社顧客が、その製品の範囲を超える必要を有する場合に、一般に、カスタム修正またはカスタム調整を行う簡単な方法はなかった。対照的に、本発明は、オープンなＡＰＩを可能にし、その結果、ユーザ空間プロセスから調整を行って、特定の顧客および／または新しい市場に対処することができる。具体的に言うと、制限なしに、本発明は、サーバ２００を中断させずにミラーリング・ユニットを再構成する１つまたは複数の呼出しを提供し、サーバ２００を中断させずにミラーリング・ユニットをリブートする呼出しも提供するＡＰＩを有することが好ましい。
【０１６８】
［コンフィグレーション・データ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄａｔａ）］
システム構成データは、分散され、その結果、ミラーリング・ユニットの１つが構成データを失った場合に、構成データをそのユニットのピアノ１つから回復できることが好ましい。ネットワーク情報などの基本的な構成データは、不揮発性記憶装置（たとえば、ディスク、またはバッテリバックアップされた半導体メモリ）に保管され、その結果、ディスク上の構成データが失われた場合であっても、構成データをピア・ミラーリング・ユニットから復元できることが好ましい。
【０１６９】
ワールド・ワイド・ウェブ・インターフェースが、最低限でも、次の構成オプションまたはその同等物を提供することが好ましい：ＩＰアドレス（リモート／ローカル）；ゲートウェイ（リモート／ローカル）；ネット・マスク（リモート／ローカル）；管理者パスワード（共用）；バッファ・サイズ（ローカル）；バッファ最高水準（許容可能な限度を超えて満たされるバッファ）；ボリューム・サイズ（工場で構成されたハード最大値まで構成可能）；ＳＣＳＩターゲット論理ユニット番号（ＬＵＮ）；およびＳＮＭＰ構成（リモート／ローカル）。
【０１７０】
ＳＮＭＰ構成自体に、下記が含まれることが好ましい：ＳＮＭＰモニタリング・ホストの追加／削除（ローカル／リモート）；イベント・ポーリング間隔：共用可能な限度を超えて満たされるバッファ；ネットワーク接続障害：バッファ満杯；リモート同期外れ；電子メール宛先の追加／削除。
【０１７１】
ウェブ・インターフェースは、最低限でも、下記の状況情報を提供することが好ましい：バッファ内のブロック数；送信されたブロック数；受信されたブロック数；ミラーリング・ユニットのバージョン；ミラーリング・ユニットの通し番号；ボリューム・サイズ；このユニットがリモートまたはローカルのどちらであるか。ウェブ・インターフェースは、アンマウント・リモート・ユーティリティを提供することが好ましい。ウェブ・インターフェースは、ログ・ダンプ・レポートも提供することが好ましい。ＳＮＭＰトラップおよびＳＭＴＰトラップは、通常は、下記のイベントに使用される：バッファが許容可能な限度を超えて満たされた；バッファ満杯；ネットワーク接続障害；リモート同期外れ。
【０１７２】
管理ツールは、電子メール、ポケット・ベル呼出し、または他の手段による通知を提供することができる。通知は、リアルタイムおよび／あるいは自動化されたログまたは自動的に生成されるレポートとの組合せとすることができる。通知は、システム管理者および／またはベンダに送信することができる。インターフェースとしてウェブ・サーバ／メール・サーバ・パッケージを実行する実施形態では、ウェブ・サーバの特性の多くが使用可能である。たとえば、ユーザが、ローカルまたはリモートのいずれかで、ミラーリング・ユニットにアクセスし、管理することができる。許可に応じて、ユーザが、会社内および／または世界中のどこからでも、ミラーリング・ユニットにアクセスすることができる。ミラーリング・ユニットは、ミラーリング・ユニットに関する問題または重要なイベントについて、電子メールならびにＳＮＭＰを介してユーザ（およびミラーリング・ユニット・ベンダ）に通知することができる。この電子メール用のカスタム・スクリプトを記述し、その結果、異なるユーザまたはユーザのグループに通知することができる。レポート出力は、必ずしも静的ではない。顧客が、毎月必要な情報をコピーし、レポートを何度も記述するのではなく、管理のためにカスタム・レポートを必要とする場合に、顧客または保証された開発者が、ＨＴＭＬ、Ｊａｖａ、および／または他の一般的なツールおよび技法を使用して、ミラーリング・ユニットに、必要に応じて望みのフォーマットでレポートを生成させ、電子メールで送信させることができる。
【０１７３】
［基本的ハードウエア（Ｂａｓｉｃ  Ｈａｒｄｗａｒｅ）］
一般に、本発明によるシステムには、標準的なＰｅｎｔｉｕｍ  ＩＩ、Ｐｅｎｔｉｕｍ  ＩＩＩ、ＡＭＤ  Ｋ６−３、またはＡＭＤ  Ｋ７クラスのＰＣ互換コンピュータ（めいめいの所有者の商標）などの基本ハードウェアが含まれる。さまざまな構成で、計算機が、少なくとも６４、１２８、または２５６メガバイトのＲＡＭを有し、ラックマウント式ケースを有することが好ましい。これには、１つの１００Ｍｂイーサネット・カード、ＦＤＤＩカード、または類似物も含まれることが好ましい。ディスク・インターフェースについて、計算機は、ディスク・エミュレーション用のＱＬｏｇｉｃ  ＳＣＳＩカードと、バッファおよびミラー制御用のＡｄａｐｔｅｃ  ２９４０ＵＷアダプタ、またはＦｒｅｅＢＳＤによってサポートされるＤＰＴブランドのＲＡＩＤカードを有することが好ましい。ＲＡＩＤまたはＳＣＳＩのコントローラのキャッシング、ミラーリング・ユニット内の揮発性ＲＡＭでのキャッシング、ミラーリング・ユニット内の不揮発性ＲＡＭ（たとえばスタティックＲＡＭまたはバッテリバックアップＲＡＭ）でのキャッシング、その他などを含む、キャッシングを使用することができる。当業者によく知られているキャッシングのツールおよび技法は、本発明による使用のために簡単に適応させることができる。
【０１７４】
いくつかの実施形態で、Ｎが、ミラーリングされるボリュームのサイズである場合に、ローカル・ミラー２３０を含むローカル・ミラーリング・ユニット２０４は、そのローカル・ミラー用に少なくともＮの記憶容量を有する。いくつかの実施形態で、ローカル・バッファ２１０（ローカル・ミラーありまたはなし）として働くディスク・システムは、少なくともＮの６／５すなわちＮの１．２倍の容量を有する。リモート・ミラーリング・ユニットは、リモート・ミラー用の、少なくともＮのサイズの少なくとも１つのディスク・システムを有する。すべてのシナリオで、ローカル・ミラーリング・ユニット・バッファ２１０は、ローカル・ミラーを可能にするために、バッファおよびホットスワップ可能ＲＡＩＤサブシステムを含めて、そのリモート・ミラーリング・ユニットに対して、データ容量において同等である必要がある場合がある。
【０１７５】
［Ｔｅｓｔ  Ｓｕｉｔｅ］
本発明によるシステムの性能を測定するのに使用されるテストには、相対性能を測定するのに使用することができる分析テストと、クリティカル機能仕様適合判断基準をカバーするブール（合格／失格）テストが含まれることが好ましい。ブール・テストは、すべての質問に対する指定された回答が、テスト結果にと正しく一致する場合に合格する。ブール・テストは、提出物が適当であるかどうかを判定するのに使用することができる。
【０１７６】
テストは、好ましくは、ローカル・ネットワーク構成（ジャーニー・リンク２０６が、単一のローカル・エリア・ネットワーク内にある）と、ローカルおよびリモート構成（ローカル・ミラーリング・ユニット２０４とリモート・ミラーリング・ユニットが互いに地理的に離れている）の両方で合格しなければならない。たとえば、リモート・ネットワーク構成を、ジャーニー・リンク２０６として、Ｔ１リンク２０６または同等の量の公衆インターネット帯域幅によって一緒に接続された２つのサイトからなるものとすることができる。
【０１７７】
分析テストでは、Ｂｏｎｉｅ（ＵＮＩＸ用）またはＰＣＴｏｏｌｓ（Ｗｉｎｄｏｗｓ  ＮＴおよびＮｏｖｅｌｌクライアント用）などの標準ディスク・ハードウェア・テスト・スイートを使用することが好ましい。テストによって、ネイティブ・ディスク・ドライブ（モデル、サイズ、および特性が記録される）の性能を、柔軟なミラーリング・ユニット２０４の性能と比較する。性能出力は、後の参照のために記録される。
【０１７８】
下記の質問が問われることが好ましく、示された通りの答えが得られるまで、必要な訂正を行う。
ミラーリング・ユニット２０４が、正しい構成されたサイズを有するディスクとしてホスト２００のオペレーティング・システムによって認識されるか（はい）。
データを、消失なしでミラーリング・ユニット２０４から読み書きできるか（はい）。
ホスト・システム２００が、エラーなしで４８時間にわたってミラーリング・ユニット２０４のデータに関する任意のファイル動作を実行できるか（はい）。
１００メガバイトのホスト・ボリュームおよびリモート・ネットワーク構成を用いて構成されたローカル・ミラーリング・ユニット２０４が、ＦＤＤＩまたは他のサポートが存在する場合に、少なくとも３００メガバイト／時間、好ましくはそれを超えるデータ速度で、リモート・ミラーリング・ユニットに成功裡にデータをミラーリングすることができるか（はい）。３００メガバイト／時間が、Ｔ１接続の最大搬送容量より約５０％低いことに留意されたい。Ｔ１容量は、約６１７メガバイト／時間である。
ローカル・ミラーリング・ユニット２０４が、接続されたホスト・システム２００が通常の形の動作に失敗せずに完全にリブートできるか、すなわち、ホスト２００が、大きい性能低下なしで企図された目的を満たし続けるか（はい）。
【０１７９】
ローカル・ミラーリング・ユニット２０４が、オン・ラインに戻る時に、ローカル・ミラーリング・ユニット２０４のキューに残されたデータのネットワークまたは他のジャーニー・リンク２０６を介する（たとえばＴＣＰソケットを使用する）転送を自動的に開始でき、データの消失なしにリモート・ミラーリング・ユニットにそのデータを送信できるか（はい）。これは、ホスト・システム２００に接続されている間にローカル・ミラーリング・ユニット２０４をリブートする前と後に、ホスト・システム２００のリモート・ミラーリング・ユニットのドライブをマウントすることによって確認されなければならないことに留意されたい。リモート・ミラーは、そのようなイベントの後に、ファイル・システム修復の重大な必要なしにマウント可能でなければならない。データは、失われてはならず、それを作成したアプリケーション・プログラムにとって意味があるものでなければならない。ローカル・ホスト・システム２００のリモート・ミラーを物理的にマウントした後に、ホスト・システム２００が、ミラーをマウントできるか、また、ホスト２００のアプリケーション・プログラムおよびそのクライアントが、ミラーのデータを成功裡に使用できるか（はい）。
【０１８０】
誤ったリモートＩＰアドレスまたは無効なＳＣＳＩ  ＩＤ（０未満または１６以上）などの不正な情報の入力に応答して、ミラーリング・システムがクラッシュまたはハングするか（いいえ）。ミラーリング・ユニットのリブートを必要とせずに、ユーザがその情報を訂正でき、ソフトウェアを再初期化でき、ソフトウェアに普通に実行させることができるか（はい）。すべてのソフトウェアが、正しいバージョン番号および著作権宣言文を表示するか（はい）。
ミラーリング動作または他のディスク入出力集中型動作がホスト・システム２００によって行われつつある３０分の期間、好ましくはそれより長い期間の、ネットワーク・ケーブル２０６の切断に応答して、ローカル・ミラーリング・ユニット２０４が動作を継続するか（はい）。それが正しい構成されたサイズを有するディスクとしてホスト・オペレーティング・システムによって認識されるか（はい）。消失なしでローカル・ミラーリング・ユニット２０４からデータを読み書きできるか（はい）。
【０１８１】
最初のミラーが確立された後に、２４時間の間ネットワーク・ケーブルを切断し、テストの周期的な再実行を実行する。ローカル・ミラーリング・ユニット２０４が、それでも、ホスト２００のオペレーティング・システムによって、正しい構成されたサイズを有するディスクとして認識されるか（はい）。消失なしでローカル・ミラーリング・ユニット２０４からデータを読み書きできるか（はい）。
同様に、ホスト・システム２００に、強制的にバッファ２１０をオーバーフロー（たとえば、複数回再ミラーリングすることによって）させた後に、ローカル・ミラーリング・ユニット２０４が、まだ可能な範囲まで正しく動作することを検証する。ローカル・ミラーリング・ユニット２０４が、それでも、ホスト２００のオペレーティング・システムによって、正しい構成されたサイズを有するディスクとして認識されるか（はい）。消失なしでローカル・ミラーリング・ユニット２０４からデータを読み書きできるか（はい）。ローカル・ミラーリング・ユニット２０４のリブートを必要とせずに、ユーザがエンキュー処理を停止し、再起動することができるか（はい）。ローカル・ミラーリング・ユニット２０４のリブートを必要とせずに、ユーザがエンキュー処理を停止し、再起動することができるか（はい）。データが少なくとも部分的に複数回再ミラーリングされた場合に、ユーザが、ミラー全体をフラッシュせずに、たとえば打ち切られたミラーのフラッシュなど、バッファの指定された部分を選択的にフラッシュすることができるか（はい）。
【０１８２】
ミラーリング動作または他のディスク入出力集中型動作が、ホスト・システム２００によって行われつつある間に、ネットワーク・ケーブルまたは他のジャーニー・リンク２０６を３０分間切断する。物理ネットワーク接続を再確立した後に、ローカル・ミラーリング・ユニット２０４が、リモート・ミラーリング・ユニットへキューからのデータの送信を開始できるか（はい）。バッファの状態に関する有効な統計（たとえば、満杯であるか否か、バッファ内のブロック数、バッファから転送されたブロック数およびリモート側で受信されたブロック数）がローカル・ミラーリング・ユニット２０４から使用可能か（はい）。
【０１８３】
ローカル・ミラーリング・ユニット２０４のＵＰＳのプラグを抜き、ホスト・システム２００をシャット・ダウンし、ローカル・ミラーリング・ユニット２０４の電力がなくなるのを待つ。ローカル・ミラーリング・ユニット２０４の電源を回復し、その後、ホスト・システム２００の電源を回復する。ホスト・システムは正しく動作するか（はい）。接続されたホスト・システム２００が通常の形で動作できなくなることなしに、ローカル・ミラーリング・ユニット２０４を完全にリブートできるか（はい）。ローカル・ミラーリング・ユニット２０４が、オン・ラインに戻る時に、データの消失なしに、ローカル・ミラーリング・ユニット２０４のバッファ２１０に残されたデータのネットワークまたは他のジャーニー・リンク２０６を介する転送を自動的に開始するか（はい）。これらのリモート・ミラー・マウント・テストの最後の２つが、このシミュレートされた停電の前および後の両方で実行されなければならないことに留意されたい。これに合格したか（はい）。
【０１８４】
さらに、２００ギガバイトのホスト・ボリューム・サイズで、前のすべてのテストに合格するか（はい）。
【０１８５】
主ホスト・システム２００と同一のオペレーティング・システムを実行するスタンバイ・サーバによって、リモート・ミラーリング・ユニットをディスエーブルし、リモート・ミラーをマウントできるか（はい）。
その後、リモート・ホストが、普通に、その性能に対する悪影響なしに動作するか（はい）。前の２つのテストの動作が、リモート・バックアップ・ホストを、リモート・ミラーリング・ユニットおよびそのリモート・ミラー・ディスク・サブシステム３１２または６１４と同一のＳＣＳＩチェーンに接続することによってサポートされることに留意されたい。
【０１８６】
［要約］
本発明は、ローカルおよび／またはリモートのデータ・ミラーリングのツールおよび技法を提供する。具体的に言うと、本発明によるデータのリモート・ミラーリングのコンピュータ・システムに、１つまたは複数の柔軟なミラーリング特性が含まれる。ローカル・ミラーリング（たとえば、ソースと宛先が１６ｋｍ（１０マイル）未満だけ離れている）のシステムも、そのような柔軟なミラーリング特性を有する。
たとえば、このシステムは、サーバレス宛先を有するという特徴がある。すなわち、このシステムの一実施形態では、ソースとしてのローカル・サーバ２００からローカル・ミラーリング・ユニット２０４を介して宛先としてのリモート・ミラーリング・ユニット２０８、４０８、５０８、６０８、または７０８へ、リモート・ミラーリング・ユニットに接続されたリモート・サーバの使用を必要とせずに、データがミラーリングされる。
【０１８７】
このシステムは、特にリモート・データ・ミラーリング用に設計されたソフトウェアをローカル・サーバ２００にインストールする必要がないという点で、非侵略的という特徴も有することができる。同様に、そのようなソフトウェアを、サーバ３００を含むシステム内の副サーバ３００にインストールする必要はない。その代わりに、各ミラーリング・ユニットが、オペレーティング・システムと、１つまたは複数のリモート・データ・ミラーリング・アプリケーション・プログラム（スレッド、プロセス、タスクなどを含む）を実行する。たとえば、サーバではなくミラーリング・ユニットが、ミラーリングされるデータをバッファリングし、ジャーニー・リンク２０６を介する接続を作成し、監視し、ジャーニー・リンク２０６を介してミラーリングされるデータを送受信し、これによって、サーバをこれらのタスクから解放する。同様に、このシステムは、ディスク・エミュレーションの特徴があり、システムが、ローカル・サーバ２００からローカル・ミラーリング・ユニット２０４へ、標準記憶サブシステム・バスを介してデータをミラーリングするようになっている。適切な標準記憶サブシステム・バスには、ＳＣＳＩ、ファイバ・チャネル、ＵＳＢ、および他のプロプラエタリ・バスが含まれる。そのようなバスを、本明細書ではローカル・ミラーリング・ユニット２０４への「接続」とも称する。
【０１８８】
このシステムは、ＴＣＰジャーニー回線特性および／またはイーサネット・ジャーニー回線特性の特徴を持つことができる。たとえば、あるケースで、システムが、ローカル・サーバ２００から、ＴＣＰクライアントとしてジャーニー回線２０６を介して動作するローカル・ミラーリング・ユニット２０４を介してデータをミラーリングし、リモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、および７０８が、ＴＣＰサーバとして働く。より一般的には、ジャーニー回線特性は、ＳＣＳＩ、元のオフーサイトサーバシリアル接続、ＳＡＮ接続、および類似物によって課せられる高速低待ち時間要件が、ローカル・ミラーリング・ユニット２０４とリモート・ミラーリング・ユニットの間の接続（２０６）に存在しないことを示す。
【０１８９】
このシステムは、多重度特性の特徴を持つこともできる。すなわち、このシステムは、複数のローカル（主）サーバ２００から単一のリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８への多対１ミラーリングを提供することができる。リモート・ミラーリング・ユニット不揮発性記憶装置のデータ・ミラーリング・システムに、各ディスク区画がめいめいのサーバ２００のミラーリングされたデータを保持する、主ネットワーク・サーバ２００ごとに１つのディスク区画、サーバ２００ごとに１つの外部ハード・ディスク６１４、サーバ２００ごとに１つのＲＡＩＤユニット３１２、またはこれらの組合せを含めることができる。さまざまな主（ローカル）サーバ２００は、すべてが同一のオペレーティング・システムを使用することができ、あるいは、異なるオペレーティング・システムの何らかの組合せを使用することができる。いくつかの場合に、宛先不揮発性記憶装置が、主サーバ２００のすべての組み合わされた現在の不揮発性データを保持するのに十分に大きい。もう１つの多重度特性として、このシステムは、所与のローカル（主）サーバ２００から複数のリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８への１対多ミラーリングを提供することができる。
【０１９０】
本発明は、柔軟なミラーリング・ユニットをインストールする方法、そのようなユニットを使用する方法、およびその両方を行う方法を含む方法も提供する。たとえば、柔軟なデータ・ミラーリングを容易にする方法に、インストール・ステップのグループ１３００からの少なくとも２つのステップが含まれる。柔軟なデータ・ミラーリングのもう１つの方法に、１つまたは複数の送信ステップ１３０２が含まれる。
【０１９１】
インストール・ステップの１つに、標準記憶サブシステム・バス２０２を用いてローカル・サーバ２００をローカル・ミラーリング・ユニット２０４に接続１３０４し、これによって、ローカル・ミラーリング・ユニット２０４が、リンク２０２を介する通信でディスク・サブシステムをエミュレートできるようにすることが含まれる。ステップ１３０６に、イーサネット接続およびＴＣＰ接続の少なくとも１つによるデータの伝送のために、ローカル・ミラーリング・ユニット２０４をジャーニー・リンク２０６に接続することが含まれる。ステップ１３０８に、イーサネット接続およびＴＣＰ接続の少なくとも１つによって送信されたデータを受け取るために、リモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８をジャーニー・リンク２０６に接続することが含まれる。テスト・ステップ１３１０で、前述の接続ステップの少なくとも１つの少なくとも部分的な完了の後に、少なくとも１つのミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８をテストする。
【０１９２】
送信ステップ１３０２の１つが、ステップ１３１２であり、このステップでは、ローカル・ミラーリング・ユニット２０４がディスク・サブシステムをエミュレートしている間に、標準記憶サブシステム・バス２０２を介してローカル・サーバ２００からローカル・ミラーリング・ユニット２０４にデータを送る。ステップ１３１４では、ジャーニー・リンク２０６を介してローカル・ミラーリング・ユニット２０４からリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８にデータを送る。ステップ１３１６（ステップ１３１４と同一のデータ送信を用いて実行される場合がある）では、リモート・ミラーリング・ユニットがサーバレスである時すなわち、リモート・ミラーリング・ユニットが副サーバ３００に接続されていない時に、ローカル・ミラーリング・ユニット２０４からジャーニー・リンク２０６を介してリモート・ミラーリング・ユニット２０８、３０８、４０８、５０８、６０８、または７０８にデータを送る。
【０１９３】
これらおよび他の実施形態では、役割逆転１５０６、ホット・スタンバイ・サーバ実施形態１５０８、さまざまなバッファリングおよび他の記憶装置特性１５１０、１５１８、および１５２８、ＳＣＳＩまたは他のバスでのコマンド取込１５１２および再生１５１４、トランザクショナリティ（１５１６）、単一のハードウェア・プラットフォーム上のリモート・ミラーリング・ユニット・ソフトウェアの複数のインスタンスの実行１５２０、アプリケーション状態回復１５２４をサポートするための、所与のアプリケーションの記憶動作の詳細な高度な知識ではなく計時的観察に基づく頻繁にアクセスされるデータの識別１５２２、および正式でない副サーバの使用１５２６に対処するものなどの追加の特徴を有することができる。
【０１９４】
本発明の実施形態は、リモート・ミラーリング・ユニットへの比較的低帯域幅接続のジャーニー・リンク２０６待ち時間をマスクし、これによって、専用ファイバを用いても以前にはミラーリングが不可能であって状況での長距離を介するオフサイト・ミラーリングを容易にし、低コスト・ネットワーク接続を介するミラーリングを容易にするなどの利益を提供することができる。そのような低コスト接続接続は、ピーク・レートをサポートするのではなく平均ディスク・データ変更速度をサポートすることだけに十分な帯域幅を有する場合であっても使用することができる。本発明の実施形態を、サーバ・ミラーリングではなくディスク・ミラーリングに使用することができる。実施形態を、バックアップおよび回復だけではなく、高可用性主記憶システムとして使用することもできる。リモート多対一実施形態では、カーネル・モジュールか、バッファおよびＳＣＳＩまたは他のトランスポート・プロトコルへのソフトウェア・インターフェースを、より汎用のユーザ空間制御モジュールに置換することができ、このユーザ空間制御モジュールは、実際のＳＣＳＩまたは他のトランスポート・プロトコル処理層の必要なしに、システムのインターフェースをエミュレートする。デバイスには、たとえば、ローカル・バッファ、リモート・バッファ、リモート・ミラー、およびＳＣＳＩまたは他のトランスポート・プロトコル層を含めることができる。ＳＡＮ管理ソフトウェアを実行するハードウェア・プラットフォームを、集中化することができる。
【０１９５】
本発明の特定の実施形態（方法、構成された記憶媒体、およびシステム）を、特に図示し、本明細書で説明した。不要な繰り返しを避けるために、１つの実施形態に適用可能な概念および詳細は、他の実施形態に関して必ずしも明白に記述されていない。しかし、他の形で特に示されない限り、本発明の特定の実施形態の説明は、他の実施形態に拡張される。たとえば、発明的システムの議論は、その方法にも関係し、逆も同様であり、発明的方法の説明は、対応する構成された記憶媒体にも関係し、逆も同様である。
【０１９６】
本明細書で使用される用語「ａ」および「ｔｈｅ」と、「ミラーリング・ユニット」などの用語は、一般に、１つまたは複数の指示された項目を含む。本発明を、その本質的特性から逸脱せずに、他の特定の形で実施することができる。説明された実施形態は、例示にすぎず、制限的ではない。見出しは、便宜上のものにすぎない。本発明の範囲は、前述の説明によるのではなく、添付の請求項によって示される。請求項の意味および同等性の範囲に含まれるすべての変更が、請求項の範囲に含まれる。
【図面の簡単な説明】
【図１】
本発明と共に使用するように適合させることもできる、コンピュータのネットワークでの従来技術のミラーリングを示す図である。
【図２】
リモート・サーバなしだが、より大きいバッファを有するリモート・ミラーリング・ユニットを含む、本発明によるコンピュータ・システムを示す図である。
【図３】
ホットスワップ可能ＲＡＩＤユニットおよび比較的小さいバッファを有するリモート・ミラーリング・ユニットを有するリモート・サーバを含む、本発明によるコンピュータ・システムを示す図である。
【図４】
リモート・サーバなしだが、比較的小さいバッファおよびホットスワップ可能ＲＡＩＤユニットを有するリモート・ミラーリング・ユニットを含む、本発明によるコンピュータ・システムを示す図である。
【図５】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に所与にプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファおよび複数のホットスワップ可能ＲＡＩＤユニットを有する単一のリモート・ミラーリング・ユニットとを含む、本発明による多対１ミラーリング用のコンピュータ・システムを示す図である。
【図６】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に所与のプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファおよび複数の個々の外部記憶ボリュームを有する単一のリモート・ミラーリング・ユニットを含む、本発明によるもう１つの多対１コンピュータ・システムを示す図である。
【図７】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に所与のプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファ、複数の区画を有する外部記憶ボリューム、および同様に複数の区画を有するホットスワップ可能ＲＡＩＤユニットを有する単一のリモート・ミラーリング・ユニットを含む、本発明によるもう１つの多対１コンピュータ・システムを示す図である。
【図８】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に異なるプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファおよびホットスワップ可能ＲＡＩＤユニットを有する単一のリモート・ミラーリング・ユニットを含む、本発明によるもう１つの多対１コンピュータ・システムを示す図である。
【図９】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に異なるプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファおよび複数の外部記憶ボリュームを有する単一のリモート・ミラーリング・ユニットを含む、本発明によるもう１つの多対１コンピュータ・システムを示す図である。
【図１０】
リモート・サーバなしだが、めいめいのローカル・ミラーリング・ユニットと共に異なるプラットフォームを実行する複数のローカル・サーバと、比較的小さいバッファ、複数の区画を有する外部記憶ボリューム、および同様の複数の区画を有するホットスワップ可能ＲＡＩＤユニットを有する単一のリモート・ミラーリング・ユニットを含む、本発明によるもう１つの多対１コンピュータ・システムを示す図である。
【図１１】
ローカル・サーバが複数のリモート位置へのデータ・ミラーリングのために複数のローカル・ミラーリング・ユニットに接続される、本発明による１対多ミラーリング・コンピュータ・システムを示す図である。
【図１２】
ローカル・サーバが複数のリモート位置へのデータ・ミラーリングのために１つのマルチポート式ローカル・ミラーリング・ユニットに接続される、本発明による代替の１対多ミラーリング・コンピュータ・システムを示す図である。
【図１３】
本発明の方法を示す流れ図である。
【図１４】
本発明による切替を実行する際に使用することができる、リモート・ミラーリング・ユニット、リモート・サーバ、およびＲＡＩＤユニットの間の二重ホスト構成を示す図である。
【図１５】
本発明の方法をさらに示す流れ図である。
【図１】
2004523017.tif 000003
【図２】
2004523017.tif 000004
【図３】
2004523017.tif 000005
【図４】
2004523017.tif 000006
【図５】
2004523017.tif 000007
【図６】
2004523017.tif 000008
【図７】
2004523017.tif 000009
【図８】
2004523017.tif 000010
【図９】
2004523017.tif 000011
【図１０】
2004523017.tif 000012
【図１１】
2004523017.tif 000013
【図１２】
2004523017.tif 000014
【図１３】
2004523017.tif 000015
【図１４】
2004523017.tif 000016
【図１５】
2004523017.tif 000017
【国際公開パンフレット】
2004523017.tif 000018
2004523017.tif 000019
2004523017.tif 000020
2004523017.tif 000021
2004523017.tif 000022
2004523017.tif 000023
2004523017.tif 000024
2004523017.tif 000025
2004523017.tif 000026
2004523017.tif 000027
2004523017.tif 000028
2004523017.tif 000029
2004523017.tif 000030
2004523017.tif 000031
2004523017.tif 000032
2004523017.tif 000033
2004523017.tif 000034
2004523017.tif 000035
2004523017.tif 000036
2004523017.tif 000037
2004523017.tif 000038
2004523017.tif 000039
2004523017.tif 000040
2004523017.tif 000041
2004523017.tif 000042
2004523017.tif 000043
2004523017.tif 000044
2004523017.tif 000045
2004523017.tif 000046
2004523017.tif 000047
2004523017.tif 000048
2004523017.tif 000049
2004523017.tif 000050
2004523017.tif 000051
2004523017.tif 000052
2004523017.tif 000053
2004523017.tif 000054
2004523017.tif 000055
2004523017.tif 000056
2004523017.tif 000057
2004523017.tif 000058
2004523017.tif 000059
2004523017.tif 000060
2004523017.tif 000061
2004523017.tif 000062
2004523017.tif 000063
2004523017.tif 000064
2004523017.tif 000065
2004523017.tif 000066
2004523017.tif 000067
2004523017.tif 000068
2004523017.tif 000069
2004523017.tif 000070
2004523017.tif 000071
2004523017.tif 000072
2004523017.tif 000073
2004523017.tif 000074
2004523017.tif 000075
2004523017.tif 000076
2004523017.tif 000077
2004523017.tif 000078
2004523017.tif 000079
2004523017.tif 000080
2004523017.tif 000081
2004523017.tif 000082
2004523017.tif 000083
2004523017.tif 000084
2004523017.tif 000085
2004523017.tif 000086
2004523017.tif 000087
【国際調査報告】
2004523017.tif 000088
2004523017.tif 000089