1、嵌入式,linux,系统中常用的文件系统,?,嵌入式文件系统:,?,?,?,?,?,?,?,Ext2/Ext3,Romfs,Ramdisk,Cramfs,Jffs/jffs2,Tmpfs,Yaffs,?,用户可以按照可靠性、健壮性和提高的功能的,需求来选择文件系统的类型。,Linux,对文件系统的要求:,?,?,?,?,?,要求文件系统在频繁的文件操作(比如,新建linux作为嵌入式操作系统的优势,删掉,,截断)下才能保持较高的读写性能,要求低碎片化。,Linux,下的日志文件系统(,XFS,ReiserFS,Ext3,等)能保,持数据的完整性,但消耗过多系统资源的弱点使之不能,成为嵌入式系统中的主流应用。而且这种都是专门为
2、硬,盘这类的储存设备优化,对于,flash,这类的储存介质并,不适用。,由于现有的嵌入式文件系统的碎片化的问题,大部份的,嵌入式设备只给用户提供了只读文件系统,给用户带来,不便。,嵌入式文件系统的载体是以,Flash,为主的储存介质,所,以为了延长,Flash,的使用寿命,应当尽量减低对,Flash,的,写入操作。,文件系统采用,DirectI/O,的话linux作为嵌入式操作系统的优势,使,I/O,效率显著增加,增,加了写入次数;但采用延时写的话,其实还能减少碎片,问题,假若加入日志系统的话,有不能保证数据的安全,性。这是一个矛盾。,闪存类一般使用以下几种文件系统:,CRAMFS,、,RAMFS,、,JFFS2,、,yaf
3、fs,,有时,也用,EXT2,,不过其疗效欠佳。,第二版扩充文件系统(,Ext2fs,),?,Ext2fs,是,Linux,事实上的标准文件系统,,它早已代替了它的前任,扩充文件系,统(或,Extfs,)。,Extfs,支持的文件大小,最大为,2,GB,,支持的最大文件名称大,小为,255,个字符,并且它不支持索引,节,点,(,包,括,数,据,修,改,时,间,标,记,),。,Ramdisk,文件系统,?,?,Ramdisk,是通过将计算机的,RAM,用作设备来创,建和挂装文件系统的一种机制,它一般用于无,盘系统(其实包括微型嵌入式设备,它只包含,作为永久储存媒质的闪存芯片)。,用,Ramdis
4、k,挂装,Ext2fs,通过使用,Ramdisk,的概念,可以在嵌入式设备,中创建并挂装,Ext2,文件系统(以及用于这一,目的的任何文件系统)。,RomFS,文件系统,?,?,uClinux,系统多采用,Romfs,文件系统,,Romfs,是,一种相对简单、占用空间较少的文件系统。空,间,的,节,约,来,自,于,两,个,方,面,:,首,先,内,核,支,持,Romfs,文件系统比支持,ext2,文件系统须要更少,的代码;其次,romfs,文件系统相对简单,在建,立文件系统超级块(,Superblock,)须要更少的,储存空间。,Romfs,是只读的文件系统,严禁写,操作,因而系统同时须要虚拟盘
5、(,RAMDISK,),支,持,临,时,文,件,和,数,据,文,件,的,存,储,。,只读文件系统,可以置于,ROM,空间,也可以在,系统的,RAM,中,嵌入式,linux,中常拿来作根文件,系统。,CRAMFS,文件系统,?,?,CRAMFS,中的数据已被压缩,属于只读性文件,系统,不能在闪存中更改。用户想获取数据时,,CRAMFS,先把数据送到,RAM,中,用户从,RAM,中,读取。通常,CRAMFS,的下层为,RAMFS,文件系统,,经更改过的文件都保存在,RAM,中。,RAMFS,和,CRAMFS,结合的缺陷在于,一旦出现,掉电等特殊情况linux 内核,保存在,RAMFS,中的更改数据,将全部遗失。,
6、?,因此,Linux,采用了新的文件系统,-JFFS2,,,它容许在闪存中直接进行更改,在掉电,时会手动保存数据。,JFFS2,的数据压缩方,式和,CRAMFS,一样,其数据可储存在全部,的闪存区域中,数据的写入和删掉分布,在很大一片区域中以避免同样的块会被,重复使用。,MTD,设备与,JFFS,文件系统,JFFS2,是比较常用的嵌入式日志文件系统。,JFFS2,由于有以下,这种,优点,而在无盘嵌入式设备中越来越受欢迎:,?,JFFS2,在磁道级别上执行闪存擦除写读操作要比,Ext2,文件系统好。,?,JFFS2,提供了比,Ext2fs,更好的崩溃掉电安全保护。当需,要修改少量数据时,,Ext
7、2,文件系统将整个磁道复制到显存,(,DRAM,)中,在显存中合并新数据,并写回整个磁道。这,意味着为了修改单个字,必须对整个磁道(,64KB,)执行读,擦除写类库,这样做的效率十分低。要是运气差,当,正在,DRAM,中合并数据时,发生了电源故障或其它车祸,那,么将遗失整个数据集合linux模拟,由于在将数据读入,DRAM,后就擦除,了闪存磁道。,JFFS2,附加文件而是重画整个磁道,而且具有,崩溃掉电安全保护这一功能。,MTD,设备与,JFFS,文件系统,?,?,这可能是最重要的一点:,JFFS2,是专门,为象闪存芯片那样的嵌入式设备创建的,,所以它的整个设计提供了更好的闪存管,理。,不仅,JFFS2,
8、之外,另外一种的嵌入式文件,系统的选择是,YAFFS2,。,Yaffs,与,jffs2,文件系统比较,Nand,上,yaffs,文件系统的优势,?,专门为,Nandflash,设计的日志文件系统,提供锈蚀平,衡和调电恢复的鲁棒性。,Yaffs,将文件组织成固定大小,(,512B,)的数据段,在进行文件更改时,总是先写入新,的数据块,之后将旧的的数据块从文件中删掉。,?,jffs,jffs2,文件系统的缺点:,?,不适宜大容量的,Nandflash,?,jffs,的日志通过,jffs_node,构建在,RAM,中,占用,RAM,空间:,对于,128MB,的,Nand,大约须要,4MB,的空间
9、来维护节点,?,启动的时侯须要扫描日志节点,不适宜大容量的,Nand,flash,?,FAT,系统没有日志,?,tmpfs,文件系统,当,Linux,运行于嵌入式设备上时,,设备,就成为功能齐全的单元,许多守护进程会在,后台运行并生成许多日志消息。另外,所有,内核日志记录机制,象,syslogd,、,dmesg,和,klogd,,会在,/var,和,/tmp,目录下生成许多,消息。因为这种进程形成了大量数据,所以,准许将所有那些写操作都发生在闪存是不可,取的。因为在重新引导时这种消息不须要持,久储存,所以这个问题的解决方案是使用,tmpfs,。,tmpfs,是基于显存的文件系统,它主要用于,减
10、少对系统的毋须要的闪存写操作这一惟一目的。,由于,tmpfs,留驻在,RAM,中,所以写读擦除,的操作发生在,RAM,中而不是在闪存中。为此,,日志消息写入,RAM,而不是闪存中,在重新引导,时不会保留它们。,tmpfs,还使用c盘交换空间来,储存,但是当为储存文件而恳求页面时,使用虚,拟显存(,VM,)子系统。,?,?,tmpfs,的优点包括:,a),动态文件系统大小,文件系统大小可以根,据被复制、创建或删掉的文件或目录的数目来,缩放。促使才能最理想地使用显存。,b),速率,由于,tmpfs,留驻在,RAM,,所以读,和写几乎都是瞬时的。虽然以交换的方式储存,文件,,I/O,操作的速率仍十分快。,tmpfs,的一个缺点是当系统重新引导时会遗失,所有数据。因而,重要的数据不能储存在,tmpfs,上。,?,