网络学习机内置了高效率的的文件系统NOFS
引子
进来,发现一些朋友比较关心文件系统,特别是一些朋友在激烈批评noah产品的文件系统分区等,感觉有必要将文件系统实现的情况向关心的朋友们做个说明。 不可否认,在初期阶段noah的产品在用户可使用空间中,采取了分区的机制,这种机制从有无的角度起到了积极的正面的作用,那个时候,应当客观的讲是经验不足,导致了一些抱怨、遭受了一些批评。 在技术创新、领跑行业指导下开发的网络学习机,内置了非常先进、可靠、高效率的文件系统NOFS,NOFS= Noah optimized File System,是专门针对NorFlash介质。
文件系统简介
1.什么是文件系统? 所谓文件系统,它是操作系统中藉以组织、存储和命名文件的结构。磁盘或分区和它所包括的文件系统的不同是很重要的,大部分应用程序都基于文件系统进行操作,在不同种文件系统上是不能工作的。
2.文件系统大家族 常用的文件系统有很多,MS-DOS和Windows 3.x使用FAT16文件系统,默认情况下Windows 98也使用FAT16,Windows 98和Me可以同时支持FAT16、FAT32两种文件系统,Windows NT则支持FAT16、NTFS两种文件系统,Windows 2000可以支持FAT16、FAT32、NTFS三种文件系统,Linux则可以支持多种文件系统,如FAT16、FAT32、NTFS、Minix、ext、ext2、xiafs、HPFS、VFAT等,不过Linux一般都使用ext2文件系统。下面,笔者就简要介绍这些文件系统的有关情况: (1)FAT16 FAT的全称是“File Allocation Table(文件分配表系统)”,最早于1982年开始应用于MS-DOS中。FAT文件系统主要的优点就是它可以允许多种操作系统访问,如MS-DOS、Windows 3.x、Windows 9x、Windows NT和OS/2等。这一文件系统在使用时遵循8.3命名规则(即文件名最多为8个字符,扩展名为3个字符)。 (2)VFAT VFAT是“扩展文件分配表系统”的意思,主要应用于在Windows 95中。它对FAT16文件系统进行扩展,并提供支持长文件名,文件名可长达255个字符,VFAT仍保留有扩展名,而且支持文件日期和时间属性,为每个文件保留了文件创建日期/时间、文件最近被修改的日期/时间和文件最近被打开的日期/时间这三个日期/时间。 (3)FAT32 FAT32主要应用于Windows 98系统,它可以增强磁盘性能并增加可用磁盘空间。因为与FAT16相比,它的一个簇的大小要比FAT16小很多,所以可以节省磁盘空间。而且它支持2G以上的分区大小。朋友们从附表中可以看出FAT16与FAT32的一不同。 (4)HPFS 高性能文件系统。OS/2的高性能文件系统(HPFS)主要克服了FAT文件系统不适合于高档操作系统这一缺点,HPFS支持长文件名,比FAT文件系统有更强的纠错能力。Windows NT也支持HPFS,使得从OS/2到Windows NT的过渡更为容易。HPFS和NTFS有包括长文件名在内的许多相同特性,但使用可靠性较差。 (5)NTFS NTFS是专用于Windows NT/2000操作系统的高级文件系统,它支持文件系统故障恢复,尤其是大存储媒体、长文件名。NTFS的主要弱点是它只能被Windows NT/2000所识别,虽然它可以读取FAT文件系统和HPFS文件系统的文件,但其文件却不能被FAT文件系统和HPFS文件系统所存取,因此兼容性方面比较成问题。 (6)ext2 这是Linux中使用最多的一种文件系统,因为它是专门为Linux设计,拥有最快的速度和最小的CPU占用率。ext2既可以用于标准的块设备(如硬盘),也被应用在软盘等移动存储设备上。现在已经有新一代的Linux文件系统如SGI公司的XFS、ReiserFS、ext3文件系统等出现。
文件系统评价
1. FAT系文件系统,FAT=File Allocateion Table,FAT表项占用12、16、32bit,对应数据区clust簇,一个簇=1、2、4、8、16、32等不同的扇区。在FAT文件系统中,根目录是文件目录登记项的开始,每个一个文件在目录数据结构中,会有一个FAT指针指向该文件第一个FAT,这个FAT就是文件数据所在的簇号;而在FAT表中对应的表项上,会记录文件数据的下一个簇号或者标记为结束。FAT文件系统最大的缺点是,根目录和FAT固定在特定的扇区,如果这些区域出了问题,会导致整个文件系统的毁灭;另外FAT是链状的,在读写文件是,如果频繁移动文件指针(读写起点位置),可能对导致速度大幅度下降,这对上百兆主频的PC是没有问题的,但是对只有几兆主频的潜入式系统,无疑是致命的。
2. Linux家族文件系统,超级块记录文件系统相关信息,用i-node结构表示文件数据,用bitmap表示块空闲。超级块和目录项可以动态放在不同扇区中,bitmap能快速裁决多人使用申请,i-node分为直接块、一次间接块、二次间接块、三次间接块等,能够通过一个算法快速定位文件指针到希望读写的扇区,比起FAT链要快很多。 Linux家族文件系统的弊端是超级块以及i-Node在PC的内存中维持了一个副本,在副本没有会写前如果突然短电,会导致文件系统产生不一致性的破坏,此时需要做文件系统检查和修复,相信使用unix、linux或者Win2k,XP的朋友都有这方面的经验。
NOFS的设计
NOFS在开发时,规划者是对FAT、Linux文件系统有丰富的开发经验,并从RAM文件系统开始到NorFlash文件系统以及NandFlash文件系统前后进行了多个文件系统规划和开发的资深技术专家,考虑到NorFlash介质的特点,提出了如下目标: 1). 可靠。任何状态下保证文件系统不受破坏,包括读写是突然掉点,甚至写时强制Reset,都要保证文件系统。 2). 活动超级块,超级块是NOFS的核心管理信息区,如果固定在特定的扇区,一旦Flash介质损坏,将产生严重后果,活动的超级块由于可以定位到不同的扇区,所以,可以避免文件系统因为超级块失效导致崩溃。 3). 速度。i-Nod结构和bitMap位图,实现文件快速数据读写。 4). 扇区写均匀性控制机制,Flash介质都有写次数的寿命,比如100000次可能会损坏,这种特性在磁盘文件系统中是没有考虑的,因此无论FAT或者Linux的文件系统,在资源分配是都遵从从头到为搜索自由块给申请者使用的策略,这种策略对FLash潜在的威胁是前面的扇区可能已经写穿了,后面的扇区还是处女扇区。均匀性控制机制就是确保每个扇区都写一遍,然后在从头到尾搜寻第二遍,这种机制是非常smart的。 5). QC。品质控制,NOFS在开发完成后,专门开发了脚本式测试解释器,通过在PC上进行remote控制、加载测试脚本、现场分析等方式,进行了前后2名测试人员全程测试6个月。 一般来讲,一个文件系统要稳定下来,需要一年以上甚至更常的时间。但是,至少,NOFS是一个非常重要的开端。
(http://www.sungday.com)
|