发明内容
本发明实施例提供一种分布式存储方法、分布式存储装置和分布式存储系统。
一种分布式存储方法,包括:
将所有存储节点的物理存储空间切割成至少两个物理块,将所有所述物理块的集合映像成一个逻辑的存储资源池;
在所述存储资源池上建立虚拟卷;
当客户端在所述虚拟卷上存储数据时,将所述数据划分成至少两个对象,将每个所述对象存入所述存储资源池,为每个所述对象创建与所述存储资源池的逻辑块的映射关系,并按照每个所述对象的容量将所述物理块分配给与每个所述对象具有映射关系的逻辑块;
存储为每个所述对象创建的与所述存储资源池的逻辑块的映射关系。
一种分布式存储装置,包括:
构建存储资源池单元,用于将所有存储节点的物理存储空间切割成至少两个物理块,将所有所述物理块的集合映像成一个逻辑的存储资源池;
建立虚拟卷单元,用于在所述存储资源池上建立虚拟卷;
分配物理存储空间单元,用于当客户端在虚拟卷上存储数据时,将所述数据划分成至少两个对象,将每个所述对象写入所述存储资源池,为每个所述对象创建与所述存储资源池的逻辑块的映射关系,并按照每个所述对象的容量将所述物理块分配给与每个所述对象具有映射关系的逻辑块;
存储映射关系单元,用于存储为每个所述对象创建的与所述存储资源池的逻辑块的映射关系。
一种分布式存储系统,包括:至少一个客户端、至少一个存储节点和上述分布式存储装置。
本发明实施例中,对象存储在资源存储池中,物理存储空间只有当存储对象的时候,才分配给资源存储池,从而能够按照用户所需的物理存储空间,动态灵活的分配物理存储空间,从而提高了物理存储空间的利用率。
具体实施方式
本发明实施例提供一种分布式存储方法,本发明实施例还提供相应的分布式存储装置和分布式存储系统。以下分别进行详细说明。
请参阅图1,本发明实施例提供分布式存储方法的一个实施例,具体包括:
101、将所有存储节点的物理存储空间切割成至少两个物理块,将所有物理块的集合映像成一个逻辑的存储资源池;
目前存储系统为逻辑卷分配物理存储空间的过程是静态的,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,如果能够采用动态的方法按需分配物理存储空间,毫无疑问,将会极大地提高物理存储空间的利用率,从而在不增加成本的情况下增加存储系统的容量。而要采用动态的、按需分配的方法就必须将存储系统虚拟化。
本发明实施例所进行的存储虚拟化的第一步为:将所有存储节点的物理存储空间切割成至少两个物理块,将所有物理块的集合映像成一个逻辑的存储资源池,从而屏蔽了存储节点之间的差别,构建了一个统一的存储资源池。
需要说明的是,前述“所有存储节点的物理存储空间”指的是由每个存储节点的物理存储空间统一构成的总的物理存储空间。
构建存储资源池的具体过程可以为:首先将所有存储节点的物理存储空间划分成至少两个物理块,再将这些物理块映像成逻辑块,将这些逻辑块用一个数据结构组织起来,就能构建出一个逻辑的存储资源池。存储系统将所有存储节点的物理存储空间划分成至少两个物理块,具体可以为:将所有存储节点的物理存储空间划分成不等大的至少两个物理块;或者为了提高构建存储资源池的处理速度,将所有存储节点的物理存储空间划分成等大的至少两个物理块,例如将1TB的物理存储空间划分成1000个1GB的物理块,构建出的存储资源池里有1000个逻辑块,需要使用资源时,从存储资源池里挑选出逻辑块来使用。
102、在存储资源池上建立虚拟卷,并为虚拟卷中的每个虚拟块建立与存储资源池中的逻辑块之间的映射关系;
本发明实施例所进行的存储虚拟化的第二步为:在存储资源池上建立存储系统的虚拟卷,虚拟卷中的每个虚拟块与存储资源池中的逻辑块之间具有映射关系。
建立虚拟卷和逻辑卷之间的映射表,表示虚拟块到逻辑块(存储池中的块)的映射关系,但不分配物理存储空间,虚拟卷的建立使得存储系统不用在未存储时就预先为每个客户端提供物理存储空间,各个客户端看到的存储系统所提供的物理存储空间实际上是在虚拟卷上建立的虚拟磁盘。
103、将每个对象存入存储资源池,为每个对象创建与存储资源池的逻辑块的映射关系,并按照每个对象的容量将物理块分配给每个与对象具有映射关系的逻辑块;
当众多客户端中的某一个客户端在虚拟卷上存储数据时,将数据划分成至少两个对象,将每个对象存入存储资源池,为每个对象创建与存储资源池的逻辑块的映射关系,并按照每个对象的容量将物理块分配给每个与对象具有映射关系的逻辑块。
上述为逻辑块分配物理块的方式使得物理存储空间仅仅在使用时才分配,存储系统能够按照用户所需的物理存储空间,动态灵活的分配物理存储空间,被分配的物理存储空间不是固定不变的,提高了物理存储空间的利用率,并且上述为逻辑块分配物理块的方式还使得用户避免购买暂时不需要的存储设备,极大的节省了用户购买那些并不需要的空间所花费的预算开支和管理这些暂时不需要的空间的管理开支;同时,存储设备数量的减少也使得存储系统更加环保。
在本步骤中,为每个对象创建与存储资源池的逻辑块的映射关系,具体可以为:将对象划分成等大的粒度,比如8KB,建立一个映射表,每8KB对应映射表的一个表项,里面记录这个8KB映射到存储资源池的某个逻辑块上的某个8KB的数据上,比如,对象1的从8K开始到16KB的数据存储在存储资源池的逻辑块2上的第3个8KB上面。
104、存储为每个对象创建的与存储资源池的逻辑块的映射关系。
存储系统存储步骤103中为每个对象创建的与存储资源池的逻辑块的映射关系,每次对数据的操作都要获取为每个对象创建的与存储资源池的逻辑块的映射关系。
可选的,存储系统可以在存储资源池中存储为每个对象创建的与存储资源池的逻辑块的映射关系,也就是说,将为每个对象创建的与存储资源池的逻辑块的映射关系和每个对象存储在一起。
或者,可选的,存储系统还可以独立存储为每个对象创建的与存储资源池的逻辑块的映射关系,独立存储是指将为每个对象创建的与存储资源池的逻辑块的映射关系和数据存储在不同的物理存储空间,从而导致了数据的逻辑视图和物理视图被分开,在存储系统将为每个对象创建的与存储资源池的逻辑块的映射关系和每个对象存储在一起时,每次对数据的操作都要获取为每个对象创建的与存储资源池的逻辑块的映射关系。当操作频繁发生时,就成为整个存储系统的瓶颈,限制了存储系统的扩展性,而存储系统独立存储为每个对象创建的与存储资源池的逻辑块的映射关系,可以通过增加独立存储为每个对象创建的与存储资源池的逻辑块的映射关系的存储空间来解决存储系统的可扩展性问题,具体实现方式可以为:将为每个对象创建的与存储资源池的逻辑块的映射关系存储在另一个存储系统或者与存储资源池相互独立的同一存储系统的逻辑卷。
在本实施例中,对象存储在资源存储池中,物理存储空间只有当存储对象的时候,才分配给资源存储池,从而能够按照用户所需的物理存储空间,动态灵活的分配物理存储空间,提高了物理存储空间的利用率,而且由于在现有技术中对象是存储在文件系统上,相当于数据需要经由文件系统才能存储在磁盘上,而本实施例中,对象是存储在存储资源池上,直接就存储在磁盘上,去除了文件系统环节,减少了存储系统的复杂度。
在上述实施例中,当客户端访问数据时,存储系统中的操作系统可以根据为该数据的每个对象创建的与存储资源池的逻辑块的映射关系,获得该数据的每个对象位于存储资源池的具体位置,从而读取数据。
在上述实施例中,存储节点可以为存储域网络(SAN,Storage AreaNetwork)阵列中的存储设备,SAN阵列中的存储设备是智能设备,也可称之为基于对象的存储设备(OSD,Object-based Storage Device),每个OSD具有自己的存储介质、处理器、内存以及网络系统,提供OSD对象接口,使得在数据的读写过程中,存储节点可以通过OSD对象接口和客户端直接通信,将为每个对象创建的与存储资源池的逻辑块的映射关系独立存储在元数据服务器(Metadata Server,MDS)中。每个对象创建的与存储资源池的逻辑块的映射关系即为元数据,元数据服务器为客户端提供数据的逻辑视图,包括目录构成、每个数据所对应的OSD等。在传统的SAN阵列中,元数据由SAN阵列中的文件服务器负责维护,每次对数据的操作都要获取元数据。当操作频繁发生时,元数据操作就成为整个存储系统的瓶颈,限制了性能的扩展。但是当SAN阵列中的存储设备为OSD,对外提供OSD对象接口,由于每次操作只有一次对元数据的访问,具体的数据传输都由OSD和客户端通过直接连接进行,大大减少了元数据的操作,降低了元数据服务器的负担,通过增加元数据服务器来解决SAN阵列的扩展性问题。
需要说明的是,存储节点也可以为网络存储设备(NAS,Network AttachedStorage)。
参阅图2,本发明实施例还提供分布式存储装置的一个实施例,本实施例中的分布式存储装置20可应用于上述实施例中,执行上述是实施例中的方法。
本实施例中的分布式存储装置20,包括:
构建存储资源池单元201,用于将所有存储节点的物理存储空间切割成至少两个物理块,将所有物理块的集合映像成一个逻辑的存储资源池;
建立虚拟卷单元202,用于在存储资源池上建立虚拟卷;
分配物理存储空间单元203,用于当客户端在虚拟卷上存储数据时,将数据划分成至少两个对象,将每个对象写入存储资源池,为每个对象创建与存储资源池的逻辑块的映射关系,并按照每个对象的容量将物理块分配给与每个对象具有映射关系的逻辑块;
存储映射关系单元204,用于存储为每个对象创建的与存储资源池的逻辑块的映射关系。
可选的,存储映射关系单元204具体用于独立存储为每个对象创建的与存储资源池的逻辑块的映射关系。
可选的,存储映射关系单元204具体用于将为每个对象创建的与存储资源池的逻辑块的映射关系存储在另一个存储系统或者与存储资源池相互独立的本存储系统的逻辑卷。
可选的,构建存储资源池单元201具体用于将所有存储节点的物理存储空间切割成至少两个等大的物理块,将每个物理块映射成逻辑块,所有的逻辑块用数据结构组织起来,构建出一个逻辑的存储资源池。
在本实施例中个,存储节点可以为存储域网络SAN阵列中的存储设备,且SAN阵列中的存储设备是基于对象的存储设备(OSD,Object-based StorageDevice),对外提供OSD对象接口。
在本实施例中,分配物理存储空间单元203将对象存储在资源存储池中,且物理存储空间只有当存储对象的时候,才分配给资源存储池,从而能够按照用户所需的物理存储空间,动态灵活的分配物理存储空间,提高了物理存储空间的利用率。
参阅图3,本发明实施例还提供分布式存储系统的一个实施例,本实施例中的分布式存储系统可应用于上述实施例中,执行上述实施例中的方法。
本实施例中的分布式存储系统包括:至少一个客户端301、至少一个存储节点302和分布式存储装置303;
本实施例中的分布式存储装置303与上述实施例中的分布式存储装置20相同。
可选的,分布式存储系统还包括元数据服务器304,元数据服务器304用于独立存储分布式存储装置304为每个对象创建的与存储资源池的逻辑块的映射关系。
在本实施例提供的分布式存储系统中,元数据服务器304的数量可以为至少一个,这样就能够解决分布式存储系统系统的扩展性的问题。元数据服务器304和分布式存储装置303中的存储节点相互独立。
可选的,存储节点302具体为存储域网络SAN阵列中的存储设备,且SAN阵列中的存储设备是基于对象的存储设备OSD,对外提供OSD对象接口,在此应用场景下,元数据服务器304为客户端提供数据的逻辑视图,包括目录构成、每个数据所对应的OSD等,当客户端301访问对象时,首先向元数据服务器304发送请求,元数据服务器304根据反映对象到逻辑块的映射关系的元数据,将对象位于存储资源池的具体位置等信息发送给客户端301;此后根据对象位于存储资源池的具体位置,客户端301就直接向存储有该对象的存储节点302发送请求读写数据,不需要和元数据服务器304交互。
网络连接是存储系统的重要组成部分。它将客户端301、元数据服务器304和存储节点302连接起来。网络技术的不断进步使网络连接的方式有了更多选择。千兆以太网具有性能高、性价比高、易于管理等优点,因此成了构建存储系统的首选。随着光纤通道技术的成熟及成本的降低,应用也越来越广泛。此外,各种新的网络技术也不断出现,如Myrinet、Infiniband等网络技术,都具有较高的性能。尤其是Infiniband,不断扩展的性能使其具有很强的竞争力。
在本实施例中,分布式存储装置303可以将对象存储在资源存储池中,且物理存储空间只有当存储对象的时候,才分配给资源存储池,从而能够按照用户所需的物理存储空间,动态灵活的分配物理存储空间,提高了物理存储空间的利用率。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的分布式存储方法、分布式存储装置和分布式存储系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。