CN101782918A - 针对实时性的媒体数据的档案系统vfs设计算法 - Google Patents
针对实时性的媒体数据的档案系统vfs设计算法 Download PDFInfo
- Publication number
- CN101782918A CN101782918A CN200910223492A CN200910223492A CN101782918A CN 101782918 A CN101782918 A CN 101782918A CN 200910223492 A CN200910223492 A CN 200910223492A CN 200910223492 A CN200910223492 A CN 200910223492A CN 101782918 A CN101782918 A CN 101782918A
- Authority
- CN
- China
- Prior art keywords
- disk
- file
- node
- data
- session
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种实时性媒体数据的档案系统设计算法。由文件系统自行对磁盘空间进行划分和格式化并由软件维护独立分区和磁盘信息。对数据的存取是按照大数据块的方式处理且对文件的分配储存在连续的磁盘位置上。通过计算磁盘能支持的带宽保证用户服务质量。对于文件的空间分配采用磁盘结构的空闲节点链表管理空闲节点。文件写入空间进行预先分配,完毕后动态调整,并且在磁盘结构的空闲节点链表中寻找最合适的空间进行分配。
Description
所属技术领域
本发明为磁盘文件系统及实时媒体数据存储传输技术领域。
背景技术
目前操作系统普遍采用的文件结构包括索引节点和数据。
索引节点: 又称I节点,在文件系统结构中,包含有关相应文件的信息的一个记录,这些信息包括文件权限、文件名、文件大小、存放位置、建立日期等。文件系统中所有文件的索引节点保存在索引节点表中。数据: 文件的实际内容。可以是空的,也可以非常大,并且拥有自己的结构。
以常用的ext2格式为例:ext2文件系统的数据块大小一般为1024B、2048B或4096B。
ext2文件系统的索引节点(inode)采用多重索引结构,主要体现在直接指针和3个间接指针。直接指针包含12个直接指针块,它们直接指向包含文件数据的数据块,紧接在后面的3个间接指针是为了适应文件的大小变化而设计的。假设数据块大小为1024B,利用12个直接指针,可以保存最大为12KB的文件,当文件超过12KB时,则要利用单级间接指针,该指针指向的数据块保存有一组数据块指针,这些指针依次指向包含有实际数据的数据块;假如每个指针占用4B,则每个单级指针数据块可保存1024/4=256个数据指针,因此利用直接指针和单级间接指针可保存1024*12+1024*256=268KB的文件。当文件超过268KB时,再利用二级间接指针,直到使用三级间接指针。利用直接指针、单级间接指针、二级间接指针、三级间接指针可保存的最大文件大小为:1024*12+1024*256+1024*256*256+1024*256*256*256=16843020KB,约16GB;若数据块大小为2048B,指针占4B,则最大文件大小为:2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792 KB约268GB;若数据块大小为4096B,指针占4B,则最大文件大小为:4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744KB,约4TB。
ext2文件系统在写入文件内容的同时并没有同时写入文件meta-data,其工作顺序是先写入文件的内容,然后等空闲时候再写入文件的meta-data,若发生意外,则文件系统就会处于不一致状态。
一般的操作系统不能高效处理音视频文件的读取,因为文件的存储由操作系统决定,操作系统存储数据时是根据系统设置的数据块的大小寻找空间将文件存储在不一定连续的位置再通过索引来定位的,这对日常文件处理是可行的,但对于实时视频媒体文件大容量,实时性要求高,用户并发大的情形,文件的分散存储就会导致以下几方面的问题:
1)读取效率低下,读取文件内容有可能需要多次索引定位,无法保证一次性及时返回所需要数据。
2)存取时间长,磁盘损耗大,有可能因为数据的分散存储导致频繁进行磁盘定位获取数据,影响磁盘寿命。
3)无法提高同时点播的用户数量,本身从磁盘读取数据就是一个并发的瓶颈,加上这种数据格式的低效性,无法提升服务能力,影响服务性能。
发明内容
本发明在于提供一种文件系统技术,该技术可以有效的解决实时媒体数据存储效率低下的问题,以及如何高效读取的问题。现有的各种文件系统,是针对通用数据而设计,而对于实时媒体数据的存储和读取并没有进行优化处理,该发明的技术针对实时媒体数据的特点进行分析并全新设计了算法,可以在保证数据安全稳定的前提下,能够提升存储和读取的性能。
本发明的技术方案:
系统架构:
参见说明书附图图1:VFS系统架构图
算法设计原理
Video File System是针对实时性的媒体数据所设计的档案系统。使用者可以从磁盘驱动器组(DiskArray)中存取连续的视讯数据。其系统的设计由下图所示,共分为Session Manager,Admission Controller,Disk Scheduler,Buffer Manager和Disk Stripping几个部份。
参见说明书附图图2:VFS组成结构
●Disk Layout
因为一般的视讯数据都很庞大,在Video File System中,我们用较大的block size来增加读取的I/O throughput。另外,对于一个视讯档案,我们会将之储存在连续的磁盘位置上。
因为整个Video File System的精神在于保证视讯档案的存取在一定的data rate内,因此必须考虑磁盘的存取时间。在磁盘搜寻时间(seek time)与延迟时间(latency time)上,我们都采取最坏情况(worst case)的考虑,我们定义了Server Bound SB(x),它表示对每一个session的I/O存取所需要的时间和。其定义如下:
Sb(n)是由CMFS[1]中所定义的upper bound function U(n)而来的,它代表了对磁盘读写连续的n个blocks所需的最长时间(包括seek time和rotation time),而和磁头一开始的位置以及第一个要存取的block number无关。以下便是Sb(n)的定义:
Sb(n)=Lseek-max+n(Lblock+Lseek-min)where block size=a track
其中Lseek-max表示worst-case seek time.Lseek-min表示1-track seek time.Lblock则表示读写一个block所需时间。
●Session Manager
此模块负责处理数据流的界面程序,负责接受IDM的命令。其功能如下:
1.建立读取的数据流。
2.建立写入的数据流。
3.移动读写的位置。
4.取得数据流缓存器的使用权。
5.归还数据流缓存器的使用权。
●Admission Control
本模块用来判断是否可以接受一个新的资料流的建立。因为如果数据流的建立没有任何的限制,则系统会无法负荷而导致已建立好的数据流在播放时会产生不连续的现象。新的数据流是否允许被建立,取决于新建立的数据流与已存在的数据流会部会超过磁盘的频宽。如果未超过,则该数据流便允许被建立。
我们定义了一个Client Bound CB(n),用来表示每一个客户端所要求的数据流消耗掉n个blocks的数据所需要的时间。
则Minimal Client Bound MCB择定义为:
如果在加入一个新的数据流后,整个Video File System仍能保证对于每一个客户端的数据流(包括新加入的数据流)的Server Bound所需要的时间比Client Bound所需要的时间短(即SB<MCB),即表示Video File System可以在比数据流消耗的速率还要快的时间内将数据塞入每一个客户端的buffer中,如此一来客户端的数据流便不会starvation。这样的话新的数据流便允许被加入,反之则予以拒绝。整个Admission Control的流程便建立在CMFS[1]中的Minimal WASprocedure上。
●Disk Scheduling Policy
此模块是排序的程序,负责安排数据流得处理顺序,并实际执行磁盘存取的工作。为了防止数据流的Starvation,此模块决定哪个数据流必须立即被执行。我们采取Minimal Policy,也就是重复的作minimal WAS procedure的动作,已决定任何一个轮回时每一个数据流能读取几个blocks,这样的好处是一定能满足Admission Control,避免任何一个资料流会有Starvation的情形。
●Buffer Manager
对于每一个数据流,都有一个相对应的buffer,负责存放由磁盘读出的数据(针对readsession而言),或者是即将写入磁盘的数据(针对write session而言),然后再将数据送给IDMserver或是写入磁盘中。Buffer都是连续的内存。我们会根据磁盘的频宽,用static bufferallocation policy去配置内存。
●Disk Stripping
当server的硬盘有两颗以上时,此模块可以将数个磁盘整合起来,让使用者感觉起来好像只有一颗。同时此模块会将数据加以分割,分别存放在不同的磁盘中。在读取时则可同时由多个磁盘驱动器读取数据。如此可以大幅的提升存取的速率。
算法数据结构
以下介绍几个重要的数据结构,包括Buffer Pool、Session、Accepted Session List、Started SessionList、WAS、Disk Struct(Super block)等。
●BUFFER POOL
●参见说明书附图图3:BUFFER POOL数据结构
A.数据会经由buffer在client和server间传送。每一个Buffer都指向一块连续的内存。另外Buffer内也有forw pointer和back pointer指向前后的Buffer。
B.BufferPool则是一个circular double linked list,指向所有的Buffer。
C.Buffer的数目以及其所指向的内存大小决定于实际上配置给整个Video File System的内存大小。
D.每一个数据流都会被配置一个buffer。
data | 指向连续内存的指针,用来存放数据。 |
forw | 指向前一个数据流的Buffer。 |
[0053]
back | 指向后一个数据流的Buffer。 |
●SESSION
参见说明书附图图4:SESSION数据结构
A.一个Session表示client对server端的一个读、写要求之处理。每一个session都必须保证数据能够实时的被读取。
buffer | 指向这个session的读、写数据所存放的Buffer。 |
disk_offset | server对这个session的buffer的I/O读写位置。 |
client_offset | client对这个session的buffer的I/O读写位置。 |
nempty | 在buffer中没有存有资料的block数。 |
nfull | 在buffer中有存有资料的block数。 |
sid | 这个session的识别码(ID)。 |
rate | client端所要求的data rate。 |
dir | 记录这个session是read或是write。 |
file | 这个session所存取的档案。 |
next_block | the position within the file in which the disk head will do |
block_sum | 整个I/O request的block数。 |
●Accepted Session List
参见说明书附图图5:Accepted Session List数据结构
A.当一个session已经通过了admission control,但是还没有开始启动,便将之加入Accepted SessionList中。
B.我们称第一个session为standby session。
●Started Session List
参见说明书附图图6:started session list数据结构
A.我们称第一个session为started session。
●WAS
参见说明书附图图7:WAS数据结构
current_was | 包括所有的started sessions。 |
next_was | 包括所有的started sessions和standby session。 |
nents | 指向下一个free entry。 |
bound | worset-case for this session‘s operation. |
nblocks | 读写的blocks数。 |
●DISK_STRUCT(super block)
A.DISK_STRUCT记录着有mounted到VFS所有信息。
B.Writing data to MFS,the DISK STRUCT is updated.
C.当VFS启动时它会读取所有的信息。
D.DISK_STRUCT的size是512bytes的倍数。
E inodes指向一个array,此array的每一个元素都记录着储存在磁盘内的一个档案的信息,包括在磁盘的起始位置(begin)、大小(size)、所在目录(parent)、同目录的下一个档案(next)以及最近被reference的信息(LRU)等。
F dir_inodes指向一个array,此array的每一个元素都记录着储存在磁盘内的一个目录的信息,包括该目录下的第一个档案(file_begin)、该目录下的第一个子目录(child)、该目录所在目录(parent)、该目录所在目录中的下一个目录(next)等。
参见说明书附图图8:disk_struct数据结构
本发明的有益效果是:
通过对磁盘空间重新进行格式划分,可以保证数据的安全性,因为数据分块不采用操作系统默认的处理方式,在操作系统里是无法对该数据进行操作的,这对一些强调数据安全的流媒体应用场合具有应用价值,尤其是那些应用于运营场合的流媒体服务,可以防止网络中一些恶意的破坏行为。
按照块结构组织数据的存储的算法,能较大幅度提高文件访问的效率,提升磁盘使用寿命。
在对磁盘进行初始化过程对其进行读取性能分析,判断磁盘能支持的最大带宽,有效保证用户播放质量。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是VFS磁盘文件系统系统架构图。
图2是VFS磁盘文件系统的组成结构。
图3是Buffer Pool数据结构说明。
图4是session数据结构说明。
图5是Accepted session list数据结构说明。
图6是started session list数据结构说明。
图7是WAS数据结构说明。
图8是disk_struct数据结构说明
具体实施方式
整个系统的设计执行流程与时间图参见说明书附图图9:VFS系统算法设计执行流程和时间图详细说明:
●create_read_session
A.呼叫check_acceptance(),之后会传回一个WAS pointer,那便表示这个session的建立要求已被接受,于是便将此session加入Accepted Session List中。
B.如果没有其它的session在等待,便呼叫begin_startup_mode()进入startup mode.
参见说明书附图图10:create_read_session设计执行流程
create_write_session
A.从VFS disk scheduling的论点来看,读、写是一样的。主要的不同是对initial conditions而言,write session的buffer是空的,而read session的buffer是满的。
B.当一个write session的要求传给admission control我们将这个档案的start position和filesize写到磁盘superblock的free node中,然后,我们再将这个write session加到Accepted SessionList中。
参见说明书附图图11:create_write_session设计执行流程图
●mfsSeekData
A.一开始我们必须检查这个session是否已经started。
B.然后将这个session自Started list移到Accepted Session List中。这个session的next block便设为所要seek的位置。
参见说明书附图图12:mfsSeekData设计执行流程图
●mfsGetbuffer
A.当client端得到data buffer的指标,client便可以针对这个buffer读写数据。
参见说明书附图图13:mfsGetbuffer设计执行流程图
●mfsReturnBuffer
A.如果这是一个read session而且第一个满的buffer数据已经被client读完了,便将这个buffer移到empty buffer list。
B.如果这是一个write session而且第一个空的buffer已经被client写满了,便将这个buffer移到full buffer list。
参见说明书附图图14:mfsReturnBuffer设计执行流程图
●find_was
A.一开始先假设所有的sessions都只读一个block,然后根据data duration的顺序排列出来。
B.检查total blocks是否有超过buffer space,如果有超过,我们便无法找到一个minimal workahead,便传回FALSE。
C.计算最坏情况下读取n个blocks所需的total bound time,如果total bound time比minimal dataduration time小,便传回TRUE,则n个blocks便是此session的minimal workahead。
D.如果total bound time仍比minimal data duration大,便对每一个session加一个block,重新到step A的动作。
●rt_sched
A.一开始,我们选择一个有minimal workahead的session,然后根据这个session的time bound和buffer size来决定下一个要服务的session。
●compute_wa
A.计算一个read session的workhead如下:
Workhead=(the number of full blocks)*(client read a block time)
B.计算一个write session的workhead如下:
Workhead=(The number of empty blocks)*(client write a block time)
Claims (9)
1.一种视频点播服务器的磁盘文件系统,其特征在于:
磁盘划分独立区域专门用于媒体文件存储,
磁盘的分区按照大数据块来分配,
自行对磁盘进行分区管理,
文件存储在磁盘上连续的数据区域,
对磁盘存取时间性能预先进行计算并保存信息。
2.根据权利要求1所述文件系统,其特征在于:操作系统进行磁盘分配时,对需要作为流媒体服务的存储区域的磁盘分区未进行格式化操作。
3.根据权利要求1所述文件系统,其特征在于:磁盘分区的基本单位是64K字节,其是系统的默认参数,实际应用中可进行调整,支持更大值。
4.根据权利要求1所述文件系统,其特征在于:对于未进行过格式化处理的磁盘分区,该文件系统自行进行磁盘分区和格式化等操作。
5.根据权利要求1所述文件系统,其特征在于:对于存储到该文件系统的文件,其内容存储在文件系统以块为单位的连续区域,而该文件系统在存储文件数据时将磁盘空间的最前面1M字节空间作为存储磁盘的分区信息。
6.根据权利要求1所述文件系统,其特征在于:在文件系统完成格式化以后,其能将磁盘的存取性能保存在磁盘的分区信息中。
7.一种视频点播服务器的文件存储处理算法,其特征在于:
采用空闲节点池管理磁盘结构的空闲节点链表上节点的动态分配,磁盘结构通过空闲节点链表管理链表上的空闲节点空间分配。
8.根据权利要求7所述的文件存储处理算法,其特征在于:空闲节点池采用双向链表结构来保存,其头节点不被分配使用。
9.根据权利要求7所述的文件存储处理算法,其特征在于:链表中的节点从空闲节点池中分配,文件创建时从链表中寻找合适大小的节点分配并调整相应节点大小,文件写操作完毕会对分配的节点尺寸更新为已经分配的大小减去文件的实际尺寸大小,如果该链表中的节点空间大小变为零,节点从链表中删除并回收到空闲节点池中,每次文件写操作完毕或者删除完毕需要对该节点列表进行空闲节点的合并判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910223492A CN101782918A (zh) | 2008-12-31 | 2009-11-17 | 针对实时性的媒体数据的档案系统vfs设计算法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200820184119.9 | 2008-12-31 | ||
CN200910223492A CN101782918A (zh) | 2008-12-31 | 2009-11-17 | 针对实时性的媒体数据的档案系统vfs设计算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101782918A true CN101782918A (zh) | 2010-07-21 |
Family
ID=42522917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910223492A Pending CN101782918A (zh) | 2008-12-31 | 2009-11-17 | 针对实时性的媒体数据的档案系统vfs设计算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101782918A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102355597A (zh) * | 2011-08-17 | 2012-02-15 | 北京天地云箱科技有限公司 | Http视频点播加速方法及加速系统、本地播放设备 |
CN102855327A (zh) * | 2012-09-18 | 2013-01-02 | 中国石油天然气股份有限公司 | 一种小型嵌入式文件存储管理系统 |
-
2009
- 2009-11-17 CN CN200910223492A patent/CN101782918A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102355597A (zh) * | 2011-08-17 | 2012-02-15 | 北京天地云箱科技有限公司 | Http视频点播加速方法及加速系统、本地播放设备 |
CN102855327A (zh) * | 2012-09-18 | 2013-01-02 | 中国石油天然气股份有限公司 | 一种小型嵌入式文件存储管理系统 |
CN102855327B (zh) * | 2012-09-18 | 2015-12-02 | 中国石油天然气股份有限公司 | 一种小型嵌入式文件存储管理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102999519B (zh) | 一种数据库的读写方法及系统 | |
RU2373571C2 (ru) | Системы и способы осуществляемого посредством доступа на уровне мелких структурных единиц управления данными, хранящимися в реляционных базах данных | |
CN101520805B (zh) | 一种分布式文件系统及其文件处理方法 | |
US7043479B2 (en) | Remote-directed management of media content | |
US7177883B2 (en) | Method and apparatus for hierarchical storage management based on data value and user interest | |
CN101027668B (zh) | 基于块映射表缓冲存储和虚拟文件系统的可堆叠文件系统模块的分布式存储结构 | |
US6961817B2 (en) | Volume management method and apparatus | |
US6223206B1 (en) | Method and system for load balancing by replicating a portion of a file being read by a first stream onto second device and reading portion with a second stream capable of accessing | |
CN109547566B (zh) | 一种基于内存分配的多线程上传优化方法 | |
JP4426280B2 (ja) | バックアップ/リストアシステム及び方法 | |
EP1902394B1 (en) | Moving data from file on storage volume to alternate location to free space | |
US20020040376A1 (en) | Process for managing data in which existing data item is moved to neighbor page before insertion or after deletion of another data item | |
US5745915A (en) | System for parallel reading and processing of a file | |
US20060010177A1 (en) | File server for long term data archive | |
CN103020174A (zh) | 相似性分析方法、装置及系统 | |
JP2003337721A (ja) | ストレージ構成自動変更装置及び方法 | |
CN109710572A (zh) | 一种基于HBase的文件分片方法 | |
JP2010176497A (ja) | ファイルサーバおよびファイル管理方法 | |
JP2002530776A (ja) | 並行的なdbmsテーブル操作のための装置及び方法 | |
JP2003513352A (ja) | データページ・アトミックユニットを使用する仮想テープボリューム管理装置 | |
US6594674B1 (en) | System and method for creating multiple files from a single source file | |
CN107679420A (zh) | 一种基于分布式文件系统的权限设置方法及系统 | |
Steinmetz | Multimedia file systems survey: approaches for continuous media disk scheduling | |
CN101794306B (zh) | 多类型录像文件分块存储系统及方法 | |
CN101782918A (zh) | 针对实时性的媒体数据的档案系统vfs设计算法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice |
Addressee: Seacomes Technologies Co., Ltd. Document name: Notification that Application Deemed to be Withdrawn |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100721 |