磁盘实地址动态存储方法、系统及相关设备与流程

文档序号:29941515发布日期:2022-05-07 14:45阅读:64来源:国知局
1.本发明属于存储技术应用领域,尤其涉及一种磁盘实地址动态存储方法、系统及相关设备。
背景技术
::2.传统的存储方式对于大量大小不一文件的存储不可避免的会产生松驰空间,分配文件存储空间不够连续使得其片段化加大松弛空间产生的可能,造成过多存储资源的浪费;在存储空间不足时无法进行动态覆盖存储。3.例如,在磁盘中,对于使用fat(fileallocationtable,文件分配表)32的文件存储系统,在磁盘根目录下包括dbr、fat1、fat2、data四个部分,其中dbr为分区的引导程序,fat1为fat32文件存储系统的主要文件分配表,fat2为fat1的备份,data为以簇(cluster)为最小存储单位的存储扇区,data中的文件以目录或单独的文件的方式存储在一起。通常情况下,在fat32文件存储系统初始化时,fat1会默认将data中的每一个目录的大小分配为默认大小,即默认一个目录使用的存储扇区是具有规律的,不能根据已经或是即将存储的文件大小进行分配,这就导致在实际使用过程中,一个目录中即使还存在空的存储扇区,在向该目录存储大于其空的存储扇区大小的文件时会留空,转而存入其他目录中,使得松弛空间产生,造成资源浪费;同时,fat32文件存储系统本身并没有动态存储方案,这就使得松弛空间存在的情况下,fat32本身也会出现判断整个磁盘空间存满的情况,不利于摄像机等需要大量存储空间和实时存储使用。技术实现要素:4.本发明实施例提供一种磁盘实地址动态存储方法、系统及相关设备,旨在解决现有的fat32文件存储系统具有资源浪费和无法根据实际需求动态存储文件的问题。5.第一方面,本发明实施例提供一种磁盘实地址动态存储方法,所述方法包括:6.将磁盘初始化为fat32文件存储系统,所述fat文件存储系统包括fat表,并将所述磁盘划分为以簇为单位的存储单元,簇根据所述磁盘的实际地址具有实际地址顺序;7.在磁盘根目录下新建子目录,并使新建的所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,并根据所述子目录更新所述fat表,其中,根据预设簇大小确定所述子目录所占的簇长度,所述子目录具有建立时间;8.在所述子目录下新建文件,并使新建的所述文件的开始簇为所述子目录中的第一个所述可用簇,并根据所述文件更新所述fat表,其中,所述文件所占的簇数量与所述文件的文件大小相同;9.根据预设存储规则在所述子目录中存储新文件。10.更进一步的,所述可用簇为按照所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的第一个没有存储任何内容的存储单元,所述子目录的开始簇为所述子目录所占簇长度中的第一个簇,所述文件的开始簇为所述文件所占簇数量中的第一个簇。11.更进一步的,所述预设存储规则包括:12.根据所述新文件的文件大小判断是否需要新建下一个子目录,其中:13.若所述新文件的文件大小小于或等于当前所述子目录中的所述可用簇的大小,则将所述新文件的开始簇设为所述子目录中上一个所述文件的结尾簇后的第一个所述可用簇,并根据所述新文件更新所述fat表;14.若所述新文件的文件大小大于当前所述子目录中的所述可用簇的大小,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇,并根据所述第二子目录和所述新文件更新所述fat表。15.更进一步的,所述预设存储规则包括:16.若所述子目录中簇的使用数量超过预设目录大小约束规则,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇。17.更进一步的,在所述根据预设存储规则在所述子目录中存储新文件的步骤之前,还包括:18.判断所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的簇数量是否足够存储所述新文件,其中:19.若所述簇数量足够存储所述新文件,则按照所述预设存储规则进行所述新文件的存储;20.若所述簇数量不够存储所述新文件,则将所述磁盘中按照所述建立时间先后排序的第一个所述子目录删除,并释放所述子目录所占的簇,按照所述预设存储规则进行所述新文件的存储。21.第二方面,一种磁盘实地址动态存储系统,包括:22.存储系统初始化单元,用于将磁盘初始化为fat32文件存储系统,所述fat文件存储系统包括fat表,并将所述磁盘划分为以簇为单位的存储单元,簇根据所述磁盘的实际地址具有实际地址顺序;23.目录初始化单元,用于在磁盘根目录下新建子目录,并使新建的所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,并根据所述子目录更新所述fat表,其中,根据预设簇大小确定所述子目录所占的簇长度,所述子目录具有建立时间;24.文件初始化单元,在所述子目录下新建文件,并使新建的所述文件的开始簇为所述子目录中的第一个所述可用簇,并根据所述文件更新所述fat表,其中,所述文件所占的簇数量与所述文件的文件大小相同;25.动态存储单元,用于根据预设存储规则在所述子目录中存储新文件。26.更进一步的,所述可用簇为按照所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的第一个没有存储任何内容的存储单元,所述子目录的开始簇为所述子目录所占簇长度中的第一个簇,所述文件的开始簇为所述文件所占簇数量中的第一个簇。27.更进一步的,所述预设存储规则包括:28.根据所述新文件的文件大小判断是否需要新建下一个子目录,其中:29.若所述新文件的文件大小小于或等于当前所述子目录中的所述可用簇的大小,则将所述新文件的开始簇设为所述子目录中上一个所述文件的结尾簇后的第一个所述可用簇,并根据所述新文件更新所述fat表;30.若所述新文件的文件大小大于当前所述子目录中的所述可用簇的大小,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇,并根据所述第二子目录和所述新文件更新所述fat表。31.第三方面,本发明实施例还提供一种计算机设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述实施例中任意一项所述的磁盘实地址动态存储方法中的步骤。32.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中任意一项所述的磁盘实地址动态存储方法中的步骤。33.本发明所达到的有益效果,由于采用了磁盘空间按实地址写入数据存储,动态循环覆盖的文件存储方案,能够使磁盘的存储空间连续,提高存储资源的利用率,并避免了存储空间不足而导致的数据写入失败问题。附图说明34.图1是本发明实施例提供的磁盘实地址动态存储方法的步骤流程框图;35.图2是fat32文件存储系统的结构示意图;36.图3是本发明实施例提供的数据区结构示意图;37.图4是本发明实施例提供的磁盘实地址存储系统300的结构示意图;38.图5是本发明实施例提供的计算机设备的结构示意图。具体实施方式39.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。40.请参照图1,图1是本发明实施例提供的磁盘实地址动态存储方法的步骤流程框图,具体包括以下步骤:41.s101、将磁盘初始化为fat32文件存储系统,所述fat文件存储系统包括fat表,并将所述磁盘划分为以簇为单位的存储单元,簇根据所述磁盘的实际地址具有实际地址顺序。42.具体的,请参照图2,图2是fat32文件存储系统的结构示意图,fat32文件存储系统包括保留区、fat1、fat2、数据区,其中,保留区(dbr)中有磁盘的引导程序,并且在保留区的结尾部分会有重要的保留扇区,用于存储分区中的其他信息,fat1为主要的文件分配表,用于记录数据区中目录或文件的存储信息,fat2为fat1的备份文件,数据区(data)是实际用于存储文件的区域。fat32文件存储系统将所述磁盘分为以簇为单位的存储单元,这是计算机存储系统的一种概念,一般一个簇指磁盘中的2个扇区,即簇用于表示磁盘中的某一段实际地址,因此簇具有根据所述实际地址排序的顺序,在本发明实施例中定义为所述实际地址顺序。43.s102、在磁盘根目录下新建子目录,并使新建的所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,并根据所述子目录更新所述fat表,其中,根据预设簇大小确定所述子目录所占的簇长度,所述子目录具有建立时间。44.具体的,请参照图3,图3是本发明实施例提供的数据区结构示意图,所述子目录为计算机存储系统的一种概念,所述磁盘根目录在所述fat32文件存储系统初始化时就已经建立,而在所述磁盘根目录下存储的就是所述子目录或所述文件,fat32文件存储系统中,对于每一个所述子目录或所述文件,均有一个目录项对其进行标记,在本发明实施例中,所述子目录用于在所述数据区中标记一段存储空间,并将所述子目录的名称、簇长度等信息存储在一个簇中,其中,所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,一般来说,所述磁盘根目录所在的簇为所述磁盘的所述实际地址顺序中第一个簇,因此在所述磁盘根目录下建立的第一个所述子目录,其开始簇为所述实际地址顺序中第二个簇,而所述子目录所占的簇长度由所述预设簇大小确定,所述预设簇大小可以根据实际需求确定,例如128个簇、256个簇等,即所述可用簇为按照所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的第一个没有存储任何内容的存储单元,所述子目录的开始簇为所述子目录所占簇长度中的第一个簇。每产生一个所述目录项或有文件存储读出操作,fat32文件存储系统都会对所述fat表进行更新,在本发明实施例中,若无特殊说明,所述fat表均指fat32文件存储系统结构中的fat1表。45.s103、在所述子目录下新建文件,并使新建的所述文件的开始簇为所述子目录中的第一个所述可用簇,并根据所述文件更新所述fat表,其中,所述文件所占的簇数量与所述文件的文件大小相同。46.具体的,在本步骤中,新建的所述文件处于所述子目录下,所述文件的开始簇为所述子目录中的第一个所述可用簇,所述文件所占的簇数量与所述文件的文件大小相同,在本发明实施例中,所述文件的所述目录项与所述子目录中的第一个所述可用簇相同。所述文件新建完成后,将所述fat表进行更新。47.s104、根据预设存储规则在所述子目录中存储新文件。48.具体的,所述预设存储规则包括:49.s1041、根据所述新文件的文件大小判断是否需要新建下一个子目录,其中:50.1041a、若所述新文件的文件大小小于或等于当前所述子目录中的所述可用簇的大小,则将所述新文件的开始簇设为所述子目录中上一个所述文件的结尾簇后的第一个所述可用簇,并根据所述新文件更新所述fat表。51.具体的,所述结尾簇指的是所述子目录中上一个所述文件在存储空间中占据的最后一个簇,即所述新文件的开始簇紧接着上一个所述文件结尾,通过这种存储方式,能够避免文件系统中的存储空间出现碎片。52.1041b、若所述新文件的文件大小大于当前所述子目录中的所述可用簇的大小,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇,并根据所述第二子目录和所述新文件更新所述fat表。53.具体的,若当前的所述子目录分配的簇长度已不充裕到存储所述新文件,则在所述实际地址顺序中当前的第一个可用簇上建立所述第二子目录的所述目录项,即生成一个新的所述子目录,并将所述新文件的开始簇设为所述第二子目录中的第一个可用簇,通过这种存储方式,所述第二子目录前一个所述子目录剩余的簇被回收,进一步避免了存储空间碎片的产生。54.所述预设存储规则包括:55.104c、若所述子目录中簇的使用数量超过预设目录大小约束规则,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个可用簇。56.具体的,所述预设目录大小约束规则可以根据实际需求确定,以对应不同场景情况下的文件存储系统使用需求,例如,用于摄像系统存储用的文件系统,其文件存储需要按照一定大小的文件夹进行区分,以区别不同时间采集的摄像文件。所述预设目录大小约束规则等同于使所述子目录的存储空间大小约束,即在所述子目录中簇的使用数量超过预设目录大小约束规则时,所述新文件的存储过程会按照如上述实施例中104b的步骤进行。57.在本发明实施例中,在所述根据预设存储规则在所述子目录中存储新文件的步骤s103之前,还包括:58.s201、判断所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的簇数量是否足够存储所述新文件。59.在本发明实施例中,由于所述子目录和所述文件的存储是按照所述实际存储地址的顺序进行存储的,因此所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的簇数量等同于所述磁盘剩余的存储空间总和,即本步骤的作用在于判断所述磁盘的存储空间是否已满,其中:60.201a、若所述簇数量足够存储所述新文件,则按照所述预设存储规则进行所述新文件的存储。61.若所述簇数量足够存储所述新文件,则表示所述磁盘的存储空间仍有空余,便继续按照所述预设存储规则进行所述新文件的存储。62.202b、若所述簇数量不够存储所述新文件,则将所述磁盘中按照所述建立时间先后排序的第一个所述子目录删除,并释放所述子目录所占的簇,按照所述预设存储规则进行所述新文件的存储。63.若所述簇数量不够存储所述新文件,则表示所述磁盘的存储空间已满,并开始删除所述磁盘的存储空间中最先生成并存储的所述子目录,由于fat32文件存储系统的特性,在删除所述子目录的同时,所述子目录下的所有所述文件均会被同时删除,从而释放出存储空间,得到新的簇,此时,以释放出来的存储空间作为所述新文件的存储区域,即通过删除旧的所述子目录得到的第一个簇视为新的所述可用簇,并进一步按照所述预设存储规则进行所述新文件的存储。64.本发明所达到的有益效果,由于采用了磁盘空间按实地址写入数据存储,动态循环覆盖的文件存储方案,能够使磁盘的存储空间连续,提高存储资源的利用率,并避免了存储空间不足而导致的数据写入失败问题。65.本发明实施例还提供一种磁盘实地址动态存储系统,请参照图4,图4是本发明实施例提供的磁盘实地址存储系统300的结构示意图,所述磁盘实地址存储系统300包括:66.存储系统初始化单元301,用于将磁盘初始化为fat32文件存储系统,所述fat文件存储系统包括fat表,并将所述磁盘划分为以簇为单位的存储单元,簇根据所述磁盘的实际地址具有实际地址顺序;67.目录初始化单元302,用于在磁盘根目录下新建子目录,并使新建的所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,并根据所述子目录更新所述fat表,其中,根据预设簇大小确定所述子目录所占的簇长度,所述子目录具有建立时间;68.文件初始化单元303,在所述子目录下新建文件,并使新建的所述文件的开始簇为所述子目录中的第一个所述可用簇,并根据所述文件更新所述fat表,其中,所述文件所占的簇数量与所述文件的文件大小相同;69.动态存储单元304,用于根据预设存储规则在所述子目录中存储新文件。70.更进一步的,所述可用簇为按照所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的第一个没有存储任何内容的存储单元,所述子目录的开始簇为所述子目录所占簇长度中的第一个簇,所述文件的开始簇为所述文件所占簇数量中的第一个簇。71.更进一步的,所述预设存储规则包括:72.根据所述新文件的文件大小判断是否需要新建下一个子目录,其中:73.若所述新文件的文件大小小于或等于当前所述子目录中的所述可用簇的大小,则将所述新文件的开始簇设为所述子目录中上一个所述文件的结尾簇后的第一个所述可用簇,并根据所述新文件更新所述fat表;74.若所述新文件的文件大小大于当前所述子目录中的所述可用簇的大小,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇,并根据所述第二子目录和所述新文件更新所述fat表。75.所述磁盘实地址存储系统300能够实现如上述实施例中的磁盘实地址存储方法中的步骤,且能实现同样的技术效果,参上述实施例中的描述,此处不再赘述。76.本发明实施例还提供一种计算机设备,请参照图5,图5是本发明实施例提供的计算机设备的结构示意图,所述计算机设备400包括:存储器402、处理器401及存储在所述存储器402上并可在所述处理器401上运行的计算机程序。77.所述处理器401调用所述存储器402存储的计算机程序,执行本发明实施例提供的园区管理方法中的步骤,请结合图1,具体包括:78.s101、将磁盘初始化为fat32文件存储系统,所述fat文件存储系统包括fat表,并将所述磁盘划分为以簇为单位的存储单元,簇根据所述磁盘的实际地址具有实际地址顺序.79.s102、在磁盘根目录下新建子目录,并使新建的所述子目录中的开始簇为所述实际地址顺序中第一个可用簇,并根据所述子目录更新所述fat表,其中,根据预设簇大小确定所述子目录所占的簇长度,所述子目录具有建立时间。80.更进一步的,所述可用簇为按照所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的第一个没有存储任何内容的存储单元,所述子目录的开始簇为所述子目录所占簇长度中的第一个簇,所述文件的开始簇为所述文件所占簇数量中的第一个簇。81.s103、在所述子目录下新建文件,并使新建的所述文件的开始簇为所述子目录中的第一个所述可用簇,并根据所述文件更新所述fat表,其中,所述文件所占的簇数量与所述文件的文件大小相同。82.s104、根据预设存储规则在所述子目录中存储新文件。83.更进一步的,所述预设存储规则包括:84.根据所述新文件的文件大小判断是否需要新建下一个子目录,其中:85.若所述新文件的文件大小小于或等于当前所述子目录中的所述可用簇的大小,则将所述新文件的开始簇设为所述子目录中上一个所述文件的结尾簇后的第一个所述可用簇,并根据所述新文件更新所述fat表;86.若所述新文件的文件大小大于当前所述子目录中的所述可用簇的大小,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇,并根据所述第二子目录和所述新文件更新所述fat表。87.更进一步的,所述预设存储规则包括:88.若所述子目录中簇的使用数量超过预设目录大小约束规则,则在所述磁盘中新建第二子目录,并将所述第二子目录中的开始簇设置为所述实际地址顺序中当前的第一个所述可用簇,将所述新文件的开始簇设为所述第二子目录中的第一个所述可用簇。89.更进一步的,在所述根据预设存储规则在所述子目录中存储新文件的步骤之前,还包括:90.判断所述实际地址顺序排序的最后一个所述子目录和/或所述文件之后的簇数量是否足够存储所述新文件,其中:91.若所述簇数量足够存储所述新文件,则按照所述预设存储规则进行所述新文件的存储;92.若所述簇数量不够存储所述新文件,则将所述磁盘中按照所述建立时间先后排序的第一个所述子目录删除,并释放所述子目录所占的簇,按照所述预设存储规则进行所述新文件的存储。93.本发明实施例提供的计算机设备400能够实现如上述实施例中的磁盘实地址存储方法中的步骤,且能实现同样的技术效果,参上述实施例中的描述,此处不再赘述。94.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本发明实施例提供的磁盘实地址存储方法中的各个过程及步骤,且能实现相同的技术效果,为避免重复,这里不再赘述。95.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,简称ram)等。96.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。97.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。98.上面结合附图对本发明的实施例进行了描述,所揭露的仅为本发明较佳实施例而已,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式用等同变化,均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1