(57)【要約】  例えば、記憶ボリュームをディスマウントする命令を受けて、記憶ボリューム内のオブジェクトが特定され、そのオブジェクトを参照するハンドルが閉じられる。記憶ボリュームにある排他ロックが取得されたら、記憶ボリュームをディスマウントすることができる。記憶ボリュームは、その後再マウントすることができる。
2013530441.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内の第１のノードで記憶ボリュームをディスマウントする命令を受けて、前記記憶ボリュームでオブジェクトを特定することと、
前記オブジェクトを参照するハンドルを閉じることと、
前記閉じることの後に、前記記憶ボリュームで排他ロックを取得することと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む方法をコンピュータシステムに実行させるためのコンピュータ実行可能な命令を有する非一時的コンピュータ読み取り可能な記憶媒体。
【請求項２】
前記方法が、前記特定することの前に、
前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことと、
前記記憶ボリュームで前記排他ロックの取得を試行することと、
をさらに含み、前記試行が不成功の場合に、前記特定することおよび前記閉じることが実行される、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３】
前記閉じることが、
前記記憶ボリュームにアクセスしている各プロセスの内部ハンドルテーブルにアクセスすることであって、前記内部ハンドルテーブルがハンドルを含む複数のエントリを備えることと、
前記記憶ボリュームを参照する前記エントリのうち、前記オブジェクトに対応するエントリを特定することと、
をさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４】
エントリを前記特定することが、
前記エントリでファイルタイプのオブジェクトを特定することと、
前記ファイルタイプのオブジェクトの名前にアクセスすることと、
前記名前に含まれるファイルパスが前記記憶ボリュームにあるファイルに対応するかどうかを判断することと、
を含む、請求項３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５】
前記方法が、前記ファイルと関連付けられたアクセス権限を判断することをさらに含む、請求項４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項６】
前記方法が、前記閉じることの後および前記取得することの前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項７】
前記方法が、前記ディスマウント後に前記記憶ボリュームを再マウントすることをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項８】
前記方法が、前記ハンドルが閉じられたことをログに示すことをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項９】
計算装置によって実行された場合に、
ネットワーク内の第１のノードにある記憶ボリュームにおける排他ロックの初回取得試行の失敗を受けて、前記計算装置で実行中の各プロセスに対応する内部ハンドルテーブルにアクセスすることと、
前記記憶ボリュームを参照する前記内部ハンドルテーブル内のエントリを特定することと、
前記エントリに対応するハンドルを閉じることと、
前記閉じる動作の後に、前記記憶ボリュームで前記排他ロックを取得する２度目の試行を行うことと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む動作を前記計算装置に実行させる命令を記憶しているコンピュータ読み取り可能な媒体を含む製品。
【請求項１０】
前記動作が、前記初回試行の前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項９に記載の製品。
【請求項１１】
前記初回試行が、前記記憶ボリュームをディスマウントする命令を受けて行われる、請求項９に記載の製品。
【請求項１２】
エントリを特定する前記動作が、
前記内部ハンドルテーブルでファイルタイプのオブジェクトを特定することと、
前記ファイルタイプのオブジェクトの名前にアクセスすることと、
前記名前に含まれるファイルパスが前記記憶ボリュームにあるファイルに対応するかどうかを判断することと、
を含む、請求項９に記載の製品。
【請求項１３】
前記動作が、前記ファイルと関連付けられたアクセス権限を判断することをさらに含む、請求項１２に記載の製品。
【請求項１４】
前記動作が、前記閉じる動作の後および前記２度目の試行の前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項９に記載の製品。
【請求項１５】
前記動作が、前記ディスマウント後に前記記憶ボリュームを再マウントすることをさらに含む、請求項９に記載の製品。
【請求項１６】
プロセッサと、
前記プロセッサに連結され、かつ、前記計算装置によって実行された場合に、
記憶ボリュームのファイルバッファ内のデータを前記記憶ボリュームに書き込ませることと、
前記記憶ボリュームで排他ロックを取得する前に、
プロセスが前記記憶ボリュームにアクセスしていると判断することと、
前記プロセスの内部ハンドルテーブルにアクセスすることと、
前記記憶ボリュームを参照する前記内部ハンドルテーブル内のエントリを特定することと、
前記エントリに対応するハンドルを閉じることと、
前記閉じた後に、前記排他ロックを取得することと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む方法を前記計算装置に実行させる命令を記憶しているメモリと、
を備えるコンピュータシステム。
【請求項１７】
エントリを前記特定することが、
前記内部ハンドルテーブルでファイルタイプのオブジェクトを特定することと、
前記ファイルタイプのオブジェクトの名前にアクセスすることと、
前記名前に含まれるファイルパスが前記記憶ボリュームにあるファイルに対応するかどうかを判断することと、
を含む、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記方法が、前記ファイルと関連付けられたアクセス権限を判断することをさらに含む、請求項１７に記載のコンピュータシステム。
【請求項１９】
前記方法が、前記閉じることの後および前記排他ロックが取得される前に、前記ファイルバッファ内のデータが前記記憶ボリュームに書き込まれるようにすることをさらに含む、請求項１６に記載のコンピュータシステム。
【請求項２０】
前記方法が、前記ディスマウント後に前記記憶ボリュームを再マウントすることをさらに含む、請求項１７に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
クラスタ化されたネットワーク（例えばサーバークラスタ）では、複数のエンティティ（例えばコンピュータシステムおよびそれらのシステム上で稼働しているアプリケーション）が、各々同じ記憶ボリュームにアクセスする。それらのアプリケーションのいくつか（本明細書ではプライマリアプリケーションと称する）は、可用性が高められる。残りのアプリケーションは、本明細書においてセカンダリアプリケーションと称する。
【０００２】
様々な理由のいずれかで、プライマリアプリケーションが利用できなくなることがある。例えば、アプリケーションを実行中のサーバーが利用できなくなることがあり、その場合には、サーバーが復旧してサービスを再開するまで、アプリケーションも利用できない。この状況を解消するために、アプリケーションは、別のサーバーでできるだけ早く再開される。フェイルオーバーと称されるプロセスである。
【０００３】
プライマリアプリケーションの実行をあるサーバーから別のサーバーに移転するために、そのアプリケーションによって使用されている記憶ボリュームがディスマウントされ（基本的には記憶ボリュームがオフラインになる）、再マウントされる（基本的には記憶ボリュームがオンラインになり、現在第２のサーバーで実行中のアプリケーションが記憶ボリュームを再び利用できるようになる。記憶ボリュームをディスマウントするには、記憶ボリュームで排他ロックを取得する必要がある。ただし、セカンダリアプリケーションのうちの１つもしくは複数が引き続き記憶ボリュームにアクセスしていると、排他ロックを取得できない場合がある。
【０００４】
従来であれば、このような状況下では、共有記憶装置が強制的にディスマウントされる。これにより、ファイルシステム内でデータの不整合が発生することが多い。そのため管理者は、手動あるいは自動で「ｃｈｋｄｓｋ」などのプログラムを実行してエラーを特定し、修復する必要がある。ｃｈｋｄｓｋで記憶ボリュームを修復できなければ、記憶ボリュームが再マウントされないため、ダウンタイムが増加し、ひいてはプライマリアプリケーションの可用性が下がる。
【０００５】
クラスタ化されたネットワークのいくつかの実施態様は、プライマリアプリケーションが排他ロックの取得試行に干渉しないように、クラスタソフトウェアを使用してプライマリアプリケーションの開始および停止を制御することができる。ただし、セカンダリアプリケーションは、クラスタソフトウェアの制御下にない場合があることから、記憶ボリュームにオープンファイルを有し得る。そのような状況下では、セカンダリアプリケーションが記憶ボリュームからディスマウントしない可能性や、強制的にディスマウントが行われる可能性があり、それによって書き込みエラーが発生し、ひいてはファイルシステムの不整合に至る可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一実施形態では、記憶ボリュームをディスマウントする命令を受けて、記憶ボリュームでオブジェクトが特定され、オブジェクトを参照するハンドルが閉じられる。記憶ボリュームで排他ロックが取得されたら、記憶ボリュームをディスマウントすることができる。
【０００７】
別の実施形態では、記憶ボリュームにおける排他ロックの初回取得試行の失敗を受けて、プロセスの内部ハンドルテーブルにアクセスする。記憶ボリュームを参照する内部ハンドルテーブル内のエントリが特定され、そのエントリに対応するハンドルが閉じられる。その後、記憶ボリュームでの排他ロックの取得が改めて試行される。成功すれば、記憶ボリュームをディスマウントすることができる。
【０００８】
より具体的には、一実施形態において、すべてのキャッシュデータが記憶ボリュームに書き込まれるように、ボリューム・ファイル・バッファがフラッシュされる。次に、記憶ボリュームで排他ロックの取得が試行され得る。排他ロックの取得試行が失敗した場合には、記憶ボリュームにまだアクセスしている少なくとも１つのアプリケーション／プロセスが存在することを表す。その場合には、以下の動作が実行される。プロセスによって開かれるオブジェクトを特定するために、システムにおける各プロセスの内部ハンドルテーブルにアクセスする。各プロセスの内部ハンドルテーブル内のエントリごとに、エントリによって表されるオブジェクトのタイプが特定される。具体的には、「ファイル」タイプと特定されたエントリが特定される。オブジェクトのファイルタイプごとに、オブジェクト名前（例えばオープン・ファイル・ハンドルのファイルパス）が判断される。一実施形態では、付与されたアクセス権限（例えば、読み出しモード、書き込みモード、または読み出し／書き込みモード）も判断される。オブジェクトの名前が、ディスマウントされる記憶ボリュームのファイルに対応する場合には、オープンハンドルがアプリケーション／プロセスに代わって閉じられる。前述の矯正措置は、今後の参照用に記録され得る。その後、ボリューム・ファイル・バッファが再びフラッシュされ、記憶ボリュームで排他ロックの取得が改めて試行される。今述べた動作は、排他ロックが取得されるまで繰り返すことができる。記憶ボリューム用の排他ロックが取得されると、そのボリュームをディスマウントすることができる。このボリュームは、その後再マウントすることができる。
【課題を解決するための手段】
【０００９】
このように、本開示の実施形態によれば、プライマリアプリケーションが停止した後に共有ボリュームをディスマウントすることができ、その結果、ファイルシステムを破損することなく、ノード／システムでアプリケーションを停止し、別のノード／システムで再開することができる。記憶ボリュームをディスマウントする前、およびプライマリアプリケーションを停止した後に、そのボリュームにアクセスしているセカンダリアプリケーション／プロセスが存在する場合には、ファイルシステムがフェイルオーバー後も整合を保つように、そのセカンダリアプリケーション／プロセスのアクティブハンドルが閉じられ、ボリューム・ファイル・バッファがフラッシュされる。本開示にかかる実施形態は、物理環境および仮想環境で使用することができる。本開示にかかる実施形態は、フェイルオーバーに加え、障害復旧に使用することもできる。
【００１０】
当業者であれば、各種図面に示されている実施形態に関する以下の詳細な説明を読めば、本開示の各種実施形態に関するこれらの、および他の目的および利点を認識するであろう。
【００１１】
添付の図面は、本開示の実施形態を示し、記載内容と併せて、本開示の原理を説明するのに役立つ。これらの図面は本明細書に組み込まれ、図中、同様の数字は同様の要素を示す。
【図面の簡単な説明】
【００１２】
【図１】本発明にかかる実施形態を実装できるクラスタ化されたネットワークの一実施例の要素を示すブロック図である。
【図２】本発明にかかる実施形態を実装できるコンピュータシステムの一実施例を示すブロック図である。
【図３Ａ−３Ｃ】本発明の一実施形態にかかる記憶ボリュームのマウント／ディスマウントを示すブロック図である。
【図４】本発明の一実施形態にかかるプロセスおよび関連付けられたハンドルテーブルを示すブロック図である。
【図５】本発明の一実施形態にかかるハンドルテーブルの一実施例である。
【図６】本発明の一実施形態にかかる記憶ボリュームをディスマウントし、再マウントするためのコンピュータ実装されたプロセスのフローチャートである。
【図７】本発明の一実施形態にかかる記憶ボリュームをディスマウントするためのコンピュータ実装されたプロセスのフローチャートである。
【図８】本発明の別の実施形態にかかる記憶ボリュームをディスマウントするためのコンピュータ実装されたプロセスのフローチャートである。
【００１３】
本開示の各種実施形態を詳しく参照する。本開示の実施例が添付の図面に示されている。図面は、これらの実施形態に関して記載されたものであるが、本開示をこれらの実施形態に制限することを意図するものではないものと理解されたい。本開示はむしろ、代替物、変形物、および均等物を網羅することを意図するものであり、これらは、添付の特許請求の範囲によって定められる本開示の精神および範囲内に含まれ得る。さらに、本開示に関する以下の詳細な説明では、本開示を完全に理解してもらうために、数々の具体的な詳細が記載されている。ただし、本開示はこれらの具体的な詳細がなくとも実施され得ることが理解されよう。他の事例では、本開示の態様を無用に分かりにくくするのを避けるために、周知の方法、手順、構成要素、および回路が詳しく記載されていない。
【００１４】
続く詳細な説明には、手順、論理ブロック、処理、およびコンピュータメモリ内のデータビットに対する操作の象徴的表現という観点から提示されている部分もある。これらの説明および表現は、データ処理技術の当業者により、自らの仕事の本質を他の当業者に最も効果的に伝える目的で使用される手段である。本出願では、手順、論理ブロック、プロセスなどが、所望の結果につながる首尾一貫した順序のステップまたは命令となるように考案されている。ステップは、物理量の物理的操作を用いるものである。必ずということではないが、通常であれば、これらの量は、コンピュータシステムで記憶、転送、結合、比較、およびその他の操作が可能な電気または磁気信号という形態をとる。これらの信号を処理、ビット、値、要素、記号、文字、サンプル、ピクセル等と称することは、主に広く使用されているという理由で、時として便利であるということがわかっている。
【００１５】
ただし、これらの用語および同様の用語はすべて、適切な物理ボリュームと関連付ける必要があり、これらのボリュームに適用された便利なラベルに過ぎないということを念頭に置くべきである。以下の説明から明らかであると別段記載されていない限り、本開示全体を通じて、「特定する」、「ディスマウントする」、「閉じる」、「取得する」、「（再）マウントする」、「（再）命名する」こと、「書き込む」、「試行する」こと、「アクセスする」、「判断する」こと、「記録する」、「もたらす」、「表す」などの用語を用いた説明は、コンピュータシステムまたは同様の電子計算装置またはプロセッサ（例えば図２のシステム２１０）の動作およびプロセス（例えば、図６、図７および図８のフローチャート６００、７００および８００）を言及するものと理解される。コンピュータシステムまたは同様の電子計算装置は、コンピュータ・システム・メモリ、レジスタ、あるいはその他のかかる情報記憶装置、伝送装置または表示装置内の物理的な（電子的な）量で表されるデータを操作し、変形させる。
【００１６】
本明細書に記載された実施形態は、プログラムモジュールなど、１つもしくは複数のコンピュータまたは他の装置によって実行される何らかの形態のコンピュータ読み取り可能な記憶媒体に存在するコンピュータ実行可能な命令という一般的文脈で説明され得る。例えば、この例に限らないが、コンピュータ読み取り可能な記憶媒体は、コンピュータ記憶媒体と通信媒体とを備え得る。一般に、プログラムモジュールは、特定のタスクを実行するか、あるいは特定の抽象的なデータ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造体などを含む。プログラムモジュールの機能は、各種実施形態において所望どおりに結合あるいは分散され取得する。
【００１７】
コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造体、プログラムモジュールまたは他のデータなど、情報を記憶するための任意の方法または技術でも実装された揮発性および不揮発性、ならびに着脱可能および着脱不可の媒体を含む。コンピュータ記憶媒体は、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリあるいは他のメモリ技術、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル万能ディスク（ＤＶＤ）、あるいは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、あるいは他の磁気記憶装置、または所望の情報を記憶する目的で使用でき、かつその情報にアクセスして取得できるその他任意の媒体を含むが、これらに限定されない。
【００１８】
通信媒体は、コンピュータ実行可能な命令、データ構造体、およびプログラムモジュールを具現化することができ、任意の情報配送媒体を含む。非限定的な例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体と、音響、無線周波（ＲＦ）、赤外線および他のワイヤレス媒体などのワイヤレス媒体を含む。上記のいずれの組み合わせも、コンピュータ読み取り可能な媒体の範囲内に含めることができる。
【００１９】
本開示にかかる実施形態は概して、共有記憶ボリュームをスマートにディスマウントおよびマウントするための方法およびシステムを提供し、それにより、アプリケーションの実行を、ファイルシステムを破損することなく、あるシステムまたはノードから別のシステムまたはノードへと移せるようにする。ボリュームをディスマウントする前に、ボリュームにアクセスしているアプリケーションが存在する場合には、そのアプリケーションのアクティブハンドルが閉じられ、ボリューム・ファイル・バッファがフラッシュされることにより、ファイルシステムがフェイルオーバー後も整合を保つ。
【００２０】
図１は、本発明にかかる実施形態を実装できるクラスタ化されたネットワーク１００の一実施例の要素を示すブロック図である。図１の実施例では、ネットワークが、Ｎ（例えば３２）個のノードまたはシステム（例えばコンピュータシステムまたはサーバー）を含み、各々が共有記憶装置１３０に連結されている。ネットワーク１００は、（例えば、メンテナンス、アップグレード、パッチのための）予定イベント、あるいは予定外イベント（例えば、ノードが予期せず操作不能になるなど）に対応して、自身のサービスをあるノードから別のノードへと移す機能（例えばフェイルオーバー）を提供することによってサービス（例えばアプリケーション）の有効性を改善する高可用性クラスタ（ＨＡＣ）と称されることがある。それらのサービスは、例えば、データベース、ファイル共有、および電子商取引を含むことができる。
【００２１】
高可用性を実現するために、クラスタソフトウェアを使用して、アプリケーションおよびノード／システムのステータスを監視し、予定イベントまたは予定外イベントに対応して、アプリケーションの実行をあるシステムから別のシステムへと自動的に移すことができる。図１の実施例では、クラスタソフトウェアが、Ｎ個のシステムの各々で動作するエージェント１１２を備える。エージェント１１２は、各システムで動作しているアプリケーションを監視することができ、クラスタソフトウェアによって監視および制御されるアプリケーションの実行の開始、停止、および移動と関連付けられた動作をトリガーすることができる。
【００２２】
システム１、．．．、Ｎで実行中のアプリケーションのすべてがクラスタソフトウェアによって監視および／または制御されるとは限らない。説明を容易にするために、クラスタソフトウェアによって監視および制御されるアプリケーションを、本明細書ではプライマリアプリケーションと称し、他のアプリケーションをセカンダリアプリケーションと称する。例えば、プライマリアプリケーションは、高可用性アプリケーション（高水準の有用性が要求または所望されるアプリケーション）であり得る。
【００２３】
図１の実施例では、共有記憶装置１３０が、データを記憶する目的で使用される１つもしくは複数の物理ディスク、ＬＵＮ（小型コンピュータ・システム・インターフェース（ＳＣＳＩ）論理ユニット）、または他のタイプのハードウェアなど、１つもしくは複数の物理記憶装置を含み得るデータ記憶システムである。記憶ボリューム１３２は、単一の物理的なディスク上に存在し得るか、あるいはボリュームマネージャ（図示せず）の制御下にある複数の物理ディスク（仮想ディスクと称される）にまたがって存在し得る１つもしくは複数のデータのボリューム（ブロック）を表す。記憶ボリューム１３２は、データが記憶ボリューム１３２に書き込まれる前にデータをバッファするボリューム・ファイル・バッファ１３１を備えることができる。記憶ボリューム１３２は、システム１で実行中のプライマリアプリケーション１１０およびセカンダリアプリケーション１１１によってアクセスすることができる。
【００２４】
図２は、本開示を実装するのに適したコンピュータシステム２１０のブロック図を示す。以降の説明では、各種多数の構成要素および要素が記載されている。それらの構成要素の各種組み合わせおよびサブセットは、図１との関連で言及された装置を実装する目的で使用することができる。例えば、システム１、．．．、Ｎはそれぞれ、コンピュータシステム２１０の一部を除く多くを用いるフル機能のコンピュータシステムであり得るか、それらの装置によって提供される機能をサポートするのに必要なそれらの機能のサブセットだけを利用し得る。例えば、サーバーは、キーボードまたはディスプレイを必要としない場合があり、データ記憶およびデータアクセスの機能と、かかる機能の管理とをサポートする比較的珍しいオペレーティングシステムを実行し得る。
【００２５】
図２の実施例では、コンピュータシステム２１０が、コンピュータシステムの主要サブシステムを相互接続するバス２１２を備える。これらのサブシステムは、セントラルプロセッサ２１４と、システムメモリ２１７と、入出力コントローラ２１８と、オーディオ出力インターフェース２２２を介するスピーカシステム２２０などの外部音声装置と、ディスプレイアダプタ２２６を介するディスプレイスクリーン２２４などの外部装置と、シリアルポート２２８および２３０と、キーボード２３２（キーボードコントローラ２３３とを仲介）と、記憶装置インターフェース２３４と、フロッピーディスク２３８を受容するように動作可能なフロッピー・ディスク・ドライブ２３７と、ファイバ・チャネル・ネットワーク２９０と接続するように動作可能なホスト・バス・アダプタ（ＨＢＡ）・インターフェース・カード２３５Ａと、ＳＣＳＩバス２３９に接続するように動作可能なＨＢＡインターフェースカード２３５Ｂと（ＳＣＳＩの代替は、統合開発環境（ＩＤＥ）およびシリアルＡＴＡ（ＳＡＴＡ）を含む）と、光学ディスク２４２を受容するように動作可能な光学ディスクドライブ２４０と、を備える。また、マウス２４６（または他のポイント＆クリック装置、シリアルポート２２８を介してバス２１２に連結）と、モデム２４７（シリアルポート２３０を介してバス２１２に連結）と、ネットワークインターフェース２４８（バス２１２に直接連結）と、も備える。モデム２４７、ネットワークインターフェース２４８、またはその他何らかの方法を使用して、図１のネットワーク１００に接続を提供することができる。
【００２６】
図２のバス２１２は、セントラルプロセッサ２１４とシステムメモリ２１７との間でのデータ通信を可能にするものであり、上記のとおり、ＲＯＭまたはフラッシュメモリとＲＡＭ（図示せず）とを備え得る。ＲＡＭは一般に、オペレーティングシステムおよびアプリケーションプログラムが読み込まれるメインメモリである。ＲＯＭまたはフラッシュメモリは、他のコードと共に、周辺構成要素との相互動作など、基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ）を格納することができる。
【００２７】
コンピュータシステム２１０に存在するアプリケーションは概して、ハード・ディスク・ドライブ（例えば固定ディスク２４４）、光学ドライブ（例えば光学ドライブ２４０）、フロッピー・ディスク・ユニット２３７、または他の記憶媒体など、コンピュータ読み取り可能な記憶媒体に記憶され、アクセスされる。アプリケーションは、ネットワークモデム２４７またはインターフェース２４８を介してアクセスされたときにアプリケーションおよびデータ通信技術に従って変調される電子信号という形態であり得る。
【００２８】
引き続き図２を参照すると、記憶装置インターフェース２３４は、コンピュータシステム２１０の他の記憶装置インターフェースと同様、固定ディスクドライブ２４４など、情報の記憶装置および／または取得のために標準的なコンピュータ読み取り可能な記憶媒体に接続することができる。固定ディスクドライブ２４４は、コンピュータシステム２１０の一部であってよく、あるいは別々になっており、他のインターフェースシステムを通じてアクセスされるようになっていてもよい。モデム２４７は、電話リンク経由でリモートサーバーとの、あるいはインターネット・サービス・プロバイダ（ＩＳＰ）経由でインターネットとの直接接続を提供し得る。ネットワークインターフェース２４８は、ＰＯＰ（通信アクセスポイント）経由でのインターネットとの直接ネットワークリンクを介してリモートサーバーとの直接接続を提供し得る。ネットワークインターフェース２４８は、デジタル移動電話接続、セルラー方式デジタル・パケット・データ（ＣＤＰＤ）接続、デジタル衛星データ接続などを含む無線技法を用いてかかる接続を提供してもよい。
【００２９】
その他多くの装置またはサブシステム（図２で明示せず）が、同様の方法で接続されてもよい（例えば、文書スキャナ、デジタルカメラなど）。逆に言えば、本開示を実施するのに、図２に示す装置のすべてが存在する必要があるというわけではない。これらの装置およびサブシステムは、図２に示すものとは別の方法で相互接続することもできる。
【００３０】
図２で示すようなコンピュータシステムの動作は、当該技術において十分に周知されており、本出願では詳述しない。本開示を実装するコードは、システムメモリ２１７、固定ディスク２４４、光学ディスク２４２、またはフロッピーディスク２３８のうちの１つもしくは複数などのコンピュータ読み取り可能な記憶媒体に記憶することができる。コンピュータシステム２１０に設けられたオペレーティングシステムは、ＭＳ−ＤＯＳ（登録商標）、ＭＳ−ＷＩＮＤＯＷＳ（登録商標）、ＯＳ／２（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、または別の公知のオペレーティングシステムであってよい。
【００３１】
さらに、本明細書に記載された信号に関して、当業者であれば、信号が第１のブロックから第２のブロックへと送信可能であること、あるいは、信号がブロック間で改変（例えば、増幅、減衰、遅延、ラッチ、バッファ、逆転、フィルタリング、または他の方法による改変）可能であることを認識するであろう。上記実施形態の信号は、あるブロックから次のブロックへと送信されるものと特徴付けられるが、本開示の他の実施形態は、信号の情報的側面および／または機能的側面がブロック間で送信される限り、改変された信号を、かかる直接送信された信号に代わって含んでもよい。関与する回路に物理的制限がある（例えば、いくらかの減衰および遅延が必然的に生じる）ことから、ある程度までは、第２のブロックにおける信号入力を、第１のブロックからの第１の信号出力から派生した第２の信号として概念化することができる。そのため、本明細書で使用されるとおり、第１の信号から派生した第２の信号は、第１の信号または第１の信号が改変されたものを含み、改変の原因が回路上の制限か、第１の信号の情報的側面および／または最終的な機能的側面を変更しない他の回路要素の通過かを問わない。
【００３２】
上記のとおり、本開示にかかる実施形態は、共有記憶ボリュームをスマートにディスマウントおよびマウントするための方法およびシステムを提供し、それにより、ファイルシステムを破損することなく、アプリケーションをあるシステムから別のシステムへと移せるようにする。下記の説明が単一のアプリケーションを言及する場合であっても、その説明は複数のアプリケーションへと容易に拡大することができる。
【００３３】
まず図３Ａを参照すると、プライマリアプリケーション３１０およびセカンダリアプリケーション３１１が、システム１で実行中である。図３Ａの実施例では、アプリケーション３１０および３１１が、記憶ボリューム１３２（例えばボリューム名「Ｆ：＼」）から、データを読み出し、かつ／または書き込むことができる。中でも特に、記憶ボリューム１３２にデータを書き込むアプリケーションを対象としているが、本開示はそのタイプのアプリケーションに制限されない。なお、アプリケーション３３０および３３１は、システム１にマウントされている間、共有記憶ボリューム１３２にアクセスすることができず、システム１からディスマウントされ、システムＮにマウントされれば、共有記憶ボリューム１３２にアクセスできるようになる。
【００３４】
図３Ｂの実施例では、システム１でプライマリアプリケーション３１０の実行を停止して、システム２で冗長プライマリアプリケーション３１０の実行を開始することが決定される。換言すれば、プライマリアプリケーション３１０をシステム１からシステム２にフェイルオーバーすることが決定される。上記のとおり、この決定は、予定または予定外の停止の結果であり得る。プライマリアプリケーション３１０をフェイルオーバーするために、そのアプリケーション、ならびに記憶ボリューム１３２（プライマリアプリケーション３１０によって使用されている記憶ボリューム）を使用している他のアプリケーションがシャットダウンされ、その後記憶ボリューム１３２をディスマウントできるようになる。
【００３５】
プライマリアプリケーション３１０は、クラスタソフトウェア（例えば図１のエージェント１１２）によってシャットダウンすることができる。ただし、本明細書で先述のとおり、セカンダリアプリケーション３１１は、クラスタソフトウェアの制御下にない。一実施形態では、セカンダリアプリケーション３１１をシャットダウンするのに、図６に関連して後述する方法が使用される。
【００３６】
引き続き図３Ｂを参照すると、記憶ボリューム１３２へのアクセス権を有するプライマリおよびセカンダリアプリケーションがシャットダウンされた後に、その記憶ボリューム１３２をディスマウントすることができる。それらの動作が実行されると、プライマリアプリケーション３１０をシステム１からシステム２にフェイルオーバーすることができる。
【００３７】
ここで図３Ｃを参照すると、記憶ボリューム１３２が再マウントされた後、プライマリアプリケーション３１０はシステム２にフェイルオーバーすることができる。より具体的には、図３Ｃの実施例において、記憶ボリューム１３２はシステム２で「Ｆ：＼」として再マウントされ、システム２でプライマリアプリケーションが開始される。その結果、記憶ボリューム１３２は、システム２で動作するその他任意のアプリケーションによって、（システムに２を現在実行中の）プライマリアプリケーション３１０によってアクセスすることができる。
【００３８】
一般的に言って、システム１、２、．．．、Ｎ上で稼働中のアプリケーションの各々は、１つもしくは複数のプロセスと関連付けられ得る。ここで図４の実施例を参照すると、プロセス１はセカンダリアプリケーション３１１と関連付けられており、プロセス２は異なるアプリケーションと関連付けられており、プロセスＭはさらに別のアプリケーションと関連付けられている。説明が単一のプロセスを言及する場合であっても、その説明は複数のプロセスへと容易に拡大することができる。
【００３９】
内部ハンドルテーブルは、各プロセスと関連付けられている。一般に、ハンドルテーブルとは、特定のプロセスと関連付けられたオペレーティングシステム固有のデータ構造体のことであり、そのプロセスによって開かれるオブジェクト（例えば実行オブジェクト）を特定（列記）する。一般にハンドルテーブルは、システム／ノードあたりのプロセスごとに存在する。図４の実施例では、ハンドルテーブル１がプロセス１と関連付けられており、プロセス１はシステム１（図３Ａ）で実行中のセカンダリアプリケーション３１１と関連付けられている。同様に、ハンドルテーブル２はプロセス２と関連付けられており、プロセス２は、クラスタ化されたネットワーク１００（図１）におけるシステム（システム１または別のシステム）のうちの１つで実行中の異なるアプリケーションと関連付けられているという具合である。
【００４０】
一実施形態では、各ハンドルテーブルがいくつかのエントリを含んでおり、各エントリはオープンハンドルを特定する。例えば、ハンドルテーブル１は、エントリ（オープンハンドル）１、２、．．．、Ｋを含む。あるプロセスのハンドルテーブルに記載されている各ハンドルは、そのプロセスと関連付けられたオブジェクト（例えば実行オブジェクト）に対応する。したがって、ハンドルテーブル１は、プロセス１と関連付けられたオブジェクトのリストを含む。
【００４１】
図４に示すとおり、オブジェクトのエントリは、オブジェクトと関連付けられた一意の名前、オブジェクトタイプ、およびオブジェクトと関連付けられた権限などの情報を含むが、これらに制限されない。以降の説明からわかるように、「ファイル」タイプのオブジェクトを特に対象としている。
【００４２】
図５は、本発明の一実施形態にかかるハンドルテーブル１に含まれ得る情報のタイプの一例を示す。ハンドルテーブル１は、オブジェクト、オブジェクトのタイプ、および関連付けられた権限の完全名を含む。ファイルタイプのオブジェクトの場合、完全名は、ファイルが存在する記憶ボリュームの識別情報を含む完全ファイルパスを含む。図５には、完全名／完全ファイルパスが示されておらず、マウントされたボリュームの名前だけが示されている。例えば、ハンドル１は、「Ｆ：＼」（図１の共有記憶装置１３０にある記憶ボリューム１３２）にマッピングされているファイルタイプのオブジェクトと関連付けられており、ハンドル４は、異なる記憶ボリューム「Ｃ：＼」（図示せず）にマッピングされているファイルタイプのオブジェクトと関連付けられている。ファイルタイプのオブジェクトの場合、権限のタイプは、読み出しのみ、書き込みのみ、および読み書き（読み出しおよび書き込み）を含み得る。
【００４３】
図６は、本発明の一実施形態にかかる記憶ボリュームをディスマウントし、再マウントするためのコンピュータ実装されたプロセスのフローチャート６００である。図７は、本発明の一実施形態にかかる記憶ボリュームをディスマウントするためのコンピュータ実装されたプロセスのフローチャート７００である。図８は、本発明の別の実施形態にかかる記憶ボリュームをディスマウントするためのコンピュータ実装されたプロセスのフローチャート８００である。フローチャート６００、７００、および８００は、（例えば図２のシステム２１０における）何らかの形態のコンピュータ読み取り可能な記憶媒体に記憶されているコンピュータ実行可能な命令として実装することができる。
【００４４】
一実施形態において、図６のブロック６０２で、すべてのキャッシュデータ（例えばＮｅｗ  Ｔｅｃｈｎｏｌｏｇｙ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ＮＴＦＳ）データ）が図１の記憶ボリューム１３２（例えば「Ｆ：＼」という名前の記憶ボリューム）に書き込まれるように、ボリューム・ファイル・バッファ１３１（図１）がフラッシュされる。この機能は、オペレーティングシステムによって提供されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）によって発行されたコマンドまたは命令を受けて実行することができる。
【００４５】
一実施形態において、ブロック６０４で、記憶ボリューム１３２（Ｆ：＼）における排他ロックの取得が試行される。この機能は、オペレーティングシステムによって提供される別のＡＰＩによって実行することができる。
【００４６】
ブロック６０６で排他ロックが取得できれば、フローチャートがブロック６１８へと進む。ただし、排他ロックの取得試行が失敗した場合には、まだ記憶ボリューム１３２（Ｆ：＼）にアクセスしている少なくとも１つのアプリケーション／プロセスが存在することを示す。その場合には、フローチャート６００がブロック６０８へと進む。ブロック６０４で使用されたＡＰＩは、排他ロックを取得できなかったことを示すコマンドまたは命令を発行することができる。
【００４７】
ブロック６０８で、それぞれのプロセスによって開かれるオブジェクト（例えばファイル）を特定するために記憶ボリューム１３２にアクセスするシステムにおける各プロセスの内部ハンドルテーブル（図４および図５）が存在する。すなわち、システム１に存在するプロセスに対応する各ハンドルテーブル（図４）にアクセスして、それらのプロセスのいずれかが記憶ボリューム１３２（Ｆ：＼）にアクセスしているかどうかを判断する。
【００４８】
ブロック６１０で、システムにおける各プロセスの内部ハンドルテーブルに記載されたエントリ（オープンハンドル）ごとに、エントリによって表されるオブジェクトのタイプが特定される。具体的には、「ファイル」タイプと特定されたエントリ（ハンドル）が特定される（図５を参照）。一実施形態では、ハンドルテーブルから、ファイルと入力されたオブジェクトだけが検索される。記憶ボリューム１３２（Ｆ：＼）にアクセス（読み出しおよび／または書き込み）するオブジェクトであることから、ファイルタイプのオブジェクトを特に対象としている。
【００４９】
ブロック６１２で、ブロック６１０で特定されたオブジェクトのファイルタイプごとに、オブジェクトの名前（例えばオープン・ファイル・ハンドルのファイルパス）が判断される（図５を参照）。ファイルタイプのオブジェクトが記憶ボリューム１３２（Ｆ：＼）にマッピングされる名前（ファイルパス）を有する場合には、そのハンドルが閉じられる。一実施形態では、付与されたアクセス権限（例えば、読み出しモード、書き込みモード、または読み出し／書き込みモード）も判断される。
【００５０】
ブロック６１４で、オブジェクトの名前が、ディスマウントされる記憶ボリューム１３２のファイルに対応する場合には、オブジェクトのオープンハンドルがアプリケーション／プロセスに代わって閉じられる。プロセスが、ディスマウントされるボリューム以外の記憶ボリュームのファイルにアクセスしている場合には、ディスマウントされる記憶ボリューム（記憶ボリューム１３２）に存在するそれらのオブジェクトのハンドルだけが閉じられ、他の記憶ボリュームにある他のファイルを対象とするハンドルを開いたままとなる。例えば、図５を参照すると、ハンドル１および３は、記憶ボリューム１３２（Ｆ：＼）を参照するので閉じられるが、ハンドル４は、異なる記憶ボリューム（Ｃ：＼）を指し示しているので、（ファイルタイプのオブジェクトと関連付けられていても）閉じる必要がない。オペレーティングシステムによって提供されるＡＰＩを使用して、適切なオープンハンドルを閉じることができる。
【００５１】
何かの理由でハンドルを閉じることができない場合には、プロセス自体を終了することができる。プロセスを終了した場合、そのプロセスは、記憶ボリューム１３２がディスマウントされた後に再開することができる。
【００５２】
図６のブロック６１６で、上記矯正措置が、今後の参照のために記録されてもよい。
【００５３】
その後、フローチャート６００はブロック６０２に戻る。換言すれば、今述べた動作の実行中に蓄積されたＮＴＦＳデータが記憶ボリューム１３２に書き込まれるように、ファイルバッファ１３１が再度フラッシュされる。ブロック６０４で、記憶ボリューム１３２における排他ロックの取得が改めて試行される。（例えば、プロセスのうちの１つが新しいハンドルを開いたという理由で）不成功となった場合には、排他ロックが取得されるまで、今述べた動作が実行される。
【００５４】
ブロック６１８で、記憶ボリューム１３２の排他ロックが取得されると、そのボリュームをディスマウントすることができる。
【００５５】
ブロック６２０で、記憶ボリューム１３２がマウント（再マウント）され、フェイルオーバーシステム／ノード（例えば図３Ｃのシステム２）がこのボリュームを利用できるようになる。
【００５６】
本発明の一実施形態によれば、３つの可能な動作モードがある。モード１では、記憶ボリューム１３２にある排他ロックが取得されないと、クラスタソフトウェアがそのボリュームをオフラインにするための試行を中止する。モード１はその後、手動介入と矯正ステップとに依存する。モード２では、クラスタソフトウェアが、図６に記載した方法で記憶ボリューム１３２をスマートにディスマウントする。モード３では、記憶ボリューム１３２にある排他ロックが取得されないと、記憶ボリュームが強制的にディスマウントされる。
【００５７】
ここで図７を参照すると、ブロック７０２で、記憶ボリュームをディスマウントする命令を受けて、記憶ボリューム１３２（図１）でオブジェクトが特定される。この動作の前に、かつディスマウント命令を受けて、キャッシュデータがファイルバッファ１３１（図１）から記憶ボリューム１３２に書き込まれてもよく、そのボリュームにおける排他ロックの初回取得試行が行われてもよい。
【００５８】
ブロック７０４で、オブジェクトを参照するハンドルが閉じられる。一実施形態では、その記憶ボリュームを参照するハンドルテーブル内のエントリを特定することにより、１つもしくは複数のハンドルが、記憶ボリューム１３２にアクセスしている各プロセスの内部ハンドルテーブル（図４および図５）に最初にアクセスすることによって閉じられる。より具体的には、一実施形態において、ハンドルテーブルにあるファイルタイプのオブジェクトが特定され、ファイルタイプのオブジェクトの名前がアクセスされ、その名前に含まれるファイルパスが記憶ボリューム１３２内のファイルに対応するかどうかが判断される。一実施形態では、ログが更新されて、オープンハンドルが閉じられたということを記録する。
【００５９】
ブロック７０６で、記憶ボリューム１３２において排他ロックが取得される。排他ロックを取得する前に、キャッシュデータがファイルバッファ１３１から記憶ボリューム１３２に再度書き込まれてもよい。
【００６０】
ブロック７０８で、記憶ボリューム１３２をディスマウントできるようになる。記憶ボリューム１３２は、異なるシステム／ノードで再びマウントされ、その後アプリケーションがフェイルオーバーされる。
【００６１】
ここで図８を参照すると、ブロック８０２で、記憶ボリュームにおける排他ロックの初回取得試行の失敗を受けて、各プロセスの内部ハンドルテーブルにアクセスする。この初回試行の前に、おそらくはディスマウント命令を受けて、キャッシュデータがファイルバッファ１３１（図１）から記憶ボリューム１３２（図１）に書き込まれてもよい。
【００６２】
ブロック８０４で、内部ハンドルテーブル（図４および５）にあり、記憶ボリューム１３２を参照するエントリが特定される。より具体的には、本明細書に既述のとおり、一実施形態において、ハンドルテーブルにあるファイルタイプのオブジェクトが特定され、ファイルタイプのオブジェクトの名前がアクセスされ、その名前に含まれるファイルパスが記憶ボリューム１３２内のファイルに対応するかどうかが判断される。
【００６３】
ブロック８０６で、ハンドルテーブル内のエントリに対応するハンドルが閉じられる。
【００６４】
その後ブロック８０８で、記憶ボリューム１３２における２度目の排他ロック取得試行が行われる。２度目の試行を行う前に、キャッシュデータがファイルバッファ１３１から記憶ボリューム１３２に再度書き込まれてもよい。
【００６５】
排他ロックが成功した場合には、ブロック８１０で、記憶ボリューム１３２をディスマウントすることができ、続いて（アプリケーションのフェイルオーバー前に）マウントすることができる。
【００６６】
要約すると、本開示の実施形態によれば、プライマリアプリケーションが停止した後に共有記憶ボリュームをディスマウントすることができ、その結果、ファイルシステムを破損することなく、アプリケーションを停止し、別のノード／システムで再開することができる。記憶ボリュームをディスマウントする前、およびプライマリアプリケーションを停止した後に、そのボリュームにアクセスしているセカンダリアプリケーション／プロセスが存在する場合には、ファイルシステムがフェイルオーバー後も整合を保つように、そのセカンダリアプリケーション／プロセスのアクティブハンドルが閉じられ、ボリューム・ファイル・バッファがフラッシュされる。従来の手法と比較して、セカンダリアプリケーションのハンドルが容易に特定され、閉じられるので、記憶ボリュームを速やかにディスマウントすることができる。そのため、ダウンタイムが減少し、プライマリ（高可用性）アプリケーションの可用性が高まる。
【００６７】
本開示にかかる実施形態は、物理環境および仮想環境で使用することができる。本開示にかかる実施形態は、フェイルオーバーに加え、障害復旧に使用することもできる。
【００６８】
以上の記載内容は、具体的な実施形態を参照しながら説明目的で記載したものである。ただし、上記の代表的な説明は、すべてを網羅したり、本発明を開示された正確な形態に制限したりすることを意図していない。上記教示を鑑みて多くの改変および変形が可能である。これらの実施形態は、本発明およびその実践的な応用例を最もよく説明し、それによって他の当業者が、意図された特定の用途に適し取得する各種改変を用いて本発明および各種実施形態を最良に活用できるようにするために選択および記載されたものである。
【００６９】
以上、本発明にかかる実施形態を記載してきた。本開示について、特定の実施形態で記載してきたが、本発明はかかる実施形態によって制限されると解釈されるべきでなく、下記の請求項に従って解釈されるものと理解されるべきである。
【図１】
2013530441.tif 000003
【図２】
2013530441.tif 000004
【図３Ａ−３Ｂ】
2013530441.tif 000005
【図３Ｃ】
2013530441.tif 000006
【図４】
2013530441.tif 000007
【図５】
2013530441.tif 000008
【図６】
2013530441.tif 000009
【図７】
2013530441.tif 000010
【図８】
2013530441.tif 000011
【手続補正書】
【提出日】平成24年12月26日(2012.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク内の第１のノードで記憶ボリュームをディスマウントする命令を受けて、前記記憶ボリュームで排他ロックの取得を試行することと、
前記試行が不成功である場合に、
前記記憶ボリュームでオブジェクトを特定することと、
前記オブジェクトを参照するハンドルを閉じることと、
前記閉じることの後に、前記記憶ボリュームで前記排他ロックを取得することと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む方法をコンピュータシステムに実行させるためのコンピュータ実行可能な命令を有する非一時的コンピュータ読み取り可能な記憶媒体。
【請求項２】
前記方法が、前記特定することの前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項３】
前記閉じることが、
前記記憶ボリュームにアクセスしている各プロセスの内部ハンドルテーブルにアクセスすることであって、前記内部ハンドルテーブルがハンドルを含む複数のエントリを備えることと、
前記記憶ボリュームを参照する前記エントリのうち、前記オブジェクトに対応するエントリを特定することと、
をさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項４】
前記方法が、前記閉じることの後および前記取得することの前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５】
前記方法が、前記ディスマウント後に前記記憶ボリュームを再マウントすることをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項６】
前記方法が、前記ハンドルが閉じられたことをログに示すことをさらに含む、請求項１に記載のコンピュータ読み取り可能な記憶媒体。
【請求項７】
計算装置によって実行された場合に、
ネットワーク内の第１のノードにある記憶ボリュームにおける排他ロックの初回取得試行の失敗を受けて、前記計算装置で実行中の各プロセスに対応する内部ハンドルテーブルにアクセスすることと、
前記記憶ボリュームを参照する前記内部ハンドルテーブル内のエントリを特定することと、
前記エントリに対応するハンドルを閉じることと、
前記閉じる動作の後に、前記記憶ボリュームで前記排他ロックを取得する２度目の試行を行うことと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む動作を前記計算装置に実行させる命令を記憶しているコンピュータ読み取り可能な媒体を含む製品。
【請求項８】
前記動作が、前記初回試行の前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項７に記載の製品。
【請求項９】
前記初回試行が、前記記憶ボリュームをディスマウントする命令を受けて行われる、請求項７に記載の製品。
【請求項１０】
エントリを特定する前記動作が、
前記内部ハンドルテーブルでファイルタイプのオブジェクトを特定することと、
前記ファイルタイプのオブジェクトの名前にアクセスすることと、
前記名前に含まれるファイルパスが前記記憶ボリュームにあるファイルに対応するかどうかを判断することと、
を含む、請求項７に記載の製品。
【請求項１１】
前記動作が、前記閉じる動作の後および前記２度目の試行の前に、前記記憶ボリュームのファイルバッファから前記記憶ボリュームにキャッシュデータを書き込むことをさらに含む、請求項７に記載の製品。
【請求項１２】
前記動作が、前記ディスマウント後に前記記憶ボリュームを再マウントすることをさらに含む、請求項７に記載の製品。
【請求項１３】
プロセッサと、
前記プロセッサに連結され、かつ、前記計算装置によって実行された場合に、
記憶ボリュームのファイルバッファ内のデータを前記記憶ボリュームに書き込ませることと、
前記記憶ボリュームで排他ロックを取得する前に、
プロセスが前記記憶ボリュームにアクセスしていると判断することと、
前記プロセスの内部ハンドルテーブルにアクセスすることと、
前記記憶ボリュームを参照する前記内部ハンドルテーブル内のエントリを特定することと、
前記エントリに対応するハンドルを閉じることと、
前記閉じた後に、前記排他ロックを取得することと、
前記排他ロックを取得した後に前記記憶ボリュームをディスマウントすることと、
を含む方法を前記計算装置に実行させる命令を記憶しているメモリと、
を備えるコンピュータシステム。
【請求項１４】
エントリを前記特定することが、
前記内部ハンドルテーブルでファイルタイプのオブジェクトを特定することと、
前記ファイルタイプのオブジェクトの名前にアクセスすることと、
前記名前に含まれるファイルパスが前記記憶ボリュームにあるファイルに対応するかどうかを判断することと、
を含む、請求項１３に記載のコンピュータシステム。
【請求項１５】
前記方法が、前記閉じることの後および前記排他ロックが取得される前に、前記ファイルバッファ内のデータが前記記憶ボリュームに書き込まれるようにすることをさらに含む、請求項１３に記載のコンピュータシステム。
【国際調査報告】
2013530441.tif 000012
2013530441.tif 000013
2013530441.tif 000014
2013530441.tif 000015