一种基于异构指令集的虚拟化存储方法与流程

文档序号:31474062发布日期:2022-09-09 23:59阅读:71来源:国知局
一种基于异构指令集的虚拟化存储方法与流程

1.本发明属于信息技术应用创新的技术领域,具体而言,涉及一种基于异构指令集的虚拟化存储方法。


背景技术:

2.随着信创产业(也称:信息技术应用创新)的发展,作为新基建的重要方向,从2020年开始,国产化替代得到了国家战略层次的持续推进,其中,国产cpu和操作系统是实现自主可控的核心,是解决“卡脖子”的关键环节。国产cpu的主要参与者为龙芯、兆芯、飞腾、海光、申威和华为鲲鹏等品牌,已经逐步形成了基于loongarch(龙芯)、alpha(申威)、arm(飞腾、鲲鹏)、x86(海光、兆芯)等四大主流指令集的技术路线,成为经济数字化转型、提升产业链发展的关键,从技术体系引进、强化产业基础、加强保障能力等方面着手,促进信创产业在本地落地生根,带动传统it信息产业转型,构建区域级产业聚集集群。
3.基于此,目前各行业数据中心(idc)的建设,不管是公有云还是私有云,都会充分考虑政策、应用环境、人员等风险,并制定相应的风险对策和管理措施,针对基础环境存在不同国产芯片架构的情况,制定可持续使用的设计方案。所涵盖的基础设施包括四大指令集的国产芯片服务器、国产存储设备、国产网络设备和国产安全设备组成。基于这样的硬件实施,配置相应的底层支撑,包括操作系统、虚拟化软件等,形成计算资源池(虚拟机池、裸金属物理机池)、存储资源池(fc-san存储资源池、分布式存储资源池)、网络资源池(vpn、弹性ip、虚拟交换机)等,构建起基础设施即服务层(iaas)。
4.目前,业界iaas层面的存储资源池都只支持单一指令集的技术路线,存在一定的路径依赖,当某个技术路线的服务器、存储或网络交换机、路由器发生停止供货、停止运维、停止升级等“卡脖子”事件时,会导致业务系统停滞、降级甚至中断。
5.虽然目前有一些基于单一国产芯片的大规模分布式并行i/o的存储虚拟化技术,但是一旦在cpu芯片层面上出现“断供”的情况,会大幅影响业务的正常运行。


技术实现要素:

6.鉴于此,为了解决现有技术存在的上述问题,本发明的目的在于提供一种基于异构指令集的虚拟化存储方法以达到不仅减少了对单一指令集的路径依赖,还提高了存储资源池的利用率的目的。
7.本发明所采用的技术方案为:一种基于异构指令集的虚拟化存储方法,该虚拟化存储方法包括:构建协议层,由协议层提供块存储、对象存储和文件存储协议,并通过块存储、对象存储和文件存储协议输入数据读写命令;构建本地api处理层,由本地api处理层提供库函数,并通过调用库函数执行数据读写命令;构建异构分布式存储核心层,由异构分布式存储核心层提供不同指令集的存储数
据节点,通过ceph协议与本地api处理层在各个存储数据节点之间建立通信,并由至少三个存储数据节点组合成一服务器,各个不同的服务器分别对应存储读写数据。
8.进一步地,所述块存储通信连接有分布式系统接口;所述对象存储通信连接有裸金属服务器接口和/或虚拟机接口;所述文件存储协议通信连接有posix文件系统接口。
9.进一步地,所述异构分布式存储核心层的构建方法为:建立客户端,通过客户端与本地api处理层的库函数建立通信连接;建立对象存储设备,在对象存储设备中布置多个存储数据节点,并将各个存储数据节点分别部署在不同指令集的服务器上,且在各所述存储数据节点间建立通信连接;布置监视维护设备,通过监视维护设备分别与各所述存储数据节点建立通信连接并交互各个所述存储数据节点的状态信息。
10.进一步地,不同指令集的服务器分别为:loongarch服务器、alpha服务器、arm服务器和x86服务器。
11.进一步地,该虚拟化存储方法中执行数据读写命令,具体包括以下:s1:通过用户端、块存储、对象存储或文件存储调用库函数执行读写命令;s2:若库函数通过客户端读取一个文件,则进入读文件;若库函数通过客户端写入一个文件,则进入写文件;所述写文件包括:a1:通过客户端将文件分割为若干个大小相同的对象存储块;a2:将每个对象存储块映射到互为冗余的n个存储数据节点,n≥2;a3:向n个存储数据节点中的一级存储数据节点发起写请求;a4:同步复制n-1个副本分别到不同指令集的n-1个存储数据节点中;a5:向客户端确认对象存储块的写入;所述读文件包括:b1:从文件获取索引节点,并根据索引节点计算其所在的存储数据节点;b2:向存储数据节点发起读请求;b3:将读取的对象存储块返回至客户端。
12.进一步地,所述a1包括:a101:对文件进行切割成若干个对象存储块;a102:对若干个对象存储块进行编号,生成异构oid。
13.进一步地,上述a2包括:a201:将每个对象存储块映射到一个中间层sg,并通过中间层sg对对象存储块进行组织,中间层sg与对象存储块间形成“一对多”的映射关系;a202:通过中间层sg与存储数据节点进行映射,将一中间层sg映射到多个存储数据节点上,以使中间层sg动态迁移到不同存储数据节点的组合中。
14.进一步地,在a202中,当中间层sg分配到多个存储数据节点时,各个存储数据节点是不同指令集的服务器,或是同一个指令集的服务器上。
15.进一步地,所述b2为:向存储数据节点发起读请求,若该存储数据节点损坏,则按优先级向存储数据节点冗余的其他存储数据节点发送读请求,直至读取到对象存储块为止。
16.本发明的有益效果为:
1. 采用本发明所提供的基于异构指令集的虚拟化存储方法,其通过采用基于loongarch、alpha、arm、x86等异构指令集虚拟化存储方法,完成整个数据中心底层分布式存储处理机制,分布式存储指的是可以部署在多台服务器上,通过多台服务器并行处理来对外提供高性能的读写,本技术提供了支持异构指令集的技术,解决了传统ceph协议对单一技术路线的依赖,解决了过去在虚拟化存储方法被别人“卡脖子”的问题。
17.2. 采用本发明所提供的基于异构指令集的虚拟化存储方法,可广泛运用在云计算idc、大数据存储底座、数据管理、智慧城市等数据量大,又要求国产自主可控的应用中。
附图说明
18.图1是本发明所提供的基于异构指令集的虚拟化存储方法的整体架构图;图2是本发明所提供的基于异构指令集的虚拟化存储方法中异构分布式存储核心层的映射示意图;图3是本发明所提供的基于异构指令集的虚拟化存储方法的工作流程示意图。
具体实施方式
19.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能理解为对本技术的限制。相反,本技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
20.实施例1在本实施例中具体提供了一种基于异构指令集的虚拟化存储方法,该虚拟存储池基于异构指令集的虚拟化存储方法技术,其通过分布式存储技术把文件、对象和数据块分配到不同指令集的服务器或工作站的磁盘中。具体的讲,其是基于loongarch、alpha、arm、x86等异构指令集的虚拟化存储方法技术,对外提供统一的存储服务。
21.如图1所示,该虚拟化存储方法包括:分别建立协议层、本地api处理层和异构分布式存储核心层三部分。采用协议层提供块存储、对象存储和文件存储协议,通过块存储、对象存储和文件存储协议输入数据读写命令,对上屏蔽底层不同指令集cpu服务器的差异性。在实际应用时,所述块存储通信连接有分布式系统接口,例如:amazon s3分布式系统和swift分布式系统;所述对象存储通信连接有裸金属服务器(host)接口和/或虚拟机(vm)接口;所述文件存储协议通信连接有posix文件系统接口,例如:nfs文件系统接口、cifs文件系统接口等。
22.采用本地api处理层提供库函数,通过调用库函数执行数据读写命令;本层提供一堆用于开发的库函数,这些库函数与应用一般来说在同一台节点上,所以也被称为本地api处理层。
23.采用异构分布式存储核心层提供不同指令集的存储数据节点,且各个存储数据节点通过ceph协议与本地api处理层建立通信,并由至少三个存储数据节点组合成一服务器,各个不同的服务器分别对应存储读写数据。值得注意的,异构分布式存储核心层是本虚拟存储池的核心,也是最底层数据真正存放的地方,物理上由大量的不同指令集的服务器所
构成,可以遵循ceph协议实现可靠性、自动化、可扩展等特性。
24.针对上述,为将本技术的核心作更进一步的说明,如图2所示,所述异构分布式存储核心层由客户端、对象存储设备和监视维护设备所组成。
25.建立客户端且客户端也称为client,它可以是一个程序,也可能是命令行。所述客户端与本地api处理层的库函数建立通信连接,因此,上层的库函数必须通过客户端(client)程序与存储节点作信息交互。
26.建立对象存储设备,对象存储设备也称为osds,所述对象存储设备由多个存储数据节点组成,存储数据节点也称为osd,将各个所述存储数据节点部署在不同指令集的服务器上,且在各所述存储数据节点间建立通信连接。根据ceph协议,每一个存储数据节点(osd)实际上是一台安装了操作系统和文件系统的服务器,一般来说,一个存储数据节点(osd)至少包括:单核cpu、内存、一块硬盘和一张网卡。把若干个存储数据节点(osd)部署在不同指令集cpu的服务器上,不同指令集的服务器分别为:loongarch服务器、alpha服务器、arm服务器和x86服务器。同时,每个存储数据节点(osd)都有一个守护线程(deamon),它的作用是介绍客户端(client)的访问连接,与监视维护设备(monitor)以及其他的存储数据节点(osd)通信,与其他的存储数据节点(osd)进行数据存储维护等。换言之,也就是通过该守护线程(deamon)完成了存储数据节点(osd)的逻辑功能。
27.布置监视维护设备,监视维护设备也称为monitors,其主要用来进行系统状态检测和维护。将监视维护设备分别与各所述存储数据节点建立通信连接并交互各个所述存储数据节点的状态信息。每一个存储数据节点(osd)均会与监视维护设备(monitor)交互节点状态信息,形成全局的元数据,即cluster map,利用该元数据(cluster map)就可以得到数据存放的具体位置。
28.在实际应用时,如果客户端(client)来了一个请求,不管这个请求是读还是写,都需要先寻址才能找到数据应该存放到哪里或者需要从哪里读取。根据ceph协议,寻址方式是基于元数据(cluster map)进行计算的,以避免的查表,也避免了使用一个单独的元数据服务器。
29.在本实施例中,使用异构指令集便于存储池的扩容,并可实现对各种复杂技术路线的支持,满足了多样化的计算需求,同时也实现了存储资源整体分配的公平性。
30.由于若干个存储数据节点(osd)部署在不同指令集cpu的服务器上,其还支持不同指令集服务器的存储设备管理,包括登记、分配和回收,形成统一的资源池,其特性有:一是支持各个业务系统的文件相互隔离,可同时存在大量文件系统;二是文件副本和文件分片自动在全系统范围内分散分布,不受单台服务器cpu芯片指令集和存储容量限制;三是全局一致透明,不管是loongarch服务器、alpha服务器、arm服务器还是x86服务器的指令集,从任何一台服务器上访问到的文件系统都是一致的;四是每台服务器都是文件的读写接口,支持大规模分布式并行i/o,保证存储系统本身抗毁容灾。
31.在上述提供的基于异构指令集的虚拟化存储方法的基础上,如图3所示,该虚拟化存储方法中执行数据读写命令,具体包括以下:s1:通过用户端、块存储、对象存储或文件存储调用库函数执行读写命令;s2:若库函数通过客户端写入一个文件,则进入写文件;假设从客户端(client)传来的一个文件(file),所述写文件包括:
a1:按照分布式对象存储的思想,通过客户端将文件分割为若干个大小相同的对象存储块(object),将这些对象存储块(object)映射到存储数据节点(osd)上;具体为:a101:对文件进行切割成若干个对象存储块,就是按照一定的大小对文件(file)进行切割即可,相当于raid中的条带化处理;a102:切割完成以后,对若干个对象存储块进行编号,生成异构oid(object id)。
32.根据上述,每个文件(file)都有一个唯一的索引节点编号ino,也称之为元数据,然后再把文件(file)切分后产生的序号连缀在一起,即可构成异构oid。比如:索引节点编号为99999的某文件被切割成了三个对象存储块(object),异构oid即为999990、999991、999992。
33.区别于传统所使用的固定映射算法,固定映射算法为:使一个对象存储块(object)每次固定映射到一组存储数据节点(osd)上,同时为了确保冗余,同一个对象存储块(object)会映射到3~5个存储数据节点(osd)上且用户可以设置不同的策略,所以当前存储数据节点(osd)会定期与其他的存储数据节点(osd)进行信息的交互,而每个存储数据节点(osd)上承载的对象存储块(object)可能达数百万个,那么如果要在不同指令集的存储数据节点(osd)上进行信息交互的话,数据量将会暴涨至数千万次,维护成本会非常高。
34.为了实现对象存储块(object)与不同指令集存储数据节点(osd)之间的动态映射,以及降低存储数据节点(osd)与对象存储块(object)之间的信息维护,引入了一个中间层sg(策略组织,strategy group),中间层sg首先会对object进行组织,具体如下:a2:将每个对象存储块映射到互为冗余的n个存储数据节点,n≥2,在本实施例中,具体确定n=3;a201:将每个对象存储块映射到一个中间层sg,并通过中间层sg对对象存储块进行组织,中间层sg与对象存储块间形成“一对多”的映射关系;具体的讲:一个对象存储块(object)只能映射到一个中间层sg里面,而一个中间层sg可以组织多个对象存储块(object),也就是说中间层sg与对象存储块(object)之间是“一对多”的映射关系。为实现每一个中间层sg中存储对象存储块(object)的总数据量近似均匀,具体如下:每个对象存储块(object)都要独立映射到一个中间层sg里面,实现了对象存储块(object)能均匀分布在不同指令集的存储数据节点(osd)中,既可以充分利用底层硬件,又可以平摊风险。实现流程如下:首先将oid进行哈希算法(hash),得到一个近似均匀分布的伪随机值,然后按算法选一个中间层sg,把对象存储块(object)放进去。具体算法如下:假设中间层sg的个数为m,那么设定一个长度为m-1的掩码,然后将hash值得到的伪随机值与mask按位相与,最终得到sg序号(sgid),这样就保证了对象存储块(object)与中间层sg之间近似均匀的映射,同时,对象存储块(object)的大小size相同,保证中间层sg中存储对象存储块(object)的总数据量近似均匀。
35.a202:通过中间层sg与存储数据节点(osd)进行映射,将一中间层sg映射到多个存储数据节点(osd)上,以使中间层sg动态迁移到不同存储数据节点的组合中。例如:每个中间层sg会复制成3个副本分别放到3个存储数据节点(osd)上,而每个存储数据节点(osd)上也会承载多个中间层sg。具体如下:存储对象存储块(object)与中间层sg的映射是静态的,也就是一个存储对象存储块(object)通过这个运算一定会映射到某个中间层sg里。加入中间层sg的目的是:实现不
同指令集的存储数据节点(osd)的动态迁移,因此,中间层sg到存储数据节点(osd)的映射是受到其他因素影响的,当系统中存储数据节点(osd)的状态、数量发生变化的时候,映射关系也会变化。通过一个元数据(cluster map)记录当前系统的状态,也就是当前可能发生的变化,最开始的时候管理员可以配置一些策略,比如说一个中间层sg可以分配到3个或5个存储数据节点(osd)上,这3个或5个存储数据节点(osd)可以是不同指令集的服务器,也可以是同一个指令集的服务器或者机架,因此当一个服务器宕掉,还有其他的副本可用。
36.a3:向3个存储数据节点中的一级存储数据节点发起写请求。不管是块存储、文件存储还是对象存储,虚拟机、物理机或用户直接调用库函数执行读写命令时,本地api处理层都会通过客户端(client)向异构分布式存储核心层读取或写入一个文件(file),客户端(client)要在本地将文件(file)映射为若干个对象存储块(object),然后,使用hash和crush算法映射成3个存储数据节点(osd),序号最靠前的存储数据节点(osd)为一级存储数据节点(primary osd),后两个分别为二级存储数据节点(secondary osd)和三级存储数据节点(tertiary osd),一级存储数据节点(primary osd)、二级存储数据节点(secondary osd)和三级存储数据节点(tertiary osd)称之为互为冗余。
37.a4:同步复制2个副本分别到不同指令集的另外2个存储数据节点中;a5:向客户端确认对象存储块的写入,并完成整个写数据过程。
38.本地api处理层和协议层调用异构分布式存储核心层,对外提供块存储、对象存储和文件存储服务,最主要的是数据的读写流程,读与写的流程大体相同,基于上述的写数据流程,下面阐述读数据流程,若库函数通过客户端读取一个文件,则进入读文件,所述读文件包括:b1:从文件获取索引节点,并根据索引节点计算其所在的一级存储数据节点(primary osd);b2:向一级存储数据节点(primary osd)发起读请求,若该一级存储数据节点(primary osd)损坏,则按优先级向该存储数据节点(osd)冗余的其他存储数据节点(二级存储数据节点(secondary osd)和三级存储数据节点(tertiary osd))发送读请求,直至读取到对象存储块(object)为止;b3:将读取的对象存储块(object)返回至客户端(client)。
39.上述所提供的虚拟化存储方法在本地api处理层做了一些优化,当各个存储数据节点(osd)将数据写入内存缓冲区后,先向本地api处理层发送一次确认,当各个存储数据节点(osd)都将数据落到磁盘后,再向本地api处理层发送一个最终的确认字符(ack),用户可以根据具体的应用场景来确定到底选用哪个确认来执行后续的动作。总之,在不需要依赖其他的系统模块,只需要本地api处理层即可完成存储数据节点(osd)的寻址,所以本地api处理层可以直接与存储数据节点(osd)进行并行操作,尽可能均匀分担,从而避免单个存储数据节点(osd)成为性能瓶颈。
40.需要说明的是,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
41.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
42.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
43.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
44.上述提到的存储介质可以是只读存储器,磁盘或光盘等。
45.尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1