面向CPS的节点文件系统
杜晓舟1,3, 张宇皓2, 乔建忠1, 林树宽1    
1. 东北大学 信息科学与工程学院, 沈阳 110819;
2. 趋势科技中国研发中心, 南京 210012;
3. 总参通信工程设计研究院, 沈阳 110005
摘要

针对信息物理融合系统(CPS)的时间关键性和节点二级存储的必要性,在深入研究闪存文件系统和传感节点存储系统的基础上,提出一种级联日志策略和虚拟扇区映射技术相结合的方法来保证数据操作的可预测性,并优化文件架构和数据操作来提高文件系统效率.仿真测试表明,系统的顺序输入/输出(I/O)性能与随机I/O性能稳定,且代码映像较小,便于部署在存储资源有限的节点系统上.

关键词: 信息物理融合系统     节点操作系统     文件系统     虚拟扇区映射     级联日志    
中图分类号:TP316 文献标志码:A 文章编号:1007-5321(2014)05-0100-05 DOI:10.13190/j.jbupt.2014.05.021
The File System of CPS Oriented Node Operating System
DU Xiao-zhou1,3, ZHANG Yu-hao2, QIAO Jian-zhong1, LIN Shu-kuan1    
1. Department of Information Science and Engineering, Northeastern University, Shenyang 110819, China;
2. Trend Micro China Development Center, Nanjing 210012, China;
3. Communication Engineering Design and Research Institute, the General Staff of People's Liberation Army, Shenyang 110005, China
Abstract

Considering the characteristics of predictability for cyber physical systems (CPS) and the requirement of secondary storage for node systems, a research was carried for the existing flash file and sensor node file systems. A new node file system for CPS was designed, adopting virtual sector mapping technology and cascading page log strategy to ensure predictability, and also optimizing the file structures and data operations to improve efficiency. Experiments on the flash simulator show that the system has stable performances of sequence input/output (I/O) and random I/O. And the system image keeps small that means it is suitable to deploy on resource-limited nodes.

Key words: cyber physical systems     node operating system     file system     virtual sector mapping     cascading log    

CPS的核心思想是将计算、通信和控制(3C,computer,communication and control)等信息技术与物理系统深度融合,力图实现泛在的、网络化的计算、感知和控制.如同互联网最终革命性改变了人与人的联系,CPS将实现在物理实体间关系上的巨大变革[1].

一般认为,CPS由无线传感网(WSN,wireless sensor network)发展而来,并将其作为与物理世界直接交互的底层基础系统.节点系统作为其中的核心要素发挥着至关重要的作用,而操作系统又是节点上的核心系统.在WSN领域,针对节点操作系统已经有了大量研究成果[2],但研究目的大多集中在WSN资源有限性的设计上,对于CPS根本属性则缺少相应考虑[3].在已有工作的基础上[4],笔者对面向CPS节点操作系统的文件系统进行了针对性研究,并完成了文件系统的分析、设计和测试工作.

1 相关工作

节点通常包括微处理单元(MCU, micro control unit)、收发器、传感器(含模数转换器)、电源和存储单元几个组成部分.其中,MCU由微处理器、静态随机存储器(SRAM,static random access memory)和片上闪存组成.片上闪存为容量有限的节点系统提供了一个小的非易失性存储区域,可用于在有限时间周期内对执行代码和积累数据的存储. CPS对节点系统提出了诸多新挑战,应用类型的多样化也需要更大存储空间.因此,加入外部存储作为系统二级存储单元,并采用文件系统技术进行管理是节点系统发展的必然趋势.目前,在闪存硬件上构建文件系统主要有两种方式:基于块映射技术构建传统文件系统[5]和针对闪存物理属性设计的专用文件系统[6].前者一般通过文件转换层(FTL,flash translation layer)实现硬件抽象来屏蔽底层不同闪存的设备差异性,通过文件管理层向上层提供标准操作接口.后者根据闪存自身的物理特性,可针对性地实现文件系统的软件设计.虽然后者的文件操作性能明显优于前者,但是在平台移植性、应用通用性和开发便利性上存在劣势,因此并不适用于具有较高互联性要求的CPS节点系统.

2 CPS节点文件系统设计2.1 总体结构

节点文件系统采用模块化结构,如图 1所示.

图 1 文件系统组织结构

系统主要由以下模块组成:① 文件操作访问管理层,负责与上层操作系统及应用程序直接交互,并转发文件操作请求给元数据管理模块等;② 元数据管理模块,负责管理文件属性和描述等元数据信息,响应文件操作请求等;③ 全局操作管理模块,负责逻辑与物理扇区映射管理,并可进一步添加垃圾回收、损耗均衡等机制和策略;④ 存储管理模块,负责根据不同数据类型完成对物理数据块的操作请求响应,并启动对闪存的物理操作等;⑤ 硬件抽象层,负责抽象出不同闪存的逻辑特性,调用文件系统之外的设备相关层驱动代码去完成相应文件的物理操作,是操作系统硬件抽象层的组成部分,与存储管理模块共同构成文件系统顺序层.

2.2 虚拟扇区映射技术

文件系统的设计采用了虚拟扇区映射技术,保证了垃圾回收过程中指向非废弃块指针依然有效.即使所指向的数据块的物理地址分配发生变化,元数据和文件数据块内的指针依然有效.相比于现有的日志结构文件系统,可以显著减少垃圾回收代价.根据闪存特性,本研究选择了粗粒度的逻辑物理映射.粗粒度映射更适合于闪存,有助于在任何虚拟访问模式上都获得较高性能,同时也减少了内存中维持的映射表数量.

虚拟映射技术主要通过顺序层执行映射转换,它支持基本的文件操作,并被文件系统上层视为不变的存储块管理器,能根据要求将数据块写入,并返回其逻辑地址.在物理闪存上,顺序层将物理地址空间划分为L个大小固定的物理扇区,包括元数据扇区、数据扇区和垃圾回收扇区3种类型.这些扇区大小不变并且是擦除单元的整数倍.逻辑地址空间也被划分为l个尺寸相同的段,如果将保留用于垃圾回收的扇区数设为k,两者关系是l=L-1-kk≥1.每个逻辑段被映射到一个对应的物理扇区,逻辑段与物理扇区的大小相同.逻辑段一般由若干闪存文件系统(FFS,flash file system)块组成,每个FFS块又由若干闪存页面组成.块大小在使用时是固定的,但为了保证文件系统的灵活性,FFS块在编译前尺寸是可配置的,以增强文件系统的静态配置能力.初始化时所有的物理扇区都被格式化,处于已擦除状态,并且没有与逻辑段产生映射关联.文件系统运行后,随着文件系统请求分配更多的数据块用于存储,顺序层可能会占用更多的逻辑段并将它们映射到相应物理扇区,直到所有物理扇区都被使用.每个物理扇区都有一个扇区头,它被存储在扇区的第一个页面中(也可以根据具体情况配置,如NAND闪存可以存储到第一个物理页面的备用区中).扇区头用于标志扇区类型,也带有与逻辑扇区对应的逻辑段号.

2.3 级联页面日志策略

系统采用基于页面的顺序级联日志记录方法,有以下几点优势:① 适应传感网络中节点状态不稳定的情况,日志结构文件系统至少能够提供元数据级别的可靠性,并在系统发生故障时保证写入数据的完整性,这是采用非原位更新策略的优势;② 闪存先擦后写的特性,使用日志结构文件系统可以实现更好的擦写均衡;③ 传感数据适合以日志追加写入的方式存储.

将属于同一文件的分散日志组织起来,形成一个统一的日志文件.将更新的日志项直接写入日志而不是仅写入修改内容,以避免读取日志项时产生更新代价.更进一步的,考虑到文件更新时以整个数据块为单位的读写代价过大,笔者设计了基于页面的顺序级联日志记录方法.应该指出,顺序日志记录方法首先被应用在数据库系统中并取得了良好效果,本系统根据节点操作系统的要求与特点在文件系统中实现了这种方法.

系统将同一文件的日志记录写入到闪存中同一物理单元中,特别是在相同的擦除单元,并将这些日志块组织成日志文件.不同于传统日志文件系统使用位图方法进行日志项索引,研究采用区间索引方式构建日志项索引文件,如图 2所示.

图 2 级联日志文件组织结构

每个日志块由块头、日志索引和日志记录3部分组成,默认情况下日志索引表和日志块头共占一个物理页面,日志项数目和日志项大小可以跟据需要由应用程序配置,默认情况下组成每个物理页面日志项数量固定.每个日志块头中都包含指向下一个日志块(如果存在)的指针,并使用后向链表形式组织日志文件,以保证最新的日志记录位于最新的日志块内,避免每次进行更新与查找操作时需要遍历整个日志块链表进行查找.这样在系统访问带有日志的文件时,先查看日志记录中是否有修改的页面,若有则读取该日志项;若无则读取该日志项对应的元数据项.虽然读取的数据量会随着日志记录数量的增加而增长,但是由于它在相当程度上提高了文件整体写入性能,并且考虑到非对称读写速度的因素,因而该方法可以显著减少文件系统的写入和擦除操作.

系统的文件操作具有时间可预测性,下面给出系统主要文件操作的时间代价计算方法,原文件等价为M个日志项,日志文件有N个(NM),P为每个日志块中日志项数目,Q为每个原文件FFS块对应的日志项数目,则N个日志文件共需(N+P-1)/P个日志块.其他相关参数包括:R为日志项读操作代价,S为日志项查找操作代价,B为FFS块头读操作代价,R′为每字节读操作代价,W为每字节写操作代价,E为标志原文件每个块为废弃的操作代价,A为应用日志记录到数据页面的操作代价. Kd为原文件内容字节数,Kr为日志内容字节数,Kb为文件总块数.

假定最差情况下,日志文件中每个日志项都需要读取,则带日志文件数据读取操作的最差访问时间计算方法如下:

文件合并操作代价的计算方法如下:

3 文件系统测试与分析

测试时,考虑到平台差异性引起的数据偏差,选择闪存模拟器进行相应的数据测试.测试中时间数据的获得是基于计算在每次测试过程中操作数据的数量,并将这些数量乘以相应操作的时间延迟.需要指出,统计时间估计的函数不占用计算时间,相对于闪存访问时间可以忽略不计.

系统测试基于东芝128 MB闪存完成.该设备页面为512 byte,每个擦除单元包含32个页面.文件系统默认设置将其分为32个物理扇区,其中一个扇区为元数据扇区,一个扇区为垃圾回收扇区,逻辑段共有30个.每个扇区有64个FFS块,每块由4个擦除单元组成.

3.1 顺序I/O性能

测试中通过改变读写文件的大小来估算文件系统的顺序读写I/O性能.顺序读取操作是节点系统上最常见的文件操作类型,主要用于从文件系统中读取传感器数据.测试时,首先在文件中存储64 KB内容,然后使用顺序读取函数在记录文件上执行顺序读取,每次读取8 byte(一次性读取).将操作重复20次,平均实验结果如图 3(a)所示.可以观察到,文件系统的顺序读取性能随着文件增长呈线性增长趋势,性能保持稳定.

图 3 顺序I/O性能测试图

顺序写入操作是节点系统上另一类常见文件操作,主要用于将传感器数据顺序写入文件系统.需要注意的是,不同类型传感器数据的传感读数尺寸不同.标量数据的读取尺寸通常只是一、两个字节,而对于音视频等多媒体数据,数据体积与采样频率和采样时间等都密切相关.对于写操作,测试了两类实验数据:一类是不采用缓冲;另一类是采用64 byte大小的写入缓冲(默认情况下最大的写缓冲).系统以标量数据为例,首先在闪存中创建一个空文件,然后在每次写入8 byte(一次性写入)传感器数据追加到文件末尾,总共写入64 KB的数据,测试结果如图 3(b)所示.图中显示了数据顺序写入的平均性能,写入时间与写入字节数量也呈线性关系.因此本文件系统在顺序写入指标上具有较好的时间可预测性.

3.2 随机I/O性能

随机读取操作的目的是解决读取文件中间部分数据的需求,一般用于数据检索,动态重编程(重编程过程中接收到乱序的数据包)或已有文件的修改操作.由于文件本身可能已经带有日志,所以将随机读取分成有/无日志两种情况.每次测试以不同的方式随机生成零散文件(包括日志文件)重复进行文件操作20次,并计算平均数.在测试中,将文件指针分别设置为不同的偏移量,从每个偏移读取的字节数为固定的2 KB,写入缓冲大小为64 B.测试结果如图 4所示.

图 4 随机I/O性能测试图

图 4(a)可以发现,带日志文件比无日志连续文件的随机读操作性能要差.这是因为文件系统的写修改采用非原位写入,每次读取都要检查是否带有修改,若有则需要读取全部修改;否则只需读原文件,这种查找修改数据的操作带有时间代价.而在随机读取无日志文件操作测试图中有一个显著波动处(横坐标63处),这是因为当前FFS块数据存储未结束,需要读取下一个FFS块内容,由此发生的读取FFS块头并定位下一个闪存块位置的操作造成了时间延误.而这种情况下的最差执行时间与读取的数据量直接相关,是可以预知甚至计算出来的.

随机写操作在节点系统中不属于频繁应用,但在动态重新编程中需要更新本地配置和代码文件时非常重要.在测试中,文件系统首先将一个256 KB的目标文件写入闪存,然后随机选择文件某一偏移位置用2 KB的新数据进行修改,如图 4(b)所示.可以看到,对于有日志文件随机写入的性能表现较差,这是由于在写入时可能发生需要修改先前已经修改的日志项的情况.而对于无日志文件中需要创建日志的情况,日志的创建时间与内存中扇区信息表尺寸相关,所以首次修改操作时间代价稍高.随着日志文件体积增大,写入索引的时间也会随之变长.虽然带日志文件的读写性能具有一定波动,但操作的最差时间主要与数据块和日志项数目相关,是可以计算的,因此在时间因素上仍然是可预测的.

3.3 内存映像

尽管节点硬件成本在不断降低,但考虑到大规模部署的经济因素,节点内存始终属于稀缺资源.因此减小系统内存映像体积一直是节点文件系统的重要研究目标. 图 5为面向CPS文件系统(CPS-oriented FS)映像体积的示意图,并与WSN领域已有的Matchbox和Capsule文件系统进行了对比.

图 5 内存映像体积

Matchbox是节点领域比较早的文件系统,由于机制简单,优化有限,其ROM静态代码和RAM运行态代码体积都较大,大概是本系统的3倍. Capsule是一种跨设备的文件系统,使用了对象抽象的概念使得ROM映像有所减小,但其RAM缓存占用较多,本系统的ROM和RAM映像都约是其1/3大小.

默认配置下本系统中每个打开文件在RAM中约占用20 byte存储空间.系统支持根据硬件特点和操作类型设置缓冲区大小.例如,Mica2平台的SRAM约为10 KB,文件系统内存映像最多只能占据5%,则缓冲区最大只能设置为64 byte.如果控制内存映像体积增长,本系统还可以配置最大并发文件数量.默认配置中系统支持4个并发文件;如果减少到3个,则内存映像还可以降低10%左右.

4 结束语

针对CPS节点系统的特点和要求,设计了一个I/O性能稳定,内存映像较小,具有一定时间可预测性和平台扩展性的面向CPS节点文件系统.其中,通用硬件抽象层的设计符合CPS广泛互联的思想,但由于文件系统与硬件设备属性紧密相关,要想彻底解决高性能(高效)存储设备与低性能(低效)文件系统之间的矛盾,还需要深入理解存储设备的具体硬件属性并完成相应硬件差异性模块的分析与设计.

参考文献
[1] Lee E A. Cyber physical systems: Design challenges[C]//Object Oriented Real-Time Distributed Computing (ISORC), 2008 11th IEEE International Symposium on. Orlando: IEEE, 2008: 363-369.
[2] Farooq M O, Kunz T. Operating systems for wireless sensor networks: a survey[J].Sensors, 2011, 11(6): 5900–5930.
[3] Malkhi D, Corbato F J, Emerson E A, et al. Systems architecture, design, engineering, and verification, the practice in research and research in practice[C]//ACM Turing Centenary Celebration. San Francisco: ACM, 2012: 6.
[4] Du Xiaozhou, Qiao Jianzhong, Lin Shukuan, et al. The design of node operating system for cyber physical systems[J].Procedia Engineering, 2012, 29: 3717–3721. doi: 10.1016/j.proeng.2012.01.559
[5] Chung T S, Park D J, Park S, et al. A survey of flash translation layer[J].Journal of Systems Architecture, 2009, 55(5): 332–343.
[6] Leventhal A H. A file system all its own[J].Communications of the ACM, 2013, 56(5): 64–67. doi: 10.1145/2447976