一、Linux文件系统
目录结构
树形结构:倒立 —— 根目录 /
二、根文件系统概念
1. 是什么
内核第一个挂载的文件系统,包含Linux系统完整启动所需的目录结构和重要文件
其它所有文件系统进行挂载使用的载体
2.为什么
Linux完整启动的需要,进入用户态操作环境:VFS设计
提供了良好强大的文件系统扩展性
三、根文件系统形式
1. 要求
根文件系统能被内核找到并加载:存储介质驱动、存在地址问题
格式能被内核识别:initrd/cramfs/…
包含基本的目录结构与启动程序
2. 结构
/bin 存放二进制可执行命令的目录
/dev 存放设备文件的目录
/etc 存放系统管理和配置文件的目录
/home 用户主目录,比如用户user的主目录就是/home/user,可以用~user表示
/lib 存放动态链接共享库的目录
/sbin 存放系统管理员使用的管理程序的目录
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/proc 虚拟文件系统,可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
一般说来,只有/bin,/dev,/etc,/lib,/proc,/var,/usr这些需要的,而其他都是可选的。
Flash文件系统:jffs/jffs2和yaffs/yaffs2
在嵌入式系统中进行数据读写时,为了保证可靠性,我们可以选择哪些合适的文件系统?
一、Flash闪存类型
非易失存储器,可以对称为块的存储器单元块进行擦写和再编程
任何flash器件的写入操作只能在空或已擦除的单元内进行,在进行写入操作之前必须先执行擦除
1. NOR Flash: 非易失内存
应用:代码存储介质
特点:
芯片内执行(XIP, eXecute In Place)
低容量高成本: 1 - 16MB(常见)
读写速度:读取速度快,写入速度慢
块最大擦写次数:10W
2. NAND Flash:类似硬盘的块设备
应用:数据存储介质
特点:
极高的单元密度
读写速度:写入和擦除的速度很快
高容量低成本:16 - 1024MB(常见)
块最大擦写次数:100W
二、JFFS2
JFFS:1999
Journalling Flash File System, Version 2:2001-9-23,Linux 2.4.10
主要用于NOR Flash,可用于NAND Flash
1. 特性:
掉电保护与损耗平衡
垃圾回收机制
CRC循环冗余校验机制
挂载时间与内存消耗跟文件系统的大小成正比:文件系统越大,越慢,消耗越多 ————> 很差的扩展性
挂载需要进行全盘扫描,挂载一个 16M 的闪存有时需要半分钟以上的时间
在实际应用中,JFFS2 最大能用在 128M 的闪存上
三、YAFFS2
YAFFS:2002
Yet Another Flash File System, Version 2:2003
只能用于NAND Flash, YAFFS1支持512Bytes/Page的NAND Flash;YAFFS2支持2kBytes/Page的NAND Flash.
1.特性:
储存资料的基本单位是Chunk:Page
支持YAFFS/Direct使用:可以不需要VFS,甚至操作系统支持
ECC冗余校验机制
纠正单比特错误和检测双比特错误,而且计算速度很快,但对1比特以上的错误无法纠正,对2比特以上的错误不保证能检测。
更快的挂载速度,更少的内存使用
512B/page ————> 4KB RAM/1MB NAND
2KB/Page ————> 1KB RAM/1MB NAND
总结:
JFFS与YAFFS都是日志结构文件系统(LFS),保障了数据的可靠性与安全性,可以恢复数据。
一般来说,对于小于64MB的NAND Flash,可以选用JFFS2;如果超过64MB,用YAFFS2比较合适