一种基于嵌入式文件系统的流式数据写入方法

文档序号:8223304阅读:546来源:国知局
一种基于嵌入式文件系统的流式数据写入方法
【技术领域】
[0001]本发明涉及数据存储技术领域,尤其涉及一种基于嵌入式文件系统的流式数据写入方法。
【背景技术】
[0002]随着互联网的迅速发展,存储技术及各种存储系统也得到了飞速发展,这些存储系统为大量的互联网信息及多媒体数据信息提供了方便、快速、高效的存储及访问服务。
[0003]嵌入式系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统,嵌入式系统资源有限,结构简单,鉴于其特殊性和专用性,很少在嵌入式系统中采用通用的操作系统和文件系统,而是针对特定应用场景为嵌入式系统定制文件系统。可嵌入式系统的应用范围非常广泛,不可能有一种文件系统在所有嵌入式系统中一统天下,适用于大到嵌入式服务器,小到嵌入式机顶盒的所有情况,而是根据系统应用环境和目标等来选择构建合适的文件系统。
[0004]文件系统写入数据的速率一方面取决于底层写接口的1性能,另一方面取决于文件系统自身的缓存策略和内部机制,而文件系统写入数据的并发能力则与其调度机制有关。
[0005]现有技术中,用户调用通用文件系统的1接口写入数据,而写入过程中文件系统的缓存策略和调度机制用户无从知晓也不可控制,而文件系统写入数据时往往并没有充分利用硬件资源,从而导致了数据写入磁盘的效率和吞吐不够高、并发性能不够强的问题。

【发明内容】

[0006]本发明实施例提供了一种基于嵌入式文件系统的流式数据写入方法,以解决现有技术中存在的数据写入效率低下、吞吐和并发性能不够高的问题。
[0007]为了实现上述目的,本申请实施例提供了一种基于嵌入式文件系统的流式数据写入方法,所述方法包括:
[0008]接收待写入磁盘的流式数据;
[0009]将接收的流式数据以链表结构进行组织,并将所述流式数据缓存于存储区,当缓存的流式数据的长度达到设定的阈值时,触发将缓存的流式数据写入磁盘的写操作;
[0010]从缓存中分离流式数据:
[0011]查询所述文件的元数据,获取存储文件内容的磁盘位置信息,根据所述磁盘位置信息,计算本次欲写入磁盘的流式数据长度,所述长度须为磁盘扇区大小的整数倍,且对应区段的数据在物理上和逻辑上均保持连续;
[0012]从缓存中取出所述长度的流式数据,取出数据的操作实则从缓存数据的链表中分离出一个所述长度的子链表:根据所述长度找到分离节点,从所述分离节点处截取流式数据,分离后的子链表对应的数据长度应与本次欲写入磁盘的流式数据长度相等;
[0013]将分离出的流式数据写入磁盘;
[0014]调用下层写接口将分离出的流式数据写入磁盘,写入数据时采用异步非阻塞模式,而非阻塞在将数据写入磁盘的过程中,待文件系统收到数据写入磁盘成功的消息后,尝试触发下一次写操作。
[0015]优选地,所述接收待写入磁盘的流式数据之前,所述方法还包括:
[0016]接收到一个新的流式数据写入请求后,判断系统中是否存在所述文件;
[0017]如果不存在,则需要请求方手动建立所述文件;
[0018]如果存在,则为所述请求新建一个写任务,获取所述文件的元数据,并为所述任务分配存储空间。
[0019]优选地,所述写请求的参数包括文件名、写入文件的起始偏移和写入文件的结束偏移。
[0020]优选地,所述方法还包括:
[0021]为所述写请求建立写任务,为所述写任务分配任务空间,将所述文件名的哈希值、待写入数据的起始偏移和待写入数据的结束偏移存入所述任务空间。
[0022]优选地,所述方法还包括对任务进行预处理:
[0023]如果所述待写入流式数据的起始偏移对应于磁盘扇区(头扇区)中的位置不在扇区头,则从磁盘中读出头扇区数据并缓存;如果所述待写入流式数据的结束偏移对应于磁盘扇区(尾扇区)中的位置不在扇区尾,则从磁盘中读出尾扇区数据并缓存。
[0024]优选地,将分离出的流式数据写入磁盘,所述方法还包括:
[0025]计算当前写操作对应的起始偏移和结束偏移;
[0026]如果所述当前写操作对应的起始偏移等于写任务的起始偏移,则所述当前写操作为第一次写操作;如果所述当前写操作对应的结束偏移等于写任务的结束偏移,则当前写操作为最后一次写操作。
[0027]优选地,执行第一次写操作时,所述方法还包括:
[0028]当第一次写操作对应的起始偏移对应于磁盘扇区中的位置不为扇区头时,则将第一次写操作对应的起始偏移与扇区头对齐,并利用缓存的头扇区数据填充第一次写操作中扩充的数据。
[0029]优选地,执行最后一次写操作时,所述方法还包括:
[0030]当最后一次写操作对应的结束偏移对应于磁盘扇区中的位置不为扇区尾时,则将最后一次写操作对应的结束偏移与扇区尾对齐,并利用缓存的尾扇区数据填充最后一次写操作扩充的数据。
[0031]优选地,执行写操作时,从缓存的流式数据中取出指定长度的待写数据,具体包括:
[0032]根据当次写操作欲写入磁盘的数据长度,找到分离节点,将缓存流式数据的链表从分离节点后截断,复制所述分离点,将复制的分离点作为剩余链表的头结点,调整原始分离节点和复制分离点中的数据起始偏移和数据长度。
[0033]优选地,文件系统收到上一批数据写入磁盘成功的消息后,所述方法还包括:
[0034]写操作既可在缓存的数据量达到设定阈值时被触发,也可由数据写入磁盘成功的消息触发,两种触发方式通过任务锁进行互斥,确保同一时间只有一个写任务被触发;
[0035]当文件系统收到上一批数据写入磁盘成功的消息后,尝试触发下一次写操作,若任务锁尚未被抢占,则下一次写任务触发成功;否则,触发失败。
[0036]本发明实施例提供的基于嵌入式文件系统的流式数据写入方法,将接收的流式数据以链表结构进行组织,且每次写入磁盘的流式数据为一段逻辑和物理上均连续的数据,确保了流式数据写入的时序正常,写入流式数据时采用异步1机制,还支持多核协作,提高了流式数据写入的效率。写入流式数据成功后,文件系统下层的写接口会发送写操作成功的通知消息,所述消息将触发下一次写操作。
【附图说明】
[0037]图1为本发明实施例一提供的基于嵌入式文件系统的流式数据写入方法流程图;
[0038]图2为本发明实施例一提供的基于嵌入式文件系统的流式数据写入方法的消息驱动流程图;
[0039]图3为本发明实施例一提供的流式数据以链表的结构缓存的示意图;
[0040]图4为本发明实施例一提供的写入流式数据的时序图;
[0041]图5为本发明实施例一提供的从缓存中取出数据时分离子链表的示意图。
【具体实施方式】
[0042]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。
[0043]实施例一
[0044]下面以图1为例详细说明本发明实施例一提供的基于嵌入式文件系统的流式数据写入方法,图1为本发明实施例提供的基于嵌入式文件系统的流式数据写入方法流程图,在本发明实施例中实施主体可以为文件系统。图2为本发明实施例提供的基于嵌入式文件系统的流式数据写入方法的消息驱动流程图。结合图1和图2所示,该方法包括如下步骤:
[0045]步骤101、接收待写入磁盘的流式数据;
[0046]流式数据指将数据看作是数据流的形式来处理,数据块是数据流的最小组成单元。这里接收的流式数据来自内容分发网络(Content Delivery Network, CDN)分发的流式数据。
[0047]具体地,在接收写入文件的流式数据之前,还包括以下步骤来为写请求创建一个新的与任务:
[0048]步骤11,接收到一个新的流式数据写入请求后,判断系统中是否存在所述文件;
[0049]写请求的参数包括文件名、写入文件的起始偏移和写入文件的结束偏移。
[0050]具体地,计算待写的所述文件的文件名的哈希
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1