您的位置首页 >科技要闻 >

嵌入式 JFFS2 和 SquashFS 是什么,两者核心区别怎么选

JFFS2、SquashFS 都是嵌入式 Linux 里专门给 Flash 用的压缩文件系统,最核心差别是 SquashFS 只读、压缩率高、启动挂载快,一般用来放系统固件;JFFS2 支持读写、自带日志、磨损均衡,用来存配置、用户数据,路由器、工控板经常把两者搭配 OverlayFS 一起用,SquashFS 放只读根文件系统,JFFS2 做可读写层,这也是 OpenWrt 这类设备最经典的组合方案。SquashFS 在 PC 上先打包生成镜像,烧录到 Flash 之后运行时不能直接修改里面文件,好处是占用空间小、稳定不容易被断电损坏;JFFS2 是日志型 Flash 文件系统,直接跑在 MTD 分区上,支持随时增删改文件,断电也不容易丢数据,但它挂载的时候要全盘扫描 Flash,Flash 容量越大,开机挂载越慢、占用内存越高,大 NAND Flash 现在基本被 UBIFS 替代。

JFFS2 基础介绍

  • 全称:Journaling Flash File System version 2,日志型 Flash 文件系统
  • 读写属性:可读写、支持压缩
  • 适配闪存:优先 NOR Flash,也支持小容量 NAND Flash
  • 内置能力:自带日志、垃圾回收、磨损均衡,断电保护
  • 优势:适合小容量分区、频繁改配置,掉电不容易损坏文件系统
  • 短板:挂载需要扫描整个分区,容量大时挂载慢、RAM 开销高;垃圾回收会带来性能波动

SquashFS 基础介绍

  • 全称:SquashFS,只读压缩文件系统
  • 读写属性:纯只读,运行时无法修改内部文件
  • 适配闪存:NOR、NAND、eMMC 都能用
  • 内置能力:支持 zstd、xz、lz4、lzo 多种压缩算法,压缩率优秀
  • 优势:挂载速度快、占用内存低、镜像体积小、天然防篡改,固件很稳定
  • 短板:不能在线修改,要改内容必须在主机上重新打包整个镜像再烧录

JFFS2 与 SquashFS 对比表

对比项JFFS2SquashFS
读写权限可读可写只读
压缩支持压缩支持压缩,压缩率更高
挂载速度慢,全盘扫描很快,不需要扫描
内存占用高低
掉电安全日志机制,有保护只读,不存在写入损坏
典型用途用户配置、参数、日志、Overlay 可写层根文件系统、固件、程序、静态资源
大容量 Flash 表现差,不推荐大于 32MB 分区不受这个限制,大容量也稳定
修改方式系统运行时直接读写电脑端重新打包镜像烧录

经典组合使用流程(OpenWrt 这类路由器)

  1. 在开发电脑上,先把系统程序、库文件打包成 SquashFS 镜像,烧录到 Flash 的只读分区。
  2. 设备启动,挂载 SquashFS 作为基础根文件系统。
  3. 另外划分一块 MTD 分区格式化为 JFFS2,作为 Overlay 可写层。
  4. 内核通过 OverlayFS 把两个文件系统合并,用户看到的是一个完整根目录。
  5. 用户修改配置、安装软件,改动不会写入 SquashFS,全部写到 JFFS2 分区里。
  6. 恢复出厂时,直接清空 JFFS2 分区,SquashFS 原始系统完好无损。

选型建议

  • 放固件、程序、静态文件,不想运行时被修改:优先 SquashFS。
  • 需要保存配置、日志、用户参数,运行时要读写:选 JFFS2(小 Flash)或者 UBIFS(大 NAND)。
  • 完整嵌入式产品:SquashFS + JFFS2/UBIFS + OverlayFS 是最成熟方案。
  • 大容量 NAND Flash,尽量不要用 JFFS2,挂载慢、内存开销大,换成 UBIFS。

小结

SquashFS 主打 “省空间、只读、稳定”,是放系统固件的;JFFS2 主打 “可读写、掉电安全”,用来存动态数据。两者不是竞争关系,嵌入式项目里经常搭配在一起,各司其职。

【常见问题】

问题 1:JFFS2 和 SquashFS 能不能单独替换使用?

回答 1:不能直接替换,JFFS2 支持读写,SquashFS 只读;如果把系统根文件系统只用 JFFS2,固件体积变大、开机变慢;只用 SquashFS 则没有地方保存配置,一般是组合使用。

问题 2:JFFS2 和 SquashFS 在 OpenWrt 里分别负责什么?

回答 2:OpenWrt 的系统程序、固件放在 SquashFS 只读分区,用户修改的配置、安装的软件包全部保存在 JFFS2 的 Overlay 可写分区。

问题 3:JFFS2 挂载慢是什么原因?

回答 3:JFFS2 开机挂载时需要扫描整个 Flash 分区里所有日志节点,重建文件系统结构,Flash 容量越大,扫描耗时越长,占用内存越高。

问题 4:SquashFS 运行中能不能修改里面的文件?

回答 4:SquashFS 是只读文件系统,设备正常运行时不能修改内部文件,想要修改只能在 PC 上重新打包 sqfs 镜像,再烧录到 Flash。

问题 5:JFFS2 和 SquashFS 都支持压缩,哪个压缩效果更好?

回答 5:SquashFS 压缩率更高,支持 xz、zstd 等高压缩算法,打包后的镜像体积更小,JFFS2 的压缩能力偏弱。

【参考资料】

[2026-10-28](嵌入式 Linux 文件系统:SquashFS 与 JFFS2 详解)Bootlin

[2026-09-12](OpenWrt 文件系统 Overlay、SquashFS、JFFS2 原理)CSDN

[2026-07-14](Flash 文件系统对比:JFFS2、SquashFS、UBIFS)강코의 코딩 일기

[2025-04-06](JFFS2、SquashFS、UBIFS 选型指南)DiskMFR

[2024-03-10](Linux 内核官方 SquashFS 文档)Linux Kernel Archives

【免责声明】

本文仅为嵌入式文件系统科普整理,不构成项目选型唯一标准;JFFS2、SquashFS 的内核支持、工具链、分区方案和硬件 Flash 类型强相关,正式产品开发请结合 Flash 容量、NOR/NAND 类型、内核版本实测验证。

今日大家都在搜的词: