JP4766240B2 - ファイル管理方法、装置、およびプログラム - Google Patents

ファイル管理方法、装置、およびプログラム Download PDF

Info

Publication number
JP4766240B2
JP4766240B2 JP2005323720A JP2005323720A JP4766240B2 JP 4766240 B2 JP4766240 B2 JP 4766240B2 JP 2005323720 A JP2005323720 A JP 2005323720A JP 2005323720 A JP2005323720 A JP 2005323720A JP 4766240 B2 JP4766240 B2 JP 4766240B2
Authority
JP
Japan
Prior art keywords
log
area
sequence number
entry
storage medium
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.)
Expired - Fee Related
Application number
JP2005323720A
Other languages
English (en)
Other versions
JP2007133487A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2005323720A priority Critical patent/JP4766240B2/ja
Priority to US11/585,092 priority patent/US7680837B2/en
Publication of JP2007133487A publication Critical patent/JP2007133487A/ja
Application granted granted Critical
Publication of JP4766240B2 publication Critical patent/JP4766240B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、プロセッサからアクセスされる記憶媒体上のファイル管理方法に関し、特に、データを消去する回数に制限のある記憶媒体に適したファイル管理方法に関する。
データをファイル単位で記憶媒体に格納するコンピュータのファイルシステムは様々な記憶媒体へのファイルの格納を仲介する。例えば、大容量化に適し、電気的に書き換えが可能で、電源を切断してもデータが消滅しないフラッシュメモリがファイルの格納に用いられる場合がある。フラッシュメモリへのデータの書き込みはバイト等の小さな単位で可能であるが、書き込まれたデータの消去はブロックという大きな単位で行なう必要がある。
そして、フラッシュメモリのデータの消去には回数に制限がある。そのため、記憶媒体としてフラッシュメモリを使用する場合、消去回数をブロック間で均等化することにより、フラッシュメモリ全体として使用可能な期間をできるだけ長くする工夫がされる。消去回数の均等化は“wear leveling”と呼ばれる。
JFFS(Journaling Flash File System)(非特許文献1参照)のような、フラッシュメモリを記憶媒体として用いるファイルシステムでは、“log−structured”(非特許文献2参照)の手法が用いられる。
“log−structured”は、データを上書きせず、連続的に次々に追加保存していくデータ格納方法である。この方法によれば連続的に保存されたデータの中に古いデータがログとして残る。そして、ログとして残ったデータの中には有効なデータと無効なデータが混在することになる。そのため、JFFSのような“log−structured”のファイルシステムは、使用開始時などに実行するマウント処理において、フラッシュメモリの全てのデータを読み出し、有効なデータの範囲を割り出している。このような“log−structured”の手法は、局所的なデータの消去を行なわないので、ブロックを均等に利用することに寄与する。
David Woodhouse、「JFFS:The Journalling Flash File System」、[ONLINE]、[2005年8月3日検索]、インターネット<URL: http://sources.redhat.com/jffs2/jffs2.pdf> ユーレッシュ・ヴァハリア著、「最前線UNIXのカーネル」、株式会社ピアソン・エデュケーション、2000年5月15日、398〜399ページ
“log−structured”ファイルシステムによれば、記憶領域の消去回数を均等化することができ、使用可能期間を長くすることができる。しかし、そのようなファイルシステムでは、マウント処理にて先頭のログを見つけるために、マウントする記憶媒体中のデータを全て確認して有効なデータの範囲を洗い出す必要があるため、その処理が重く、使用開始に時間がかかるという問題があった。
従来の他の種類のファイルシステムとして、ファイル管理構造の情報をインデックスファイルに記録することで、全体の構造把握を容易にするファイルシステムもある。この種のファイルシステムとして、例えば、4.4BSD(Berkeley Software Distribution)のLFS(Logstructured Filesystem)がある(例えば、Marshall Kirk Mckusick,Keith Bostic,Michael J.karels,Johon S.Quarterman、4.4BSDの設計と実装、2003年10月10日、331〜350ページ参照)。
しかし、LFSでは、記憶媒体中のインデックスファイルの位置は変化するが、そのインデックスファイルの位置を示す管理情報は、固定位置のスーパーブロックに記録される。そのため、更新によりインデックスファイルの位置が変化する毎にスーパーブロックの内容は更新されることとなる。
そのため、スーパーブロックとして使用されるブロックの消去回数は他のブロックの消去回数よりも多くなり、消去回数がブロック間で均等化されない。その結果、スーパーブロックの消去回数によりフラッシュメモリ全体の使用可能期間が決まってしまうこととなっていた。
本発明の目的は、記憶媒体の使用可能期間を長くすると共に、使用開始にかかる時間を短縮したファイルシステムを提供することである。
上記目的を達成するために、本発明のファイル管理方法は、
順次行なわれるファイルへのアクセスを、ログを順次追加していくことで記録する、ログ構成のファイルシステムにおけるファイル管理方法であって、
予め、記憶媒体の記憶領域を、ファイルのデータを含むログを格納するデータ領域と、前記データ領域に格納されたログに関する管理情報を複数エントリー分だけ格納可能な管理領域とに分割するステップと、
そのエントリーの書き込まれた順序を示す第1の番号を含む前記管理情報を新たなエントリーとして前記管理領域に追加して記録するステップとを有している。
本発明によれば、記憶媒体に記録されたログの管理情報を記憶する管理領域は複数エントリーを記録可能であり、管理情報を追加記録していくので、使用開始時に管理情報を参照すれば記憶領域全体を確認しなくてもよく、使用開始時の時間を短縮することができ、また、その管理情報を前回のエントリーに上書きせず、新たなエントリーとして追加記録するので、管理情報を記録する領域の消去回数を低減し、記憶媒体の使用可能期間を長期化することができる。
また、前記第1の番号に基づいて最も新しいエントリーを探し出し、該エントリーの管理情報を用いて先頭ログを検出するステップをさらに有することとしてもよい。
これによれば、先頭ログを迅速に検出することができるので、使用開始時の時間を短縮することができる。
また、前記データ領域は複数のデータ小領域からなり、前記管理領域は前記複数のデータ小領域に対応する複数の管理小領域からなり、
前記記憶媒体にログを追加するとき、該ログの追加に新たなデータ小領域を使用する必要があれば、新たな該データ小領域に対応する管理小領域に前記管理情報のエントリーを記録することとしてもよい。
これによれば、ログを記録するデータ領域が複数のデータ小領域に分割され、管理情報を格納する管理領域もそれぞれのデータ小領域に対応する複数の管理小領域に分割されており、管理小領域への管理情報の書き込みは、対応するデータ小領域への最初の書き込みのときだけなので、管理領域の消去回数がデータ領域の消去回数と均等になり、記憶媒体の使用可能期間が長期化する。
また、前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2の番号が含まれており、
先頭ログを検出するステップは、
前記管理領域内の各管理小領域に記録された第1の番号により最新のエントリーを探し出すステップと、
前記最新のエントリーの管理小領域に対応するデータ小領域を探索対象範囲として定めるステップと、
探索対象範囲として定めた前記データ小領域内の全てのログの第2の番号から最新のログを判定し、該ログを先頭ログとするステップと、を有することとしてもよい。
これによれば、管理情報として記録した第1の番号により複数エントリーより最新エントリーを見つけ、そのエントリーに対応するデータ小領域を探索対象とし、そのデータ小領域にある各ログの第2の番号から先頭ログを検出するので、使用開始にかかる時間を短縮することができる。
また、前記管理小領域に記録される前記管理情報のエントリーには、対応するデータ小領域の各々の最初に格納されたログの開始位置情報がさらに含まれており、
前記先頭ログを検出するステップにおいて、
前記小領域に格納されたログの境界を、前記開始位置情報を用いて認識することとしてもよい。
これによれば、各エントリーには、対応するデータ小領域の最初のログの開始位置を示す情報が含まれるので、データ小領域とログの境界が一致していなくても容易にログの位置を認識することができる。
また、前記管理小領域の各々は、対応するデータ小領域の内部に配置されていることとしてもよい。
また、前記管理小領域が、対応する前記データ小領域内の、最初に前記ログの格納に使用される部分に隣接して配置されていることとしてもよい。
また、前記記憶媒体にログを追加するとき、その時点での先頭ログの記録されたデータ小領域に、追加する該ログを収容できるだけの容量が残っていなければ、前記先頭ログの記録された前記データ小領域の次のデータ小領域に該ログを追加することとしてもよい。
これによれば、各データ小領域の管理情報の各々は、対応するデータ小領域の内部に記録されるので、管理情報とログとを連続したブロックとして1回の処理で書き込むことができ、管理情報とログのいずれか一方のみが更新されて矛盾した状態が発生するのを低減することができる。
また、本発明において、前記記憶媒体にログを追加するとき、該ログの位置を示すログ参照情報を前記第1の番号と共に前記管理情報のエントリーとして記録することとしてもよい。
また、先頭ログを検出するステップは、
前記管理領域内の各管理情報のエントリーに含まれる第1の番号から最新のエントリーを探し出すステップと、
前記最新のエントリーに含まれているログ参照情報により示されるログを先頭ログとして検出するステップと、を有することとしてもよい。
また、前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2の番号が含まれており、
前記最新のエントリーに含まれているログ参照情報により示されるログの次以降の領域に、該ログの第2の番号よりも新しい第2の番号が付与されたログがあれば、最も新しい第2の番号が付与されたログを先頭ログとすることとしてもよい。
また、前記ログの有効か無効かが該ログのヘッダ内のフラグで示されており、
前記ログを追加するとき、該ログにおける書き込み先と同じ書き込み先に対する過去のデータを含む既存の有効なログが前記記憶媒体上にあれば、該既存のログのフラグを無効にするステップをさらに有することとしてもよい。
また、前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2の番号が含まれており、
前記記憶媒体の使用を開始するとき、書き込み先が同一の有効なログが複数あれば、その複数の中から前記第2の番号により最も新しいログを見つけ、前記最も新しいログ以外のログを無効にすることとしてもよい。
これによれば、再び記憶媒体の使用を開始するとき、正しいデータのファイルが使用可能となる。
また、前記記憶媒体は、消去された状態で“1”となるフラッシュメモリであり、前記フラグが“1”で有効を示し、“0”で無効を示すこととしてもよい。
これによれば、ログの状態を有効から無効に移行させるのにデータの消去が不要となり、記憶媒体の使用可能期間を長くすることができる。
また、前記ログは、該ログが追加された時点での最後尾ログを示す最後尾参照情報をヘッダ内に含んでおり、
最後尾ログを検出する処理として、
先頭ログのヘッダに含まれている最後尾参照情報により示されたログから順に先頭方向に有効なログを探し、最初に見つかった有効なログを最後尾ログと判断するステップをさらに有することとしてもよい。
これによれば、最後尾ログを割り出すとき、全てのログの有効無効を調べる必要が無くなり、使用開始にかかる時間を短縮することができる。
また、前記管理情報のエントリーは、該エントリーが書き込まれた時点での最新の最後尾ログを示す最後尾参照情報を含んでおり、
最後尾ログを検出する処理として、
最新のエントリーに含まれている最後尾参照情報により示されたログから順に先頭方向に有効なログを探し、最初に見つかった有効なログを最後尾ログと判断するステップをさらに有することとしてもよい。
これによっても、最後尾ログを割り出すとき、全てのログの有効無効を調べる必要が無くなり、使用開始にかかる時間を短縮することができる。
また、前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2の番号が含まれており、
最後尾ログがデータ小領域をまたいで替わるとき、新たな最後尾ログを含むこととなったデータ小領域に対応する管理小領域に、最後尾ログを含むこととなった順序を示す第3の番号を含む管理情報を新たなエントリーとして記録するステップと、
最後尾ログを検出する処理として、
前記管理領域内の各管理小領域に記録された第3の番号により、最も新しく最後尾ログを含むこととなったエントリーを探し出すステップと、
前記最も新しく最後尾ログを含むこととなったエントリーの管理小領域に対応するデータ小領域を探索対象範囲として定めるステップと、
探索対象範囲として定めた前記データ小領域内の有効なログの第2の番号から最も古いログを判定し、該ログを最後尾ログとするステップと、をさらに有することとしてもよい。
これによっても、最後尾ログを割り出すとき、全てのログの有効無効を調べる必要が無くなり、使用開始にかかる時間を短縮することができる。
また、前記先頭ログを検出する処理として、
探索対象範囲として定めた前記データ小領域から最新のログを判定するとき、該データ小領域内の終わりまでログが記録されており、かつ、その終わりに記録されているログの第2の番号が該データ小領域の中で最も新しければ、探索対象範囲とした前記データ小領域の次のデータ小領域の最初のログの第2の番号を確認するステップと、
前記次のデータ小領域の最初に記録されているログの前記第2の番号が、前記探索対象範囲とした前記データ小領域の終わりに記録されているログの前記第2の番号よりも新しければ、探索対象範囲を前記次のデータ小領域に変更して先頭ログを検出しなおすステップと、をさらに有することとしてもよい。
これによれば、異常終了後に再び記憶媒体の使用を開始するとき、正しい先頭ログの認識が可能となる。
また、探索対象範囲を前記次のデータ小領域に変更したとき、該次のデータ小領域に対応する管理小領域に前記管理情報のエントリーを記録することとしてもよい。
これによれば、異常終了した状態から本来の先頭ログが記録されたデータ小領域を検出すると、このとき新たなログを書き込む動作が有っても無くても、管理領域を修正して正常な状態に戻すので、そのときに記憶媒体上の状態を正しくすることができ、次にファイルシステムを使用開始する際には探索範囲を広くする必要が減る。
本発明によれば、記憶媒体に記録されたログの管理情報を記憶する管理領域は複数エントリーを記録可能であり、管理情報を追加記録していくので、使用開始時には管理情報を参照すれば記憶領域全体を確認しなくてもよく、使用開始時の時間を短縮することができ、また、その管理情報を前回のエントリーに上書きせず、新たなエントリーとして追加記録するので、管理情報を記録する領域の消去回数を低減し、記憶媒体の使用可能期間を長期化することができる。
本発明を実施するための形態について図面を参照して詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態によるコンピュータシステムの構成を示すブロック図である。図1を参照すると、コンピュータシステムは、プロセッサ10、ファイル処理部11、および記憶媒体12を有している。
プロセッサ10は、不図示のプログラムを実行することにより所定の計算処理を行なう。
ファイル処理部11は、プロセッサ10から記憶媒体12へのアクセスを仲介し、プロセッサ10の要求により記憶媒体12上のファイルに対する書き込みおよび読み出しを行なう。本実施形態のファイル処理部11で用いられるファイルシステムは“log−suructured”である。したがって、記憶媒体12上に既に記録されているファイル中のブロックに対する書き込み、すなわち“アップデート書き込み”であったとしても、ファイル処理部11は古いデータに上書きすることはせず、新たなログを作成して記憶媒体12上に追加し、古いログを無効にする。
記憶媒体12は、消去(あるいは書き込み)の回数に制限がある記憶媒体であり、例えばフラッシュメモリである。
図2は、第1の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。図2を参照すると、記憶媒体12の記憶領域は、シーケンス番号記憶領域と複数のログ領域に分割される。
記憶媒体12に書き込まれるデータの単位をログと呼ぶ。1つのログ領域に複数のログを記録してもよく、また1つのログが複数のログ領域にまたがってもよい。また、各ログ領域は全てが同一サイズであってもよく、あるいはそれぞれ毎に異なってもよい。
図3は、ログ領域に格納されるログの構成を示す図である。図3を参照すると、ログはヘッダ部とデータ部とで構成されている。ヘッダ部には、ログのサイズ、バージョン番号、無効フラグ、ファイルの位置情報、およびファイル中のデータブロックの位置情報等が含まれる。バージョン番号は、そのログを書き込んだ順序を示す番号である。このバージョン番号により各ログの新しさを知ることができる。
図2に戻り、シーケンス番号記憶領域は複数のエントリーからなる管理領域である。複数のエントリーは複数のログ領域の各々に対応しており、各ログ領域のシーケンス番号が記録される。シーケンス番号は、そのログ領域にログが書き込まれた順序を示す番号である。このシーケンス番号により、最も新しくログが書き込まれたログ領域を識別することができる。
なお、ログの状態として有効な状態と無効な状態とがあり、それらは無効フラグにより示される。無効フラグがセットされていることで無効なログであることを示し、セットされていないことで有効なログであることを示す。無効フラグは、データが消去された状態からビット反転した状態で無効(セットされた状態)を示すこととすればよい。フラッシュメモリでは、消去された状態が“1”なので、無効フラグが“0”でセットされた状態を示すこととすればよい。これにより、ログの状態を有効から無効に移行させるのにデータの消去が不要となり、記憶媒体の使用可能期間を長くすることができる。
ここでは、最も新しく書き込まれた(有効な)ログを先頭ログと呼び、最も古く書き込まれた有効なログを最後尾ログと呼ぶこととする。
次に、本実施形態のコンピュータシステムの動作について説明する。図4は、記憶媒体に格納されているデータの変化の一例を示す図である。図4の上段の状態では、記憶媒体12にはログi〜ログjが格納されている。この状態から、新たに作成したログj+1を先頭に追加すると図4の中段の状態となる。なお、データの書き込みが既に記憶媒体12上に記録されたファイルのブロックに対するものであったとしても新たなログが作成される。
さらに、ガベージコレクションによってログiを開放すると、図4の下段に示すように最後尾がログi+1になる。
次に、プロセッサ10からファイルの読み出しを要求されたファイル処理部11の動作について説明する。
プロセッサ10から、ファイルおよびそのファイル中のブロックとを指定して読み出し要求があると、ファイル処理部11は、指定されたファイルの指定されたブロックのデータを格納している有効なログを記憶媒体12内から検索する。このとき先頭ログが分かっていれば、そこから最後尾方向に順に対象ログを探していけばよい。また、先頭ログおよび最後尾ログの両方が分かっていれば、その間を探せばよい。検索によって、対象となるログを発見すると、ファイル処理部11は、そのログに対応する記憶媒体12のデータを記憶媒体12から取得し、プロセッサ10に返却する。
次に、プロセッサ10からファイルの書き込みを要求されたファイル処理部11の動作について説明する。図5は、第1の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。ファイル処理部11は、プロセッサ10から書き込み要求を受ける。書き込み要求では、データを書き込む対象となるファイルと、そのファイル中のブロックの位置と、書き込むデータとが指定される。
図5を参照すると、まず、ファイル処理部11は、既に記憶媒体12に格納されている先頭のログの次に、指定されたデータの書き込みに必要なブロックを確保する(ステップ100)。次いで、ファイル処理部11は、ヘッダ部に書き込むヘッダと、データ部に書き込むデータを作成する(ステップ101)。
ここでヘッダに書き込むバージョン番号は、その時点での先頭ログのバージョン番号よりも大きい値とする。例えば、バージョン番号は1ずつインクリメントする番号とすればよい。その場合、ファイル処理部11は、その時点の先頭ログのバージョン番号に1を加算して新たな先頭ログのバージョン番号とする。あるいは、その時点での先頭ログのバージョン番号より大きな値とする代わりに小さな値としてもよい。その場合、バージョン番号が小さい方がより新しく記録したログとなる。
これによって、先頭ログのバージョン番号が全てのログのバージョン番号の中で最も大きな値となり、先頭ログを判別することができるようになる。なお、バージョン番号は、それを表すビット数(桁数)に制限される有限の番号であるが、十分な桁数を確保しておけば、記憶領域12に存在するログの中から先頭ログを判別できる。
次いで、ファイル処理部11は、ステップ100にて確保したブロックに、ステップ101で作成したヘッダおよびデータを書き込む(ステップ102)。
次いで、ファイル処理部11は、ステップ100にて確保した領域が、先頭ログを含むログ領域から他のログ領域に達しているか否か判定する(ステップ103)。確保した領域が他のログ領域に達していれば、ファイル処理部11は、確保した領域が新たに達したログ領域に対応するエントリーに、新たなログを追加する前の時点での先頭ログを含むログ領域のシーケンス番号より大きなシーケンス番号を書き込む(ステップ104)。例えば、シーケンス番号は1ずつインクリメントする番号とすればよい。その場合、ファイル処理部11は、その時点の先頭ログを含むログ領域のシーケンス番号に1を加算して、新たに到達したログ領域のシーケンス番号とする。なお、シーケンス番号は、それを表すビット数(桁数)に制限される有限の番号であるが、十分な桁数を確保しておけば、記憶領域12に存在するログ領域の中から先頭ログを含むログ領域を判別できる。また、その時点での先頭ログを含むログ領域のシーケンス番号より大きな値とする代わりに小さな値としてもよい。その場合、シーケンス番号が小さい方がより新しく記録したログとなる。
次に、ファイル処理部11は、ステップ102においてデータおよびヘッダを書き込んだログを先頭ログとし、その先頭ログから最後尾の方向に、先頭ログと書き込み対象のファイルおよびブロック位置が同じであるログがあるか記憶媒体12中を検索し(ステップ105)、該当するログが見つかったか否か判定する(ステップ106)。
書き込み対象のファイルおよびブロック位置に該当するログが見つかると、ファイル処理部11は、そのログの無効フラグをセットし(ステップ107)、処理を終了する。それが見つからなければ、ファイル処理部11は、そのまま処理を終了する。
次に、ファイル処理部11が書き込み処理を異常終了し、無効フラグに矛盾が生じた場合を考慮した動作について説明する。
ここでは、図5のフローチャートに示した書き込み処理において、ステップ102を終了した後でステップ107を行なう前に、ファイル処理部11の処理が異常終了したとする。その場合、同じファイルの同じブロックを格納した有効なログが2つ記憶媒体12上に残ってしまうこととなる。そして、その場合、ヘッダ中のバージョン番号が大きな方が新しいデータである。そこで、ファイル処理部11は、例えばマウント処理にてバージョン番号が小さい方のログの無効フラグのみをセットし、バージョン番号が大きい方のログを有効とする。これにより、異常終了後に再び記憶媒体12の使用を開始するとき、正しいデータのファイルが使用可能となる。
次に、ファイルシステムの使用を開始するときのファイル処理部11の動作について説明する。図6は、ファイルシステムの使用を開始するときのファイル処理部11の動作を示すフローチャートである。使用開始時には、ファイル処理部11はマウント処理として様々な処理を実行するが、ここでは本発明に関連する、先頭ログを探索する処理のみを説明する。
図6を参照すると、ファイル処理部11は、まず、記憶媒体12のシーケンス番号記憶領域から最大のシーケンス番号を持ったエントリーを調べる(ステップ110)。次に、ファイル処理部11は、そのエントリーに対応するログ領域を、先頭ログを探す対象に定める(ステップ111)。そして、ファイル処理部11は、そのログ領域内の全てのログのヘッダからバージョン番号を読み出す(ステップ112)。
次いで、ファイル処理部11は、得られたバージョン番号の中から最大のものを探し、最大のバージョン番号を有するログを先頭ログと定める(ステップ113)。
次に、ファイル処理部11が書き込み処理を異常終了し、シーケンス番号記録領域とログ領域とで最新のログに矛盾が生じた場合を考慮した動作について説明する。
ここでは、図5のフローチャートに示した書き込み処理において、ステップ102を終了した後でステップ104を行なう前に、ファイル処理部11の処理が異常終了したとする。その場合、シーケンス番号記録領域にて最大のシーケンス番号が付与されているエントリーに対応するログ領域に最新ログが無く、その次のログ領域に最新ログがあるという状態が発生しうる。
本実施形態による“log−structured”のファイルシステムでは、記憶領域を順次使用していき、全体を使い終わると、最初に戻って前回の周回でログを記録した領域に新たなログを上書きする。最初の周回では、先頭ログを記録した領域以降はイレースされた状態だが、2回目以降の周回では、先頭ログを記録した領域以降に前回の周回で記録した無効なログが残った状態である。
したがって、ステップ102におけるログの書き込みと、ステップ104におけるシーケンス番号の書き込みが正常に行われた場合、その先頭ログを記録した以降の領域は、イレースされた状態か、先頭ログよりもシーケンス番号の小さいログが存在する状態のいずれかとなる。
図7Aは、初回の周回でログが書き込まれている記憶領域の状態を示す図である。ここでは、シーケンス番号記録領域にて最大のシーケンス番号が付与されたエントリーに対応するログ領域をログ領域Aとする。図7Aには、ログ領域Aに先頭ログ503が記録された状態が示されている。初回の周回なので、先頭ログ503よりも先の領域はイレースされた状態である。
図7Bは、2回目以降の周回でログが書き込まれている記憶領域の状態を示す図である。図7Bには、シーケンス番号記憶領域にて最大のシーケンス番号が付与されているエントリーに対応するログ領域Aに先頭ログ503が記録された状態が示されている。2回目以降の周回なので、先頭ログ503よりも先の領域には、前回の周回で記録されたログ10、11、12・・・が残った状態である。
図7Cは、ログ領域の最後までログが書き込まれた記憶領域の状態を示す図である。ここでは2回目以降の周回でログが書き込まれている例を示している。シーケンス番号記憶領域にて最大のシーケンス番号が付与されたエントリーに対応するログ領域Aのちょうど最後までログが書き込まれている。先頭ログはログ504である。ログ領域Aとログ領域A+1の境界以降に前回の周回で書き込んだログが残っている。
これらのような正常な状態に対して、新たなログ領域に新たな先頭ログを記録した後、シーケンス番号記憶領域を更新する前に異常終了すると、シーケンス番号記録領域にて最大のシーケンス番号が付与されたエントリーに対応するログ領域には実際には先頭ログがなく、最後までログが埋まった状態となる。その場合、実際の先頭ログは次のログ領域かあるいはその先にある。
図7Dは、シーケンス番号記憶領域を更新する前に異常終了した場合の記憶領域の状態を示す図である。図7Dを参照すると、シーケンス番号記憶領域にて最大のシーケンス番号が付与されたエントリーに対応するログ領域Aには、ログ領域A+1との境界までログが書き込まれている。これだけを見ると図7Cに示した正常状態と同様であり区別がつかない。しかし、実際には、さらにログ領域A+1にもログが書き込まれている。
そこで、本実施形態のファイル処理部11は、まず、シーケンス番号記録領域にて最大のシーケンス番号が付与されたエントリーに対応するログ領域Aにおける最後のログのバージョン番号と、ログ領域Aにおける他のログのバージョン番号を調べる。
このとき、図7Aまたは図7Bに示した状態であれば、次のログ領域以降に先頭ログがある可能性はなく、ログ領域Aに先頭ログがあると判断できる。しかし、ログ領域Aの最後までログが書き込まれており、そのログのバージョン番号がログ領域A内で最大であった場合、図7Cの正常状態か、図7Dの異常状態か判断できない。そこで、ファイル処理部11は、その場合には次のログ領域A+1を調べる必要がある。
ログ領域の最後までログが書き込まれており、かつ最後のログのバージョン番号がログ領域Aの中で最大であれば、ファイル処理部11は、次のログ領域A+1における最初のログのヘッダに含まれるバージョン番号を確認する。
そして、ログ領域Aの最後のログのバージョン番号よりもログ領域A+1の最初のログのバージョン番号の方が大きければ、ファイル処理部11は、ログ領域A+1中から先頭ログとなるべきログを探す。そして、ファイル処理部11は、シーケンス番号記録領域中のログ領域A+1に対応したエントリーに、ログ領域Aに付与されているシーケンス番号より大きな値を書き込む。
これにより、異常終了後に再び記憶媒体12の使用を開始するとき、正しい先頭ログの認識が可能となる。
また、これによれば、異常終了した状態から本来の先頭ログが記録されたログ領域を検出すると、このとき新たなログを書き込む動作が有っても無くても、ファイル処理部11はバージョン番号記憶領域を修正して正常な状態に戻すこととなる。書き込み動作がないときバージョン番号記憶領域を修正しなければ、次回の起動時に再び2つのログ領域Aおよびログ領域A+1の両方を探索する必要があり、無駄な処理が生じるからである。本実施形態では、書き込み動作の有無によらずバージョン番号記憶領域を修正するので、記憶媒体12上の状態を正しくすることができ、次にファイルシステムを使用開始する際には探索範囲を広くする必要が減る。
なお、本実施形態のファイルシステムは、他の一般的な“log−structuredファイルシステム”と同様にガベージコレクションを行なう。その際、ファイル処理部11は、有効なログの範囲を小さくし、記憶媒体12中の先頭ログよりも先の領域に未使用なブロックを確保するように、ヘッダの無効フラグを参照しながらログを整理する。
本実施形態では、記憶媒体12のシーケンス番号記憶領域に各ログ領域のシーケンス番号のみを記録していた。しかし、本実施形態の変形例として、各ログ領域のシーケンス番号に加えて、そのログ領域に最初に格納されたログの開始位置情報を記録することとしてもよい。これにより、ログの境界がログ領域の境界に一致していない場合でもログの境界を容易に認識できるようなる。
図8は、記憶媒体にて、ログ領域の境界を跨いでログが格納された様子を示す図である。図8に示すように、ログkが新たに格納されると、先頭ログはログ領域i−1からログ領域iに替わる。
その際、この変形例では、シーケンス番号記憶領域のログ領域iに対応するエントリーにログ領域i−1のシーケンス番号より大きなシーケンス番号が記録される。そして、それに加えてログ領域iのエントリーに、ログkの開始位置を示す開始位置情報をも記録することとする。これにより、ログkの開始位置がログ領域の境界と一致していない場合でもその開始位置を容易に知ることができ、またそれ以降の各ログを個別に識別することができる。
以上説明したように、本実施形態によれば、記憶媒体12に記録されたログの管理情報であるシーケンス番号を記憶する領域は複数エントリーを記録可能であり、新たなログ領域にログを追加するために管理情報の記録が必要になると、その管理情報を前回のエントリーに上書きせず、新たなエントリーとして追加する。そのため、使用開始時に管理情報を参照して迅速に先頭ログを検出できるので、記憶領域全体を確認する処理が不要となり、使用開始にかかる時間が短縮される。また、それと共に、管理情報を前回と同じ領域に上書きすることなく新たなエントリーとして追加することで、管理情報を記録する領域の消去回数を低減し、記憶媒体12の使用可能期間を長期化させることができる。
また、本実施形態では、ログを記録する領域が複数のログ領域に分割され、管理情報を格納するシーケンス番号記憶領域もそれぞれのログ領域に対応する複数の領域に分割されており、シーケンス番号記憶領域への管理情報の書き込みは、対応するログ領域への最初の書き込み時にのみ行なうので、シーケンス番号記憶領域の消去回数をログ領域と均等にすることができ、記憶媒体12の使用可能期間を長期化させることができる。
また、本実施形態によれば、管理情報として記録した複数エントリーのシーケンス番号より最新エントリーを見つけ、そのエントリーに対応するログ領域を探索対象とし、そのログ領域にある各ログのバージョン番号から先頭ログを検出するので、使用開始にかかる時間を短縮することができる。
また、本実施形態によれば、各エントリーには、対応するログ領域の最初のログの開始位置を示す情報が含まれるので、ログ領域とログの境界が一致していなくても容易にログの位置を認識することができ、使用開始にかかる時間を短縮することができる。
(第2の実施形態)
第2の実施形態は、各ログ領域のシーケンス番号を格納する領域がログ領域毎に分離して配置されている点で第1の実施形態と異なる。
図9は、第2の実施形態によるコンピュータシステムの構成を示すブロック図である。図9を参照すると、コンピュータシステムは、プロセッサ20、ファイル処理部21、および記憶媒体22を有している。プロセッサ20および記憶媒体22は、第1の実施形態におけるプロセッサ10および記憶媒体12と同様のものである。
ファイル処理部21は、第1の実施形態のファイル処理部11と同様に、プロセッサ20から記憶媒体22へのアクセスを仲介し、プロセッサ20の要求により記憶媒体22上のファイルの書き込みおよび読み出しを行う。
また、本実施形態のファイル処理部21で用いられるファイルシステムは“log−suructured”である。したがって、記憶媒体22上に既に記録されているファイル中のブロックに対する書き込み、すなわち「アップデート書き込み」であったとしても、ファイル処理部21は古いデータに上書きすることはせず、記憶媒体22上に新たなログを作成する。
本実施形態のファイル処理部21が第1の実施形態と異なるのは領域管理情報がログ領域毎に分離して配置される点である。
図10は、第2の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。図10を参照すると、記憶媒体22の記憶領域は、複数の領域0〜Mに分割される。分割された各領域は、同一サイズであってもよく、あるいは異なるサイズであってもよい。そして、それら各領域は、領域管理情報とログ領域から構成されている。領域管理情報には、対応するログ領域のシーケンス番号が含まれている。ログ領域は複数のログを記憶する領域である。ここでのログは第1の実施形態におけるログと同じものであり、図3に示したようにヘッダ部およびデータ部からなる。
次に、本実施形態のコンピュータシステムの動作について説明する。
プロセッサ20からファイルの読み出しを要求されたファイル処理部21の動作については、第1の実施形態のファイル処理部11の動作と同様である。
図11は、第2の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。ファイル処理部21は、既に記憶媒体22に格納されている先頭ログの次以降の領域に、データの書き込みに必要なブロックを確保する(ステップ120)。次に、ファイル処理部21は、ステップ120にて確保したブロックが、その時点での先頭ログを含む領域に収まっているか、あるいは次の領域に跨っているかを判定する(ステップ121)。
ステップ120で確保したブロックが領域を跨いでいれば、ファイル処理部21は、ステップ120で確保したブロックを開放し、次の領域の先頭からデータを書き込むのに必要なブロックを確保する(ステップ122)。
次いで、ファイル処理部21は、ステップ122にて新たにブロックを確保した領域用の領域管理情報およびログを作成する(ステップ123)。領域管理情報には、その領域のシーケンス番号が含まれる。その領域管理情報に書き込むシーケンス番号は、その時点の先頭ログを含む領域のシーケンス番号よりも大きな値とする。
また、ログにはヘッダおよびデータが含まれる。ここでヘッダに書き込むバージョン番号は、その時点での先頭ログのバージョン番号よりも大きい値とする。これによって、新たな先頭ログのバージョン番号が全てのログのバージョン番号の中で最も大きな値となり、先頭ログを判別できるようになる。
次いで、ファイル処理部21は、その領域管理情報およびログを記録媒体22上に確保しておいた領域に書き込む(ステップ124)。また、それに伴い、ファイル処理部21が自身の内部に記録する、先頭ログを示す情報をステップ124にて書き込んだログへと変更する。
一方、ステップ120で確保したブロックが領域を跨いでいなければ、ファイル処理部21は、プロセッサ20から指定されたデータ等からログのヘッダおよびデータを作成する(ステップ125)。次いで、ファイル処理部21は、ステップ120にて記憶媒体22上に確保したブロックに、ステップ121にて作成したデータを書き込む(ステップ126)。また、それに伴い、ファイル処理部21が自身の内部に記録する、先頭ログを示す情報をステップ124にて書き込んだログへと変更する。
ステップ124の処理またはステップ126の処理の後、ファイル処理部21は、書き込み対象とされているファイルおよびブロック位置に該当するログを記憶媒体22上の既存のログから検索する(ステップ127)。そして、書き込み対象のファイルおよびブロック位置が既存のログとして発見できたか否か判定する(ステップ128)。
書き込み対象のファイルおよびブロック位置が既存のログとして存在していれば、ファイル処理部21は、その既存のログの無効フラグをセットし(ステップ129)、処理を終了する。書き込み対象のファイルおよびブロック位置が既存のログとして存在していなければ、ファイル処理部21は、そのまま処理を終了する。
なお、上述したように、本実施形態では、第1の実施形態と異なり、各ログ領域のシーケンス番号を含む領域管理情報が、各ログ領域を含む領域内に、ログ領域と連続して配置されている。これにより、領域管理情報とログとを連続したブロックとして1回の処理で書き込むことができるので、領域管理情報とログのいずれか一方のみが更新され、最大のシーケンス番号を有する領域に先頭ログが無いという矛盾した状態の発生を低減することができる。
また、各ログ領域のエントリーを消去の単位としなければ、消去回数を書き換え回数と同じにできない。NAND型フラッシュメモリのように、消去の最小単位が大きな記憶媒体では、エントリーをシーケンス番号記憶領域としてまとめると、各エントリーの領域が必要以上に大きくなり記憶媒体の使用効率が悪い。これに対して、本実施形態では、領域管理情報を、対応する領域内の最初の部分に配置している。そのため、その領域に先頭ログが移動して領域管理情報の更新が必要となったときに書き込むログと領域管理情報が同じ領域内にあるので、領域管理情報のために消去の最小単位を割り当てなくても、消去回数と書き換え回数を一致させることができ、記憶媒体の使用効率がよい。
なお、図11のステップ121にてブロックが領域をまたぐとき、本実施形態では、次の領域に新たにブロックを割り当てることとした。領域管理情報が各領域内あるので、領域をまたいでログを記録することができないからである。しかし、本発明は、これに限定されるものではない。記録しようとするデータがログ領域をまたぎそうなとき、そのデータを分割して2つのログにしてもよい。そして、1つのログをこれまでのログ領域に記録し、もう1つのログを新たなログ領域に記録すればよい。
具体的には、図11のステップ122にて、ステップ120で割り当てたブロックに収まる部分と残りの部分との2つのログにデータを分割し、残り部分の方のログにブロックを割り当てることとすればよい。
次に、ファイル処理部21が書き込み処理を異常終了し、無効フラグに矛盾が生じた場合の動作について説明する。
ここでは、図11のフローチャートに示した書き込み処理において、ステップ124を終了した後でステップ129を行なう前に、またはステップ126を終了した後でステップ129を行なう前に、ファイル処理部21の処理が異常終了したとする。その場合、同じファイルの同じブロックを格納した有効なログが2つ記憶媒体22上に残ってしまうこととなる。そして、その場合、ヘッダ中のバージョン番号が大きな方が新しいデータである。そこで、ファイル処理部21は、例えばマウント処理にてバージョン番号が小さいログの無効フラグのみをセットすることにより、バージョン番号が大きいログを有効とする。これにより、異常終了後に再び記憶媒体22の使用を開始するとき、正しいデータのファイルが使用可能となる。
なお、本実施形態においてNAND型フラッシュメモリを用いた場合、フラッシュメモリの各ページにある付加領域の一部をシーケンス番号の格納先として利用してもよい。これにより、記憶媒体22の利用効率を高めることができる。
また、図11に示したフローチャートのステップ122において、次の領域にログを格納するためのブロックを割り当てたが、本発明はこれに限定されるものではない。他の方法として、書き込もうとするデータを、先頭ログを含む領域に収まる範囲の部分(以下「第1の部分」という)と残りの部分(以下「第2の部分」という)とに分けて複数のログとしてもよい。そして、第1の部分を先頭ログが含まれている領域に格納し、第2の部分を次の領域に格納してもよい。これにより、記憶媒体22中に使用されないブロックがなくなり、記憶媒体22の使用効率を高めることができる。
次に、ファイルシステムの使用を開始するときのファイル処理部21の動作について説明する。図12は、ファイルシステムの使用を開始するときのファイル処理部21の動作を示すフローチャートである。使用開始時には、ファイル処理部21は様々な処理を実行するが、ここでは本発明に関連する、先頭ログの範囲を探索する処理のみを説明する。
図12を参照すると、ファイル処理部21は、まず、記憶媒体22の全領域の領域管理情報からシーケンス番号を読み出し、シーケンス番号が最大の(分割された)領域を調べる(ステップ130)。次に、ファイル処理部21は、その領域内のログ領域を、先頭ログを探す対象に定める(ステップ131)。そして、ファイル処理部21は、そのログ領域内の全てのログのヘッダからバージョン番号を読み出す(ステップ132)。
次いで、ファイル処理部21は、得られたバージョン番号の中から最大のものを探し、最大のバージョン番号を有するログを先頭ログと定める(ステップ133)。先頭ログの判定はこのようにして行われる。
また、本実施形態のファイルシステムは、第1の実施形態と同様にガベージコレクションを行なう。
また、先頭ログを含む領域以外の領域の領域管理情報は、ガベージコレクションの際に消去する。図12のフローチャートにおけるステップ130では、消去された状態の領域管理情報は比較対照としない。
以上説明したように、本実施形態によれば、各ログ領域の領域管理情報の各々は、対応するログ領域と同じ領域の内部に配置されているので、領域管理情報とログとを連続したブロックとして1回の処理で書き込むことができるので、領域管理情報とログのいずれか一方のみが更新され、最大のシーケンス番号を有する領域に先頭ログが無いという矛盾した状態の発生を低減することができる。
また、上述した第1または第2の実施形態の書き込み処理において、新たに書き込むログのヘッダに、その時点での最後尾ログを示す参照情報を付加することとしてもよい。参照情報の例としては、記憶領域中の一意の位置を示すオフセットアドレスが考えられる。ファイルシステムの使用開始時に先頭ログを割り出したら、そのログのヘッダに記録された参照情報によって示されたログから順に先頭方向に進み、最初の有効なログが最後尾ログである。したがって、最後尾ログを割り出すとき、全てのログの有効か無効かを調べる必要が無くなる。
これによれば、ファイルシステムの使用開始時に最後尾ログの割り出しが必要な場合に、その参照情報を用いることで最後尾ログの割り出しにかかる時間を短縮することができ、ファイルシステムの使用開始にかかる時間を短縮することができる。
また、上述した第1または第2の実施形態のログ領域に対応するシーケンス番号を格納するエントリーに、シーケンス番号を書き込む時点での最後尾ログを示す参照情報を付加することとしてもよい。その場合、書き込み処理において、新たなログ領域にログを書き込むとき、その時点での最後尾ログを示す参照情報を付加すればよい。ファイルシステムの使用開始時に先頭ログを含むログ領域が分かったら、そのログ領域に対応するエントリーに記録された参照情報によって示されたログから順に先頭方向に進み、最初の有効なログが最後尾ログである。したがって、最後尾ログを割り出すとき、全てのログの有効無効を調べる必要が無くなる。
また、上述した第1または第2の実施形態のログ領域に対応するシーケンス番号を格納するエントリーに、先頭ログを検出するためのシーケンス番号(以下「第1のシーケンス番号」という)だけでなく、最後尾ログを検出するためのシーケンス番号(以下「第2のシーケンス番号」という)をも付加することとしてもよい。その場合、ファイル処理部21は、最後尾ログが替わるガベージコレクション処理において、最後尾ログがログ領域を跨いで替わったとき、新たな最後尾ログを含むログ領域に対応するエントリーに、替わる前の最後尾ログを含むログ領域の第2のシーケンス番号よりも大きな第2のシーケンス番号を記録すればよい。そして、ファイルシステムの使用開始時には、ファイル処理部21は、第1のシーケンス番号から先頭ログを特定するのと同様の方法で、第2のシーケンス番号から最後尾ログを特定すればよい。最新の最後尾ログを含むログ領域は、第2のシーケンス番号を参照することで知ることができる。そして、そのログ領域内の有効なログの中でバージョン番号が最も小さいログが最後尾ログである。
これによっても、ファイルシステムの使用開始時に最後尾ログの割り出しが必要な場合に、最後尾ログの割り出しにかかる時間を短縮することができ、ファイルシステムの使用開始にかかる時間を短縮することができる。
(第3の実施形態)
第1および第2の実施形態では、ログを記録するデータ領域とシーケンス番号等の管理情報を記録する管理領域との両方をそれぞれ複数に分割したが、第3の実施形態は、管理情報を記録する領域のみを複数に分割する。
図13は、第3の実施形態によるコンピュータシステムの構成を示すブロック図である。図13を参照すると、コンピュータシステムは、プロセッサ30、ファイル処理部31、および記憶媒体32を有している。プロセッサ30および記憶媒体32は、第1の実施形態におけるプロセッサ10および記憶媒体12と同様のものである。
ファイル処理部31は、第1の実施形態のファイル処理部11と同様に、プロセッサ30から記憶媒体32へのアクセスを仲介し、プロセッサ30の要求により記憶媒体32上のファイルの書き込みおよび読み出しを行う。
また、本実施形態のファイル処理部31で用いられるファイルシステムは“log−suructured”である。したがって、記憶媒体32上に既に記録されているファイル中のブロックに対する書き込み、すなわち“アップデート書き込み”であったとしても、ファイル処理部31は古いデータに上書きすることはせず、新たなログを作成して記憶媒体32上に追加する。
本実施形態のファイル処理部31が第1の実施形態と異なるのは、管理情報を記録する領域のみを複数に分割し、ログを記録する領域は分割しない点である。
図14は、第3の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。図14を参照すると、記憶媒体32の記憶領域は、管理情報記憶領域とデータ領域に分割される。そして、管理情報記憶領域は、さらに複数エントリーの管理領域0〜Mに分割される。
各管理領域には、データ領域に書き込まれたログの参照情報と、管理領域のシーケンス番号とが記録される。本実施形態でいうシーケンス番号は、第1の実施形態でいうシーケンス番号と異なり、ログの参照情報を書き込んだ順序を示す番号である。このシーケンス番号により各管理領域の新しさを知ることができる。ログの参照情報は、データ領域に書き込まれたログを示す情報であり、例えばオフセットアドレスにより示される。最も新しい管理領域にある参照情報により示されたログが先頭ログであると判断できる。ここでのログは第1の実施形態のログと同様、図3に示したようにヘッダ部およびデータ部からなる。
次に、本実施形態のコンピュータシステムの動作について説明する。
プロセッサ30からファイルの読み出しを要求されたファイル処理部31の動作については、第1の実施形態のファイル処理部11の動作と同様である。
次に、プロセッサ30からファイルの書き込みを要求されたファイル処理部31の動作について説明する。図15は、第3の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。ファイル処理部31は、プロセッサ30から書き込み要求を受けて書き込み動作を行う。
図15を参照すると、まず、ファイル処理部31は、既に記憶媒体32に格納されている先頭のログの次に、指定されたデータの書き込みに必要なブロックを確保する(ステップ140)。次いで、ファイル処理部31は、ログのヘッダ部に書き込むヘッダと、データ部に書き込むデータを作成する(ステップ141)。
次いで、ファイル処理部31は、ステップ140にて確保したブロックに、ステップ141で作成したヘッダおよびデータからなるログを書き込む(ステップ142)。
ステップ142にて書き込んだログが新たな先頭ログとなるので、ファイル処理部31は、管理情報記憶領域を更新する(ステップ143)。その際、ファイル管理部31は、各エントリーの中からシーケンス番号が最大のエントリーを探すことにより、その時点で最新の管理情報が記録されている管理領域のエントリーを調べる。そして、ファイル処理部31は、その次のエントリーに、新たに記録したログの参照情報と、最大のエントリーよりも大きな値のシーケンス番号とを記録する。
次に、ファイル処理部31は、ステップ142にて書き込んだログを先頭ログとし、書き込み対象のファイルおよびブロック位置に該当するログがあるか記憶媒体32中を検索し(ステップ144)、該当するログが見つかったか否か判定する(ステップ145)。
書き込み対象のファイルおよびブロック位置に該当するログが見つかれば、ファイル処理部31は、そのログの無効フラグをセットし(ステップ146)、処理を終了する。それが見つからなければ、ファイル処理部31は、そのまま処理を終了する。
次に、ファイルシステムの使用を開始するときのファイル処理部11の動作について説明する。図16は、第3の実施形態におけるファイルシステムの使用を開始するときのファイル処理部31の動作を示すフローチャートである。使用開始時には、ファイル処理部31は様々な処理を実行するが、ここでは本発明に関連する、先頭ログの範囲を探索する処理のみを説明する。
図16を参照すると、ファイル処理部31は、まず、記憶媒体32の管理情報記憶領域から最大のシーケンス番号を持ったエントリーを調べる(ステップ150)。次に、ファイル処理部31は、そのエントリーに記録されたログの参照情報(オフセットアドレス)を取得し、その参照情報の示すログを先頭ログと定める(ステップ151)。
次に、ファイル処理部31が書き込み処理を異常終了し、管理情報記憶領域とデータ領域とで最新のログに矛盾が生じた場合を考慮した動作について説明する。
ここでは、図15のフローチャートに示した書き込み処理において、ステップ142を終了した後でステップ143を行なう前に、ファイル処理部31の処理が異常終了したとする。その場合、管理情報記憶領域にて最大のシーケンス番号が付与されているエントリーに対応するログが実際の先頭ログではなく、それよりも先に実際の先頭ログがあるという状態が発生しうる。
書き込み処理が正常終了すると、データ領域に記録された先頭ログ以降の領域は、イレースされた状態か、先頭ログよりもバージョン番号の小さい前回の周回で記録したログがある状態のいずれかとなる。
そこで、管理情報記憶領域に記録されたエントリーにシーケンス番号から先頭と判断されたログ以降の領域を調べることとすればよい。ファイル処理部31は、管理情報記憶領域にて最大のシーケンス番号のエントリーを調べる。次に、ファイル処理部31は、シーケンス番号が最大のログ以降の領域を、イレースされた状態となるか、記録されているログのバージョン番号が小さくなるまで調べていく。そして、イレースされた状態の手前にあるログ、あるいはバージョン番号が小さくなったログの手前にあるログを先頭ログと定める。
さらに、シーケンス番号が最大のエントリーが先頭ログでなかった場合には、それまで最大であったシーケンス番号よりも大きなシーケンス番号と、その先頭ログの参照情報とを次のエントリーに記録する。これにより、記憶媒体32上の状態を正しくすることができ、次にファイルシステムを使用開始する際の先頭ログを検出する処理の時間が短縮される。
本実施形態によれば、“log−structured”ファイルシステムにおいて、データ領域にログを記録するとき、そのログの参照情報と記録順序を示すシーケンス番号とを含む管理情報のエントリーを管理情報記憶領域に記録するので、記憶領域全体を調べなくても管理情報記憶領域を参照することにより先頭ログを容易に検出することができる。また、管理情報記憶領域の複数のエントリーを周回して管理情報が記録されるので、管理情報記憶領域の消去回数を減らし、記憶媒体の使用可能期間を長くすることができる。
なお、本実施形態では、先頭ログの検出を例示したが本発明はこれに限定されるものではない。他の例として、本発明はLFSにおけるインデックスファイルの検出にも同様に適用可能である。その場合、インデックスファイルの位置を示すスーパーブロックにシーケンス番号を付与し、複数のエントリーに周回して記録することとすればよい。
第1の実施形態によるコンピュータシステムの構成を示すブロック図である。 第1の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。 ログ領域に格納されるログの構成を示す図である。 記憶媒体に格納されているデータの変化の一例を示す図である。 第1の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。 ファイルシステムの使用を開始するときのファイル処理部11の動作を示すフローチャートである。 初回の周回でログが書き込まれている記憶領域の状態を示す図である。 2回目以降の周回でログが書き込まれている記憶領域の状態を示す図である。 ログ領域の最後までログが書き込まれた記憶領域の状態を示す図である。 シーケンス番号記憶領域を更新する前に異常終了した場合の記憶領域の状態を示す図である。 記憶媒体にて、ログ領域の境界を跨いでログが格納された様子を示す図である。 第2の実施形態によるコンピュータシステムの構成を示すブロック図である。 第2の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。 第2の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。 ファイルシステムの使用を開始するときのファイル処理部の動作を示すフローチャートである。 第3の実施形態によるコンピュータシステムの構成を示すブロック図である。 第3の実施形態にて、記憶媒体に格納されるデータの配置イメージを示す図である。 第3の実施形態における、ファイル処理部の書き込み動作を示すフローチャートである。 第3の実施形態におけるファイルシステムの使用を開始するときのファイル処理部の動作を示すフローチャートである。
符号の説明
10、20、30 プロセッサ
11、21、31 ファイル処理部
12、22、32 記憶媒体
100〜107、110〜113、120〜129、130〜133、140〜146、150、151 ステップ

Claims (27)

  1. 順次行なわれるファイルへのアクセスを、ログを順次追加していくことで記録する、ログ構成のファイルシステムにおけるファイル管理方法であって、
    予め、記憶媒体の記憶領域を、ファイルのデータを含むログを格納するデータ領域と、前記データ領域に格納されたログに関するシーケンス番号を複数エントリー分だけ格納可能なシーケンス番号記憶領域とに分割するステップと、
    そのエントリーの書き込まれた順序を示す第1のシーケンス番号を新たなエントリーとして前記シーケンス番号記憶領域に順次追加して記録するステップと、を有するファイル管理方法。
  2. 前記第1のシーケンス番号に基づいて最も新しいエントリーを探し出し、該エントリーを用いて先頭ログを検出するステップをさらに有する、請求項1に記載のファイル管理方法。
  3. 前記データ領域は複数のログ領域からなり、前記シーケンス番号記憶領域は前記複数のログ領域に対応する複数のログ領域毎シーケンス番号記憶領域からなり、
    前記記憶媒体にログを追加するとき、該ログの追加に新たなログ領域を使用する必要があれば、新たな該ログ領域に対応するログ領域シーケンス番号記憶領域に新たなエントリーを記録する、請求項2に記載のファイル管理方法。
  4. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    先頭ログを検出するステップは、
    前記シーケンス番号記憶領域内のログ領域毎シーケンス番号記憶領域に記録された第1のシーケンス番号により最新のエントリーを探し出すステップと、
    前記最新のエントリーのログ領域毎シーケンス番号記憶領域に対応するログ領域を探索対象範囲として定めるステップと、
    探索対象範囲として定めた前記ログ領域内の全てのログの第2のシーケンス番号から最新のログを判定し、該ログを先頭ログとするステップと、を有する、請求項3に記載のファイル管理方法。
  5. 前記ログ領域毎シーケンス番号記憶領域に記録されるエントリーには、対応するログ領域の各々の最初に格納されたログの開始位置情報がさらに含まれており、
    前記先頭ログを検出するステップにおいて、
    前記ログ領域に格納されたログの境界を、前記開始位置情報を用いて認識する、請求項4に記載のファイル管理方法。
  6. 前記ログ領域毎シーケンス番号記憶領域の各々は、対応するログ領域の内部に配置されている、請求項3から5のいずれか1項に記載のファイル管理方法。
  7. 前記ログ領域毎シーケンス番号記憶領域が、対応する前記ログ領域内の、最初に前記ログの格納に使用される部分に隣接して配置されている、請求項6に記載のファイル管理方法。
  8. 前記記憶媒体にログを追加するとき、その時点での先頭ログの記録されたログ領域に、追加する該ログを収容できるだけの容量が残っていなければ、前記先頭ログの記録された前記ログ領域の次のログ領域に該ログを追加する、請求項3から7のいずれか1項に記載のファイル管理方法。
  9. 前記記憶媒体にログを追加するとき、該ログの位置を示すログ参照情報を前記第1のシーケンス番号と共にエントリーとして記録する、請求項2に記載のファイル管理方法。
  10. 先頭ログを検出するステップは、
    前記シーケンス番号記録領域内の各エントリーに含まれる第1のシーケンス番号から最新のエントリーを探し出すステップと、
    前記最新のエントリーに含まれているログ参照情報により示されるログを先頭ログとして検出するステップと、を有する、請求項9に記載のファイル管理方法。
  11. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    前記最新のエントリーに含まれているログ参照情報により示されるログの次以降の領域に、該ログの第2のシーケンス番号よりも新しい第2のシーケンス番号が付与されたログがあれば、最も新しい第2のシーケンス番号が付与されたログを先頭ログとする、請求項10に記載のファイル管理方法。
  12. 前記ログの有効か無効かが該ログのヘッダ内のフラグで示されており、
    前記ログを追加するとき、該ログにおける書き込み先と同じ書き込み先に対する過去のデータを含む既存の有効なログが前記記憶媒体上にあれば、該既存のログのフラグを無効にするステップをさらに有する、請求項1から11のいずれか1項に記載のファイル管理方法。
  13. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    前記記憶媒体の使用を開始するとき、書き込み先が同一の有効なログが複数あれば、その複数の中から前記第2のシーケンス番号により最も新しいログを見つけ、前記最も新しいログ以外のログを無効にする、請求項12に記載のファイル管理方法。
  14. 前記記憶媒体は、消去された状態で“1”となるフラッシュメモリであり、前記フラグが“1”で有効を示し、“0”で無効を示す、請求項12または13に記載のファイル管理方法。
  15. 前記ログは、該ログが追加された時点での最後尾ログを示す最後尾参照情報をヘッダ内に含んでおり、
    最後尾ログを検出する処理として、
    先頭ログのヘッダに含まれている最後尾参照情報により示されたログから順に先頭方向に有効なログを探し、最初に見つかった有効なログを最後尾ログと判断するステップをさらに有する、請求項12から14のいずれか1項に記載のファイル管理方法。
  16. 記エントリーは、該エントリーが書き込まれた時点での最新の最後尾ログを示す最後尾参照情報を含んでおり、
    最後尾ログを検出する処理として、
    最新のエントリーに含まれている最後尾参照情報により示されたログから順に先頭方向に有効なログを探し、最初に見つかった有効なログを最後尾ログと判断するステップをさらに有する、請求項12から14のいずれか1項に記載のファイル管理方法。
  17. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    最後尾ログがログ領域をまたいで替わるとき、新たな最後尾ログを含むこととなったログ領域に対応するログ領域毎シーケンス番号記憶領域に、最後尾ログを含むこととなった順序を示す第3のシーケンス番号を新たなエントリーとして記録するステップと、
    最後尾ログを検出する処理として、
    前記シーケンス番号記憶領域内のログ領域毎シーケンス番号記憶領域に記録された第3のシーケンス番号により、最も新しく最後尾ログを含むこととなったエントリーを探し出すステップと、
    前記最も新しく最後尾ログを含むこととなったエントリーのログ領域毎シーケンス番号記憶領域に対応するログ領域を探索対象範囲として定めるステップと、
    探索対象範囲として定めた前記ログ領域内の有効なログの第2のシーケンス番号から最も古いログを判定し、該ログを最後尾ログとするステップと、をさらに有する、請求項3に記載のファイル管理方法。
  18. 前記先頭ログを検出する処理として、
    探索対象範囲として定めた前記ログ領域から最新のログを判定するとき、該ログ領域内の終わりまでログが記録されており、かつ、その終わりに記録されているログの第2のシーケンス番号が該ログ領域の中で最も新しければ、探索対象範囲とした前記ログ領域の次のログ領域の最初のログの第2のシーケンス番号を確認するステップと、
    前記次のログ領域の最初に記録されているログの前記第2のシーケンス番号が、前記探索対象範囲とした前記ログ領域の終わりに記録されているログの前記第2のシーケンス番号よりも新しければ、探索対象範囲を前記次のログ小領域に変更して先頭ログを検出しなおすステップと、をさらに有する請求項4に記載のファイル管理方法。
  19. 探索対象範囲を前記次のログ領域に変更したとき、該次のログ領域に対応するログ領域毎シーケンス番号記憶領域に新たなエントリーを記録する、請求項18記載のファイル管理方法。
  20. 順次行なわれるファイルへのアクセスを、ログを順次追加していくことで記録する、ログ構成のファイルシステムを適用したファイル管理装置であって、
    ファイルを格納することのできる記憶領域を備えた記憶媒体と、
    前記記憶媒体に格納されたファイルにアクセスするプロセッサと、
    予め、前記記憶媒体の記憶領域を、ファイルのデータを含むログを格納するデータ領域と、前記データ領域に格納されたログに関するシーケンス番号を複数エントリー分だけ格納可能なシーケンス番号記憶領域とに分割しておき、そのエントリーの書き込まれた順序を示す第1のシーケンス番号を新たなエントリーとして前記シーケンス番号記憶領域に順次追加して記録するファイル処理部と、を有するファイル管理装置。
  21. 前記ファイル処理部は、前記データ領域が複数のログ領域からなり、前記シーケンス番号記憶領域が前記複数のログ領域に対応する複数のログ領域毎シーケンス番号記憶領域からなるように前記記憶領域を分割しておき、前記記憶媒体にログを追加するとき、該ログの追加に新たなログ領域を使用する必要があれば、新たな該ログ領域に対応するログ領域毎シーケンス番号記憶領域に新たなエントリーを記録する、請求項20に記載のファイル管理装置。
  22. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    前記ファイル処理部は、
    先頭ログを検出する処理として、
    前記シーケンス番号記憶領域内のログ領域毎シーケンス番号領域に記録された第1のシーケンス番号により最新のエントリーを探し出し、前記最新のエントリーのログ領域毎シーケンス番号記憶領域に対応するログ領域を探索対象範囲として定め、探索対象範囲として定めた前記ログ領域内の全てのログの第2のシーケンス番号から最新のログを判定し、該ログを先頭ログとする、請求項21に記載のファイル管理装置。
  23. 前記ファイル処理部は、前記ログ領域毎シーケンス番号記憶領域の各々を、対応するログ領域の内部に配置する、請求項21または22に記載のファイル管理装置。
  24. 順次行なわれるファイルへのアクセスを、ログを順次追加していくことで記録する、ログ構成のファイルシステムにおけるファイル管理をコンピュータに実行させるためのプログラムであって、
    予め、記憶媒体の記憶領域を、ファイルのデータを含むログを格納するデータ領域と、前記データ領域に格納されたログに関するシーケンス番号を複数エントリー分だけ格納可能なシーケンス番号記憶領域とに分割する手順と、
    そのエントリーの書き込まれた順序を示す第1のシーケンス番号を新たなエントリーとして前記シーケンス番号記憶領域に順次追加して記録する手順と、をコンピュータに実行させるためのプログラム。
  25. 前記データ領域は複数のログ領域からなり、前記シーケンス番号記憶領域は前記複数のログ領域に対応する複数のログ領域毎シーケンス番号記憶領域からなり、
    前記記憶媒体にログを追加するとき、該ログの追加に新たなログ領域を使用する必要があれば、新たな該ログ領域に対応するログ領域毎シーケンス番号記憶領域に新たなエントリーを記録する、請求項24に記載のプログラム。
  26. 前記ログのヘッダには、該ログが前記記憶媒体に書き込まれた順序を示す第2のシーケンス番号が含まれており、
    先頭ログを検出する処理として、
    前記シーケンス番号記憶領域内のログ領域毎シーケンス番号記憶領域に記録された第1のシーケンス番号により最新のエントリーを探し出す手順と、
    前記最新のエントリーのログ領域毎シーケンス番号記憶領域に対応するログ領域を探索対象範囲として定める手順と、
    探索対象範囲として定めた前記ログ領域内の全てのログの第2のシーケンス番号から最新のログを判定し、該ログを先頭ログとする手順と、をさらにコンピュータに実行させる、請求項25に記載のプログラム。
  27. 前記ログ領域毎シーケンス番号記憶領域の各々は、対応するログ領域の内部に配置されている、請求項25または26に記載のプログラム。
JP2005323720A 2005-11-08 2005-11-08 ファイル管理方法、装置、およびプログラム Expired - Fee Related JP4766240B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005323720A JP4766240B2 (ja) 2005-11-08 2005-11-08 ファイル管理方法、装置、およびプログラム
US11/585,092 US7680837B2 (en) 2005-11-08 2006-10-24 File management method for log-structured file system for sequentially adding and storing log of file access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005323720A JP4766240B2 (ja) 2005-11-08 2005-11-08 ファイル管理方法、装置、およびプログラム

Publications (2)

Publication Number Publication Date
JP2007133487A JP2007133487A (ja) 2007-05-31
JP4766240B2 true JP4766240B2 (ja) 2011-09-07

Family

ID=38005061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005323720A Expired - Fee Related JP4766240B2 (ja) 2005-11-08 2005-11-08 ファイル管理方法、装置、およびプログラム

Country Status (2)

Country Link
US (1) US7680837B2 (ja)
JP (1) JP4766240B2 (ja)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192227B (zh) * 2006-11-30 2011-05-25 阿里巴巴集团控股有限公司 一种基于分布式计算网络的日志文件分析方法和系统
US8209605B2 (en) * 2006-12-13 2012-06-26 Pado Metaware Ab Method and system for facilitating the examination of documents
US20080177782A1 (en) * 2007-01-10 2008-07-24 Pado Metaware Ab Method and system for facilitating the production of documents
US8010507B2 (en) * 2007-05-24 2011-08-30 Pado Metaware Ab Method and system for harmonization of variants of a sequential file
US20090228716A1 (en) * 2008-02-08 2009-09-10 Pado Metawsre Ab Method and system for distributed coordination of access to digital files
JP2009271848A (ja) * 2008-05-09 2009-11-19 Fujitsu Microelectronics Ltd ファイルシステム及びデータ管理方法
TWI389343B (zh) 2008-08-22 2013-03-11 Warm white light emitting diodes and their halide fluorescent powder
US9405939B2 (en) * 2008-10-07 2016-08-02 Arm Limited Data processing on a non-volatile mass storage device
JP5347657B2 (ja) * 2009-03-31 2013-11-20 富士通株式会社 データ記憶プログラム、方法、及び情報処理装置
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9021201B2 (en) 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US8966178B2 (en) 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US8825953B2 (en) * 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
WO2013140516A1 (ja) * 2012-03-19 2013-09-26 富士通株式会社 記録方法、記録装置及び記録プログラム
KR20140040998A (ko) 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
KR102050723B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
KR101979715B1 (ko) 2012-09-28 2019-05-17 삼성전자 주식회사 컴퓨팅 시스템 및 그 데이터 관리 방법
US9268502B2 (en) 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
US9201918B2 (en) 2013-11-19 2015-12-01 Netapp, Inc. Dense tree volume metadata update logging and checkpointing
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9152330B2 (en) 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US9256549B2 (en) 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9501359B2 (en) 2014-09-10 2016-11-22 Netapp, Inc. Reconstruction of dense tree volume metadata state across crash recovery
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
JP2016081483A (ja) * 2014-10-22 2016-05-16 富士通株式会社 分析プログラム、分析装置、及び分析方法
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
JP6445049B2 (ja) * 2015-01-20 2018-12-26 株式会社日立製作所 ログの管理方法及び計算機システム
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US10210168B2 (en) 2015-02-23 2019-02-19 International Business Machines Corporation Managing data in storage according to a log structure
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10565230B2 (en) 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US10394660B2 (en) 2015-07-31 2019-08-27 Netapp, Inc. Snapshot restore workflow
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9785525B2 (en) 2015-09-24 2017-10-10 Netapp, Inc. High availability failover manager
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
CN105468718B (zh) * 2015-11-18 2020-09-08 腾讯科技(深圳)有限公司 数据一致性处理方法、装置和系统
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US9830103B2 (en) 2016-01-05 2017-11-28 Netapp, Inc. Technique for recovery of trapped storage space in an extent store
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US9846539B2 (en) 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
WO2017130022A1 (en) 2016-01-26 2017-08-03 Telefonaktiebolaget Lm Ericsson (Publ) Method for adding storage devices to a data storage system with diagonally replicated data storage blocks
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9952767B2 (en) 2016-04-29 2018-04-24 Netapp, Inc. Consistency group management
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
KR102405593B1 (ko) * 2017-08-23 2022-06-08 삼성전자 주식회사 전자 장치 및 그의 데이터 운용 방법
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices
US10379948B2 (en) 2017-10-02 2019-08-13 Western Digital Technologies, Inc. Redundancy coding stripe based on internal addresses of storage devices
US10409511B1 (en) 2018-06-30 2019-09-10 Western Digital Technologies, Inc. Multi-device storage system with distributed read/write processing
US10725941B2 (en) 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US10901848B2 (en) 2018-08-03 2021-01-26 Western Digital Technologies, Inc. Storage systems with peer data recovery
US10824526B2 (en) 2018-08-03 2020-11-03 Western Digital Technologies, Inc. Using failed storage device in peer-to-peer storage system to perform storage-centric task
US10649843B2 (en) 2018-08-03 2020-05-12 Western Digital Technologies, Inc. Storage systems with peer data scrub
US10592144B2 (en) 2018-08-03 2020-03-17 Western Digital Technologies, Inc. Storage system fabric with multichannel compute complex
US10831603B2 (en) 2018-08-03 2020-11-10 Western Digital Technologies, Inc. Rebuild assist using failed storage device
US10877810B2 (en) 2018-09-29 2020-12-29 Western Digital Technologies, Inc. Object storage system with metadata operation priority processing
US10884879B2 (en) * 2018-10-18 2021-01-05 Oracle International Corporation Method and system for computing a quorum for two node non-shared storage converged architecture
US11182258B2 (en) 2019-01-04 2021-11-23 Western Digital Technologies, Inc. Data rebuild using dynamic peer work allocation
US10956062B2 (en) 2019-07-09 2021-03-23 International Business Machines Corporation Aggregating separate data within a single data log wherein single data log is divided in a plurality of blocks assigned to plurality of different streams
CN111597125B (zh) * 2020-05-09 2023-04-25 重庆大学 一种非易失内存文件系统索引节点的磨损均衡方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0218796B1 (en) 1985-08-16 1990-10-31 Dai-Ichi Seiko Co. Ltd. Semiconductor device comprising a plug-in-type package
KR970000214B1 (ko) 1993-11-18 1997-01-06 삼성전자 주식회사 반도체 장치 및 그 제조방법
JPH1031611A (ja) 1996-07-15 1998-02-03 Advantest Corp 不揮発性メモリ記憶媒体用ファイルシステム
GB9801373D0 (en) * 1998-01-22 1998-03-18 Memory Corp Plc Memory system
JPH11272537A (ja) 1998-03-20 1999-10-08 Victor Co Of Japan Ltd フラッシュ型メモリ及びその管理装置
JP2001101071A (ja) 1999-09-29 2001-04-13 Victor Co Of Japan Ltd フラッシュ型メモリを用いたデータ記憶装置及びフラッシュ型メモリのデータ管理方法
JP2001209567A (ja) * 2000-01-27 2001-08-03 Nec Eng Ltd ジャーナル書き込み方式
JP2003015928A (ja) 2001-07-04 2003-01-17 Nec System Technologies Ltd フラッシュメモリのデータ格納装置及びそれに用いるデータ格納方法
KR100453053B1 (ko) 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
RU2319227C2 (ru) * 2002-12-24 2008-03-10 Эл Джи Электроникс Инк. Способ запоминания с двойным протоколированием и носитель данных для него
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7451168B1 (en) * 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage

Also Published As

Publication number Publication date
US7680837B2 (en) 2010-03-16
JP2007133487A (ja) 2007-05-31
US20070106707A1 (en) 2007-05-10

Similar Documents

Publication Publication Date Title
JP4766240B2 (ja) ファイル管理方法、装置、およびプログラム
US7849253B2 (en) Method for fast access to flash-memory media
US20060168392A1 (en) Flash memory file system
US6865658B2 (en) Nonvolatile data management system using data segments and link information
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US5832493A (en) Flash file management system
KR100725390B1 (ko) 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
JP4740216B2 (ja) 不揮発性メモリ管理方法及び装置
US7908276B2 (en) Filesystem having a filename cache
US20080077590A1 (en) Efficient journaling and recovery mechanism for embedded flash file systems
US20070043900A1 (en) Flash memory management method and flash memory system
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
US20100306447A1 (en) Data updating and recovering methods for a non-volatile memory array
KR101114125B1 (ko) 낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법
JP2004303238A (ja) フラッシュメモリアクセス装置及び方法
JP4157501B2 (ja) 記憶装置
US20030046482A1 (en) Data management in flash memory
JP4130808B2 (ja) フォーマット方法
Ross Modeling the performance of algorithms on flash memory devices
US6928511B2 (en) Method and system for managing virtual memory
CN112395260B (zh) 一种数据存储方法及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110420

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110531

R150 Certificate of patent or registration of utility model

Ref document number: 4766240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees