LogFS

LogFSは、Linuxのスケーラブルなフラッシュファイルシステムである。
大容量デバイスでの使用を目的としています。 
これはによって書かれ、一部はによって後援されています。
LogFSは、2010年5月16日にリリースされたバージョン2.6.34のメインラインLinuxカーネルに導入されました。2016年12月のバージョン4.10の中に、「何年もメンテナンスされておらず、一見未使用」であったため、コードベースから削除されました。 
歴史.
2008年11月の時点で、LogFSはテストスイート全体に合格するほど成熟しており、2010年5月16日にリリースされたバージョン2.6.34で、「実験的」とマークされたメインラインのLinuxカーネルに含まれていました。 大規模なユーザーベースであり、2016年12月にカーネルから削除されました。
操作.
LogFSは、より大きなフラッシュメモリドライブを備えたJFFS2の難しさに動機付けられました。 LogFSはをドライブに保存します; JFFS2はそうではなく、マウント時にドライブ全体をスキャンし、ツリー全体をRAMにキャッシュする必要があります。 大規模なドライブの場合、スキャンには数十秒かかることがあり、ツリーは大量のメインメモリを使用する可能性があります。 LogFSはこれらのペナルティを回避しますが、システムの実行中はより多くの作業を行い、iノードツリーを保持するためにドライブのスペースの一部を使用します。
LogFSは、ファイルのiノードツリーをドライブに保存します。つまり、ファイルへの書き込み時に、ツリー内の各祖先ノードを再書き込みする必要があります。 これは、「さまようツリー」の更新によって行われます。 ツリーの最下位ノード（つまり、データ）が最初に書き込まれ、ルートiノードが更新されるまで、各ノードがツリーの昇順で書き込まれます。 ルートを最後に書き込むと、更新のアトミック性が維持されます。
は消去の単位であり、通常はファイルシステムブロックよりも大きくなります。 LogFSは、複数のファイルシステムブロックを単一のフラッシュメモリブロックにパックすることにより、この不一致を処理します。 フラッシュメモリブロックの最後にある「合計」エントリは、そこに格納されているデータを記録します。 フラッシュメモリブロックのすべてのファイルシステムブロックが移動または削除されると、消去して新しいデータに使用できます。
フラッシュメモリドライブのピーク使用量については、フラッシュメモリブロックが有用なデータでいっぱいになるようにデータを圧縮する必要があります。これはガベージコレクションによって実現されます。LogFSのガベージコレクション戦略はファイルデータが特定の方法でフラッシュメモリブロックに配置されることに依存しています: フラッシュメモリブロックは、iノードツリーの同じレベルのファイルデータのみを保持します。LogFSは、空のフラッシュメモリブロックを1つだけ使用して、ツリーのトップレベルをガベージコレクションできます。2つの空のフラッシュメモリブロックを使用して、ツリーの上位2レベルをガベージコレクションできます。また、N個の空のフラッシュメモリブロックを使用して、ツリーのNレベルすべてをガベージコレクションできます。アルゴリズムは最悪の場合はですが、最悪の場合はまれであり、アルゴリズムはほんの一握りのフラッシュメモリブロックを予約する必要があります。