云平台的构建方法及云平台与流程

文档序号:11411042阅读:1787来源:国知局
云平台的构建方法及云平台与流程

本发明涉及互联网技术领域,特别涉及一种云平台的构建方法及云平台。



背景技术:

随着互联网技术的不断发展,云计算由于其高效、便捷、可配置等优势,正在逐渐取代传统的计算方式。当前,云计算的系统通常可以采用openstack架构来实现。openstack通过提供计算服务(nova)、网络服务(neutron)、块存储服务(cinder)、计算服务(glance)和认证服务(keystone)等,可以作为云计算系统中的管理中间件。

为了构建完整的云计算系统,通常会为openstack配置相应的底层服务。当前,可以基于ceph系统建立存储后端,以配合openstack的块存储服务,从而为计算服务提供虚拟机镜像的存取支持。

现有技术中,在云计算系统中通常仅配置单一的存储后端,各个计算节点中虚拟机的镜像文件均可以存储于该单一的存储后端中。然而,采用单一的存储后端通常会存在以下问题:

1.一旦该存储后端发生故障,会导致所有的计算节点陷入瘫痪,系统的容灾率较低;

2.随着数据量的不断增大,势必需要对存储后端进行扩容。当前的扩容方式是通过在存储后端中添加存储节点,然而,在实际应用中,通过添加存储节点进行扩容的方式,有时候会导致计算节点中虚拟机发生崩溃,系统的稳定性也较差。



技术实现要素:

本申请的目的在于提供一种云平台的构建方法及平台,能够提高整个云平台的容灾率和稳定性。

为实现上述目的,本申请一方面提供一种云平台的构建方法,所述云平台包括多个计算节点以及至少两个存储后端,所述构建方法包括:

建立所述计算节点与所述至少两个存储后端之间的关联关系,以使得每个计算节点有且仅有一个存储后端与其关联。

在本实施方式中,每个所述计算节点上部署至少一个虚拟机;

当计算节点的虚拟机生成镜像文件时,确定所述镜像文件的类型;所述镜像文件的类型包括基础镜像文件和导出镜像文件;

根据所述镜像文件的类型以及生成所述镜像文件的计算节点所关联的存储后端,对所述镜像文件进行存储。

在本实施方式中,为所述存储后端设置可用域;相应地,建立所述计算节点与所述至少两个存储后端之间的关联关系包括:

将所述计算节点划分至所述可用域中,使得每个计算节点有且仅划入一个可用域;将各个所述可用域的域值分配给各自的计算节点。

在本实施方式中,所述方法还包括:

当存储后端数量大于两个时,将存储后端两两合并,并为合并后的存储后端设置不同的可用域。

在本实施方式中,所述方法还包括:

当某个可用域中的预设计算节点产生虚拟机变更计算节点操作时,从该可用域中选择可变更的目标计算节点;

将产生所述虚拟机变更计算节点操作的虚拟机从所述预设计算节点变更至所述目标计算节点。

在本实施方式中,对所述镜像文件进行存储包括:

当所述镜像文件为基础镜像文件时,将所述镜像文件在各个所述存储后端中进行存储。

在本实施方式中,在将所述镜像文件在各个所述存储后端中进行存储之前,所述方法还包括:

为所述基础镜像文件添加可用域属性,并将所述可用域属性的数值设置为空。

在本实施方式中,所述方法还包括:

在根据指定镜像文件创建虚拟机时,在计算服务中设置过滤器;

其中,所述过滤器用于确定所述指定镜像文件的类型;当所述指定镜像文件的类型为基础镜像文件时,选择任一计算节点,并通过选择的所述计算节点创建虚拟机;当所述指定镜像文件的类型为导出镜像文件时,选择可用域的域值与所述指定镜像文件的可用域的域值相同的一个计算节点,并通过选择的所述计算节点创建虚拟机

在本实施方式中,对所述镜像文件进行存储包括:

当所述镜像文件为导出镜像文件时,确定产生所述镜像文件的计算节点所关联的存储后端,并将所述镜像文件存储于确定出的所述存储后端中。

在本实施方式中,在将所述镜像文件存储于确定出的所述存储后端中之前,所述方法还包括:

确定产生所述镜像文件的计算节点对应的可用域的域值;

为所述镜像文件添加可用域属性,并将所述可用域属性的赋值设置为所述可用域的域值。

在本实施方式中,所述方法还包括:

在计算节点创建虚拟机和产生镜像文件时,取消在计算节点校验其所对应存储后端标识是否和所使用镜像在镜像服务指定字段所包含的存储后端标识相一致的步骤。

在本实施方式中,所述方法还包括:

对虚拟机执行导出镜像文件的操作时,由所述虚拟机所处的计算节点对应的计算服务获取所述导出镜像文件的尺寸信息,并由所述计算服务将所述尺寸信息发送至镜像服务。

另一方面,本申请还提供一种云平台,所述云平台包括多个计算节点以及至少两个存储后端,每个所述计算节点上部署有至少一个虚拟机,所述云平台包括:

关联关系建立单元,用于建立所述计算节点与所述至少两个存储后端之间的关联关系,以使得每个计算节点有且仅有一个存储后端与其关联;

镜像文件类型确定单元,用于当计算节点中产生镜像文件时,确定所述镜像文件的类型;所述镜像文件的类型包括基础镜像文件和导出镜像文件;

镜像文件存储单元,用于根据所述镜像文件的类型以及产生所述镜像文件的计算节点所关联的存储后端,对所述镜像文件进行存储。

在本实施方式中,为所述存储后端设置可用域;相应地,所述关联关系建立单元包括:

可用域划分模块,用于将所述计算节点划分至各个可用域中,使得每个计算节点有且仅划入一个可用域;

域值分配模块,用于将各个所述可用域的域值分配给各自的计算节点。

在本实施方式中,所述云平台还包括:

目标计算节点确定单元,用于当目标可用域中的预设计算节点产生虚拟机变更计算节点操作时,从该可用域中选择可变更的目标计算节点;

变更单元,用于将产生所述虚拟机变更计算节点操作的虚拟机从所述预设计算节点变更至所述目标计算节点处。

在本实施方式中,所述镜像文件存储单元包括:

基础镜像文件存储模块,用于当所述镜像文件为基础镜像文件时,将所述镜像文件在各个所述存储后端中进行存储;

导出镜像文件存储模块,用于当所述镜像文件为导出镜像文件时,确定产生所述镜像文件的计算节点所关联的存储后端,并将所述镜像文件存储于确定出的所述存储后端中。

在本实施方式中,所述云平台还包括:

类型确定单元,用于在根据指定镜像文件创建虚拟机时,确定所述指定镜像文件的类型;

虚拟机创建单元,用于当所述指定镜像文件的类型为基础镜像文件时,选择任一计算节点,并通过选择的所述计算节点创建虚拟机;当所述指定镜像文件的类型为导出镜像文件时,选择可用域的域值与所述指定镜像文件的可用域的域值相同的一个计算节点,并通过选择的所述计算节点创建虚拟机。

由上可见,本申请提供的技术方案,可以在云平台中设置至少两个存储后端,这样,在其中一个存储后端发生故障时,其它的存储后端还能够正常使用,提高了云平台的容灾率。在具备至少两个存储后端的云平台中,首先可以将各个计算节点分别与不同的存储后端进行关联,这样,每一个存储后端可以与各自的计算节点相对应。当计算节点产生镜像文件时,需要根据镜像文件的具体类型,有区分地进行存储。具体地,在本申请中,当镜像文件为基础镜像文件时,需要在各个存储后端中均进行存储;而当镜像文件为导出镜像文件时,需要将该导出镜像文件存储至产生该导出镜像文件的计算节点关联的存储后端中。这样处理的目的在于,基础镜像只承载出厂状态的操作系统,因此可以由任一计算节点创建虚拟机,从而需要存储于各个存储后端中。而导出镜像文件具备虚拟机运行中的操作系统的某个用户状态,将该导出镜像文件存储在生成该虚拟机的计算节点关联的存储后端,使得当需要创建与导出镜像文件状态相同的虚拟机时,可以利用该导出镜像文件并选择与同一存储后端相关联的计算节点以创建新的虚拟机。这样,导出镜像文件只可以存储于其中一个存储后端中。基于此,通过增加额外的存储后端,可以提高云平台的容灾率,并使以添加新的存储后端对云平台进行存储扩容时不再对线上运行的虚拟机构成影响,从而可以保证云平台的稳定性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一中云平台的构建方法流程图;

图2是本发明实施例一中计算节点与存储后端的关联示意图;

图3是本发明实施例一中镜像文件的存储示意图;

图4是本发明实施例二中云平台的功能模块图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本申请提供的多存储后端的云平台中,可以包括计算节点以及至少两个存储后端。其中,所述计算节点可以是具备数据处理功能的物理设备。为了充分利用计算节点的cpu、内存等资源,在所述计算节点上可以承载零台或多台虚拟机,这些虚拟机可以具备各自的操作系统,以处理不同的计算任务。

在本实施方式中,所述计算节点可以基于openstack架构进行工作。所述计算节点可以与计算服务的子服务nova-compute相对应。所述计算节点上的虚拟机在运行时,可以通过导出镜像操作获取运行中虚拟机某个用户态的镜像文件。

在本实施方式中,所述存储后端可以基于ceph文件系统进行工作。所述存储后端可以是分布式的结构,其中可以包含多个存储节点。所述存储节点可以是具备数据存储功能的物理设备。

请参阅图1,在本实施方式中,所述多存储后端的云平台的构建方法可以包括以下步骤。

s1:建立所述计算节点与所述至少两个存储后端之间的关联关系,以使得每个计算节点有且仅有一个存储后端与其关联。

在本实施方式中,由于具备至少两个存储后端,可以为每个存储后端关联相应的计算节点。在实际应用中,每个存储后端可以对应各自的可用域(availability_zone)。为了区分不同的可用域,可以预先为各个可用域设置相应的域值。所述域值可以是一个数值,也可以是一个字符串,本申请文件并不做限定。例如,当前具备两个存储后端,这两个存储后端分别对应域值为“az1”和“az2”的两个可用域。

在本实施方式中,可以将所述计算节点划分至各个可用域中,其中,不同可用域中的计算节点各不相同。具体地,可以通过openstack计算服务的内置指令,为各个计算节点设置相应的域值。为计算节点设置的域值可以是当前存储后端对应域值中的一个。例如,当前两个存储后端的域值分别为“az1”和“az2”,那么可以为计算节点设置域值“az1”或者“az2”。需要说明的是,一个计算节点仅具备一个域值,因此,不同存储后端关联的计算节点各不相同。由上可见,将各个所述可用域的域值分配给各自关联的计算节点,从而可以实现对计算节点的划分。

请参阅图2,在一个实际应用示例中,当前共计存在m个存储后端以及n个计算节点。其中,m个存储后端对应的可用域的域值依次为az1、az2直至azm。如图2所示,n个计算节点可以被关联至对应的存储后端,处于同一个存储后端中的计算节点可以具备相同的域值。例如,存储后端1中的计算节点1至i的域值均为“az1”。

在本申请一个实施方式中,在步骤s1之后还可以包括:

s2:当计算节点的虚拟机产生镜像文件时,确定所述镜像文件的类型;所述镜像文件的类型包括基础镜像文件和导出镜像文件。

在本实施方式中,计算节点中的虚拟机可以产生镜像文件。具体地,所述镜像文件可以被划分为基础镜像文件和导出镜像文件。其中,所述基础镜像文件可以指用原生操作系统(如centos7和windows2012等)制作的镜像文件,所述基础镜像文件承载了出厂状态的操作系统,不具备用户的个性化配置(如安装的软件和运行的程序等)。所述导出镜像文件指对运行中的虚拟机通过导出镜像操作获得的镜像文件,由于这一类的镜像文件是针对运行中的虚拟机产生的,因此这一类的镜像文件通常会对应一个系统运行状态。

在本实施方式中,由于基础镜像文件和导出镜像文件的不同,因此对于基础镜像文建和导出镜像文件的存储方式也会存在不同。基于此,在计算节点中产生镜像文件时,要先确定所述镜像文件的类型。

s3:根据所述镜像文件的类型以及产生所述镜像文件的计算节点所关联的存储后端,对所述镜像文件进行存储。

在本实施方式中,基础镜像文件不会带有操作系统的运行状态,因此可以由任一计算节点创建虚拟机,从而需要存储于各个存储后端中。而导出镜像文件具备虚拟机的系统运行状态,因此,只有与同一个存储后端相关联的计算节点才能够根据该导出镜像文件创建虚拟机。这样,导出镜像文件只可以存储于其中一个存储后端中。

在本实施方式中,当所述镜像文件为基础镜像文件时,需要将所述镜像文件在每个所述存储后端中进行存储。具体地,可以在镜像服务(glance)中,为所述镜像文件添加可用域属性,并将所述可用域属性的值设置为空(none)。可用域属性的值为空即表明不为该镜像文件指定可用域,该镜像文件需要被存储于每个存储后端内。

在本实施方式中,当所述镜像文件为导出镜像文件时,可以确定产生所述镜像文件的计算节点所关联的存储后端,并将所述镜像文件存储于确定出的所述存储后端中。例如,处于可用域az1中的计算节点产生导出镜像文件时,只将该导出镜像文件存储于域值为az1的存储后端内,在其它的存储后端中不存在该镜像的拷贝。具体地,可以确定产生所述镜像文件的计算节点对应的可用域的域值,并在镜像服务(glance)中,为所述镜像文件添加可用域属性,并将所述可用域属性的数值设置为确定出的可用域的域值。例如,处于可用域az1中的计算节点产生导出镜像文件后,计算服务为该导出镜像文件添加可用域属性,并将所述可用域属性的值设置为az1。

综上,在本实施方式中,基础镜像文件可用域属性值为空,且在云平台上线时由运维人员在每个存储后端都准备一份拷贝,因此使用基础镜像文件可由任一计算节点创建虚拟机。而导出镜像文件可用域属性值不为空,且只在有相同可用域值的存储后端中存在一份,因此,使用导出镜像文件只能由关联到相同存储后端的计算节点创建虚拟机。这样,导出镜像文件通常只可以存储于其中一个存储后端中。

需要说明的是,在实际应用场景中,为了提高存储后端的存储量,还可能存在当存储后端数量大于两个时,将存储后端两两合并,并设置不同的可用域。因此,在本实施方式中,所述方法还可以包括将至少两个存储后端合并为一个存储后端,并为合并后的存储后端设置可用域的步骤。

请参阅图3,在一个实际应用示例中,当前具备az1和az2两个存储后端。其中,基础镜像文件1需同时存储于域值为az1和域值为az2的存储后端中(由运维人员在云平台上线之前实施)。而对于域值为az1的计算节点生成的导出镜像文件1,只可以被存储于域值为az1的存储后端中(由用户在线上云平台操作产生)。同样的,对于域值为az12的计算节点生成的导出镜像文件2,只可以被存储于域值为az2的存储后端中。

在本申请一个实施方式中,在建立所述计算节点与所述至少两个存储后端之间的关联关系之后,还需要对可能导致计算节点变更的虚拟机操作固化可用域。具体地,固化可用域的目的在于将计算节点的变更限制于该计算节点所处的可用域内。也就是说,当某个虚拟机需要从一个计算节点变更至另一个计算节点时,变更之前的计算节点和变更之后的计算节点都应当处于同一个可用域中。

在本实施方式中,可能导致计算节点变更的虚拟机操作可以包括变更配置、冷迁移、热迁移、疏散和取消搁置等。具体地,当目标可用域中的预设计算节点产生虚拟机变更操作时,可以先在所述目标可用域中确定目标计算节点。然后可以将产生所述虚拟机变更操作的虚拟机从所述预设计算节点变更至所述目标计算节点处。这样便可以保证变更之前的计算节点和变更之后的计算节点都处于同一个可用域中。

在本实施方式中,在目标可用域中确定目标计算节点的方式可以包括在所述目标可用域中随机选取一个与所述预设计算节点不同的计算节点,并将选取的计算节点作为所述目标计算节点。当然,为了保证虚拟机在变更之后能够正常运行,还可以将所述目标可用域中除所述预设计算节点之外的计算节点按照当前剩余的cpu资源和内存资源进行排序,并将剩余的cpu资源和内存资源最多的计算节点作为所述目标计算节点。

在本申请一个实施方式中,可以为计算服务(nova)的调度器添加一个过滤器,该过滤器可以在根据指定镜像文件创建虚拟机时,将计算节点的可用域与所述指定镜像文件的可用域进行匹配。具体地,首先可以确定所述指定镜像文件的类型。当所述指定镜像文件的类型为基础镜像文件时,表明其在所有存储后端都存在一份拷贝,此时可以选择任一计算节点,并通过选择的所述计算节点创建虚拟机。然而,当所述指定镜像文件的类型为导出镜像文件时,表明其在仅在某一个存储后端存在一份拷贝,此时可以选择可用域的域值与所述指定镜像文件的可用域的域值相同的一个计算节点,并通过选择的所述计算节点创建虚拟机。例如,所述指定镜像文件为导出镜像文件,计算服务可以查询到该导出镜像文件的可用域的域值为az1,那么此时可以从域值为az1的计算节点中选取一个计算节点,并通过选取出的该计算节点创建虚拟机。

在本申请一个实施方式中,考虑到在单一存储后端的系统架构中,每当在计算节点创建虚拟机或产生导出镜像文件时,都会在计算节点校验其所对应ceph存储后端的标识是否与其所使用镜像在镜像服务的指定字段所包含的镜像文件所在存储位置的标识一致。例如,通常都会校验计算节点关联的ceph存储后端的“fsid”与镜像服务中location字段所包含的“fsid”是否相等,若相等,则允许创建虚拟机或进行导出镜像操作,否则会拒绝请求。该机制本就只能在单一存储后端情境下保障计算服务和镜像服务使用相同存储后端,在多存储后端场景下显然是不适用的。基于此,在本实施方式中,在计算节点创建虚拟机和产生镜像文件时,取消校验计算节点所关联存储后端标识是否与镜像在镜像服务中的location字段所包含的存储后端标识相等,从而可以使创建虚拟机或产生导出镜像文件支持多后端场景。

在本申请一个实施方式中,需要说明的是,至少两个存储后端中仅有一个存储后端会与镜像服务相对应,其它的存储后端则无法与镜像服务相对应。而如果按照现有技术中单一存储后端的场景而言,每当虚拟机进行导出镜像文件操作时,通常都会由镜像服务从存储后端处获取或者校验导出镜像文件的尺寸。然而在本申请的多个存储后端的场景下,仅有一个存储后端与镜像服务相对应,如果其它的存储后端关联的计算节点中的虚拟机产生导出镜像文件操作时,由于其它存储后端与镜像服务并不对应,从而导致镜像服务无法从存储后端处获取镜像的尺寸,这样便会导致无法获取镜像尺寸而判定导出操作失败。举例来进行说明,当前具备az1存储后端与az2存储后端,其中,az1存储后端与镜像服务相对应,而az2存储后端无法与镜像服务相对应。那么当az2存储后端关联的计算节点中的虚拟机产生导出镜像文件操作时,如果按照现有技术中由镜像服务获取镜像尺寸的方式,此时镜像服务便会尝试从az1存储后端中获取镜像尺寸(因为镜像服务仅与az1存储后端相对应),显然,由于导出镜像文件操作是在az2可用域中生成的,镜像服务必然无法从az1存储后端处获取镜像尺寸。这样的话,便会导致导出操作失败。因此,在本实施方式中,当虚拟机执行导出镜像文件的操作时,可以由所述虚拟机所处的计算节点对应的计算服务(而不是镜像服务)获取所述导出镜像文件的尺寸信息,并由所述计算服务将所述尺寸信息发送至镜像服务。这样,便可以使得镜像服务可以正常获取到镜像尺寸,保证导出操作的顺利进行。

实施例二

请参阅图2,本申请还提供一种云平台,所述云平台包括多个计算节点以及至少两个存储后端,每个所述计算节点可承载零台或多台虚拟机,所述云平台包括:

关联关系建立单元100,用于建立所述计算节点与所述至少两个存储后端之间的关联关系,以使得每个计算节点有且仅有一个存储后端与其关联;

镜像文件类型确定单元200,用于当计算节点的虚拟机中产生镜像文件时,确定所述镜像文件的类型;所述镜像文件的类型包括基础镜像文件和导出镜像文件;

镜像文件存储单元300,用于根据所述镜像文件的类型以及产生所述镜像文件的计算节点所关联的存储后端,对所述镜像文件进行存储。

在本实施方式中,每个所述存储后端具备各自的可用域;相应地,所述关联关系建立单元包括:

可用域划分模块,用于将所述计算节点划分至各个可用域中,使得每个计算节点有且仅划入一个可用域;

域值分配模块,用于将各个所述可用域的域值分配给各自的计算节点。

在本实施方式中,所述云平台还包括:

目标计算节点确定单元,用于当目标可用域中的预设计算节点产生虚拟机变更计算节点操作时,从该可用域中选择可变更的目标计算节点;

变更单元,用于将产生所述变更计算节点操作的虚拟机从所述预设计算节点变更至所述目标计算节点处。

在本实施方式中,所述镜像文件存储单元包括:

基础镜像文件存储模块,用于当所述镜像文件为基础镜像文件时,将所述镜像文件在各个所述存储后端中进行存储;

导出镜像文件存储模块,用于当所述镜像文件为导出镜像文件时,确定产生所述镜像文件的计算节点所关联的存储后端,并将所述镜像文件存储于确定出的所述存储后端中。

在本实施方式中,所述云平台还包括:

类型确定单元,用于在根据指定镜像文件创建虚拟机时,确定所述指定镜像文件的类型;

虚拟机创建单元,用于当所述指定镜像文件的类型为基础镜像文件时,选择任一计算节点,并通过选择的所述计算节点创建虚拟机;当所述指定镜像文件的类型为导出镜像文件时,选择可用域的域值与所述指定镜像文件的可用域的域值相同的一个计算节点,并通过选择的所述计算节点创建虚拟机。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

以上所描述的云平台实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

由上可见,本申请提供的技术方案,可以在云平台中设置至少两个存储后端,这样,在其中一个存储后端发生故障时,其它的存储后端还能够正常使用,提高了云平台的容灾率。在具备至少两个存储后端的云平台中,首先可以将各个计算节点分别与不同的存储后端进行关联,这样,每一个存储后端可以与各自的计算节点相对应。当计算节点产生镜像文件时,需要根据镜像文件的具体类型,有区分地进行存储。具体地,在本申请中,当镜像文件为基础镜像文件时,需要在各个存储后端中均进行存储;而当镜像文件为导出镜像文件时,需要将该导出镜像文件存储至产生该导出镜像文件的计算节点关联的存储后端中。这样处理的目的在于,基础镜像只承载出厂状态的操作系统,因此可以由任一计算节点创建虚拟机,从而需要存储于各个存储后端中。而导出镜像文件具备虚拟机运行中的操作系统的某个用户状态,因此,只有与同一个存储后端相关联的计算节点才能够根据该导出镜像文件创建虚拟机,这样,导出镜像文件只可以存储于其中一个存储后端中。基于此,通过增加额外的存储后端,可以提高云平台的容灾率,并使以添加新的存储后端对云平台进行存储扩容时不再对线上运行的虚拟机构成影响,从而可以保证云平台的稳定性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1