| 開発者 | アクシスコミュニケーションズ |
|---|---|
| フルネーム | ジャーナリングフラッシュファイルシステム |
| 他の | |
| サポートされている オペレーティングシステム | リナックス |
ジャーナリングフラッシュ ファイル システム( JFFS )は、 Linuxオペレーティング システムのNORフラッシュ メモリデバイスで使用するためのログ構造化ファイル システムです。これはJFFS2に置き換えられました。
デザイン
フラッシュ メモリ (具体的にはNOR フラッシュ) は、書き込み前に消去する必要があります。消去プロセスにはいくつかの制限があります。
- 消去は非常に低速です (通常、消去ブロックあたり 1 ~ 100 ミリ秒で、同じ領域からデータを読み取る場合よりも10 3 ~ 10 5倍低速です)。
- フラッシュを消去できるのは大きなセグメント (通常 64 KiB以上)単位のみですが、読み取りや書き込みは小さなブロック (多くの場合 512 バイト) 単位で行うことができます。
- フラッシュメモリは、消耗するまでに限られた回数(通常は 10 3~ 10 6 回)しか消去できません。
これらの制約が組み合わさって、フラッシュ メモリへの読み取りアクセスと書き込みアクセスのパターンの間に大きな非対称性が生じます。対照的に、磁気ハード ディスク ドライブは、ほぼ対称的な読み取りアクセスと書き込みアクセスを提供します。読み取り速度と書き込み速度はほぼ同じです (どちらもディスクの回転速度によって制約されるため)。また、小さなブロックまたはセクター (通常は 512 バイトまたは4096バイト) の読み取りと書き込みが可能で、磁気メディアの書き込みおよび再書き込み回数に実質的な制限はありません。
磁気メディアで使用するために設計されたext2やFATなどの従来のファイル システムでは、通常、データ構造をその場で更新し、変更のたびに inode やディレクトリなどのデータ構造がディスク上で更新されます。このようにウェア レベリングが集中的に行われないため、従来のファイル システムはフラッシュ デバイスでの読み取り/書き込みには適していません。
JFFS は、フラッシュ デバイスを循環ログとして扱うことでウェア レベリングを強制します。ファイルとディレクトリへのすべての変更は、ノードのログの末尾に書き込まれます。各ノードでは、メタデータを含むヘッダーが最初に書き込まれ、その後にファイル データ (ある場合) が書き込まれます。ノードは、ヘッダー内のオフセット ポインターによって連結されます。ノードは有効な状態で開始されますが、新しいバージョンが作成されると 無効になります。
ファイル システムに残っている空き領域は、ログの末尾と先頭の間のギャップです。この領域が少なくなると、ガベージ コレクターは有効なノードを先頭から末尾にコピーし、古いノードをスキップして、領域を再利用します。
参照
参考文献
出典
- Woodhouse, David (2003-07-09). 「JFFS2: ジャーナリング フラッシュ ファイル システム、バージョン 2」。SourceWare.org。2022年10 月 3 日閲覧。
外部リンク
- JFFS ホームページ (現在はメンテナンスされていません) 2017-01-20 にWayback Machineにアーカイブされました
- JFFS 開発者メーリングリスト 2010-08-21 にWayback Machineでアーカイブされました
