IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-547830分散ファイル・システムからのイベント通知の配信
<>
  • 特表-分散ファイル・システムからのイベント通知の配信 図1
  • 特表-分散ファイル・システムからのイベント通知の配信 図2
  • 特表-分散ファイル・システムからのイベント通知の配信 図3
  • 特表-分散ファイル・システムからのイベント通知の配信 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-14
(54)【発明の名称】分散ファイル・システムからのイベント通知の配信
(51)【国際特許分類】
   G06F 11/07 20060101AFI20231107BHJP
【FI】
G06F11/07 193
G06F11/07 140A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023524138
(86)(22)【出願日】2021-10-20
(85)【翻訳文提出日】2023-04-19
(86)【国際出願番号】 IB2021059680
(87)【国際公開番号】W WO2022096975
(87)【国際公開日】2022-05-12
(31)【優先権主張番号】17/089,851
(32)【優先日】2020-11-05
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】オルソン、ジョン
(72)【発明者】
【氏名】バグワット、ディーパバリ
(72)【発明者】
【氏名】シュムック、フランク
(72)【発明者】
【氏名】アムレカー、シェカール
(72)【発明者】
【氏名】テラン、ルイス
(72)【発明者】
【氏名】ティック、ジェイコブ、モリス
(72)【発明者】
【氏名】ブラウン、エイプリル
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042KK17
5B042MA08
5B042MA14
5B042MC40
(57)【要約】
ファイル・システム・クラスタ内部のイベント情報の配信におけるフォールト・トレランスのための方法において、1つまたは複数のプロセッサは、クラスタのノードによって実行されるファイル・システム・アクティビティに関連付けられたイベント情報を特定する。1つまたは複数のプロセッサは、メモリ内のイベント・ログ・バッファにイベント情報を追加する。1つまたは複数のプロセッサは、回復ログ・バッファからの回復情報のフラッシングに関連付けられた、第1のログ・シーケンス番号(LSN)を受信する。1つまたは複数のプロセッサは、第1のログ・シーケンス番号以下のログ・シーケンス番号を有するイベント・ログ・バッファ内のイベント情報を特定し、イベント情報が第1のログ・シーケンス番号以下のログ・シーケンス番号を含むと判定することに応答して、1つまたは複数のプロセッサは、イベント・ログ・バッファからディスク・ストレージへ、対応するイベント情報をフラッシュする。
【特許請求の範囲】
【請求項1】
コンピュータのノード・クラスタ内部のイベント情報の配信におけるフォールト・トレランスのための方法であって、
1つまたは複数のプロセッサによって、コンピュータのノード・クラスタのノードによって実行される、ファイル・システム・アクティビティに関連付けられたイベント情報を特定すること、
前記1つまたは複数のプロセッサによって、前記イベント情報をメモリ内のイベント・ログ・バッファに追加すること、
前記1つまたは複数のプロセッサによって、回復ログ・バッファからの回復情報のフラッシングに対応する、回復ログ・シーケンス番号に一致する第1のログ・シーケンス番号を受信すること、
前記1つまたは複数のプロセッサによって、前記第1のログ・シーケンス番号以下のログ・シーケンス番号を有する、前記イベント・ログ・バッファに含まれる前記イベント情報を特定すること、
前記イベント・ログ・バッファに含まれる前記イベント情報が前記第1のログ・シーケンス番号以下のログ・シーケンス番号に対応すると判定することに応答して、前記1つまたは複数のプロセッサによって、前記イベント・ログ・バッファからディスク・ストレージへ、対応するログ・シーケンス番号を有する前記イベント情報をフラッシュすること
を含む、方法。
【請求項2】
前記イベント・ログ・バッファに含まれる前記イベント情報と、前記第1のログ・シーケンス番号以下のログ・シーケンス番号との間の連絡の欠如を判定することに応答して、前記1つまたは複数のプロセッサによって、前記回復ログ・バッファへ確認応答を送信し、前記イベント・ログ・バッファからのイベント情報のフラッシングを実行することなく、前記回復ログ・バッファに含まれた回復情報のフラッシングを開始することをさらに含む、請求項1に記載の方法。
【請求項3】
前記1つまたは複数のプロセッサによって、前記コンピュータのノード・クラスタの前記ノードの障害状態を検出することに応答して、ディスク・ストレージへフラッシュされた前記ノード上で実行される少なくとも1つのファイル・システム・アクティビティの前記イベント情報をシンクへ送信することをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記イベント情報が、前記コンピュータのノード・クラスタの前記ノード上で実行される特定のファイル・システム・アクティビティに対応するメタデータを含む、請求項1ないし3のいずれか一項に記載の方法。
【請求項5】
前記コンピュータのノード・クラスタのそれぞれのノードは、プロデューサと、シンクとしてのメッセージ・キューとを含み、前記シンクは、前記コンピュータのノード・クラスタの外部のイベント通知アクセス・リポジトリである、請求項1ないし4のいずれか一項に記載の方法。
【請求項6】
前記コンピュータのノード・クラスタのそれぞれのノードはプロデューサと、シンクとして永続ストレージ上のイベント・ログ・ファイルとを含み、前記シンクは、前記コンピュータのノード・クラスタの外部のイベント通知アクセス・リポジトリである、請求項1ないし4のいずれか一項に記載の方法。
【請求項7】
前記コンピュータのノード・クラスタの前記ノード上で実行される、それぞれのイベント・アクティビティが、前記それぞれのイベント・アクティビティに関連付けられた前記イベント情報に一意に対応するログ・シーケンス番号を受信する、請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
前記イベント情報をフラシュすることが、
前記1つまたは複数のプロセッサによって、前記イベント・ログ・バッファからディスク・ストレージ上のイベント・ログへ、対応するログ・シーケンス番号を有する前記イベント情報をフラシュすること、
前記1つまたは複数のプロセッサによって、ディスク・ストレージ上の前記イベント・ログへ対応するログ・シーケンス番号を有する前記イベント情報の前記フラッシングの後に、ディスク・ストレージ上の回復ログへ前記回復情報をフラッシュすること
をさらに含む、請求項1ないし7のいずれか一項に記載の方法。
【請求項9】
コンピュータ・ノード・クラスタ内部のノードのイベント情報の配信におけるフォールト・トレランスのためのコンピュータ・プログラム製品であって、
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のコンピュータ可読記憶媒体に記憶された、プログラム命令と
を備え、前記プログラム命令は、
コンピュータのノード・クラスタのノードによって実行されるファイル・システム・アクティビティに関連付けられたイベント情報を特定する、プログラム命令と、
前記イベント情報をメモリ内のイベント・ログ・バッファに追加する、プログラム命令と、
回復ログ・バッファからの回復情報のフラッシングに対応する、回復ログ・シーケンス番号に一致する第1のログ・シーケンス番号を受信する、プログラム命令と、
前記第1のログ・シーケンス番号以下のログ・シーケンス番号を有する、前記イベント・ログ・バッファに含まれる前記イベント情報を特定する、プログラム命令と、
前記イベント・ログ・バッファに含まれる前記イベント情報が前記第1のログ・シーケンス番号以下のログ・シーケンス番号に対応すると判定することに応答して、前記イベント・ログ・バッファからディスク・ストレージへ、対応するログ・シーケンス番号を有する前記イベント情報をフラッシュする、プログラム命令と
を含む、コンピュータ・プログラム製品。
【請求項10】
前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令であって、
前記イベント・ログ・バッファに含まれる前記イベント情報と、前記第1のログ・シーケンス番号以下のログ・シーケンス番号との間の連絡の欠如を判定することに応答して、前記回復ログ・バッファへ確認応答を送信し、前記イベント・ログ・バッファからのイベント情報のフラッシングを実行することなく、前記回復ログ・バッファに含まれた回復情報のフラッシングを開始する、前記プログラム命令
をさらに含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令であって、
前記コンピュータのノード・クラスタの前記ノードの障害状態を検出することに応答して、ディスク・ストレージへフラッシュされた前記イベント情報を、シンクへ送信する前記プログラム命令
をさらに含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項12】
前記イベント情報が、前記コンピュータのノード・クラスタの前記ノード上で実行される特定のファイル・システム・アクティビティに対応するメタデータを含む、請求項9または10に記載のコンピュータ・プログラム製品。
【請求項13】
前記コンピュータのノード・クラスタのそれぞれのノードは、プロデューサと、シンクとしてのメッセージ・キューとを含む、請求項9ないし11のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項14】
前記コンピュータのノード・クラスタのそれぞれのノードは、シンクとして永続ストレージ上のイベント・ログ・ファイルを含む、請求項9ないし11のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項15】
前記コンピュータのノード・クラスタの前記ノード上で実行される、それぞれのイベント・アクティビティが、前記それぞれのイベント・アクティビティに関連付けられた前記イベント情報に一意に対応するLSNを受信する、請求項9ないし14のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項16】
前記第1のログ・シーケンス番号以下の前記対応するログ・シーケンス番号を有する前記イベント情報が、前記イベント・ログ・バッファから永続ストレージに存在するイベント・ログへフラッシュされ、前記イベント・ログにフラッシュされた前記イベント情報は、前記回復ログ・バッファから永続ストレージに存在する回復ログへ続いてフラッシュされた前記回復情報に対応する、請求項9ないし15のいずれか一項に記載のコンピュータ・プログラム製品。
【請求項17】
コンピュータ・ノード・クラスタ内部のノードのイベント情報の配信におけるフォールト・トレランスのためのコンピュータ・システムであって、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令と
を含み、前記プログラム命令は、
コンピュータのノード・クラスタのノードによって実行されるファイル・システム・アクティビティに関連付けられたイベント情報を特定する、プログラム命令と、
前記イベント情報をメモリ内のイベント・ログ・バッファに追加する、プログラム命令と、
回復ログ・バッファからの回復情報のフラッシングに対応する、回復ログ・シーケンス番号に一致する第1のログ・シーケンス番号を受信する、プログラム命令と、
前記第1のログ・シーケンス番号以下のログ・シーケンス番号を有する、前記イベント・ログ・バッファに含まれる前記イベント情報を特定する、プログラム命令と、
前記イベント・ログ・バッファに含まれる前記イベント情報が前記第1のログ・シーケンス番号以下のログ・シーケンス番号に対応すると判定することに応答して、前記イベント・ログ・バッファからディスク・ストレージへ、対応するログ・シーケンス番号を有する前記イベント情報をフラッシュする、プログラム命令と
を含む、コンピュータ・システム。
【請求項18】
前記1つまたは複数のプロセッサの少なくとも1つによる実行のために、前記コンピュータ可読記憶媒体に記憶された、プログラム命令であって、
前記イベント・ログ・バッファに含まれる前記イベント情報と、前記第1のログ・シーケンス番号以下のログ・シーケンス番号との間の連絡の欠如を判定することに応答して、前記回復ログ・バッファへ確認応答を送信し、前記イベント・ログ・バッファからのイベント情報のフラッシングを実行することなく、前記回復ログ・バッファに含まれた回復情報のフラッシングを開始する、前記プログラム命令
をさらに含む、請求項17に記載のコンピュータ・システム。
【請求項19】
前記イベント情報が、前記コンピュータ・ノード・クラスタの前記ノード上で実行される特定のファイル・システム・アクティビティに対応するメタデータを含む、請求項17または18に記載のコンピュータ・システム。
【請求項20】
前記コンピュータ・ノード・クラスタの前記ノード上で実行される、それぞれのイベント・アクティビティが、同じそれぞれのイベント・アクティビティに対して、前記ノードの前記回復ログ・バッファの回復情報と関連付けられたLSNと一致する、前記イベント・ログ・バッファに対するログ・シーケンス番号(LSN)を生成する、請求項17ないし19のいずれか一項に記載のコンピュータ・システム。
【請求項21】
前記第1のログ・シーケンス番号以下の前記対応するログ・シーケンス番号を有する前記イベント情報が、イベント・ログ・バッファから永続ストレージ内に存在するイベント・ログへフラッシュされ、前記イベント・ログにフラッシュされた前記イベント情報が、前記回復ログ・バッファから永続ストレージ内に存在する回復ログへ続いてフラッシュされる前記回復情報に対応する、請求項17ないし20のいずれか一項に記載のコンピュータ・システム。
【請求項22】
コンピュータ・ノード・クラスタ内部のノードの障害状態による未配信のイベント情報を再生するための方法であって、
1つまたは複数のプロセッサによって、ストレージ・システムのコンピュータ・ノード・クラスタの第1のノードの障害状態を判定すること、
前記1つまたは複数のプロセッサによって、永続ストレージに存在するイベント・ログに記憶された、ストレージ・システムの前記コンピュータ・ノード・クラスタの前記第1のノード上で実行されるイベントのイベント情報にアクセスすることであって、前記イベント情報は、前記ノード上で実行されるイベント・アクティビティに対応するログ・シーケンス番号(LSN)によって一意に識別され、イベント通知は、前記イベント・アクティビティの前記イベント情報の配信を含む、前記アクセスすること、
前記1つまたは複数のプロセッサによって、前記ストレージ・システムのシンクに配信された最後のイベント通知のLSNを特定することであって、前記シンクは前記ストレージ・システムの複数のイベント通知の受信リポジトリである、前記特定すること、
前記1つまたは複数のプロセッサによって、前記シンクに配信された前記最後のイベント通知の前記LSNより大きいLSNを有する、1つまたは複数のイベント通知を識別すること、
前記1つまたは複数のプロセッサによって、前記イベント・ログから前記ストレージ・システムの前記シンクまで、前記シンクに配信された前記最後のイベント通知のLSNより大きいLSNを有する、前記1つまたは複数のイベント通知を再生すること
を含む、方法。
【請求項23】
前記シンクが、前記コンピュータ・ノード・クラスタの外部のイベント通知アクセス・リポジトリである、請求項22に記載の方法。
【請求項24】
コンピュータ・ノード・クラスタ内部のノードの障害状態による未配信のイベント情報を再生するためのコンピュータ・システムであって、
1つまたは複数のコンピュータ・プロセッサと、
1つまたは複数のコンピュータ可読記憶媒体と、
前記1つまたは複数のコンピュータ可読記憶媒体に記憶されたプログラム命令と
を備え、前記プログラム命令は、
ストレージ・システムのコンピュータ・ノード・クラスタの第1のノードの障害状態を判定する、プログラム命令と、
永続ストレージに存在するイベント・ログに記憶された、ストレージ・システムの前記コンピュータ・ノード・クラスタの前記第1のノード上で実行されるイベントのイベント情報にアクセスするプログラム命令であって、前記イベント情報は、前記ノード上で実行されるイベント・アクティビティに対応するログ・シーケンス番号(LSN)によって一意に識別され、イベント通知は、前記イベント・アクティビティの前記イベント情報の配信を含む、前記プログラム命令と、
前記ストレージ・システムのシンクに配信された最後のイベント通知のLSNを特定するプログラム命令であって、前記シンクは、前記ストレージ・システムの複数のイベント通知の受信リポジトリである、前記プログラム命令と、
前記シンクへ配信された前記最後のイベント通知の前記LSNより大きいLSNを有する1つまたは複数のイベント通知を識別するプログラム命令と、
前記イベント・ログから前記ストレージ・システムの前記シンクまで、前記シンクに配信された前記最後のイベント通知の前記LSNよりも大きいLSNを有する前記1つまたは複数のイベント通知を再生するプログラム命令と
を含む、コンピュータ・システム。
【請求項25】
前記シンクは、前記コンピュータ・ノード・クラスタの外部のイベント通知アクセス・リポジトリである、請求項24に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には、分散ファイル・システム操作の分野に関し、特には、ファイル・システム操作のイベント通知の信頼できる永続性に関する。
【背景技術】
【0002】
複数の地域で事業を展開し、クラウド環境でホストされることの多い、クラスタ化されたファイル・システムを利用する企業は、データ・セキュリティと、データ・アクセスおよびその他のファイル・アクティビティ・イベントの監視に、ますます注力している。内部の脅威や外部からのセキュリティ侵害からビジネス・クリティカルなデータを保護するため、多くの企業がファイル・システムの監査機能を含めるようになった。
【0003】
金融機関およびヘルスケア事業には、元帳、アカウントおよびトランザクション、医療記録、ならびに人事ファイルに対するアクセスと編集のアクティビティを特定できる、運用上および法律上のニーズがある。一部のコンサルティング・サービスは、クライアントのニーズをサポートし、市場での競争力を維持するために、安全なファイル・システム・アクセスとアクティビティ操作に依存している。クラスタ化されたファイル・システムが使用されている分散コンピューティング環境では、ノードの再起動クラッシュやハング状態の前のファイル・システム・アクティビティの回復には中枢情報が含まれていたり、コンプライアンス・ルールが必要になったりすることがある。
【0004】
分散ファイル・システムは、多くの場合、システムのファイル、オブジェクト、またはレコードに対して操作アクティビティを実行する複数のノードを含む。ノードには、それぞれのノードによってファイルに対して実行されるファイル・アクティビティまたはイベントの収集をサポートする、複数のノードにまたがって分散されたメッセージ・キューが含まれることがある。メッセージ・キューへのイベント・アクティビティの公開は、「プロデューサ」コンポーネントによって実行され、このコンポーネントは、注目すべきファイルおよびイベント・アクティビティを設定するポリシーを適用する、ノード上のデーモンの内部で実行される。
【発明の概要】
【0005】
本発明の態様は、コンピュータ・ノード・クラスタ内部のノードのイベント情報の配信におけるフォールト・トレランスのための方法、コンピュータ・プログラム製品、およびシステムを提供する。この方法は、コンピュータのノード・クラスタのノードによって実行される、ファイル・システム・アクティビティに関連付けられたイベント情報を特定するための1つまたは複数のプロセッサを提供する。1つまたは複数のプロセッサは、メモリ内のイベント・ログ・バッファにイベント情報を追加する。1つまたは複数のプロセッサは、回復ログ・バッファからの回復情報のフラッシングに対応する回復ログ・シーケンス番号と一致する第1のログ・シーケンス番号を受信する。1つまたは複数のプロセッサは、第1のログ・シーケンス番号以下のログ・シーケンス番号を有する、イベント・ログ・バッファに含まれるイベント情報を特定し、イベント・ログ・バッファに含まれるイベント情報が第1のログ・シーケンス番号以下のログ・シーケンス番号に対応すると判定することに応答して、1つまたは複数のプロセッサは、イベント・ログ・バッファからディスク・ストレージへ、対応するログ・シーケンス番号を有するイベント情報をフラッシュする。
【図面の簡単な説明】
【0006】
図1】本発明の実施形態による、分散データ処理環境を示す機能ブロック図である。
図2】本発明の実施形態による、永続ディスク・ストレージ内のイベント・ログへのイベント・ログ・バッファのフラッシングの例を示す機能ブロック図である。
図3】本発明の実施形態による、図1の分散データ処理環境において動作するイベント・ログ・プログラムの動作ステップを描写するフローチャートである。
図4】本発明の実施形態による、図3のイベント・ログ・プログラムを操作、実行するように構成されたコンピューティング・デバイスを含む、コンピューティング・システムのコンポーネントのブロック図である。
【発明を実施するための形態】
【0007】
本発明の実施形態では、クラスタ化されたファイル・システムを含む分散コンピューティング環境上で実行される特定のアプリケーションが、ファイルのイベント・アクティビティに関連付けられたイベント通知を生成および配達するように構成されると認識されている。また、本発明の実施形態では、ファイル・システムを監視するアプリケーションが、ファイル・システムと、ファイル・システムのコンポーネント・データとに関連付けられた、整合性があり信頼性の高いステータスおよびアクティビティを必要とすると認識されている。ファイル・システム監視アプリケーションは、ファイル・システムのステータス、アクセス、およびデータ・コンテンツの変更の入力としてアプリケーションに配信される、イベント通知に依存し、ノードのクラッシュ、再起動、またはその他の配信の問題が原因で発生する可能性のある、イベント通知の中断により、イベント情報が失われ、修正するために多大な介入が必要になる場合がある。監視対象ファイル・システムのイベント通知の復元性(resiliency)は、このようなアプリケーションに対する重要な信頼性の問題である。ストレージ・システムは、ファイルおよび文書の記憶用に指定してもよく、またはアイテムをオブジェクトとして記憶するように構成してもよい。
【0008】
本発明の実施形態は、記憶されるコンテンツ・タイプに関係なく、ストレージ管理操作およびアクティビティのためのイベント通知の信頼性の高い配信を提供する。簡潔にするために、実施形態の考察は、「オブジェクト」またはその他のコンテンツの単位に限定されることなく、「ファイル」、「ファイル・システム」、および「ファイル・システム・クラスタ」に言及する。
【0009】
本発明の実施形態は、クラスタ化されたファイル・システムのイベント通知の信頼性の高い配信のための方法、コンピュータ・プログラム製品、およびコンピュータ・システムを提供する。本発明の実施形態では、イベント・ログ・バッファは、クラスタ化されたファイル・システムの各操作ノードに含まれており、各ノードによって実行されるファイル・イベントのイベント・メタデータを受信する。本発明のいくつかの実施形態では、イベント・ログ・バッファは、イベント・ログ・バッファから各ノード上で処理されたファイル・アクセスおよびアクティビティのイベント情報を受信する(すなわち、フラッシュされる)、対応するイベント・ログを有し、イベント情報の永久ストレージ(すなわち、ディスク・ストレージ)を提供する。
【0010】
本発明の実施形態では、イベント・ログ・バッファは、ディスク上の回復ログへ回復ログ・バッファの対応するデータをフラッシュする前に、イベント・ログ・バッファが、メモリに記憶されたイベント情報をディスクへフラッシュするように、回復ログ・バッファと同期されている。いくつかの実施形態では、通知シンク(sink)へのイベント通知配信の中断に応答して、ディスクに記憶されたイベント・ログからイベント情報が再生され、ファイル・システム・イベント情報の完全な配信が保証される。
【0011】
本発明のいくつかの実施形態では、クラスタ化されたファイル・システムを操作するコンピュータ・クラスタのノードは、ノード上で実行されるファイル・システム・アクティビティに対応するイベント通知を生成するイベント・プロデューサを有する、実行中のデーモンを含む。クラスタ化ファイル・システムのイベントには、これらに限定はされないが、アクセス(およびアクセスID)、作成、オープン、クローズ、除去、編集変更、所有権の変更、セキュリティ・レベル変更、再配置などのアクティビティが含まれる。ノードのプロデューサは、イベント・ログ・バッファとシンクとに、イベント情報をメタデータとして送信する。一実施形態では、ノードのプロデューサは、メッセージ・キューにイベント・メタデータを送信する。本発明の実施形態では、ディスク上のメッセージ・キューおよび順次ログが、シンクの実施形態であると認識されている。メッセージ・キューは、リアルタイムの高スループットのデータ・フィードの取扱いを提供する、ストリーム処理ソフトウェア・プラットフォームである。メッセージ・キューは、ファイル・システム・クラスタの各分散ノードからイベント情報通知を収集する、リポジトリとして機能し、そのために関心のあるアプリケーションによって情報が使用され得る。一実施形態では、ノードのプロデューサは、永続ストレージ上の順次ログ・ファイルにイベント・メタデータを書き込む。シンクは、ファイル・システム監視アプリケーションが、ファイル・システムのアクティビティのイベント通知と、ファイルまたはオブジェクトの状態、変更、およびアクセス情報のメタデータとを受信するための、アクセス・ポイントを提供する。
【0012】
イベント情報には、回復ログ・バッファに送信されて、ディスク上の回復ログに記憶されているデータの他に、それぞれのファイル・システム・イベントに関連付けられた追加のメタデータが含まれる。本発明の実施形態では、ノード故障が発生した場合には、イベント通知を生成するために必要なイベント情報が、システム・コンポーネントの操作の回復を実行するように設計されている、回復ログには含まれていないと認識されている。イベント・ログには、それらに限定はされないが、i-ノード番号、部品名、ストレージ・プール、ユーザID、所有者ID、ファイル属性、ファイル・イベント・アクティビティ、およびイベントのタイムスタンプなどの、メタデータが含まれる。
【0013】
本発明の実施形態は、回復ログ・バッファに含まれる回復情報のフラッシングに先立って、イベント情報を永続ディスク・ストレージへフラッシュするイベント・ログ・バッファを提供することによって、クラッシュ、再起動、またはその他のシステム中断が発生した場合でも、イベント通知が確実に維持されて、配信されることを確実にする。イベント・ログは、通常のイベント・アクティビティ情報がシンクに配信されない障害条件下で、イベント情報を提供する。
【0014】
次に、本発明を、図を参照しながら詳細に説明する。図1は、本発明の実施形態による、全体的に100と指名される、分散データ処理環境を示す機能ブロック図である。図1は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限も意図していない。当業者によれば、特許請求の範囲によって記述される本発明の範囲から逸脱することなく、描かれた環境に対する多くの改変を行うことができる。
【0015】
分散データ処理環境100は、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130までを含む、介在サーバ・ノード(図示せず)として表わされる、分散ファイル・システム・クラスタの複数のサーバ・ノードを含む。分散データ処理環境100はまた、シンク140、ストレージ・システム・アプリケーション160、ストレージ・システム監視アプリケーション170を含み、全てがネットワーク150を介して相互接続されている。ネットワーク150は、例えば、ローカル・エリア・ネットワーク(LAN)、インターネットなどのワイド・エリア・ネットワーク(WAN)、仮想ローカル・エリア・ネットワーク(VLAN)、または有線接続、無線接続、もしくは光接続を含むことができる任意の組合せとすることができる。一般に、ネットワーク150は、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130までを含む、介在サーバ・ノード、シンク140、ストレージ・システム・アプリケーション160ならびにストレージ・システム監視アプリケーション170の間の通信およびデータ伝送をサポートする、接続およびプロトコルの任意の組合せとすることができる。
【0016】
第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130までの介在ノード(図示せず)は、分散ファイル・システム・クラスタのノードである。第1のサーバ・ノード110は、イベント・ログ・プログラム300のコピー、デーモン115、プロデューサ117、イベント・ログ113、および回復ログ119を含む。第2のサーバ・ノード120は、イベント・ログ・プログラム300のコピー、デーモン125、プロデューサ127、イベント・ログ123、および回復ログ129を含む。第Nのサーバ・ノード130は、イベント・ログ・プログラム300のコピー、デーモン135、プロデューサ137、イベント・ログ133、および回復ログ139を含む。本発明のいくつかの実施形態では、イベント・ログ・プログラム300は、第1のサーバ・ノード110、第2のサーバ・ノード120および第Nのサーバ・ノード130からリモートでホストされて、それぞれのサーバ・ノードにプログラム可能な命令を提供してもよい。
【0017】
いくつかの実施形態では、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、分散環境で動作し、ファイル・システム操作を実行するように構成された、コンピューティング・デバイスである。いくつかの実施形態では、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、ブレード・サーバ、ウェブ・サーバ、ラップトップ・コンピュータ、デスクトップ・コンピュータ、スタンド・アロンのモバイル・コンピューティング・デバイス、スマートフォン、タブレット・コンピュータ、または、データを受信、送信、および処理することができる、その他の電子デバイスまたはコンピューティング・システムとすることができる。他の実施形態では、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、クラウド・コンピューティング環境でホストおよび動作するアプリケーションおよびサービスと相互作用する、コンピューティング・デバイスであってもよい。別の実施形態では、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、ネットブック・コンピュータ、パーソナル・デジタル・アシスタンツ(PDA)、または、イベント・ログ・プログラム300への入力を生成して送信すること、およびイベント・ログ・プログラム300からのプログラミング命令を受信することの可能な、その他のプログラム可能な電子デバイスとすることができる。代替的に、いくつかの実施形態では、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、リモートで動作するイベント・ログ・プログラム300に通信可能に接続されてもよい。第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130は、図4にさらに詳細に描かれている、内部および外部のハードウェア・コンポーネントを含んでもよい。
【0018】
デーモン115、デーモン125、およびデーモン135は、バックグラウンド・プロセスとして実行されるコンピュータ・プログラムである。デーモン115、デーモン125、およびデーモン135は、それぞれ、プロデューサ117、127、および137が、それぞれのノードで発生するファイル・システム・イベント・アクティビティを特定し、特定のファイルまたはオブジェクトのアクティビティに関連付けられたイベント情報を生成することを可能にする。
【0019】
プロデューサ117、プロデューサ127、およびプロデューサ137は、それぞれデーモン115、125、および135の内部で動作するエンティティである。プロデューサ117、127、および137は、それぞれのノード上のファイル・システム・イベント・アクティビティを特定し、イベントに対するメタデータを収集し、イベントおよびメタデータをメッセージ・キューに公開する。本発明の実施形態では、プロデューサ117、127、および137は、イベント・メタデータをそれぞれのノードのイベント・ログ・バッファに送信し、これは図2の考察においてより詳細に説明される。
【0020】
回復ログ119、回復ログ129、および回復ログ139は、それぞれ、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130内のログ・ファイルの収集であり、クラッシュ、再起動、または他の処理中断からのそれぞれのノードの回復を可能にするアクティビティおよび状態情報を含む。回復ログ119、129、および139は、それぞれ第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130の永続ストレージに存在する。回復ログ119、129、および139は、それぞれのサーバ・ノードの対応する回復ログ・バッファが容量制限に達したか、または容量制限に近づいたときに、回復情報を受信し、メモリ内のそれぞれの回復ログ・バッファからディスク上の対応する回復ログへ、回復情報をフラッシュする。
【0021】
イベント・ログ113、イベント・ログ123、およびイベント・ログ133は、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130における処理のイベント・アクティビティおよび関連メタデータのログ・ファイルである。イベント・ログ113、123、および133は永続ストレージに存在して、指定されたシンクへのイベント情報のメッセージ・キュー配信の中断または誤動作が発生した場合に、整合性のあるイベント情報を提供する。イベント・ログ113、123、および133は、それぞれのサーバ・ノードの対応するイベント・ログ・バッファが容量制限に達するか、または容量制限に近づいたときにイベント情報を受信し、メモリ内の各イベント・ログ・バッファからディスク上の対応するイベント・ログへ、イベント情報をフラッシュする。
【0022】
イベント・ログ・プログラム300は、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130のそれぞれで動作するものとして描かれている。本発明のいくつかの実施形態では、イベント・ログ・プログラム300は、クラスタ化されたファイル・システムのデータを管理する分散アプリケーションのコンポーネントであり、ファイル・システム・クラスタ内で動作する複数のノードで動作するようにスケーラブルである。ファイル・システム監視アプリケーションは、ファイル・システム・イベント通知を使用して、ファイル・システム・コンポーネントのファイルまたはオブジェクト、ディレクトリ、およびファイル/オブジェクトを作成してアクセスする操作アクティビティの状態とステータスを判断する。ファイル・システムを監視するアプリケーションでは、アプリケーションがそこからイベント通知にアクセスする、シンクへのイベント通知の配信が中断される、復元性の問題が発生する可能性がある。ファイル・システムを監視するアプリケーションは、配信故障を許容できない場合があり、本発明の実施形態は、ファイル・システム・クラスタのノードの障害条件が発生した場合に、再生してイベント通知シンクに配信するためのイベント通知の信頼できるソースを提供する。
【0023】
いくつかの実施形態では、イベント・ログ・プログラム300は、イベント・アクティビティを決定し、それぞれのノードのプロデューサに、イベント・メタデータを含むイベント情報を、ノードのイベント・ログ・バッファに送信するように命令する。いくつかの実施形態では、イベント・ログ・プログラム300は、特定のイベントのイベント・メタデータを、イベント・ログ・バッファに記憶されたJSONファイルに添付する。イベント情報の各インスタンスは、ノードの回復ログ・バッファに記憶されているイベントに関連付けられた回復情報の同じログ・シーケンス番号に対応する、ログ・シーケンス番号(LSN)を受信する。ファイルへの「書き込み」アクティビティなど、ファイル・システム・アクティビティの所与のイベントに対して、LSNが、書き込みイベントに関連付けられた回復情報に割り当てられて、回復ログ・バッファに送信されるとともに、同じLSNが、イベント・ログ・バッファに送信される書き込みイベントのイベント情報に割り当てられる。
【0024】
本発明のいくつかの実施形態では、イベント・ログ・プログラム300は、回復ログ・バッファ内の回復情報のセットに対応するLSNを受信する。回復情報のセットは、イベント・ログ・プログラム300によって受信されるLSN以下のLSNを有するすべての回復情報を含む。たとえば、回復ログ・バッファが回復情報の容量制限に近づいており、バッファから永続ディスク・ストレージ内の回復ログへ、回復情報をフラッシュすることが必要となる。フラッシングとは、揮発性メモリ(つまり、バッファ)内のコンテンツを、ディスク上の永続ストレージに書き込むプロセスを意味する。回復ログ・バッファは、ノードで以前に実行されたイベントに対応するLSNを識別する(例えば、LSN=1000)。回復ログ・バッファには、LSN=1000に対応するイベントの前にノードで実行の複数のLSNも含まれる。回復ログ・バッファは、識別されたLSN=1000未満のLSN(つまり、LSN=999、LSN=998、…など)を有する、その他すべての回復情報とともに、ディスク・ストレージにフラッシュされる予定の最大のシーケンス番号を識別し、こうして回復ログ・バッファをクリアして、ノード上で実行されるファイル・システム・アクティビティからの後続の回復情報の受け入れを可能にする。
【0025】
ディスク・ストレージへの回復情報のフラッシングを実行する前に、回復ログ・バッファによって識別されたLSNが、イベント・ログ・プログラム300によって受信され、イベント・ログ・プログラム300は、回復ログ・バッファによって識別されるLSN以下のLSNを有するイベント・ログ・バッファ内のイベント情報を特定する。例えば、イベント・ログ・プログラム300は、回復ログ内の永続ディスク・ストレージへフラッシュすることが意図された、回復ログ・バッファ内の回復情報に対応するLSN=1000を受信する。イベント・ログ・プログラム300は、LSN=1000以下のLSNを有するイベントに関連付けられたイベント情報を特定する。イベント・ログ・プログラム300は、イベント・ログ・バッファ内にあるLSN=1000以下のイベントのイベント情報を、ディスク上の永続ストレージ内のイベント・ログへとフラッシュする。イベント・ログ・プログラム300は、ディスクへのイベント情報のフラッシュの完了を回復ログ・バッファに伝達し、その後、回復ログ・バッファは、バッファからディスク上の永続ストレージ内の回復ログへの回復情報のフラッシュを実行する。
【0026】
いくつかの実施形態では、イベント・ログ・プログラム300は、イベント・ログ・バッファが容量に達しているかまたはそれに近いと判定し、回復ログ・バッファによって識別されるLSNを開始することなく、ディスク上のイベント・ログへのイベント情報のフラッシングを開始する。いくつかの実施形態では、イベント・ログ・プログラム300は、イベント・ログ・バッファが、回復ログ・バッファによって識別されるLSN以下のLSNを有するイベント情報を含まないと判定し、その場合、イベント・ログ・プログラム300は、イベント情報のフラッシングを実行せず、代わりに、回復ログ・バッファに完了を伝達して、回復ログ・バッファのフラッシングを開始する。
【0027】
シンク140は、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130のそれぞれのプロデューサ117、127、137から、メッセージ・キューを介してイベント通知配信を受信する、ソフトウェア・アプリケーションである。シンク140は、ストレージ・システム監視アプリケーションが、イベント通知にアクセスし、ファイル・システム・クラスタのコンポーネントの状態およびステータスを判定して、ファイル・システム・クラスタの監視アクティビティを実行するための、インターフェースを提供する。
【0028】
ストレージ・システム・アプリケーション160は、第1のサーバ・ノード110、第2のサーバ・ノード120、介在サーバ・ノード(図示せず)、および第Nのサーバ・ノード130を含むファイル・システム・クラスタに対してファイル・システム・ストレージ管理および調整サービスを提供する、1つまたは複数のアプリケーションを含む。いくつかの実施形態では、イベント・ログ・プログラム300は、ストレージ・システム・アプリケーション160のモジュール・コンポーネントとして動作する。
【0029】
ストレージ・システム監視アプリケーション170は、シンク140からイベント通知にアクセスし、ファイル・システムのそれぞれの状態、ステータス、ファイル、およびディレクトリ・アクティビティを監視する、クライアント側アプリケーションの収集を含む。ストレージ・システム監視アプリケーション170は、イベント通知の中断のない配信を利用して、それぞれのファイル・システム・コンポーネントおよびコンテンツの整合性のある監視を維持し、イベント・メタデータを使用して、クラスタ化されたファイル・システムに適用されるカタログ化操作に関連付けられた状態、ステータス、およびアクティビティを特定する。ストレージ・システム監視アプリケーション170は、配信されたイベント通知を使用し、このイベント通知は、システム・ステータス、ファイル数、ディレクトリ数、アーカイブするファイルの検出などのアクティビティを含み、ファイルにアクセスするユーザを特定し、コンテンツ属性(機密ファイル)を特定し、ヘビー・アクセスを判定して、分散ストレージ環境全体にわたるサービスを提供する。
【0030】
図2は、本発明の実施形態による、永続ディスク・ストレージ内のイベント・ログへのイベント・ログ・バッファのフラッシングの例を示す機能ブロック図である。図2は、デーモン215、回復ログ・バッファ220、回復ログ225、イベント・ログ・バッファ230、イベント・ログ235、フラッシュLSN240、および完了応答250を含む。デーモン215には、プロデューサ217およびポリシー219が含まれる。デーモン115、125、および135に関して上述したように、デーモン215は、ファイル・システム・クラスタのノードにおいてバックグラウンド・アプリケーションとして実行される。プロデューサ217は、ノード上のファイル・システム・イベント・アクティビティを特定し、イベントのメタデータを収集し、メッセージ・キューにイベントおよびメタデータを公開する。プロデューサ217は、イベント・ログ・バッファ230に、ノードによって実行されるイベントに関連付けられたメタデータを含む、イベント情報を送信する。いくつかの実施形態では、プロデューサ217は、回復ログ・バッファ220に回復情報を送信する。
【0031】
ポリシー219は、ファイル・システムに関連するイベント情報のアクセスおよび記録に関連する、ルールおよび条件を含む。いくつかの実施形態では、ポリシー219は、プロデューサ217によって公開された通知に含まれる、ファイルおよびアクティビティのイベントを特定する。
【0032】
回復ログ・バッファ220は、各ノード上で実行されるファイル・システムのイベント・アクティビティに関連付けられた回復情報を収集する。回復ログ・バッファ220は、揮発性メモリに存在して、回復ログ・バッファ220に保持されているファイル・システムについての回復情報を、ディスク上の永続メモリに存在する回復ログ225に書き込む。回復ログ・バッファ220は、クラッシュ、ノードもしくはコンポーネントの故障、または再起動などの処理中断から回復するための情報を受信する。
【0033】
回復ログ・バッファ220は、バッファの容量がいっぱいになるか、またはほぼいっぱいになったかを判定し、フラッシュLSN240をイベント・ログ・バッファ230に送信する。イベント・ログ・プログラム300は、フラッシュLSN240を使用して、回復ログ・バッファ220内の回復情報に対応するイベント・ログ・バッファ230に含まれるイベント情報を特定し、ディスク上の永続ストレージに位置しているイベント・ログ235へフラッシュする。フラッシュLSN240は、イベント・ログ・プログラム300が、イベント・ログ・バッファ230を回復ログ・バッファ220と同期させて維持することを可能にする。イベント・ログ・バッファ230からディスク上の永続ストレージに存在するイベント・ログ235への、フラッシュLSN240またはフラッシュLSN240未満のLSNに対応するイベント情報のフラッシングに続いて、回復ログ・バッファ220は、イベント・ログ・プログラム300からの完了応答250を受信する。
【0034】
イベント・ログ・バッファ230は、ノード上で実行されるそれぞれのイベント・アクティビティに関連付けられた、プロデューサ217からのイベント情報を受信する。イベント・ログ・バッファ230は、それぞれのイベント・アクティビティのイベント情報をJSONファイルに添付する。フラッシュLSN240は、イベント・ログ・プログラム300によって受信され、回復ログ・バッファがいっぱいになると、回復ログ・バッファ220からフラッシュされる回復情報のセットを反映する。回復情報のセットは、フラッシュLSN240以下の対応するLSNを有する、回復情報を含む。イベント・ログ・プログラム300は、受信したフラッシュLSN240を使用して、イベント・ログ・バッファ230が、フラッシュLSN240によって識別される回復情報のセットに対応するイベント情報を含むかどうかを判定する。イベント・ログ・バッファ230がフラッシュLSN240以下のLSNに対応するイベント情報を含む場合、イベント・ログ・プログラム300は、イベント・ログ・バッファ230からディスク上の永続ストレージ上のイベント・ログ235への、識別されたイベント情報のフラッシングを開始する。回復ログ・バッファ220のフラッシングより前の、イベント・ログ・バッファ・イベント情報のフラッシングは、永続ストレージ上のイベント・ログ情報が、メッセージ・キューおよびシンクを介したファイル・システム・イベント通知配信の障害の中断が発生した場合に、イベント通知配信のために再生されるファイル・システム状態と整合性のある、イベント情報を包含することを確実にする。
【0035】
フラッシュLSN240は、回復ログ・バッファ220から回復ログ225へとフラッシュされるように指定されたファイル・システム・アクティビティについての回復情報に対応する、ログ・シーケンス番号を含む。回復ログ・バッファ220のフラッシングは、現在、回復ログ・バッファ220内にあるフラッシュLSN240未満のLSNに対応する回復情報も含む。イベント・ログ・プログラム300は、フラッシュLSN240を利用してイベント・ログ・バッファ230内のイベント情報を特定して、イベント・ログ235へフラッシュすることができる。イベント情報のフラッシングには、イベント・ログ・バッファ230に含まれる、フラッシュLSN240未満の対応するLSNを有するイベント情報が含まれる。
【0036】
完了応答250は、イベント・ログ・バッファ230のフラッシングが完了したことを確認するとともに、回復ログ・バッファ220のフラッシングが開始できることを示す、イベント・ログ・プログラム300からの伝達である。本発明の実施形態では、イベント・ログ・バッファ230は、回復ログ225への回復ログ・バッファ220の回復情報のフラッシングに先立って、フラッシュLSN240以下のLSNを有するイベント情報に基づいて、イベント・ログ235へイベント情報をフラッシュする。いくつかの実施形態では、イベント・ログ・バッファ230は、イベント・ログ・バッファ230が容量に近いかまたは容量に達していることに起因して、イベント・ログ235にイベント情報をフラッシュしてもよい。イベント・ログ・プログラム300が、イベント・ログ・バッファ230がフラッシュLSN240以下の対応するLSNを有するイベント情報を含まないと判定する実施形態では、イベント・ログ・プログラム300は、回復ログ・バッファ220に完了応答を伝達して、回復ログ225への回復情報のフラッシングを開始する。
【0037】
図3は、本発明の実施形態による、図1の分散データ処理環境で動作するイベント・ログ・プログラムの動作ステップを示すフローチャートである。イベント・ログ・プログラム300は、ノードの回復ログ・バッファから永続ストレージ内の回復ログへフラッシュするように指定された回復情報のセットを反映する、ログ・シーケンス番号を受信する。指定されたフラッシングには、受信されたログ・シーケンス番号以下のLSNを有する回復情報が含まれる。イベント・ログ・プログラム300は、イベント・ログ・バッファが、回復ログ・バッファから受信されたLSN以下である、対応するLSNを有するイベント情報を含むかどうかを判定する。
【0038】
イベント・ログ・プログラム300は、ファイル・システム・クラスタのノードのファイル・システム・イベント・アクティビティを特定する(ステップ310)。イベント・ログ・プログラム300は、ノードによって実行されるファイル・アクセス・アクティビティの開始を判定する。イベント・ログ・プログラム300は、イベント情報として含まれるアクティビティのタイプと、イベント・アクティビティに関連付けられたメタデータとを特定する。例えば、第1のサーバ・ノード110は、ファイル・システムのファイルへの書き込み動作を実行する命令を受信する。第1のサーバ・ノード110のイベント・ログ・プログラム300は、ファイル・イベント・アクティビティを検出し、ノード上で実行されるイベント・アクティビティに対応するメタデータを受信する準備をする。
【0039】
イベント・ログ・プログラム300は、イベント・ログ・バッファに、ノードのイベント・アクティビティに関連付けられたイベント情報を追加する(ステップ320)。イベント・ログ・プログラム300は、イベント・アクティビティのイベント情報を受信し、このイベント情報は、アクティビティと、イベント・アクティビティが実行されるファイルとに関連付けられたメタデータを含む。イベント・ログ・プログラム300は、特定のイベント・アクティビティに一意に関連付けられたイベント情報を受信して、JSONメッセージを形成し、揮発性メモリに存在するイベント・ログ・バッファにそのメッセージを添付する。イベント・ログ・バッファは、ノード上の複数のイベント・アクティビティのイベント情報を収集し、同じく揮発性メモリに存在する回復ログ・バッファに提供される特定のイベント・アクティビティに関連した回復情報の追加と調整される。
【0040】
例えば、第1のサーバ・ノード110上で実行される、ファイル・システムのファイルへの書き込み動作に関連付けられた特定のメタデータを含む、イベント情報を受信すると、イベント・ログ・プログラム300は、そのイベント情報をイベント・ログ・バッファのJSONファイルに添付する。イベント情報には、書き込み動作がそれに対して指示されるファイル・システムのファイルに対して実行される、書き込み動作に具体的に関連付けられたメタデータが含まれる。イベント情報は、特定の書き込みイベント・アクティビティに関連付けられたメタデータを一意に識別するログ・シーケンス番号(LSN)を受信する。書き込みイベント・アクティビティは、特定の書き込みアクティビティに一意に関連付けられて、メモリに存在する回復ログ・バッファに送信される、対応する回復情報のセットも生成する。イベント情報には、特定のファイルへの書き込みイベント・アクティビティに関連付けられたメタデータの詳細が大幅に多く含まれるのに対して、回復情報には、ノードでの障害回復をサポートするための情報のみが含まれる。回復ログ・バッファは、同じ書き込みイベント・アクティビティのイベント情報に対して受信されたイベント・ログ・バッファと、同じ、受信された回復情報に対するログ・シーケンス番号(LSN)を受信する。
【0041】
イベント・ログ・プログラム300は、回復ログ・バッファのフラッシングに関連付けられた第1のログ・シーケンス番号(LSN)を受信する(ステップ330)。「第1の」ログ・シーケンス番号という用語は、特定のLSNを他のLSNと区別するために使用され、0001などの、最初のLSNに必ずしも対応しない。回復ログ・バッファは、ノード上のイベント・アクティビティに関連付けられた回復情報を引き続き受信する。イベント・ログ・プログラム300は、回復ログ・バッファが回復ログ・バッファに回復情報を追加する容量レベルに達するか、またはその容量レベルに近づくと、LSNを受信する。イベント・ログ・プログラム300によって受信されるLSNは、ディスクにフラッシュされる回復ログ・バッファに現在保持されている回復情報の高位または最高位のシーケンス番号LSNに対応し、回復情報のフラッシュは、第1のLSN以下の全てのLSNを含む。イベント・ログ・プログラム300は、回復ログ・バッファとイベント・ログ・バッファとの間の同期を確立するために、回復ログ・バッファ・フラッシュのために指定されたものと同じ第1のLSNを受信する。
【0042】
例えば、回復ログ・バッファ220(図2)は、回復ログ・バッファ220が容量に近づいており、ディスク上にある回復ログ225へ、回復ログ・バッファ220に保持されている回復情報をフラッシュする必要があると判定する。回復ログ・バッファ220は、イベント・ログ・バッファ230をフラッシュするのに使用される、イベント・ログ・プログラム300に、LSN(フラッシュLSN240)を送信する。送信されるフラッシュLSN240は、フラッシュすることが意図されている回復ログ・バッファ220に現在保持されている回復情報の高位または最高位のシーケンス番号を有する、同じLSNに対応する。回復情報のフラッシュは、フラッシュLSN240以下の全てのLSNを含み、イベント・ログ・プログラム300は、同じフラッシュLSN240を使用して、ディスク上のイベント・ログ235へフラッシュするイベント情報を特定する。
【0043】
イベント・ログ・プログラム300は、イベント・ログ・バッファに含まれるイベント情報のLSNを特定する(ステップ340)。イベント・ログ・プログラム300は、イベント・ログ・バッファに含まれるイベント情報のLSNを使用して、イベント・ログ・バッファに現在保持されているLSNの範囲を確立する。イベント・ログ・バッファに追加されたイベント情報の一意のインスタンスのLSNが、ディスクに存在するイベント・ログへフラッシュされる個々のイベント・アクティビティに対応するイベント情報のセットを特定するために使用される。
【0044】
イベント・ログ・プログラム300は、イベント・ログ・バッファが第1のLSN以下であるLSNを含むかどうかを判定する(判定ステップ350)。イベント・ログ・プログラム300が、受信した第1のLSN以下であるLSNは、イベント・ログ・バッファに現在、存在しないと判定した場合(ステップ350、「NO」分岐)、イベント・ログ・プログラム300は、完了確認メッセージを送信して、ディスク上に存在する回復ログへの回復ログ・バッファの回復情報のフラッシングを開始する(ステップ370)。
【0045】
例えば、イベント・ログ・プログラム300は、LSN=1000以下に対応するLSNを有するイベント情報のフラッシングを示す、第1のLSN=1000を受信する。イベント・ログ・プログラム300は、回復ログ・バッファ220との調整とは無関係に発生した、イベント・ログ・バッファ230の容量に近いイベント情報に関連付けられたフラッシング・アクションから、イベント・ログ・バッファ内のLSNが全て、LSN=1000を超えていると判定する。イベント・ログ・プログラム300は、完了応答250(図2)を送信して、回復ログ・バッファ220のフラッシングを開始する。
【0046】
回復ログ・バッファのフラッシングを開始する完了確認を送信すると、イベント・ログ・プログラム300は、終了するが、ノード上で実行される追加のイベント・アクティビティの検出のためにアクティブのままとなる。本発明のいくつかの実施形態では、イベント・ログ・プログラム300は、イベント通知の配信を中断する障害条件を検出し、永続ストレージに存在するイベント・ログから、最後に確認されたイベント情報LSNからのイベント通知の再生を開始する。安全に記憶されたイベント通知の再生を提供することで、内部シンクまたは外部シンク、あるいはその両方へのイベント通知の配信の信頼性が保証される。
【0047】
イベント・ログ・プログラム300が、イベント・ログ・バッファは、受信した第1のLSN以下のLSNを有するイベント情報を含むと判定した場合(ステップ350、「YES」分岐)、イベント・ログ・プログラム300は、第1のLSN以下のLSNを有するイベント情報を、ディスク上のイベント・ログへフラッシュする(ステップ360)。イベント・ログ・プログラム300は、ディスク上の永続ストレージに存在するイベント・ログへの、各々がノード上で実行される別個のイベント・アクティビティに対応するイベント情報のセットのフラッシングを開始する。
【0048】
受信した第1のLSN以下のLSNによって指定されたイベント情報のフラッシュを実行すると、イベント・ログ・プログラム300は、完了確認を送信して回復ログ・バッファのフラッシュを開始して(ステップ370)、上述のように進行する。本発明の実施形態では、回復情報と、ディスクへフラッシュされたイベント情報が、第1のLSN以下のイベントLSNによって定義される指定LSN範囲によって調整されると認識されている。実施形態ではさらに、回復ログ・バッファのフラッシングの前にイベント・ログ・バッファをフラッシュすることによって、イベント通知および対応するメタデータの信頼できる保護されたソースが確保され、障害条件の検出時、またはノードからのイベント通知の配信の中断時に、再生に使用可能になるものと認識されている。
【0049】
回復ログ・バッファのフラッシングを開始する、完了確認を送信すると、イベント・ログ・プログラム300は終了するが、ノード上で実行される追加のイベント・アクティビティの検出のためにアクティブのままとなる。本発明のいくつかの実施形態では、イベント・ログ・プログラム300は、イベント通知の配信を中断する障害条件を検出し、永続ストレージに存在するイベント・ログから、最後に確認されたイベント情報LSNからのイベント通知の再生を開始する。安全に記憶されたイベント通知の再生を提供することで、内部シンクまたは外部シンク、あるいはその両方へのイベント通知の配信における信頼性が保証される。
【0050】
図4は、本発明の実施形態に従って、コンピューティング・デバイス405を含み、図1に描かれたコンポーネントを含むか、またはそれらに動作可能に接続するように構成され、図3のイベント・ログ・プログラム300を動作可能に実行する能力を有する、コンピューティング・システムのコンポーネントのブロック図を示す。
【0051】
コンピューティング・デバイス405は、本発明の例示的な実施形態による、第1のサーバ・ノード110、第2のサーバ・ノード120、および第Nのサーバ・ノード130(図1)のコンポーネントと類似の、コンポーネントおよび機能的能力を含む。図4は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限も意味しないことを理解されたい。描かれた環境に対して、多くの改変を加えることができる。
【0052】
コンピューティング・デバイス405は、コンピュータ・プロセッサ404、メモリ406、永続ストレージ408、通信ユニット410、入出力(I/O)インターフェース412の間の通信を提供する、通信ファブリック402を含む。通信ファブリック402は、プロセッサ(例えば、マイクロプロセッサ、通信機器、およびネットワーク・プロセッサ、など)、システムメモリ、周辺デバイス、およびシステム内の任意のその他のハードウェア・コンポーネントの間でデータまたは制御情報、あるいはその両方を転送するために設計された任意のアーキテクチャで実装することができる。例えば、通信ファブリック402は、1つまたは複数のバスで実装することができる。
【0053】
メモリ406、キャッシュ・メモリ416、および永続ストレージ408は、コンピュータ可読記憶媒体である。この実施形態では、メモリ406は、ランダム・アクセス・メモリ(RAM)414を含む。一般に、メモリ406には、任意適切な揮発性または不揮発性のコンピュータ可読記憶媒体を含めることができる。
【0054】
一実施形態では、イベント・ログ・プログラム300は、メモリ406の1つまたは複数のメモリを介して、それぞれのコンピュータ・プロセッサ404のうちの1つまたは複数によって実行されるために、永続ストレージ408に記憶される。この実施形態において、永続ストレージ408は、磁気ハード・ディスク・ドライブを含む。代替的に、または磁気ハード・ディスク・ドライブに加えて、永続ストレージ408には、ソリッド・ステート・ハード・ドライブ、半導体ストレージ・デバイス、読み取り専用メモリ(ROM)、消去可能なプログラム可能読み取り専用メモリ(EPROM)、フラッシュ・メモリ、またはプログラム命令またはデジタル情報を記憶することができる任意その他のコンピュータ可読記憶媒体を含めることができる。本発明の一実施形態では、回復ログ225およびイベント・ログ235は、永続ストレージ408に含まれる。
【0055】
永続ストレージ408によって使用されるメディアはまた、リムーバブルでもあり得る。例えば、リムーバブル・ハード・ドライブは、永続ストレージ408のために使用され得る。他の例としては、永続ストレージ408の一部である別のコンピュータ可読記憶媒体への転送のためにドライブに挿入される、光ディスクおよび磁気ディスク、サム・ドライブ、およびスマート・カードが挙げられる。
【0056】
通信ユニット410は、これらの例では、分散データ処理環境100のリソースを含む、その他のデータ処理システムまたはデバイスとの通信を提供する。これらの例では、通信ユニット410には、1つまたは複数のネットワーク・インターフェース・カードが含まれる。通信ユニット410は、物理的通信リンクおよび無線通信リンクのいずれか、または両方の使用によって通信を提供してもよい。イベント・ログ・プログラム300は、通信ユニット410を介して永続ストレージ408にダウンロードしてもよい。
【0057】
I/Oインターフェース412は、コンピューティング・システム400に接続され得るその他のデバイスとのデータの入出力を可能にする。例えば、I/Oインターフェース412は、外部デバイス418、例えば、キーボード、キーパッド、タッチ・スクリーン、またはその他の適切な入力デバイス、あるいはそれらの組合せなどへの接続を提供できる。外部デバイス418には、ポータブルなコンピュータ可読記憶媒体、例えば、サム・ドライブ、ポータブルな光ディスクまたは磁気ディスク、およびメモリカードなどを含めることもできる。本発明の実施形態を実施するために使用されるソフトウェアおよびデータ、例えば、イベント・ログ・プログラム300は、そのようなポータブルなコンピュータ可読記憶媒体に記憶するとともに、I/Oインターフェース412を介して永続ストレージ408にロードすることができる。I/Oインターフェース412はまた、ディスプレイ420に接続する。
【0058】
ディスプレイ420は、ユーザにデータを表示するメカニズムを提供し、例えば、コンピュータ・モニタであってもよい。
【0059】
本明細書に記載されるプログラムは、本発明の特定の実施形態において、それらのプログラムがそのために実装されるアプリケーションに基づいて識別される。しかしながら、本明細書における任意特定のプログラムの命名法は、単に便宜上使用されるものであり、したがって、本発明は、そのような命名法によって識別または暗示されるか、あるいはその両方である任意特定のアプリケーションにおいてのみ使用されることに限定されるべきではないことを理解されたい。
【0060】
本発明は、任意可能な統合の技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せとすることができる。コンピュータ・プログラム製品には、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体が含まれてもよい。
【0061】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持および記憶することができる、有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、それに限定するものではないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意、適切な組合せであってもよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、以下を含む:ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カード、またはそこに記録された命令を有する溝内の隆起構造などの、機械的にエンコードされたデバイス、および前述のものの任意、適切な組合せ。本明細書で使用されるコンピュータ可読記憶媒体は、それ自体が一過性の信号、例えば、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して伝送される電気信号であると解釈されるべきではない。
【0062】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスにダウンロードするか、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはそれらの組合せを介して、外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶させるためにコンピュータ可読プログラム命令を転送する。
【0063】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、またはSmalltalk、C++などのようなオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似のプログラミング言語のような手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードのいずれであってもよい。コンピュータ可読プログラム命令の実行は、スタンド・アロンのソフトウェア・パッケージとして、全体をユーザのコンピュータ上で、一部をユーザのコンピュータ上で、一部をユーザのコンピュータ上で、かつ一部をリモート・コンピュータ上で、あるいは全体をリモート・コンピュータまたはサーバ上で行ってもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されるか、または(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータへの接続がなされてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、コンピュータ可読プログラム命令を実行して電子回路をパーソナライズすることができる。
【0064】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して本明細書に記載される。フローチャート図またはブロック図、あるいはその両方の各ブロック、およびフローチャート図またはブロック図、あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実現され得ることが理解されよう。
【0065】
コンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実現するための手段を作成するように、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサに提供されて、マシンを生成してもよい。これらのコンピュータ可読プログラム命令はまた、その中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実現する命令を含む製品を備えるように、コンピュータ、プログラム可能なデータ処理装置、または特定の様式で機能するその他のデバイス、あるいはその組合せに指示することができる、コンピュータ可読記憶媒体に記憶されてもよい。
【0066】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、またはその他のデバイス上で実行される、命令が、フローチャート、またはブロック図、あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実現するように、コンピュータ実施プロセスを生成すべく、コンピュータ、他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされて、コンピュータ、他のプログラム可能な装置、またはその他のデバイス上で、一連の動作ステップを実行させてもよい。
【0067】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または一部を表わしてもよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替的な実装では、ブロックに付記された機能は、図に付記された順序から外れて発生することがある。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成されても、同時に、実質的に同時に、部分的または全体的に時間的に重複する方法で実行されてもよく、またはブロックが、関連する機能に応じて逆の順序で実行されてもよい。ブロック図またはフローチャート図、あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図、あるいはその両方におけるブロックの組合せは、指定された機能または動作を実行する、または特殊目的のハードウェアとコンピュータ命令の組合せを実施する、特殊目的のハードウェア・ベースのシステムによって実現され得ることにも留意されたい。
図1
図2
図3
図4
【国際調査報告】