Journaling Flash File System(または JFFS)は Linux オペレーティングシステム上の NOR フラッシュメモリデバイス上における利用向けのログ構造ファイルシステムである。JFFS は JFFS2 によって置き換えられてきている。 フラッシュメモリは磁気ディスクとはまったく異なるアクセス上の制約がある。特に、フラッシュメモリを消去することは ext2 のようなファイルシステムは典型的には、すべての更新の後に inode やディレクトリのようなデータ構造をディスク上で更新して、適当な位置でデータ構造を更新する。このようにウェアレベリングが大きく欠落しているため、従来のファイルシステムがフラッシュデバイス上での読み書きの利用に対して不向きになっている。 JFFS はフラッシュデバイスを循環ログとして扱うことでウェアレベリングを強化している。ファイルやディレクトリへのすべての変更はノード内のログの末尾に書き込まれる。個々のノード内では、メタデータを含むヘッダが最初に書き込まれ、次にファイルデータがあれば書き込まれる。ノードはヘッダ内のオフセットポインタでつながれている。ノードは最初有効として始まり、より新しいバージョンのノードが作成されたとき廃止になる。 ファイルシステムに残っている自由空間はログの先頭と末尾の間のすき間である。これが少なくなると、ガベージコレクタが先頭から末尾まで有効なノードをコピーし、廃止されたノードを飛ばす。このようにして空間を回収する。
設計
書き込む前に必要である
遅い
大きな(通常 64 KiB 以上)セグメントで行わなければならない
ある回数だけ行うことができる(典型的には100万回未満)
欠点
マウント時に、ファイルシステムのドライバは inode チェーン全体を読み込んで、メモリ中に保たなければならない。これは非常に遅くなりうる。JFFS のメモリ消費はファイルシステム内のファイル数にも比例する。
循環ログの設計は、静的かどうかにかかわらず、ファイルシステム内のすべてのデータが再書き込みされるという意味である。これは多くの必要ない消去を生み出し、フラッシュ媒体の寿命を減らす。
関連項目
フラッシュファイルシステム
JFFS2
YAFFS
脚注
Woodhouse, David. ⇒JFFS2: The Journalling Flash File System, version 2.
外部リンク
“Flash Filesystems for Embedded Linux Systems”. 2012年12月5日時点の ⇒オリジナルよりアーカイブ。2012年12月5日閲覧。
⇒JFFS documentation and official mailing list
歴
Advanced Disc Filing System(英語版)
AdvFS(英語版)
APFS
Bcachefs
Be File System(英語版)
Btrfs
CrossDOS(英語版)
Disc Filing System(英語版)
Episode(英語版)
EFS
HPFS
ext
ext2
ext3
ext3cow
ext4
FAT
FAT12
FAT16
FAT32
exFAT
Files-11
HAMMER
HFS
HFS Plus
IBM General Parallel File System
JFS
Macintosh File System(英語版)
MINIX
NetWare File System(英語版)
NILFS
Novell Storage Service
NTFS
QFS
QNX4FS
ReFS
ReiserFS
Reiser4
SpadFS(英語版)
UBIFS
UFS
VERITAS File System
Write Anywhere File Layout(英語版)
XFS
Xsan
ZFS
光ディスク / 磁気テープ