JP2004157958A - 計算機システムおよびファイル管理方法 - Google Patents

計算機システムおよびファイル管理方法 Download PDF

Info

Publication number
JP2004157958A
JP2004157958A JP2002377173A JP2002377173A JP2004157958A JP 2004157958 A JP2004157958 A JP 2004157958A JP 2002377173 A JP2002377173 A JP 2002377173A JP 2002377173 A JP2002377173 A JP 2002377173A JP 2004157958 A JP2004157958 A JP 2004157958A
Authority
JP
Japan
Prior art keywords
block
update
directory
file
image
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
JP2002377173A
Other languages
English (en)
Other versions
JP3896077B2 (ja
Inventor
Osamu Wakamori
修 若森
Satoshi Hoshina
聡 保科
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2002377173A priority Critical patent/JP3896077B2/ja
Publication of JP2004157958A publication Critical patent/JP2004157958A/ja
Application granted granted Critical
Publication of JP3896077B2 publication Critical patent/JP3896077B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】通常動作中におけるオーバーヘッドの低減を図ると共に、指定された任意の時点のスナップショットを効率よく作成する。
【解決手段】ブロックを更新する際に、更新対象のブロックの更新前データが、当該ブロックを含むファイルまたはディレクトリを識別するための識別子(iノード番号)および当該ブロックのブロック番号と共にログ記憶領域113に更新前イメージとして書き出され、そしてその後にファイルシステム上の更新対象のブロックが更新される。スナップショットは、ログ記憶領域113に蓄積されている更新前イメージとファイルシステムの現在のイメージとに基づいて、更新されたブロックを含むファイル/ディレクトリの更新前の内容と、その更新前のファイル/ディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することによって生成される。
【選択図】 図3

Description

【0001】
【発明の属する技術分野】
本発明は計算機システムおよび同計算機システムで用いられるファイル管理方法に関し、特に過去のある所定の時点におけるファイルシステムのイメージを示すスナップショットを生成可能な計算機システムおよびファイル管理方法に関する。
【0002】
【従来の技術】
一般に、サーバコンピュータなどとして利用される計算機システムにおいては、その計算機システムに障害が発生した場合でも、ファイルシステムの一貫性を保持することが必要とされる。また、ファイルシステムの容量が大きい場合でも、障害からの復旧に時間がかからないことも要求される。
【0003】
近年、これらの要求を満たすファイルシステムが幾つか提案されている。例えば、従来では、コピーオンライト(COW)技術とロギング技術を用いることにより、システム障害時におけるファイルシステムの一貫性の保持と高速なリカバリを実現するファイルシステムが知られている(例えば、非特許文献1参照。)。
【0004】
また、コピーオンライト(COW)技術とロギング技術に加え、iノードをファイルとしてディスク上の任意の位置に記録することによって、前述の特徴の他に、指定した時点でのファイルシステムのイメージを記録する技術も知られている(例えば、特許文献1参照。)。
【0005】
これら従来の方法で使用されているコピーオンライト技術では、iノードなどのメタデータブロックやデータブロックを変更する時点でメタデータブロックやデータブロックを新規に作成し、作成したブロックに以前のブロックの内容をコピーし、コピーしたブロックの内容を変更するという方式を採用している。
【0006】
【非特許文献1】
“The Episode File System” Sailesh Chutani, Owen T. Anderson, Michael L. Kazar, Bruce W. Leverett, W. Anthony Mason, Robert N. Sidebotham Proceedings of the Winter USENIX 1992 Technical Conference, Jan 1992, p.43−59
【0007】
【特許文献1】
特表平8−511367号公報
【0008】
【発明が解決しようとする課題】
しかし、この方式では、元のブロックの内容は変更されずにそのまま保持されるため、過去の時点のスナップショットを容易に保存することができる反面、ファイルシステムの通常動作中に新たなブロックの生成やデータのコピーといった煩雑な処理を行うことが必要となる。
【0009】
また実際には、更新対象のブロックのみならず、そのブロックを含むファイルまたはディレクトリの階層構造上の上位ディレクトリのブロックをも含めてコピーすることが必要となり、ファイル書き込み時のオーバーヘッドは非常に大きなものとなる。
【0010】
さらに、ディスク上には、現在のファイルシステムのディレクトリ/ファイルに関する情報のみならず、ファイルシステムの更新処理の進行に伴って何世代にも渡るファイルシステムそれぞれに対応したディレクトリ/ファイルに関する情報が存在することとなる。よって、スナップショットを保存するためにファイルシステム上の多くのブロックを消費するという問題がある。
【0011】
本発明は上述の事情を考慮してなされたものであり、通常動作中におけるオーバーヘッドの低減を図ることができ、且つ何世代にも渡るファイルシステムそれぞれに対応したディレクトリ/ファイルに関する情報をファイルシステム内に構築することなく、指定された任意の時点のスナップショットを作成することが可能な計算機システムおよびファイル管理方法を提供することを目的とする。
【0012】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、2次記憶装置上でファイルを階層構造で管理するファイルシステムを有する計算機システムにおいて、前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段と、前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックを含むファイルまたはディレクトリを識別するための識別子および当該ブロックのブロック番号と共に前記ログ記憶手段に更新前イメージとして格納する更新前イメージ格納手段と、前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手段と、前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容と、当該更新前のファイルまたはディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成手段とを具備することを特徴とする。
【0013】
この計算機システムにおいては、ブロックを更新する際に、更新対象のブロックの更新前データが、当該ブロックを含むファイルまたはディレクトリを識別するための識別子および当該ブロックのブロック番号と共にログ記憶手段に書き出され、そしてその後に更新対象のブロックが更新される。このようにして、ファイルシステムのブロック更新の度に、どのファイルまたはディレクトリ内のどのブロックが更新されたかを示す管理情報と更新前の内容とを含む更新前イメージがログ記憶手段に順次書き込まれていく。
【0014】
ファイルシステムのブロックは更新され、ファイルシステムには最新の状態に対応するファイル/ディレクトリのブロックだけが存在することとなる。スナップショットは、ログ記憶手段に蓄積されている更新前イメージとファイルシステムの現在のイメージとに基づいて生成される。更新されたブロックの更新前の内容とそのブロックがどのファイルまたはディレクトリ内のどのブロックであるかが各更新前イメージから判り、またファイルシステムの現在のイメージから当該ファイルまたはディレクトリを構成する現在のブロックの内容および当該ファイルまたはディレクトリと上位ディレクトリとの関係が判る。よって、ログ記憶手段に蓄積されている更新前イメージとファイルシステムの現在のイメージとに基づいて、更新されたブロックを含むファイルまたはディレクトリの更新前の内容と、当該更新前のファイルまたはディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することにより、過去の所定の時点におけるファイルシステムのイメージを示すスナップショットを生成することが可能となる。
【0015】
したがって、何世代にも渡るファイルシステムそれぞれに対応したディレクトリ/ファイルに関する情報をファイルシステム内に構築することなく、必要なときにのみ、指定された任意の時点のスナップショットを作成することが可能となる。
【0016】
また、本発明は、2次記憶装置上でファイルを階層構造で管理するファイルシステムを有する計算機システムにおいて、前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段と、前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックのブロック番号と共に前記ログ記憶手段に更新前イメージとして格納する更新前イメージ格納手段と、前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手段と、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成する際、読み出し要求されたブロック毎に、その読み出し要求で指定されるブロック番号に対応するブロックの更新前イメージが前記ログ記憶手段に蓄積されているか否かに応じて当該ブロックに関する更新前イメージまたは前記ファイルシステムにおける現在のイメージを選択的に読み出すことにより、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元するスナップショット生成手段とを具備することを特徴とする。
【0017】
この構成においても、読み出し要求されたブロックに関する更新前イメージまたはファイルシステムにおける現在のイメージを選択的に読み出すことにより、更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元することができる。
【0018】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図1には、本発明の第1実施形態に係る計算機システムの構成が示されている。この計算機システムは、例えばサーバコンピュータなどのコンピュータシステムとして使用されるものである。以下、このコンピュータシステム11のファイルシステムについて説明する。
【0019】
ファイル管理システム111はディスク記憶装置(DISK)などの2次記憶装置112上でファイルシステムを管理するためのものであり、コンピュータプログラムによって実現されている。ここで、ファイルシステムとは、2次記憶装置112上でファイルを階層構造で管理するためのデータ構造を意味する。2次記憶装置112上の記憶領域は物理的なブロックに分割されている。各ブロックのデータサイズは例えば512バイトである。以下では、UNIX(R)のファイルシステムを例示してその構成を説明することとする。
【0020】
ファイルシステムを管理するために、2次記憶装置112上には、図示のように、ブートブロック、スーパーブロック、iノードリスト領域、およびデータ領域が割り当てられている。ブートブロックは、ブートローダプログラムの格納に使用される領域である。スーパーブロックは、空きブロックのリストなどの情報を格納するために利用される。
【0021】
iノードリスト領域は、ファイルシステム内の個々のファイル/ディレクトリに関する情報を保持するiノードの集合を格納するためのブロック群である。iノードは、それに対応する個々のファイル/ディレクトリを管理するためのデータ構造である。iノードには、それに対応するファイル(ディレクトリもファイルの一種である)に関する管理情報として、1)ファイルの種類(通常ファイル、ディレクトリファイル等)、2)アクセス権、3)ファイルを構成する個々のブロックのブロック番号を示すアドレス情報、等が保持されている。
【0022】
iノードが格納された個々のiノードブロックは、それに対応するiノード番号によって参照される。iノード番号はファイルシステム内の個々のファイル/ディレクトリを一意に識別するためのファイル識別子であり、対応するファイル/ディレクトリのiノードを索引するためのインデックスとして使用される。
【0023】
データ領域は、ファイル/ディレクトリの実体が保持されるブロック群である。ディレクトリを保持するブロックには、当該ディレクトリに対応するiノード番号、およびその上位ディレクトリに対応するiノード番号に加え、当該ディレクトリ内に属する各ファイルまたはディレクトリに対応するiノード番号がディレクトリ情報として含まれている。
【0024】
ファイル管理システム111は、上述のような2次記憶装置112上のデータ構造を用いてファイルを階層構造で管理する。このファイル管理システム111は、過去の任意の時点のファイルシステムのイメージであるスナップショットを必要に応じて作成できるようにするために、更新前情報取得部201、およびスナップショット生成部202を備えている。
【0025】
更新前情報取得部201は、ファイルシステムの更新履歴をログ記憶領域113にシーケンシャルに蓄積する。ログ記憶領域113は不揮発性の記憶装置であり、本コンピュータシステム11がパワーオフされてもその記憶内容は消失されない。ログ記憶領域113は、例えば、2次記憶装置112とは異なる専用の記憶装置、またはファイルシステムとして利用されていない2次記憶装置112上の記憶領域を用いて実現されている。ログ記憶領域113は、管理情報記憶領域と、更新前データイメージ記憶領域とに分割されている。
【0026】
更新前情報取得部201は、2次記憶装置112上のブロックの内容が更新される際に、そのブロックの更新前の内容を、当該ブロックを含むファイルまたはディレクトリを識別するための識別子(iノード番号)および当該ブロックのブロック番号と共に、ログ記憶領域113に書き出す。この場合、iノード番号およびブロック番号は、ブロックの更新種別(変更、削除、追加等)を示すフラグと共に管理情報記憶領域に更新管理情報として格納され、またブロックの更新前の内容は、更新前データイメージ記憶領域に格納される。このようにして、ファイルシステムのブロック更新の度に、どのファイルまたはディレクトリ内のどのブロックが更新されたかを示す更新管理情報と更新前のデータ内容とを含む更新前イメージがログ記憶領域113に順次書き込まれていく。
【0027】
スナップショット生成部202は、ログ記憶領域113に蓄積されている更新前イメージとファイルシステムの現在のイメージとに基づいて、指定された過去の任意の時点のファイルシステムのイメージを示すスナップショットを生成する。この場合、スナップショットを生成すべき時点から現在までの間にログ記憶領域113に蓄積された更新前イメージが利用される。ログ記憶領域113内の最後尾の更新前イメージから順次参照しながら、更新されたファイル/ディレクトリの更新前の内容と、その更新前のファイル/ディレクトリを含む上位ディレクトリのディレクトリ情報とを復元していくことにより、指定された過去の任意の時点のスナップショットのイメージを作成することが出来る。
【0028】
スナップショットのイメージは2次記憶装置112上で復元することも可能であるが、通常、コンピュータシステム11の主記憶上には、iノードリスト領域のコピーであるiノードリスト203と各ディレクトリの情報のコピーであるディレクトリ情報204とが存在しており、それら情報からフィルシステムの現在のイメージを認識することが出来る。よって、主記憶上の情報を用いて、その主記憶上で過去の任意の時点のファイルシステムのイメージをスナップショットとして生成することも可能である。
【0029】
次に、図2および図3を参照して、ファイル管理システム111が更新前情報取得部201を用いて実行する更新前イメージの書き出し処理について説明する。
【0030】
ここでは、図2のようなツリー構造のファイルシステムにおいて、ディレクトリaの配下に存在するファイルbの内容を更新する場合について説明する。
【0031】
図3は、2次記憶装置112上に構築されたファイルシステムのデータ構造を示している。
iノードリスト領域には、ルートディレクトリのiノード、ディレクトリaのiノード、ファイルbのiノード、等が存在し、またデータ領域には、ルートディレクトリ、ディレクトリa、ファイルbそれぞれの実体を記憶したデータブロックが存在する。
【0032】
通常、ファイルは1以上のデータブロックから構成されており、ファイルbの管理情報を保持する管理情報ブロックであるiノードブロックには、ファイルbのデータの実体を構成しているデータブロックそれぞれのブロック番号(ここでは、ブロック番号98、100、110)へのリンクを持つポインタがアドレス情報として含まれている。
【0033】
同様に、ルートディレクトリのiノードブロックにはルートディレクトリのディレクトリ情報を保持するデータブロックを示すブロック番号が含まれており、そのルートディレクトリのデータブロック内にはそのカレントディレクトリであるルートディレクトリのiノードブロックを示すiノード番号(ここでは、3)と、その配下に存在するディレクトリaのiノードブロックを示すiノード番号(ここでは、4)がディレクトリ情報として含まれている。
【0034】
また、ディレクトリaの管理情報を保持するiノードブロックにはディレクトリaのデータブロックを示すブロック番号が含まれており、そのディレクトリaのデータブロック内には、その上位ディレクトリであるルートディレクトリのiノードブロックを示すiノード番号(ここでは、3)と、カレントディレクトリであるディレクトリaのiノードブロックを示すiノード番号(ここでは、4)と、ディレクトリa配下のファイルbのiノードブロックを示すiノード番号(ここでは、5)がディレクトリ情報として含まれている。
【0035】
いま、iノード番号5に対応するファイルb内のブロック100を更新する場合を考える。この場合、ブロック100の更新に先立ち、ファイルbのiノード番号5、更新対象のブロック番号100、および更新種別が変更であることを示すフラグ情報(M)からなる更新管理情報と、ブロック100の更新前データとがログ記憶領域113に格納される。
【0036】
図4のフローチャートには、ファイル/ディレクトリの更新時にファイル管理システム111によって実行される一連の処理手順が示されている。
【0037】
ファイル管理システム111は、オペレーティングシステムやアプリケーションプログラムからのファイル操作要求等によってファイル/ディレクトリの内容を更新する必要が生じた場合(ステップS101のYES)、まず、当該更新対象のファイル/ディレクトリのファイル/ディレクトリ名からそれに対応するiノード番号をサーチし、その更新対象のファイル/ディレクトリのiノードブロックを取得する(ステップS102)。
【0038】
次いで、ファイル管理システム111は、取得したiノードブロックに含まれるアドレス情報から更新対象のファイル/ディレクトリの実体を保持する各データブロックを認識する(ステップS103)。iノード番号5に対応するファイルb内のブロック100を更新する場合を考える。この場合、ファイル管理システム111は、更新前情報取得部201を用いて、更新管理情報(iノード番号=5、ブロック番号=100、フラグ情報=M)と、ブロック番号100のブロックの更新前の内容とを、更新前イメージとしてログ記憶領域113に書き込む(ステップS104,S105)。ログ記憶領域113に書き出している途中でブロック100の内容が変更されるのを防ぐため、ログ記憶領域113への書き込みを実行する前にブロック100をロックする。ログ記憶領域113への書き込みが終了すると、ブロック100のロックを解除する。
【0039】
この後、ファイル管理システム111は、ブロック番号100のブロックの内容を例えばbからb’に更新する(ステップS106)。この更新により、ファイルシステムは常に最新の状態に維持される。
【0040】
図5には、ログ記憶領域113に多数の更新前イメージ(更新前情報)が蓄積されている様子が示されている。
【0041】
スナップショットを作成可能な時点をTIME1,TIME2,TIME3,…とする。例えば、24時間ノンストップで稼働するコンピュータシステムにおいて、毎日12:00の時点におけるスナップショットを生成可能にする場合、24時間間隔でTIME1,TIME2,TIME3が設定される。本日の12:00の時点におけるスナップショットを生成する場合には、TIME3以降からカレントタイムまでに蓄積された更新前イメージ(更新前情報)が最後尾から順に用いられる。また、昨日の12:00の時点におけるスナップショットを生成する場合にはTIME2以降からカレントタイムまでに蓄積された更新前イメージ(更新前情報)が最後尾から順に用いられ、一昨日の12:00の時点におけるスナップショットを生成する場合にはTIME1以降からカレントタイムまでに蓄積された更新前イメージ(更新前情報)が最後尾から順に用いられることとなる。
【0042】
次に、図6を参照して、ファイルシステムの現在のイメージとログ記憶領域113の更新前イメージとを利用してスナップショットを作成する処理について説明する。
【0043】
ログ記憶領域113に蓄積されている更新前イメージの更新管理情報から、iノード番号5に対応するファイルbのブロック100が更新されたことが判る。
【0044】
(1)変更前のファイルb用のデータブロックの作成
ここでは、更新されたブロック100に代わる新たなブロックを作成するために、データ領域上に空きブロック(ここでは、ブロック番号170)を確保し、ログ記憶領域113に記憶されているブロック100の更新前データbをブロック番号170にコピーする。
【0045】
(2)変更前のファイルb用のiノードブロックの作成
次いで、変更前のファイルbに対応する新たなiノードブロックを生成するために、iノードリスト領域上に空きブロックを確保する。そして、更新されたファイルbを管理するための管理情報を保持するファイルbの現在のiノードブロックの内容をカレントファイルシステムから取得する。取得したファイルbのiノードブロックに含まれる管理情報の内、更新されたブロック100へのリンクを示すアドレス情報は修正され、ブロック番号170へのリンクを示すように書き換えられる。修正された管理情報は、iノードリスト領域上に確保された空きブロックに書き込まれ、これによってブロック番号98、170、110から構成される変更前のファイルbを管理するためのiノードブロック、つまり現在のファイルbのiノードブロックに代わる、1世代前のファイルb(−)に対応するiノードブロック、が生成される。1世代前のファイルb(−)には新たなiノード番号(ここでは、30)が割り当てられる。
【0046】
(3)(4)変更前のファイルbを含む上位ディレクトリのディレクトリ情報の復元
次に、変更前のファイルbを含む上位ディレクトリaのディレクトリ情報の復元が行われる。まず、上位ディレクトリaのディレクトリ情報を保持する現在のディレクトリaのデータブロックに代わる新たなデータブロックを作成するために、データ領域上に空きブロックを確保する。そして、ディレクトリaの現在のデータブロックの内容をカレントファイルシステムから取得する。取得したディレクトリaのディレクトリ情報の内、その配下に存在する現在のファイルbのiノードブロックへのリンクを示すアドレス情報については修正され、変更前のファイルb(−)のiノードブロックへのリンクを示すように書き換えられる。すなわち、現在のファイルbのiノードブロックを示すiノード番号5から、1世代前のb(−)のiノードブロックを示すiノード番号30に変更される。
【0047】
修正されたディレクトリ情報は、データ領域上の空きブロックに書き込まれ、これによって変更前のファイルb(−)を含む上位ディレクトリa(−)のデータブロックが生成される。
【0048】
また、iノードリスト領域上の空きブロックを用いて、上位ディレクトリa(−)のiノードブロックも生成される。この場合、ディレクトリaの現在のiノードブロックの管理情報をカレントファイルシステムから取得する。取得したディレクトリaの管理情報の内、現在のディレクトリaのブロックへのリンクを示すアドレス情報については修正され、ディレクトリa(−)のデータブロックへのリンクを示すように書き換えられる。修正された管理情報は、iノードリスト領域上に確保された空きブロックに書き込まれ、これによって1世代前のディレクトリa(−)のiノードブロックが生成される。この1世代前のディレクトリa(−)には、新たなiノード番号(ここでは、29)が割り当てられる。
【0049】
ディレクトリa(−)のデータブロックに保持されているカレントディレクトリのiノード番号は、現在のディレクトリaのiノード番号4から、ディレクトリa(−)のiノード番号29に変更される。
【0050】
(5)(6)次に、最上位のディレクトリである現在のルートディレクトリに代わる新たなルートディレクトリのデータブロックを作成するために、データ領域上に空きブロックを確保する。そして、ルートディレクトリの現在のデータブロックの内容をカレントファイルシステムから取得する。取得したルートディレクトリのディレクトリ情報の内、その配下に存在する現在のディレクトリaのiノードブロックへのリンクを示すアドレス情報については修正され、1世代前のディレクトリa(−)のiノードブロックへのリンクを示すように書き換えられる。すなわち、現在のディレクトリaのiノードブロックを示すiノード番号4から、1世代前のa(−)のiノードブロックを示すiノード番号29に変更される。修正されたディレクトリ情報は、データ領域上の空きブロックに書き込まれ、これによって1世代前のルートディレクトリ(−)のブロックが生成される。
【0051】
また、iノードリスト領域上の空きブロックを用いて、1世代前のルートディレクトリ(−)のiノードブロックも生成される。この場合、現在のルートディレクトリのiノードブロックの管理情報をカレントファイルシステムから取得する。取得したルートディレクトリの管理情報の内、現在のルートディレクトリのブロックへのリンクを示すアドレス情報については修正され、1世代前のルートディレクトリ(−)のブロックへのリンクを示すように書き換えられる。修正された管理情報は、iノード領域上の空きブロックに書き込まれ、これによって1世代前のルートディレクトリ(−)のiノードブロックが生成される。この1世代前のルートディレクトリ(−)には、新たなiノード番号(ここでは、28)が割り当てられる。ルートディレクトリ(−)のデータブロックに保持されているカレントディレクトリのiノード番号は、現在のルートディレクトリのiノード番号3から、ルートディレクトリ(−)のiノード番号29に変更される。
【0052】
このようにして、空きブロックを用いて変更前のファイルに対応するブロックとその上位ディレクトリに関するブロックとを作成することによって、更新されたファイルの更新前の内容と、当該変更前のファイルを含む上位ディレクトリのディレクトリ情報とを復元することにより、現在のファイルシステムのイメージをそのまま維持した状態で、過去の任意の時点のファイルシステムのイメージを示すスナップショットを生成することが可能となる。
【0053】
図7のフローチャートには、スナップショット生成時にスナップショット生成部202によって実行される一連の処理手順が示されている。
【0054】
スナップショット生成部202は、ログ記憶領域113の最後尾から更新前イメージを順に取得し(ステップS111)、そして指定された時点のスナップショットに関する全ての更新前イメージに対する処理が完了するまで、各更新前イメージ毎に以下の処理を再帰的に実行する(ステップS112)。
【0055】
まず、スナップショット生成部202は、最後尾の更新前イメージの内容から、どのファイル/ディレクトリにおけるどのブロックが更新されたのかを認識し、その更新されたファイル/ディレクトリに対応する変更前のファイル/ディレクトリを復元するためのデータブロック(変更前ファイル/ディレクトリ用データブロック)をデータ領域上に新規作成する(ステップS113)。
【0056】
例えば、上述の例では、iノード番号5に関連するファイルbのブロック100の内容が更新されたことがわかるので、更新されたブロック100に代わる変更前ファイル/ディレクトリ用データブロックを空きブロックを利用して新規に作成し、ログ記憶領域113に記録されているブロック100の更新前データの内容をこの新規作成した変更前ファイル/ディレクトリ用データブロックにコピーする。
【0057】
次に、スナップショット生成部202は、更新されたファイル/ディレクトリに対応する変更前のファイル/ディレクトリを復元するためのiノードブロック(変更前ファイル/ディレクトリ用iノードブロック)をiノードリスト領域上に新規作成する(ステップS114)。
【0058】
すなわち、スナップショット生成部202は、ファイルbの現在のiノードブロックの内容とステップS113で新規作成したデータブロックのブロック番号170とを使用して、変更されたファイルbのiノードの管理情報を修正し、それをiノードリスト領域上に新規作成した変更前ファイル/ディレクトリ用iノードブロックにコピーする。
【0059】
以上のステップS113,S114の処理は、上述の(1)(2)の処理に相当しており、これによって変更前のファイル/ディレクトリの内容が復元される。
【0060】
この後、スナップショット生成部202は、変更前ファイル/ディレクトリを含む上位ディレクトリa(−)用のデータブロックをデータ領域上に新規作成する(ステップS115)。ここでは、スナップショット生成部202は、更新されたファイルbの上位ディレクトリaの現在のデータブロックの内容とステップS114で作成した変更前ファイル/ディレクトリ用iノードブロックのiノード番号とに基づいて、上位ディレクトリaの現在のデータブロックの内容を修正し、それを新規作成したディレクトリa(−)用のデータブロックにコピーする。
【0061】
そして、スナップショット生成部202は、変更前ファイル/ディレクトリを含む上位ディレクトリa(−)用のiノードブロックをiノードリスト領域上に新規作成する(ステップS116)。ここでは、スナップショット生成部202は、更新されたファイルbの上位ディレクトリaの現在のiノードブロックの内容とステップS115で作成した上位ディレクトリa(−)用のデータブロックのブロック番号とに基づいて、上位ディレクトリaの現在のiノードブロックの内容を修正し、それを新規作成したディレクトリa(−)用のiノードブロックにコピーする。
【0062】
以上のステップS115,S116の処理は、上述の(3)(4)の処理に相当しており、これによって変更前のファイル/ディレクトリを含む上位ディレクトリの内容が復元される。そして、ルートディレクトリに遡るまで、ステップS115,S116の処理が各上位ディレクトリ毎に実行される(ステップS117)。これにより、更新前のファイル/ディレクトリからルートディレクトリに至るまでの各ディレクトリの情報を含むブロック(データブロック、iノードブロック)が新規作成され、変更前のファイルまたはディレクトリをルートディレクトリから参照するためのリンク情報が復元される。
【0063】
次に、図8を参照して、スナップショットを作成すべき時点とログ記憶領域113に記録すべき更新前イメージとの関係について説明する。
【0064】
スナップショットを作成すべき時点は1つのファイル更新タイミング毎に設定してもよいが、通常は、ある一定の時間間隔毎に設定される。この場合、同一のファイル/ディレクトリ内の同一ブロックの更新に際してはその更新前イメージをログ記憶領域113に逐次採取する必要はなく、スナップショットを作成すべき各時点を基準に、それ以降に最初に更新が行われる際にのみ当該更新に関する更新前イメージをログ記憶領域113に採取すればよい。
【0065】
図8においては、ファイルbのブロック100の更新を○、ファイルbのブロック98の更新を△、ファイルXのブロックNの更新を□で示している。スナップショットを作成すべき時点TIME1と次の時点TIME2との間のファイル更新において、ファイルbのブロック100の更新が何度か繰り返された場合を想定する。復元すべきファイルイメージはTIME1であるので、ログ記憶領域113に更新前イメージを採取するのは、TIME1以降における最初の更新時のみでよい。TIME1の時点におけるファイルbのブロック100の内容をログ記憶領域113に採取することにより、ファイルbのブロック100の内容をTIME1の時点に復元することが出来るからである。他のファイル/ブロックについても同様である。
【0066】
更新前イメージを採取すべきかどうかは、例えば、スナップショットを作成すべき前回の時点以降において、更新対象ブロックに対応する更新前イメージをログ記憶領域113に採取したかどうかを示す識別情報を該当するファイル/ディレクトリのiノード構造体の中に保持したり、更新前イメージをログ記憶領域113に採取したブロックの一覧をテーブルに登録することによって、判断することが出来る。ファイル/ディレクトリの更新時における一連の処理手順を図9に示す。以下では、iノード構造体の中に識別情報を保持する場合を想定する。
【0067】
ファイル管理システム111は、オペレーティングシステムやアプリケーションプログラムからのファイル操作要求等によってファイル/ディレクトリの内容を更新する必要が生じた場合(ステップS121のYES)、まず、当該更新対象のファイル/ディレクトリのファイル/ディレクトリ名からそれに対応するiノード番号をサーチし、その更新対象のファイル/ディレクトリのiノードブロックを取得する(ステップS122)。
【0068】
次いで、ファイル管理システム111は、取得したiノードブロックに含まれるアドレス情報から更新対象のファイル/ディレクトリの実体を保持する各データブロックを認識する(ステップS123)。iノード番号5に対応するファイルb内のブロック100を更新する場合を考える。この場合、ファイル管理システム111は、iノードブロックに含まれるiノード構造体内に保持されている上述の識別情報から、スナップショットを作成すべき直前の時点以降において既に当該更新対象ブロックに関する更新前イメージがログ記憶領域113に記録済みであるかどうかを判断する(ステップS124)。
【0069】
もし既に記録済みであるならば(ステップS124のYES)、当該ブロックの更新は2回目以降の更新であるので、更新前イメージの採取は行わず、当該ブロックの更新処理を実行する(ステップS128)。
【0070】
一方、記録されていない場合には(ステップS124のNO)、当該ブロックの更新は最初の更新であるので、以下の処理を実行する。
【0071】
すなわち、ファイル管理システム111は、更新前情報取得部201を用いて、更新管理情報(iノード番号=5、ブロック番号=100、フラグ情報=M)と、ブロック番号100のブロックの更新前の内容とを、更新前イメージとしてログ記憶領域113に書き込む(ステップS125,S126)。次いで、ファイル管理システム111は、ブロック番号100に関する更新前イメージが採取済みであることを示す識別情報をファイルbのiノード構造体に記録する(ステップS127)。
【0072】
ログ記憶領域113に書き出している途中でブロック100の内容が変更されるのを防ぐため、ログ記憶領域113への書き込みを実行する前にブロック100をロックする。ログ記憶領域113への書き込みおよび識別情報の記録が終了すると、ブロック100のロックを解除する。この後、ファイル管理システム111は、ブロック番号100のブロックの内容を例えばbからb’に更新する(ステップS128)。
【0073】
なお、iノード構造体への識別情報の記録は、例えば、メモリ上に存在するiノードリスト203上で行えば良い。iノードリスト203上の識別情報の内容は、次のスナップショットを作成すべき時点が到来した時にクリアされる。
【0074】
次に、図10乃至図12を参照して、ファイルを削除するファイル更新処理を行った際におけるスナップショットの復元動作について説明する。
【0075】
ここでは、図10のようなツリー構造のファイルシステムにおいて、ディレクトリaの配下に存在するファイルb全体を削除する場合について説明する。
【0076】
図11は、2次記憶装置112上に構築されたファイルシステムのデータ構造を示している。ここでは、簡単のために、ファイルbの実体が一つのデータブロックから構成されている場合を例示する。
【0077】
iノード番号5に対応するファイルb全体を削除するファイル更新処理では、ファイルbのデータブロック(ブロック番号100)が削除されると共に、ファイルbのiノードブロック(ここでは、ブロック番号7とする)も削除される。これに伴い、ディレクトリaのデータブロック(ここでは、ブロック番号90とする)に保持されているディレクトリ情報もaからa’に更新され、ファイルbのiノードブロックへのリンク情報が削除される。このような一連のファイル更新処理操作の実行に先立ち、ログ記憶領域113への更新前イメージの登録処理が以下のように行われる。
【0078】
まず、ファイルbのデータブロック(ブロック番号100)の更新に関する更新前イメージとして、ファイルbのiノード番号5、更新対象のブロック番号100、および更新種別が削除であることを示すフラグ情報(D)からなる更新管理情報と、ブロック100の更新前データとがログ記憶領域113に格納される。次に、ファイルbのiノードブロック(ブロック番号7)の更新に関する更新前イメージとして、ファイルbのiノード番号5、更新対象のブロック番号7、および更新種別が削除であることを示すフラグ情報(D)からなる更新管理情報と、ブロック7の更新前データとがログ記憶領域113に格納される。さらに、ディレクトリaの更新に関する更新前イメージとして、ディレクトリaのiノード番号4、更新対象のブロック番号90、および更新種別が変更であることを示すフラグ情報(M)からなる更新管理情報と、ブロック90の更新前データとがログ記憶領域113に格納される。これら3つの更新前イメージは、ファイルbの削除に関する1組の更新前イメージを構成する。
【0079】
図12には、ファイルシステムの現在のイメージとログ記憶領域113の更新前イメージとを利用してスナップショットが作成される様子が示されている。
【0080】
ログ記憶領域113に蓄積されている3つの更新前イメージそれぞれ更新管理情報から、iノード番号5に対応するファイルbが削除され、そのファイル削除に伴ってディレクトリaの内容が変更されたことが判る。
【0081】
また、ログ記憶領域113には、更新前データとして、ファイルbの変更前のデータ内容、ファイルbの変更前のiノードの内容、およびディレクトリaの変更前のデータ内容が蓄積されているので、それら変更前のデータの内容と、現在のファイルシステムイメージとから、図6と同様の手順で、削除前のファイルbのデータブロック及びiノードブロックと、削除前のファイルbを含むディレクトリaのデータブロックおよびiノードブロックと、そのディレクトリaを含むルートディレクトリのデータブロックおよびiノードブロックを空き領域に新規作成することにより、ファイルbの削除前のスナップショットを復元することが出来る。
【0082】
以上のように、本第1実施形態によれば、ファイル/ディレクトリの変更前イメージをログ領域にシーケンシャルに書き込むことで、特定の時点でのファイルシステムのスナップショットイメージを復元することが可能になる。しかも、通常動作中のブロック更新時には、そのブロックのツリー構造の上位ディレクトリの内容をコピーする必要がないため、それによるオーバーヘッドを無くすことが出来る。
【0083】
また、第1実施形態では、ファイルシステムのスナップショットイメージを2次記憶装置112上に復元することを前提としたが、読み出し要求されたブロックに関する更新前イメージまたはファイルシステムにおける現在のイメージを選択的に主記憶装置上に読み出すことにより、更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元することもできる。以下、この場合の例を本発明の第2実施形態として説明する。以下では、第1実施形態と異なる部分を主として説明することとする。
【0084】
本第2実施形態においては、図13に示されているように、読み出し要求されたブロックに関する更新前イメージをログ記憶領域113から高速に読み出せるようにするために、スナップショット用バッファ301と、このスナップショット用バッファ301を管理するためのスナップショット用バッファ管理テーブル302を使用する。
【0085】
スナップショット用バッファ301は主記憶上に割り当てられたバッファエリアであり、ここにはログ記憶領域113に蓄積された更新前イメージが読み出される。
【0086】
ここで、スナップショットイメージ生成部202によって実行されるスナップショットイメージ生成処理の原理について説明する。
【0087】
本第2実施形態においては、過去の任意の時点のスナップショットイメージを生成する際には、そのスナップショットイメージの作成に必要な更新前イメージがログ記憶領域113から読み出されて、スナップショット用バッファ301に格納される。そして、ブロックの読み出し要求を受けるたびに、その読み出し要求で指定されたブロック番号のブロックに対応する更新前イメージが存在するか否かを判別することによって、カレントファイルシステムまたはスナップショット用バッファ301から該当するブロックが選択的に読み出される。
【0088】
例えば、上述したようにファイルbがブロック番号98,100,110の3つのデータブロックから構成されており、ブロック番号100のブロックが更新されている場合を想定する。
【0089】
ファイルbの更新前イメージを復元することが利用者によって指定された場合、カレントファイルシステムで管理されているファイルbのiノードの内容に基づいて、ブロック番号98,100,110に対する読み出し要求が順次発行される。ブロック番号98のブロックは更新されていないので、そのブロック番号98に対応するブロックのデータが2次記憶装置112上のカレントファイルシステムから主記憶上に読み出される。ブロック番号100のブロックは更新されているので、そのブロック番号100のブロックの更新前データがスナップショット用バッファ301から主記憶上に読み出される。そして、ブロック番号110のブロックは更新されていないので、そのブロック番号110に対応するブロックのデータは2次記憶装置112上のカレントファイルシステムから主記憶上に読み出される。このようにして、ファイルbの更新前の内容が復元される。
【0090】
次に、図15を参照して、スナップショット用バッファ管理テーブル302の具体的な構成例について説明する。
【0091】
スナップショット用バッファ管理テーブル302には、ログ記憶領域113からスナップショット用バッファ301に読み出す各更新前イメージ毎に、iノード番号、ブロック番号、バッファのサイズ、更新前データの含まれるログ記憶領域113のオフセット、更新前データの含まれるバッファのアドレス、等を管理するためのエントリが存在する。
【0092】
バッファのサイズは更新前データのデータサイズに相当するものであり、図16に示すように、スナップショット用バッファ301上に確保される当該更新前データを保持するためのバッファエリアのサイズを示す。更新前データの含まれるバッファのアドレスは、図16に示すように、スナップショット用バッファ301上に確保される当該更新前データを保持するためのバッファエリアのアドレスを示す。また、ログ記憶領域113のオフセットは、当該更新前データが記憶されているログ記憶領域113の先頭アドレスからのオフセット値を示す。
【0093】
以下、これらスナップショット用バッファ301およびスナップショット用バッファ管理テーブル302を用いて実行される具体的な処理手順について説明する。
【0094】
更新前情報取得部201によって実行されるログ記憶領域113への更新前イメージの書き出し処理については、第1実施形態と同様に、上述の図4のフローチャートに示す手順によって実行される。
【0095】
スナップショットイメージを生成する際には、まず、スナップショット用バッファ管理テーブル302を作成する処理が実行される。図17のフローチャートにはその手順が示されている。
【0096】
すなわち、スナップショット生成部202は、ログ記憶領域113の最後尾から更新前イメージを順に取得し(ステップS201)、そして指定された時点のスナップショットに関する全ての更新前イメージに対する処理が完了するまで、各更新前イメージ毎に以下の処理を再帰的に実行する(ステップS202)。
【0097】
まず、スナップショット生成部202は、最後尾の更新前イメージの内容から、更新されたブロックのiノード番号、ブロック番号、更新前データのデータサイズ、およびその更新前データが記憶されているログ記憶領域113のオフセット値を取得し、それらをスナップショット用バッファ管理テーブル302に登録する(ステップS203)。
【0098】
この時点ではログ記憶領域113にある更新前データは読み出さない。そして、ログ記憶領域113に記憶された更新前イメージを一つずつ遡りながら(ステップS204)、ステップS203の処理を順次実行する。これにより、復元すべき所定の過去の時点までの全ての更新前イメージに関する管理情報がスナップショット用バッファ管理テーブル302に登録される。
【0099】
次に、図18のフローチャートを参照して、スナップショット用バッファ管理テーブル302を用いて実行されるスナップショットイメージ生成処理の手順を説明する。
【0100】
スナップショットイメージ生成処理は、個々のファイル/ディレクトリの過去のイメージの読み出し要求が発行される度にその都度実行される。すなわち、スナップショットイメージ上のファイルやディレクトリに対する読み出し要求が発生した場合には、カレントファイルシステムで管理されているファイルやディレクトリのiノードを参照することにより、当該ファイル/ディレクトリを構成する各ブロックのブロック番号が取得される。そしてそのブロック番号に対するデータの読み出し要求がスナップショット生成部202に発行される。
【0101】
スナップショット生成部202は、データ読み出し要求を受け付けると(ステップS211)、スナップショット用バッファ管理テーブル302を検索して、読み出し要求で指定されたブロック番号のブロックがスナップショット用バッファ管理テーブル302に登録されているかどうかを判断する(ステップS212)。読み出し要求で指定されたブロック番号のブロックがスナップショット用バッファ管理テーブル302に登録されていないならば(ステップS212のNO)、当該ブロックは更新されていないので、スナップショット生成部202はファイルシステムから現在のブロックを読み出し、それを要求元に返却する(ステップS213)。
【0102】
一方、読み出し要求で指定されたブロック番号のブロックがスナップショット用バッファ管理テーブル302に登録されているならば(ステップS212のYES)、スナップショット生成部202は、以下の処理を実行する。
【0103】
すなわち、スナップショット生成部202は、スナップショット用バッファ管理テーブル302の該当するエントリにバッファアドレスが登録されているかどうかを調べることにより、読み出し要求で指定されたブロック番号の更新前データがスナップショット用バッファ301上に既に存在するか否かを判断する(ステップS214)。スナップショット用バッファ301上に既に存在する場合には(ステップS214のYES)、スナップショット生成部202は、該当する更新前データをスナップショット用バッファ301から即座に読み出し、それを要求元に返却する(ステップS218)。
【0104】
スナップショット用バッファ301上に存在しない場合には(ステップS214のNO)、スナップショット生成部202は、スナップショット用バッファ301上にバッファエリアを確保した後(ステップS215)、該当する更新前データをログ記憶領域113から読み出してバッファエリア上に書き込む(ステップS216)。そして、スナップショット生成部202は、バッファアドレスをスナップショット用バッファ管理テーブル302の該当するエントリに登録した後(ステップS217)、更新前データをスナップショット用バッファ301から読み出し、それを要求元に返却する(ステップS218)。
【0105】
以上のように、第2実施形態においては、読み出し要求されたブロックに関する更新前データまたはカレントファイルシステムにおける現在のデータを選択的に読み出すことにより、更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元することができる。
【0106】
また、上記第1実施形態では、2次記憶装置112上に用意した新たなブロックを用いて更新前データのブロックを復元しているので、復元されたスナップショットではiノード番号が元のiノード番号とは異なる結果となったが、第2実施形態においては、ブロック読み出し要求に応じてオンデマンドで更新前データを返却する仕組みであるので、更新前のファイルシステムのスナップショットイメージを、iノード番号を変更することなく復元することが可能となる。また、スナップショットイメージを2次記憶装置112上に作成する場合には、多くのディスクI/Oが発生するため、スナップショットイメージの復元に時間がかかるが、第2実施形態の方式によれば、読み出し要求されたファイル/ディレクトリの更新前イメージを高速に復元することができる。
【0107】
なお、以上の第2実施形態の説明においては、ブロックを変更する場合を例に取って説明したが、ブロックを追加または削除した場合についても同様にその復元を行うことが出来る。例えば、ファイルbが削除された場合、ファイルbの全データブロックおよびiノードブロックそれぞれに関する更新前データと、上位ディレクトリaのデータブロックに関する更新前データとがログ記憶領域113に蓄積される。ディレクトリaの読み出し要求が発生すると、スナップショット用バッファ301を通じてログ記憶領域113からディレクトリaの更新前データが読み出される。ディレクトリaの更新前データには、削除されたファイルbのiノード番号が含まれており、そのiノード番号からファイルbのiノードブロックのブロック番号が判る。ファイルbのiノードブロックに対する読み出し要求が発生すると、スナップショット用バッファ301を通じてログ記憶領域113からファイルbのiノードブロックに関する更新前データが読み出される。この更新前データにはファイルbの全データブロックそれぞれのブロック番号が含まれているので、それらブロック番号に対する読み出し要求を発行することにより、ファイルbの更新前イメージが復元されることとなる。
【0108】
また、第2実施形態の方式においては、更新対象のブロックに対応するiノード番号についてはログ記憶領域113に蓄積せずとも、スナップショットイメージを生成することが出来る。
【0109】
また、スナップショット用バッファ管理テーブル302としては、配列を利用して実現する他、リンクリストやハッシュテーブルなどを利用して実現することもできる。さらに、スナップショット用バッファ管理テーブル302とスナップショット用バッファ301はログ記憶領域113に対するデータ読み出し速度の高速化を図るために設けたものであるので、これらスナップショット用バッファ管理テーブル302とスナップショット用バッファ301を用いずとも、読み出し要求されたブロックがログ記憶領域113に存在するかどうかを判別する事によって、スナップショットイメージを生成することが出来る。
【0110】
さらに、上記第1実施形態および第2実施形態それぞれに係るファイル管理システム111の機能はすべてコンピュータプログラムによって実現されているので、このプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータに導入して実行するだけで、本第1実施形態および第2実施形態それぞれと同様の効果を得ることが出来る。
【0111】
また、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0112】
【発明の効果】
以上詳述した如く本発明によれば、通常動作中におけるオーバーヘッドの低減を図ることができ、且つ何世代にも渡るファイルシステムそれぞれに対応したディレクトリ/ファイルに関する情報をファイルシステム内に構築することなく、指定された任意の時点のスナップショットを作成することが可能となる。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係る計算機システムの構成を示すブロック図。
【図2】同第1実施形態の計算機システムで管理されているファイルシステムのツリー構造の例を示す図。
【図3】図2のファイルシステムが更新される場合における更新前イメージの記録動作を説明するための図。
【図4】同第1実施形態の計算機システムにおいてファイル更新処理時に実行される一連の処理手順を示すフローチャート。
【図5】同第1実施形態の計算機システムに設けられたログ記憶領域に多数の更新前イメージが蓄積された様子を示す図。
【図6】同第1実施形態の計算機システムにおけるスナップショットの作成処理の様子を示す図。
【図7】同第1実施形態の計算機システムにおけるスナップショット作成処理の手順を示すフローチャート。
【図8】同第1実施形態の計算機システムにおける更新前イメージの記録動作とスナップショットを作成すべき時点との関係を示す図。
【図9】同第1実施形態の計算機システムにおいてファイル更新処理時に実行される一連の処理手順を示すフローチャート。
【図10】同第1実施形態の計算機システムで管理されているファイルシステムのツリー構造の例を示す図。
【図11】図10のファイルシステムが更新される場合における更新前イメージの記録動作を説明するための図。
【図12】同第1実施形態の計算機システムにおけるスナップショットの作成処理の様子を示す図。
【図13】本発明の第2実施形態に係る計算機システムで使用されるスナップショット用バッファとスナップショット用バッファ管理テーブルを説明するための図。
【図14】同第2実施形態におけるスナップショットイメージ生成処理の原理を説明するための図。
【図15】同第2実施形態で用いられるスナップショット用バッファ管理テーブルの構成例を示す図。
【図16】同第2実施形態で用いられるスナップショット用バッファ上に確保されるバッファエリアを示す図。
【図17】同第2実施形態においてスナップショット用バッファ管理テーブルを作成する処理の手順を示すフローチャート。
【図18】同第2実施形態におけるスナップショットイメージ生成処理の手順を示すフローチャート。
【符号の説明】
11…コンピュータシステム、111…ファイル管理システム、112…2次記憶装置、113…ログ記憶領域、201…更新前情報取得部、202…スナップショット生成部、203…iノードリスト、204…ディレクトリ情報、301…スナップショット用バッファ、302…スナップショット用バッファ管理テーブル。

Claims (20)

  1. 2次記憶装置上でファイルを階層構造で管理するファイルシステムを有する計算機システムにおいて、
    前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段と、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックを含むファイルまたはディレクトリを識別するための識別子および当該ブロックのブロック番号と共に前記ログ記憶手段に更新前イメージとして格納する更新前イメージ格納手段と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手段と、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容と、当該更新前のファイルまたはディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成手段とを具備することを特徴とする計算機システム。
  2. 前記ログ記憶手段は不揮発性の記憶装置から構成されていることを特徴とする請求項1記載の計算機システム。
  3. 前記更新前イメージ格納手段は、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別する手段と、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログ記憶手段に格納する処理を実行する手段とを含むことを特徴とする請求項1記載の計算機システム。
  4. 前記スナップショット生成手段は、
    前記更新されたブロックの更新前の内容を保持する第1の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手段と、
    前記更新されたブロックを含むファイルまたはディレクトリを管理するための管理情報を保持する前記ファイルシステム上の現在のイメージ上における管理情報ブロックの内容と前記第1の代替ブロックのブロック番号とに基づいて、前記管理情報が前記更新されたブロックの代わりに前記第1の代替ブロックへのリンク情報を持つように前記管理情報を修正し、当該修正された管理情報を保持する第2の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手段と、
    前記更新されたブロックのファイルまたはディレクトリが属する上位ディレクトリを保持する前記ファイルシステム上の現在のイメージ上におけるブロックの内容と前記第2の代替ブロックのブロック番号とに基づいて、前記上位ディレクトリが前記管理情報ブロックの代わりに前記第2の代替ブロックへのリンク情報を持つように前記上位ディレクトリのディレクトリ情報を修正し、当該修正されたディレクトリ情報を保持する第3の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手段とを含むことを特徴とする請求項1記載の計算機システム。
  5. 2次記憶装置上でファイルを階層構造で管理するファイルシステムを有する計算機システムにおいて、
    前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段と、
    前記ファイルシステムのファイルまたはディレクトリを更新する度にその更新前イメージを前記ログ記憶手段に順次格納する更新前イメージ格納手段であって、更新対象のファイルまたはディレクトリを示す識別子および前記更新対象のファイルまたはディレクトリ内における更新対象ブロックを示すブロック番号を、前記更新対象ブロックの更新前データと共に、前記ログ記憶手段に前記更新前イメージとして格納する更新前イメージ格納手段と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ファイルシステムの前記更新対象ブロックを更新する手段と、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記蓄積されている更新前イメージ毎に、その識別子およびブロック番号で指定されるファイルまたはディレクトリ内における前記更新されたブロックの更新前の内容を含むブロックと、当該ファイルまたはディレクトリからルートディレクトリに至るまでの各ディレクトリの情報を含むブロックを、前記2次記憶装置の空きブロック番号を用いて新たに生成することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成手段とを具備することを特徴とする計算機システム。
  6. 前記更新前イメージ格納手段は、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別する手段と、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログに格納する処理を実行する手段とを含むことを特徴とする請求項5記載の計算機システム。
  7. 2次記憶装置上でファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのファイル管理方法であって、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックを含むファイルまたはディレクトリを識別するための識別子および当該ブロックのブロック番号と共に、更新前イメージとして前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段に格納する更新前イメージ格納ステップと、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新するステップと、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容と、当該更新前のファイルまたはディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成ステップとを具備することを特徴とするファイル管理方法。
  8. 前記ログ記憶手段は不揮発性の記憶装置から構成されていることを特徴とする請求項7記載のファイル管理方法。
  9. 前記更新前イメージ格納ステップは、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別するステップと、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログ記憶手段に格納する処理を実行するステップとを含むことを特徴とする請求項7記載のファイル管理方法。
  10. 前記スナップショット生成ステップは、
    前記更新されたブロックの更新前の内容を保持する第1の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成するステップと、
    前記更新されたブロックを含むファイルまたはディレクトリを管理するための管理情報を保持する前記ファイルシステム上の現在のイメージ上における管理情報ブロックの内容と前記第1の代替ブロックのブロック番号とに基づいて、前記管理情報が前記更新されたブロックの代わりに前記第1の代替ブロックへのリンク情報を持つように前記管理情報を修正し、当該修正された管理情報を保持する第2の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成するステップと、
    前記更新されたブロックのファイルまたはディレクトリが属する上位ディレクトリを保持する前記ファイルシステム上の現在のイメージ上におけるブロックの内容と前記第2の代替ブロックのブロック番号とに基づいて、前記上位ディレクトリが前記管理情報ブロックの代わりに前記第2の代替ブロックへのリンク情報を持つように前記上位ディレクトリのディレクトリ情報を修正し、当該修正されたディレクトリ情報を保持する第3の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成するステップとを含むことを特徴とする請求項7記載のファイル管理方法。
  11. 2次記憶装置上でファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのファイル管理方法であって、
    前記ファイルシステムのファイルまたはディレクトリを更新する度にその更新前イメージを、前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段に順次格納する更新前イメージ格納ステップであって、更新対象のファイルまたはディレクトリを示す識別子および前記更新対象のファイルまたはディレクトリ内における更新対象ブロックを示すブロック番号を、前記更新対象ブロックの更新前データと共に、前記ログ記憶手段に前記更新前イメージとして格納する更新前イメージ格納ステップと、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ファイルシステムの前記更新対象ブロックを更新するステップと、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記蓄積されている更新前イメージ毎に、その識別子およびブロック番号で指定されるファイルまたはディレクトリ内における前記更新されたブロックの更新前の内容を含むブロックと、当該ファイルまたはディレクトリからルートディレクトリに至るまでの各ディレクトリの情報を含むブロックを、前記2次記憶装置の空きブロック番号を用いて新たに生成することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成ステップとを具備することを特徴とするファイル管理方法。
  12. 前記更新前イメージ格納ステップは、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別するステップと、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログ記憶手段に格納する処理を実行するステップとを含むことを特徴とする請求項11記載のファイル管理方法。
  13. ディレクトリを含むファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのプログラムであって、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックを含むファイルまたはディレクトリを識別するための識別子および当該ブロックのブロック番号と共に、更新前イメージとして前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段に格納する更新前イメージ格納手順と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手順と、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容と、当該更新前のファイルまたはディレクトリを含む上位ディレクトリのディレクトリ情報とを復元することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成手順とを前記計算機システムに実行させることを特徴とするプログラム。
  14. 前記更新前イメージ格納手順は、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別する手順と、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログ記憶手段に格納する処理を実行する手順とを含むことを特徴とする請求項13記載のプログラム。
  15. 前記スナップショット生成手順は、
    前記更新されたブロックの更新前の内容を保持する第1の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手順と、
    前記更新されたブロックを含むファイルまたはディレクトリを管理するための管理情報を保持する前記ファイルシステム上の現在のイメージ上における管理情報ブロックの内容と前記第1の代替ブロックのブロック番号とに基づいて、前記管理情報が前記更新されたブロックの代わりに前記第1の代替ブロックへのリンク情報を持つように前記管理情報を修正し、当該修正された管理情報を保持する第2の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手順と、
    前記更新されたブロックのファイルまたはディレクトリが属する上位ディレクトリを保持する前記ファイルシステム上の現在のイメージ上におけるブロックの内容と前記第2の代替ブロックのブロック番号とに基づいて、前記上位ディレクトリが前記管理情報ブロックの代わりに前記第2の代替ブロックへのリンク情報を持つように前記上位ディレクトリのディレクトリ情報を修正し、当該修正されたディレクトリ情報を保持する第3の代替ブロックを前記2次記憶装置の空きブロックを用いて新たに生成する手順とを含むことを特徴とする請求項13記載のプログラム。
  16. ディレクトリを含むファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのプログラムであって、
    前記ファイルシステムのファイルまたはディレクトリを更新する度にその更新前イメージを、前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段に順次格納する更新前イメージ格納手順であって、更新対象のファイルまたはディレクトリを示す識別子および前記更新対象のファイルまたはディレクトリ内における更新対象ブロックを示すブロック番号を、前記更新対象ブロックの更新前データと共に、前記ログ記憶手段に前記更新前イメージとして格納する更新前イメージ格納手順と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ファイルシステムの前記更新対象ブロックを更新する手順と、
    前記ログ記憶手段に蓄積されている更新前イメージと前記ファイルシステムの現在のイメージとに基づいて、前記蓄積されている更新前イメージ毎に、その識別子およびブロック番号で指定されるファイルまたはディレクトリ内における前記更新されたブロックの更新前の内容を含むブロックと、当該ファイルまたはディレクトリからルートディレクトリに至るまでの各ディレクトリの情報を含むブロックを、前記2次記憶装置の空きブロック番号を用いて新たに生成することにより、過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成するスナップショット生成手順とを前記計算機システムに実行させるプログラム。
  17. 前記更新前イメージ格納手順は、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、その更新が、前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新であるかどうかを判別する手順と、
    前記更新が前記スナップショットを生成すべき所定の時点以降における当該ブロックに対する最初の更新である場合にのみ、当該ブロックに関する更新前イメージを前記ログ記憶手段に格納する処理を実行する手順とを含むことを特徴とする請求項16記載のプログラム。
  18. 2次記憶装置上でファイルを階層構造で管理するファイルシステムを有する計算機システムにおいて、
    前記ファイルシステムの更新履歴を蓄積するためのログ記憶手段と、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックのブロック番号と共に前記ログ記憶手段に更新前イメージとして格納する更新前イメージ格納手段と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手段と、
    過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成する際、読み出し要求されたブロック毎に、その読み出し要求で指定されるブロック番号に対応するブロックの更新前イメージが前記ログ記憶手段に蓄積されているか否かに応じて当該ブロックに関する更新前イメージまたは前記ファイルシステムにおける現在のイメージを選択的に読み出すことにより、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元するスナップショット生成手段とを具備することを特徴とする計算機システム。
  19. 2次記憶装置上でファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのファイル管理方法であって、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックのブロック番号と共にログ記憶手段に更新前イメージとして格納する更新前イメージ格納ステップと、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新するステップと、
    過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成する際、読み出し要求されたブロック毎に、その読み出し要求で指定されるブロック番号に対応するブロックの更新前イメージが前記ログ記憶手段に蓄積されているか否かに応じて当該ブロックに関する更新前イメージまたは前記ファイルシステムにおける現在のイメージを選択的に読み出すことにより、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元するスナップショット生成ステップとを具備することを特徴とするファイル管理方法。
  20. ディレクトリを含むファイルを階層構造で管理する計算機システム内のファイルシステムに関する過去の所定の時点におけるスナップショットを生成するためのプログラムであって、
    前記ファイルシステムで使用される前記2次記憶装置上のブロックの内容を更新する際に、そのブロックの更新前の内容を、当該ブロックのブロック番号と共にログ記憶手段に更新前イメージとして格納する更新前イメージ格納手順と、
    前記更新前イメージを前記ログ記憶手段に格納した後、前記ブロックを更新する手順と、
    過去の所定の時点における前記ファイルシステムのイメージを示すスナップショットを生成する際、読み出し要求されたブロック毎に、その読み出し要求で指定されるブロック番号に対応するブロックの更新前イメージが前記ログ記憶手段に蓄積されているか否かに応じて当該ブロックに関する更新前イメージまたは前記ファイルシステムにおける現在のイメージを選択的に読み出すことにより、前記更新されたブロックを含むファイルまたはディレクトリの更新前の内容を復元するスナップショット生成手順とを前記計算機システムに実行させることを特徴とするプログラム。
JP2002377173A 2002-09-11 2002-12-26 計算機システムおよびファイル管理方法 Expired - Fee Related JP3896077B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002377173A JP3896077B2 (ja) 2002-09-11 2002-12-26 計算機システムおよびファイル管理方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002265856 2002-09-11
JP2002377173A JP3896077B2 (ja) 2002-09-11 2002-12-26 計算機システムおよびファイル管理方法

Publications (2)

Publication Number Publication Date
JP2004157958A true JP2004157958A (ja) 2004-06-03
JP3896077B2 JP3896077B2 (ja) 2007-03-22

Family

ID=32827508

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002377173A Expired - Fee Related JP3896077B2 (ja) 2002-09-11 2002-12-26 計算機システムおよびファイル管理方法

Country Status (1)

Country Link
JP (1) JP3896077B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006235737A (ja) * 2005-02-22 2006-09-07 Hitachi Ltd ストレージサブシステム及びストレージシステム
JP2007140700A (ja) * 2005-11-15 2007-06-07 Hitachi Ltd 計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法
JP2007199889A (ja) * 2006-01-25 2007-08-09 Hitachi Ltd ストレージシステム、記憶制御装置及び記憶制御装置のリカバリポイント検出方法
JP2009110225A (ja) * 2007-10-30 2009-05-21 Hitachi Ltd 記憶制御装置、ストレージシステム及び記憶制御装置の制御方法
US7921269B2 (en) 2004-03-22 2011-04-05 Hitachi, Ltd. Storage subsystem and storage system for updating snapshot management information
CN101681317B (zh) * 2008-03-01 2011-09-28 株式会社东芝 存储器系统
CN101681312B (zh) * 2008-02-29 2012-05-23 株式会社东芝 存储器系统
JP2012531675A (ja) * 2009-06-26 2012-12-10 シンプリヴィティ・コーポレーション ファイルシステム
US10474631B2 (en) 2009-06-26 2019-11-12 Hewlett Packard Enterprise Company Method and apparatus for content derived data placement in memory

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921269B2 (en) 2004-03-22 2011-04-05 Hitachi, Ltd. Storage subsystem and storage system for updating snapshot management information
JP2006235737A (ja) * 2005-02-22 2006-09-07 Hitachi Ltd ストレージサブシステム及びストレージシステム
JP2007140700A (ja) * 2005-11-15 2007-06-07 Hitachi Ltd 計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法
JP4704893B2 (ja) * 2005-11-15 2011-06-22 株式会社日立製作所 計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法
JP2007199889A (ja) * 2006-01-25 2007-08-09 Hitachi Ltd ストレージシステム、記憶制御装置及び記憶制御装置のリカバリポイント検出方法
JP2009110225A (ja) * 2007-10-30 2009-05-21 Hitachi Ltd 記憶制御装置、ストレージシステム及び記憶制御装置の制御方法
CN101681312B (zh) * 2008-02-29 2012-05-23 株式会社东芝 存储器系统
CN101681317B (zh) * 2008-03-01 2011-09-28 株式会社东芝 存储器系统
JP2012531675A (ja) * 2009-06-26 2012-12-10 シンプリヴィティ・コーポレーション ファイルシステム
US10474631B2 (en) 2009-06-26 2019-11-12 Hewlett Packard Enterprise Company Method and apparatus for content derived data placement in memory

Also Published As

Publication number Publication date
JP3896077B2 (ja) 2007-03-22

Similar Documents

Publication Publication Date Title
US11086545B1 (en) Optimizing a storage system snapshot restore by efficiently finding duplicate data
KR101137299B1 (ko) 스냅샷을 제공하는 파일 시스템에 대한 계층적 저장 관리
EP1918836B1 (en) Apparatus and method for a hardware-based file system
US9128940B1 (en) Method and apparatus for performing file-level restoration from a block-based backup file stored on a sequential storage device
EP1695220B1 (en) System and method for supporting asynchronous data replication with very short update intervals
JP4620457B2 (ja) 複数の同時にアクティブなファイルシステム
US7257690B1 (en) Log-structured temporal shadow store
JP4336129B2 (ja) 複数のスナップショットを管理するシステム及び方法
KR100962055B1 (ko) 컴퓨터 시스템들간의 객체 공유
EP0745934A2 (en) File system for a data storage device having a power fail recovery mechanism for write/replace operations
US20090006500A1 (en) Namespace replication program, namespace replication device, and namespace replication method
JP2005050024A (ja) 計算機システムおよびプログラム
US20080172423A1 (en) Hsm control program, hsm control apparatus, and hsm control method
JP3896077B2 (ja) 計算機システムおよびファイル管理方法
EP0745939A2 (en) Re-entrant garbage collection process for a flash memory resident file system
JP2008123104A (ja) データアクセス装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060919

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061120

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: 20061212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061215

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

Free format text: PAYMENT UNTIL: 20091222

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101222

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101222

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111222

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121222

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131222

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees