JP2006503370A - 利用者データの永続的な格納を提供するための方法およびシステム - Google Patents

利用者データの永続的な格納を提供するための方法およびシステム Download PDF

Info

Publication number
JP2006503370A
JP2006503370A JP2004544839A JP2004544839A JP2006503370A JP 2006503370 A JP2006503370 A JP 2006503370A JP 2004544839 A JP2004544839 A JP 2004544839A JP 2004544839 A JP2004544839 A JP 2004544839A JP 2006503370 A JP2006503370 A JP 2006503370A
Authority
JP
Japan
Prior art keywords
data
nvram
request
manager
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004544839A
Other languages
English (en)
Other versions
JP2006503370A5 (ja
JP4336313B2 (ja
Inventor
ジョージ・トトロス・ジュニア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spinnaker Networks Inc
Original Assignee
Spinnaker Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Spinnaker Networks Inc filed Critical Spinnaker Networks Inc
Publication of JP2006503370A publication Critical patent/JP2006503370A/ja
Publication of JP2006503370A5 publication Critical patent/JP2006503370A5/ja
Application granted granted Critical
Publication of JP4336313B2 publication Critical patent/JP4336313B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

ネットワークからのクライアントのデータをセーブするファイルサーバ。サーバはデータを格納するディスク手段を含む。サーバはネットワークからのデータを受信し、データがディスク手段に格納される前に、データが格納されたことの通知をクライアントへ送る手段を含む。サーバは、データがディスク手段に格納されるまでデータを格納するメモリを含み、受信手段はメモリと通信状態にある。サーバは、ディスク手段、メモリ及び受信手段に給電する第1の電源を含み、第1の電源は、これらと電気的に通信状態にある。サーバは、第1の電源の故障時にメモリに給電する第2の電源を含み、第2の電源はメモリと通信状態にある。ネットワークからクライアントのデータをセーブする方法。

Description

発明の詳細な説明
[発明の分野]
この発明は パワーが故障した時のデータ記憶に関する。より明確には、この発明は、第2の電源を用いたパワーが故障し、そして、パワーが復旧した時に、データが不当に上書きされないことを保証するためにプライベートリストを利用するデータ記憶に関する。
[発明の背景]
ファイルサーバの性能における重要な基準は、クライアント要求を処理するのにかかる時間である。優れたサーバは最も短い時間でクライアント要求に応じるであろう。ファイルシステムへの書き込み時の場合、すべての利用者データが最終的にディスクアレイに書き込まれることを保証することができるまで、サーバは、要求の承諾を許可しない。そのデータがサーバの中に揮発性メモリに保存されているなら、電力供給停止は、書き込みデータの完全な喪失を引き起こし、データ保全保証に反する全損を引き起こす。常時利用できるように、サーバを無停電電源装置に取り付けることは、費用がかかり、スペースの面で禁止されることがある。
この発明は、システムへのパワーが長期間の間、遮断されても、すべてのクライアントからのゆだねられた利用者データが、最終的にディスクに保存されることを保証する。それはどんなシステム規模のバッテリーデバイスも必要としない。バッテリーでバックアップされたメモリのわずかなバンクだけがシステムにおける永続的な格納に供される。
[発明の概要]
この発明は、ネットワークからクライアントのデータに役立つためのファイルサーバに関係する。そのサーバはデータを保存するためのディスク手段を備える。そのサーバは、ネットワークからのデータを受信し、そして、データがディスク手段に格納される前に、データクライアントに保存されたことの通知をネットワークを通じて送るための手段を備え、その受信手段はディスク手段と通信状態にある。サーバは、データがディスク手段で保存されるまでデータを保存するためのメモリを備え、その受信手段はディスク手段と通信状態にある。そのサーバは、電気をディスク手段に供給する第1の電源と、メモリおよび、受信手段を備え、前記第1の電源は、ディスク手段、メモリおよび受信手段と電気通信状態にある。そのサーバは、第1の電源が故障した時、電気をメモリに供給する第2の電源を備え、この第2の電源はメモリと通信状態にある。
この発明はネットワークからクライアントのデータに役立つための方法に関係する。その方法は、第1の電源により給電されたファイルサーバで、ネットワークからデータを受信するステップを備える。データがディスクアレイに格納される前に、データがネットワークを通してサーバのディスクアレイに保存されたことの通知をクライアントに送信するステップがある。第1の電源が故障した時に、データが喪失しないように、第1の電源が故障した時に、データがディスクアレイで保存されるまで第2の電源により給電されるメモリにデータを格納するステップがある。データをディスクアレイ内に保存するステップがある。
添付図面では、この発明の好ましい実施例およびこの発明を実施する好ましい方法が図示される。
[詳細な説明]
参照する図面において、いくつかの視点中で同様の、または、同じ部分については同じ参照番号を用いている。特に図1から4を参照すると、ネットワーク12からクライアントのデータに役立つためのファイルサーバ10が示される。そのサーバ10は、データを保存するためのディスク手段14を備える。そのサーバ10は、ネットワーク12からのデータを受信し、そして、そのデータがディスク手段14に格納される前に、そのデータがネットワーク12を通じてクライアントに保存されたという承認を送信するための手段を備え、その受信手段16はディスク手段14と通信状態にある。サーバ10は、データがディスク手段14で保存されるまでデータを保存するためのメモリ18を備え、受信手段16はメモリ18と通信状態にある。そのサーバ10は、電気をディスク手段14に給電するための第1の電源、メモリ18および受信手段16を備え、第1の電源20はディスク手段14、メモリ18、および受信手段16と通信状態にある。サーバ10は、第1の電源20が故障した時、メモリ18に電気を供給する第2の電源22を備え、第2の電源22はメモリ18と通信状態にある。
望ましくは、受信手段16は、クライアントからいずれかの状態でデータを受信し、そして、データを故障状態で受信した時、そのデータがメモリ18に格納される前に第1の電源20が故障した時、データがメモリ18に不正に上書きされることを防止する。望ましくは、そのディスク手段14はディスクアレイ24を含む。望ましくは、そのメモリ18はNVRAM26を含む。望ましくは、受信手段16は、クライアントから受け取った他の情報から書き込みデータを分離し、そのデータをNVRAM26へ送信する、要求マネージャ28を含む。
望ましくは、要求マネージャ28は、データを正常に識別するプライベートリストを有し、クライアントからの書き込み要求が受信手段16により完成される。要求が故障状態で処理され、そしてデータがディスクアレイ24に書き込まれる前に第1の電源20が故障したとしても、プライベートリストは、データがメモリ18内で正常に回復するのを保証するために要求マネージャ28によって使用される。望ましくは、受信手段16は、クライアントから要求を処理するiノードマネージャ3Oを含む。望ましくは、受信手段16は、ディスクアレイ24を管理して、そのディスクアレイ24に対してデータの読み書きを行うディスクマネージャ32を含む。望ましくは、受信手段16は、ディスクアレイ24に保存されなかった、メモリ18に格納されたファイルの一部を管理するキャッシュコントローラ34を含む。
望ましくは、NVRAM26は、第1の電源20に故障がある時、データの適切な再構成を保証するためにシステムメタデータへのすべての変化を追跡する、ディスクアレイ24内に配列されたログファイルのテールを持つ。望ましくは、NVRAM26は、NVRAMバッファ36、NVRAM記述子38、および回復レジスタ40を備える。望ましくは、NVRAMバッファ36は、クライアントからそれを受け取った時、そのデータを保存し、NVRAM記述子38は、回復データに適切な情報を、それの関連するNVRAMバッファ36に記録し、NVRAMバッファ36のフリーリスト、および、回復レジスタ40は、ヘッドとフリーリストのカウントを保持する。第2の電源28は、好ましくはバッテリを含む。
望ましくは、要求マネージャ28は、リクエスト番号を、ネットワーク12からのクライアントから受信手段16で受け取られたファイルシステム要求に割り当て、リクエスト番号は要求を特定する。望ましくは、受信手段はリクエスト番号状態メモリおよび他の情報を含み、そして、望ましくは、コールパラメータおよびファイル名を含み、そして、要求マネージャ28は、コールパラメタおよびファイル名を要求番号状態メモリ42に送信し、そして、要求が処理の準備ができているiノードマネージャ30へメッセージを送る。iノードマネージャ30が要求を処理する一方で、要求マネージャ28がクライアントからの要求を継続的に受信出来るように、望ましくは、要求マネージャ28およびiノードマネージャ30は、互いに独立して動作する。
望ましくは、iノードマネージャ30は、どんなタイプの操作が要求によって要求されるかを決定するために、リクエスト番号状態メモリ42から要求のコールパラメータを読むことによって、要求を処理し始める。望ましくは、受信手段は、キャッシュRAMを含み、そして、キャッシュコントローラ34は、iノードマネージャ30から参照メッセージを受け取り、そして、要求されたデータブロックのために、キャッシュRAM44内に配置されたキャッシュ状態テーブルを、キャッシュコントローラ34にサーチさせる、ディスクマネージャは、データブロックに関連した現在のデータをディスクアレイ24からフェッチし、そして、キャッシュポインタを、どこに書き込データが位置するかを示すキャッシュ状態テーブルに戻し、そして、キャッシュポインタを含むメッセージおよび命令(関連したキャッシュブロックの状態で何をすべきかの命令)をフェッチする。キャッシュRAM44内でデータブロックを特定して、NVRAMバッファ36からの書き込みデータをコピーするために、要求マネージャ28へメッセージを送信した時、望ましくは、iノードマネージャ30は、変化メッセージ(データブロックが変化し、ディスクアレイ24に書き込まなければならない)を、キャッシュコントローラ34へ送信する。
望ましくは、ディスクマネージャ32は、一時的に変更を防ぐ、関連するキャッシュポインタをロックするキャッシュコントローラ34へフェッチメッセージを発行した後に、キャッシュポインタからの書き込みデータをディスクブロックに転送する。望ましくは、キャッシュコントローラ34は、開放されるべきことが必要なNVRAMバッファ36とリンクするNVRAM26開放リストを格納する。望ましくは、NVRAM記述子38は、異なったキャッシュブロック内に保存されるそのNVRAMバッファ36内のデータの第1の部分と第2の部分を追跡する。
この発明は、ネットワーク12からのクライアントのデータに役立つための方法に関する。その方法は、第1の電源20により給電されるファイルサーバ10にてネットワーク12からデータを受信するステップを備える。データがディスクアレイ24内に格納される前に、データがネットワーク12を通してサーバ10のディスクアレイ24内にデータが保存されたという承認をクライアントに送るステップがある。第1の電源20が故障した時にデータが喪失しないように、そのデータがディスクアレイ24に格納されるまで、第1の電源20が故障した時に、第2の電源22によって給電されるメモリ18内にデータを格納するステップがある。そのデータをディスクアレイ24に格納するステップがある。
望ましくは、受信ステップは故障していた状態でデータを受信するステップを含み、そして、格納ステップは、データが故障状態で受信された、そして、データがメモリ18に格納される前に第1の電源20が故障した時、データがメモリ18に不正に上書きされることを防止するステップを含む。望ましくは、受信ステップは、サーバ10の要求マネージャ28によって、プライベートリストを維持するステップを含み、書き込み要求は、サーバ10により敢行され、そして、要求が異常に処理され、そしてデータがディスクアレイ24に書き込まれる前に第1の電源20が故障したとしても、メモリ18内でデータが正常に回復されることを保証するために要求マネージャ28により用いられる。
望ましくは、メモリ18内にデータを保存するステップは、データをNVRAM26内に格納するステップを含む。望ましくは、受信ステップは、ネットワーク12を通じてクライアントから受け取られた他の情報から書き込みデータを分離するステップを含む。
望ましくは、受信ステップは、リクエスト番号を、データに関連する要求に割り当て、そして、書き込みデータを保持するために、十分なNVRAMバッファ36をデキュー(待ち行列からデータを取り出す)させる。
望ましくは、サーバ10の要求マネージャ28によるステップは、フリーリストのヘッドからNVRAM26ポインタをデキューさせるステップがあり、記述子が表す、NVRAMバッフ36の状態をチェックするためにNVRAM26に関する記述子を読む。望ましくは、NVRAM26に関連づけられたサーバ10のキャッシュRAM44の第1のキャッシュブロックも第2のキャッシュブロックも保護された状態にない限り、要求マネージャ28により、記述子のビット状態をゼロに合わせるステップがあり、要求マネージャ28により、記述子の次のポインタフィールドを回復レジスタ40にコピーし、そして、回復レジスタ40がアップデートされる前に、第1の電源20が中断した場合、記述子の次のポインタフィールドを保有する。書き込みデータを格納するステップは、望ましくは、書き込みデータをNVRAMバッファ36に書き込み、そして、リクエスト番号状態メモリ42内にそれぞれのNVRAMバッファ36に、バッファポインタを保存する。
望ましくは、リクエスト番号が要求に割り当てられている要求マネージャ28によりサーバ10のiノードマネージャ30を認識するステップがあり、要求に関する書き込みデータを保持するNVRAMバッファ36を保護し、そして、iノードマネージャ30がクライアントからの要求に対して、承認をクライアントに発行することを許可する。望ましくは、保護ステップは、要求に対する書き込みデータを保持するのにどのNVRAMバッファ36が使用されているかを決定するために、iノードマネージャ30でリクエスト番号状態メモリ42のポインタフィールドを見るステップを含み、NVRAM記述子38のために物理アドレスをそれぞれのポインタフィールドに発生させ、iノードマネージャ30でNVRAMバッファ36に記述子を書き、そして、保護されるために、第1および第2のキャッシュブロックを設定する。望ましくは、ブロック開放不正メッセージを持つそれぞれの不正キャッシュブロックを、iノードマネージャ30から、各不正キャッシュブロックが開放される時にどのNVRAM バッファ36が開放されなければならないかを認識している、キャッシュコントローラ34へ開放するステップがある。
望ましくは、キャッシュブロックに関連しているあらゆるNVRAM26ポインタがクリーンにされた後で、そのポインタを、要求マネージャ28により、開放し、そして、要求マネージャ28は、キャッシュコントローラ34を通してディスクマネージャ32からブロッククリーン応答メッセージを受け取るステップがある。
望ましくは、前記開放するステップは、キャッシュコントローラ34から要求マネージャ28へ、NVRAM26ポインタリストを転送するステップを含み;要求マネージャ28がNVRAM26ポインタをプライベートリストに結びつける一方、要求マネージャ28がNVRAM26ポインタを受信した時、要求マネージャ28でもって、ポインタリスト上の各NVRAM 26 ポインタの、各キャッシュコントローラ34により指示された、第1または第2の部分の状態を開放する状態に変え;要求マネージャ28でもって、キャッシュコントローラ34によって示されなかったプライベートリスト上のそれぞれのNVRAM26ポインタの第1または第2の部分のいずれが保護状態であるかを決定し;要求マネージャ28により、NVRAM26ポインタがプライベートリストのヘッドに受け取られた時、第1または第2の部分が保護されないなら、第1または第2の部分が保護状態にあるか、プライベートリストのテールに対するものかを、NVRAM26ポインタで調査し;プライベートリストを、現在のフリーなリストのヘッドに追加して;フリーにリストの新しいヘッドを示すために、回復レジスタ40をアップデートし;そして、フリーなリストからの保護状態でないすべての記述子をデキューする。
この発明の動作では、ファイルサーバは、一般用途のプロセッサおよびカスタムASICが実行する機能により分離された、一般用途のプロセッサおよびカスタムASICの分散システムである。これらの機能的なユニットの管理に不可欠なものは、サーバ内のすべてのユニットに対して32バイトメッセージを待ち行列にできるメッセージシステムである。4個の機能ユニットは、ファイルシステムデータの管理を含み、そのデータのディスクサブシステムへの転送は、要求マネージャ、iノードマネージャ、ディスクマネージャおよびキャッシュマネージャである。それらがファイルシステム要求を処理しながら、これらの実体の各々は、それらがファイルシステム要求を処理する時に、メッセージを互いに送ることができる。図1は、これらのユニットがいかにして、互いに適合するかを示し、それらをサポートするメモリメモリを示す。太い実線は、クライアントからディスクアレイへのデータの流れを示す。細い点線は、データの流れを制御するための通信チャンネルを示す。
ファイルシステム要求がネットワークのクライアントから到着すると、そのファイルシステム要求は、直ちに要求マネージャによって処理される。新しい要求を受信すると、要求マネージャは、処理中にそれを特定するために用いられるであろう要求番号(RNUM)を割り当てる。そのRQMは、コールパラメータ、ファイル名、および書き込みデータを切り離すために、ありとあらゆるファイルシステム要求を分析する。パラメータおよびファイル名は、RNUM状態メモリに送出される一方、コールに存在するすべての書き込みデータは、分離され、そして停電に対する保護のための不揮発性のRAMに送出される。構文解析がいったん完了すると、要求マネージャは、メッセージをiノードマネージャに送り、新しいクライアント要求に対して処理の準備ができていることをiノードマネージャに知らせる。要求マネージャおよびiノードマネージャは、メッセージ待ち行列化システムによって切り離されるので、互いから応答に対して待つことなく、それらは自由に自身の機能を処理することができる。言い換えれば、iノードマネージャが難しくて遅いファイルシステム操作に遭遇しても、要求マネージャは、急激なクライアント要求を自由に処理することができる。要求マネージャは、システム内のプログラムされたRNUMの最大番号によってのみ制限される。
iノードマネージャは、ファイルシステムコマンドの中央プロセッサであり、その処理を完了するためにメッセージを様々なユニットに送る。iノードマネージャに、要求マネージャからのメッセージの受け取りから、要求が待機であることが知らされる。そして、それは、どんなタイプの操作が要求されているかを決定するために、RNUM状態メモリからコールのパラメータを読むことによって、処理を開始とする。このプロセッサは、クライアントから到着するかもしれないすべてのタイプのファイルシステム要求を扱うようにプログラムされる。処理の間、iノードマネージャは、メッセージをキャッシュコントローラに送り、iノードおよびデータブロックがディスクアレイからとってフェッチされることを要求する。そして、それは、クライアント要求の満足のために必要に応じてデータをキャッシュRAMへ送信し、またキャッシュRAMからデータを受け取るために、キャッシュコントローラから受け取るポインタを使用する。それが1つのキャッシュブロックのコンテンツを変えたなら、iノードマネージャは、メッセージをキャッシュコントローラに送り、データ・ブロックがアップデートされ、ディスクに書き戻さなければならないことを、このユニットに知らせる。
キャッシュコントローラは、クライアントにより近くにあり、ディスクアレイよりはるかに少ない待ち時間を持っているメモリ内に格納されたファイルシステムの一部を管理する。それは、ファイルシステム要求を処理するとき、iノードマネージャおよびディスクマネージャからのメッセージの2つの基本的なタイプを受け取る。最初のタイプは、ルックアップメッセージであり、キャッシュコントローラに、要求されたデータ・ブロックに対するキャッシュ状態テーブルを探させ、必要なら、ディスクからデータをフェッチして、そしてキャッシュポインタをデータが置かれた箇所に戻す。2番目のタイプは、キャッシュポインタおよび、キャッシュポインタの状態で何をすべきかの命令を含むフェッチメッセージである。異なった機能的なユニットがキャッシュエントリーで動作するとき、それらが不意に取り替えられないことを保証するために、それらは、自身に対する参照を(キャッシュメッセージを通じて)を取り込む。
ディスク活動が要求されるときはいつも、ディスクマネージャは、キャッシュコントローラからのメッセージを扱う。参照メッセージがキャッシュミスを引き起こしたとき、キャッシュコントローラは、リードメッセージをディスクマネージャへ送る。キャッシュエントリーが変更されたとき、ディスクに書き戻されるために、キャッシュコントローラは、最新のデータが位置するキャッシュポインタでもってディスクマネージャに書き込む。ディスクマネージャがキャッシュポインタからディスクブロックへデータを移動するために、それは、最初にフェッチメッセージをキャッシュコントローラに発行し、ポインタ上でロックを求める。ロックが許可された時、ディスクマネージャは、キャッシュポインタからのデータをディスクアレイにコピーのみをする。これは、転送が始まる前にデータ・ブロックの内容が安定していることを保証する。ディスクマネージャは、キャッシュRAMからディスクアレイへデータを移動するためにコマンドをキャッシュコントローラに送る。それは、その決定を、潜在的な高い待ち時間のディスクの効率を最適化するように設計されたアルゴリズムの結果に基礎をおく。不正ページを追跡することは別として、システムのクライアント側に起こる出来事を処理しない、キャッシュRAMからのデータをいつ移動するかを決定する。
要求マネージャがネットワークから要求を受け入れるとき、要求マネージャは、サーバ内の要求の有効期間の間に用いられるべきコンテキストIDを、前記要求に割り当てる。このIDはRNUMと参照されるであろう。RNUM状態メモリは、要求の処理の間に蓄積された情報を保持するために使用される。それは、停電後に、揮発性で、無効と認定される。RNUMのために到来するクライアントデータを保持するのに使用されるNVRAMバッファへのポインタは、この領域に格納される。
ファイルサーバは、クライアントの近くで低い遅延メモリのファイルシステムの部分を維持するためにキャッシュ RAMを使用する。このメモリはディスクアレイよりはるかに速いが、それは、一般に、多くのパワーを消費して、したがって、揮発性のメモリとして実装され、電力供給停止の間、すべてのコンテンツを喪失する。キャッシュコントローラは、改善された効率のために、書き戻しアルゴリズムを使用することでキャッシュ RAMを管理する。ディスクへの書き戻しを遅らすことにより、ファイルサーバは、同様の物理的な位置からのデータを、1つのより大きいは要求にグループ化し、性能を向上させる。
それは、ディスクへのデータの書き戻しを延期するので、キャッシュ RAMは、ファイルシステムはディスクアレイと比較して、より最新のバージョンを持つであろう。したがって、書き戻しが起きるまで、そのコンテンツはNVRAMによって保護されなくてはならない。
キャッシュRAMに保存された別のアイテムはNVRAM 開放リストである。このメモリは、1つのキャッシュブロックのクリーン時の開放されるべき必要のあるNVRAMバッファをリンクするために、キャッシュコントローラによって使用される。最大64kのエントリーはこの機能のためにサポートされる。それぞれのエントリーは、以下の通り8バイトであってフォーマットされている。
Figure 2006503370
キャッシュコントローラが、開放リストを必要とする第1のNVRAMポインタの通知を得たとき、キャッシュコントローラは、それがリスト上の最後であると指定するためにフラグ(O)のセットでそれのためのエントリーを作成する。 リストに置かなければならないあらゆるその後のポインタは、リストのヘッドに調査され、前のヘッドを指す。
クライアントからの書き込みデータ帯域幅に耐えることの出来るいずれかの低パワーメモリ技術を用いることでこのシステムの不揮発性RAM(NVRAM)を実施できる。停電の時にバッテリバックアップへスイッチされるように、そのパワー・システムは、システムの残りの部分から切り離さなければならない。そのNVRAMには、2つの別々の目的がある。 まず最初に、それはファイルシステムメタデータへのすべての変化を追跡するログファイルのテール(流れ)を保持する。メタデータが変更されるとき、サーバ故障の場合に適切な復旧を保証するために古いデータおよび新しいデータの処理がログファイルに保持される。ディスクアレイ内でファイルの過半数が保たれる一方、最新の処理がログファイルのテールに追加されるとき、その最新の処理はNVRAMに維持される。 一旦、十分な処理が蓄積されると、そのテールは、大きくかつ効率よく瞬時にディスクに移動される。高速メモリ内にログファイルのテールを持つことにより、そのファイルシステムは最も効率的にそれを維持することができる。
NVRAMの2番目の使用は、クライアントからの書き込みデータをディスクアレイに書く前に、一時的に記憶するためのものである。このタスクを達成するために、3つの別々の構造がNVRAM内に維持される。これらは4kBのNVRAM バッファ、32バイトのNVRAM 記述子および4バイトの回復レジスタである。クライアントから書き込みデータが到着した時、その書き込みデータを正確に格納するために、NVRAM バッファがサーバにより使用される。ディスクブロックとキャッシュ RAMバッファのサイズを合わせるために、4kBのバッファサイズが選ばれた。しかしながら、選択的にサイズを決める別の可能性は、バッファを、クライアントからの利用者データの最も大きい可能な転送と等しくすること含む。更に別のアプローチは、もし多数の小さい書き込みが到着するなら、メモリの効率を増すために、小さいのと大きいサイズの双方を備える。各バッファは、電力供給停止の後に書き込みデータを回復することができるように、NVRAMバッファ内に保持された書き込みデータの詳細のすべてを指定するために、バッファに関連するただ一つの記述子を持つ。また、その記述子は、クライアント要求を処理する一方、要求マネージャが引き出すことができる、バッファのフリーリストを維持するために使用される。キャッシュからの書き込みデータでディスクブロックがアップデートされるので、NVRAMバッファは、フリーリストの最後に戻される。回復レジスタは、フリーリストのヘッドとカウントを保持するために用いられる。図2はファイルサーバが、クライアントからの書き込みデータを保持するために、NVRAMバッファをいかにして追跡するかを示す。
そのサーバは、64kのNVRAMバッファをサポートするように設計されているので、16ビットのポインタは、各バッファとその記述子を区別し参照するために用いられる。それが与えられると、回復レジスタは単に、そのNVRAMフリーリストのヘッドにある記述子への16ビットのポインタ、および、前記フリーリスト上の記述子の16ビットのカウント値を含む。そのNVRAM記述子のコンテンツは、ここで提案された強固な格納アーキテクチャーの操作に非常に重要である。このフィールド(情報を表す単位)は、書き込みデータの受け取ると初期化され、そして、回復手順の間、検査される。NVRAM 記述子の内容は表2に示される。
Figure 2006503370
記述子にみられるように、それぞれのNVRAMバッファには、保護の異なった状態にあるかもしれない第1および第2の部分がある。この概念に関する説明のために、以下の例を考察する。クライアント要求が8kBの書き込みデータを担うサーバに到着するなら、前記データの受信のために、二つの4kBのNVRAMバッファを準備しなければならない。前記書き込みデータがそのファイル内に1kBの開始要のオフセットを持つなら、完全な8kBのデータは、結局、1kB〜9kBをオフセットするために書かれる。すべてのキャッシュブロックが4kB境界を始めるので、書き込みデータがディスクアレイに戻される前に、この書き込みデータは3つの個別のキャッシュブックに書かれる。図3に示されるように、書き込みデータは、NVRAMバッファ1および2に書かれる。処理の間、キャッシュポインタ100、200および300が得られ、そして書き込みデータを受け取るために用いられる。キャッシュブロックの4kB境界のために、NVRAMバッファは実際には第1および第2の2つの別々の部分に分割される。キャッシュブロック100は、NVRAMバッファ1の第1の部分からのデータを保持するが、キャッシュブロック200は、NVRAMバッファ1の第2の部分およびNVRAMバッファ2の第1の部分からのデータを保持し、以下同様である。キャッシュブロック300が他のものより前にクリーンにされた場合、システムは、NVRAMバッファ2の第2の部分だけを開放してもよいことを認識し、そのバッファをフリーリストから離し、更に第1の部分に対し保護を維持する。
クライアントからの書き込み要求の存続期間の間に、NVRAM構造の維持についての操作の3つの段階を以下述べる。以下で概説された各段階は、2つの小区分を持つ。第1の小区分は、段階を処理するとき、サーバが直面するステップについて説明する。第2の小区分は、段階の間に起こるかもしれない電力供給停止の衝撃の分析を提供する。この供給停止分析は、NVRAM構造の完全さを約束することなく、いつでも停電できることを保証するのに必要である。
段階1:ユーザーデータの到着
ユーザーデータ到着の説明
ファイルサーバがクライアントから書き込み要求を受けた時、それは、要求マネージャによって専用要求番号(RNUM)に割り当てられて、分析されて、分配される。要求が到着したことを、iノードマネージャに通知する前に、全体の書き込みデータコンテンツを保持するために、最初に、十分な4kBのNVRAMバッファをデキューしなければならない。書き込み要求の最大サイズが8kBであるので、2つ未満のバッファが要求毎に必要となる。
要求マネージャがフリーリストのヘッドからのNVRAMポインタをデキューするとき、それは、最初に、それが表すバッファの状態をチェックするために、その記述子を読むであろう。第1および第2のキャッシュブロックのいずれもが保護されていない状態なら、要求マネージャは、記述子で状態ビット外のゼロになるであろう。それは、フリーリストの新しいヘッドであるので、それは、その後、新たにデキューされた記述子の次のポインタフィールドを、NVFREE HEAD回復レジスタにコピーする。次のポインタフィールドは、NVFREE_HEADレジスタをアップデートする前にパワーを中断するといけないので、デキューされた記述子内に保有される。新たにデキューされた記述子が完全にゼロにされたなら、フリーリストは、NVFREE_HEAD回復レジスタをアップデートするまで、無効の瞬間があるであろう。NVRAMバッファを無効状態に置くことは、フリーリスト外のNVRAMバッファが回復されないことを保証する。
要求マネージャが、保護された状態ら設定された第1または第2のキャッシュブロックを見つけると、それは、ポインタが完全に開放されず、フリーリストからそれを全体で取り除くことを知るであろう。それが記述子をフリーリストから移動した時、それは、回復を防ぐために開放状態内のすべての部分をも無効に変える。その結果、記述子の次のポインタフィールドは、上述のように、NVフリー ヘッド回復にコピーされるであろう。
要求マネージャは、次に、利用者データを新たに取得されたバッファに書き込み、そして、RNUM状態メモリ内の事前に定義された位置のバッファにポインタを収納するであろう。このクライアントは、データが遂行されたという承認を受けていないので、これらのバッファはまだ保護されていない。どんなフリーのNVRAMバッファも利用可能でないなら、十分にフリーになるまで、要求マネージャのクライアントインタフェースは完全に停止するであろう。
利用者データ到着の供給停止分析
利用者データ到着の間のNVRAM構造への唯一の変更は、フリーリストのヘッドからのNVRAMバッファをデキューすることである。このプロセスの間、極めて特別なオーダーで2つの構造だけをアップデートする。まず最初に、記述子の状態フラグは、開放から無効に変化し、どんな保護された部分も変化されない。記述子の他のフィールドが全くこの操作の間に変化しないので、アップデートの間の電力遮断はその状態に全く影響を持たないであろう。無効か開放であるフリーリスト上のエントリーは、定義により決して回復されないであろう。NVフリーヘッド回復レジスタがアップデートされる前で、記述子がアップデートされた後で、パワーが無くなると、回復手順は、まだフリーリストのヘッド上の最近にデキューされた記述子を単に見つけ、それを回復しないであろう。次のポインタフィールドが変化しないので、フリーリストの保全はまだ維持されている。
段階2:利用者データ収容
利用者データ収容の説明
要求マネージャが、新しいRNUMが書き込み要求に割り当てられたことをいったんiノードマネージャに通知すると、iノードマネージャは、応答をクライアントに送り返すべきである時間になるまで、このコールのためのその手順を実行する。この応答を送る前に、iノードマネージャは、確実にバッファコンテンツを保護しなければならない。このタスクを達成するために、この要求に対する書き込みデータを保持するのにどのバッファが用いられたかを見つけるために、RNUM状態メモリのポインタフィールドを最初に探す必要がある。書き込み要求が 4kB かそれ未満なら、1個のポインタだけが有効である。iノードマネージャは、32バイトのNVRAM 記述子に対する物理アドレスを発生させるのに各ポインタを使用しなければならない。iノードマネージャは、メモリに記述子の全体のコンテンツを書き、第1および/又は第2の状態が保護されるために設定しなければならない。さらに、それは、それが保護した最後のNVRAMバッファよりさらに1つ以上の8バイトのシーケンス番号を割り当てなければならない。このポイントで、バッファが保護されて、iノードマネージャが書き込み要求に対する応答を発光することが受入れられる。
その応答をクライアントに送ったとき、iノードマネージャは、ブロック開放不正メッセージと共に各不正キャッシュブロックをキャッシュコントローラに開放するであろう。このメッセージでは、プロセッサは、ブロックがクリーンにされたとき、どのNVRAMバッファを開放しなければならないかを指定しなければならない。最大2つのNVRAMバッファが、iノードマネージャにより、1つのキャッシュブロックに関連している必要があるので、ブロック開放不正コールは、これらのポインタを通過させるために十分なスペースを備える。さらに、このコールは、NVRAMバッファの第1または第2の部分がこのキャッシュブロックに関係するかを指定するために、NVRAMポインタあたり1ビットを提供する。
新しいNVRAMポインタが割り当てられるキャッシュブロックが既に他のもののトラックを維持しているかもしれないことに注目することは重要である。したがって、キャッシュコントローラは、キャッシュブロックがクリーンにされたとき、開放を必要とするNVRAMポインタのリストを保持しなければならない。これを達成するために、キャッシュコントローラは、NVRAM 開放リストと呼ばれるキャッシュRAMの領域で8バイトのエントリーの別々のプールを維持する。ブロック開放不正コールは、到達し、キャッシュコントローラはこのメモリ内のNVRAMバッファのただ一つのリンクされたリストを形成する。NVRAMバッファがあるのと同じくらい多くのエントリーがこのリストにおけるあるに違いない。このリストはキャッシュRAM内に保持されるので、NVRAM 開放リストと呼ばれる。
段階3:利用者データ開放
利用者データ収容の供給停止分析
この段階の間、 書き込みデータを保護するために、iノードマネージャがNVRAM記述子を満たしたとき、NVRAM構造への唯一の変化が起こる。記述子の状態ビットは、他のすべてのフィールドが最初に書かれるまで保護されることへの状態変化が起こらないのを保証するために、最終的なワード内に置かれる。この段階の始めで、記述子が不正状態にあるので、すべてのフィールドが有効な情報を含むまで、記述子は回復の候補でなくなるであろう。
利用者データ開放の説明
なぜ、NVRAMバッファの開放リストがキャッシュバッファの背後に維持されるのか、また、すべての時間で電力遮断を考慮しているとしても、なぜ、サーバが、このリストが任意のオーダーで作成されることを許容するのかの理由は、次に説明される。ファイルシステム上で独立して、又は同時に動作する種々のソフトウエアおよびハードウエアをサーバに持たせるために、故障時に機能を敢行することを可能にする十分な柔軟性がなければならない。言い換えれば、コンテンツが最終的にディスクに書き込まれた時、キャッシュブロックは、開放するためにNVRAMバッファのリストを持つと言える。バッファのこのリストが、1-2-5-4-3の順であったとする。数字はクライアントから到達したデータの順を表す。クライアントは5回連続で極めて迅速にファイルに書き、(要求#5からの最新の書き込みデータが実際にはキャッシュバッファの中にあっても)サーバは最後に書かれた3番目の書き込みが開放リストの最後に書く方法でこれらの要求を処理することを考える。開放リストが処理される前にパワーが停止したなら、NVRAMがまだすべての5つのNVRAMバッファを持っていて、それらを整理して、最新のデータがディスクに行くことを保証するので問題が全くないであろう。しかしながら、開放リストの最初の3つのエントリーがNVRAMから取り除かれ、その後、パワーが停止したらどうなるのか。システムが戻るとき、転送#3および#4がNVRAMにあって、それがそれらをディスクに書き込まれ、不当に、転送#5からの最新のデータを上書きすることがわかるであろう。プライベートリストが要求マネージャによって維持されている状態で、バッファを開放するとき、この問題は解決される。
より明確に、そのキャッシュコントローラは、メッセージをクリーンにするため、キャッシュブロックがいつクリーンにされるかが、ブロックの動作を通じて報告される。このコールが受け取られたとき、キャッシュコントローラは、ブロックの状態で参照をつけられるあらゆるポインタを開放するために、要求マネージャと通信する。ファイルサーバがマルチスレッド化の処理用エンジンなので、開放されたNVRAMバッファの命令が、要求がネットワークから到着する命令と同じであるという保証は全くない。したがって、要求マネージャは、それらをフリーリストに置く時に、NVRAM記述子を完全にゼロにする簡潔な解決法を取ることができない。チップが不適切な記述子をフリーリストに返している間、パワーが無くなるなら、回復手順は、解放されなかったより古いバッファが実際に最新のデータを含むことを考えるであろう。
注文制限を避けるために、サーバは制御された方法でNVRAMバッファを開放する。まず最初に、全体のポインタリストは、キャッシュコントローラから要求マネージャにいずれかの順序で移動する。要求マネージャがポインタを受け取った時、それは、プライベートリストの中でそれらを結びつける一方、第1、または、第2の部分(キャッシュコントローラによって示されたように)を開放状態に変えるであろう。NVRAMポインタの反対の部分がまだ保護されていることを、要求マネージャが見つけたなら、それは、ポインタをプライベートリストのヘッドにエンキュー(待ち行列にデータを追加)する。さもなければ、それはポインタをプライベートリストのテールにエンキューする。キャッシュコントローラが開放するためにNVRAMポインタの全体のリストを送った後に、要求マネージャは、新しいリストを現在のフリーリストのヘッドに追加し、そして新しいヘッドを示すためにNVFREE ヘッド回復レジスタをアップデートする。NVRAMポインタを二度、フリーリスト上に置くことを避けるために、要求マネージャは、キャッシュコントローラから別のどんな開放も受け入れる前に、要求マネージャはその後、フリーリストからデータが保護されたすべての記述子をデキューしなければならない。それは、正常なデキューの手順に従うことでこれを実行する。
利用者データ開放の停電分析
開放プロセスの間に現れるNVRAM構造の第1の変更は、プライベートリストの作成である。ポインタがプライベートリストのヘッドかテールに書かれているときはいつも、状態ビットは、次のポインタにアップデートされるのと同時に、開放することに変化する。プライベートリストの生成の間、フリーリストへの変化は全くない。したがって、プライベートリスト生成の間にパワーが失われたとき、NVRAMポインタがプライベートリストに対するものか否かに関係なく、新たにクリーンにされたキャッシュブロックの背後のあらゆるNVRAMポインタが回復されるであろう。
プライベートリストがフリーリストのヘッドに動かされるとき、NVRAM構造の第2の変化が起きる。このとき、プライベートリストのテールのエントリーの次のポイスンターは、現在の自由なヘッドになるように、アップデートされる。 次のステップは、プライベートリストのヘッドへ向けるためにNVフリーヘッド回復レジスタをアップデートする。これは有効的に、新たに開放される各々のNVRAMポインタを、フリーな待ち行列へ移動する。NVフリーヘッド回復レジスタをアップデートする前にパワーを失うなら、回復のステップがフリーリストで見つけられないので、回復ステップは、更に全体のプライベートリストを回復するであろう。
パワー損失時の手順
パワーの損失時、ファイルサーバは優雅にすべてのNVRAMの活動に終わりにもたらすであろう。データをNVRAMに送るメモリコントローラは、要求マネージャおよびiノードマネージャからのどんな新しい要求も受け入れるのを止め、そして、それを持っているすべての書き込み位置バッファも洗い流すであろう。書き込みがメモリコントローラにより受け入れられた後で、しかし、それが実際にNVRAMになされる前に、要求マネージャがメモリコントローラにより受け入れられるので、その洗い流しのステップは重要である。そのメモリコントローラは、その後、電源をバッテリバックアップに移し、そしてメモリを低パワーモードに置く、シャットダウン手順が続くであろう。
回復手順
システムでパワーが復帰するとき、全体のサーバが新しい要求を受け入れる準備ができるまで、要求マネージャはディセーブル状態で留まる必要がある。正常な初期化ルーチンが完了した後、どのバッファがデータを保護するか、そして、それらがどんな順序で受け取られたかを決定するために、iノードマネージャは、NVRAM内のあらゆる記述子を通じて実行することが期待される。
1.開放または保護された状態にデータの部分を持っているすべてのポインタのために、全体のNVRAM記述子をスキャンさせる。これらの部分を保護された状態に置く。
2.NVフリーヘッド回復レジスタを読む。
3.次にフリーバッファのリストにリンクされ、保護されたリストからどんな開放部分も取り除く。
4.全体の保護されたリストをスキャンし、そして、シーケンス番号に従って、それらに命令する。
保護されたデータの最終的なリストがいったん決定されると、iノードマネージャは、対象のディスクブロックの現在のコンテンツを、ディスクアレイからキャッシュ RAMに読み込ませるために、キャッシュコントローラでもって調整するであろう。次に、NVRAMバッファ中に格納されたデータでそれらのキャッシュブロックを上書きし、記述子で示されたバイトオフセットでスタートする。すべてのデータがいったんキャッシュブロックにコピーされると、ディスクにそのデータを書き戻し、ファイルシステムを最新版にアップデートする。このとき、そのサーバは、クライアントから新しいネットワークトラフィックを受けることが可能にされてもよい。
図5に示したような好ましい実施例では、32Gbps バックプレーン80上のクライアントからの要求は、構造インターフェース81によって受け取られる。構造インターフェース81は、バックプレーン80から受け取ったデータのフォーマットを、要求待ち行列マネージャ82が動作できるフォーマットに変換する。その構造インターフェース81および要求待ち行列マネージャ82は、要求マネージャを形成する。要求待ち行列マネージャ82はDRAMコントローラ83にデータを書き、DRAMコントローラ83は次にデータを外部の共有されたDRAM記憶92 25へ、最終的にNVRAMに伝える。また、要求待ち行列マネージャ82は、情報をZBTコントローラ84に供給し、そのコントローラは、外部の、共有されたSRAM記憶85とのインターフェースとして機能する。
要求待ち行列マネージャ82は、メッセージ待ち行列管理プログラム85と通信し、それはシステムの様々な部品の間のすべてのメッセージのためのハブとして機能する。メッセージ待ち行列マネージャ85からのメッセージは、外部のiノードマネージャとディスクマネージャと通信する高速経路の上位インターフェース86に提供する。ディスクマネージャはBMAPリードプロセッサおよびBMAPライトプロセッサから形成される。ディスクマネージャは、仕事量をよりよく分配するためにリードプロセッサとライトプロセッサに分解される。
メッセージ待ち行列マネージャ85は、キャッシュコントローラと通信し、このキャッシュコントローラは次ぎに、外部のキャッシュ状態DRAM95とインターフェースする。メッセージ待ち行列コントローラ85およびキャッシュデータDRAMコントローラ93は、外部記憶装置に保存されたデータに関する情報を得るためにディレクトリマネージャ87と通信する。また、メッセージ待ち行列コントローラ85は、システムのメインテナンスのために外部のブレード制御プロセッサ89と通信する低速経路インターフェース88と通信する。ファイバーチャンネルマネージャ90は、ディスクおよびiノードに対してデータを転送するために、チップ94から外部へ広がるファイバーチャンネル91で通信する。また、要求待ち行列マネージャ82は、キャッシュデータメモリ96とインターフェースするキャッシュデータDRAMコントローラ93と通信する。
この発明は図示の目的のための以上の実施例で詳細に説明したが、そのような詳細は単に前記目的のためのものであり、以下のクレームで述べられたことを除き、この発明の本旨および範囲からそれることなく、当業者により種々の変形が可能であることが理解されるであろう。
ファイルシステムの機能ユニットのブロック図を示す。 NVRAMのデータバッファ構造を示した概略図を示す。 NVRAMバッファの第1/第2の部分を視覚化した概略図を示す。 この発明のファイルシステムの概略を示す。 この発明のファイルシステムの好ましい実施例の概略を示す。
符号の説明
10:ファイルサーバ
12:ネットワーク
14:ディスク手段
16:受信手段
18:メモリ
20:第1の電源
22:第2の電源
24:ディスクアレイ
26:NVRAM
28:要求マネージャ
3O:iノードマネージャ
34:キャッシュコントローラ
36:NVRAMバッファ

Claims (36)

  1. ネットワークからのクライアントのデータをセーブするためのファイルサーバであり、
    データを格納するためのディスク手段と、
    ネットワークからのデータを受信し、そして、データが格納される前に、データが格納されたことの認識をネットワークを通じてクライアントに送るための手段であり、かつ受信手段はディスク手段と通信状態にある手段と、
    データがディスク手段に格納されるまで、データを格納するためのメモリであり、かつ、前記受信手段と通信状態にあるメモリと、
    ディスク手段、メモリおよび受け取り手段に電気を供給し、かつ、ディスク手段、メモリおよび受信手段と電気的に通信する第1の電源と、
    第1の電源が故障した時、メモリに電気を供給し、かつ、メモリと通信状態にある第2の電源とを備えるファイルサーバ。
  2. 受信手段は、クライアントからデータを正常に受信し、そして異常状態でデータを受信し、かつデータがメモリに格納される前に第1の電源が故障した時、データがメモリに不正に上書きされることを防止する請求項1記載のサーバ。
  3. ディスク手段はディスクアレイを含む請求項2記載のサーバ。
  4. メモリはNVRAMを含む請求項2記載のサーバ。
  5. 受信手段は、クライアントから受信した他の情報から書き込みデータを分離し、そして、前記データをNVRAMへ送る請求項4記載のサーバ。
  6. 要求マネージャは、データを正常に認識したプライベートリストを有し、クライアントからの書き込み要求は、受信手段により敢行され、プライベートリストは、要求が異常状態で処理され、かつ、データがディスクアレイに書き込まれる前に第1の電源が故障した場合であっても、データが正常に回復されることを確実にするために、要求マネージャにより用いられる請求項5記載のサーバ。
  7. 受信手段は、クライアントからの要求を処理するiノードマネージャを含む請求項6記載のサーバ。
  8. 受信手段は、ディスクアレイを管理し、そしてディスクアレイに対してデータを読み書きするディスクマネージャを含む請求項7記載のサーバ。
  9. 受信手段は、ディスクアレイにセーブされたものではなく、メモリ手段に格納されたファイルの少なくとも一部を管理するキャッシュコントローラを含む請求項8記載のサーバ。
  10. NVRAMは、第1の電源の故障時に、適したデータ回復を確実にするために、ファイルシステムメタデータへのすべての変化を追跡するディスクアレイ内に配置されたログファイルのテールを保持する請求項9記載のサーバ。
  11. NVRAMは、NVRAMバッファ、NVRAM記述子および回復レジスタを備える請求項10記載のサーバ。
  12. NVRAMバッファは、クライアントからデータを受け取った時にそのデータを格納し、NVRAM記述子は、データ回復に適した情報をその関連するNVRAMバッファに格納し、NVRAMバッファおよび回復レジスタは、フリーリストのヘッドおよびカウント値を保持する請求項11記載のサーバ。
  13. 第2の電源はバッテイを含む請求項12記載のサーバ。
  14. 要求マネージャは、要求番号を、受け取り手段によりネットワークを通じクライアントから受け取ったファイルシステム要求に割り当て、要求番号は要求を識別するものである請求項13記載のサーバ。
  15. 受信手段は、要求番号状態メモリおよび、コールパラメータおよびファイル名を含む他の情報を含み、要求マネージャは、コールパラメータおよびファイル名を要求番号状態メモリへ送り、そして要求が処理に対して準備完了であるメッセージをiノードマネージャに送る請求項14記載のサーバ。
  16. iノードマネージャが要求を処理する一方、要求マネージャがクライアントから継続して要求を受信できるように、要求マネージャおよびiノードマネージャは、互いに独立して動作できる請求項15記載のサーバ。
  17. どのタイプの動作が要求によって要求されたかを決定するために、iノードマネージャは、要求番号状態メモリからの要求のコールパラメータを読むことにより、要求の処理を開始する請求項16記載のサーバ。
  18. 受信手段は、キャッシュRAMを含み、そして、キャッシュコントローラは、iノードマネージャから参照メッセージを受信し、そして、要求されたデータブロックに対し、キャッシュRAM内に配置されたキャッシュ状態テーブルを、キャッシュコントローラにサーチさせるディスクマネージャは、データブロックに関係した現在のデータを、ディスクアレイからフェッチし、そして、キャッシュポインタを、どこに書き込みデータが位置するかを認識しているキャッシュ状態テーブルに戻し、そして、キャッシュポインタを含むメッセージおよび、関連したキャッシュブロックの状態でもって、何をすべきであるかの命令をフェッチする請求項17記載のサーバ。
  19. NVRAMバッファからの書き込みデータを、キャッシュRAM内の特定のデータブロックにコピーするために、メッセージを要求マネージャに送り、iノードマネージャは、データブロックが変化し、ディスクアレイに書き込まなければならないことの変化メッセージをキャッシュコントローラに送る請求項18記載のサーバ。
  20. 関連したキャッシュポインタをロックし、一時的に変化するのを防止する、キャッシュコントローラへ、フェッチメッセージを出力した後に、ディスクマネージャは、キャッシュポインタからの書き込みデータをディスクブロックに転送する請求項19記載のサーバ。
  21. キャッシュコントローラは、キャッシュブロックがクリーンにされた時に、開放されることが必要なNVRAMバッファと互いにリンクするNVRAM開放リストを格納する請求項20記載のサーバ。
  22. NVRAM記述子は、異なるキャッシュブロック内に格納された、そのNVRAMバッファ内のデータの第1および第2の位置を追跡する請求項21記載のサーバ。
  23. ネットワークからのクライアントのデータをセーブするための方法であり、
    第1の電源により給電されたファイルサーバでネットワークからデータを受信し、
    データがディスクアレイに格納される前に、ネットワークを通じデータがサーバのディスクアレイに格納されたことの認識をクライアントに送り、
    第1の電源が故障した時、
    データがディスクアレイに格納されるまで、第1の電源が故障してもデータを喪失しないように、第2の電源により給電されるメモリ内にデータを格納し、
    そのデータをディスクアレイに格納する、
    ステップを備える方法。
  24. 受信ステップは、データを異常状態で受信するステップを含み、そして、データが異常状態で受信され、そして、データがメモリに格納される前に第1の電源が故障した時、データがメモリに不正に上書きされることを防止するステップを含む請求項23記載の方法。
  25. 受信ステップは、データを正常に識別するサーバの要求マネージャによりプライベートリストを維持するステップを含み、書き込み要求は、サーバにより敢行され、そして、要求が異常に処理され、かつ、データがディスクアレイに書き込まれる前に第1の電源が故障しても、データが正常に回復されることを確実にするために、要求マネージャにより用いられる請求項24記載の方法。
  26. メモリにデータを格納する手段は、書き込みデータをNVRAMに格納するステップを含む請求項25記載の方法。
  27. 受信ステップは、ネットワークを通じてクライアントから受信した他の情報から書き込みデータを分離するステップを含む請求項26記載の方法。
  28. 受信ステップは、要求番号を、データに関連した要求に割り当て、そして、書き込みデータを保持するために、十分なNVRAMバッファをデキューする請求項27記載の方法。
  29. サーバの要求マネージャにより、フリーリストのヘッドからのNVRAMポインタをデキューし、記述子が示したNVRAMバッファの状態をチェックするために、NVRAMの記述子を読み込みステップを含む請求項28記載の方法。
  30. NVRAMと関連と関係するサーバのキャッシュRAMの第1のキャッシュブロックまたは第2のキャッシュブロックが保護された状態である限り、記述子の要求マネージャ状態ビットにより、ゼロにし、要求マネージャにより、記述子の次のポインタフィールドを、回復レジスタにコピーし、そして、回復レジスタがアップデートされる前に第1の電源が遮断された場合、記述子内の次のポインタフィールドを保持する請求項29記載の方法。
  31. 書き込みデータを格納するステップは、書き込みデータをNVRAMバッファに書き込み、そして、バッファポインタを、要求番号状態メモリ内のそれぞれのNVRAMバッファに格納するステップを含む請求項30記載の方法。
  32. 要求マネージャにより、要求番号が要求に割り当てられたことを、サーバのiノードマネージャに通知し、要求の書き込みデータを保持するNVRAMバッファを保護し、そして、iノードマネージャが、クライアントからの要求に対し、クライアントに認識を出力することを許可するステップを含む請求項31記載の方法。
  33. 保護ステップは、どのNVRAMバッファが要求に対する書き込みデータを保持するために用いられているかを決定するために、iノードマネージャにより、要求番号状態メモリのポインタフィールドの中を調べ、NVRAM記述子のために各ポインタフィールドに対する物理的なアドレスを発生させ、iノードマネージャで記述子をNVRAMバッファに書き込み、そして、保護されるために第1および第2のキャッシュブロックを設定するステップを含む請求項32記載の方法。
  34. 各不正キャッシュコントローラが開放された時、どのNVRAMバッファが開放されるべきかを決定する、キャッシュコントローラに、iノードマネージャからのブロック開放不正メッセージで各不正キャッシュブロックを開放するステップを含む請求項33記載の方法。
  35. キャッシュブロックがクリーンにされ、そして、要求マネージャがキャッシュコントローラを通じてディスクマネージャからブロッククリーン応答メッセージを受信した後、キャッシュコントローラに関係した各NVRAMポインタを、要求マネージャでもって開放するステップを含む請求項34記載の方法。
  36. 開放するステップは、キャッシュコントローラのNVRAMポインタを要求マネージャに転送し、要求マネージャがプライベートリスト内のNVRAMポインタと互いにリンクする一方、要求マネージャがNVRAMポインタを受信した時に、要求マネージャでもって、ポインタリスト上の各NVRAMポインタの、キャッシュコントローラで示されたような、第1または第2の部分を、開放状態に変更し、要求マネージャでもって、キャッシュコントローラにより示されていない、プライベートリスト上の各NVRAMポインタの第1または第2の部分が保護された状態であるかを決定し、NVRAMポインタが要求マネージャにより受信された時、NVRAMポインタを、第1または第2の部分が保護状態ならば、プライベートリストのヘッドにエンキューし、第1または第2の部分のいずれもが保護状態でないならば、プライベートリストのテールにエンキューし、プライベートリストを、現在のフリーリストのヘッドに追加し、フリーリストの新しいヘッドに向けるために、回復レジスタをアップデートするステップを含む請求項35記載の方法。
JP2004544839A 2002-10-17 2003-10-09 利用者データの永続的な格納を提供するための方法およびシステム Expired - Fee Related JP4336313B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/274,066 US6938184B2 (en) 2002-10-17 2002-10-17 Method and system for providing persistent storage of user data
PCT/US2003/032112 WO2004036353A2 (en) 2002-10-17 2003-10-09 Method and system for providing persistent storage of user data

Publications (3)

Publication Number Publication Date
JP2006503370A true JP2006503370A (ja) 2006-01-26
JP2006503370A5 JP2006503370A5 (ja) 2009-07-16
JP4336313B2 JP4336313B2 (ja) 2009-09-30

Family

ID=32092953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004544839A Expired - Fee Related JP4336313B2 (ja) 2002-10-17 2003-10-09 利用者データの永続的な格納を提供するための方法およびシステム

Country Status (7)

Country Link
US (2) US6938184B2 (ja)
EP (1) EP1552393B1 (ja)
JP (1) JP4336313B2 (ja)
AT (1) ATE379809T1 (ja)
AU (1) AU2003282561A1 (ja)
DE (1) DE60317815T2 (ja)
WO (1) WO2004036353A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006114008A (ja) * 2004-10-18 2006-04-27 Seagate Technology Llc システム構成を更新するための回復記録を構成するための方法および装置

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660945B1 (en) * 2004-03-09 2010-02-09 Seagate Technology, Llc Methods and structure for limiting storage device write caching
DE602004003583T2 (de) * 2004-10-04 2007-11-22 Research In Motion Ltd., Waterloo System und Verfahren zum Datensichern bei Stromausfall
US8321486B2 (en) * 2005-11-09 2012-11-27 Ca, Inc. Method and system for configuring a supplemental directory
US8326899B2 (en) 2005-11-09 2012-12-04 Ca, Inc. Method and system for improving write performance in a supplemental directory
US8458176B2 (en) 2005-11-09 2013-06-04 Ca, Inc. Method and system for providing a directory overlay
US20070112812A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H System and method for writing data to a directory
US20070112791A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H Method and system for providing enhanced read performance for a supplemental directory
US20070143242A1 (en) * 2005-12-15 2007-06-21 Microsoft Corporation Disk-based cache
US8572495B2 (en) 2005-12-15 2013-10-29 Microsoft Corporation Providing electronic distribution of filtered calendars
US7685171B1 (en) * 2006-09-22 2010-03-23 Emc Corporation Techniques for performing a restoration operation using device scanning
US7710075B1 (en) 2007-01-31 2010-05-04 Network Appliance, Inc. Apparatus and implementation of a battery in a non volatile memory subsystem
US8639656B2 (en) 2007-02-02 2014-01-28 International Business Machines Corporation Method for implementing persistent file pre-allocation
US7877626B2 (en) * 2007-12-31 2011-01-25 Datadirect Networks, Inc. Method and system for disk storage devices rebuild in a data storage system
US8301742B2 (en) * 2008-04-07 2012-10-30 International Business Machines Corporation Systems and methods for coordinated management of power usage and runtime performance in performance-managed computing environments
US9678879B2 (en) * 2008-05-29 2017-06-13 Red Hat, Inc. Set partitioning for encoding file system allocation metadata
WO2010049929A1 (en) * 2008-10-27 2010-05-06 Kaminario Tehnologies Ltd. A mass-storage system utilizing solid-state storage and non-solid-state storage
US8065556B2 (en) * 2009-02-13 2011-11-22 International Business Machines Corporation Apparatus and method to manage redundant non-volatile storage backup in a multi-cluster data storage system
US9311018B2 (en) * 2010-05-11 2016-04-12 Taejin Info Tech Co., Ltd. Hybrid storage system for a multi-level RAID architecture
US8812908B2 (en) 2010-09-22 2014-08-19 Microsoft Corporation Fast, non-write-cycle-limited persistent memory for secure containers
CN102455902B (zh) 2010-10-29 2015-09-16 国际商业机器公司 用于对象持久化的方法以及计算机系统
US9229816B2 (en) * 2011-03-14 2016-01-05 Taejin Info Tech Co., Ltd. Hybrid system architecture for random access memory
JP5751488B2 (ja) * 2011-07-26 2015-07-22 横河電機株式会社 ファイル管理装置
US10698826B1 (en) 2012-01-06 2020-06-30 Seagate Technology Llc Smart file location
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9632932B1 (en) * 2013-06-21 2017-04-25 Marvell International Ltd. Backup-power-free cache memory system
US9665493B2 (en) * 2014-10-03 2017-05-30 International Business Machines Corporation Increased cache performance with multi-level queues of complete tracks
US10318340B2 (en) * 2014-12-31 2019-06-11 Ati Technologies Ulc NVRAM-aware data processing system
US10318649B2 (en) * 2017-04-18 2019-06-11 International Business Machines Corporation Implementing a secondary storage dentry cache
KR102277728B1 (ko) * 2017-07-31 2021-07-14 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 시스템의 데이터 저장 방법, 및 솔리드 스테이트 드라이브의 제조 방법
US11048590B1 (en) 2018-03-15 2021-06-29 Pure Storage, Inc. Data consistency during recovery in a cloud-based storage system
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0833864B2 (ja) * 1990-01-30 1996-03-29 富士通株式会社 データ保全方式
US5218695A (en) * 1990-02-05 1993-06-08 Epoch Systems, Inc. File server system having high-speed write execution
US5335352A (en) * 1990-09-24 1994-08-02 Emc Corporation Reconfigurable, multi-function data storage system controller selectively operable as an input channel adapter and a data storage unit adapter
MX9200970A (es) * 1991-03-05 1993-08-01 Zitel Corp Memoria de deposito.
US5359569A (en) * 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
US5761406A (en) * 1992-07-31 1998-06-02 Fujitsu Limited Method of controlling data transfer and a safe shutdown in a hierarchical cache system during power cut-off
US5295577A (en) * 1993-03-26 1994-03-22 Minter Theodore M Storage system for compact discs
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5613155A (en) * 1995-06-07 1997-03-18 International Business Machines Corporation Bundling client write requests in a server
US6339787B1 (en) * 1995-11-30 2002-01-15 Stampede Technologies, Inc. Apparatus and method for increasing speed in a network file/object oriented server/client system
JP3477689B2 (ja) * 1995-12-07 2003-12-10 株式会社日立製作所 磁気ディスク制御装置
US5893140A (en) * 1996-08-14 1999-04-06 Emc Corporation File server having a file system cache and protocol for truly safe asynchronous writes
US6295577B1 (en) * 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
JP3745552B2 (ja) * 1999-02-26 2006-02-15 富士通株式会社 情報記憶装置
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6606694B2 (en) 2000-12-22 2003-08-12 Bull Hn Information Systems Inc. Write logging in mirrored disk subsystems
US20020156983A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method and apparatus for improving reliability of write back cache information
US20040139167A1 (en) 2002-12-06 2004-07-15 Andiamo Systems Inc., A Delaware Corporation Apparatus and method for a scalable network attach storage system
US6898685B2 (en) * 2003-03-25 2005-05-24 Emc Corporation Ordering data writes from a local storage device to a remote storage device
US8214588B2 (en) * 2003-11-05 2012-07-03 International Business Machines Corporation Parallel asynchronous order-preserving transaction processing
US8250406B2 (en) * 2003-08-19 2012-08-21 Intel Corporation Operational state preservation in the absence of AC power
US7249229B2 (en) * 2004-03-31 2007-07-24 Gemini Mobile Technologies, Inc. Synchronous message queues
US7334158B2 (en) * 2004-06-29 2008-02-19 Intel Corporation Power fault handling method, apparatus, and system
US8032787B2 (en) * 2004-09-02 2011-10-04 Intel Corporation Volatile storage based power loss recovery mechanism
JP4699091B2 (ja) * 2005-05-31 2011-06-08 株式会社日立製作所 ディザスタリカバリ方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006114008A (ja) * 2004-10-18 2006-04-27 Seagate Technology Llc システム構成を更新するための回復記録を構成するための方法および装置

Also Published As

Publication number Publication date
EP1552393A2 (en) 2005-07-13
AU2003282561A1 (en) 2004-05-04
WO2004036353A2 (en) 2004-04-29
WO2004036353A3 (en) 2004-07-08
US20040078623A1 (en) 2004-04-22
US7380158B2 (en) 2008-05-27
AU2003282561A8 (en) 2004-05-04
DE60317815T2 (de) 2008-07-17
ATE379809T1 (de) 2007-12-15
EP1552393A4 (en) 2006-11-22
US6938184B2 (en) 2005-08-30
DE60317815D1 (de) 2008-01-10
EP1552393B1 (en) 2007-11-28
JP4336313B2 (ja) 2009-09-30
US20060031422A1 (en) 2006-02-09

Similar Documents

Publication Publication Date Title
JP4336313B2 (ja) 利用者データの永続的な格納を提供するための方法およびシステム
JP2006503370A5 (ja)
EP1179770B1 (en) File system
US6675264B2 (en) Method and apparatus for improving write performance in a cluster-based file system
US8793531B2 (en) Recovery and replication of a flash memory-based object store
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
US8868487B2 (en) Event processing in a flash memory-based object store
US7124128B2 (en) Method, system, and program for managing requests to tracks subject to a relationship
US20020073082A1 (en) System modification processing technique implemented on an information storage and retrieval system
US6549920B1 (en) Data base duplication method of using remote copy and database duplication storage subsystem thereof
US20050289152A1 (en) Method and apparatus for implementing a file system
US5600816A (en) System and method for managing data in a cache system for a disk array
US20030200394A1 (en) Cache memory arrangement and methods for use in a cache memory system
US20060069890A1 (en) Triangular asynchronous replication with minimal synchronous storage
JPWO2004025475A1 (ja) データベースの再編成システム、並びに、データベース
US8200627B2 (en) Journaling database changes using a bit map for zones defined in each page
EP0536375A1 (en) Fault tolerant network file system
JP2002132582A (ja) 圧縮メモリ・システムの再利用スペース予約
US7159139B2 (en) Digital data storage subsystem including directory for efficiently providing formatting information for stopped records and utilization of a check value for verifying that a record is from a particular storage location
US7558929B2 (en) Instant copy of data in a cache memory via an atomic command
US7552297B2 (en) Instant copy of data in a cache memory via an atomic command
WO2022107920A1 (ko) 데이터 일관성을 위한 버퍼 캐시 및 방법
JPH10320274A (ja) キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
WO2023147067A1 (en) Promotion of snapshot storage volumes to base volumes

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080512

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080609

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080612

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080619

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080609

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080711

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090408

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090408

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090616

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090626

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees