一种光盘存储系统中文件存取方法及装置制造方法

文档序号:6547682阅读:213来源:国知局
一种光盘存储系统中文件存取方法及装置制造方法
【专利摘要】本发明适用于光盘存储【技术领域】,提供一种光盘存储系统中文件存取方法及装置,存取方法包括写文件方法和读文件方法,其中所述写文件方法包括:获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组;根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘。本发明通过文件自动组合分割方法,实现文件的自主划分组合分割以适应光盘容量,将批量光盘虚拟成线性存储空间,提高了光盘的空间利用率,从而使用户忽略底层光盘设备的容量边界,方便用户的使用以及系统的管理,提高光盘存储系统的自动化程度。
【专利说明】一种光盘存储系统中文件存取方法及装置
【技术领域】
[0001]本发明属于光盘存储【技术领域】,尤其涉及一种光盘存储系统中文件存取方法及装置。
【背景技术】
[0002]大数据时代数据增长速度不断提升,进而对于存储容量和性能产生巨大压力。其中越来越多重要数据需要长期保存。其中光盘存储是一种廉价的数据长期保存方式。
[0003]⑶光盘的最大容量大约是700MB,DVD盘片单面4.7GB,最多能刻录约4.59G的数据(因为DVD的IGB = 1000ΜΒ,而硬盘的IGB = 1024MB)(双面8.5GB,最多约能刻8.3GB的数据),蓝光(BD)的则比较大,其中册0¥0单面单层1568、双层3068 ;BD单面单层25GB、双面50GB、三层75GB、四层100GB。日本东京大学的研究团队已经发现一种材料,可以用来制造更便宜、容量更大得多的超级光盘,可以储存的容量是一般DVD的5千倍。
[0004]光盘存储系统是通过光盘驱动器存取光盘数据的计算机设备。光盘存储系统有两种组成方式,分别为光盘驱动器和光盘库系统。光盘驱动器能够存取光盘介质上的数据,并通过数据接口和主机系统实现数据通讯。而光盘库系统通常由一个或者多个片匣,一个或者多个光盘读写驱动器,光盘库控制器以及与之相对应的机械光盘交换装置组成,光盘库能够从批量光盘自动选择光盘并装载到光盘驱动器中。 [0005]利用光盘存储系统存储数据时,文件的操作受光盘特性或光盘存储系统特性的限制。在使用现有光盘库系统写文件时,若单个文件的大小超过单张光盘的容量,则需要人为的将文件进行分割以适应光盘容量;若文件大小小于单张光盘的容量,需要人为的对文件进行组合以提高光盘空间利用率。在使用现有光盘库系统读文件时,若读取的文件超过单张光盘的容量,则需要文件的各个部分,人为的合成源文件。显然在需要读写文件时,通过人工划分文件以及合并文件效率低下,不便于管理。

【发明内容】

[0006]鉴于上述问题,本发明的目的在于提供一种光盘存储系统中文件存取方法及装置,解决现有人工分割文件、合并文件效率低下、不便管理的技术问题。
[0007]一方面,所述光盘存储系统中文件存取方法包括写文件方法和读文件方法,其中所述写文件方法包括:
[0008]获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割;
[0009]根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表;[0010]所述读文件方法包括:
[0011]根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件;
[0012]通过查找地址映射表,获得各部分文件所在的物理地址;
[0013]根据所述物理地址在相应光盘中读取文件数据;
[0014]将获取到各部分的文件数据进行合并,得到源文件。
[0015]另一方面,所述光盘存储系统中文件存取装置包括读文件装置和写文件装置,其中所述写文件装置包括:
[0016]分组单元,用于获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割;
[0017]分割写入单元,用于根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表;
[0018]所述读文件装置包括:
[0019]分割查找单元,用于根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件;
[0020]地址查找单元,用于通过查找地址映射表,获得各部分文件所在的物理地址;
[0021]数据获取单元,用于根据所述物理地址在相应光盘中读取文件数据;
[0022]数据合并单元,用于将获取到各部分的文件数据进行合并,得到源文件。
[0023]本发明的有益效果是:本发明通过文件自动组合分割方法,实现文件的自主划分组合分割以适应光盘容量,将批量光盘虚拟成线性存储空间,提高了光盘的空间利用率,从而使用户忽略底层光盘设备的容量边界,方便用户的使用以及系统的管理,提高光盘存储系统的自动化程度。
【专利附图】

【附图说明】
[0024]图1是本发明第一实施例提供的写文件方法的流程图;
[0025]图2是本发明第一实施例提供的读文件方法的流程图;
[0026]图3是本发明第二实施例提供的写文件方法的流程图;
[0027]图4是本发明第二实施例提供的文件逻辑视图的示意图;
[0028]图5是本发明第二实施例提供的自主组合算法的分组示意图;
[0029]图6是本发明第二实施例提供的文件分割映射表的示意图;
[0030]图7是本发明第三实施例提供的写文件装置的结构图;
[0031]图8是本发明第三实施例提供的读文件装置的结构图。
【具体实施方式】
[0032]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0033]本实施例提供的光盘存储系统中文件存取方法中,所述光盘存储系统包括批量光盘、一组光盘驱动器,系统控制器,光盘移动装置机械臂和若干数据通道。默认光盘存储系统可以提供光盘的存取刻录功能。本发明的技术方案是根据文件的属性信息以及光盘物理特性,对文件组织分组,然后对每组文件进行文件分割,最终达到文件大小自主适应单张光盘设备容量大小,然后将各组中的文件写入光盘。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0034]实施例一:
[0035]本发明实施例提供光盘存储系统中文件存取方法包括写文件方法和读文件方法,为了便于说明仅示出了与本发明实施例相关的部分。
[0036]如图1所示,本实施例提供的写文件方法包括:
[0037]步骤S101、获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割。
[0038]光盘库系统中包括有多张光盘,组成了一个线性光盘存储空间,可用容量为所有光盘可用容量之和。假设光盘的数目为N,单张光盘的容量为CD_V,则光盘存储空间的容量为CD_Total = N*CD_V。这里不局限于每张光盘的容量必须相等。若光盘的数目为N,第i张光盘的容量为CD_Vi,则光盘存储空间的容量为CD_Total = CD_V0+CD_V1+CD_V2+....+CD_Vn-2+CD_Vn-l。为方便说明,下文中假设所有光盘容量相等,均为CD_V,但本方法不局限于光盘容量相等的光盘设备。
[0039]一般情况下,单张 光盘存储的数据包括元数据以及数据信息。若单张光盘的容量为CD_V,光盘元数据占用的空间为CD_Meta,则单张光盘可用容量为CD_Vaild = CD_V_CD_Meta0
[0040]上层为用户提供的时逻辑组织结构视图。用户看到的文件与现有操作系统目录、文件视图形式相同,即用户可看到文件之间的层级关系,通过对目录的层级访问,最终访问文件。根据上述等待写入光盘文件的逻辑视图,获取文件属性信息,建立文件组织树。在文件组织树中可体现出文件之间的逻辑关系,并保存了文件的属性信息,包括文件的大小等。根据上述文件组织树,获取文件组织树中文件的属性信息,得出OriginalGroup (filel, file2,…,filex)为需要进行组合或分割的单位,假设文件i的大小为size_i,则这组文件需要占用的总容量空间为Need_V = size_l+size_2+…+sizex。假设单张光盘可用容量为CD_Vaild,则至少需要的光盘数目为Need_Num = [Need_V/CD_Vaild]。
[0041]在得到的文件之间的逻辑关系以及文件的属性信息之后对文件进行分组,使得每个组中文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割。
[0042]步骤S102、根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表。
[0043]每个组中文件总大小为单张光盘的整数倍,可以对应写到一张或多张光盘中。对于一组文件,实际操作时需要对组内的文件进行分割,每当达到一张光盘的可用容量时,将文件以及元数据写入当前光盘,然后取一张新的光盘,继续将组内剩下的文件进行分割,按照同样的方法写入文件和元数据,直至组内所有文件写入完毕。然后读取下一组文件,直至各组所有的文件写入光盘。同时将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表。
[0044]如图2所示,本实施例提供的读文件方法包括:
[0045]步骤S201、根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件。
[0046]由于在写文件时候已经将分割文件的相关保存到了文件分割映射表,因此在需要读数据时,首先根据待读文件的目录/文件层级关系,即根据待读文件的逻辑关系查找分割映射表,得到待读文件的各个分割的部分。
[0047]步骤S202、通过查找地址映射表,获得各部分文件所在的物理地址;
[0048]步骤S203、根据所述物理地址在相应光盘中读取文件数据;
[0049]步骤S204、将获取到各部分的文件数据进行合并,得到源文件。
[0050]然后根据地址映射表查找各文件部分所在的光盘物理地址,访问物理地址对应的文件数据即可,最后将各部分的文件数据合并,得到源文件。
[0051]实施例二:
[0052]本发明实施例提供光盘存储系统中文件存取方法包括写文件方法和读文件方法,为了便于说明仅示出了与本发明实施例相关的部分。
[0053]如图3所示,本实施例提供的写文件方法包括:
[0054]步骤S301、获取待写入光盘的文件间的逻辑关系以及文件的属性信息。
[0055]在本实施实例中,假设批量光盘的容量均相等,均为CD_V,光盘上的元数据占用的空间为CD_Meta,则光盘的可用容量为CD_Vaild = CD_V_CD_Meta。在本实施实例中,为说明方便,假设CD_V = 25G,CD_Meta = 1G,则CD_Vaild = 24G。应当注意,本假设仅仅用以解释本发明,在实际实现中,元数据占用空间比例较低。
[0056]用户可看到的是文件的逻辑视图,即文件目录之间的层次结构图。假设待写入的文件逻辑视图如图4所示。在根目录root下一共存在三个子目录分别为DIR1、DIR2、DIR3 ;在DIRl目录下存在子目录DIR1_1和文件FileC,在目录DIR1_1下存在文件FileA、FileB。其他目录分布情况类似。所有的文件大小总和为240G,单张光盘的可用写数据信息的容量为24G,则最小需要240G/24G = 10张光盘存储文件数据。
[0057]步骤S302、将所有文件按照文件大小进行排序并相互组合分组,得到一个或者多个元组,每个元组中的文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割,并将各个元组加入到元组队列。
[0058]然后按照文件大小进行排列,通过自主组合算法对排列后将不同大小的文件进行分组组合,其原则是,每一组文件容量之和最大限度的接近单张光盘可用容量的整数倍,并且尽量减少文件的分割。具体实现时,可以设置一个误差范围,当一组文件容量之和与单张光盘可用容量的整数倍的差在所述误差范围内,即可进行分组。分组后得到一个或多个元组。对于上述实例,如图5所示,获得的元组如下:
[0059]Original_Groupl (fileF, fileG, fileA, fileC);
[0060]0riginal_Group2 (filel);
[0061]0riginal_Group3 (fileE, fileH);[0062]0riginal_Group4 (fileB, fileD)。
[0063]然后将各个元组按顺序加入到元组队列中。
[0064]文件分组方法有很多种,可以采用穷举法、装箱法等方法。具体如下:
[0065]A、穷举法
[0066]将所有的文件的大小属性作为一个集合的全集,以图4为例说明。即集合为S {2,10,15,18,21,24,30,45,75}。
[0067]Al)列举出集合S的部分子集,但要求:每个子集中不能有重复的元素,即不能存在 Sub_sl = {2,10}, sub_s2 = {2,15}这样的子集划分。
[0068]A2)将划分的子集的并集刚好为全集S的一组子集,作为一种文件分组方法,如:
[0069]分组方法I:Sub_sO = {}, Sub_sl = {2}, Sub_s2 = {10}, Sub_s3 = {15}, Sub_s4={18},Sub_s5 = {21},Sub_s6 = {24},Sub_s7 = {30},Sub_s8 = {45},Sub_s9 = {75},
[0070]分组方法2:Sub_sO = {}, Sub_sl0 = {2, 10}, Sub_sll = {15, 18}, Sub_sl2 ={21,24},Sub_sl3 = {30,45},Sub_sl4 = {75}。
[0071]A3)列举出所有满足上述分组方法的文件分组,并根据光盘的可用容量,分别计算每种分组方法的需要的文件分割次数。
[0072]A4)选择文件分割次数最小的一种分组方法,作为选用的文件分组。
[0073]B、装箱法
[0074]输入:一组文件集合;
[0075]BI)初始化:建立分配集合;具体包括下述步骤:
[0076]B11、对所有文件从大到小排序;
[0077]B12、对大于光盘容量的大文件进行分割;
[0078]B13、对分割后的文件不再进行排序,连续放置,所有文件集合为S ;
[0079]B14、为每张光盘建立一个分配集合G,初始化为空;
[0080]B2)装箱方法;
[0081]从头扫描文件集合S,判断当前文件是否可以加入到分配集合G中,判断条件为装入文件后G中的文件大小总和不超过光盘容量。文件集合S为空时,结束。
[0082]此时,假设装入文件F后G中文件大小总和为X,单张光盘容量为V,则可能出现三种情况:
[0083]X = V时:确定将该文件F加入集合G,从S中删除该文件F记录,取下一张光盘,光盘的分配集合为空,重新执行装箱方法
[0084]X〈V时:将F加入光盘集合G,继续执行装箱操作
[0085]X>V时:不将该文件加入集合G,向后扫描文件集合S,寻找是否存在可以装入集合G的文件;若存在,将文件加入集合G,若不存在,则不将任何文件加入集合G,G中的文件组合保持现有状态,并且取下一张光盘,光盘的分配集合为空,重新执行装箱方法
[0086]B3)输出;
[0087]文件集合为空;
[0088]光盘文件集合:刻录入光盘上的文件的组合。
[0089]示例:
[0090](I)初始化[0091]对文件大小进行排序(从大到小的顺序),以图4为例说明,排序后结果为:{75,45,30,24,21,18,15,10,2};
[0092]原始文件集合S = {24,24,24,3,24,21,24,6,24,21,18,15,10,2};
[0093]光盘的分配集合Gl = {},G2 = {},G3 = {},G4 = H,...[0094](2)结果
[0095]说明:括号内表示被分割文件的源文件大小;
[0096]Gl = 24G(75G);
[0097]G2 = 24G(75G);
[0098]G3 = 24G (75G);
[0099]G4 = 3G(75G)+21G(45G);
[0100]G5 = 24G (45G);
[0101]G6 = 24G (30G);
[0102]G7 = 6G(30G)+18G ;
[0103]G8 = 24G ;
[0104]G9 = 21G+2G ;
[0105]GlO = 15G ;
[0106]Gll = IOGo
[0107]综上所述,上述列举了根据文件大小以及单张光盘可用容量大小,对文件进行分组的方法。在实际技术实现中,还可以使用其他的方法,也存在其他更高效的方法。
[0108]步骤S303、当元组队列不为空时从元组队列中取出头元组,并将头元组中的文件加入到文件分割表;
[0109]步骤S304、当文件分割表不为空时,获取表头文件以及大小信息。
[0110]文件分割表用于存储一个兀组文件,分割表中第一个文件称之为头表头文件。本步骤中首选需要读取表头文件及其大小信息。比如将Original_Groupl加入到文件分割表后,fileF为表头文件。
[0111]步骤S305、当光盘可用容量大于表头文件大小时,将表头文件加入到文件分割组以及文件分割映射表,此时光盘可用容量减去表头文件大小。
[0112]选择一张光盘后并获取可用容量,当可用容量大于表头文件大小时,比如表头文件fileF容量为2G,小于光盘可用容量24G,此时将fileF加入到文件分割组以及文件分割映射表,分割映射表如图6所不,并从文件分割表中删除fileF,此时表头文件为fileG,光盘可用容量为22G,判断光盘可用容量与表头文件的关系,这里光盘可用容量仍然大于表头文件fileG的大小,重复上述操作,将fileG加入到文件分割组以及文件分割映射表,并从文件分割表中删除fileG,此时表头文件为fileA,光盘可用容量为12G,由于光盘可用容量小于表头文件fileA的大小,执行 下一步操作。
[0113]步骤S306、当光盘可用容量小于表头文件大小时,将表头文件分割成第一部分和第二部分,并且第一部分的大小等于光盘可用容量。
[0114]表头文件fileA体积大于当前光盘可用容量,此时将表头文件fileA分割成第一部分和第二部分,并且第一部分的大小等于光盘可用容量。即第一分部fileA_l为12G,第二部分 fileA_2 为 3G。[0115]步骤S307、将表头文件第一部分加入文件分割组,并且将表头文件及其第一部分加入文件分割映射表,同时将第二部分加入文件分割表的表头。
[0116]然后将fileA_l加入到文件分割组,此时文件分割组包括fileF、fileG、fileA_l,总大小为24G。同时将fileA_2加入文件分割表的表头。此时分割表内的文件为fileA_2、fileC。
[0117]步骤S308、将元数据以及文件分割组中的文件数据写入光盘,并将文件分割组中的各文件的逻辑地址和光盘上对应的物理地址写入地址映射表。
[0118]—般情况下,文件分割组大小等于一张光盘容量。本步骤中,将元数据以及文件分割组中的文件数据写入光盘,即将fileF、fileG、fileA_l和元数据写入光盘,清空文件分割组。同时保存fileF、fileG、fileA_l的逻辑地址以及刻录在光盘上对应的物理地址并写入地址映射表。
[0119]步骤S309、选择一张新光盘并获取可用容量,继续进行新光盘写入。
[0120]然后在选择一张新的光盘并获取可用容量继续写文件数据。
[0121]优选的,所述写文件方法还包括:
[0122]步骤S310、当光盘可用容量等于表头文件大小时,将表头文件加入文件分割组以及文件分割映射表,此时光盘可用容量为O。
[0123]在步骤S309中,需要选择新光盘继续写文件数据,首先判断当前文件分割表中是否为空,此时文件分割表内的文件为fileA_2、fileC,不为空,且表头文件fileA_2小于光盘可用容量,按照步骤S305操作,将fileA_2加入文件分割组,此时文件分割表内还剩下fileC,光盘可用容量为21G。fileC大小正好与光盘当前可用容量相等,此时将fileC加入文件分割组以及文件分割映射表,这时候文件分割组包含fileA_2、fileC,返回步骤S308进行光盘写入操作。
[0124]此时文件分割表为空,继续从元组队列中取出下一元组加入到文件分割表中按照上述方法继续进行判断、处理,直至元组队列中所有文件写入完毕
[0125]进一步优选的,所述写文件方法还包括:
[0126]步骤S311、当元组队列为空时,将元数据以及未写入光盘的文件数据写入光盘,并将文件的逻辑地址和光盘上对应的物理地址写入地址映射表。
[0127]在文件组合分割时,待写文件可能存在一部分无法加入到任何一元组中,本步骤中,将这些还未写入光盘的文件数据以及元数据写入到光盘,并将文件的逻辑地址和光盘上对应的物理地址写入地址映射表。至此完成整个文件写入操作。
[0128]实施例三:
[0129]本发明实施例提供的光盘存储系统中文件存取装置,包括读文件装置和写文件装置,如图7所示,所述写文件装置包括:
[0130]分组单元71,用于获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割;
[0131]分割写入单元72,用于根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表。[0132]如图8所示,所述读文件装置8包括:
[0133]分割查找单元81,用于根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件;
[0134]地址查找单元82,用于通过查找地址映射表,获得各部分文件所在的物理地址;
[0135]数据获取单元83,用于根据所述物理地址在相应光盘中读取文件数据;
[0136]数据合并单元84,用于将获取到各部分的文件数据进行合并,得到源文件。
[0137]其中优选的,所述分组单元71包括:
[0138]信息获取模块,用于获取待写入光盘的文件间的逻辑关系以及文件的属性信息,并按照文件大小进行排序;
[0139]排列分组模块,用于将所有文件按照文件大小进行排序并相互组合分组,得到一个或者多个元组,每个元组中的文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割,并将各个元组加入到元组队列。
[0140]所述分割写入单元72包括:
[0141]分割表处理模块,用于当元组队列不为空时从元组队列中取出头元组,并将头元组中的文件加入到文件分割表;以及用于当文件分割表不为空时,获取表头文件以及大小
信息;
[0142]分割组处理模块,用于当光盘可用容量大于表头文件大小时,将表头文件加入到文件分割组以及文件分割映射表,此时光盘可用容量减去表头文件大小;
[0143]分割模块,用于当光盘可用容量小于表头文件大小时,将表头文件分割成第一部分和第二部分,并且第一部分的大小等于光盘可用容量;
[0144]文件写入模块,将元数据以及文件分割组中的文件数据写入光盘,并将文件分割组中的各文件的逻辑地址和光盘上对应的物理地址写入地址映射表;
[0145]所述分割组处理模块还用于将表头文件第一部分加入文件分割组,并且将表头文件及其第一部分加入文件分割映射表,同时将第二部分加入文件分割表的表头。
[0146]进一步优选的,所述分割组处理模块还用于当光盘可用容量等于表头文件大小时,将表头文件加入文件分割组以及文件分割映射表;以及用于当元组队列为空时,将元数据以及未写入光盘的文件数据写入光盘,并将文件的逻辑地址和光盘上对应的物理地址写入地址映射表。
[0147]总之,本发明通过对文件进行组合和分割,可以实现文件的自动划分;通过读取文件分割映射表,可获取源文件与分割后文件之间的对应关系,从而读取出文件数据信息。通过对文件的管理,提高整个光盘存储系统的自动化程度,减少用户的参与以及减小管理的难度。
[0148]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种光盘存储系统中文件存取方法,其特征在于,所述存取方法包括写文件方法和读文件方法,其中所述写文件方法包括: 获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割;根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表; 所述读文件方法包括: 根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件; 通过查找地址映射表,获得各部分文件所在的物理地址; 根据所述物理地址在相应光盘中读取文件数据; 将获取到各部分的文件数据进行合并,得到源文件。
2.如权利要求1所述光盘存储系统中文件存取方法,其特征在于,所述获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组步骤,具体包括: 获取待写入光盘的文件间的逻辑关系以及文件的属性信息; 将所有文件按照文件大小进行排序并相互组合分组,得到一个或者多个元组,每个元组中的文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割,并将各个元组加入到元组队列。
3.如权利要求2所述光盘存储系统中文件存取方法,其特征在于,所述根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表步骤,具体包括: 当元组队列不为空时从元组队列中取出头元组,并将头元组中的文件加入到文件分割表; 当文件分割表不为空时,获取表头文件以及大小信息; 当光盘可用容量大于表头文件大小时,将表头文件加入到文件分割组以及文件分割映射表,此时光盘可用容量减去表头文件大小; 当光盘可用容量小于表头文件大小时,将表头文件分割成第一部分和第二部分,并且第一部分的大小等于光盘可用容量; 将表头文件第一部分加入文件分割组,并且将表头文件及其第一部分加入文件分割映射表,同时将第二部分加入文件分割表的表头; 将元数据以及文件分割组中的文件数据写入光盘,并将文件分割组中的各文件的逻辑地址和光盘上对应的物理地址写入地址映射表; 选择一张新光盘并获取可用容量,继续进行新光盘写入。
4.如权利要求3所述方法,其特征在于,所述当文件分割表不为空时,获取表头文件以及大小信息步骤之后,还包括: 当光盘可用容量等于表头文件大小时,将表头文件加入文件分割组以及文件分割映射表,此时光盘可用容量为O。
5.如权利要求1-4任一项所述光盘存储系统中文件存取方法,其特征在于,所述当元组队列不为空时从元组队列中取出头元组,并将头元组中的文件加入到文件分割表步骤之前,还包括: 当元组队列为空时,将元数据以及未写入光盘的文件数据写入光盘,并将文件的逻辑地址和光盘上对应的物理地址写入地址映射表。
6.一种光盘存储系统中文件存取装置,其特征在于,所述装置包括读文件装置和写文件装置,其中所述写文件装置包括: 分组单元,用于获取待写入光盘的文件之间的逻辑关系以及文件的属性信息,并对文件进行分组,使得每组文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割; 分割写入单元,用于根据每个组中的文件大小将组内文件进行组合或者分割,当达到一张光盘的可用容量后将文件以及元数据写入光盘,直至将各组中所有文件以及元数据写入到光盘,并且将分割后的文件与源文件之间的映射关系写入文件分割映射表,将分割后文件的逻辑地址与物理地址写入地址映射表; 所述读文件装置包括: 分割查找单元,用于根据待读取文件的逻辑关系查询文件分割映射表,得到被分割后的各部分文件; 地址查找单元,用于通过查找地址映射表,获得各部分文件所在的物理地址; 数据获取单元,用于根据所述物理地址在相应光盘中读取文件数据; 数据合并单元,用于将获取到各部分的文件数据进行合并,得到源文件。
7.如权利要求6所述光盘存储系统中文件存取装置,其特征在于,所述分组单元包括: 信息获取模块,用于获取待写入光盘的文件间的逻辑关系以及文件的属性信息,并按照文件大小进行排序; 排列分组模块,用于将所有文件按照文件大小进行排序并相互组合分组,得到一个或者多个元组,每个元组中的文件大小之和最大限度接近单张光盘可用容量的整数倍并且尽量减少文件分割,并将各个元组加入到元组队列。
8.如权利要求7所述光盘存储系统中文件存取装置,其特征在于,所述分割写入单元包括: 分割表处理模块,用于当元组队列不为空时从元组队列中取出头元组,并将头元组中的文件加入到文件分割表;以及用于当文件分割表不为空时,获取表头文件以及大小信息; 分割组处理模块,用于当光盘可用容量大于表头文件大小时,将表头文件加入到文件分割组以及文件分割映射表,此时光盘可用容量减去表头文件大小; 分割模块,用于当光盘可用容量小于表头文件大小时,将表头文件分割成第一部分和第二部分,并且第一部分的大小等于光盘可用容量; 文件写入模块,将元数据以及文件分割组中的文件数据写入光盘,并将文件分割组中的各文件的逻辑地址和光盘上对应的物理地址写入地址映射表; 所述分割组处理模块还用于将表头文件第一部分加入文件分割组,并且将表头文件及其第一部分加入文件分割映射表,同时将第二部分加入文件分割表的表头。
9.如权利要求8所述光盘存储系统中文件存取装置,其特征在于,所述分割组处理模块还用于当光盘可用容量等于表头文件大小时,将表头文件加入文件分割组以及文件分割映射表。
10.如权利要求9所述光盘存储系统中文件存取装置,其特征在于,所述文件写入模块还用于当元组队列为空时,将元数据以及未写入光盘的文件数据写入光盘,并将文件的逻辑地址和光盘上对应的物理地址写入地址映射表。
【文档编号】G06F3/06GK104008066SQ201410226071
【公开日】2014年8月27日 申请日期:2014年5月26日 优先权日:2014年5月26日
【发明者】曹强, 姚杰, 谢长生, 彭晨 申请人:武汉光忆科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1