CN104636286A - 用于数据访问的方法和设备 - Google Patents
用于数据访问的方法和设备 Download PDFInfo
- Publication number
- CN104636286A CN104636286A CN201510067862.0A CN201510067862A CN104636286A CN 104636286 A CN104636286 A CN 104636286A CN 201510067862 A CN201510067862 A CN 201510067862A CN 104636286 A CN104636286 A CN 104636286A
- Authority
- CN
- China
- Prior art keywords
- hash information
- data block
- node
- hash
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/119—Details of migration of file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种用于数据访问的方法和设备,该方法包括:在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,第一哈希信息包括哈希值取值区间与第一节点的对应关系,第一节点为当前分布式存储系统中具有剩余存储空间的节点;存储第一哈希信息和第一哈希信息的标识,第一哈希信息和第一哈希信息的标识用于数据访问。本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的第一哈希信息,并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
Description
技术领域
本发明涉及通信领域,特别涉及一种用于数据访问的方法和设备。
背景技术
目前存储领域正在从中心式网络存储设备(Storage Area Network,SAN)存储向分布式存储系统发展。分布式存储是指将分散的存储资源构成一个整体的存储集群,用户数据分散的存储于这个集群中的不同节点上。分布式存储能带来数据可靠性、性能提升等好处。目前存在的分布式存储系统一般以一致性哈希算法来维护逻辑地址到存储物理区域之间的关系。
分布式存储系统,一般至少有2个以上的节点构成,这里的节点可以理解为是一个物理主机。存储于分布式存储系统上的数据,会被分块存放在分布式存储系统上的不同节点中。
例如,以虚拟化场景为例,分布式存储系统由5个物理节点构成。虚拟机的一个虚拟磁盘对应于分布式存储系统上的一个镜像。假设虚拟磁盘为10G,以4M为力度对虚拟磁盘进行分块,则可以分为10G/4M=2560个块,这些块被均衡的存储于分布式存储系统的节点上。当用户访问某个特定数据块时,分布式存储系统必须知道这个块存储在哪个节点上,并正确的访问对应的数据。一致性哈希算法,就维护了数据块到存储节点的映射关系。
具体地,一致性哈希算法根据以下过程维护数据块和物理节点的对应关系的。一致性哈希算法是将一个输入值经过计算得到一个固定长度的二进制值的计算方法,分布式存储系统中的一致性哈希算法通常输出为0-232范围的散列值,这些值是均衡分布在0-232范围中的。通过查找一致性哈希信息,查找到对应的物理节点。一致性哈希信息包括希值取值区间与节点的对应关系,例如,指分布式存储系统中对物理节点进行哈希计算,获得物理节点唯一的哈希值,不同的哈希值的取值区间对应不同的节点。对数据块的编号进行哈希计算得到的哈希值所处的区间,对应的节点即为该数据块所存储的节点。
例如,有多个节点,分别为节点A、节点B、节点C、节点D、节点E…等,其中节点E对应的哈希值取值区间为[200,600]下面,以用户访问第58号数据块为例进行说明,向哈希算法输入58,获得这个数据块对应的哈希值,假设这里计算得到的哈希值为283,由于283在区间[200,600]中,因此,第58号数据块存放于物理节点E上。
目前的分布式存储系统在上述寻址方案下,当节点加入或退出时,由于需要维持数据的均衡分布和一致性哈希算法的准确性,需要对一致性哈希信息进行改动(更新),将更新后得到的哈希信息替换原来的哈希信息,不可避免的带来数据迁移。当数据迁移发生时,将会导致整个存储系统的性能下降,降低用户体验。
发明内容
本发明实施例提供了一种用于数据访问的方法和设备,该方法能够避免数据迁移,提升用户体验。
第一方面,提供了一种用于数据访问的方法,应用于分布式存储系统中,该方法包括:在该分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,该第一哈希信息包括哈希值取值区间与第一节点的对应关系,该第一节点为当前分布式存储系统中具有剩余存储空间的节点;存储该第一哈希信息和该第一哈希信息的标识,该第一哈希信息和该第一哈希信息的标识用于数据访问。
结合第一方面,在第一种可能的实现方式中,还包括:根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的访问,该已存储的哈希信息包括该第一哈希信息以及生成该第一哈希信息之前生成的其它哈希信息。
结合第一种可能的实现方式,在第二种可能的实现方式中,该根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的访问,包括根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的读访问。
结合第二种可能的实现方式,在第三种可能的实现方式中,该数据块对应第一标识,该第一标识为该已存储的哈希信息的标识中的标识,该根据已存储的哈希信息和该已存储的哈希信息的标识,进行该数据块的读访问,包括:根据该数据块对应的该第一标识,确定与该第一标识对应的哈希信息;根据与该第一标识对应的哈希信息确定与该数据块对应的节点;根据该数据块对应的节点读取与该数据块对应的数据。
结合第一种可能的实现方式,在第四种可能的实现方式中,该根据已存储的哈希信息和该已存储的哈希信息的标识,进行该数据块的访问,包括:根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的写访问。
结合第四种可能的实现方式,在第五种可能的实现方式中,该根据已存储的哈希信息和该已存储的哈希信息的标识,进行该数据块的写访问,包括:确定该数据块的分配结果,其中,该数据块的分配结果包括该数据块已分配对应的实体存储空间或者该数据块未分配对应的实体存储空间;根据该分配结果,进行该数据块的写访问。
结合第五种可能的实现方式,在第六种可能的实现方式中,该分配结果包括该数据块已分配对应的实体存储空间,该数据块对应第一标识,该第一标识为该已存储的哈希信息的标识中的标识,该根据该分配结果,进行该数据块的写访问,包括:根据该数据块对应的该第一标识,确定与该第一标识对应的哈希信息;确定与该第一标识对应的哈希信息是否为该第一哈希信息,根据确定结果,进行该数据块的写访问。
结合第六种可能的实现方式,在第七种可能的实现方式中,该根据确定结果,进行该数据块的写访问,包括:在与该第一标识对应的哈希信息为该第一哈希信息时,根据第一哈希信息确定与该数据块对应的节点;向该数据块对应的节点写入数据。
结合第六种可能的实现方式,在第八种可能的实现方式中,该根据确定结果,进行该数据块的写访问,包括:在与该第一标识对应的哈希信息不是该第一哈希信息时,根据第一哈希信息,确定该数据块对应的节点,向该数据块对应的节点写入数据,并删除根据与该第一标识对应的哈希信息确定的对应该数据块的节点中的该实体存储空间中的数据,更新该数据块对应的该第一标识为该第一哈希信息的标识。
结合第五种可能的实现方式,在第九种可能的实现方式中,该分配结果包括该数据块未分配对应的实体存储空间,该根据该分配结果,进行该数据块的写访问,包括:根据第一哈希信息,确定与该数据块对应的节点,向与该数据块对应的节点写入数据,确定该第一哈希信息的标识为该数据块对应的第一标识。
结合第一至第九种可能的实现方式中的任一种可能的实现方式,在第十种可能的实现方式中,该方法还包括:在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将该第二哈希信息对应的节点中的数据移动到该第一节点的存储空间中,该第二哈希信息为该已存储的哈希信息中的哈希信息;删除该第二哈希信息和对应该第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据该释放存储空间再次生成哈希信息。
第二方面,提供了一种用于数据访问的设备,包括:生成单元,用于在该分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,该第一哈希信息包括哈希值取值区间与第一节点的对应关系,该第一节点为当前分布式存储系统中具有剩余存储空间的节点;存储单元,用于存储该第一哈希信息和该第一哈希信息的标识,该第一哈希信息和该第一哈希信息的标识用于数据访问。
结合第二方面,在第一种可能的实现方式中,还包括:访问单元,用于根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的访问,该已存储的哈希信息包括该第一哈希信息以及生成该第一哈希信息之前生成的其它哈希信息。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,该访问单元根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的读访问。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,该数据块对应第一标识,该第一标识为该已存储的哈希信息的标识中的标识,该访问单元根据该数据块对应的该第一标识,确定与该第一标识对应的哈希信息;根据与该第一标识对应的哈希信息确定与该数据块对应的节点;根据该数据块对应的节点读取与该数据块对应的数据。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,该访问单元根据已存储的哈希信息和该已存储的哈希信息的标识,进行数据块的写访问。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,该访问单元确定该数据块的分配结果,其中,该数据块的分配结果包括该数据块已分配对应的实体存储空间或者该数据块未分配对应的实体存储空间;根据该分配结果,进行该数据块的写访问。
结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,该分配结果包括该数据块已分配对应的实体存储空间,该数据块对应第一标识,该第一标识为该已存储的哈希信息的标识中的标识,该访问单元根据该数据块对应的该第一标识,确定与该第一标识对应的哈希信息;确定与该第一标识对应的哈希信息是否为该第一哈希信息,根据确定结果,进行该数据块的写访问。
结合第二方面的第六种可能的实现方式,在第七种可能的实现方式中,该访问单元在与该第一标识对应的哈希信息为该第一哈希信息时,根据第一哈希信息确定与该数据块对应的节点;向该数据块对应的节点写入数据。
结合第二方面的第六种可能的实现方式,在第八种可能的实现方式中,该访问单元在与该第一标识对应的哈希信息不是该第一哈希信息时,根据第一哈希信息,确定该数据块对应的节点,向该数据块对应的节点写入数据,并删除根据与该第一标识对应的哈希信息确定的对应该数据块的节点中的该实体存储空间中的数据,更新该数据块对应的该第一标识为该第一哈希信息的标识。
结合第二方面的第五种可能的实现方式,在第九种可能的实现方式中,该分配结果包括该数据块未分配对应的实体存储空间,该访问单元根据第一哈希信息,确定与该数据块对应的节点,向与该数据块对应的节点写入数据,确定该第一哈希信息的标识为该数据块对应的第一标识。
结合第二方面的第一至第九种可能的实现方式中的任一种可能的实现方式,在第十种可能的实现方式中,该设备还包括:合并单元,用于在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将该第二哈希信息对应的节点中的数据移动到该第一节点的存储空间中,该第二哈希信息为该已存储的哈希信息中的哈希信息;删除该第二哈希信息和对应该第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据该释放存储空间再次生成哈希信息。
基于上述技术方案,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的系统架构示意图。
图2是根据本发明一个实施例的用于数据访问的方法示意性流程图。
图3是根据本发明一个实施例的哈希环的示意框图。
图4是根据本发明另一实施例的用于数据访问的方法示意性流程图。
图5是根据本发明一个实施例的哈希环的示意框图。
图6是根据本发明一个实施例的哈希环的示意框图。
图7是根据本发明一个实施例的生成哈希信息的示意性流程图。
图8是根据本发明一个实施例的数据访问的示意性流程图。
图9是根据本发明一个实施例的删除旧环的示意性流程图。
图10是根据本发明一个实施例的用于数据访问的设备示意框图。
图11是根据本发明另一实施例的用于数据访问的设备示意框图。
图12是根据本发明另一实施例的用于数据访问的设备示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1是根据本发明实施例的系统架构示意图。如图1所示的分布式存储系统包括三个主机(节点)构成的分布式存储集群,该分布式存储系统作为一种提供存储服务的系统,可应用于虚拟化场景或非虚拟化场景。如图1所示,三台主机(主机1、主机2和主机3)组成了一个分布式存储集群,主机间通过网络互连。主机1和主机2有两块物理磁盘,主机3只有一块物理磁盘,物理磁盘的容量可以是相同,也可以是不同的。本发明实施例并不对主机上运行的虚拟机和应用程序个数作限定。
分布式存储软件部署于每台主机上,当启动分布式存储服务后,主机上的物理磁盘空间就会被加入到分布式存储池中统一管理。图1的系统架构中包括多个虚拟机(Virual Machine,VM):VM1-VM5,多个应用软件(APP):APP1和APP2,和多个虚拟磁盘(Vdisk)Vdisk1-Vdisk7;VM和APP分别代表了虚拟化和非虚拟化场景下的使用方式。vdisk代表通过分布式存储系统虚拟出的虚拟磁盘设备。vdisk和物理磁盘分别作为分布式存储系统的前端和后端存在,本文后续提到分布式存储前端和后端即指vdisk和物理磁盘。vdisk向虚拟机或应用程序直接提供存储服务。vdisk可以理解为是分布式存储系统的客户端,而分布式存储系统则作为服务器端提供服务。
当虚拟机或应用程序需要访问vdisk的某个数据块时,输入输出((Input/Output,IO)请求被提交给vdisk。vdisk再将IO请求交给分布式存储系统。分布式存储系统收到该IO请求后,经过多层哈希计算,获得其对应的物理节点某个物理磁盘的信息,然后将IO请求交给对应节点的物理磁盘处理。
图2是根据本发明一个实施例的用于数据访问的方法示意性流程图。图2所示的方法应用于分布式存储系统中,可以由分布式存储系统中的节点执行,例如,可以由分布式存储系统中的节点的处理器执行,具体地,如图2所示的方法包括:
210,在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,第一哈希信息包括哈希值取值区间与第一节点的对应关系,第一节点为当前分布式存储系统中具有剩余存储空间的节点。
220,存储第一哈希信息和第一哈希信息的标识,第一哈希信息和第一哈希信息的标识用于数据访问。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
应理解,增加或较少节点的个数可以为一个,也可以为多个,本发明实施例并不对此作限定。哈希值的取值区间例如可以为[0-232]或[0-264]等。所有节点中具有剩余存储空间的节点中的每一个节点对应哈希值取值区间的部分区间段。
还应理解,本发明实施例中的哈希信息可以是表格的形式,还可以例如为哈希环的形式,在下文中仅以哈希信息为哈希环的形式进行说明。下文中的哈希环可以等同替换为哈希信息。但本发明实施例并不限于此。
哈希环是指分布式存储系统中对物理节点中的数据块的编号进行哈希计算,获得数据块的哈希值,并以该哈希值进行排序获得的一个环状逻辑结构。例如,分布式存储系统包括6个节点,该6个节点分别为节点A、节点B、节点C、节点D、节点E和节点F,该分布式存储系统对应的哈希信息(哈希环)如图3所示,六个节点将哈希值进行排序获得的一个环状逻辑结构(哈希环)大约6等分,分布式存储系统可以指定对应规则,例如将每一段的顺时针方向的末尾的节点作为存储该数据块的物理节点。例如,如图3所示,节点A、节点B、节点C、节点D、节点E和节点F中任意相邻的两个节点间的区间大约为整个哈希环的1/6,例如,整个哈希环的取值区间可以为[0,232],每两个节点间的距离大约为232/6。
应理解,在实际应用中,每个节点对应的哈希值的区间大小可以有一定的上下波动,例如,如图3所示,6个节点中的每个节点对应的哈希值的区间可以大于整个哈希环的1/6,也可以小于整个哈希环的1/6。每个节点对应的哈希值的取值区间的端点可以为整个哈希环取值区间[0,232]中的任意值,但当其中一个节点的取值区间的端点确定后,为了使得每两个相邻节点间的取值区间大约相等,其他节点的取值区间的端点也基本确定。哈希环中节点的顺序在实际应用中也可以调动。本发明实施例并不对此做限定。
还应理解,本发明实施例中的标识可以为版本号,也就是说,哈希信息的标识可以为哈希信息的版本号,例如,哈希信息的标识可以为数字,例如N个哈希信息的标识可以依次为1、2、3…N。标识还可以为其他形式,例如可以英文字母等,本发明实施例并不对此做限定。在下文中,仅以标识为版本号举例进行相关说明,下文中的版本号可以等同替换为标识。但本发明实施例并不限于此。
应注意,本发明实施例中的节点可以是物理节点,也可以是虚拟节点。本发明实施例并不对此作限定。另外本发明实施例中的数据块可以为虚拟数据块,也可以为物理数据块,在较佳实施例中,数据块为虚拟数据块。
具体地,由于每个节点的磁盘容量不一定相等,如果只是按照节点来计算哈希值的话,会导致数据并不一定均衡存储与每个节点的每个磁盘上。因此,分布式存储系统的哈希环上可以不直接映射物理节点,而是采用虚拟节点来代替物理节点。如图5所示,节点A容量是200G,节点B容量是100G,节点C容量是200G,则在哈希环上,可以按容量比例存放2个虚拟节点A,1个虚拟节点B,2个虚拟节点C,这些虚拟节点都是采用一致性哈希算法计算哈希值,并排序后均衡分布于哈希环上的,因此,当用户写数据时,40%的数据会存储在A节点上,20%的数据会存储在B节点上,40%的数据会存储在C节点上。这样,分布式存储系统就具备了容量和性能的水平扩展性。
具体而言,在分布式存储系统运行中,当加点加入退出时,会生成新的哈希环信息,并将其通过分布式存储服务端存储于物理磁盘中。
假设原始有ABC三个节点,A节点容量200G,B节点容量100G,C节点容量200G,则哈希环如图5所示。当节点D加入时,节点D的集群模块向其它节点广播加入消息,其它节点收到广播信息后进行回应接受节点D加入。此时监控模块需要更新哈希环信息,此时新增一个哈希环,将节点D加入到新的哈希环上。假设此时节点A可用容量只剩100G,节点B容量剩50G,C节点容量只剩100G,新加入的节点D容量为100G,则新的哈希环按照2:1:2:2的比例分布虚拟节点A、虚拟节点B、虚拟节点C、虚拟节点D,新的哈希环如图6所示。为了区别旧哈希环和新哈希环之间的差别,可以采用版本号(标识)区别不同的哈希环。假设旧的哈希环版本号为1,新的哈希环版本号为2。由于2号哈希环采用了之前节点的剩余空间和新加节点的新增空间作为虚拟节点,因此运行一段时间后,数据在整个存储集群中依然是均衡分布的。保证了分布式存储系统的容量的水平扩展能力。
类似的节点退出时,与节点加入时具有类似的处理方式,具体不在详述。
可选地,作为另一实施例,本发明实施例方法还包括:根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的访问,已存储的哈希信息包括第一哈希信息以及生成第一哈希信息之前生成的其它哈希信息。
具体地,如图4所示的方法包括:
410,在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,第一哈希信息包括哈希值取值区间与第一节点的对应关系,第一节点为当前分布式存储系统中具有剩余存储空间的节点。
420,存储第一哈希信息和第一哈希信息的标识,第一哈希信息和第一哈希信息的标识用于数据访问。
430,根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的访问,已存储的哈希信息包括第一哈希信息以及生成第一哈希信息之前生成的其它哈希信息。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
例如,已存储的哈希信息可以为N个,已存储的哈希信息的标识为与N个哈希信息一一对应的N个标识。
应理解,N个哈希信息、与N个哈希信息一一对应的N个标识,可以是预设好的,也可以是预先生成的,本发明实施例并不对此作限定。
在哈希信息为哈希环时,多(N)个哈希信息(哈希环)可以构成哈希环链表,该哈希环链表中包括该多个哈希信息及与多个哈希信息一一对应的标识(例如,版本号)。在分布式存储系统中增加或减少节点后,会生成新的哈希信息,新的哈希信息和新的哈希信息的标识会添加到哈希环链中。
进一步地,对于这个数据块位于物理节点上的磁盘上的哪个偏移地址,本发明实施例中的分布式存储系统采用文件系统、数据库等作为后端维护这个对应关系。本发明并不对此作限定。
应注意,本发明实施例中的节点可以是物理节点,也可以是虚拟节点。本发明实施例并不对此作限定。另外本发明实施例中的数据块可以为虚拟数据块,也可以为物理数据块,在较佳实施例中,数据块指虚拟数据块。
具体地,由于每个节点的磁盘容量不一定相等,如果只是按照节点来计算哈希值的话,会导致数据并不一定均衡存储与每个节点的每个磁盘上。因此,分布式存储系统的哈希环上可以不直接映射物理节点,而是采用虚拟节点来代替物理节点。如图5所示,节点A容量是200G,节点B容量是100G,节点C容量是200G,则在哈希环上,可以按容量比例存放2个虚拟节点A,1个虚拟节点B,2个虚拟节点C,这些虚拟节点都是采用一致性哈希算法计算哈希值,并排序后均衡分布于哈希环上的,因此,当用户写数据时,40%的数据会存储在A节点上,20%的数据会存储在B节点上,40%的数据会存储在C节点上。这样,分布式存储系统就具备了容量和性能的水平扩展性。
应理解,对数据块的访问可以包括进行数据块的读访问或者进行数据块的写访问,下面将针对读访问和写访问进行分别进行详细描述。
可选地,作为另一实施例,在430中,根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的读访问。
进一步地,作为另一实施例,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,在430中:
根据数据块对应的第一标识,确定与第一标识对应的哈希信息;
根据与第一标识对应的哈希信息确定与数据块对应的节点;
根据数据块对应的节点读取与数据块对应的数据。
应理解,可以根据预设的所有数据块与已存储的哈希信息的标识的对应的关系,查询得到待读访问的数据块对应的第一标识。
具体而言,当节点(处理器)进行读操作时,需要从预设的数据块与已存储的哈希信息的标识的对应的关系中查询到数据块对应的第一标识(哈希环版本号),然后从哈希环链表中找到对应的哈希环(与第一标识对应的哈希信息),按照对应的哈希环进行计算,获取物理节点,然后再访问物理节点读取数据。
可选地,作为另一实施例,在430中,根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的写访问。
进一步地,作为另一实施例,在430中,
确定数据块的分配结果,其中,数据块的分配结果包括数据块已分配对应的实体存储空间或者数据块未分配对应的实体存储空间。
具体而言,数据块为虚拟数据块时,对虚拟数据块进行写访问时,要根据虚拟数据块找到与该虚拟数据块对应的物理数据块(实体存储空间),根据该虚拟数据块对应的物理数据块进行写访问。该过程包括:首先要确定该虚拟数据块是否分配有实体存储空间,根据虚拟数据块是否分配有实体存储空间的分配结果进行数据块的写访问。数据块已分配对应的实体存储空间表示该虚拟数据块存在与该数据块一一对应的物理数据块。数据块未分配对应的实体存储空间表示虚拟数据块不存在与该数据块一一对应的物理数据块。
下面针对数据块的两种分配结果分别进行描述。
进一步地,作为另一实施例,分配结果包括数据块已分配对应的实体存储空间,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,根据分配结果,进行数据块的写访问,包括:
根据数据块对应的第一标识,确定与第一标识对应的哈希信息;
确定与第一标识对应的哈希信息是否为第一哈希信息,
根据确定结果,进行数据块的写访问。
具体地,确定结果包括第一标识对应的哈希信息为第一哈希信息或第一标识对应的哈希信息不是第一哈希信息。
进一步地,作为另一实施例,根据确定结果,进行数据块的写访问,包括:
在与第一标识对应的哈希信息为第一哈希信息时,根据第一哈希信息确定与数据块对应的节点;
向数据块对应的节点写入数据。
换句话说,在与第一标识对应的哈希信息为第一哈希信息时,根据第一哈希信息确定与数据块对应的节点,根据与数据块对应的节点找到该数据块的物理数据块(实体存储空间),向数据块对应的物理数据块写入数据。
可替代地,作为另一实施例,根据确定结果,进行数据块的写访问,包括:
在与第一标识对应的哈希信息不是第一哈希信息时,
根据第一哈希信息,确定数据块对应的节点,
向数据块对应的节点写入数据,并删除根据与第一标识对应的哈希信息确定的对应数据块的节点中的实体存储空间中的数据,更新数据块对应的第一标识为第一哈希信息的标识。
换句话说,在与第一标识对应的哈希信息不是第一哈希信息时,根据第一哈希信息确定与数据块对应的节点,根据与数据块对应的节点找到该数据块的物理数据块(实体存储空间),向数据块对应的物理数据块写入数据。同时根据与第一标识对应的哈希信息确定的对应数据块的节点中的实体存储空间(原物理数据块),并将原物理数据块中的数据删除。
可替代地,作为另一实施例,分配结果包括数据块未分配对应的实体存储空间,根据分配结果,进行数据块的写访问,包括:
根据第一哈希信息,确定与数据块对应的节点,
向与数据块对应的节点写入数据,确定第一哈希信息的标识为数据块对应的第一标识。
换句话说,在数据块未分配对应的实体存储空间时,根据第一哈希信息,确定与数据块对应的节点,根据与数据块对应的节点为数据块分配物理数据块(实体存储空间),向该物理数据块(实体存储空间)写入数据。
具体而言,当用户进行写操作时,按照该块是否分配(对应的实体空间)进行操作,如果数据块块未分配,按照第一哈希信息(最新的哈希环)计算物理节点并写入数据,并更新预设的数据块与已存储的哈希信息的标识的对应的关系,即更新第一哈希信息的标识为数据块对应的第一标识。如果块已经分配,则从预设的数据块与已存储的哈希信息的标识的对应的关系(vdisk信息)中获取哈希版本号,并判断该版本号是否是当前最新的哈希环,如果是,则按照该哈希环写入数据,否则从哈希环链表中找到最新的哈希环,按照最新哈希环计算物理节点,并写入数据,然后更新vdisk信息中的哈希版本号,最后删除旧数据块。
由于当用户进行写操作时,一直将数据落在最新的哈希环上,因此,保证了分布式系统的性能的水平扩展性。
可选地,作为另一实施例,本发明实施例方法还包括:
在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将第二哈希信息对应的节点中的数据移动到第一节点的存储空间中,第二哈希信息为已存储的哈希信息中的哈希信息;
删除第二哈希信息和对应第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据释放存储空间再次生成哈希信息。
具体而言,哈希环随着系统运行会越来越多,因此,当旧哈希环上的数据满足一定条件时,启动哈希环合并流程。
可以从上述描述得出,当用户写数据时,永远将数据落在最新的哈希环上,因此,旧哈希环上的数据会越来越少,最终只会存在长期不进行更新的数据。
因此可以设定以下哈希环合并并策略:旧哈希环上的数据量小于某个阈值或当前时间减上次更新时间大于某个阈值。当满足该哈希环合并策略时,开始启动合并流程,将旧哈希环上长期不进行更新的数据,写入新的哈希环,并最终将旧哈希环删除释放,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据释放存储空间再次生成哈希信息。
上文中结合图1至图6详细描述了本发明实施例的数据访问的方法,下面结合图7至图9具体的例子详细描述本发明实施例的数据访问的方法。
图7是根据本发明一个实施例的生成哈希信息的示意性流程图。图7所示的实施例中在原始分布式存储系统包括节点A、节点和B和节点C三个节点,节点D加入该分布式存储系统中生成哈希信息的流程。具体地,如图7所示的生成哈希信息的流程包括:
710,开始。
具体地,开始节点D接入的流程。
720,节点D广播加入信息。
具体地,节点D的集群模块向其它节点广播加入消息。
730,ABC节点回应接受信息。
具体地,其它节点(节点A、节点和B和节点C)收到广播信息后进行回应接受节点D加入。
740,根据容量创建新哈希环。
具体地,此时节点A、节点和B、节点C和节点D中的至少一个监控模块需要更新哈希环信息,此时新增一个哈希环,将节点D加入到新的哈希环上。假设此时节点A可用容量只剩100G,节点B容量剩50G,C节点容量只剩100G,新加入的节点D容量为100G,则新的哈希环按照2:1:2:2的比例分布虚拟节点A、虚拟节点B、虚拟节点C、虚拟节点D,新的哈希环如图6所示。
750,将新哈希环加入到哈希环链表上,更新哈希环当前版本号。
具体地,为了区别旧哈希环和新哈希环之间的差别,采用版本号标识哈希环的序号。假设旧的哈希环版本号为1,那么新的哈希环版本号可以为2。
760,存储新哈希环信息。
780,结束。
由于2号哈希环(新哈希环)采用了之前节点的剩余空间和新加节点的新增空间作为虚拟节点,数据在整个存储集群中依然是均衡分布的。保证了分布式存储系统的容量的水平扩展能力。
图8是根据本发明一个实施例的数据访问的示意性流程图。图8示出了对数据块F进行访问的流程图,其中,对数据块的访问可以包括读访问或写访问。具体地,如图8所示流程包括:
810,用户访问数据块F
820,读还是写。
具体地,确定该访问时读访问还是写访问,如果是读访问,执行步骤821,如果是写访问,则执行步骤830。
821,从虚拟磁盘(vdisk)信息中查询该数据块对应的哈希版本号i。
822,确定数据块F的哈希值。
具体地,根据哈希算法计算数据块F对应的哈希值。
823,从哈希环链表中找到对应哈希环i。
824,按照哈希环i计算所在物理节点J。
825,从物理节点J读取数据。
830,从虚拟磁盘信息中查询该数据块是否已经分配。
具体地,确定数据块F是否已经分配,若数据块F已经分配,则执行步骤831,若数据块F未分配,则执行步骤841。
831,从虚拟磁盘信息中查询该数据块对应的哈希版本号i。
832,确定数据块F的哈希值。
具体地,根据哈希算法计算数据块F对应的哈希值。
833,从哈希环链表中找到对应哈希环i。
834,哈希环i是否为哈希环链中最新哈希环。
具体地,确定数据块F对应的哈希环是否为最新的哈希环,如果是,则执行步骤835,如果不是,则执行步骤837。
835,按照哈希环i计算所在物理节点J。
836,向物理节点J写入数据。
837,从哈希环链表中找到最新哈希环M。
838,按照哈希环m计算所在物理节点P。
839,向物理节点P写入数据。
8310,更新虚拟磁盘信息中该数据块的哈希版本号为当前最新哈希环号M。
8311,按照哈希环i计算所在物理节点J
8312,删除物理节点J的旧数据块
841,从哈希环链表中找到最新哈希环m
842,按照哈希环m计算所在物理节点P
843,向物理节点P写入数据
844,更新虚拟磁盘信息中该数据块的哈希版本号为当前最新哈希环号m
850,结束。
具体而言,当用户进行读操作时,需要从虚拟磁盘信息中查询到数据块对应的哈希版本号,然后从哈希环链表中找到对应的哈希环,按照对应的哈希环进行计算,获取物理节点,然后再访问物理节点读取数据并返回。
当用户进行写操作时,按照该块是否分配进行操作,如果块未分配,按照最新的哈希环计算物理节点并写入数据并更新虚拟磁盘信息中的哈希版本号。如果块已经分配,则从虚拟磁盘信息中获取哈希版本号,并判断该版本号是否是当前最新的哈希环,如果是,则按照该哈希环写入数据,否则从哈希环链表中找到最新的哈希环,按照最新哈希环计算物理节点,并写入数据,然后更新虚拟磁盘信息中的哈希版本号,最后删除旧数据块。
由于当用户进行写操作时,永远将数据落在最新的哈希环上,因此,保证了分布式系统的性能的水平扩展性。
图9是根据本发明一个实施例的删除旧环的示意性流程图。哈希环随着系统运行会越来越多,当旧哈希环上的数据满足一定条件时,启动哈希环合并流程。哈希环合并流程如图9所示,具体地,以旧哈希环为第m哈希环为例进行说明包括:
910,开始。
920,确定是否满足哈希环合并条件。
具体地,确定第m哈希信息对应的节点中的数据量是否小于预设数据量阈值或第m哈希信息对应的节点中的数据未被访问时长是否大于预设时间阈值,如果是则执行步骤930,否则,执行步骤990。
930,旧哈希环上是否还有数据块。
具体的,确定是否存在与第m哈希环对应的数据块。如果是,则执行步骤940,如果不是,则执行步骤980.
940,读取旧哈希环上的数据块。
950,确定与就哈希环对应的数据块的哈希值。
960,按照最新哈希环M计算所在物理节点K。
970,将数据块写入物理节点K。
980,删除旧哈希环。
具体地,将旧哈希环删除释放,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据释放存储空间再次生成哈希信息990,结束。
因此,本发明实施例能够及时对旧哈希环就行处理,将与旧哈希环对应的存储空间释放,减少了资源的浪费,提升用户体验。
上文中结合图1至图9详细描述了本发明实施例的用于数据访问的方法,下面结合图10至图12详细描述本发明实施例的用于数据访问的设备。
图10是根据本发明一个实施例的用于数据访问的设备示意框图。如图10所示的设备1000包括:生成单元1010和存储单元1020。
具体地,生成单元1010在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,第一哈希信息包括哈希值取值区间与第一节点的对应关系,第一节点为当前分布式存储系统中具有剩余存储空间的节点;存储单元,1020存储第一哈希信息和第一哈希信息的标识,第一哈希信息和第一哈希信息的标识用于数据访问。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
可选地,作为另一实施例,本发明实施例中的设备还包括:访问单元。
具体地,如图11的数据访问的设备1100包括:生成单元1110、存储单元1120和访问单元1130。
具体地,生成单元1110和存储单元1120分别与生成单元1010和存储单元1020向对应,为避免重复不再赘述。
访问单元1130根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的访问,已存储的哈希信息包括第一哈希信息以及生成第一哈希信息之前生成的其它哈希信息。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
可选地,作为另一实施例,访问单元1130根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的读访问。
进一步地,作为另一实施例,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,访问单元1130根据数据块对应的第一标识,确定与第一标识对应的哈希信息;根据与第一标识对应的哈希信息确定与数据块对应的节点;根据数据块对应的节点读取与数据块对应的数据。
可替代地,作为另一实施例,访问单元1130根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的写访问。
进一步地,作为另一实施例,访问单元1130确定数据块的分配结果,其中,数据块的分配结果包括数据块已分配对应的实体存储空间或者数据块未分配对应的实体存储空间;根据分配结果,进行数据块的写访问。
进一步地,作为另一实施例,分配结果包括数据块已分配对应的实体存储空间,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,访问单元1130根据数据块对应的第一标识,确定与第一标识对应的哈希信息;确定与第一标识对应的哈希信息是否为第一哈希信息,根据确定结果,进行数据块的写访问。
进一步地,作为另一实施例,访问单元1130在与第一标识对应的哈希信息为第一哈希信息时,根据第一哈希信息确定与数据块对应的节点;向数据块对应的节点写入数据。
可替代地,作为另一实施例,访问单元1130在与第一标识对应的哈希信息不是第一哈希信息时,根据第一哈希信息,确定数据块对应的节点,向数据块对应的节点写入数据,并删除根据与第一标识对应的哈希信息确定的对应数据块的节点中的实体存储空间中的数据,更新数据块对应的第一标识为第一哈希信息的标识。
可替代地,作为另一实施例,分配结果包括数据块未分配对应的实体存储空间,
访问单元1130根据第一哈希信息,确定与数据块对应的节点,向与数据块对应的节点写入数据,确定第一哈希信息的标识为数据块对应的第一标识。
可选地,作为另一实施例,设备还包括:合并单元。具体地,合并单元用于在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将第二哈希信息对应的节点中的数据移动到第一节点的存储空间中,第二哈希信息为已存储的哈希信息中的哈希信息;删除第二哈希信息和对应第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据释放存储空间再次生成哈希信息。
应理解,图10和图11所示的用于数据访问的设备可以为分布式存储系统中的节点,图10和图11所示的用于数据访问的设备与图1至图9中涉及用于数据访问的方法相对应,图10和图11所示的用于数据访问的设备能够实现图1至图9中涉及用于数据访问的方法的各个过程,图10和图11所示的用于数据访问的设备的功能可参见图1至图9中涉及用于数据访问的方法的相关描述,为避免重复,此处不再赘述。
图12是根据本发明另一实施例的用于数据访问的设备的示意框图。如图12所示的数据访问的设备1200可以为编码设备,如图12所示的设备1200包括:包括处理器1210、存储器1220和总线系统1230。
具体地,处理器1210通过总线系统1230调用存储在存储器1220中的代码,在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,第一哈希信息包括哈希值取值区间与第一节点的对应关系,第一节点为当前分布式存储系统中具有剩余存储空间的节点;存储第一哈希信息和第一哈希信息的标识,第一哈希信息和第一哈希信息的标识用于数据访问。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
可选地,作为另一实施例,处理器1210根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的访问,已存储的哈希信息包括第一哈希信息以及生成第一哈希信息之前生成的其它哈希信息。
因此,本发明实施例通过在分布式存储系统增加或减少节点后,根据节点的剩余存储空间生成用于数据访问的新的哈希信息(第一哈希信息),并存储新的哈希信息,无需对已有的哈希信息进行改动更新,避免了因节点加入或退出时导致的数据迁移,提升用户体验。
上述本发明实施例揭示的方法可以应用于处理器1210中,或者由处理器1210实现。处理器1210可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1210中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1210可以是通用处理器、数字信号处理器(英文Digital Signal Processor,简称DSP)、专用集成电路(英文Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(英文Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存取存储器(英文Random Access Memory,简称RAM)、闪存、只读存储器(英文Read-OnlyMemory,简称ROM)、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1220,处理器1210读取存储器1220中的信息,结合其硬件完成上述方法的步骤,该总线系统1230除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1230。
可选地,作为另一实施例,处理器1210根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的读访问。
进一步地,作为另一实施例,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,处理器1210根据数据块对应的第一标识,确定与第一标识对应的哈希信息;根据与第一标识对应的哈希信息确定与数据块对应的节点;根据数据块对应的节点读取与数据块对应的数据。
可替代地,作为另一实施例,处理器1210根据已存储的哈希信息和已存储的哈希信息的标识,进行数据块的写访问。
进一步地,作为另一实施例,处理器1210确定数据块的分配结果,其中,数据块的分配结果包括数据块已分配对应的实体存储空间或者数据块未分配对应的实体存储空间;根据分配结果,进行数据块的写访问。
进一步地,作为另一实施例,分配结果包括数据块已分配对应的实体存储空间,数据块对应第一标识,第一标识为已存储的哈希信息的标识中的标识,处理器1210根据数据块对应的第一标识,确定与第一标识对应的哈希信息;确定与第一标识对应的哈希信息是否为第一哈希信息,根据确定结果,进行数据块的写访问。
进一步地,作为另一实施例,处理器1210在与第一标识对应的哈希信息为第一哈希信息时,根据第一哈希信息确定与数据块对应的节点;向数据块对应的节点写入数据。
可替代地,作为另一实施例,处理器1210在与第一标识对应的哈希信息不是第一哈希信息时,根据第一哈希信息,确定数据块对应的节点,向数据块对应的节点写入数据,并删除根据与第一标识对应的哈希信息确定的对应数据块的节点中的实体存储空间中的数据,更新数据块对应的第一标识为第一哈希信息的标识。
可替代地,作为另一实施例,分配结果包括数据块未分配对应的实体存储空间,处理器1210根据第一哈希信息,确定与数据块对应的节点,向与数据块对应的节点写入数据,确定第一哈希信息的标识为数据块对应的第一标识。
可选地,作为另一实施例,处理器1210在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将第二哈希信息对应的节点中的数据移动到第一节点的存储空间中,第二哈希信息为已存储的哈希信息中的哈希信息;删除第二哈希信息和对应第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据释放存储空间再次生成哈希信息。
应理解,图12所示的用于数据访问的设备可以为分布式存储系统中的节点,图12所示的用于数据访问的设备与图1至图9中涉及用于数据访问的方法相对应,图12所示的用于数据访问的设备能够实现图1至图9中涉及用于数据访问的方法的各个过程,图12所示的用于数据访问的设备的功能可参见图1至图9中涉及用于数据访问的方法的相关描述,为避免重复,此处不再赘述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种用于数据访问的方法,其特征在于,应用于分布式存储系统中,所述方法包括:
在所述分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,所述第一哈希信息包括哈希值取值区间与第一节点的对应关系,所述第一节点为当前分布式存储系统中具有剩余存储空间的节点;
存储所述第一哈希信息和所述第一哈希信息的标识,所述第一哈希信息和所述第一哈希信息的标识用于数据访问。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的访问,所述已存储的哈希信息包括所述第一哈希信息以及生成所述第一哈希信息之前生成的其它哈希信息。
3.根据权利要求2所述的方法,其特征在于,所述根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的访问,包括
根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的读访问。
4.根据权利要求3所述的方法,其特征在于,所述数据块对应第一标识,所述第一标识为所述已存储的哈希信息的标识中的标识,所述根据已存储的哈希信息和所述已存储的哈希信息的标识,进行所述数据块的读访问,包括:
根据所述数据块对应的所述第一标识,确定与所述第一标识对应的哈希信息;
根据与所述第一标识对应的哈希信息确定与所述数据块对应的节点;
根据所述数据块对应的节点读取与所述数据块对应的数据。
5.根据权利要求2所述的方法,其特征在于,所述根据已存储的哈希信息和所述已存储的哈希信息的标识,进行所述数据块的访问,包括:
根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的写访问。
6.根据权利要求5所述的方法,其特征在于,所述根据已存储的哈希信息和所述已存储的哈希信息的标识,进行所述数据块的写访问,包括:
确定所述数据块的分配结果,其中,所述数据块的分配结果包括所述数据块已分配对应的实体存储空间或者所述数据块未分配对应的实体存储空间;
根据所述分配结果,进行所述数据块的写访问。
7.根据权利要求6所述的方法,其特征在于,所述分配结果包括所述数据块已分配对应的实体存储空间,所述数据块对应第一标识,所述第一标识为所述已存储的哈希信息的标识中的标识,
所述根据所述分配结果,进行所述数据块的写访问,包括:
根据所述数据块对应的所述第一标识,确定与所述第一标识对应的哈希信息;
确定与所述第一标识对应的哈希信息是否为所述第一哈希信息,
根据确定结果,进行所述数据块的写访问。
8.根据权利要求7所述的方法,其特征在于,所述根据确定结果,进行所述数据块的写访问,包括:
在与所述第一标识对应的哈希信息为所述第一哈希信息时,根据第一哈希信息确定与所述数据块对应的节点;
向所述数据块对应的节点写入数据。
9.根据权利要求7所述的方法,其特征在于,所述根据确定结果,进行所述数据块的写访问,包括:
在与所述第一标识对应的哈希信息不是所述第一哈希信息时,,
根据第一哈希信息,确定所述数据块对应的节点,
向所述数据块对应的节点写入数据,并删除根据与所述第一标识对应的哈希信息确定的对应所述数据块的节点中的所述实体存储空间中的数据,更新所述数据块对应的所述第一标识为所述第一哈希信息的标识。
10.根据权利要求6所述的方法,其特征在于,所述分配结果包括所述数据块未分配对应的实体存储空间,
所述根据所述分配结果,进行所述数据块的写访问,包括:
根据第一哈希信息,确定与所述数据块对应的节点,
向与所述数据块对应的节点写入数据,确定所述第一哈希信息的标识为所述数据块对应的第一标识。
11.根据权利要求2至10中任一项所述的方法,其特征在于,所述方法还包括:
在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将所述第二哈希信息对应的节点中的数据移动到所述第一节点的存储空间中,所述第二哈希信息为所述已存储的哈希信息中的哈希信息;
删除所述第二哈希信息和对应所述第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据所述释放存储空间再次生成哈希信息。
12.一种用于数据访问的设备,其特征在于,包括:
生成单元,用于在分布式存储系统增加或减少节点后,根据当前分布式存储系统中节点的剩余存储空间生成第一哈希信息和第一哈希信息的标识,其中,所述第一哈希信息包括哈希值取值区间与第一节点的对应关系,所述第一节点为当前分布式存储系统中具有剩余存储空间的节点;
存储单元,用于存储所述第一哈希信息和所述第一哈希信息的标识,所述第一哈希信息和所述第一哈希信息的标识用于数据访问。
13.根据权利要求12所述的设备,其特征在于,还包括:
访问单元,用于根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的访问,所述已存储的哈希信息包括所述第一哈希信息以及生成所述第一哈希信息之前生成的其它哈希信息。
14.根据权利要求13所述的设备,其特征在于,所述访问单元根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的读访问。
15.根据权利要求14所述的设备,其特征在于,所述数据块对应第一标识,所述第一标识为所述已存储的哈希信息的标识中的标识,所述访问单元根据所述数据块对应的所述第一标识,确定与所述第一标识对应的哈希信息;根据与所述第一标识对应的哈希信息确定与所述数据块对应的节点;根据所述数据块对应的节点读取与所述数据块对应的数据。
16.根据权利要求13所述的设备,其特征在于,所述访问单元根据已存储的哈希信息和所述已存储的哈希信息的标识,进行数据块的写访问。
17.根据权利要求16所述的设备,其特征在于,所述访问单元确定所述数据块的分配结果,其中,所述数据块的分配结果包括所述数据块已分配对应的实体存储空间或者所述数据块未分配对应的实体存储空间;根据所述分配结果,进行所述数据块的写访问。
18.根据权利要求17所述的设备,其特征在于,所述分配结果包括所述数据块已分配对应的实体存储空间,所述数据块对应第一标识,所述第一标识为所述已存储的哈希信息的标识中的标识,
所述访问单元根据所述数据块对应的所述第一标识,确定与所述第一标识对应的哈希信息;确定与所述第一标识对应的哈希信息是否为所述第一哈希信息,根据确定结果,进行所述数据块的写访问。
19.根据权利要求18所述的设备,其特征在于,所述访问单元在与所述第一标识对应的哈希信息为所述第一哈希信息时,根据第一哈希信息确定与所述数据块对应的节点;向所述数据块对应的节点写入数据。
20.根据权利要求18所述的设备,其特征在于,所述访问单元在与所述第一标识对应的哈希信息不是所述第一哈希信息时,根据第一哈希信息,确定所述数据块对应的节点,向所述数据块对应的节点写入数据,并删除根据与所述第一标识对应的哈希信息确定的对应所述数据块的节点中的所述实体存储空间中的数据,更新所述数据块对应的所述第一标识为所述第一哈希信息的标识。
21.根据权利要求17所述的设备,其特征在于,所述分配结果包括所述数据块未分配对应的实体存储空间,
所述访问单元根据第一哈希信息,确定与所述数据块对应的节点,向与所述数据块对应的节点写入数据,确定所述第一哈希信息的标识为所述数据块对应的第一标识。
22.根据权利要求13至21中任一项所述的设备,其特征在于,所述设备还包括:
合并单元,用于在第二哈希信息对应的节点中的数据量小于预设数据量阈值或第二哈希信息对应的节点中的数据未被访问时长大于预设时间阈值时,将所述第二哈希信息对应的节点中的数据移动到所述第一节点的存储空间中,所述第二哈希信息为所述已存储的哈希信息中的哈希信息;删除所述第二哈希信息和对应所述第二哈希信息的标识,获得释放存储空间,以便于当分布式存储系统再次增加或减少节点后,根据所述释放存储空间再次生成哈希信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510067862.0A CN104636286B (zh) | 2015-02-06 | 2015-02-06 | 用于数据访问的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510067862.0A CN104636286B (zh) | 2015-02-06 | 2015-02-06 | 用于数据访问的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636286A true CN104636286A (zh) | 2015-05-20 |
CN104636286B CN104636286B (zh) | 2018-07-03 |
Family
ID=53215061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510067862.0A Active CN104636286B (zh) | 2015-02-06 | 2015-02-06 | 用于数据访问的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104636286B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406757A (zh) * | 2016-09-05 | 2017-02-15 | 中国联合网络通信集团有限公司 | 数据存储方法及装置 |
CN108196786A (zh) * | 2017-12-08 | 2018-06-22 | 成都华为技术有限公司 | 用于存储系统分区的方法和管理设备 |
CN109254729A (zh) * | 2018-08-24 | 2019-01-22 | 杭州宏杉科技股份有限公司 | 一种对象存储的方法和装置 |
CN109977077A (zh) * | 2019-03-25 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 模型文件存储方法、装置、可读存储介质和计算机设备 |
CN106406757B (zh) * | 2016-09-05 | 2019-07-16 | 中国联合网络通信集团有限公司 | 数据存储方法及装置 |
CN110058822A (zh) * | 2019-04-26 | 2019-07-26 | 北京计算机技术及应用研究所 | 一种磁盘阵列横向拓展方法 |
CN110096227A (zh) * | 2019-03-28 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质 |
CN110275873A (zh) * | 2019-06-28 | 2019-09-24 | 重庆紫光华山智安科技有限公司 | 文件存储方法、装置、存储管理设备及存储介质 |
WO2020083106A1 (zh) * | 2018-10-25 | 2020-04-30 | 华为技术有限公司 | 存储系统中的节点扩容方法和存储系统 |
CN111147226A (zh) * | 2018-11-02 | 2020-05-12 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储介质 |
CN113515531A (zh) * | 2021-05-08 | 2021-10-19 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
CN115297131A (zh) * | 2022-08-01 | 2022-11-04 | 东北大学 | 一种基于一致性哈希的敏感数据分布式储存方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457571A (zh) * | 2011-09-15 | 2012-05-16 | 中标软件有限公司 | 一种云存储中数据均衡分布方法 |
CN102457429A (zh) * | 2010-10-27 | 2012-05-16 | 中兴通讯股份有限公司 | 分布式哈希表网络的负载均衡实现方法及装置 |
CN102843403A (zh) * | 2011-06-23 | 2012-12-26 | 盛大计算机(上海)有限公司 | 基于分布式文件系统的文件处理方法、系统及客户端 |
CN103246484A (zh) * | 2013-05-03 | 2013-08-14 | 华为技术有限公司 | 一种数据存储方法、装置及系统 |
CN103473365A (zh) * | 2013-09-25 | 2013-12-25 | 北京奇虎科技有限公司 | 一种基于hdfs的文件存储方法、装置及分布式文件系统 |
CN104283966A (zh) * | 2014-10-22 | 2015-01-14 | 浪潮(北京)电子信息产业有限公司 | 云存储系统的数据分布算法及其装置 |
CN104301233A (zh) * | 2014-10-31 | 2015-01-21 | 易准科技发展(上海)有限公司 | 路由访问方法、路由访问系统及用户终端 |
CN104298541A (zh) * | 2014-10-22 | 2015-01-21 | 浪潮(北京)电子信息产业有限公司 | 云存储系统的数据分布算法及其装置 |
-
2015
- 2015-02-06 CN CN201510067862.0A patent/CN104636286B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102457429A (zh) * | 2010-10-27 | 2012-05-16 | 中兴通讯股份有限公司 | 分布式哈希表网络的负载均衡实现方法及装置 |
CN102843403A (zh) * | 2011-06-23 | 2012-12-26 | 盛大计算机(上海)有限公司 | 基于分布式文件系统的文件处理方法、系统及客户端 |
CN102457571A (zh) * | 2011-09-15 | 2012-05-16 | 中标软件有限公司 | 一种云存储中数据均衡分布方法 |
CN103246484A (zh) * | 2013-05-03 | 2013-08-14 | 华为技术有限公司 | 一种数据存储方法、装置及系统 |
CN103473365A (zh) * | 2013-09-25 | 2013-12-25 | 北京奇虎科技有限公司 | 一种基于hdfs的文件存储方法、装置及分布式文件系统 |
CN104283966A (zh) * | 2014-10-22 | 2015-01-14 | 浪潮(北京)电子信息产业有限公司 | 云存储系统的数据分布算法及其装置 |
CN104298541A (zh) * | 2014-10-22 | 2015-01-21 | 浪潮(北京)电子信息产业有限公司 | 云存储系统的数据分布算法及其装置 |
CN104301233A (zh) * | 2014-10-31 | 2015-01-21 | 易准科技发展(上海)有限公司 | 路由访问方法、路由访问系统及用户终端 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406757A (zh) * | 2016-09-05 | 2017-02-15 | 中国联合网络通信集团有限公司 | 数据存储方法及装置 |
CN106406757B (zh) * | 2016-09-05 | 2019-07-16 | 中国联合网络通信集团有限公司 | 数据存储方法及装置 |
CN108196786A (zh) * | 2017-12-08 | 2018-06-22 | 成都华为技术有限公司 | 用于存储系统分区的方法和管理设备 |
CN108196786B (zh) * | 2017-12-08 | 2021-05-18 | 成都华为技术有限公司 | 用于存储系统分区的方法和管理设备 |
CN109254729A (zh) * | 2018-08-24 | 2019-01-22 | 杭州宏杉科技股份有限公司 | 一种对象存储的方法和装置 |
WO2020083106A1 (zh) * | 2018-10-25 | 2020-04-30 | 华为技术有限公司 | 存储系统中的节点扩容方法和存储系统 |
CN111147226A (zh) * | 2018-11-02 | 2020-05-12 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储介质 |
CN111147226B (zh) * | 2018-11-02 | 2023-07-18 | 杭州海康威视系统技术有限公司 | 数据存储方法、装置及存储介质 |
CN109977077A (zh) * | 2019-03-25 | 2019-07-05 | 腾讯科技(深圳)有限公司 | 模型文件存储方法、装置、可读存储介质和计算机设备 |
CN109977077B (zh) * | 2019-03-25 | 2021-09-24 | 腾讯科技(深圳)有限公司 | 模型文件存储方法、装置、可读存储介质和计算机设备 |
CN110096227B (zh) * | 2019-03-28 | 2023-04-18 | 北京奇艺世纪科技有限公司 | 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质 |
CN110096227A (zh) * | 2019-03-28 | 2019-08-06 | 北京奇艺世纪科技有限公司 | 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质 |
CN110058822A (zh) * | 2019-04-26 | 2019-07-26 | 北京计算机技术及应用研究所 | 一种磁盘阵列横向拓展方法 |
CN110058822B (zh) * | 2019-04-26 | 2022-06-24 | 北京计算机技术及应用研究所 | 一种磁盘阵列横向拓展方法 |
CN110275873A (zh) * | 2019-06-28 | 2019-09-24 | 重庆紫光华山智安科技有限公司 | 文件存储方法、装置、存储管理设备及存储介质 |
CN113515531A (zh) * | 2021-05-08 | 2021-10-19 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
CN113515531B (zh) * | 2021-05-08 | 2022-12-02 | 重庆紫光华山智安科技有限公司 | 数据访问方法、装置、客户端及存储介质 |
CN115297131B (zh) * | 2022-08-01 | 2023-05-26 | 东北大学 | 一种基于一致性哈希的敏感数据分布式储存方法 |
CN115297131A (zh) * | 2022-08-01 | 2022-11-04 | 东北大学 | 一种基于一致性哈希的敏感数据分布式储存方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104636286B (zh) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104636286A (zh) | 用于数据访问的方法和设备 | |
JP6778795B2 (ja) | データを記憶するための方法、装置及びシステム | |
US11474972B2 (en) | Metadata query method and apparatus | |
EP3637280B1 (en) | Data storage method and device, and storage medium | |
CN108427684B (zh) | 数据查询方法、装置及计算设备 | |
US8494996B2 (en) | Creation and revision of network object graph topology for a network performance management system | |
KR101871383B1 (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
CN108182213A (zh) | 一种基于分布式系统的数据处理优化装置及方法 | |
US9830333B1 (en) | Deterministic data replication with conflict resolution | |
JP2020531949A (ja) | ブロックチェーン内のデータベース・ハッシュコードの遅延更新 | |
CN103338243A (zh) | Web节点的缓存数据更新方法和系统 | |
US10795579B2 (en) | Methods, apparatuses, system and computer program products for reclaiming storage units | |
CN109508912B (zh) | 一种业务调度方法、装置、设备和存储介质 | |
CN109117308A (zh) | 快照处理的方法和装置 | |
CN110851427A (zh) | 数据库容量变更方法和装置 | |
US11886225B2 (en) | Message processing method and apparatus in distributed system | |
US8903871B2 (en) | Dynamic management of log persistence | |
US10248562B2 (en) | Cost-based garbage collection scheduling in a distributed storage environment | |
CN103514412B (zh) | 构建基于角色的访问控制系统的方法及云服务器 | |
US20210382872A1 (en) | Blockchain-based Data Storage Method, Related Device and Storage Medium | |
CN104063377A (zh) | 信息处理方法和使用其的电子设备 | |
CN106484792A (zh) | 一种用于持久层框架的数据源管理方法及装置 | |
CN116233254A (zh) | 业务切流方法、装置、计算机设备和存储介质 | |
CN109376001A (zh) | 一种资源分配的方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |