技术领域
[0001] 本发明涉及云存储,特别涉及一种数据文件可靠存储方法。
相关背景技术
[0002] 随着信息技术的飞速发展,大量数据源带来数据规模的爆发式增长,对大数据进行复杂计算已经远远超过单台计算机的处理能力,由此推动了对大数据云计算系统的改进。云计算系统中将需要进行复杂计算的大数据划分成小块后,分交由多台DataNode并行处理,并将局部计算结果整合得出最终结果。然而在异构的大数据环境中,存在实时传输的、持续产生的、非结构化数据。例如传感器实时产生的监控数据,社交网络产生的实时通信数据。面对这些始终变化着的大数据,如果不能对其进行高效率的实时处理,将错过数据块中携带的关键信息。现有的云计算系统无法整合来自多个异构数据源的数据,包括数值计算、数据挖掘和模型预测,实时地给出用户关心的结果,也无法跨不同服务器共享存储资源。即无法满足多路径环境和云计算系统多节点访问存储需求;包括对访问冲突的防止和资源均衡的实现。
具体实施方式
[0015] 下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0016] 本发明的一方面提供了一种数据文件可靠存储方法。图1是根据本发明实施例的数据文件可靠存储方法流程图。本发明用于大数据处理的云计算系统包括多个DataNode。每个DataNode包括:
[0017] 划分单元,将接收到的数据根据数据块名划分,并通过与数据块名对应的通道传送给中继单元;还用于将来自中继单元的结果数据传输给对应的云存储服务器;
[0018] 中继单元,接收来自划分单元划分好的数据,并将接收到的数据放入以待处理业务名称命名的队列中,基于各待处理业务的优先级开启待处理业务,并将待处理业务发送给计算单元;接收来自计算单元的结果数据,并转发给划分单元;
[0019] 计算单元,用于基于开启的待处理业务,对来自中继单元的数据进行计算,并向中继单元输出处理之后的数据块。
[0020] 其中,划分单元实现DataNode与外界节点之间的数据转发。划分单元使DataNode的数据传输和内部的逻辑计算隔离。具体的,在划分单元中将输入数据按数据块名划分,并将数据传送给中继单元。中继单元根据数据和当前DataNode的待处理业务的关联关系,维护一个针对所有处于就绪状态的待处理业务的分层队列。中继单元根据DataNode的负载确定启动多少个业务,并从分层队列中选择相应数量的、优先级最高的待处理业务启动。此外,中继单元还将数据传送给执行待处理业务的计算单元,并接收经过计算单元处理后的结果数据。
[0021] 在包括上述DataNode的云计算系统中,对输入或结果数据的划分、融合和处理都在内存中完成,为保证系统计算结果的准确性,优选地,每个DataNode还包括数据备份单元。当中心调度节点收到计算单元处理、计算完毕的结果数据时,通过对应的通道发送给数据备份单元,数据备份单元按结果数据名将结果数据保存在刀片磁盘上,按照结果数据和云存储服务器的关联关系,将结果数据发送到以云存储服务器命名的共享内存队列上,由划分单元统一发送。
[0022] 上述四个单元之间通过显式的进程间通信方法进行信息的共享和复用,通过相互协作共同构成了云计算系统的节点。
[0023] 此外,中继单元还进一步地在端口上监听客户端的请求,建立连接,并将连接派发给合适的计算单元执行。每个DataNode管理客户端的多个连接请求,利用I/O复用接口。划分单元、中继单元和数据备份单元都是通过I/O复用接口管理多个事件源,并通过通道方式耦合。
[0024] 中继单元和数据备份单元通过I/O复用接口管理用于各单元之间数据传输的通道端口。所有单元并行处理并异步执行逻辑。中继单元还在DataNode启动时进行初始化和监听工作。中继单元监听指定端口并接收来自外部节点的连接请求并初始化计算单元的线程。中继单元根据每个计算单元的线程的负载情况确定将封装成业务的数据连接分配给哪一个线程执行。
[0025] 云计算系统采用自适应负载均衡的策略,确定中继单元启动多少个线程,以及接收到的新业务放入哪一个线程执行。具体的,中继单元实时监控DataNode的负载,当CPU占用率高于阈值时,随机选择线程,在其业务处理结束之后关闭线程,减少DataNode的并发量;将连接分配到具有最少连接的线程上去,分配的方式是将连接封装成业务发送到的业务队列中。
[0026] 划分单元用于对等节点的数据传输,包括接收来自客户端的数据和向云存储服务器推送的结果数据,划分单元使DataNode的数据传输和上层应用逻辑完全分离。为了管理多个I/O数据源,划分单元使用I/O复用接口模型。参与数据传送的双方在正式传送数据块前进行一次协议,云存储服务器通知客户端前一次数据块传送终止的位置。划分单元根据I/O复用接口异步读写的特性,实现一个数据传输状态机,为数据的断点续传提供支持。
[0027] 每个线程在初始化时启动划分单元,当线程的业务队列中有中继单元发送的业务时,划分单元取出业务中的连接端口,加入到自己的I/O复用接口事件循环中。划分单元从连接中读取数据并按数据的名称划分,当属于某数据的数据块第一次被划分单元接收时,划分单元建立数据块名对应的通道,以写标志打开该通道并传送数据;同时将数据块名通过套接字发送给中继单元,中继单元收到数据块名后,以读标志打开该数据块名对应的通道,接收划分单元发送的划分完毕的数据。
[0028] 中继单元根据DataNode负载确定启动的业务算子的数量,启动次序是依据业务优先级计算的,优先级的确定包括该业务在整个业务中的重要性、DataNode的运行状况。中继单元通过服务器实时获取数据块和外部处理业务的关联关系,将接收到的数据块放入业务名对应的队列中。
[0029] 所述数据备份单元,在结果数据保存在刀片磁盘之后,赋给每条数据块一定的过期时间并定期将它们从刀片磁盘上删除。当客户端的发送速度大于云存储服务器的处理速度时,数据包在客户端内核的缓冲区中堆积导致无法发送时,数据备份单元在云存储服务器中形成缓存。
[0030] 云计算系统节点在划分单元中实现了定位发送协议,用以定位数据块上次的发送位置,并从备份单元中取出相应位置的数据实现数据块的恢复。类似于划分单元与中继单元协作完成数据传输的方式,数据备份单元长期监听一个指定的端口并加入到I/O复用接口句柄中,当接收到中继单元发送的结果数据名时,以读标志打开通道并将通道文件描述符加入到I/O复用接口循环中。数据备份单元从通道中持续读取处理完毕的结果数据,存入以结果数据名的刀片磁盘阵列中。刀片磁盘阵列中的数据块以键值对形式存储,键值是数据块的时间戳,方便重传时从硬盘队列中快速定位数据块。
[0031] 数据备份单元通过查询服务器上结果数据与云存储服务器的关联关系,将已经在刀片磁盘阵列中备份好的数据发送到以云存储服务器命名的共享内存队列中,为了让划分单元在接收和发送数据时呈现一致的行为,数据备份单元将云存储服务器名封装成业务放到业务队列中,划分单元取出业务中的云存储服务器名,从相应的共享内存队列中取出数据,并根据该云存储服务器的配置发送数据。
[0032] 本发明的云计算系统采用虚地址机制以允许云计算系统中各个DataNode访问刀片磁盘阵列。一旦某个DataNode出现故障,刀片磁盘阵列访问网关能够在各个DataNode间进行切换,以提供刀片磁盘阵列访问的高可用性。同时,采用基于反馈的虚地址均衡策略,将虚地址合理分配到云计算系统各个DataNode,保证刀片磁盘阵列的处理能力和服务质量。
[0033] 具体的刀片磁盘阵列数据访问方法包括以下内容:
[0034] (1)提供访问刀片磁盘阵列的存取路径列表,每条存取路径包括虚地址、端口和通道ID。通过每条存取路径获取对应的逻辑磁盘。其中,该逻辑磁盘是刀片磁盘阵列在展现层的逻辑映射。
[0035] 云计算系统所有节点的同一磁盘阵列的逻辑单元号信息完全一致;所有展现层的存取路径列表完全一致;每个磁盘阵列都与唯一的虚地址一一对应。具体地,逻辑单元号添加到云计算系统所有DataNode的磁盘阵列中,每个DataNode允许多个磁盘阵列,但同一磁盘阵列有且只有一个逻辑单元号。任意展现层可访问任意磁盘阵列和逻辑单元号信息。
[0036] 通过云计算系统组件管理器来实现虚地址机制。该组件管理器包括云平台数据管理器、本地数据管理器和消息管理器。
[0037] 其中,云平台数据管理器用于对云计算系统的各种事件做出反应和决策。其中,所述事件包括虚地址的创建、删除、链路异常。本地数据管理器用于提供虚地址及块存储操作的元数据。本地资源管理中与虚地址及块存储相关的元数据运行的逻辑关系由云平台数据管理器进行决策。云平台数据管理器配置本地元数据。
[0038] 消息管理器用于云平台数据管理器和本地数据管理器之间的消息传递以及云计算系统中成员关系管理。
[0039] 具体地,在云存储系统中,采用以下方式管理虚地址:
[0040] 步骤S11、采用本地元数据创建数据块向量:<虚地址,刀片磁盘阵列,逻辑单元号>。
[0041] 步骤S12、设置数据块向量的属性。具体地,数据块向量属性包括资源的启动顺序等。
[0042] S13、若属性设置失败,则删除数据块向量;若属性设置成功,则将数据块向量映射至展现层;若数据块向量映射至展现层失败,则删除数据块向量;若资源向量映射至展现层成功,则更新资源向量数据库信息。
[0043] 其中,资源向量数据库存储在所述数据备份单元。
[0044] (2)基于反馈将虚地址分配到云计算系统各个DataNode,使得云计算系统各个DataNode均衡负载;其中分配虚地址时迭代执行以下操作:
[0045] 步骤S21、设置可分配虚地址最小冗余量Mmin。
[0046] 步骤S22、根据公式Mi=Mn+k1*Δt*C/L-k2*Rn/C计算云计算系统各个DataNode的虚地址冗余量;
[0047] 其中Mn为上次时间戳到达时由云计算系统的中继单元传入DataNode的负载冗余量,k1*Δt*C/L为时间段Δt内DataNode完成的负载,k2*Rn/C为时间段Δt内为云计算系统的中继单元添加新请求而增加的负载。其中,k1、k2为预定义系数;Rn为Δt时间段内增加的请求数量;C为DataNode的性能;L为DataNode的当前负载;Δt为当前时间与上次时间戳到达时的时间差。
[0048] 步骤S23、选取云计算系统的满足条件Mi>Mmin的所有DataNode,Mi为云计算系统节点的虚地址冗余量;若云计算系统不存在满足该条件的DataNode,则重新设置可分配虚地址最小冗余量,直至选取到满足该条件的DataNode。
[0049] 步骤S24、将选取的DataNode加入到候选集合。
[0050] 步骤S25、计算候选集合中各个DataNode的权值。
[0051] 具体地,根据公式W=C/L计算候选集合中各个DataNode的权值。
[0052] 步骤S26、选取候选集合中权值最大的DataNode。
[0053] 步骤S27、计算候选集合中权值最大的DataNode的负载变化值。
[0054] 具体地,-k1*Δt*C/L+k/C为Δt时间内权值最大的DataNode的负载变化值,k为自定义参数。因此,权值最大的DataNode的当前负载为Li-k1*Δt*C/L+k/C,其中Li为上次时间戳到达时由云计算系统的中继单元传入权值最大的DataNode的负载值。
[0055] 步骤S28、根据候选集合中权值最大的DataNode的负载变化值,修改候选集合中权值最大的DataNode的虚地址冗余量。
[0056] 具体地,根据公式M=Mi+k1*Δt*C/L-k/C修改候选集合中权值最大的DataNode的虚地址冗余量;其中Mi为权值最大的DataNode的虚地址冗余量,-k1*Δt*C/L+k/C为Δt时间内权值最大的DataNode的负载变化值,也就是Δt时间内权值最大的DataNode的虚地址冗余量的变化值。因此,权值最大的DataNode的虚地址冗余量修改为权值最大的DataNode的原虚地址冗余量与Δt时间内权值最大的DataNode的负载变化值之差。
[0057] 在本发明的大数据云计算系统中,N个刀片磁盘位于组件管理器一侧,且每个刀片磁盘阵列被分为大小相等的盘片,每个刀片磁盘内的盘片的编号按照地址从低到高排序;所述N个刀片磁盘各自具有刀片阵列ID,各盘片具有盘片标识,所述盘片标识由所述刀片阵列ID与所述盘片的编号组合得到;
[0058] 云计算系统的并行计算任务的存储空间由目标刀片磁盘组成;所述目标刀片磁盘组成过程如下:组件管理器监测所述盘片的分配状态,以及所述N个刀片磁盘的热度;在所述组件管理器在接收到并行计算任务创建请求后,确定将要创建的并行计算任务的存储空间需求;依据所述盘片的分配状态确定处于未分配状态的盘片;从处于未分配状态的盘片中选择M个盘片作为目标刀片磁盘,所述M个盘片的存储空间大于或等于所述存储空间需求;
[0059] 所述M个盘片各自位于不同的刀片磁盘;所述组件管理器响应所述并行计算任务创建请求在所述目标刀片磁盘中构建所述并行计算任务;
[0060] 所述并行计算任务在运行过程中若有数据存储需求,则首先获得所述目标刀片磁盘的标识,向所述目标刀片磁盘发送热度查询请求,在所述热度查询请求中携带所述目标刀片磁盘的标识;
[0061] 所述并行计算任务接收所述M个盘片对应的刀片磁盘返回的热度;
[0062] 所述并行计算任务将需要存储的数据划分为小于M个目标数据,按照所述M个盘片对应的刀片磁盘的热度从低到高,将各目标数据分别存储到所述目标刀片磁盘中的各盘片。从系统层面上来看,实现过程包括:
[0063] 101:组件管理器监测盘片的分配状态以及所述N个刀片磁盘的热度;所述热度用刀片磁盘当前或者综合历史数据统计得到的数据吞吐量,或者数据吞吐量占对应刀片磁盘的数据存储能力的比例。
[0064] 102:所述组件管理器在接收到并行计算任务创建请求后,确定将要创建的并行计算任务的存储空间需求;依据所述盘片的分配状态确定处于未分配状态的盘片;从处于未分配状态的盘片中选择M个盘片作为目标刀片磁盘,所述M个盘片的存储空间大于或等于所述存储空间需求;所述M个盘片各自位于不同的刀片磁盘;
[0065] 由于不同的并行计算任务被使用的可能性是不同的,因此通过对盘片的选择性分配可以达到第一次均衡。
[0066] 103:所述组件管理器响应所述并行计算任务创建请求在所述目标刀片磁盘中构建并行计算任务;并行计算任务获知自己被分配的目标刀片磁盘,以及这些目标刀片磁盘所处的位置。
[0067] 104:所述并行计算任务运行过程中若有数据存储需求,则首先获得所述目标刀片磁盘的标识,向所述目标刀片磁盘发送热度查询请求,在所述热度查询请求中携带所述目标刀片磁盘的标识。
[0068] 在并行计算任务一侧需要保存所述目标刀片磁盘中各盘片分别对应到哪一个刀片磁盘;基于此,并行计算任务查询热度可以不必经由组件管理器来查询。
[0069] 105:所述并行计算任务接收所述M个盘片对应的刀片磁盘返回的热度;
[0070] 106:所述并行计算任务将需要存储的数据划分为小于或等于M/2个目标数据,按照所述M个盘片对应的刀片磁盘的热度从低到高,将各目标数据分别存储到所述目标刀片磁盘中的各盘片。在本发明实施例中特别设定刀片磁盘的标识组成方式,方便后续刀片磁盘的查找;另外,并行计算任务的刀片磁盘分配过程中使得并行计算任务能够分配到较为合适的刀片磁盘,可以减少拥塞;另外,将需要存储的数据进行划分,按照刀片磁盘的热度再次进行数据分配,可以提高数据存储的安全性。
[0071] 所述刀片阵列ID为P位的十六进制数值,所述盘片标识为Q位的十六进制数值;每个盘片的存储空间为R位;所述方法还包括:
[0072] 所述并行计算任务在确定需要进行访存操作后,确定所述访存操作指定的虚地址;所述目标刀片磁盘由其包含的各盘片按照所述各盘片所在的刀片阵列ID从低到高依次排序组成,所述虚地址以所述目标刀片磁盘的起始地址为起始虚地址顺序编号获得;在所述并行计算任务中存储有地址映射表,所述地址映射表的表项包含:虚拟盘编号、盘片标识;
[0073] 所述并行计算任务计算所述虚地址与所述R的比值取整得到所述虚地址的虚拟盘编号,计算所述虚地址与所述R的比值取余得到偏移量;
[0074] 所述并行计算任务查找所述地址映射表获得包含所述虚地址的虚拟盘编号的表项,并确定该表项中包含的盘片标识作为目标盘片标识;
[0075] 所述并行计算任务截取所述盘片标识的前P位作为目标刀片阵列ID,向所述目标刀片阵列ID对应的刀片磁盘发送读请求,在所述读请求中包含所述盘片标识以及所述偏移量,使所述盘片标识对应的盘片返回在所述盘片的起始位置偏移所述偏移量对应物理地址的数据。
[0076] 在所述并行计算任务被创建之后,所述方法还包括:若所述并行计算任务需要被删除,则所述目标刀片磁盘中包含的各盘片的分配状态被设置为未分配状态,不删除所述目标刀片磁盘中包含的各盘片已经被写入的数据。在所述目标刀片磁盘中包含的各盘片的分配状态被设置为未分配状态之后,所述方法还包括:在下一次创建新并行计算任务时,所述新并行计算任务所需的盘片以随机方式获取,并且所述获取到的盘片中少于或等于两个盘片属于所述目标刀片磁盘中包含的盘片。
[0077] 所述划分单元还根据数据块大小、刀片磁盘数量及负载情况,通过一组划分向量F动态的将数据块进行划分处理;对于低于选择阈值T的小文件或系统中可用刀片磁盘数量N=l时,利用字节划分策略进行可变划分处理;而在可用刀片磁盘数量为1的前提下,对于超过选择阈值的文件,则利用重构划分策略进行均分处理;将数据块划分处理时,均匀的将划分数据存储至各刀片磁盘中;减少文件元数据量的同时充分利用各刀片磁盘的存储空间。
[0078] 在利用字节划分策略划分数据块时,划分产生的残余子块加密、备份后传输至相应的刀片磁盘中,而划分存储过程中产生的文件划分信息、密钥信息、文件存储目录信息将保存至本地闪存芯片的加密区中。在采用重构划分策略划分数据时,将调用交叉分配函数fc及重构函数fr对划分数据交叉重构处理,重构的各数据块编码冗余、加密处理后将并行传输至对应刀片磁盘中,而划分存储过程中产生的文件划分信息、密钥信息、文件存储目录信息将保存至本地闪存芯片的加密区中。
[0079] 在字节划分策略中,利用刀片磁盘数据块Block时,客户端将根据数据块Block的大小size,可用刀片磁盘数量W将其划分为字节子块和残余子块两部分,其中字节子块由抽取用户文件中的少量字节组成,而残余子块由抽取少量字节后剩余的文件数据组成。数据块划分结束后,客户端将残余子块加密备份后传输至远端相应的刀片磁盘中,而在划分存储过程中产生的文件控制信息将一并存储至本地闪存芯片的加密区中。字节划分策略划分通过以下两个过程对数据块Block划分处理:
[0080] (1)根据数据块Block的大小Size确定位置序列Array的取值范围为1~Size,然后根据数据块Block的大小Size确定位置序列Array的预设大小r,而后在1~Size范围内生成相应数量的随机数作为位置序列Array中各元素,最后将生成的各元素值按大小依次排序。
[0081] 根据数据块Block的大小Size确定位置序列Array的预设大小d,依据系统中可用刀片磁盘的数量N,在所确定的取值范围1-Size内生成N个由小到大排列的种子值Ei(i∈{1,2,3,…,N}),此组种子值简称为种子序列S;最后通过循环函数f生成大小为k的位置序列Array,其中k
[0082] 步骤1:将在1-size范围内随机生成的种子序列S:{E1,E2、E3、…、EN}与刀片磁盘的数量N作为输入值进入第一循环,则循环函数f(Ei,N)=p1i;循环函数每运算一次都将已生成的位置元素数量同d进行比较,若两者相等,则直接退出循环,同时将已生成的位置元素排序后生成位置序列Array输出;若计算至f(EN,N)时,生成位置元素的数量小于d且循环函数f(EN,N)
[0083] 步骤2:在第二循环中,当i=1时,循环函数为p21,当p21>size或己生成的位置元素数量等于d时,则退出循环,并将已生成的位置元素排序后生成位置序列Array输出;当p21<size且己生成的位置元素数量小于d时,则计算f(E2,N)=p22。
[0084] 当p22>Size且已生成的位置元素数量小于d时,则将种子序列S中的种子值E2及其后面的各种子值删除,并重新生成种子序列S:{E1},同时退出此循环进入下一循环中;若已生成的位置元素数量等于d则退出循环,并将已生成的位置元素排序后生成位置序列Array输出。依次类推,当i=N时,循环函数f(EN,N)=p2N,在p2N>Size的前提下,若已生成的位置元素数小于d则将种子序列S中的种子值EN删除,并重新生成种子序列S:{E1、E2、E3、…、EN-1},同时退出此循环进入下一循环中;若己生成的位置元素数量等于d则退出循环,并将己生成的位置元素排序后生成位置序列Array输出。
[0085] 步骤3:从第二次循环开始,每一次处理完全一致;循环函数运算一次,就将生成的位置元素pji与数据块大小Size进行一次比较。当pji
[0086] (2)当位置序列Array成功生成后,将按照此位置序列Array中各位置元素的值,依次抽取原始文件中对应位置的字节,并将抽取的字节按序排列组成字节子块,字节子块与位置序列Array是成对出现的,两者一起存储至本地闪存芯片中;抽取字节后剩余的数据则称为残余子块,此块存储在远端的刀片磁盘中。
[0087] 所述重构策略的思想是:利用多刀片磁盘数据块Block时,若数据块Block的大小size超过选择阈值T,就将数据块Block划分为多个相同大小的数据块,划分处理完成后,系统并行将各相同大小的数据块传输至多个可用刀片磁盘中;通过并行传输以提高文件存取效率。
[0088] 数据块Block均匀划分时依据的原则是,在提高多刀片磁盘并行存取效率的前提下尽量减少元数据量。将数据块Block划分存储时,首先对其进行分段处理,也就是根据可用刀片磁盘的数量将数据块Block均分,分段处理后产生的每一段称为子块,而每一子块的大小为P,P=Size/N。而后通过划分向量F确定每一子块合适的划分阈值,划分阈值确定后,客户端再利用该划分阈值对各个子块进行划分处理,划分处理后每一子块都将包含一个或者一个以上的存储块,而每一个存储块的大小为Lj;数据块Block划分处理结束后,通过交叉分配函数fc及重构函数fr将生成的各存储块交叉组合成盘块,各盘块与刀片磁盘之间保持相应的映射关系;盘块的大小Bi以存储块为基本单位并且其长度是不定长的,默认为N个存储块,如不足N个存储块时,则以实际存储块的数量为单位进行组合;最后通过网络将各盘块并行发送至相对应刀片磁盘中。
[0089] 数据块Block划分处理完成后,客户端将生成的各盘块编码冗余及加密处理后并行传输至远端的各刀片磁盘中,与此同时将文件控制信息一并存储至本地闪存芯片的加密区中。用户获取所需数据块Block时,客户端将读取闪存芯片中的文件控制信息与各刀片磁盘建立通信连接,并行下载所需的各盘块;与此同时客户端将获取的各盘块解密拼装成用户所需的数据块Block。
[0090] 重构划分策略通过以下两个阶段对数据块Block划分存储:
[0091] (1)数据块Block分段处理结束后,若生成的各子块大小P小于划分向量F规定的最小划分阈值,则客户端利用字节划分策略对各段进行划分处理;若生成的各子块大小P大于划分向量F规定的最小划分阈值,则客户端通过划分向量F以确定最佳划分阈值Zl,而后再利用此阈值对各子块进行划分处理,各子块划分处理的具体过程为:
[0092] ①定义一组划分向量F={Z0,Z1,Z2,Z3,…,Zt,…,Zs),其中,Z0
[0093] ②数据块Block分段处理结束后,客户端将通过划分向量F以确定最合适的划分阈值Zt。首先,客户端将生成的各子块依次与划分向量F中的每个划分阈值进行计算,不同的划分阈值可得到不同的划分数量S;当各子块的大小P能够被Zt整除时,则划分数量S=P/Zt,当各子块不能够被Zt整除时,则划分数量 为向下取整操作;而后,客户端将计算所得的各划分数量S依次与可用刀片磁盘数量N进行比较;若其中存在划分数量S≤N时,则取S最接近于刀片磁盘数量N时的划分阈值为最佳划分阈值Zt;若所得划分数量S均大于刀片磁盘数量N时,则取S modN最接近于N时的划分阈值为最佳划分阈值Zt;最后,客户端利用最佳划分阈值Zt对各子块进行划分处理。
[0094] ③当各子块的大小P不大于划分向量F中的最小划分阈值Z0时,调用字节划分策略进行划分处理时,每一个位置序列的预设大小r都是相等的;当各子块划分处理结束后,客户端将各残余子块编码冗余处理后并行传输至对应的刀片磁盘中存储。
[0095] 当各子块的大小P大于划分向量F中的最小划分阈值Z0时,利用步骤②所确定最佳划分阈值Zt对各子块进行划分处理。各子块划分处理后,每一个子块都将被划分成一个以上的存储块;若每一子块包含存储块的数量为n,数据块Block也就被划分为n×N个存储块,生成的各存储块分别用chunk1,chunk2,…,chunkn×N表示,且任意两个存储块的交集为空;因此,所有存储块的并集为数据块Block,即chunk1∪chunk2∪…∪chunkn×N=Block。在划分处理过程中,若各子块均能够被最佳划分阈值Zt整除,则生成的各存储块的大小Lj就是划分阈值Zt的大小;若各子块不能够被最佳划分阈值Zt整除,则各子块生成的存储块中除最后一块以外,其余各存储块的大小Lj也就是划分阈值Zt的值,而各子块中最后一个存储块的大小为P-(n-1)×Zt;通过划分向量F的作用可使得划分所得存储块更均匀。
[0096] (3)客户端将数据块Block划分处理结束后,调用交叉分配函数fc及重构函数fr将文件Block所包含的n×N个存储块交叉组合成盘块。具体过程为:对各子块中所包含的存储块统一进行序列化处理,若各子块中最后一个存储块与其余存储块的大小不等,则依次将各子块中最后一个存储块的序列号置为n×N-(N-i),其中i为各子块的ID;序列化处理后存储数据块Block中每个存储块都将拥有唯一的序列号A,A∈{l,2,3,…,n×N};而后将所有的存储块通过交叉分配函数fc进行乱序处理,其中,fc={A}mod N,{A}为数据块Block所包含的各存储块的序列号集合,N为存储可用刀片磁盘的数量;存储块的序列号集合{A}通过函数fc计算后将得到N组存储块集合。
[0097] 将所有存储块乱序处理后,再利用重构函数fr分别对每一组存储块集合进行重构处理,通过重构函数fr处理后,每组存储块集合都将包含相同数量的盘块;其中重构函数fr=Ti/N,Ti代表第i组存储块集合中存储块的数量;最后,将各组存储块集合中所包含的各盘块并行传输至相应刀片磁盘中,存储块集合的组数与可用刀片磁盘数量相对应;各组之间并行与对应的刀片磁盘进行交互。
[0098] 在接收来自用户的与云计算系统业务相关的请求时,向用户提供基于HTTP协议的API接口,用户通过调用该API接口来提交其与云计算系统业务相关的请求。当用户需要采用云计算系统服务时,其需要先将自己的算法按照一定的规范打包成开源引擎镜像,并将其上传至开源引擎镜像仓库,之后调用API接口来提交其请求。在用户提交完请求之后,来自用户的与云计算系统业务相关的请求将被接收。
[0099] 在DataNode确定中,当接收到上述请求时,根据云计算系统的DataNode的虚地址信息,确定用于进行上述云计算系统业务的一个以上的DataNode。具体地,物理机上的所有计算任务的分配虚拟资源的总和大于物理机限定范围内的虚拟资源,并且会存在物理机限定范围内的虚拟资源除去所有普通并行计算任务的实际使用虚拟资源的总和后的虚拟资源剩余量不小于DataNode的分配虚拟资源的情形。
[0100] 在对所述刀片磁盘的存储管理中,本发明的云计算系统将多个独立刀片磁盘模拟成一个逻辑磁盘,通过相应的文件划分、加密以及传输机制,实现云端数据块的本地安全处理,提高用户对所拥有数据的管理能力
[0101] 通过闪存芯片加载逻辑磁盘,只有拥有闪存芯片的合法用户才能够加载逻辑磁盘获取所需服务。通过将数据块划分以及加密处理来建立安全存储管理机制。所述将数据块划分处理,确保任何一个刀片磁盘都不会存储用户文件的完整信息,保证用户数据的隐私性。文件划分信息保存至用户端,数据块传输至各刀片磁盘。
[0102] 用户所拥有的闪存芯片是用户合法身份的标识,身份验证通过后,终端设备将根据闪存芯片加载逻辑磁盘中指定的卷文件加载逻辑磁盘;用户通过逻辑磁盘同步完成对多个刀片磁盘的数据管理。当用户通过逻辑磁盘数据块时,用户终端首先对目标文件划分,目标文件被划分为一个或多个存储块;而后加密各存储块以增强存储数据的机密性,最后将各加密块并行传输至多个刀片磁盘中。目标文件划分及加密处理过程中产生的文件控制信息保存至闪存芯片的加密区中,通过将数据的控制信息与数据对象本身进行分离以实现数据块控制权的转移。
[0103] 当用户通过逻辑磁盘读取云计算系统的数据时,终端首先读取闪存芯片中对应文件的控制信息,而后并行从各刀片磁盘下载相应的数据块,最后解密并验证各数据块的完整性;若数据完整性验证成功,则将各数据块拼装重构成所需文件并以明文形式呈现给用户;若数据完整性验证失败,则从对应刀片磁盘下载冗余数据块,恢复丢失或损坏数据。
[0104] 综上所述,本发明提出了一种数据文件可靠存储方法,实现了实时变化的大数据集合的高效实时处理。
[0105] 显然,本领域的技术人员应该理解,上述的本发明的各单元或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
[0106] 应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。