一种基于分布式私有云的文件存储及读取方法及装置
技术领域
本发明涉及文件处理领域,特别涉及一种基于分布式私有云的文件存储及读取方法及装置。
背景技术
随着智能设备的发展,智能设备的剩余资源包括存储和计算资源越来越多,特制的存储设备由于无法进行外网接入,而限制了设备的使用,许多家庭的IT设备也由于外网不容易接入,而造成IT资源浪费。
在物联网发展的今天,如何充分利用现有的、分散的IT资源,把数据有效的保存到边缘节点,并利用边缘节点的存储能力和/或计算能力进行分布式计算,是个极大的挑战。
目前云技术已经相当成熟,但传统的云服务是使用专有的服务器集群,是集中式数据中心,稳定性和安全性取决于服务器的投入和安全的设置,并发用户数和带宽成正比,在线用户越多需要的总带宽越多。对于个人用户来说,私密性无法保证,云服务将服务器集群进行云化,为客户提供云存储源,是按需付费模式,根据需要和使用情况进行付费,费用包括网络费、存储费和CPU使用费等,造成总成本投入比较高。
发明内容
本发明的主要目的是提出一种基于分布式私有云的文件存储及读取方法,旨在克服以上问题。
为实现上述目的,本发明提出的一种基于分布式私有云的文件存储及读取方法,包括如下步骤:
S10数个智能终端通过登录私有云APP,彼此之间建立P2P分布式的私有云连接,智能终端,用于根据自身的存储空间及边缘计算能力向私有云捐献云资源;私有云根据云资源对数个智能终端进行角色分配,其中角色有且不限于:中心服务器用于私有云网络的数据通信;控制节点用于根据任务分配云资源,及集合且传送任务最终结果;云存储节点用于接受私有云的存储任务;云文件表节点用于接受文件表的存储任务;
S20用户A通过所在的智能终端将文件上传至私有云,云中控制节点对文件生成相应的哈希值h,将文件分解成n个文件块,将每个文件块存储到m个云存储节点,m为按文件使用属性给出的冗余数,n的取值由文件容量大小结合云资源来决定;将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点;
S30对文件的哈希值h生成唯一匹配的链接标识,将该链接标识分享至用户B所在的其中一智能终端;
S40识别该链接标识获取文件的哈希值h,通过文件的哈希值h在云文件表节点查找对应的分布式哈希表,以通过分布式哈希表中的存储地址获取m个存储地址的n个文件块,拼装所获取的n*m文件块且传送至用户B所在的其中一智能终端,以读取文件。
优选地,所述m为文件的重要性给出的冗余数,其中文件使用属性包括文件使用时段长短、读取频次和文件存储时间。
优选地,所述n为1024bit的整数倍。
优选地,所述中心服务器包括一级加密系统,一级加密系统包括密钥发生器和真随机数发生器,所述S10中所述中心服务器对智能终端进行云文件表节点的角色分配中还包括;
S01真随机数发生器结合智能终端的连网状态,从智能终端的位序列随机抽取一节点为云文件表节点形成云文件表节点的位序列P1,P2,...,Pi,将该云文件表节点的位序列P1,P2,...,Pi与密钥发生器输出的一组随机位序列K1,K2,...,K3经过异或运算得到随机安全码Ci=Pi+Ki;
所述S40中通过文件的哈希值h在云文件表节点查找对应的分布式哈希表中还包括:
S02利用随机安全码Ci与该随机位序列K1,K2,...,K3进行异或运算解密得云文件表节点的位序列Pi=Ci+Ki。
优选地,所述中心服务器设置有二级加密系统,所述二级加密系统包括PKI加密器,用以对存储于分布式私有云上的文件设置其读取权限,所述S20中所述用户A将文件通过智能终端上传至分布式私有云还包括:
S03对上传文件通过PKI加密器用用户A私钥加密;所述S40之后还包括:
S04用户B获取文件读取权限的公钥,使用公钥解密文件进行读取。
优选地,所述中心服务器设置有二级加密系统,所述二级加密系统包括PKI加密机器,用以对存储于分布式私有云上所分解的文件块设置其读取权限,所述S20中所述用户A将文件通过智能终端上传至分布式私有云还包括:
S03对上传文件通过PKI加密器所分解的文件块使用用户A私钥加密;所述S40之后还包括:
S04用户B获取全部或部分文件块读取权限的公钥,用户B使用公钥解密文件块进行读取。
本发明还公开了基于分布式私有云的文件存储及读取装置,用于实现上述方法,其包括:
建网模块,用于数个智能终端通过登录私有云APP,彼此之间建立P2P分布式的私有云连接,智能终端,用于根据自身的存储空间及边缘计算能力向私有云捐献云资源;私有云根据云资源对数个智能终端进行角色分配,其中角色有且不限于:中心服务器用于私有云网络的数据通信;控制节点用于根据任务分配云资源,及集合且传送任务最终结果;云存储节点用于接受私有云的存储任务;云文件表节点用于接受文件表的存储任务;
存储模块,用于用户A通过所在的智能终端将文件上传至私有云,云中控制节点对文件生成相应的哈希值h,将文件分解成n个文件块,将每个文件块存储到m个云存储节点,m为按文件使用属性给出的冗余数,n的取值由文件容量大小结合云资源来决定;将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点;
链接模块,用于对文件的哈希值h生成唯一匹配的链接标识,将该链接标识分享至用户B所在的其中一智能终端;
读取模块,用于识别该链接标识获取文件的哈希值h,通过文件的哈希值h在云文件表节点查找对应的分布式哈希表,以通过分布式哈希表中的存储地址获取m个存储地址的n个文件块,拼装所获取的n*m文件块且传送至用户B所在的其中一智能终端,以读取文件。
优选地,还包括:
一级加密模块,用于真随机数发生器结合智能终端的连网状态,从智能终端的位序列随机抽取一节点为云文件表节点形成云文件表节点的位序列P1,P2,...,Pi,将该云文件表节点的位序列P1,P2,...,Pi与密钥发生器输出的一组随机位序列K1,K2,...,K3经过异或运算得到随机安全码Ci=Pi+Ki;及利用随机安全码Ci与该随机位序列K1,K2,...,K3进行异或运算解密得云文件表节点的位序列Pi=Ci+Ki。
优选地,还包括:
二级加密模块,用于对上传文件通过PKI加密器用用户A私钥加密,及用户B获取文件读取权限的公钥,使用公钥解密文件进行读取;或者是,用于对上传文件通过PKI加密器所分解的文件块使用用户A私钥加密,及用户B获取全部或部分文件块读取权限的公钥,用户B使用公钥解密文件块进行读取。
本发明技术方案对智能终端与中心服务器间建立P2P分布式云网路,利用智能终端分散空闲的存储资源和计算资源捐献为云资源,将各智能终端闲余存储资源捐献为云资源用以文件存储,与中心化云存储方式相比,减省了成本的投入。
本发明的私有云将待存储文件分解为n个文件块,分别存储于m个云存储节点,再将将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点,通过这样的哈希处理完成文件在私有云上的存储。这样的云存储,私密性高且数据传输更高效,任务节点可以很快地分配到云资源,无需通过外网接入,就能快速地完成存储或计算任务。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明基于分布式私有云的文件存储及读取方法一实施例的方法流程图;
图2为本发明基于分布式私有云的文件存储及读取方法另一实施例的方法流程图;
图3为本发明基于分布式私有云的文件存储及读取方法又一实施例的方法流程图;
图4为本发明基于分布式私有云的文件存储及读取方法再一实施例的方法流程图;
图5为本发明本发明基于分布式私有云的文件存储及读取装置一实施例的功能模块图;
图6为本发明本发明基于分布式私有云的文件存储及读取装置另一实施例的功能模块图,
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如图1-6所示,本发明提出的一种基于分布式私有云的文件存储及读取方法,包括如下步骤:
S10数个智能终端通过登录私有云APP,彼此之间建立P2P分布式的私有云连接,智能终端,用于根据自身的存储空间及边缘计算能力向私有云捐献云资源;私有云根据云资源对数个智能终端进行角色分配,其中角色有且不限于:中心服务器用于私有云网络的数据通信;控制节点用于根据任务分配云资源,及集合且传送任务最终结果;云存储节点用于接受私有云的存储任务;云文件表节点用于接受文件表的存储任务;
S20用户A通过所在的智能终端将文件上传至私有云,云中控制节点对文件生成相应的哈希值h,将文件分解成n个文件块,将每个文件块存储到m个云存储节点,m为按文件使用属性给出的冗余数,n的取值由文件容量大小结合云资源来决定;将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点;
S30对文件的哈希值h生成唯一匹配的链接标识,将该链接标识分享至用户B所在的其中一智能终端;
S40识别该链接标识获取文件的哈希值h,通过文件的哈希值h在云文件表节点查找对应的分布式哈希表,以通过分布式哈希表中的存储地址获取m个存储地址的n个文件块,拼装所获取的n*m文件块且传送至用户B所在的其中一智能终端,以读取文件。
在本发明实施例中,本发明基于TCP/IP协议将智能终端和中心服务器通过Internet构建为一个P2P分布式私有云,智能终端通过P2P对等网络连接,彼此平等,即可以提供服务又可以接受服务,也可以同时兼具不同的角色,智能终端可以为分散的、闲散的、具有一定的存储能力和边缘计算能力的智能终端,根据自己资源需求向私有云捐献资源,比如加入私有云的智能终端可以选择自己的硬盘、内存或存储芯片全共享,部分共享或完全不共享,智能终端的计算处理可以为CPU、GPU或AI芯片,同样也可以选择全部共享、闲时共享或完全不共享,以此方式向私有云捐献资源形成云资源。中心服务器用于智能终端之间的连网通信及私有云角色的分配;控制节点用于负责云资源分配及协调,比如若某节点在任务执行当中突然掉网,控制节点会马上分配新资源节点接棒执行掉网节点的任务。私有云角色的分配有且不限于:中心服务器、控制节点、云存储节点、边缘计算节点,角色的功能定义参照计算机云领域相关概念的定义。控制节点由智能终端连网在线状态及带宽情况择优选取。应该理解地是,各种角色在私有云网络中均为动态调节使用。
私有云APP为一种私有云的应用软件,用于管理分散的、闲散的、具有一定的存储能力和边缘计算能力的智能终端及云资源的使用。
根据私有云的需要,角色还可以包括中转服务器,比如中央服务器协助其它智能终端连网,若连网穿透不成功,则也可同时作为中转服务器帮助其它智能终端传输中转的数据。在手机移动数据网路和对称路由的情况下,网路穿透是较困难的,通常需要中转服务器中转接入智能终端或分布式私有云。
本发明的私有云将待存储文件分解为n个文件块,分别存储于m个云存储节点,再将将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点,通过这样的哈希处理完成文件在私有云上的存储。这样的云存储,私密性高且数据传输更高效,任务节点可以很快地分配到云资源,无需通过外网接入,就能快速地完成存储或计算任务。
本发明的文件上传至私有云后,云中控制节点对文件生成相应的哈希值h,同时记录下所属的n个文件块的m个存储地址,n、m均应理解为自然数。将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点。
本发明由文件的哈希值h生成唯一匹配的链接标识,分享至用户B开始文件的读取,用户B点击链接标识以识别并获取文件的哈希值h,由文件的哈希值h查找对应的分布式哈希表,再从分布式哈希表中获取存储地址,根据存储地址寻找文件块,拼装文件块传送到用户B进行读取。分布式哈希表利用哈希算法的平衡性、单调性、分散性和低负载性,对节点进行增加和删除以保证私有云的平衡。
优选地,所述m为文件使用属性给出的冗余数,其中文件使用属性包括文件使用时段长短、读取频次和文件存储时间。
优选地,所述n为1024bit的整数倍。
在本发明实施例中,本发明中的m为冗余数,根据文件使用属性给出,而使用属性由文件使用时段长短和频率,即时频分析,及文件存储时间来决定,n为1024bit的整数倍,如视频文件根据网络带宽情况对文件切块,以减少丢包和文件碎片。不同的文件根据自已属性被分解存储。
优选地,所述中心服务器包括一级加密系统,一级加密系统包括密钥发生器和真随机数发生器,所述S10中所述中心服务器对智能终端进行云文件表节点的角色分配中还包括;
S01真随机数发生器结合智能终端的连网状态,从智能终端的位序列随机抽取一节点为云文件表节点形成云文件表节点的位序列P1,P2,...,Pi,将该云文件表节点的位序列P1,P2,...,Pi与密钥发生器输出的一组随机位序列K1,K2,...,K3经过异或运算得到随机安全码Ci=Pi+Ki;
所述S40中通过文件的哈希值h在云文件表节点查找对应的分布式哈希表中还包括:
S02利用随机安全码Ci与该随机位序列K1,K2,...,K3进行异或运算解密得云文件表节点的位序列Pi=Ci+Ki。
优选地,所述中心服务器设置有二级加密系统,所述二级加密系统包括PKI加密器,用以对存储于分布式私有云上的文件设置其读取权限,所述S20中所述用户A将文件通过智能终端上传至分布式私有云还包括:
S03对上传文件通过PKI加密器用用户A私钥加密;
所述S40之后还包括:
S04用户B获取文件读取权限的公钥,使用公钥解密文件进行读取。
优选地,所述中心服务器设置有二级加密系统,所述二级加密系统包括PKI加密机器,用以对存储于分布式私有云上所分解的文件块设置其读取权限,所述S20中所述用户A将文件通过智能终端上传至分布式私有云还包括:
S03对上传文件通过PKI加密器所分解的文件块使用用户A私钥加密;所述S40之后还包括:
S04用户B获取全部或部分文件块读取权限的公钥,用户B使用公钥解密文件块进行读取。
在本发明实施例中,所有文件及文件块都需用户A的私钥加密,只有获取了文件或文件块的授权的私钥密令才能读取。文件的读取权限由用户A自定义。文件读取权限保护通过对私有云设置PKI加密机制来实现,比如A用户的文件授权读写权限给B用户,A用户采用自己的私钥对文件进行加密,A用户发送自己的数据签名给B用户验证该签名,B用户使用A用户授权读写权限的口令(公钥)对该签名进行解密。
本发明还公开了基于分布式私有云的文件存储及读取装置,用于实现上述方法,由于采用了所述方法的所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。其包括:
建网模块10,用于基于TCP/IP协议将智能终端与中心服务器之间建立P2P分布式私有云的连接,其中智能终端,用于根据自身的存储空间及边缘计算能力向私有云捐献资源,生成云资源;中心服务器,用于与智能终端之间建立通信连接,接收待存储的文件并根据云资源对智能终端进行角色分配,其中角色有且不限于控制节点、云存储节点和云文件表节点;
存储模块20,用于用户A将文件通过智能终端上传至分布式私有云,云中控制节点对文件生成相应的哈希值h,将文件分解成n个文件块,将每个文件块存储到m个云存储节点,m为按文件使用属性给出的冗余数,n的取值由文件容量大小结合云资源来决定;将文件的哈希值h与n个文件块的n*m个存储地址建立映射关系,将该映射关系以分布式哈希表形式写入云文件表节点;
链接模块30,用于对文件的哈希值h生成唯一匹配的链接标识,将该链接标识分享至用户B所在的其中一智能终端;
读取模块40,用于识别该链接标识获取文件的哈希值h,通过文件的哈希值h在云文件表节点查找对应的分布式哈希表,以通过分布式哈希表中的存储地址获取m个存储地址的n个文件块,拼装所获取的n*m文件块且传送至用户B所在的其中一智能终端,以读取文件。
优选地,还包括:
一级加密模块50,用于真随机数发生器结合智能终端的连网状态,从智能终端的位序列随机抽取一节点为云文件表节点形成云文件表节点的位序列P1,P2,...,Pi,将该云文件表节点的位序列P1,P2,...,Pi与密钥发生器输出的一组随机位序列K1,K2,...,K3经过异或运算得到随机安全码Ci=Pi+Ki;及利用随机安全码Ci与该随机位序列K1,K2,...,K3进行异或运算解密得云文件表节点的位序列Pi=Ci+Ki。
优选地,还包括:
二级加密模块60,用于对上传文件通过PKI加密器用用户A私钥加密,及用户B获取文件读取权限的公钥,使用公钥解密文件进行读取;或者是,用于对上传文件通过PKI加密器所分解的文件块使用用户A私钥加密,及用户B获取全部或部分文件块读取权限的公钥,用户B使用公钥解密文件块进行读取。
场景应用:
首先,用户在手机、移动终端或个人电脑下载并登录私有云APP,注册用户账号,获取私人密钥,登录后,选择本机设备进行绑定,输入本机设备信息,包括内网IP地址、外网IP地址、设备品牌、型号等,报送到中心服务器,做为私有云的节点之一;设定可捐献的存储空间,选择待保存文件上传至私有云,文件按分布式文件算法将文件分解为n个文件块,并将每个文件块分别存到m个云存储节点。每个文件生成一个唯一的哈希名h,将文件的哈希名h或二维码链接发给需分享文件的用户B,用户B根据所获得的私人密钥打开所分享的文件进行读取。
获得云存储节点信息,手机、移动终端或个人电脑根据中心服务器给出的端口进行连接,若穿透成功,则直接P2P通讯,若不能成功穿透,则使用附近节点作为中转服务器进行中转。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。