(57)【要約】コアダンプ手順（例えば、故障したファイラのワークメモリの転送）が存在する状況においてクラスタ化されたパートナファイラによる故障したファイラのより迅速なテイクオーバが可能なシステム及び方法。時間を節約するために、パートナによる故障したファイラの通常のアクティブファイルサービスディスクのテイクオーバと同時に、コアダンプを実行することが許され、テイクオーバを開始するために、コアダンプの完了を待つ必要はない。簡単に言えば、これは次のような方法で達成される。通常ファイルサービスに関係しない単一のディスクにコアダンプを書き込み、コアダンプからの干渉を受けることなく、通常ファイルサービスのテイクオーバを進めることができるようにする。クラスタを形成する２つのファイラの両方に対し、コアダンプディスクを識別するための信頼性の高い手段を設け、それにより、信頼性の低い通信手段に対するテイクオーバの依存性を除去する。
2007523404.tif 000002
【特許請求の範囲】
【請求項１】
ファイルサービスデータを記憶するディスクを所有し、ファイルサービスデータを持たない少なくとも１つのディスクを所有する故障したファイラを、クラスタ化されたパートナファイラによってテイクオーバする方法であって、前記故障したファイラがコアダンプを実施するように構成され、該コアダンプ中に故障が発生した場合に、前記故障したファイラのメモリ内容がディスクに転送されるものにおいて、前記方法は、
前記ファイルサービスデータを持たない前記ディスク（「コアダンプディスク」）上のコアダンプ属性を前記故障したファイラによって非コアダンプ状態からコアダンプ状態に変更し、前記故障したファイラが所有する他のディスク上の前記コアダンプ属性を非コアダンプ状態に維持するステップと、
前記メモリ内容を前記コアダンプディスクに書き込むステップと、
前記他のディスクの前記コアダンプ属性を前記クラスタ化されたパートナファイラによって識別し、前記故障したファイラが前記コアダンプディスクの所有権を保持したまま、前記他のディスクの所有権を得るステップと、
前記メモリ内容の書き込みの完了時に、前記コアダンプ属性を非コアダンプ状態に変更するステップと、
前記コアダンプディスクの前記コアダンプ属性における前記非コアダンプ状態の識別時に、前記コアダンプディスクの所有権を前記クラスタ化されたパートナファイラによって取得するステップと
からなる方法。
【請求項２】
前記コアダンプディスクは前記故障したファイラが所有するスペアディスクである、請求項１に記載の方法。
【請求項３】
前記コアダンプディスクはコアダンプのための専用ディスクである、請求項１に記載の方法。
【請求項４】
前記コアダンプディスクに書き込まれたメモリ内容から、前記故障したファイラの診断のためのコアダンプデータセットを作成し、前記故障したファイラのルートファイルシステムにコアダンプファイルを書き込むステップを更に含む、請求項１に記載の方法。
【請求項５】
前記メモリ内容を書き込むステップは、前記コアダンプディスクに対する書き込みを前記故障したファイラの故障発生後の所定時間に制限するステップを含む、請求項１に記載の方法。
【請求項６】
前記所定の制限時間は、前記故障したファイラのそれぞれ及び前記クラスタ化されたパートナファイラと通信するネットワークのパニックが発生する最大時間よりも短い、請求項５に記載の方法。
【請求項７】
前記制限するステップは、前記所定の制限時間が経過したときに、前記コアダンプディスクのコアダンプ属性を非コアダンプ状態に変更することを含む、請求項５に記載の方法。
【請求項８】
前記故障したファイラが所有する前記コアダンプディスク、及び、他のディスクのそれぞれは、コアダンプ領域、及び、ファイルシステムデータ記憶領域を含む複数の所定の領域を含み、前記メモリ内容を書き込むステップは、前記メモリ内容を前記コアダンプディスクの前記ファイルシステムデータ記憶領域に書き込むことを含む、請求項１に記載の方法。
【請求項９】
前記コアダンプ領域は、前記コアダンプ属性を記憶するように構成されたコアダンプヘッダを含む、請求項８に記載の方法。
【請求項１０】
相互接続された第１の記憶装置を所有する第１のサーバ、及び、相互接続された第２の記憶装置を所有する第２のサーバを含み、前記第１のサーバと前記第２のサーバが、クラスタ相互接続によって互いに接続され、前記第１のサーバの故障時に、前記第２のサーバが前記第１の記憶装置の所有権をテイクオーバするように構成されたストレージシステムであって、
（ａ）前記第１のサーバの故障の検出に応答して、前記第１のサーバに対し、前記第１のサーバのメモリを前記第１の記憶装置のうちの１つとして選択されたコアダンプ記憶装置に書き込ませ、前記第１の記憶装置がそれぞれコアダンプ属性を有し、（ｂ）前記コアダンプ記憶装置の属性をコアダンプ状態に設定し、前記第１の記憶装置のうちの他のもののコアダンプ属性を非コアダンプ状態に設定するコアダンプ機能と、
（ａ）前記非コアダンプ状態に設定されたコアダンプ属性を有する第１の記憶装置のそれぞれを識別し、（ｂ）前記非コアダンプ状態に設定されたコアダンプ属性を有する第２の記憶装置のそれぞれの所有権を第１のサーバから第２のサーバに変更し、前記所有権のテイクオーバを前記コアダンプ記憶装置へのメモリの書き込みと平行して進めることができるようにするテイクオーバ機能と
からなるストレージシステム。
【請求項１１】
前記テイクオーバ機能は、所定の制限時間の経過と前記コアダンプ記憶装置へのメモリの書き込みの完了のうちのいずれか早い方の後に、前記コアダンプ記憶装置の所有権を前記第２のサーバに論理的に推測させるように構成される、請求項１０に記載のストレージシステム。
【請求項１２】
前記コアダンプ機能は、前記所定の制限時間の経過と前記コアダンプ記憶装置へのメモリの書き込みの完了のうちのいずれか早い方の後に、前記コアダンプ記憶装置の前記コアダンプ属性を非コアダンプ状態に変更するように構成される、請求項１１に記載のストレージシステム。
【請求項１３】
前記非コアダンプ状態は、中止状態、完了状態、及び、非アクティブ状態のそれぞれを含む、請求項１２に記載のストレージシステム。
【請求項１４】
前記第１の記憶装置はそれぞれ、ファイルサービス活動に携わるディスクドライブからなり、前記コアダンプ記憶装置は、ファイルサービス活動には携わらないスペアディスクからなる、請求項１０に記載のストレージシステム。
【請求項１５】
ストレージシステムにおけるコンピュータ読み取り可能媒体であって、相互接続された第１の記憶装置を所有する第１のサーバと、相互接続された第２の記憶装置を所有する第２のサーバとを含み、前記第１のサーバと前記第２のサーバが、クラスタ相互接続によって互いに接続され、前記第１のサーバの故障時に、前記第２のサーバが前記第１の記憶装置の所有権をテイクオーバするように構成されるものにおいて、前記コンピュータ読み取り可能媒体は、
前記第１のサーバの故障の検出に応答して、前記第１のサーバによって前記第１のサーバのメモリを、前記第１の記憶装置のうちの１つとして選択されたコアダンプ記憶装置に書き込むステップと、
前記コアダンプ記憶装置のコアダンプ属性をコアダンプ状態に設定し、前記第１の記憶装置のうちの他のもののコアダンプ属性を非コアダンプ状態に設定するステップと、
前記非コアダンプ状態に設定されたコアダンプ属性を有する第１の記憶装置のそれぞれを識別するステップと、
前記非コアダンプ状態に設定されたコアダンプ属性を有する第２の記憶装置のそれぞれの所有権を前記第１のサーバから前記第２のサーバに変更し、該所有権のテイクオーバを前記コアダンプ記憶装置へのメモリの書き込みと平行して進めるステップと
を実施するプログラム命令を含む、コンピュータ読み取り可能媒体。
【請求項１６】
所定の制限時間の経過と前記コアダンプ記憶装置へのメモリの書き込みの完了とのいずれか早い方の後に、前記コアダンプ記憶装置の所有権を前記第２のサーバに論理的に推測させるステップを更に含む、請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項１７】
前記所定の時間制限の経過と前記コアダンプ記憶装置へのメモリの書き込みの完了とのいずれかの後に、前記コアダンプ記憶装置のコアダンプ属性を非コアダンプ状態に変更するステップを更に含む、請求項１６に記載のコンピュータ読み取り可能媒体。
【請求項１８】
前記非コアダンプ状態は、中止状態、完了状態、及び、非アクティブ状態のそれぞれを含む、請求項１７に記載のコンピュータ読み取り可能媒体。
【請求項１９】
前記第１の記憶装置はそれぞれ、ファイルサービス活動に携わるディスクドライブからなり、前記第２の記憶装置は、ファイルサービス活動には携わらないスペアディスクからなる、請求項１８に記載のコンピュータ読み取り可能媒体。
【請求項２０】
前記第１の記憶装置はそれぞれ、コアダンプ情報領域、及び、ファイルシステム領域を含み、前記メモリは、前記コアダンプ記憶装置のファイルシステム領域に書き込まれる、請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項２１】
前記第２のサーバによって、前記コアダンプ記憶装置に書き込まれた前記メモリからコアダンプデータセットを生成するステップを更に含み、前記データセットは、前記第１のサーバに関する故障の診断を可能にするように構成される、請求項１５に記載のコンピュータ読み取り可能媒体。
【請求項２２】
前記第２のサーバによって前記コアダンプデータセットを前記第１の記憶装置に記憶された前記第１のサーバのルートファイルシステムに書き込むステップを更に含む、請求項２１に記載のコンピュータ読み取り可能媒体。
【請求項２３】
相互接続された第１の記憶装置を所有する第１のサーバ、及び、相互接続された第２の記憶装置を所有する第２のサーバを含むストレージシステムにおけるテイクオーバのための方法であって、前記第１のサーバと前記第２のサーバが、通信相互接続によって互いに接続され、前記第１のサーバの故障時に、前記第２のサーバが前記第１の記憶装置の所有権をテイクオーバするように構成されるものにおいて、前記方法は、
前記第１のサーバの故障の検出に応答して、前記第１のサーバにより、前記第１のサーバのメモリを、前記第１の記憶装置の１つとして選択されたコアダンプ記憶装置に書き込むステップと、
前記コアダンプ記憶装置のコアダンプ属性をコアダンプ状態に設定し、前記第１の記憶装置のうちの他のもののコアダンプ属性を非コアダンプ状態に設定するステップと、
前記非コアダンプ状態に設定されたコアダンプ属性を有する前記第１の記憶装置のそれぞれを識別するステップと、
前記非コアダンプ状態に設定されたコアダンプ属性を有する前記第２の記憶装置のそれぞれの所有権を前記第１のサーバから前記第２のサーバに変更し、前記所有権のテイクオーバを前記コアダンプ記憶装置へのメモリの書き込みと平行して進めることができるようにするステップと
からなる方法。
【請求項２４】
所定の制限時間の経過と前記コアダンプ記憶装置へのメモリの書き込みの完了とのうちのいずれか早い方の後に、前記コアダンプ記憶装置の所有権を前記第２のサーバに論理的に推測させるステップを更に含む、請求項２３に記載の方法。
【請求項２５】
前記変更するステップは、前記第２のサーバの所有権が確立されるように、第２の記憶装置のそれぞれに対して予約を設定することを含む、請求項２４に記載の方法。
【請求項２６】
前記予約はＳＣＳＩ−３予約からなる、請求項２５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明はネットワークファイルサーバに関し、特に、一群のネットワークファイルサーバの中でパニック状態にある、すなわち故障したファイルサーバを他のファイルサーバによってテイクオーバ（引き継ぎ）することに関する。
【背景技術】
【０００２】
発明の背景
ファイルサーバ
ファイルサーバ（「ファイラ」とも呼ばれる）は、ディスク等のストレージデバイス上での情報の編成に関するファイルサービスを提供するコンピュータである。ファイルサーバ、すなわちファイラは、情報をディレクトリやファイルの階層構造としてディスク上に論理編成するためのファイルシステムを実施するストレージオペレーティングシステムを含む。「ディスク上」の各ファイルは、情報を記憶するように構成された例えばディスクブロックのようなデータ構造のセットとして実施される。一方、ディレクトリは、他のファイルやディレクトリに関する情報を記憶する特殊形式のファイルとして実施される。
【０００３】
ファイラは、クライアント／サーバモデルの情報配送に従って動作し、それによって、多数のクライアントが、サーバ、すなわちファイラ上に記憶されたファイルにアクセスすることができる。このモデルでは、クライアントは、ポイント・ツー・ポイントリンク、共有ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、あるいは、インターネットのような公衆網上で実施される仮想私設ネットワーク（ＶＰＮ）のようなコンピュータネットワークを介してファイラに「接続」するために、コンピュータ上で実行されるファイルシステムプロトコルのようなアプリケーションを有する。
【０００４】
ファイルシステムの１つのタイプは、ディスク上でデータを上書きしないｗｒｉｔｅ−ａｎｙｗｈｅｒｅファイルシステムである。ディスク上のデータブロックをディスクからメモリに取り出し（読み出し）、そのデータブロックを新たなデータで「汚す」場合、そのデータブロックをディスク上の新たな場所に記憶する（書き込む）ことによって、パフォーマンスを最適化する。Ｗｒｉｔｅ−ａｎｙｗｈｅｒｅファイルシステムは、ディスク上にデータが実質的に連続的に配置された最適レイアウトを最初に仮定する場合がある。この最適なディスクレイアウトによって、効率的なアクセスが可能となり、特に、ディスクに対するシーケンシャル読み出しアクセスの場合に、効率的なアクセスが可能となる。ファイラ上で動作するように構成されたｗｒｉｔｅ−ａｎｙｗｈｅｒｅ  ｆｉｌｅ  ｓｙｓｔｅｍの一例は、カリフォルニア州サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているＷｒｉｔｅ  Ａｎｙｗｈｅｒｅ  Ｆｉｌｅ  Ｌａｙｏｕｔ（ＷＡＦＬ）である。ＷＡＦＬファイルシステムはマイクロカーネルの中でファイラのプロトコルスタック全体の一部として実施され、ディスクストレージに関連する。マイクロカーネルは、ネットワークアプライアンスのＤａｔａ  ＯＮＴＡＰストレージオペレーティングシステムの一部として供給され、ネットワーク取り付けされたクライアントからのファイルサービス要求を処理するファイラ上に常駐する。
【０００５】
本明細書で使用される場合、「ストレージオペレーティングシステム」という用語は通常、ストレージシステム上で動作するコンピュータ実行可能コードであって、ファイルシステムセマンティックを実施し、データアクセスを管理するコンピュータ実行可能コードを意味する。その意味で、Ｄａｔａ  ＯＮＴＡＰソフトウェアは、マイクロカーネルとして実施されるそのようなストレージオペレーティングシステムの一例である。ストレージオペレーティングシステムは、ＵＮＩＸやＷｉｎｄｏｗｓ（Ｒ）ＮＴのような汎用オペレーティングシステム上で動作するアプリケーションプログラムとして実施することや、本明細書で説明されるようなストレージアプリケーションのために構成された設定機能を備えた汎用オペレーティングシステムとして実施することも可能である。
【０００６】
ディスクストレージは通常、記憶空間の全体的論理配置を規定する一組の物理的ストレージディスク、並びに、ファイルサービスの必要に応じて使用するために待機する一組の「ホット」スペアディスクからなる１以上のストレージ「ボリューム」として実施される。現在利用可能なファイラ実施形態は、多数の個別のボリュームを提供することができる。各ボリュームは固有のファイルシステムを有し、本明細書の目的では、ボリュームとファイルシステムはほぼ同じ意味で使用される。ボリューム内のディスクは通常、ＲＡＩＤ（Redundant Array of Independent(or Inexpensive) Disks）グループに編成される。ＲＡＩＤ実施形態は、ＲＡＩＤグループ内の所定数の物理的ディスクにわたってデータを「ストライプ状」に書き込み、そのストライプ状のデータに関するパリティ情報を適宜記憶することによって、データ記憶の信頼性／完全性を向上させる。スペアディスクは、それを所有しているファイラによって適切に予約されてはいるが、ファイルサービスには現在使用されていないディスクである。スペアディスクは、ボリューム作成、既存ボリュームの拡張、ＲＡＩＤ再構築、その他災害復旧、あるいは、ファイルサービス処理に関するメンテナンス等の必要に応じて使用するために待機する。一般に、再構築とは、特定のＲＡＩＤグループ内の故障したアクティブファイルシステムを置き換えるためのスペアディスクを割り当て、故障したディスク上に記憶されていたデータをパリティ計算によって無事に残っているディスクから復元し、復元されたデータを代替ディスクに書き込む処理である。
【０００７】
例えばＷＡＦＬファイルシステムの場合、ＲＡＩＤ４実施形態を使用すると有利である。この実施形態では、データを１グループのディスクにわたってストライピングし、そのＲＡＩＤグループ内の特定のディスク上に個別にパリティを記憶する必要がある。ＲＡＩＤ４グループ内の単一のディスクが故障しても、そのグループは品質低下モードで動作を継続することができる。故障したディスクのデータは、生き残ったディスクからパリティ計算によって復元することができる。本明細書に記載されるように、ＲＡＩＤグループは通常、（一台のディスク上に、）ＲＡＩＤ４実施形態又は同等の高信頼性の実施形態に従って構成された少なくとも１つのデータディスク、及び、関連パリティディスク（又は、データ／パリティ）パーティションを有する。ただし、他の構成（例えば、ＲＡＩＤ０、ＲＡＩＤ１、ＲＡＩＤ４、ＲＡＩＤ５、又は、ＲＡＩＤ  ＤＰ（対角パリティ））も可能である。ＲＡＩＤに関する詳しい説明は、Loellyn Cassell他による「QUERY-BASED SPARES MANAGEMENT TECHNIQUE」と題する本願と同じ譲受人の米国特許出願第１０／３９４，８１９号に記載されており、その教示は参照により本明細書に援用される。
【０００８】
後で詳しく説明するように、各ディスクは一連の複数の領域に分割され、それによって、予測可能な態様でディスクに対するデータの書き込みやアクセスを行うことが可能となる。それらの領域は一般に、ＲＡＩＤ層によって使用されるディスクラベルを有する。このディスク上のラベルは、実際には、ストレージシステムに対して有効に取り付けられた各ディスクに関する自己記述情報である。これらのラベルは、ディスクをスペアプール又はスペアボリュームとして動的に編成するために使用される。ディスクラベルに基づいてディスクをスペアプールまたはスペアボリュームとして編成する処理は、「ディスクラベル・アシミレーション」と呼ばれる。ラベルがディスクをボリュームの一部であるものと識別する場合、そのラベルは、ディスクオブジェクトレベルから開始して最大でボリュームオブジェクトレベルまで、そのボリュームのコア内コンフィギュレーションツリーを構築するために使用される。したがって、ディスク上のラベルは、そのディスクがＲＡＩＤグループに参加しているか否かを識別し、更に、そのＲＡＩＤグループがプレックス、ミラー、及び、最終的に、コンフィギュレーションツリーにおけるボリュームオブジェクトに関連するものであるか否かを識別する。ラベルはディスクの既知の場所に配置され、起動処理の際にＲＡＩＤサブシステムが発見プロセスに従ってそのラベルを調べることができるように配置される。この発見プロセスは例えば、本明細書に記載されるディスクイベントスレッドを実施する。
【０００９】
ストレージシステムは、ディスクラベルに基いてアシミレーションを実施し、所与のディスクをアクティブストレージの一般的構成にすべきか否か、及び、その構成内のどの場所にそのディスクを配置すべきかを判断する。ラベルから、あるディスクをアクティブストレージ構成の一部にするのではなく、「スペア」にすべきものと判断される場合、そのディスクはスペアプールに置かれる。
【００１０】
他の領域は、ディスクの目次、そのファイルイシステム領域、コアダンプ情報が記憶されるコアダンプ領域、所有権情報（以下で説明する）、及び、他の関連情報を含み、それらは、そのディスクの記憶空間内に、論理的に、且つ、予測可能な形態で配置される。情報によっては、目次のように、ディスクが接続されたときにストレージシステムが常にアクセスできるように既知のオフセットに配置されるものもある。
【００１１】
ファイルサーバ、すなわちファイラは、内部的にはマイクロプロセッサベースのコンピュータであり、そのコンピュータ内では、１以上のマイクロプロセッサが、システムバスによってマザーボード上に物理的に配置された種々のシステム構成要素に相互接続される。マザーボードは、メモリ、データやコマンドを記憶するためのバッファキャッシュ、ＬＡＮや他のネットワークを介して通信するためのネットワークアダプタ、システムファームウェア（ブート機構を含む）を格納する電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ・・・シャットダウンの際にもエネルギを保持するフラッシュメモリ等を含む場合がある）のようなファームウェア記憶装置、及び、ファイラに取り付けられた物理的ディスクと通信するための種々のストレージアダプタを含む。
【００１２】
ディスクは通常、シェルフ・エンクロージャ・ユニット、すなわち「シェルフ」に収容される。シェルフは、主としてディスクに対する電力供給及び接続が可能な物理的筐体である。
【００１３】
ファイラは複数のグループ、すなわち「クラスタ」に編成することができ、各クラスタでは、２以上のファイラが互いに接続され、クラスタパートナがパニック状態になったとき、すなわち故障したときにフォールトトレラント（故障許容）計算を実施するように構成される。故障した場合、まだ故障していないクラスタパートナが、故障したパートナの処理をテイクオーバし、そのディスクの制御を引き受ける。このテイクオーバは、各ファイラにおける「フェイルオーバー」機能（後で詳しく説明する）や、パニックや故障の際に通信路として機能するファイラ間のクラスタ相互接続によって可能となる。
【００１４】
クラスタ環境では、各ファイラは、所与のクラスタの一部である全てのディスクに物理的に接続され、あるファイラは、そのファイラが提供するボリュームを含むディスクを「所有」しているものとみなされる。この所有権は、ファイラが、そのようなディスク上に記憶されたデータを提供する役割を持つことを意味し、また、特定ディスクを「所有」しているファイラだけが、そのディスクにデータを書き込めるようにすべきことを意味する。この単独所有権は、データの完全性及びコヒーレンシの保証に役立つ。１つの例示的なファイルシステムでは、ディスク所有権情報は２つの場所に、すなわち、各ディスク上の決められた所有権セクタに記憶することができ、それらはスモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）レベル３予約を使用して記憶される。そのようなＳＣＳＩ−３予約については、ＮＣＩＴＳ（National Committee for Information Technology Standards）のＴ１０委員会が、「SCSI Primary Commands-3」に記載しており、この文献は参照により本明細書に完全に援用される。ディスクの所有権に関するこの方法の詳細は、「SYSTEM AND METHOD OF IMPLEMENTING DISK OWNERSHIP IN NETWORKED STORAGE」と題す米国特許出願第１０／０２７，４５７号に記載されており、この文献は参照により本明細書に援用される。当然ながら、ディスク所有権の他のモデルも可能であり、ネットワークストレージに関する知識を持った者であれば、開示した発明が、上記のような所有権に関する方法に限定されないことが分かるであろう。例えば、トポロジベースの所有権方式を使用することも可能である。この方式の１つは従来のＡ／Ｂクラスタ所有権方式である。この方式では、所与のディスクシェルフのファイバチャネルポートＡに接続されたファイラを、そのシェルフ、並びに、そのシェルフに収容された全ディスクのデフォルト所有者であるものとみなす一方、ポートＢに接続されたファイラをテイクオーバ・クラスタパートナであるものとみなす。同様に、ディスクの接続先であるスイッチポートを利用してディスク所有権を判定する、他のトポロジベースの所有者方式を使用することも可能である。この方式は例えば、ディスクのポートＡの接続先であるスイッチポートバンク（例えば、１群の個々のポート）に基づいて所有者を決める。例えば、市販のＢｒｏｃａｄｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｓｙｓｔｅｍｓ，ｉｎｃ．（カリフォルニア州サンノゼ）の、バンク１（ポート０〜７）及びバンク２（ポート８〜１５）に分割された１６個のポートを有する３８００シリーズのスイッチを使用した場合、データ冗長性を確保するために、バンク１に接続されたファイラは、バンク２に接続されたディスクを所有しているものとみなされる。この詳細は、２００３年５月にネットワーク・アプライアンス・インコーポレイテッドから出版された「The FAS900 Series Appliance Cluster Guide （part #210-00342）に記載されている（主に３章を参照）。
【００１５】
ファイラ故障とテイクオーバ
本明細書で使用される場合、クラスタ構成内の或るファイラが「パニック状態」にある、すなわち「故障」していると言った場合、それは、そのファイラが、通常動作を継続することができない致命的な何らか問題の問題を検出したが、そのファイラのクラスタパートナを含めて、そのクラスタ内の他のノードとは通信可能である場合を言う。つまり、そのような故障の判断基準は、機能や性能が多少劣化しても、クラスタ内で通信する機能を維持しているか否かである。そのような故障は、ファイラが例えば電力損失等によってクラスタ内の他のノードと通信することが出来なくなる「ハード故障」と区別するために、「ソフト故障」とも呼ばれることがある。したがって、ストレージオペレーティングシステムがパニック状態に陥ったファイラは一般に、「故障したファイラ」（または、「故障したファイルサーバ」）と呼ばれる。
【００１６】
クラスタ環境においてファイラが故障した場合、クライアントがディスクに対して引き続きアクセスできるようにするために、ボリュームの所有権を故障したファイラから他方のパートナファイラに移転する必要が生じる。「テイクオーバ」または「フェイルオーバ」の１つの方法は、「NEGOTIATED GRACEFUL TAKEOVER IN A NODE CLUSTER」と題する米国特許出願第０９／９３３，８８３号に詳細に記載されている。
【００１７】
故障原因の究明に役立てるために（故障したファイラを「デバッグ」するために）、故障したファイラまたは他のストレージシステムは通常、「コアダンプ」処理を実施する。この処理は、現在のワークメモリの内容をディスク上に書き出す処理（「コアダンプ」とも呼ばれる）である。その後、「セーブコア」と呼ばれるコアダンプ復元プロセスは、そのコアダンプデータを読み出し、「コアダンプファイル」を生成し、それを故障したファイラのルートファイルシステムを記憶する。コアダンプファイルは、パニックが発生した時点におけるシステムメモリ、又は、任意の不揮発性記憶装置のイメージを有する。次に、故障の原因を判定する際に、このイメージが取り出され、調査される。この情報は、故障が発生した時点におけるシステムの状況を示すものであるため、故障の診断に役立つ。
【００１８】
以下で述べるように、パニック状況において重要なのは時間である。つまり、コアダンプの生成全体を迅速に行うために、コアダンプ処理は通常、複数のディスク上に位置する特別に割り当てられた複数のコア領域にわたってコアダンプを分散させる。通常、コアダンプファイルは、（例えば）３メガバイトのデータチャンクとして、故障したファイラが現在所有している１セットの故障していない／動作可能なディスク上の指定領域に書き込まれる。空間に余裕がある場合、ディスクに書き込まれるこの３メガバイトのデータチャンクは一般に圧縮されないが、空間が貴重である場合は圧縮されることもあり、その場合、圧縮されたデータは、一部のディスクが他のディスクよりも先に埋められる可能性があるようにディスクセットにわたって「スプレー」されるのではなく、複数のディスクに順番に書き出される。後でディスクセットから最終的なコアダンプファイルを再構築することができるように、ディスクには番号が付される。
【００１９】
クラスタ環境において、２以上のファイルサーバが、所有権予約によって所定のディスクセットを制御する場合、コアダンプは、故障したファイラの所有ディスクに対してのみしか作成されない。なぜなら、コアダンプはコアダンプを複数のディスク上に分散させ、パートナファイラは、テイクオーバプロセスを開始するためにそれらのディスクにアクセスすることが普通はできないからである。むしろ、それらのディスクは、コアダンプの書き込み時に、故障したファイラの動作によって占有されたままである。コアダンプディスクは通常、パートナファイラが従来のテイクオーバ処理の一部としてアクセスできるものでなければならないので、パートナファイラは、故障したファイラがそのコアダンプを完了するまで、テイクオーバプロセスを遅らせることになる。実際には、テイクオーバプロセスは、次の２つの連続したステップによって進められる。すなわち、まず、故障したファイラによる第１のコアダンプが完了した後、パートナファイラによりテイクオーバを実施する。２つのステップ（コアダンプとテイクオーバ）を進める間に、実際には、故障は「ソフト」から「ハード」に変わることがあり、テイクオーバが完了する前に故障したファイラは完全にアクセス不能になることがある。また、その遅延の間、クライアントは故障したファイラによって処理されるデータをアクセスすることができず、テイクオーバが完了するまで、そのデータを利用することができない。特にクライアントがデータを利用できなくなる可能性が高いブロックベース（ＳＡＮ）の環境では、クラスタからデータを利用できなくなる可能性を可能な限り低減することが非常に望ましい。例えば、ファイルサーバが所定時間内に応答しない場合、ＳＡＮプロトコルは、ネットワーク規模のパニックを引き起こし、それが、全体的なネットワークの停止の原因になる場合がある。したがって、望ましくない状況（及び、致命的なダウンタイム）を避けるために、コアダンプのような全体的なテイクオーバ処理は、可能な限り迅速に実施しなければならない。
【発明の開示】
【課題を解決するための手段】
【００２０】
発明の概要
本発明は、コアダンプ手順（故障したファイラのワークメモリの転送）が存在する状況において、故障したファイラをクラスタ内のテイクオーバパートナによって迅速にテイクオーバすることが可能なシステム及び方法を提供することにより、従来技術の欠点を克服する。時間を節約するために、コアダンプは、通常ファイルサービスデータを記憶している故障したファイラのアクティブディスクのパートナによるテイクオーバと同時に行うことができ、テイクオーバを開始するために、コアダンプの完了を待つ必要はない。簡単に言えば、これは次のような方法によって達成される。通常ファイルサービスに関係しない単一のディスクにコアダンプを書き込み、コアダンプによる干渉を受けることなく、通常ファイルサービスのテイクオーバを進めることができるようにする。クラスタ内の両方のファイラにとってコアダンプディスクを識別するための信頼性の高い手段を提供し、それによって、信頼性のない通信手段に対するテイクオーバの依存性を無くす。コアダンプディスクのテイクオーバが実行されていることを識別するための手段を設け、ＳＣＳＩ−３予約を使用して共有ディスク（の所有権）に対する書き込みアクセスを確保し、テイクオーバがコアダンプによる干渉を受けることを防止すると同時に、故障したファイラが、そのパートナによってテイクオーバされた通常ファイルシステムディスクに対して書き込み続けることを防止する。
【００２１】
本発明の一実施形態によれば、各ファイラは、ファイラの動作の種々の状態をモニタリングするための手段を有する。故障の検出に応答して、故障したファイラは、選択されたコアダンプディスクに対してコアダンプを実施する。コアダンプディスクは、故障したファイラが有しているスペアディスクの中から選択してもよいし、または、故障したファイラとテイクオーバパートナファイラの両方と通信する別のディスクであってもよい。一実施形態において、故障したファイラは、コアダンプディスクに対してコアダンプ手順を開始する際に、コアダンプディスクの既知の「コア」領域にある既知のヘッダ領域に、特定のコアダンプ属性を書き込む。この属性は、故障したファイラがスペアディスクに対してコアダンプを書き込み中であり、パートナファイラはこのスペアディスクに対して予約を行ってはならないということを、パートナファイラに知らせるものである。
【００２２】
故障したファイラは更に、テイクオーバを行うために、パートナファイラに故障を伝達する。パートナファイラは、テイクオーバプロセスの一部として、故障したファイラの全てのディスクをスキャンし、各ディスクのコア領域の属性位置を調べる。パートナファイラは、テイクオーバを実施する際に、コアダンプディスクとしてマークされたディスクを識別し、ＳＣＳＩ予約によって所有権を主張するときに、そのディスクをバイパスする。ディスクに対する予約が済むと、故障したファイラは、それらのディスクに対して書き込むことが出来なくなる。
【００２３】
また、パートナが、故障したファイラのディスクをテイクオーバする際に、故障したファイラは、コア領域に割り当てられた非常に小さな領域に比べて、非常に大きなファイルシステム領域を使用して、コアダンプディスクに対する書き込みを継続する。コアダンプが完了すると、コアダンプディスクの属性は、故障したファイラがコアダンプを完了したことをパートナファイラに知らせるものに変更される。次に、テイクオーバパートナファイラは、その属性をスキャンするときに、コアダンプディスクの所有権を確立することが許される。パートナは、適当な時点で、診断用のコアダンプファイルを生成する。このコアダンプファイルは、後のデバッグに備えて、故障したファイラのルートファイルシステム（今回所有権を得た故障したファイラのディスクにある）に記憶される。コアダンプファイルは通常、適当なユーティリティによる後のアクセスに備えて、ファイルとしてルートボリュームに保存される。
【００２４】
故障したファイラが、単一のコアダンプディスクに対してコアダンプを独立して同時に実施している間に、パートナファイラがテイクオーバを開始できるようにすることで、テイクオーバ遅延が低減され、それによって、クライアントアクセスが複数のディスクに分裂することを最小限に抑えることができる。
【００２５】
本発明の上記の利点及び他の利点は、添付の図面と合わせて下記の説明を参照すると分かりやすいであろう。図中、同様の参照符号は、同一の要素、又は、機能的に類似の要素を意味している。
【発明を実施するための最良の形態】
【００２６】
例示的実施形態の詳細な説明
本発明の教示は、種々のストレージシステムアーキテクチャに適合し、限定はしないが例えば、ネットワーク・アタッチド・ストレージ環境、ストレージ・アタッチド・ネットワーク、及び、クライアント／ホストコンピュータに直接取り付けられたディスクアセンブリに適合する。したがって、「ストレージシステム」という用語は、それらの構成を含むものとして広い意味で解釈しなければならない。ただし、本発明の教示は、いかなるサーバシステムにも適用可能であるものと考えられる。当然ながら、本明細書に記載される種々のプロセス、アーキテクチャ、及び、手順は、ハードウェアでも、ファームウェアでも、一連のステップを実施するためのプログラム命令を有するコンピュータ読み取り可能媒体からなるソフトウェアでも実施することができる。
【００２７】
クラスタファイルサーバ
図１は、図示のようなファイラクラスタ１００を成す２つのノードとして接続された指定されたファイラＡ１５０及びファイラＢ１５０からなる２つのファイラ、すなわちファイルサーバを示すブロック図である。説明の都合上、ファイラＡとファイラＢは、機能的にも構造的にも同様であるものとする。ただし、これらのファイラは、クラスタを形成することができ、各ファイラが他のファイラに対するテイクオーバ／フェイルオーバ機能を有するものでさえあれば、機能的及び構造的に異なるものであってもよい。また、図１のクラスタ構成には、２つのファイラ、及び、関連する２つのディスクシェルフ（１６０）しか描かれていないが、フェイルオーバのために、もっと多くの数のファイラをクラスタ化してもよく、通常は、もっと多くの数のディスクシェルフが使用される。さらに、各ファイラに関連する２以上のボリュームが存在してもよく、各ボリュームは１以上のＲＡＩＤグループから構成される場合もある。本明細書の説明では、「ファイラ」、「ファイルサーバ」、及び、「ストレージシステム」という用語は同じ意味で使用される。
【００２８】
図１によれば、ファイラＡ及びファイラＢ（１５０）は、ネットワーク１２０を介してクライアント１１０にそれぞれ接続されたディスクシェルフＡ及びＢ１６０内のハードディスクＤ１〜Ｄｎのような記憶装置における情報の編成に関するファイルサービスを提供するように構成されたファイルサーバであることが好ましい。クライアント１１０は、パーソナルコンピュータ（ＰＣ）やワークステーションのような汎用コンピュータであってよく、オペレーティングシステム上でファイルシステムプロトコルを備えたアプリケーションを実行するように構成される。また、各クライアント１１０は、クライアント／サーバモデルの情報配送に従ってファイラ１５０と通信する。すなわち、クライアント１１０は、例えば、ファイル又は他のデータコンテナ（例えば、データブロック）を読み出すためにファイラ１５０にサービスを要求する。この例では、クライアント１１０は、集合体または束１４０として構成されたネットワーククラウド１２０、スイッチ１３５、及び、物理的通信リンク１３０を介して、クラスタ１１０内のファイラにアクセスする。
【００２９】
図示していないが、クラスタ１００は、ネットワーク（例えば、ファイバチャネルループ）を介して他のクラスタや個々のファイルサーバ／ファイラに接続することにより、（ＳＡＮのような）ネットワークストレージシステムを形成することができる。そのようなネットワークストレージ構成を実施するために、各ファイラ及び／又はディスクシェルフには、適当なインタフェース及び相互接続（図示せず）が設けられる。
【００３０】
クライアントは通常、クライアントが動作するオペレーティングシステムに適合する既知のファイルシステムプロトコルを使用し、ネットワークを介してファイラと通信する。ネットワーク・ファイル・システム（ＮＦＳ）は、ＵＮＩＸ環境でファイラのアクセスに使用されるファイルシステムプロトコルである。コモン・インターネット・ファイル・システム（ＣＩＦＳ）は、ネットワークを介したリモートファイルアクセスを可能にするためのオープンスタンダードのコネクション指向のプロトコルであり、Ｗｉｎｄｏｗｓ(R)環境においてＰＣにサービスを提供するためにファイラで使用される。したがって、ＣＩＦＳは、ＰＣクライアントからアクセスを受けるファイラのようなサーバに広く使用されている。
【００３１】
下記パラグラフの説明では、ファイラＡ又はファイラＢを単体で参照することがしばしばあるが、この説明が他のファイラにも適用可能であることを忘れてはならない。
【００３２】
ファイラＡ及びＢ（１５０）は、クラスタ処理の一部として、１セットのディスクが最初に割り当てられている。ファイラはストレージオペレーティングシステムによって制御される。ストレージオペレーティングシステムは、ファイルサービスを提供するために最適化された、ネットワーク・アプライアンス・インコーポレイテッドから市販されているＤａｔａ  ＯＮＴＡＰストレージオペレーティングシステムであることが好ましい。この例では、ファイラＡとファイラＢはいずれも、ディスクシェルフＡとディスクシェルフＢの両方にアクセスすることができるが、例えば、ファイラＡはディスクシェルフＡを「所有」し、ファイラＢはディスクシェルフＢを「所有」している。ファイラＡは、ループＡ１５７を介して自分のディスクシェルフＡにアクセスし、ループＢを介してディスクシェルフＢにアクセスする。同様に、ファイラＢは、最初にディスクシェルフＢが割り当てられ、ループＡを介してディスクシェルフＢにアクセスし、ループＢを介してディスクシェルフＡにアクセスする。このジョイントアクセスは、パートナファイラが、故障したファイラのディスクシェルフにアクセスし、テイクオーバ後に、故障したファイラのファイルサービスをクライアントに提供し続けるために必要とされる。
【００３３】
この例では、各ファイラは、ファイラの故障時にフォールトトレラントな動作を確保するための不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）１５１を更に実施する。具体的には、ＮＶＲＡＭは、ファイラのワークメモリに対して所定量のデータ及び情報を記憶し、それらが所定の「コンシステンシ・ポイント」の時点で長期記憶装置に収容されるまで、それらを保持する。
【００３４】
各例示的なファイラは、フェイルオーバ・モニタリング機能を更に有する。この機能は、故障したファイラをクラスタパートナによってテイクオーバしなければならないような故障、パニック状態、又は、他のイベントを検出する。そのような場合、モニタ機能は、後で詳しく説明するようなテイクオーバルーチンを開始する。
【００３５】
クラスタパートナによるファイラのテイクオーバは、クラスタ相互接続１５３のような１以上の通信リンクのうち、ピア・ツー・ピア機能で動作するファイラＡとファイラＢ（１５０）の間に確立された通信リンクを使用する。クラスタ相互接続１５３は、任意の通信媒体及び通信プロトコルを使用することができ、例えば、ファイバ・チャネルやサーバ・ネット・フェイルオーバ・リンクが使用される。これらはいずれも当業界で一般に知られている。なお、本明細書で使用される場合、「ファイバチャネル」とは、コンピュータ業界におけるあらゆるタイプのハードウェア間で迅速にデータを転送するための装置に対して使用される規格の集まりに対する総称である。ファイラＡ及びファイラＢはそれぞれ、ファイラクラスタ１００に対する手入力インタフェースをシステムオペレータに提供する従来のグラフィカルユーザインタフェース（ＧＵＩ）、または、コマンドラインインタフェース（ＣＵＩ）を有する。
【００３６】
図２は、プロセッサ２０２、クラスタ相互接続１５３、ＮＶＲＡＭ１５１、メモリ２０４、ストレージアダプタ２０６、及び、少なくとも１つのネットワークアダプタ２０８を含む例示的なファイラ（ＡまたはＢ）１５０を示すブロック図２００であり、それらはシステムバス２１０によって全て相互接続されている。バス２１０は、従来のＰＣＩ（Peripheral Computer Interconnect）であってもよいし、他の適当な内部バス規格であってもよい。この実施形態では、ストレージアダプタ２０６は、ファイバチャネルリンクによってディスク２１６（Ｄ１〜ＤＮ）に接続される。また、ファイラ１５０は、メモリ２０４に記憶された好ましいストレージオペレーティングシステム２３０を有し、該ストレージオペレーティングシステムは、記憶される情報をディレクトリやファイルの階層構造として論理編成するためのファイルシステムを実施する。ディスク故障によって発生するデータ損失を当該技術分野において既知の態様で防止するために、関連ボリューム内のディスクは通常、１以上のＲＡＩＤ（Redundanta Arrays of Inexpensive Disks）グループに編成される。また、ＲＡＩＤグループによれば、ディスク故障時にもファイラに動作を継続させることができ、それによって、データ利用可能性を向上させることができる。ＲＡＩＤグループは、単一のシェルフ１６０（例えば、図示のようなシェルフＡ又はＢ）の中に完全に収容してもよいし、複数のシェルフを含む複数のハードウェアコンポーネントにわたって配置してもよい。
【００３７】
ストレージアダプタ２０６は、プロセッサ２０２で実行されるストレージオペレーティングシステム２３０と協働し、クライアント１１０によって要求された記憶された情報にアクセスする。この情報は、ハードディスク２１６（Ｄ１〜Ｄｎ）に記憶されている。ストレージアダプタ２０６は、従来の高性能ファイバチャネルシリアルリンクトポロジ（図示せず）のようなＩ／Ｏ相互接続構成を介してディスク２１６に接続するための入出力（Ｉ／Ｏ）インタフェース回路を有する。ストレージアダプタ２０６は、記憶された情報を読み出し、その情報は必要に応じてプロセッサ２０２（又はストレージアダプタ２０６自体）によって処理された後、システムバス２１０を介してネットワークアダプタ２０８に転送され、そこで情報はパケットにフォーマットされ、ネットワーク（図示せず）を介してその情報を要求したクライアント１１０（図２には描かれていない）に返される。
【００３８】
後で詳しく説明するように、例示的なディスクシェルフ１６０内の１以上のディスクは、「スペア」ディスク２５０として指定されることがある。それらは、システム内で「スペア」としてマークされ、必要に応じて使用するために待機する。
【００３９】
図２の各ネットワークアダプタは、図１に示した物理的通信リンクを介してファイラをネットワークノードスイッチ（図示せず）に接続するために必要な機械的、電気的、及び信号回路を有するネットワークインタフェースカード（ＮＩＣ）２０８を含む場合がある。
【００４０】
ストレージオペレーティングシステム
図３は、本発明の例示的実施形態に従って使用される例示的なストレージオペレーティングシステム３００を示すブロック図である。ストレージオペレーティングシステム３００は、Ｄａｔａ  ＯＮＴＡＰストレージオペレーティングシステムの特殊なファイラ処理を各ファイラ上で実施する。ストレージオペレーティングシステムは、図２のネットワークアダプタ２０８を使用して機能するネットワークドライバ（例えば、イーサネット(R)ＮＩＣドライバ）のメディアアクセス層３０２のような一連のソフトウェア層を含む。ストレージオペレーティングシステム３００は、ＩＰ層３０４、並びに、それを支持する搬送機構であるトランスポート・コントロール・プロトコル（ＴＣＰ）層３０６、及び、ユーザ・データグラム・プロトコル（ＵＤＰ）層３０８を更に含む。ファイルシステムプロトコル層は、コモン・インタフェース・ファイル・システム（ＣＩＦＳ）プロトコル３１０、ネットワーク・ファイル・システム（ＮＦＳ）プロトコル３１２、及び、ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）プロトコル３１４をサポートする。
【００４１】
さらに、ストレージオペレーティングシステムは、ＲＡＩＤプロトコルのようなディスクストレージプロトコルを実施するＲＡＩＤ（論理ボリューム管理）層３１６、及び、スモール・コンピュータ・システム・インタフェース（ＳＣＳＩ）プロトコルのようなディスクアクセスプロトコルを実施するディスクドライバ層３１８を含む。ディスクストレージ層３１６は、ディスクに関連するファイラについてディスクの所有権を管理するディスク所有権層３２０を含む。ディスクマイグレーション層３２２は、ディスク所有権階層３２０の一部である。テイクオーバの際に、ファイラのクラスタパートナは、ストレージの所有権を論理的に推測する。これを達成するために、フェイルオーバモニタ層（３４０、以下で説明する）は、テイクオーバされているディスクに対してその予約を行う。
【００４２】
また、ストレージオペレーティングシステムは、フェイルオーバの検出、及び、クラスタパートナによるテイクオーバの開始を管理するフェイルオーバモニタ層または機能３４０を更に含む。また、図面には、ストレージスタックの一部としてクラスタ相互接続機能３４２も描かれている。コアダンプ機能３５０は、ＲＡＩＤ層３１６及びディスクドライバ層３１８と交信し、後で詳しく説明するような本発明の教示によるコアダンプの伝送を可能にする。
【００４３】
ディスクソフトウェア層をネットワーク及びファイルシステムプロトコル層に橋渡しするのは、ファイルシステムデータの記憶や読み出しを制御するファイルシステム層３２４である。この層は、故障したファイラがそのコアダンプを書き込むのに要する時間を計測するのに使用されるカウントダウンタイマ３３６（その機能の詳細は後で説明する）を含む。コアダンプが不確定にフリーズしようとする場合でも、テイクオーバパートナファイラが最終的に全てのディスクに対する制御権を確実に得ることができるようにするために、コアダンプ完了の制限時間（一実施形態では約１分から２分）が決められている。コアダンプがこの制限時間内に完了しない場合、テイクオーバパートナは、コアダンプを中止してから、コアダンプディスクの制御権の獲得を試みる。
【００４４】
なお、代替実施形態として、ファイラは、マルチプロトコル・ストレージ・アプライアンスとして実施することもでき、常駐ストレージオペレーティングシステムは、仮想ディスク（「ｖｄｉｓｋ」）モジュール及びＳＣＳＩターゲットモジュール（図示せず）として実施される仮想化モジュールを備えた仮想化システムとして実施することもできる。ｖｄｉｓｋモジュールは、ファイルシステム３２４の上に層として形成され、システム管理者がマルチプロトコル・ストレージ・アプライアンスに対して発行したコマンドに応答して、最新式ユーザインタフェース（ＵＩ）のような管理インタフェースによるアクセスを可能にする。実際には、ｖｄｉｓｋモジュールは、とりわけ、ＵＩを通してシステム管理者が発行したｖｄｉｓｋ（ＬＵＮ）コマンドの総合的なセットを実施することにより、ＳＡＮデプロイメントを管理する。これらのｖｄｉｓｋコマンドは、ファイルシステム３２４及びＳＣＳＩターゲットモジュールと交信する原始的なファイルシステム処理（「プリミティブ」）に変換され、ｖｄｉｓｋを実現する。一般に、ファイルシステム層３２４は、ブロックベースのディスク上ファイルフォーマット表現を有するファイルシステムを実施する。生成されたファイルシステムは、要求されたボリュームデータが「コア内」に存在しない場合、すなわち、ファイルサーバのメモリに存在しない場合に、それをロード／読出しする働きをする。情報がメモリ内に無い場合、ファイルシステム層は、ｉｎｏｄｅ番号を索引として使用してｉｎｏｄｅファイルを検索し、適当なエントリにアクセスし、論理ブロック番号を読み出す。次に、ファイルシステム層は、その論理ブロック番号をディスクストレージ／ＲＡＩＤ層に渡し、ディスクストレージ／ＲＡＩＤ層は、論理ブロック番号をディスクブロック番号にマッピングし、後者をディスクドライバ層の適当なドライバに送信する。ディスクドライバは、ボリュームからディスクブロック番号にアクセスし、要求されたデータをファイルサーバによって処理するためにメモリにロードする。要求の処理が完了すると、ファイルサーバ及びストレージオペレーティングシステムは、例えばＣＩＦＳ規格に規定される従来の受領確認パケットを、ネットワークを介してクライアントに返答する。なお、クライアントがファイルサーバから受信するためのデータストレージアクセスを実施するために必要とされる上記の種々のストレージオペレーティングシステム層を貫通するソフトウェア「パス」は、結局のところ、ハードウェアで実施しても、ソフトウェアで実施しても、ハードウェアとソフトウェアの組み合わせ（例えば、ファームウェア）で実施してもよい。このマルチプロトコル・ストレージ・アプライアンス構成の詳細については、「STORAGE VIRTUALIZATION BY LAYERING VIRTUAL DISK OBJECTS ON A FILE SYSTEM」と題する本願と同じ譲受人の米国特許出願第１０／２１６，４５３に記載されている。
【００４５】
本発明の更に別の代替実施形態として、ストレージオペレーティングシステムによって実施される一部の機能は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）や特定用途向け集積回路（ＡＳＩＣ）の内部で実施される論理回路として実施してもよい。この種のハードウェア実施形態によれば、クライアント１１０によって発行されたファイルシステム要求に応答してファイラにより提供されるファイルサービスの性能を向上させることができる。また、本発明の更に他の代替実施形態として、ネットワークアダプタ及びストレージアダプタの処理要素は、パケット処理及びストレージアクセス処理のそれぞれの負荷の一部をプロセッサから引き受けるように構成することによって、ファイラによって提供されるファイルサービスの性能が向上する場合がある。
【００４６】
ディスク領域
各ディスクは、ストレージオペレーティングシステムが知っている標準的なセクタ位置に、ヘッダ情報領域を有する。この既知の領域内の種々の固定オフセット位置に、そのディスクに関連する種々のエントリが設けられる。図４に示すように、例示的なディスク（Ｄ１〜Ｄｎ）は、その記憶領域に従ってマッピングされる。ＲＡＩＤ層は通常、このマッピング４００をディスク目次（ＴＯＣ）として実施する。
【００４７】
ブートブロック領域４０２は、例えば最初の１ＫＢブロックに格納され、このディスク上のカーネル領域４０４をどのように使用するかに関する情報を記憶するために予約される。領域４０３は、ディスクＴＯＣ（目次）を有する。ＴＯＣは、簡単に見付けることができるように、ディスクの先頭から固定オフセットの位置に配置される。ＴＯＣ構造内には、ディスク内のコアダンプの有無に関する情報を含むコアダンプデータの場所も設けられている。さらに、ディスクラベル領域（４２０及び４２１、後で詳しく説明する）の中には、そのディスクをスペアディスクとして識別する情報や、そのディスクが通常ファイルサービスに使用されているか否かを示す情報が記憶される。後者（通常ファイルサービス）の場合、更に、そのディスクに関連するＲＡＩＤグループ、プレックス、ミラー、及び、ボリュームを示す情報が存在する。また、ＴＯＣ領域４０３は、特定バージョンのストレージオペレーティングシステムにとって必要とされるディスクに関する重要な情報を更に含む場合があり、例えば、そのディスクが通常ファイルサービスに使用されているか否か、及び、そのディスクの物理的サイズを示すフラグを更に含む場合がある。
【００４８】
カーネル領域４０４は通常、ディスク上の次の領域を占め、例えば、約２０ＭＢの記憶領域を占める場合がある。このカーネル領域は、ストレージオペレーティングシステムのカーネルの適当な部分を記憶する領域として使用される。この実施形態では、後で説明するように、フェイルオーバセクタも設けられる。
【００４９】
また、ディスクは、４ブロック以上がマッピングされたディスク所有権領域４０６を更に含み、ボリューム及びファイルサーバ、並びに、（一実施形態において）対応するストレージ・エリア・ネットワーク（ＳＡＮ）によるディスク所有権に関する情報を有する。
【００５０】
所有権領域４０６の次には、ファイルシステム層がファイルシステムデータ（例えば、ファイルやディレクトリに関するデータ）の記憶に使用するファイルシステム領域４０８がある。ファイルシステム領域は概ね、そのディスクの使用可能なセクタのうちの物理的最後まで延びている。
【００５１】
なお、ブートブロック領域４０１、ＴＯＣ領域４０３、カーネル領域４０４、所有権領域４０６、及び、ファイルシステム領域４０８は、そのディスクの物理的先頭から常に固定オフセットの位置に在するため、容易に見付けることができる。
【００５２】
ファイルシステム層４０８の次には、コア領域４１０がある。この領域は、ディスクの物理的最後にある余分な空き空間から形成される。この実施形態では、以下で例示する種々の領域が存在するために、コア領域のサイズは制限される。コア領域４１０は、マジックナンバー４１３を有するヘッダ４１２を含む。マジックナンバーはヘッダの最初の数バイトに記憶され、故障したファイラとテイクオーバパートナファイラはいずれも、そのマジックナンバーを簡単に見つけてスキャンすることができる。このマジックナンバーは、実際には、他のステータスデータと共にコアダンプが存在するか否かを指定するコアダンプ属性である。例えばこの属性は、「コアダンプ無し」、「コアダンプ実行中」、又は、「コアダンプ完了」の値を有する場合がある。したがって、パートナファイラは、この属性を読み出し、コアダンプ属性ステータスをチェックしてから、不活動ディスクに対する予約を行うことにより、特定ディスクのテイクオーバを開始してもよいか否かを判断することができる。
【００５３】
コア領域４１０の残りの領域４１４は、先の実施形態に従ってコアダンプの一部を記憶するために使用される。ただし、この領域４１４のサイズは、コアダンプ全体を記憶するには不十分なサイズである。いずれにしても、以下で説明するようにより広い領域が設けられ、ヘッダ４１２及びマジックナンバー情報は、オペレーティングシステムによって容易に見付けることができるように、常に定位置に置かれる。
【００５４】
図示の実施形態では、コア領域４１０に続いて、更に幾つかの領域が設けられている。上で概ね述べたように、ディスクラベル１領域（４２０）、及び、ラベル２領域（４２１）が設けられている。ディスク障害によって２つのラベルが両方とも破壊される機会を減らすために、これらのラベル（４２０と４２１）は互いに間隔を空けて配置される。この例では、ラベル１領域（４２０）の後に、ＲＡＩＤシステムが使用するための１ＭＢのＲＡＩＤ領域４２２が予約される。ＲＡＩＤ領域４２２の次には、ファイラ及びそのクラスタパートナの両方のフェイルオーバモニタの種々の機能に関係して使用されるフェイルオーバモニタ領域４２４が設けられている。一対のクラスタ化されたファイラの場合、各ファイラのこの領域４２４に１ＭＢが与えられる（その結果、合計で２ＭＢとなる）。また、フェイルオーバモニタ領域４２４の後には、例えば、ＳＡＮ領域４２６が設けられる。この領域は、ＳＡＮ機能に関係して一般的に使用されるものであり、本明細書で詳しい説明はしない。
【００５５】
なお、ディスクの最後にあるコア領域４１０の後に続く領域は、ディスクの物理的な最後から固定オフセットの位置にある。一般に、ディスク領域の特定のレイアウトについて図示説明されているが、これは１つの例に過ぎず、種々のタイプの領域を備えた種々のレイアウトを使用することが可能である。領域は、固定オフセットの位置に配置される場合もあれば、可変オフセットの位置に配置され、データ検索のためにポインタ（例えば）を使用する場合もある。また、ディスク上に設けられる領域の性質及び情報内容は、異なっていてもよい。代替実施形態において、特定情報タイプについては、特殊な／個別の領域を設けることがある。同様に、この例では、そのような情報を有する領域以外の領域には、特定のディスク情報を含めてもよい。一般に、ディスクは、（とりわけ）、内容の予測可能な識別、コアダンプデータの有無、及び、そのようなデータのステータスが得られる領域のマッピングを有していなければならない。
【００５６】
コアダンプディスク
なお、例示的実施形態は、スペアディスク（又は、従来のＡＴＡ／ＩＤＥディスクのような他の安価な専用ディスク）を使用してコアダンプの内容全体を記憶することを想定している。単一のスペアディスク又は専用ディスクにコアダンプを割り当てることにより、コアダンプを平行して（同時に）進めながら、故障したファイラが有する残りの他のディスク（アクティブファイルサービスディスク及び他のスペアディスク）を全て、テイクオーバプロセスに利用することができる。スペアディスクは一般に、説明したような図４に従ってマッピングされる。ただし、コア領域４１０は今度は主に、コアダンプステータスに関連するマジックナンバー４１３、及び、ファイルシステム領域４０８の中を指し示すヘッダ情報４１２の記憶に使用される。スペアディスク上のファイルシステム領域が、今度は、指定されたコアダンプ記憶領域である。したがって、この領域は、大きなコアダンプを単一のディスク上に記憶するための十分な記憶容量を有する。このようにすると、スペアディスクまたは他の指定されたディスクを使用してコアダンプを受け取ることができ、同時に、他のディスクをテイクオーバに参加させることができ、その結果、テイクオーバを計算する際にかなりの時間を節約することができる。実際には、以下で説明するコアダンプ手順によれば、クラスタパートナによる全ての他のディスクのテイクオーバが完了した後、故障したファイラ上のその場所でコアダンプを継続することができる。
【００５７】
コアダンプ手順
図５は、コアダンププロセスと平行してテイクオーバを実施するために２つのファイラ（ＡとＢ）がクラスタ化された環境において実施される手順５００を例示するフロー図である。当業者であれば、本発明の思想から外れることなく、一部のステップは異なる順序で実施したり、本明細書に記載したもの以外のステップを間に挿入したりすることも可能であることが分かるであろう。
【００５８】
ステップ５０２及び５０３では、２つのファイラ（ＡとＢのそれぞれ）はそれぞれ、正常に動作し（例えば、非パニック状態で通常ファイルサービスを提供し）、自分の動作状態をモニタリングして、その動作の問題を検出する。ファイラＡ（この例では、「故障したファイラ」）は、故障又はパニック状態を検出すると、故障が始まり（ステップ５０４）、パートナＢがそれをテイクオーバすることができるか否かを確認し、そのメモリ全体をコアダンプとして書き込むための単一のディスク（専用のもので、通常は、安価なディスク又はスペアディスク）を探す。コアダンプを行うときに使用されるスペアディスクを探し、選択する方法については、「SYSTEM AND METHOD OF SELECTION AND COMMUNICATION OF A DISK FOR STORAGE OF A COREDUMP」と題する本願と同じ譲受人の米国特許出願第１０／７６４，７７３号に記載されており、その教示は参照により本明細書に援用される。選択手順の例の説明に関して、読者は、この援用された文献の図６を特に参照する。この説明の都合上、通常のファイルサービスには一般に使用されない任意の妥当なディスクを選択することができる。すなわち、故障したファイラからパートナファイラへとファイルサービスを完全に適切に受け渡すために必要となるであろうディスクを選択することができる。そのような「ファイルサービス」には通常、クライアントに関連するデータ、若しくは、クライアントによって要求されたデータの処理及び記憶、あるいは、クラスタが接続される接続先のネットワーク（例えば、ＳＡＮ）の動作にとって通常必要とされるデータなどがある。したがって、故障したファイラに関連するスペアディスクは、ファイルサービスやネットワーク動作に現在関係しないので、よい選択である。
【００５９】
ステップ５０６において、ファイラＡは、自分がコアダンプを実行していることをクラスタ相互接続を介してファイラＢに通知し、ファイラＡは、選択されたコアダンプディスク上の指定されたコアダンプ属性領域（図４のマジックナンバー４１３）を、単一のスペア（又は、指定された）ディスクがそのコアダンプを受信していることを示すものに変更する。ステップ５０８において、ファイラＡは、自分のメモリを選択されたコアダンプディスク上の指定されたファイルシステム領域に書き込む。故障したファイラＡがメモリを選択されたディスクに書き込むのと同時に（平行して）、ステップ５０９において、ファイラＢ（「パートナファイラ」）は、ファイラＡのウェイクアップインターバルを設定する。これは、その時間の経過後に、コアダンプが完了していなくても、コアダンプディスクを予約することになる基準である。（ステップ５０９において）ファイラＢは、ファイラＡのコアダンプディスクを識別し、コアダンプディスクを除く、ファイラＡの全てのディスクに対して予約（例えば、ＳＣＳＩ予約）を行う。コアダンプディスクの識別は、（一実施形態として）上で援用した「SYSTEM AND METHOD OF SELECTION AND COMMUNICATION OF A DISK FOR STORAGE OF A COREDUMP」の図７に示されている手順に従って行うことができる。つまり、ファイラＢは、ファイラＡが所有する全てのディスクのラベルを検査し、どのディスクが、ファイラＡがコアダンプの書き込みに使用してよいディスクであるかを判定する。また、ファイラＢは、それらのスペアのコア領域にあるコアマジックナンバー４１３を検査し、どのディスクがコアダンプディスクであるものとしてマークされているかを判定する。最後に、ファイラＢは、ファイラＡの全てのスペアディスク上のコアマジックナンバーを検査した後、ファイラＡのそれらのスペアディスクのうちのどれに対して実際にコアダンプを書き込むかを決定する。
【００６０】
ファイラＢは、上記のステップによって、ファイラＡがコアダンプの書き込みを行っているスペアディスクを識別した場合、ファイラＢは、そのディスクに対する予約を控える。このときパートナファイラＢは、予約されたディスクを全て所有しているものとみなす（ステップ５１１）。したがって、ファイラＢは、テイクオーバを行う際に、コアダンプディスクをバイパスし、故障したファイラＡがコアダンプを行うためにそのコアダンプディスクをアクセス出来る状態に維持する。ファイラＢによるファイラＡのディスクのテイクオーバが完了した後、ファイラＢは、実行可能になるとすぐに、ファイラＡのディスクからのデータのファイルシステムサービスを復元する（ステップ５１０）。
【００６１】
上記のように、ファイラＢに故障が通知されると（ステップ５０９）、ウェイクアップタイマが駆動される。ウェイクアップタイマ（図３の３３６）は、コアダンプの失敗が発生したときでも、既にテイクオーバされたコアダンプディスク以外の他のすべてのディスクと同様に、コアダンプディスクが最終的にファイラＢによって予約されるように設定される。ファイラＢは、制限時間の経過（ステップ５１２）、または、コアダンプの完了（ステップ５１８）を待つ。この時点で、ファイラＢにおける手順は、コアダンプディスクを予約する働きをする（ステップ５１６）。制限時間内にコアダンプが完了しなかった場合、手順は中止される。コアダンプの終了には、２つのステップが必要とされる。最初のステップは、ファイラＡとファイラＢの間で通信することである。ファイラＢは、コアダンプディスクのコア領域に中止フラグを書き込み、ファイラＡにコアダンプの中止を命じる。次に、ファイラＢはコアダンプディスクを予約する。この予約は、ファイラＡのコアダンプディスクに対する全ての入出力を停止させる働きをし、それによって、コアダンプが確実に終了していることが保証される。ファイラＡがコアダンプを完了した場合、又は、ファイラＡがファイラＢの要求に従ってコアダンプを中止した場合、コアダンプディスクのコア領域に、フラグがセットされる（ステップ５１８）。
【００６２】
ファイラＢの「コア保存」手順は、そのフラグをチェックし（判断ステップ５２０）、予約されていないコアダンプディスクにおけるコアダンプが完了したか、それとも中止されたかを判定する。
【００６３】
ステップ５２２によれば、次に、パートナファイラＢはコアダンプディスクにアクセスし、コアダンプファイルの生成、又は、コアダンプ内容の他の適当なデータ編成を行う。このプロセスは、ファイラＢのストレージオペレーティングシステム３００上のコアダンプユーティリティの一部である「コア保存プロセス」によって命じられる。コアダンプファイルは、ブックマークやインデックス等のような種々の診断目的を有する場合もあれば、故障したファイラのメモリから得られる生のデータしか持たない場合もある。一実施形態によれば、コアダンプファイルが作成されても、ＲＡＩＤ再構築を目的としたコアダンプディスクに対するアクセスはすべて禁止される場合がある（なぜなら、そのような再構築の目的には、スペアディスクを利用することができるため）。コアダンプファイルを作成した後、次に、そのコアダンプファイルは、後のデバッグに備えて、ファイラＡのルートファイルシステムに書き込まれる（同じくステップ５２２）。故障したファイラＡのルートファイルシステムは一般に、テイクオーバされた（コアダンプディスクではない）ディスク上に存在し、そのディスクは、今度は、ファイラＡにあるかのように、パートナファイラＢによって自由にアクセスすることができる。
【００６４】
この時間全体を通じて、ファイラＢへのクライアントによるアクセスは維持される。ステップ５１０におけるテイクオーバによれば、通常ならばコアダンプによって受けることになる過度の遅延を受けることなく、クライアントは、ファイラＡの一般的データに対するアクセスを既に得ている。
【００６５】
上記のように、コアダンプディスクは、コアダンプの状態を意味するフラグを有し、そのフラグは最終的にファイラＢによって読み出される。この属性は、例えば「コアダンプ実行中」または「コアダンプ完了」といったように、コアダンプがアクティブであるか、完了しているか、又は、実行中であるかのいずれかを示すコアダンプ状態を表わすことができる。言い換えるならば、この属性は、例えば「コアダンプ無し」または「コアダンプ中止」といったように、コアダンプが存在しない／非アクティブであることや、コアダンプがその完了前に中止されたことを意味する非コアダンプ状態を表わすことができる。実施形態によっては、単純な「コアダンプ無し」という属性ではなく、「コアダンプ中止」という属性を具体的に使用することで、診断情報が得られる場合もあると考えられる。また、代替実施形態として、部分的に書き込まれたコアダンプを、完全なコアダンプと同様のやり方でファイルとして予約する場合がある。ファイラＢがコアダンプファイルを書き出した後、スペアを「ホット」スペアとして使用できるようにするために、この属性は「コアダンプ無し」に変更される場合がある（ステップ５２４）。
【００６６】
当然ながら、システム故障時にコアダンプのような手順を実施するための単一のディスクの使用は、必ずしもクラスタレベルで実施する必要はない。むしろ、本明細書に記載した原理は、１つのディスクを故障した所有システムによって選び出して所有し、それを使用してシステムメモリをダンプするとともに、所有された他のディスクをネットワーク環境の故障していない要素によって即座にテイクオーバすることが可能であるような、ＳＡＮ又はその他のネットワークストレージ環境にも適用することができる。
【００６７】
幾つかの例として、コアダンプディスクは、通常記憶処理に直ぐに必要となる場合があり、従って、コアダンプディスクは、コアダンプの完了前、又は、コアダンプファイルの生成前に、空きスペアディスクプールに移動させなければならない場合がある。通常ファイルサービスにコアダンプディスクが必要となった場合、コアダンプディスクは、テイクオーバパートナファイラＢによって単純に予約することができ、それに従って、故障したファイラＡによるそれ以上のコアダンプは実質的に中止される。故障したファイラＡは、もはやディスクを所有しないことになる。あるいは、コアダンプディスク上の領域ヘッダ４１２にあるコアマジックナンバーに、特殊な「kill」サインを書き込むことができる。故障したファイラＡのコアダンプ機能は、この属性を読み出し、見付けると、コアダンプを中止する。
【００６８】
上記が本発明の例示的実施形態に関する詳細な説明である。本発明の思想及び範囲から外れることなく種々の変更及び追加を行うことが可能である。例えば、ファイルやディレクトリは本明細書において、データを種々のデータ構造として編成可能であることを意味するが、「ファイル」、「ファイルシステム」、「ディレクトリ」等の用語は、種々の「データ構造」、「データセット」、又は、「データ編成」を含むものとして広い意味で解釈しなければならない。同様に、ＲＡＩＤ層３１６はＲＡＩＤ編成を利用しているが、種々のストレージ構成を使用することが可能であるものと考えられる。同様に、本明細書に記載されたストレージデバイスはディスクであるが、本発明の原理は、限定はしないが、電気光学的、半導体的、または、磁気的なものを含めて、種々のストレージデバイス、又は、媒体に適用することができる。さらに、１つのディスクをコアダンプディスクとして使用しているが、２以上のコアダンプディスク、又は、「ストレージデバイス」を使用してコアダンプを記憶する代替実施形態も存在するであろう。故障したファイラは、本明細書に一般的に記載したやり方でそのようなコアダンプディスクの所有権を維持し、他のディスクはテイクオーバに利用することができる。最後に、本明細書に記載した原理のいずれか、又は全ては、ハードウェアで実施することも、コンピュータ上でプログラム命令を実行するコンピュータ読み取り可能媒体からなるソフトウェアで実施することも、ハードウェアとソフトウェアの組み合わせによって実施することも可能であるものと考えられる。したがって、この説明は、単なる例であるものと理解すべきものであり、本発明の範囲を制限するものではない。
【図面の簡単な説明】
【００６９】
【図１】クラスタ構成を成すように接続され、パートナファイラによって故障したファイラをテイクオーバすることができるように構成された２つのファイラを示すブロック図である。
【図２】本発明に使用されるファイラのブロック図である。
【図３】本発明の一実施形態による図２の例示的ファイルサーバに使用されるストレージオペレーティングシステムを示す略ブロック図である。
【図４】本発明の一実施形態において使用されるようなストレージディスクの種々の領域のマッピングを示す図である。
【図５】コアダンプと平行して実行されるクラスタパートナによる故障したファイラのテイクオーバを含む一連のステップを示すフロー図である。
【図１】
2007523404.tif 000003
【図２】
2007523404.tif 000004
【図３】
2007523404.tif 000005
【図４】
2007523404.tif 000006
【図５】
2007523404.tif 000007
【国際調査報告】
2007523404.tif 000008
2007523404.tif 000009