openWRT作为嵌入式系统,使用到了多种文件系统来实现特定的功能。其常使用的文件系统有SquashFS、JFFS2和overlayfs等,每个文件系统都具有各自的特性,openWRT也正是据此来使用不同文件系统来实现各种功能需求。下面将对openWRT常用到的文件系统进行简单的介绍,并根据具体产品所使用的文件系统与空间布局关联性出发,进一步分析各种文件系统在openWRT中所扮演的角色。
1、openWRT主要使用的文件系统
以下逐一简单介绍这些文件系统的主要特性,部分特性也是openWRT选择的依据。
(1)SquahFS文件系统简介
SquashFS 是基于GPL协议开发的只读压缩文件系统。 早期版本使用gzip算法进行压缩,由于改进后的LZMA算法具有高压缩比、解压缩时仅需少量内存、解压和压缩速度快以及支持多线程等特点,使得该算法非常适合于嵌入式系统中。openWRT中使用了LZMA算法的SquashFS文件系统,其具有如下特点:
1) 占用更少的空间(据统计较之JFFS2文件系统可以节省20~30%的空间);
2) 可以支持FailSafe功能,即系统出现问题可以恢复出厂配置;
3) 只读文件系统;
4)空间浪费,当该文件系统中的某一文件被修改时,该文件会被拷贝到另一个分区(如JFFS2)中;
该文件系统在openWRT中主要是用于存储一些基础文件,如busybox、dropbear和iptables等,作为openWRT的只读部分以支持FailSafe模式。
(2)JFFS2简介
JFFS2是一种可写的日志结构文件系统,其可以使用LZMA算法进行压缩。具备如下的特点:
1) 可写,是日志结构类型文件系统,且具有损耗平衡;
2) 可压缩所以程序使用更少空间;
3) 读是以页(页大小512字节)为