YAFFS


YAFFS

 「YAFFS」  
Yaffs(さらに別のフラッシュファイルシステム)は、CharlesManningがAlephOne社のために設計および作成したファイルシステムです。 YAFFS 開発者
チャールズマニング
フルネーム
さらに別のフラッシュファイルシステム
他の
サポートされているオペレーティングシステム
Android、Firefox OS、Linux、Windows CE、pSOS、RTEMS、eCos、ThreadX
Yaffs1は、このファイルシステムの最初のバージョンであり、512バイトのページサイズ(+ 16バイトのスペア(OOB;帯域外)領域)を備えた当時のNANDチップ用に設計されました。作業は2002年に開始され、その年の後半に最初にリリースされました。最初の作業は、Toby ChurchillLtdとBrightstarEngineeringが後援しました。
これらの古いチップでは、通常、ページごとに2〜3回の書き込みサイクルが可能です。 YAFFSはこれを利用します。ダーティページは、特定のスペアエリアバイトに書き込むことによってマークされます。新しいNANDフラッシュチップは、最初の2Kページ(+ 64バイトOOB)、後の4Kの大きなページを持ち、書き込み要件が厳しくなります。消去ブロック(128キロバイト)内の各ページは順番に書き込む必要があり、各ページは1回だけ書き込む必要が
「writeonceルール」(「writeonceプロパティ」)を適用するストレージシステムを設計することには、いくつかの利点が
YAFFS2は、これらの新しいチップに対応するように設計されています。これはYAFFS1ソースコードに基づいていましたが、主な違いは、内部構造が512バイトのサイズを想定するように固定されておらず、書き込まれた各ページにブロックシーケンス番号が配置されていることです。このようにして、「write once」ルールに違反することなく、古いページを論理的に上書きできます。2003年後半にリリースされました。
YAFFSは、データの整合性を高い優先度として保持する堅牢なログ構造化ファイルシステムです。YAFFSの2番目の目標は、高性能です。YAFFSは通常、ほとんどの選択肢よりも優れています。また、ポータブルになるように設計されており、Linux、WinCE、pSOS、RTEMS、eCos、ThreadX、およびさまざまな専用OSで使用されています。バリアント「YAFFS / Direct」は、OS、組み込みOS、またはブートローダーがない状況で使用されます。コアファイルシステムは同じですが、上位レベルと下位レベルの両方のコードとNANDフラッシュハードウェアへのインターフェイスが簡単です。
YAFFSコードベースは、GPLと、AlephOneから入手可能な製品ごとのライセンスの両方でライセンスされています。
コンテンツ1 YAFFS1 YAFFS2
3 も参照してください
4 参考文献
5 外部リンク

YAFFS1
フラッシュメモリを単に消去する以外に、YAFFSファイルシステムを初期化するための特別な手順はありません。不良ブロックが検出されると、YAFFSはブロックのスペア領域の5番目のバイトをマークするスマートメディアスキームに従います。そのようにマークされたブロックは、それ以降、割り当てられないままになります。
ファイルデータを書き込むために、YAFFSは最初に、タイムスタンプ、名前、パスなどのファイルメタデータを説明するページ全体(YAFFS用語ではチャンク)を書き込みます。新しいファイルには一意のオブジェクトID番号が割り当てられます。ファイル内のすべてのデータチャンクには、スペア領域内にこの一意のオブジェクトIDが含まれます。YAFFSは、これらのチャンクの物理的な場所のRAMにツリー構造を維持します。チャンクが無効になると(ファイルが削除されるか、ファイルの一部が上書きされる)、YAFFSはチャンクのスペア領域の特定のバイトを「ダーティ」としてマークします。ブロック全体(32ページ)がダーティとしてマークされている場合、YAFFSはブロックを消去してスペースを再利用できます。ファイルシステムの空き領域が少ない場合、YAFFSは適切なページのグループを新しいブロックに統合します。次に、YAFFSは、元の各ブロック内のダーティページによって使用されていたスペースを再利用します。
YAFFSシステムがNANDフラッシュデバイスをマウントする場合、各ブロックにアクセスして、スペア領域をスキャンして有効なデータを確認する必要が次に、この情報を使用して、メモリ常駐ツリーデータ構造を再構成します。

YAFFS2
YAFFS2は概念がYAFFS1と似ており、ほとんど同じコードを共有しています。YAFFS2コードベースは、下位互換性を通じてYAFFS1データ形式をサポートします。主な違いは、YAFFS2は、最新のNANDフラッシュの「writeonce」要件を満たすために重要なフープを飛び越える必要があることです。
YAFFS2は、新しく書き込まれたすべてのブロックに、単調に増加するシーケンス番号をマークします。チャンクのシーケンスは、ブロックシーケンス番号とブロック内のチャンクオフセットから推測できます。これにより、YAFFS2はフラッシュをスキャンし、同一のObjectIDとChunkNumberを持つ複数のチャンクを検出すると、最大のシーケンス番号を使用してどちらを使用するかを選択できます。効率上の理由から、YAFFS2ではシュリンクヘッダーの概念も導入されています。たとえば、ファイルのサイズが小さいサイズに変更されると、YAFFS1は影響を受けるすべてのチャンクをダーティとしてマークします。YAFFS2は「1回書き込み」ルールのためにこれを行うことができません。YAFFS2は、代わりに「シュリンクヘッダー」を書き込みます。これは、そのポイントより前の特定のページ数が無効であることを示します。これにより、YAFFS2は、システムの再起動時にファイルシステムの最終状態を再構築できます。
YAFFS2は、NANDフラッシュのより抽象的な定義を使用しているため、さまざまな形状、不適切なブロック処理ルールなど、さまざまなフラッシュパーツで使用できます。
YAFFS2は後でチェックポインティングのサポートを追加しました。これは通常のマウントスキャンをバイパスし、非常に高速なマウント時間を可能にします。パフォーマンスはさまざまですが、2GBで3秒のマウント時間が報告されています。

も参照してください
image"
 無料のオープンソースソフトウェアポータル
ファイルシステムのリストJFFS JFFS2 UBIFS LogFS
NILFS、ログ構造化ファイルシステムの新しい実装
オープンNANDフラッシュインターフェースワーキンググループ

参考文献
^ フラッシュ消去ブロックを消去すると、そのすべてのビットが1に設定され、書き込みブロック(消去ブロックよりも小さいが、ファイルシステムブロックよりも大きい場合があります)を書き込むと、選択したビットが0に設定されます。0に書き込まれるビットが以前に書き込みブロックで1であった場合、ブロックへの1つまたは2つのさらなる書き込みが維持される可能性がすでに0であるビットに0を書き込むと、0が「スティック」になるリスクがつまり、ビットを1に戻すために複数の消去が必要になる可能性が 言うまでもなく、この複数書き込みの方法は一般にテストされておらず、フラッシュベンダーによって保証されており、 SLC以外のフラッシュテクノロジーではまったく機能しません。
^ ジャックB.デニス; グアン・ガオ; とVivekSarkar。「共同研究:メニーコアプロセッサを使用した高性能計算のためのプログラミングモデルとストレージシステム」。NS。4 ^ 「フラッシュファイルシステムベンチマークLinux3.1」。
^ 「YAFFS2仕様および開発ノート」。
http://www.yaffs.net/yaffs-history

外部リンク
公式サイト
最初のNAND固有のフラッシュファイルシステムであるYAFFSの紹介
Unyaffs:YAFFS2イメージを解凍する簡単なプログラム。
yaffs2utils:LinuxでYAFFS2イメージを作成/抽出するためのユーティリティ。”