Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435232
  • 博文数量: 53
  • 博客积分: 2746
  • 博客等级: 少校
  • 技术积分: 829
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-14 10:41
文章分类

全部博文(53)

文章存档

2016年(2)

2013年(1)

2012年(7)

2011年(10)

2010年(5)

2009年(20)

2008年(8)

我的朋友

分类: LINUX

2012-01-11 15:33:31

OpenWrt使用的文件系统主要是squashfs和jffs2,以及"连接"他们的mini_fo。

 

squashfs是一种只读的压缩文件系统,它的压缩率基本和gzip差不多。另外,也有使用LZMA作为压缩程序的squashfs项目,压缩率会更大一点。

 

jffs2是一种日志类型的文件系统,专为NorFlash设计。日志的意思是,新的写入信息总是现在现有内容的后面。这样带来两个显而易见的好处,一是做到了负载平衡(在整片Flash上循环的写入和擦除),二是做到了掉电保持(写入新的数据不需要擦除原来数据,而只是维护一个表来保持系统可以找到新写入的数据)。

 

mini_fo是一个很有意思的特殊文件系统,它由ELDK开发,也就是U-boot的开发小组。mini_fo的有意思之处就是使squashfs文件系统可写!其实,就是将修改后的文件保存在jffs2的分区上,维护一个表使系统可以找到最新的修改。

 

OpenWrt这样做的目的就是,得到一个体积很小的文件系统(需要压缩),然后它必须可写。

 

有了以上的理解之后,我发现新出现的UBIFS似乎更合适以上的目的。UBIFS的主要优点有:

 

  • 开源,并已经被纳入linux的主代码树,这意味着它的稳定性足可以使用到商业产品上。
  • 可量测性,意思就是说它的主要操作都是有能够知道确切时间的。形象化的好处就是挂载速度之类的提高了。
  • 支持 (回写),意思是异步写入(多个写缓冲)这样就提高了写入速度。也可以变成同步写入(类似jffs2)但是写入性能会对比jffs2有所下降。
  • 动态压缩(on-the-flight compression),意思是读取时解压,写入时压缩。有Zlib和LZO 两种压缩方式选择,LZO 压缩率会小一点,但是压缩/解压的速度相同。
  • 校验,使用CRS-32,当然也可以不使用。
  • 预读(),读的时候多读一些数据。
  • 等等 :)

 

估计,OpenWrt也会在适当的时候使用UBIFS,前提是内核版本支持UBIFS,至少2.6.27以上。

 

这篇转载自:

 

阅读(4969) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~