本发明涉及数据存储技术领域,特别涉及一种数据存储方法及装置。
背景技术:
随着电子信息技术的发展,网络中的数据量大幅增长,为了对大量的数据进行存储和管理,各种各样的数据存储技术应运而生。其中,分布式存储系统以其安全、便捷的优点得到了广泛的应用。
分布式存储系统一般包括客户端、元数据节点(Meta Data Server,MDS)和多个数据节点(Storage Node,SN)。该分布式存储系统通常可以部署在虚拟化环境中,该虚拟化环境通过虚拟化技术在多个物理服务器上搭建,并通过虚拟机管理器在该多个物理服务器中部署若干个虚拟机;虚拟机管理器在不同虚拟化技术中可以不同,例如可以是HM(Hypervisor Manager),或者可以是KVM(Kernel-based Virtual Machine),或者可以是VMM(Virtual Machine Manager);其中,该分布式存储系统中的客户端、MDS以及SN,均可以部署该若干个虚拟机中的任一虚拟机中。该MDS可以通过该虚拟机管理器查询并存储每个物理服务器的物理地址和部署在每个物理服务器中的虚拟机的标识。
当通过部署在该虚拟化环境中的分布式存储系统将待存储的目标数据进行存储时,该客户端向MDS发送数据存储请求,该MDS根据事先存储的每个物理服务器的物理地址和部署在每个物理服务器中的虚拟机的标识,向该客户端返回虚拟机的标识,当该客户端接收到返回的虚拟机的标识时,将目标数据存储在对应的虚拟机所部署的SN中。
由于部署在该虚拟化环境中的分布式存储系统往往是第三方系统,且分布式存储系统通过上述方法进行数据存储时,需要依赖每个物理服务器的物理地址和部署在每个物理服务器中的虚拟机的标识,此时,可能会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,进而可能会给物理服务器带来安全隐患,降低了物理服务器的稳定性和安全性,也降低了该虚拟化环境以及部署在该虚拟化环境中的分布式存储系统的稳定性和安全性。
技术实现要素:
为了解决现有技术的问题,本发明实施例提供了一种数据存储方法及装置。所述技术方案如下:
第一方面,提供了一种数据存储方法,多个物理服务器中至少部署有M个虚拟机,所述M个虚拟机分别被部署为分布式存储系统的M个SN,M为大于或等于2的正整数,所述方法包括:
所述分布式存储系统的MDS接收客户端的数据存储请求;
所述MDS确定所述数据存储请求指定的数据的存储份数为N份,N为大于或等于1的正整数;
所述MDS根据分组信息确定N个虚拟机的标识,所述N个虚拟机的标识对应的N个虚拟机属于至少一个反亲合组,所述分组信息记录多个反亲合组与M个虚拟机的标识的映射关系,每个所述反亲合组中的虚拟机之间具有反亲和性,所述M个虚拟机包括所述N个虚拟机;
所述MDS向所述客户端发送所述数据存储请求的响应信息,所述响应信息包括所述N个虚拟机的标识,所述响应信息指示所述客户端在所述N个虚拟机存储N份所述数据存储请求指定的数据。
在本发明实施例中,分布式存储系统中的MDS能够接收该客户端的数据存储请求,并根据存储的分组信息,从至少一个反亲合组中确定满足存储数据需求的N个虚拟机的标识,以确保该客户能够向该N个虚拟机的标识对应的、被部署为SN的虚拟机中存储数据,由于该分组信息记录的是多个反亲合组与M个虚拟机的标识的映射关系,而不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进而提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
进一步地,所述MDS根据分组信息确定N个虚拟机的标识包括:
若所述反亲合组包括的虚拟机的标识的数目大于或等于N,则所述MDS从所述多个反亲合组中的一个所述反亲合组确定所述N个虚拟机的标识;
若所述反亲合组包括的虚拟机的标识的数目小于N,则所述MDS从至少两个所述反亲合组确定所述N个虚拟机的标识。
,例如,反亲和组包括X个虚拟机,如果X小于N,该MDS可以从该至少两个反亲和组中的任一反亲和组中确定X个虚拟机,并从该至少两个反亲和组中其它的反亲和组确定N-X个虚拟机,从而得到N个虚拟机。
在本发明实施例中,该MDS在确定该N个虚拟机的标识时,能够将反亲和组包括的虚拟机的数目与N比较,根据比较的结果,采取不同的策略来确定该N个虚拟机的标识,在确保该存储存储系统的可靠性和稳定性的基础上提高了该分布式存储系统的灵活性。
进一步地,所述MDS从至少两个所述反亲合组确定所述N个虚拟机的标识包括:
所述MDS在至少两个所述反亲合组之间,根据亲合性确定所述N个虚拟机的标识。
其中,该MDS可以从该至少两个反亲和组中的任一反亲和组中确定X个虚拟机,并从与该至少两个反亲和组其它的反亲和组中,根据亲和性,确定与该X个虚拟机中的至少一个虚拟机处于同一亲和组的N-X个虚拟机,从而得到N个虚拟机。
在本发明实施例中,能够确保当反亲和组包括的虚拟机的数目小于N时,该MDS也能确定N个虚拟机的标识,从而提高了该分布式存储的可靠性。
可选地,所述MDS根据分组信息确定N个虚拟机的标识之前,所述方法还包括:
所述MDS接收虚拟机管理器发送的所述M个虚拟机的标识;
所述MDS将所述M个虚拟机划分为所述多个反亲合组,并在所述分组信息记录所述多个反亲合组与所述M个虚拟机的标识的映射关系;
所述MDS向所述虚拟机管理器发送所述分组信息,以便所述虚拟机管理器根据所述分组信息部署M个虚拟机。
在本发明实施例中,该MDS能够对接收到虚拟机管理器发送的N个虚拟机的标识进行分组,并将该分组信息发送给该虚拟机管理器,确保该虚拟机管理器能够基于该分组信息对该N个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,进一步提高了该分布式存储系统的稳定性和可靠性。
可选地,所述M个虚拟机属于多个亲合组,每个所述亲合组中的虚拟机之间具有亲和性,所述分组信息记录多个亲合组与M个虚拟机的标识的映射关系。
在本发明实施例中,该M个虚拟机还可以属于多个亲和组,也即是,该M个虚拟机中的若干个虚拟机不但可以按照反亲和性划分为反亲和性组同时可以按照亲和性划分为亲和性组,从而能够满足不同的存储需求,提高了该分布式存储系统的灵活性。
第二方面,提供了一种数据存储方法,其特征在于,多个物理服务器中至少部署有M个虚拟机,所述M个虚拟机分别被部署为分布式存储系统的M个SN,M为大于或等于2的正整数,所述方法包括:
所述分布式存储系统的MDS接收虚拟机管理器发送的所述M个虚拟机的标识;
所述MDS将所述M个虚拟机划分为多个反亲合组,每个所述反亲合组中的虚拟机之间具有反亲和性;
所述MDS在分组信息记录所述多个反亲合组与所述M个虚拟机的标识的映射关系,所述分组信息用于所述MDS在客户端请求存储数据时从至少一个所述反亲合组中确定N个虚拟机的标识,所述N个虚拟机用于存储客户端指定存储的N份数据,N为大于或等于1的正整数;
所述MDS向所述虚拟机管理器发送所述分组信息,以便所述虚拟机管理器根据所述分组信息部署M个虚拟机。
在本发明实施例中,首先,该MDS能够对接收到虚拟机管理器发送的N个虚拟机的标识进行分组,并将该分组信息发送给该虚拟机管理器,确保该虚拟机管理器能够基于该分组信息对该N个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,提高了该分布式存储系统的稳定性和可靠性。其次,由于不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进一步提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
第三方面,提供了一种数据存储方法,其特征在于,多个物理服务器中至少部署有M个虚拟机,所述M个虚拟机分别被部署为分布式存储系统的M个SN,M为大于或等于2的正整数,所述方法包括:
虚拟机管理器向所述分布式存储系统的MDS发送所述M个虚拟机的标识;
所述虚拟机管理器接收所述MDS发送的分组信息,所述分组信息记录多个反亲合组与所述M个虚拟机的标识的映射关系,每个所述反亲合组中的虚拟机之间具有反亲和性,所述分组信息用于所述MDS在客户端请求存储数据时从至少一个所述反亲合组中确定N个虚拟机的标识,所述N个虚拟机用于存储客户端指定存储的N份数据,N为大于或等于1的正整数;
所述虚拟机管理器根据所述分组信息部署M个虚拟机。
在本发明实施例中,该虚拟机管理器可以将被部署为SN的M个虚拟机的标识发送给该MDS,并根据接收到的对该M个虚拟机进行分组的分组信息,对该M个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,提高了该分布式存储系统的稳定性和可靠性。其次,由于不需要将该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况发送给该MDS,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进一步提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
进一步地,所述M个虚拟机属于多个亲合组,每个所述亲合组中的虚拟机之间具有亲和性,所述分组信息记录多个亲合组与M个虚拟机的标识的映射关系。
在本发明实施例中,由于该虚拟机管理器能够根据该分组信息对该M个虚拟机进行部署,且部署后的该M个虚拟机还可以属于多个亲和组,也即是,该M个虚拟机中的若干个虚拟机不但可以按照反亲和性划分为反亲和性组同时可以按照亲和性划分为亲和性组,从而能够满足不同的存储需求,提高了该分布式存储系统的灵活性。
第四方面,提供了一种数据存储装置,所述数据存储装置具有实现上述第一方面中的数据存储方法的功能。该数据存储装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的数据存储方法。
第五方面,提供了一种数据存储装置,所述数据存储装置具有实现上述第二方面中的数据存储方法的功能。该数据存储装置包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的数据存储方法。
第六方面,提供了一种数据存储装置,所述数据存储装置具有实现上述第三方面中的数据存储方法的功能。该数据存储装置包括至少一个模块,该至少一个模块用于实现上述第三方面所提供的数据存储方法。
第七方面,提供了一种数据存储装置,所述数据存储装置的结构中包括处理器和存储器,所述存储器用于存储支持数据存储装置执行上述第一方面所提供的数据存储方法的程序,和/或存储用于实现上述第一方面所提供的的数据存储方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第八方面,提供了一种数据存储装置,所述数据存储装置的结构中包括处理器和存储器,所述存储器用于存储支持数据存储装置执行上述第二方面所提供的数据存储方法的程序,和/或存储用于实现上述第二方面所提供的的数据存储方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第九方面,提供了一种数据存储装置,所述数据存储装置的结构中包括处理器和存储器,所述存储器用于存储支持数据存储装置执行上述第三方面所提供的数据存储方法的程序,和/或存储用于实现上述第三方面所提供的的数据存储方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第十方面,本发明实施例提供了一种计算机存储介质,用于储存为上述第四方面至第九方面中任一方面所提供的数据存储装置所用的计算机软件指令,或存储用于执行上述第一方面至第三方面中任一方面的数据存储方法所设计的程序。
本发明实施例提供的技术方案带来的有益效果是:在本发明实施例中,分布式存储系统中的MDS能够接收该客户端的数据存储请求,并根据存储的分组信息,从至少一个反亲合组中确定满足存储数据需求的N个虚拟机的标识,以确保该客户能够向该N个虚拟机的标识对应的、被部署为SN的虚拟机中存储数据,由于该分组信息记录的是多个反亲合组与M个虚拟机的标识的映射关系,而不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进而提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种虚拟化环境中的分布式存储系统架构图;
图2是本发明实施例提供的一种物理服务器的结构示意图;
图3A是本发明实施例提供的一种数据存储方法的流程图;
图3B是本发明实施例提供的另一种物理服务器示意图;
图3C是本发明实施例提供的又一种物理服务器示意图;
图3D是本发明实施例提供的又一种物理服务器示意图;
图4A是本发明实施例提供的一种数据存储装置结构示意图;
图4B是本发明实施例提供的另一种数据存储装置结构示意图;
图5是本发明实施例提供的又一种数据存储装置结构示意图;
图6是本发明实施例提供的又一种数据存储装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是根据一示例性实施例示出的一种虚拟化环境中的分布式存储系统架构图,参照图1,该分布式存储系统包括客户端、MDS和多个SN(图1中仅示出8个)等软件控制端。另外,该虚拟化环境是通过虚拟化技术在多个物理服务器上搭建,并通过虚拟机管理器在该多个物理服务器中部署若干个虚拟机。该多个物理服务器中的任意两个物理服务器之间可以通过网络连接。
在本发明实施例中,分布式存储系统中的部分或者全部SN可以部署在该若干个虚拟机中的任一虚拟机中。
可选地,该分布式存储系统中的客户端、MDS、以及SN,均可以部署该若干个虚拟机中的任一虚拟机中。
可选地,该分布式存储系统中的客户端、MDS可以部署在物理服务器上。该分布式存储系统中的部分SN部署在该若干个虚拟机中的任一虚拟机中,剩余部分中的至少一个SN可以部署在物理服务器上。
在本发明实施例中,该客户端可以与该MDS进行通信,从而向该MDS发送数据存储请求,并接收该MDS分配的部署为SN的虚拟机的标识;该客户端也可以与该多个SN中任一个SN进行通信,从而向该多个SN中的某些SN存储数据或者读取数据。
该MDS可以与该虚拟机管理器进行通信,通过该虚拟机管理器查询该多个物理服务器中部署为SN的虚拟机的标识,或者接收该虚拟机管理器发送的部署为SN的虚拟机的标识。
其中,该虚拟机的标识用于在该多个物理服务器中唯一标识一个虚拟机,该虚拟机的标识可以是虚拟机的互联网协议(Internet Protocol,IP)地址、端口号、名称等,当然,在实际应用中,该虚拟机的标识还可以是其它能够在该多个物理服务器中唯一标识一个虚拟机的标识。
还需要说明的是,在实际使用中,该虚拟机管理器可以部署在该多个物理服务器之外的物理设备上,比如,该多个物理服务器之外的另一个物理服务器,当然,根据实际需要,该虚拟机管理器也可以部署在该多个物理服务器中的某个物理服务器中。
图2是本发明实施例提供的一种物理服务器的结构示意图。该物理服务器可以是图1中任一物理服务器。参见图2,该物理服务器包括至少一个处理器201,通信总线202,存储器203以及至少一个通信接口204。
处理器201可以是中央处理器(Central Processing Unit,CPU)、微处理器、特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或者一个或多个可以执行用于实现本发明中的各实施例的程序的集成电路。
通信总线202可包括一通路,在该物理服务器包括的组件(例如处理器201,存储器203以及通信接口204)之间传送数据。
存储器203可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、可存储静态数据和指令的其它类型的静态存储设备、可存储数据和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM),或者其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质,或者其它磁存储设备,或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由该物理服务器存取的任何其它介质,但不限于此。存储器203可以是独立存在,或者通过通信总线202与处理器201相连接,或者和处理器201集成在一起。
通信接口204使用任何收发器一类的装置,用于通过通信网络与其它设备通信;该通信网络可以是以太网、无线接入网(Radio Access Network,RAN)、无线局域网(Wireless Local Area Networks,WLAN)等;该其它设备可以是部署有客户端或者SN的设备(例如可以搬移的计算机设备或者可以携带的移动终端)。
在具体实现中,作为一种实施例,处理器201可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,该物理服务器可以包括多个处理器,例如图2中所示的处理器201和处理器205。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个器件、电路、和/或用于处理数据的处理核。
其中,存储器203用于存储执行用于实现本发明中的各实施例的程序代码210,处理器201用于执行存储器203中存储的程序代码210。该物理服务器可以通过处理器201执行存储器203中的程序代码210,来实现下文图3A实施例所提供的数据存储方法。
图3A是本发明实施例提供的一种数据存储方法的流程图,多个物理服务器中至少部署有M个虚拟机,该M个虚拟机分别被部署为分布式存储系统的M个SN,M为大于或等于2的正整数,参见图3A,该方法包括:
步骤301:虚拟机管理器从多个物理服务器中查询该M个被部署为SN的虚拟机,该多个物理服务器为建立有该虚拟化环境的物理服务器。
由于M个SN(M个SN可以是该分布式存储系统的所有SN或者部分SN)部署在该多个物理服务器中的虚拟机中,这些虚拟机的运行状况直接关系到该分布式存储系统的稳定性和可靠性,因此,为了对部署在该多个物理服务器中的虚拟机进行管理,从而保证该分布式存储系统的稳定性和可靠性,该虚拟机管理器可以从多个物理服务器中查询该M个被部署为SN的虚拟机。
需要说明的是,该虚拟机管理器可以在接收到MDS发送的虚拟机查询请求时,执行步骤301所述的操作。
还需要说明的是,该虚拟机管理器可以在每个物理服务器中部署虚拟机时,获取并存储当前部署的该虚拟机的标识。当然,在实际应用中,该虚拟机管理器还可以通过其它方式获取该该M个被部署为SN的虚拟机的标识;比如,一种可能的实现方式为:该虚拟机管理器向该多个物理服务器中的每个物理服务器发送虚拟机标识获取请求,当该物理服务器接收到该虚拟机标识获取请求时,将该物理服务器中被部署为SN的虚拟机的标识发送给该虚拟机管理器。
例如,该分布式存储系统部署在3个物理服务器中,该虚拟机管理器确定该3个物理服务器中被部署为SN的虚拟机的标识分别为:VM1、VM2、VM3、VM4、VM5、VM6、VM7、VM8、VM9、VM10、VM11和VM12。
步骤302:该虚拟机管理器向该分布式存储系统中的MDS发送该M个虚拟机的标识。
由于该虚拟机管理器查询得到的虚拟机的标识为被部署为SN的虚拟机的标识,为了确保该分布式存储系统能够在该SN中存储数据,该虚拟机管理器可以将查询得到的虚拟机的标识发送给该MDS。
需要说明的是,该MDS可以在向该虚拟机管理器发送虚拟机查询请求,从而使该虚拟机管理器通过上述步骤301和302从该多个物理服务器中查询该M个被部署为SN的虚拟机的标识,并将查询得到的虚拟机的标识发送给该MDS,从而确保该MDS能够查询该多个物理服务器中该M个被部署为SN的虚拟机。当然,在实际应用中,该MDS还可以通过其它方式来查询该多个物理服务器中该M个被部署为SN的虚拟机,比如,一种可能的实现方式为:该MDS在首次接收到该虚拟机管理器发送的虚拟机的标识时,存储接收到的虚拟机的标识,之后,该MDS可以从本地存储中查询该多个物理服务器中被部署为SN的虚拟机。
步骤303:该MDS接收虚拟机管理器发送的该M个虚拟机的标识,对该M个虚拟机进行分组。
由于该M个虚拟机为被部署为SN的虚拟机,该M个虚拟机可能既包括部署在同一物理服务器中的虚拟机,也包括分别部署在不同的物理服务器中的虚拟机,而该分布式存储系统在存储不同的数据时,也可能有不同的需求,比如,需要将某些数据存储至部署在同一物理服务器中的虚拟机的SN中,因此,为了便于该分布式存储系统对数据进行存储,该MDS可以对该M个虚拟机进行分组。且由于该MDS并不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,从而不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进而提高了建立在物理服务器中的虚拟化环境以及部署在该虚拟化环境中的分布式存储系统的稳定性和安全性。
其中,该MDS可以通过下述两种可能的实现方式中的至少一种来对该M个虚拟机进行分组,包括:
第一种可能的实现方式,每个反亲合组中的虚拟机之间具有反亲和性,每个反亲和组中的虚拟机分别部署于不同的服务器上的虚拟机中。因此,当将数据存储至同一反亲和组的虚拟机部署的SN时,能够确保存储该数据的某个SN所在的物理服务器故障时,也能够从部署在其它物理服务器中的虚拟机的SN获取该数据,能够提高该存储该数据的可靠性。所以,该MDS可以将该M个虚拟机划分为多个反亲合组,并在分组信息记录该多个反亲合组与该M个虚拟机的标识的映射关系。
其中,每个反亲和组中包括的虚拟机的数目X通常大于或等于数据可靠性存储的最少数据副本数目,并且X小于M;该X可以由该MDS在将该M个虚拟机划分为多个反亲合组之前确定,比如,一种可能实现的策略为:该X由该MDS接收用户输入的数值得到。
还需要说明的是,数据可靠性存储的最少数据副本数目可以由用户根据实际存储数据的经验确定,比如最少数据副本数目可以为2或3。
例如,该MDS查询到12个虚拟机的标识为VM1、VM2、VM3、VM4、VM5、VM6、VM7、VM8、VM9、VM10、VM11和VM12,X的值3,该MDS将这12个虚拟机划分为4个反亲和组:反亲和组1包括VM1、VM5和VM9,反亲和组2包括VM2、VM6和VM10,反亲和组3包括VM3、VM7和VM11,反亲和组4包括VM4、VM8和VM12,在分组信息中记录该4个反亲和组与该12个虚拟机的标识之间的映射关系为:反亲和组1:VM1、VM5、VM9;反亲和组2:VM2、VM6、VM10;反亲和组3:VM3、VM7、VM11;反亲和组4:VM4、VM8、VM12。
第二种可能的实现方式,每个亲和组中的虚拟机之间具有亲和性,每个该亲和组中的每个虚拟机可以部署于同一服务器上。因此,当将数据存储至同一亲和组的虚拟机中的SN时,可以快速向同一亲和组的虚拟机中的SN中存储数据,或者从同一亲和组的虚拟机中的SN中获取数据,能够提高存储该数据的效率。所以,该MDS可以将该M个虚拟机划分为多个亲合组,并在分组信息记录该多个亲合组与该M个虚拟机的标识的映射关系。
其中,每个亲和组中包括的虚拟机的数目Y可以大于或等于数据可靠性存储的最少数据副本数目,并且Y小于M;该Y可以由该MDS在将该M个虚拟机划分为多个亲合组之前确定,比如,一种可能实现的策略为:该Y由该MDS接收用户输入的数值得到。
例如,该MDS查询到12个虚拟机的标识为VM1、VM2、VM3、VM4、VM5、VM6、VM7、VM8、VM9、VM10、VM11和VM12,Y的值4,该MDS将这12个虚拟机的标识划分为3个反亲和组:亲和组1包括VM1、VM2、VM3和VM4,亲和组2包括VM5、VM6、VM7和VM8,亲和组3包括VM9、VM10、VM11和VM12,在分组信息中记录该3个亲和组与该12个虚拟机的标识之间的映射关系为:亲和组1:VM1、VM2、VM3、VM4;亲和组2:VM5、VM6、VM7、VM8;亲和组3:VM9、VM10、VM11、VM12。
需要说明的是,为了同时兼顾存储数据的可靠性和效率,该MDS也可以将该M个虚拟机按照亲和性划分为多个亲合组以及按照反亲和性划分为多个反亲和组,并在分组信息中记录该多个亲合组与该M个虚拟机的标识的映射关系以及该多个反亲合组与该M个虚拟机的标识的映射关系。
例如,该MDS查询到12个虚拟机的标识为VM1、VM2、VM3、VM4、VM5、VM6、VM7、VM8、VM9、VM10、VM11和VM12,X的值为3,Y的值4,该MDS将这12个虚拟机的标识划分为3个反亲和组和4个亲和组。其中,反亲和组包括:反亲和组1包括VM1、VM5和VM9,反亲和组2包括VM2、VM6和VM10,反亲和组3包括VM3、VM7和VM11,反亲和组4包括VM4、VM8和VM12;亲和组包括:亲和组1包括VM1、VM2、VM3和VM4,亲和组2包括VM5、VM6、VM7和VM8,亲和组3包括VM9、VM10、VM11和VM12。在分组信息中记录该4个反亲和组与该12个虚拟机的标识之间的映射关系为:反亲和组1:VM1VM5VM9;反亲和组2:VM2VM6VM10;反亲和组3:VM3VM7VM11;反亲和组4:VM4VM8VM12,且在分组信息中记录该3个亲和组与该12个虚拟机的标识之间的映射关系为:亲和组1:VM1、VM2、VM3、VM4;亲和组2:VM5、VM6、VM7、VM8;亲和组3:VM9、VM10、VM11、VM12。
步骤304:该MDS向该虚拟机管理器发送该分组信息。
由于该MDS对该M个虚拟机表示进行分组之后,该M个虚拟机在该多个物理服务器中的实际分布情况可能与该分组信息并不一致,因此,为了提高该分布式存储系统的可靠性,该MDS可以将该分组信息发送给虚拟机管理器,以便该虚拟机管理器根据该分组信息部署该M个虚拟机,部署的实现方式可以是根据该分组信息创建虚拟机或者迁移已有虚拟机。
需要说明的是,该虚拟机管理器可以包括一个配置接口,并通过该配置接口接收该分组信息。
另外,为了确保该分布式存储系统能够根据分组的虚拟机进行数据存储,该MDS也可以存储该分组信息。
步骤305:该虚拟机管理器接收该MDS发送的分组信息,根据该分组信息,部署该M个虚拟机。
由于该M个虚拟机在该多个物理服务器中的实际分布情况可能与该分组信息并不一致,因此,为了提高该分布式存储系统的可靠性,该虚拟机管理器可以根据该分组信息部署该M个虚拟机,同时,由于该虚拟机管理器不需要在部署该M个虚拟机时通知该MDS,部署完成之后也不要需要将该多个物理服务器的物理地址以及每个物理服务器中的虚拟机分布情况通知该MDS,因此,在本发明实施例中,该虚拟机管理器能够对该多个物理服务器中的该M个部署虚拟机进行无感知部署。
需要说明的是,当该虚拟机管理器根据该分组信息部署该M个虚拟机时,可以根据分组信息对该M个虚拟机中已创建的至少一个虚拟机进行迁移,或者可以根据分组信息在物理服务器中创建虚拟机,从而完成对该M个虚拟机的部署。
其中,该虚拟机管理器可以通过下述两种可能的实现方式中的至少一种来根据该分组信息部署该M个虚拟机:
第一种可能的实现方式,当该分组信息记录有多个反亲合组与该M个虚拟机的标识的映射关系时,该虚拟机管理器确定处于同一反亲合组中的虚拟机,将处于同一反亲和组中虚拟机分别迁移至该多个物理服务器中不同的物理服务器中。
例如,在该虚拟机管理器对虚拟机迁移之前,该多个物理服务器中的虚拟机分布如图3B所示,其中物理服务器1中包括的虚拟机为:VM1、VM4、VM5和VM7;物理服务器2中包括的虚拟机为:VM2、VM6、VM8和VM10;物理服务器3中包括的虚拟机为:VM3、VM9、VM11和VM12。该虚拟机管理器接收的分组信息为:反亲和组1:VM1、VM5、VM9;反亲和组2:VM2、VM6、VM10;反亲和组3:VM3、VM7、VM11;反亲和组4:VM4、VM8、VM12。因此,该虚拟机管理器将该3个物理服务器中虚拟机进行迁移,迁移后该3个物理服务器中的虚拟机分布如图3C所示,其中,物理服务器1中包括的虚拟机为:VM1、VM3、VM6和VM8;物理服务器2中包括的虚拟机为:VM5、VM7、VM10和VM12;物理服务器3中包括的虚拟机为:VM2、VM4、VM9和VM11。
第二种可能的实现方式,当该分组信息记录有多个亲合组与该M个虚拟机的标识的映射关系时,该虚拟机管理器确定处于同一亲合组中的虚拟机,将处于同一亲和组中虚拟机迁移至该多个物理服务器中的同一物理服务器中。
例如,该虚拟机管理器对虚拟机迁移之前,该多个物理服务器中的虚拟机分布如图3B所示,其中物理服务器1中包括的虚拟机为:VM1、VM4、VM5和VM7;物理服务器2中包括的虚拟机为:VM2、VM6、VM8和VM10;物理服务器3中包括的虚拟机为:VM3、VM9、VM11和VM12。该虚拟机管理器接收的分组信息为:亲和组1:VM1、VM2、VM3、VM4;亲和组2:VM5、VM6、VM7、VM8;亲和组3:VM9、VM10、VM11、VM12。因此,该虚拟机管理器将该3个物理服务器中虚拟机进行迁移,迁移后该3个物理服务器中的虚拟机分布如图3D所示,其中,物理服务器1中包括的虚拟机为:VM1、VM2、VM3和VM4;物理服务器2中包括的虚拟机为:VM5、VM6、VM7和VM8;物理服务器3中包括的虚拟机为:VM9、VM10、VM11和VM12。
另外,当该分组信息记录有多个反亲合组与该M个虚拟机的标识的映射关系以及记录有多个亲合组与该M个虚拟机的标识的映射关系时,该虚拟机管理器不但需要将处于同一反亲和组中的虚拟机分别迁移至该多个物理服务器中的不同物理服务器中,还需要将同一亲和组中的虚拟机分别迁移至该多个物理服务器中的相同物理服务器中。
在上述步骤301-305中,通过该MDS对该多个物理服务器中的该M个虚拟机进行了分组并存储分组信息,通过虚拟机管理器对该M个虚拟机进行了部署,确保了该多个物理服务器中的该M个虚拟机分布情况与该MDS存储的分组信息一致,因此,在下述步骤中,可以基于存储的分组信息进行数据存储。
步骤306:该MDS接收客户端的数据存储请求,并确定该数据存储请求指定的数据的存储份数为N份,N为大于或等于1的正整数。
为能够在该分布式存储系统中存储数据,该MDS可以接收客户端发送的数据存储请求,并确定该数据存储请求所指定的数据的存储份数。
其中,该数据存储请求中可以包括该指定的数据的块标识或该指定的数据所属的文件的文件标识。
需要说明的是,该指定的数据为待存储的数据,该指定的数据可以是一个数据块。
还需要说明的是,该块标识用于唯一标识一个数据块,该块标识可以是该数据块的身份(Identification,ID)标识,当然,在实际应用中,该块标识还可以是其它能够唯一标识该数据块的标识。
还需要说明的是,该文件标识用于唯一标识该文件,该文件标识可以是该文件的文件名等,当然,在实际应用中,该文件标识还可以是其它能够唯一标识该文件的标识。
进一步地,为了确保存储该指定的数据的灵活性,该数据存储请求中可以携待指定的数据的存储份数N,也即是,该N可以由该客户端确定。
其中,N为大于或等于1的正整数。该N可以由该客户端在向该MDS发送该数据存储请求之前确定,比如,一种可能的实现方式为:该客户端接收用户输入的数值,并将接收到的数值确定为N。当然,在实际应用中,该客户端还可以通过其它方式来确定N的大小。
在另一种可能的实现方式中,为了提高存储数据的可靠性,该数据存储请求中可以不携带N,即N可以由该MDS确定。其中,一种可能的策略为,该N可以由相关技术人员在部署该MDS时确定。
步骤307:该MDS根据分组信息确定N个虚拟机的标识,向该客户端发送该数据存储请求的响应信息,该响应信息包括该N个虚拟机的标识。
为了便于该客户端进行数据存储,该MDS可以根据该分组信息,从该M个虚拟机中确定N个虚拟机,并向该客户端发送响应信息,该响应信息用于指示该客户端在该N个虚拟机存储N份该数据存储请求指定的数据,具体地,N个虚拟机中的每个虚拟机存储一份该数据存储请求指定的数据,从而实现为该客户端分配用于存储该指定的数据的SN所在的虚拟机。
需要说明的是,该N个虚拟机的标识对应的N个虚拟机属于至少一个反亲合组,该N个虚拟机为该M个虚拟机中的虚拟机,也即是,该M个虚拟机包括该N个虚拟机。
其中,该MDS可以通过下述两种可能的实现方式来根据分组信息确定该N个虚拟机的标识。
第一种可能的实现方式,为了提高存储数据的可靠性和安全性,该MDS可以优先为该客户端分配N个具有反亲和性的虚拟机:当X大于或等于N时,该MDS从该多个反亲合组中的一个该反亲合组确定该N个虚拟机的标识,当X小于N时,该MDS从至少两个该反亲合组确定该N个虚拟机的标识。
其中,该MDS可以从该至少两个反亲和组中的任一反亲和组中确定X个虚拟机,并从该至少两个反亲和组中其它的反亲和组确定N-X个虚拟机,从而得到N个虚拟机。
进一步地,该MDS在至少两个该反亲合组之间,根据亲合性确定该N个虚拟机的标识。
其中,该MDS可以从该至少两个反亲和组中的任一反亲和组中确定X个虚拟机;并且,该MDS从与该至少两个反亲和组中的其它的反亲和组中,根据亲和性,确定与该X个虚拟机中的至少一个虚拟机处于同一亲和组的N-X个虚拟机,从而得到N个虚拟机。
需要说明的是,由前述可知,该分组信息可以记录多个亲合组与该M个虚拟机的标识的映射关系,因此,该MDS可以根据亲和性,从与该X个虚拟机中至少一个虚拟机所在的亲和组中,选择N-X个虚拟机。
例如,当该MDS接收到的数据存储请求中携带数据块标识为block1,存储份数N为2。由于X为3,即X大于或等于N,因此,该MDS基于分组信息,从反亲和组1中确定两个虚拟机,该两个虚拟机的标识为VM1和VM5。
例如,当该MDS接收到的数据存储请求中携带数据块标识为block2,存储份数N为4。由于X为3,即X小于N,因此,该MDS基于分组信息,从反亲和组1中确定3个虚拟机,该3个虚拟机的标识为VM1、VM5和VM9,并根据VM1所属的亲和组1,从反亲和组2中确定1个虚拟机,该虚拟机的标识为VM2,该VM2属于亲和组1,从而得到4个虚拟机。
第二种可能的实现方式,为了提高存储数据的效率,该MDS可以优先为该客户端分配N个具有亲和性的虚拟机:若Y大于或等于N,则该MDS从该多个亲合组中的一个该亲合组确定该N个虚拟机的标识,若Y小于N,则该MDS从至少两个该亲合组确定该N个虚拟机的标识。
需要说明的是,该MDS从至少两个该亲合组确定该N个虚拟机的标识的步骤,与第一种可能的实现方式中该MDS从至少两个该反亲合组确定该N个虚拟机的标识的步骤相似,本发明实施例不再一一赘述。
进一步地,为了便于在存储该指定的数据之后对该数据进行管理,该MDS在根据分组信息确定N个虚拟机的标识之后,该MDS还可以存储该指定的数据的块标识与该N个虚拟机的标识之间的对应关系、该指定的数据的块标识与该指定的数据所属的文件的文件标识之间的对应关系。
步骤308:当该客户端接收到该N个虚拟机的标识时,在该N个虚拟机中存储该指定的数据。
由于该N个虚拟机的标识为该MDS为该指定的数据分配的、被部署为SN的虚拟机的标识,因此,该客户端可以将该指定的数据存储至该N个虚拟机中。
另外,在将该指定的数据进行存储之后,该分布式存储系统可以对该指定的数据进行管理,比如读取、转存、删除等,本发明实施例对此不做具体限定。
在本发明实施例中,首先,分布式存储系统中的MDS能够接收该客户端的数据存储请求,并根据存储的分组信息,从至少一个反亲合组中确定满足存储数据需求的N个虚拟机的标识,以确保该客户能够向该N个虚拟机的标识对应的、被部署为SN的虚拟机中存储数据,由于该分组信息记录的是多个反亲合组与M个虚拟机的标识的映射关系,而不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进而提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。其次,该MDS在确定该N个虚拟机的标识时,能够将反亲和组包括的虚拟机的数目X与N比较,根据比较的结果,采取不同的策略来确定该N个虚拟机的标识,在确保该存储存储系统的可靠性和稳定性的基础上提高了该分布式存储系统的灵活性。最后,该MDS能够对接收到虚拟机管理器发送的N个虚拟机的标识进行分组,并将该分组信息发送给该虚拟机管理器,确保该虚拟机管理器能够基于该分组信息对该N个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,进一步提高了该分布式存储系统的稳定性和可靠性。
图4A是本发明实施例提供的一种数据存储装置示意图,多个物理服务器中至少部署有M个虚拟机,该M个虚拟机分别被部署为分布式存储系统的M个SN,M为大于或等于2的正整数,参见图4A,该装置包括:第一接收模块401,第一确定模块402,第二确定模块403和第一发送模块404。
第一接收模块401,用于执行步骤306中该分布式存储系统的MDS接收客户端的数据存储请求的操作;
第一确定模块402,用于执行步骤306中该MDS确定该数据存储请求指定的数据的存储份数为N份的操作;
第二确定模块403,用于执行步骤307中该MDS根据分组信息确定N个虚拟机的标识的操作;
第一发送模块404,用于执行步骤307中该MDS向该客户端发送该数据存储请求的响应信息的操作。
可选地,第二确定模块403包括:
第一确定子模块,用于执行步骤307中若该反亲合组包括的虚拟机的标识的数目大于或等于N,则该MDS从该多个反亲合组中的一个该反亲合组确定该N个虚拟机的标识的操作;
第二确定子模块,用于执行步骤307中若该反亲合组包括的虚拟机的标识的数目小于N,则该MDS从至少两个该反亲合组确定该N个虚拟机的标识的操作。
可选地,第二确定子模块还用于:
该MDS在至少两个该反亲合组之间,根据亲合性确定该N个虚拟机的标识。可选地,参见图4B,该装置还包括:
第二接收模块405,用于执行步骤303中该MDS接收虚拟机管理器发送的该M个虚拟机的标识的操作;
划分模块406,用于执行步骤303中该MDS将该M个虚拟机划分为该多个反亲合组,并在该分组信息记录该多个反亲合组与该M个虚拟机的标识的映射关系的操作;
第二发送模块407,用于执行步骤304所述的操作。
可选地,该M个虚拟机属于多个亲合组,每个该亲合组中的虚拟机之间具有亲和性,该分组信息记录多个亲合组与M个虚拟机的标识的映射关系。
在本发明实施例中,分布式存储系统中的MDS能够接收该客户端的数据存储请求,并根据存储的分组信息,从至少一个反亲合组中确定满足存储数据需求的N个虚拟机的标识,以确保该客户能够向该N个虚拟机的标识对应的、被部署为SN的虚拟机中存储数据,由于该分组信息记录的是多个反亲合组与M个虚拟机的标识的映射关系,而不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进而提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
图5是本发明实施例提供的一种数据存储装置示意图,多个物理服务器中至少部署有M个虚拟机,该M个虚拟机分别被部署为分布式存储系统的M个数据节点SN,M为大于或等于2的正整数,参见图5,该装置包括:接收模块501,划分模块502,记录模块503和发送模块504。
接收模块501,用于执行步骤303中该分布式存储系统的MDS接收虚拟机管理器发送的该M个虚拟机的标识的操作;
划分模块502,用于执行步骤303中该MDS将该M个虚拟机划分为多个反亲合组的操作;
记录模块503,用于执行步骤303中该MDS在分组信息记录该多个反亲合组与该M个虚拟机的标识的映射关系的操作;
发送模块504,用于执行步骤304所述的操作。
在本发明实施例中,首先,该MDS能够对接收到虚拟机管理器发送的N个虚拟机的标识进行分组,并将该分组信息发送给该虚拟机管理器,确保该虚拟机管理器能够基于该分组信息对该N个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,提高了该分布式存储系统的稳定性和可靠性。其次,由于不需要获取该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进一步提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
图6是本发明实施例提供的一种数据存储装置示意图,多个物理服务器中至少部署有M个虚拟机,该M个虚拟机分别被部署为分布式存储系统的M个数据节点SN,M为大于或等于2的正整数,参见图6,该装置包括:发送模块601,接收模块602和部署模块603。
发送模块601,用于执行步骤302中虚拟机管理器向该分布式存储系统的元数据节点MDS发送该M个虚拟机的标识的操作;
接收模块602,用于执行步骤305中该虚拟机管理器接收该MDS发送的分组信息的操作;
部署模块603,用于执行步骤305中该虚拟机管理器根据该分组信息部署M个虚拟机的操作。
可选地,该M个虚拟机属于多个亲合组,每个该亲合组中的虚拟机之间具有亲和性,该分组信息记录多个亲合组与M个虚拟机的标识的映射关系。
在本发明实施例中,该虚拟机管理器可以将被部署为SN的M个虚拟机的标识发送给该MDS,并根据接收到的对该M个虚拟机进行分组的分组信息,对该M个虚拟机进行部署,保证了该N个虚拟机在该多个物理服务器中的实际分布情况与该分组信息一致,提高了该分布式存储系统的稳定性和可靠性。其次,由于不需要将该多个物理服务器的物理地址或每个物理服务器中的虚拟机分布情况发送给该MDS,因此,不会泄露每个物理服务器的位置以及每个物理服务器中的虚拟机分布情况,提高了该物理服务器的稳定性和安全性,进一步提高了虚拟化环境以及部署在虚拟化环境中的分布式存储系统的稳定性和安全性。
需要说明的是:上述实施例提供的数据存储的装置在存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据存储装置与数据存储方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。