一种云存储系统中使数据均匀分布的方法
技术领域
本申请涉及计算机网络及存储技术领域,尤其涉及一种云存储系统中使数据均匀分布的方法。
背景技术
随着计算机网络,特别是因特网(Internet)的迅猛发展,越来越多的资料被数据化,全球信息存储量每年急剧增长。传统的信息系统概念发生了巨大的变化,这些变化突出地表现在信息的存储、传递、发布以及获取方式所发生的革命性变革。与此同时,大量数据密集型应用,如视频监控,广电行业,数字图书馆,医疗视频图像处理,海量视频在线编辑等,对存储系统的容量,性能,安全性,可扩展性和可用性提出了更高要求。传统的直接数据存储方式过于简单化,过于集中管理而造成了大量数据的堆积。这样需要大量的存储数据的介质,而导致服务器的回应下降乃至崩溃,这样一来就会有大量数据会随着服务器的崩溃而丢失。因此传统的直接数据存储模式渐渐不能满足需求,信息存储的需求和应用的复杂性提出了新的存储模式。
云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。与传统的存储设备相比,云存储不仅仅是一个硬件,而是一个网络设备、存储设备、服务器、应用软件、公用访问接口、接入网、和客户端程序等多个部分组成的复杂系统。各部分以存储设备为核心,通过应用软件来对外提供数据存储和业务访问服务。
云存储具有分布数据的功能,实际上它的数据存储方式是物理上是分布的,逻辑上是集中的,也就是说数据和程序可以不位于一个服务器上,而是分散到多个服务器。这样一个服务器出现问题受影响的只是一小部分数据,而且通过自身的修复机制能在短时间内恢复数据。优点分散控制,集中操作、分级管理、配置灵活、高可靠性,易于维护。
然而在实际应用过程中,仍然会出现部分存储服务节点存储量较高,而仍然存在部分存储服务节点的存储量较少的情形。
发明内容
本申请提供了一种云存储系统中数据均匀分布的方法,能够将数据均匀分布到不同的存储服务节点,
本申请实施例提供的一种云存储系统中使数据均匀分布的方法,存储服务节点启动时,向元数据服务节点注册磁盘信息并定期动态报告磁盘的使用情况;该方法包括如下步骤:
A、客户端向元数据服务节点发出写请求,所述写请求中包括所需的存储空间、文件基本信息、现在要写第几个数据块;
B、元数据服务节点运用哈希算法,从所有可用的存储服务节点中随机出一个,再运用哈希算法在所选的存储服务节点上随机选出一个磁盘,元数据服务节点将所选的存储服务节点以及磁盘的标识作为位置分配信息进行保存;
C、元数据服务节点将位置分配信息发送至客户端;
D、客户端根据所述位置分配信息将数据写入相应位置的磁盘。
E、客户端判断是否写满当前数据块,若是,返回步骤A,否则继续执行步骤F;
F、客户端判断是否完成写入过程,若是结束本流程,否则返回步骤A。
较佳地,该方法进一步包括:
客户端向元数据服务节点请求文件的位置分配信息;请求信息中包含了文件基本信息;
客户端根据位置分配信息按顺序从对应存储服务节点的对应磁盘读取数据块。
较佳地,该方法进一步包括:
G、元数据服务节点判断磁盘是否平衡,若是,执行步骤H;
H、在存储服务节点中找到第一存储服务节点和第二存储服务节点,其中,第一存储节点包含有可用空间或可用空间百分比最大的磁盘,第二存储服务节点包含有可用空间或可用空间百分比最小的磁盘;
I、元数据服务节点发送命令给第二存储服务节点,使其复制部分数据块到第一存储服务节点;复制成功后把元数据中的旧的块地址信息更新为新的块地址信息;
J、元数据服务节点命令第二存储服务节点将已被复制到第一存储服务节点的数据块删除。
较佳地,判断磁盘是否平衡的判断依据是如下之一或其组合:
云存储服务系统中增加或减少磁盘,则不平衡;
磁盘的可用空间或可用空间百分比是否大于第一阈值,若是则平衡,否则不平衡;
每个磁盘可用空间百分比在预定范围内,则平衡,否则不平衡;
可用空间百分比最大的磁盘与可用空间百分比最小的磁盘的可用空间百分比差值超过第二阈值,则不平衡,否则平衡。
较佳地,所述数据块的大小为16MB。
从以上技术方案可以看出,写数据过程将所要写的数据分成多个数据块,将所述数据块均匀写入多个存储服务节点中;读数据过程则根据元数据从多个存储服务节点获取所需的数据;当存储服务节点的容量发生变化时自动均衡,调整数据位置保证数据的完整性和一致性,充分利用数据节点的带宽和磁盘的带宽。
附图说明
图1为数据块在存储服务节点中分布的示意图。
图2a为本申请实施例提供的客户端写数据的流程示意图;
图2b为根据本申请实施例,客户端写入数据的原理框图;
图3a为本申请实施例提供的客户端读数据的流程示意图;
图3b为根据本申请实施例,客户端读数据的原理框图;
图4为本申请实施例提供的存储服务节点的容量动态调整流程示意图。
具体实施方式
本申请云存储系统中使数据均匀分布的方法具体包括两方面技术内容:一方面是客户端写数据过程以及相应的读数据过程,所述写数据过程将所要写的数据分成多个数据块,将所述数据块均匀写入多个存储服务节点中;读数据过程则解决如何从多个存储服务节点获取所需的数据的问题;另一方面是存储服务节点的容量动态调整过程,根据磁盘实时容量动态调整各个存储服务节点的容量分配;特别地,当云存储系统中新增存储服务节点时,自动将其他存储服务节点的数据转移一部分到新增的存储服务节点;当存储服务节点减少前,计算所要减少的存储服务节点中存储的数据并将数据转移到其他存储服务节点。
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
本申请所涉及的云存储系统将元数据和数据分开存储,其中元数据集中存储在元数据服务节点,而数据按一定大小分块的组织方式存储于多个存储服务节点(Chunk),元数据服务节点存储着文件大小,存放位置等文件属性信息。元数据服务节点对实际存放在存储服务节点中的数据起着组织,控制的作用。
图1为根据本申请实施例方案,数据块在存储服务节点中分布的示意图。图1所示的示例中包括3个存储服务节点,其中每个存储服务节点分别包括2个磁盘,存储服务节点和磁盘分别编号。客户端所需要写入的文件1被分割为6个数据块,其中文件1-1写入磁盘1,文件1-2写入磁盘2并以此类推。文件2也被分成6个数据块,其中文件2-1写入磁盘6,文件2-2写入磁盘1,并以此类推。
存储服务节点启动的时候向元数据服务节点注册磁盘信息并定期动态报告磁盘的使用情况。假定数据块的分割大小为16MB。客户端、元数据服务节点、存储服务节点均有此共识。
本申请实施例提供的客户端写数据的处理流程如图2a所示,包括如下步骤:
步骤201:客户端向元数据服务节点发出写请求,所述写请求中包括所需的存储空间;写请求信息中还包含了文件基本信息(文件名、创建时间等)、现在要写第几个数据块。
步骤202:元数据服务节点运用哈希算法,从所有可用的存储服务节点中随机出一个,再运用哈希算法在所选的存储服务节点上随机选出一个磁盘,元数据服务节点将所选的存储服务节点以及磁盘的标识作为位置分配信息进行保存。
步骤203:元数据服务节点将位置分配信息发送至客户端。
步骤204:客户端根据所述位置分配信息将数据写入相应位置的磁盘。
步骤205:客户端判断是否写满当前数据块,若是,执行步骤206,否则继续执行步骤204。
步骤206:客户端判断是否完成写入过程,若是结束本流程,否则返回步骤201。
根据本申请实施例,客户端写入数据的原理框图如图2b所示。
本申请实施例提供的客户端读数据的过程如图3所示,包括如下步骤:
步骤301:客户端向元数据服务节点请求文件的位置分配信息。请求信息中包含了文件基本信息(文件名、创建时间等)。
步骤302:客户端根据位置分配信息按顺序从对应存储服务节点的对应磁盘读取数据块。
本申请的数据平衡过程的基本设计思路是:
元数据服务节点判断磁盘是否平衡,若是,在存储服务节点中找到第一存储服务节点和第二存储服务节点,其中,第一存储节点包含有可用空间或可用空间百分比最大的磁盘,第二存储服务节点包含有可用空间或可用空间百分比最小的磁盘;
元数据服务节点发送命令给第二存储服务节点,使其复制部分数据块到第一存储服务节点;复制成功后把元数据中的旧的块地址信息更新为新的块地址信息;
元数据服务节点命令第二存储服务节点将已被复制到第一存储服务节点的数据块删除。
其中,判断磁盘是否平衡的判断依据可以是如下之一或其组合:
云存储服务系统中增加了新的磁盘,则不平衡;新增磁盘所在的存储服务节点为第一存储服务节点。云存储服务系统中原有的可用空间(或可用空间百分比)最小的磁盘所在的存储服务节点为第二存储服务节点。如果存在多个磁盘可用空间(或可用空间百分比)相同的情形,则随机选取其中一个或将其所在的存储服务节点均作为第二存储节点;
云存储服务系统中要减少磁盘,则不平衡;减少的磁盘所在的存储服务节点为第二服务节点,云存储服务系统中原有的可用空间(或可用空间百分比)最大的磁盘所在的存储服务节点为第一存储服务节点;
磁盘的可用空间(或可用空间百分比)是否大于第一阈值,若是则平衡,否则不平衡;在不平衡的情况下,可用空间(或可用空间百分比)小于第一阈值的磁盘所在存储服务节点为第二存储服务节点,可用空间(或可用空间百分比)最大的磁盘所在的存储服务节点为第一存储服务节点
每个磁盘可用空间百分比在预定范围内,则平衡,否则不平衡;在不平衡的情况下,可用空间百分比最大的磁盘所在的存储服务节点为第一存储服务节点,可用空间百分比最小的磁盘所在的存储服务节点为第二存储服务节点,
可用空间百分比最大的磁盘与可用空间百分比最小的磁盘的可用空间百分比差值超过第二阈值,则不平衡,否则平衡。不平衡的情况下,可用空间百分比最大的磁盘所在的存储服务节点为第一存储服务节点,可用空间百分比最小的磁盘所在的存储服务节点为第二存储服务节点。
以新增磁盘为例,本申请根据磁盘实时容量动态调整各个存储服务节点的容量分配的具体实现过程的过程如图4所示,包括如下步骤:
步骤401:在云存储服务系统中新增加一台存储服务节点(称为第一存储服务节点),该节点包含16个磁盘。
步骤402:云存储服务系统中的各个存储服务节点启动后,向元数据服务节点注册节点信息和磁盘信息。
步骤403:元数据服务节点监控到新的节点和磁盘加入集群。启动平衡机制。
步骤404:在原有的存储服务节点中找出可用空间(或可用空间百分比)最小的磁盘,查找元数据服务节点得知该磁盘存储了那些数据块。称所述磁盘所在的存储服务节点为第二存储服务节点。
步骤405:发送命令给第二存储服务节点复制数据到第一存储服务节点。复制成功后把元数据中的旧的块地址信息更新为新的块地址信息。
例如,可以运用哈希算法随机选取数据块其中一部分(如100个数据块),将这100个数据块复制到新增的磁盘上。
步骤406:元数据服务节点命令第二存储服务节点将已被复制到第一存储服务节点的数据块删除。
步骤407:元数据服务节点判断磁盘是否平衡,如果需要再平衡重复步骤404-406,否则退出平衡机制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。