一种碎片化内容相近存储方法
技术领域
本发明属于网络数据处理技术领域,具体涉及一种碎片化内容相近存储方法。
背景技术
在云计算平台快速发展的今天,云存储技术已逐步普及应用,是在云计算(cloudcomputing)概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,是指通过集群应用、网络技术活分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务防伪功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。
传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统,是将数据分散存储在多台独立的设备上。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
大量的信息以数字的形式储存在互联网中。整个信息交流的场域已经被各种科技巨头所控制,私人数据会在毫不经意间被窃取,这无疑是危险的。当服务商出现问题时,这种集中化的完整数据存储就会面临大面积丢失或被窃取的现象。
发明内容
针对现有技术中的上述不足,本发明提供的碎片化内容相近存储方法解决了现有的需要通过硬盘清理实现文件碎片整理存储在复杂且易出现误操作导致系统崩溃的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种碎片化内容相近存储方法,包括以下步骤:
S1、对每台服务器的所有文件碎片x进行预处理,获得服务器的碎片内容均值集合E;
S2、将待存储的文件f切割成n个文件碎片fi;
其中,i=1,2,3,...,n;
S3、在本地服务器中构建文件存储表S_List;
S4、基于服务器碎片内容均值集合E,确定各文件碎片fi对应的目标服务器;
S5、将各文件碎片fi写入到对应的目标服务器中,并将其填入到文件存储表S_List中;
S6、读取文件时,按文件存储表S_List中的存储顺序在各目标服务器中读取文件碎片x,并将读取的所有文件碎片拼接成完整的文件F;
S7、读取文件后,基于文件存储表S_List对拼接后的文件F进行验证,确保文件正确且完整,实现碎片化内容相近存储。
进一步地,所述步骤S1具体为:
S11、确定每台服务器中存储的所有文件碎片x;
S12、计算每台服务器中所有文件碎片x的碎片内容均值Ej;
S13、基于每台服务器对应的碎片内容均值Ej,构建文件碎片集合E;
其中,碎片内容均值集合E为:
E={E1,E2,E3,…,Em}
式中,Ej∈E,Ej为第j台服务器Sj中所有碎片的碎片内容均值,下标m为服务器总数,j=1,2,3,...,m。
进一步地,所述步骤S11中,每台服务器存储的所有文件碎片来自不同或相同的文件海明距离最近的文件碎片部分。
进一步地,所述步骤S2具体为:
在服务器运行过程中将待存储的文件f切割成n个长度为fraglength个bit的文件碎片fi,当最后一个文件碎片的长度小于1024bit时,在该文件碎片末尾填充0,直到长度达到1024bit,其中,fraglength=1024;
所述步骤S3中,创建的文件存储表S_List为索引表;
所述索引表内包含待存储的完整文件f的Hash值、文件f的每个文件碎片fi与服务器Sj的对应关系,以及最后一个文件碎片末尾0的填充长度为padding_length。
进一步地,所述步骤S4具体为:
S41、对于每个文件碎片fi,初始化其对应的相近度XJ0和最相近的服务器St;
S42、遍历m台服务器,依次计算各文件碎片fi与各服务器Sj的内容均值Ej之间的相似度XJij;
S43、在遍历m台服务器过程中,当文件碎片fi对应的相似度XJij大于等于设定的相似度阈值XJt时,停止对文件碎片fi的遍历,将当前服务器Sj作为文件碎片fi对应的目标服务器Si。
进一步地,所述步骤S43中,当完全遍历后,文件碎片fi对应的相似度XJij小于设定的相似度阈值XJt时,该文件碎片fi对应的目标服务器Si为St;
所述步骤S43中,相似度阈值XJt为:
XJt=fraglength-minHAMIN
式中,fraglength为文件碎片长度,且fraglength=1024,minHAMIN为文件碎片fi与各服务器Sj的碎片内容均值Ej之间的最小海明距离;
所述步骤S43中,文件碎片fi对应的相似度XJij为:
XJij=fraglength-HAMIN(fi,Sj)
式中,HAMIN(fi,Sj)即为文件碎片fi与服务器Sj的碎片内容均值Ej之间的海明距离。
进一步地,所述步骤S42中,所述步骤S43中,确定的目标服务器Si为:
式中,XJ(fi,Sj)为文件碎片fi与服务器Sj之间的相似度,XJ(fi,St)为文件碎片fi对应的最大相似度。
进一步地,所述步骤S5具体为:
将各文件碎片fi按照write协议写入到目标服务器中,基于各碎片文件在完整文件中的对应关系,将各碎片文件fi的信息按其序号i从小到大的顺序填入到文件存储表S_List中。
进一步地,所述步骤S6具体为:
在将读取的文件碎片拼接成完整的文件F的过程中,对于文件F中对应的最后一个文件碎片fi,在文件存储表S_List读取对应的padding_length,并删除最后一个文件碎片fi中长度为padding_length的0。
进一步地,所述步骤S7中,对拼接后的文件F进行验证的方法具体为:
当拼接得到的文件F的Hash值与待存储的文件f的Hash值相等时,则存储与读取文件过程中文件正确且完整,实现碎片化内容相近存储。
本发明的有益效果为:
(1)本发明通过对待存储文件进行碎片化去中心化存储,任意服务器中均没有完整文件,确保了文件的隐秘性与安全性,同时去中心化存储有效规避了集中式存储带来的风险;
(2)本发明通过对文件碎片内容加以利用,去除对碎片进行多余的加密与哈希计算,减少了计算成本,根据内容定位相比于传统的名字定位或哈希定位,大大提高了定位速度;
(3)本发明通过对各服务器的文件碎片进行统一整理,并构建文件存储表,实现待存储文件的快速生成,直接读出拼接与一次验证,缩短了读取速度的同时保证了文件的完整性。
附图说明
图1为本发明提供的碎片内内容相近存储方法流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,一种碎片化内容相近存储方法,包括以下步骤:
S1、对每台服务器的所有文件碎片x进行预处理,获得服务器的碎片内容均值集合E;
S2、将待存储的文件f切割成n个文件碎片fi;
其中,i=1,2,3,...,n;
S3、在本地服务器中构建文件存储表S_List;
S4、基于服务器碎片内容均值集合E,确定各文件碎片fi对应的目标服务器;
S5、将各文件碎片fi写入到对应的目标服务器中,并将其填入到文件存储表S_List中;
S6、读取文件时,按文件存储表S_List中的存储顺序在各目标服务器中读取文件碎片x,并将读取的所有文件碎片拼接成完整的文件F;
S7、读取文件后,基于文件存储表S_List对拼接后的文件F进行验证,确保文件正确且完整,实现碎片化内容相近存储。
上述步骤S1中,由于每台服务器在运行时会存储大量的来自不同用户的不同文件碎片,每次存储后服务器的碎片内容均值都会发生变化,因此在每次存储时,需先对服务器已存碎片进行预处理,以计算距离最近的服务器实现就近存储;基于此,上述步骤S1具体为:
S11、确定每台服务器中存储的所有文件碎片x;
其中,每台服务器存储的所有文件碎片来自不同或相同的文件海明距离最近的文件碎片部分;
S12、计算每台服务器中所有文件碎片x的碎片内容均值Ej;
S13、基于每台服务器对应的碎片内容均值Ej,构建文件碎片集合E;
其中,碎片内容均值集合E为:
E={E1,E2,E3,…,Em}
式中,Ej∈E,Ej为第j台服务器Sj中所有碎片的碎片内容均值,下标m为服务器总数,j=1,2,3,...,m。
上述计算内容均值用于后续计算待存储文件碎片与各服务器的距离,快速定位目标服务器,避免了直接使用大量已存碎片逐个计算距离确定目标服务器带来的庞大的数据计算量;
上述步骤S2中,对待存储的文件切割成若干个文件碎片,待存储文件切割方法:
在本地将待存储的文件f切割成n个长度为fraglength个bit的文件碎片fi,当最后一个文件碎片的长度小于1024bit时,在该文件碎片末尾填充0,直到长度达到1024bit,其中,fraglength=1024;通过填零的方式使得各个文件碎片长度相等,便于后续计算均值与距离,输出n个文件碎片fi组成的集合{f1,f2,…,fi,...,fn},n=1,2,3,4,…;
上述步骤S3中,创建的文件存储表S_List为Hash索引表;
所述述索引表内包含待存储的完整文件f的Hash值、文件f的每个文件碎片fi与服务器Sj的对应关系,以及最后一个文件碎片末尾0的填充长度为padding_length;该步骤中,通过创建与待存储文件相关的数据存储格式,使得后续写入文件碎片时能将其存储位置存储在该文件存储表中,进而便于后续合成完整文件F。
本实施例中将Hash作为待存储文件的数据存储格式(如下表所示),除此之外,只要能存储上述数据内容的索引表均在本申请请求保护的范围之内。
表1:S_List索引表
上述步骤S4具体为:
S41、对于每个文件碎片fi,初始化其对应的相近度Xj0和最相近的服务器St;
其中,相似度由海明距离度量,海明距离越小则相似度遇到,海明距离越大则相似度越小,初始化最大相似度XJimax=0;
S42、遍历m台服务器,依次计算各文件碎片fi与各服务器Sj的内容均值Ej之间的相似度XJij;
S43、在遍历m台服务器过程中,当文件碎片fi对应的相似度XJij大于等于设定的相似度阈值XJt时,停止对文件碎片fi的遍历,将当前服务器Sj作为文件碎片fi对应的目标服务器Si。
在遍历过程中,当文件碎片fi对应的相似度XJil大于XJimax时,将XJimax更新为XJil,使XJimax始终表征最大相似度,进而确定XJimax对应的服务器;
当完全遍历后,文件碎片fi对应的相似度Xjil小于设定的相似度阈值Xjt时,该文件碎片fi对应的目标服务器Si为St;
具体地,相似度阈值XJt为:
XJt=fraglength-minHAMIN
式中,fraglength为文件碎片长度,且fraglength=1024,minHAMIN为文件碎片fi与各服务器Sj的碎片内容均值Ej之间的最小海明距离;相似度阈值根据碎片内容的存储情况确定;
文件碎片fi对应的相似度XJij为:
XJij=fraglength-HAMIN(fi,Sj)
式中,HAMIN(fi,Sj)即为文件碎片fi与服务器Sj的碎片内容均值Ej之间的海明距离。
基于上述方法,确定的目标服务器Si为:
式中,XJ(fi,Sj)为文件碎片fi与服务器Sj之间的相似度,XJ(fi,St)为文件碎片fi对应的最大相似度。
上述步骤S5具体为:
将各文件碎片fi按照write协议写入到目标服务器中,基于各碎片文件在完整文件中的对应关系,将各碎片文件fi的信息按其序号i从小到大的顺序填入到文件存储表S_List中,便于后续读文件的定位和重组;
所述步骤S6具体为:
在将读取的文件碎片拼接成完整的文件F的过程中,对于文件F中对应的最后一个文件碎片fi,在文件存储表S_List读取对应的padding_length,并删除最后一个文件碎片fi中长度为padding_length的0,以确保文合成文件的完整及准确性。
上述步骤S7中,对拼接后的文件F进行验证的方法具体为:
当拼接得到的文件F的Hash值与待存储的文件f的Hash值相等时,则存储与读取文件过程中文件正确且完整,实现碎片化内容相近存储。