一种存储空间分配方法及装置与流程

文档序号:24077558发布日期:2021-02-26 17:08阅读:170来源:国知局
一种存储空间分配方法及装置与流程

[0001]
本申请涉及存储技术领域,特别涉及一种存储空间分配方法及装置。


背景技术:

[0002]
目前常使用独立冗余磁盘阵列(redundant arrays of independent disks,raid)技术对磁盘中的数据进行冗余保护。raid由多块磁盘组成,其存储空间具有数据冗余性保护特征,但是容量极大,因此,通常在raid上创建多个lun(logical unit number,逻辑单元号),为这多个lun分配raid空间,然后把lun提供给客户端服务器访问。
[0003]
然而,在lun的使用过程中,难免会碰到误删除lun的情况,比如人工操作时不小心删错了lun、运维脚本或工具出现bug误删除了lun等,此时需要恢复误删除的lun找回用户数据。按照当前的技术方案,可以通过提前导出的配置文件找到已删除的lun的布局信息,进而恢复误删除的lun。但由于误删除lun时归还的raid空间很可能已经被其他lun使用,导致出现恢复lun失败、用户数据丢失的情况。


技术实现要素:

[0004]
本申请提供了一种存储空间分配方法和装置,以通过优先分配已删除的lun需向raid归还的存储空间以外的存储空间,实现尽量保证已删除的lun可恢复。
[0005]
本申请提供的技术方案包括:
[0006]
第一方面,本申请提供一种存储空间分配方法,包括:
[0007]
将存储设备中磁盘阵列raid的存储空间按照指定长度划分为多个定长块;
[0008]
为上述存储设备中的每一raid创建已删除lun分配表,上述已删除lun分配表用于记录已删除的lun需向上述raid归还的定长块,对于记录在该已删除lun分配表中的定长块,不将其标记为未分配;
[0009]
当需要分配任一raid中的m个定长块给lun时,若当前该raid中共存在n个被标记为未分配的定长块,且m大于n,则将该n个定长块分配给上述lun,并从该raid的已删除lun分配表所记录的定长块中选择m-n个定长块分配给上述lun,并删除上述m-n个定长块对应的记录。
[0010]
第二方面,本申请提供一种存储空间分配装置,包括:
[0011]
划分单元,用于将存储设备中磁盘阵列raid的存储空间按照指定长度划分为多个定长块;
[0012]
分配表创建单元,用于为上述存储设备中的每一raid创建已删除lun分配表,上述已删除lun分配表用于记录已删除的lun需向上述raid归还的定长块,对于记录在该已删除lun分配表中的定长块,不将其标记为未分配;
[0013]
分配单元,用于当需要分配任一raid中的m个定长块给lun时,若当前该raid中共存在n个被标记为未分配的定长块,且m大于n,则将该n个定长块分配给上述lun,并从该raid的已删除lun分配表所记录的定长块中选择m-n个定长块分配给上述lun,并删除上述
m-n个定长块对应的记录。
[0014]
通过本申请提供的方案,能够在存储设备中创建已删除lun分配表,以记录已删除的lun需归还的定长块,且对于记录在已删除lun分配表中的定长块,不将其标记为未分配,由此在需要为lun分配定长块时,可以优先分配已删除的lun需归还的定长块以外的定长块,从而尽量保证已删除的lun需归还的定长块不被分配,进而保证已删除的lun可以恢复。
附图说明
[0015]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0016]
图1为本申请提供的存储空间分配方法流程图;
[0017]
图2a-2c为本申请实施例提供的lun管理模块和raid的交互流程图;
[0018]
图3为本申请提供的存储空间分配装置结构图;
[0019]
图4为本申请实施例提供的另一存储空间分配装置结构图;
[0020]
图5为应用本申请存储空间分配方法的存储设备的一种硬件结构图。
具体实施方式
[0021]
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0022]
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0023]
随着信息化的普及,越来越多的数据被保存在电子存储介质中。电子存储介质的优点是容量大、成本低、访问快,其可靠性也决定了数据的可靠性。目前绝大部分的电子存储介质都是磁盘,包括hdd盘(机械盘)或ssd盘。通常采用raid技术对磁盘中数据进行冗余保护。常见的raid包括raid0、raid1、raid5、raid6、raid10等,分别采用不同的数据组织方式。
[0024]
raid由多块磁盘组成,其容量极大,在一些实施例中,可根据实际需要在raid上创建多个lun,并为所创建的每个lun分配raid的存储空间,然后把lun提供给客户端服务器访问。lun的空间可以根据实际业务需求灵活扩容、缩容。
[0025]
在存储设备使用过程中,难免会碰到误删除lun的情况,这种情况下需要恢复误删除的lun并找回用户数据。目前通常根据提前导出的配置文件等找到误删除的lun的布局信息,该布局信息中记载有该lun由哪些存储空间组成,进而根据该布局信息恢复误删除的lun。但在恢复误删除的lun时,很可能删除lun时归还的存储空间已经被其他lun使用,从而导致恢复lun失败、用户数据丢失等问题。
[0026]
针对上述问题,本申请提供一种存储空间分配方法,通过优先分配已删除的lun需
归还的存储空间以外的存储空间,使最近被删除的lun所归还的存储空间短时间不会被分配给其他lun,从而尽量保证最接近被删除的lun可恢复。
[0027]
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本申请进行详细描述。
[0028]
参见图1,图1为本申请提供的存储空间分配方法流程图。作为一个实施例,图1所示流程可应用于存储设备。如图1所示,该流程可包括如下步骤:
[0029]
步骤s101,为存储设备中的每一raid创建已删除lun分配表,该已删除lun分配表用于记录已删除的lun需向该raid归还的定长块,对于记录在该已删除lun分配表中的定长块,不将其标记为未分配。
[0030]
在执行本步骤s101前,可将存储设备中每一raid的存储空间按照指定长度划分为多个定长块。
[0031]
作为一个实施例,本步骤s101为任一raid创建的已删除lun分配表中的每一记录可包括:已删除的lun的标识和该lun需向raid归还的定长块的编号。其中,lun的标识可为lun的通用唯一识别码(universally unique identifier,uuid)。为便于理解本实施例,表1示例性示出了一个已删除lun分配表:
[0032]
uuid定长块编号2101-2003301-600
[0033]
表1
[0034]
在一个例子中,raid中每个定长块均对应一个分配属性,该分配属性用于表示定长块是否已分配给lun。在一个实施例中,raid可采用位图(bitmap)记录各定长块的分配属性。具体的,该位图中的任一bit位对应一个定长块,如果任一bit位的当前值为0,则表示该bit位对应的定长块未分配;如果任一bit位的当前值为1,表示该bit位对应的定长块已分配。
[0035]
作为一个实施例,对于分配给lun的定长块,raid将其对应的bit位的当前值置为1,以标记该定长块已分配;对于已删除的lun归还的定长块,按照现有的方案,应将其对应的bit位的当前值由1更改为0,而根据本申请的上述步骤s101,对于已删除的lun归还的定长块,raid会将其记录至已删除lun分配表中,并保持该定长块对应的bit位的当前值为1,即不将该定长块标记为未分配。
[0036]
步骤s102,当需要分配任一raid中的m个定长块给lun时,若当前该raid中共存在n个被标记为未分配的定长块,且m大于n,则将该n个定长块分配给上述lun,并从该raid的已删除lun分配表所记录的定长块中选择m-n个定长块分配给上述lun,并删除这m-n个定长块对应的记录。
[0037]
易于理解的是,本步骤s102中的m和n均为不小于0的整数,以及,选择出的m-n个定长块可能对应至少一个已删除的lun。
[0038]
作为一个实施例,由于上述m-n个定长块是从已删除lun分配表所记录的定长块中选择出的,其当前仍被标记为已分配而不是未分配,因此在将这m-n个定长块分配给lun后,无需更改这m-n个定长块的标记。
[0039]
作为一个实施例,本步骤s102从该raid的已删除lun分配表所记录的定长块中选
择m-n个定长块有多种实现方式。例如,可选择已删除lun分配表中记录时间较早的m-n个定长块,具体的,可优先从已删除lun分配表中记录时间最早的已删除lun对应的记录中选择定长块,并在该已删除lun对应的记录中的定长块数量不足m-n时,从记录时间仅此于该记录的另一记录中继续选择定长块,以此类推,直至选出m-n个定长块。
[0040]
在一个例子中,将已删除的lun需归还的部分或全部定长块分配给其他lun,将导致后续可能无法恢复该已删除的lun。作为一个实施例,在将raid的m-n个定长块分配给lun后,若这m-n个定长块对应的已删除的lun中,存在第一lun的定长块未被全部选择,则可将该第一lun记录在已删除lun分配表中的其余定长块均标记为未分配,并将已删除lun分配表中该第一lun对应的记录删除。通过本实施例,对于难以保证可以恢复的已删除的lun,可将其需归还的定长块均标记为未分配,并将该lun对应的记录从已删除lun分配表中移除,由此可以有效节约表项资源占用。为便于理解本实施例,下面举一个简单的例子:
[0041]
以已删除的lun-2在raid-a的已删除lun分配表中记录有编号为101-200的定长块为例,若raid-a在为lun-4分配定长块时,将与已删除的lun-2对应的、编号为101-130的30个定长块分配给lun-4,则raid-a的已删除lun分配表中仍记录有lun-2对应的编号为131-200的70个定长块,则可将这70个定长块均标记为未分配,并将lun-2在raid-a的已删除lun分配表中对应的记录删除。
[0042]
作为一个实施例,对于将第一lun的定长块分配出去的raid之外的其他raid,若其已删除lun分配表中也存在该第一lun对应的记录,则可将第一lun记录在该其他raid的已删除记录表中的定长块均标记为未分配,并将第一lun对应的记录从该其他raid的已删除lun分配表中均删除。
[0043]
至此,完成图1所示流程。
[0044]
通过图1所示流程,能够在存储设备中创建已删除lun分配表,以记录已删除的lun需归还的定长块,且对于记录在已删除lun分配表中的定长块,不将其标记为未分配,由此在需要为lun分配定长块时,可以优先分配已删除的lun需归还的定长块以外的定长块,从而尽量保证已删除的lun需归还的定长块不被分配,进而保证已删除的lun可以恢复。
[0045]
作为一个实施例,当需要恢复任一已删除的lun时,例如当接收到对任一已删除的lun的恢复指令时,若该lun在raid的已删除lun分配表中存在对应的记录,则可恢复该lun,并从各raid的已删除lun分配表中删除该lun对应的记录。
[0046]
在一个例子中,存储设备中还可创建已删除lun记录表,用于记录已删除的lun的删除时间。作为一个实施例,已删除lun记录表中可包含已删除的lun的标识和删除时间,具体的,已删除的lun的标识可为lun的uuid。为便于理解,如下表2示例性示出了一个已删除lun记录表:
[0047]
uuid删除时间212:54:00316:32:11
[0048]
表2
[0049]
在一个例子中,存储设备可保持已删除lun记录表和上文描述的已删除lun分配表对应记录,即保持两者中存在的记录对应的已删除的lun一致。作为一个实施例,当已删除lun分配表中增加或删除任一已删除的lun对应的记录时,可在该lun需归还定长块的每一
raid的已删除lun分配表中对应增加或删除该lun对应的记录;类似的,当任一raid的已删除lun分配表中增加或删除任一已删除的lun对应的记录时,可在已删除lun分配表中对应增加或删除该lun对应的记录。若根据上文实施例,对于难以保证可以恢复的已删除lun,将该lun对应的记录从各raid的已删除lun分配表中均移除,则通过本实施例,可保证在已删除lun分配表中存在对应记录的已删除的lun一定可以恢复。下面对本实施例的具体实现进行举例描述:
[0050]
在一个实施例中,当已删除lun记录表中任一lun的删除时间满足预设条件时,将该lun需归还的定长块标记为未分配,并删除该lun在已删除lun记录表中对应的记录,以及删除该lun在需归还定长块的raid的已删除lun分配表中对应的记录。本实施例中,将lun需归还的定长块标记为未分配,具体可由该lun需归还定长块的各raid根据已删除lun分配表确定出该lun需归还的定长块,并将该定长块标记为未分配。作为一个实施例,可根据已删除lun的映射表确定该lun需归还定长块的raid,其中已删除lun的映射表中可记录有lun的布局信息,该布局信息包括该lun具体由哪些raid的哪些定长块构成。
[0051]
作为一个实施例,删除lun时可保留该lun的映射表,以便后续依据该lun的映射表恢复该lun。本实施例中,lun的映射表可在将该lun对应的记录从已删除lun分配表或已删除lun记录表中移除时删除,需要说明的是,这里将lun对应的记录从已删除lun分配表或已删除lun记录表中移除,不包括恢复该lun的情况。
[0052]
关于如何确定已删除lun记录表中任一lun的删除时间满足预设条件,下面通过两个实施例进行举例描述:
[0053]
作为一个实施例,可在当依据任一lun的删除时间,确定该lun已被删除的时间达到第一阈值时,判断该lun的删除时间满足预设条件。作为一个实施例,可按照预设时间周期检查已删除lun记录表中的各删除时间是否满足预设条件。通过本实施例,可以限制已删除lun记录表中仅记录被删除时间小于第一阈值的记录。若lun为误删,其有较大可能在较短时间内被发现并恢复,通过本实施例,可以将已删除时间较长、被恢复的可能性较小的lun对应的记录从已删除lun记录表中删除。
[0054]
作为另一个实施例,可在当已删除lun记录表中的记录总数达到第二阈值,且需要向已删除lun记录表中新增一条记录时,若任一lun的删除时间为已删除lun记录表中的最早时间,则判断该lun的删除时间满足预设条件。通过本实施例,可以限制已删除lun记录表中的记录总数不超过第二阈值。
[0055]
基于上述两个实施例,本领域技术人员能合理预知的其他实现方式也应视为属于本申请的保护范围。上述两个实施例也可结合使用,比如:以第一阈值为24小时,第二阈值为8为例,则已删除lun列表可被配置为保存最多24小时内,个数不超过8个的已删除lun记录。
[0056]
关于保持已删除lun记录表和已删除lun分配表中记录的已删除的lun一致,作为另一实施例,当删除lun时,具体的,比如接收到对任一lun的删除指令时,可将该lun的删除时间记录至已删除lun记录表中,并对于该lun需归还定长块的至少一个raid中的每一raid,向该raid的已删除lun分配表中记录该lun需向该raid归还的定长块。其中,lun需归还定长块的至少一个raid可依据该lun的映射表确定。
[0057]
通过上述实施例,对于已删除lun记录表中记录有删除时间的已删除lun,由于其
所有定长块均未被分配给其他lun,在后续接收到对lun的恢复指令时,可以快速将其恢复。
[0058]
作为一个实施例,当接收到对任一lun的恢复指令,且该lun在已删除lun记录表中记录有删除时间时,恢复该lun,并删除该lun在已删除lun记录表中对应的记录,以及删除该lun在需归还定长块的raid的已删除lun分配表中对应的记录。
[0059]
在一个例子中,上文描述的已删除lun记录表可由存储设备中的lun管理模块维护,已删除lun分配表可由对应的raid维护。其中,lun管理模块还可记录有存储设备中各lun的映射表。
[0060]
为便于理解本实施例,下面结合图2a-2c举例描述lun管理模块和raid的交互过程。参见图2a-2c,图2a-2c为本申请实施例提供的lun管理模块和raid的交互流程图,该流程如下:
[0061]
当删除lun时,流程可参见图2a所示:
[0062]
步骤s201,lun管理模块向raid下发删除lun命令,并检查当前已删除lun记录表中的记录总数是否达到第二阈值,若是,则执行步骤s202,若否,则执行步骤s203。
[0063]
作为一个实施例,对于新删除的lun,lun管理模块可依据记录的该lun的映射表,确定该lun需归还定长块的至少一个raid,并向这至少一个raid分别发送删除lun命令。其中,删除lun命令可包含新删除lun的uuid。
[0064]
步骤s202,删除已删除lun记录表中包含的删除时间最早的记录,并将新删除的lun的删除时间记录至已删除lun记录表中。
[0065]
本步骤s202中,从已删除lun记录表中删除的记录数量与新删除的lun的数量一致,比如若新删除两个lun,则可从已删除lun记录表中删除两个记录。
[0066]
作为一个实施例,若已删除lun记录表中的各记录按照删除时间由早到晚的顺序排列,则lun管理模块将删除时间最早的记录删除,具体可包括:将位于已删除lun记录表中最前端的记录删除。例如,若需要删除的记录数量为2个,则可将已删除lun记录表中的第一个记录和第二个记录删除。本实施例中,将新删除的lun的删除时间记录至已删除lun记录表中,包括:将新删除的lun的删除时间记录至已删除lun记录表的末尾。
[0067]
本步骤s202中,删除包含的删除时间最早的记录的流程可参考后文图2b所示。
[0068]
步骤s203,直接将新删除的lun的删除时间记录至已删除lun记录表中。
[0069]
步骤s204,raid在接收到删除lun命令时,将该命令指示删除的lun需归还的定长块记录至已删除lun分配表中。
[0070]
至此,完成图2a所示流程。
[0071]
当需要删除已删除lun记录表中的一条或多条记录时,流程可参见图2b所示:
[0072]
步骤s301,lun管理模块根据待删除记录对应的lun的映射表,确定该lun需归还定长块的至少一个raid,向该至少一个raid发送清除lun信息通知,并删除该待删除记录对应的lun的映射表以及待删除记录;该清除lun信息通知中包含前述lun的uuid。
[0073]
本步骤s301中,若待删除记录对应至少两个lun,则该通知中可包括这至少两个lun的uuid。
[0074]
步骤s302,raid在接收到清除lun信息通知时,根据该清除lun信息通知中包含的lun的uuid,将该lun在已删除lun分配表中对应的定长块标记为未分配,并从已删除lun记录表中删除该lun对应的记录。
[0075]
至此,完成图2b所示流程。
[0076]
当任一raid需要为lun分配m个定长块时,流程可参见图2c所示:
[0077]
步骤s401,raid依次选择当前被标记为未分配的定长块,若将当前被标记为未分配的定长块全部选择后,所选的定长块总数为n,且n小于m,则从已删除lun分配表中选择m-n个定长块,并将所选出的m个定长块分配给lun。
[0078]
步骤s402,若所选的m-n个定长块对应的至少一个已删除的lun中,存在任一lun对应的定长块未被全部选择,则raid将该lun未被选择的定长块标记为未分配,删除上述至少一个lun对应的记录,并向lun管理模块发送指示删除上述至少一个lun对应的记录的删除记录通知。
[0079]
步骤s403,lun管理模块接收到删除记录通知后,从已删除lun记录表中删除该删除记录通知所指示删除的至少一个lun对应的记录。
[0080]
本步骤s403中,lun管理模块如何删除至少一个lun对应的记录,可参考上文图2b所示流程。
[0081]
至此,完成对图2a-2c所示流程的描述。
[0082]
通过图2a-2c所示的lun管理模块和raid的交互过程,可以实现将已删除lun记录表和已删除lun分配表同步更新,保证在lun管理模块所维护的已删除lun记录表中存在对应记录的lun均可恢复。
[0083]
以上对本申请提供的方法进行了描述,下面对本申请提供的装置进行描述:
[0084]
参见图3,图3为本申请提供的存储空间分配装置结构图。如图3所示,该装置包括:划分单元501、分配表创建单元502和分配单元503。
[0085]
在一个例子中,上述划分单元501,用于将存储设备中磁盘阵列raid的存储空间按照指定长度划分为多个定长块;
[0086]
上述分配表创建单元502,用于为上述存储设备中的每一raid创建已删除lun分配表,上述已删除lun分配表用于记录已删除的lun需向上述raid归还的定长块,对于记录在该已删除lun分配表中的定长块,不将其标记为未分配;
[0087]
上述分配单元503,用于当需要分配任一raid中的m个定长块给lun时,若当前该raid中共存在n个被标记为未分配的定长块,且m大于n,则将该n个定长块分配给上述lun,并从该raid的已删除lun分配表所记录的定长块中选择m-n个定长块分配给上述lun,并删除上述m-n个定长块对应的记录。
[0088]
参见图4,图4为本申请实施例提供的另一存储空间分配装置结构图。如图4所示,本申请提供的存储空间分配装置还包括:
[0089]
记录表创建单元504,用于创建已删除lun记录表,上述已删除lun记录表用于记录已删除的lun的删除时间;
[0090]
表管理单元505,用于当上述已删除lun记录表中第一lun的删除时间满足预设条件时,将第一lun需归还的所有定长块标记为未分配,并删除上述第一lun在上述已删除lun记录表中对应的记录,以及删除上述第一lun在需归还定长块的raid的已删除lun分配表中对应的记录。
[0091]
作为一个实施例,上述表管理单元505具体用于:
[0092]
当依据上述第一lun的删除时间,确定上述第一lun已被删除的时间达到第一阈值
时,判断上述第一lun的删除时间满足预设条件;或者,
[0093]
当上述已删除lun记录表中的记录总数达到第二阈值,且需要向上述已删除lun记录表中新增一条记录时,若第一lun的删除时间为上述已删除lun记录表中的最早时间,则判断上述第一lun的删除时间满足预设条件。
[0094]
作为一个实施例,上述表管理单元505还用于:
[0095]
当在上述已删除lun记录表中记录有删除时间的第二lun需归还的定长块中,存在定长块被分配给其他lun时,将上述第二lun需归还的定长块中未被分配的定长块标记为未分配,并删除上述第二lun在上述已删除lun记录表中对应的记录,以及删除上述第二lun在需归还定长块的raid的已删除lun分配表中对应的记录。
[0096]
作为一个实施例,上述表管理单元505还用于:
[0097]
当接收到对任一lun的删除指令时,依据该lun的映射表确定该lun需归还定长块的至少一个raid,向上述至少一个raid中每一raid的已删除lun分配表中记录该lun需向该raid归还的定长块,并将该lun的删除时间记录至已删除lun记录表中。
[0098]
作为一个实施例,上述分配表创建单元502还用于:
[0099]
当接收到对第三lun的恢复指令时,若第三lun在raid的已删除记录表中存在对应的记录,则将该记录删除。
[0100]
至此,完成对本申请提供的装置的描述。上述装置中各模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0101]
参见图5,图5为应用本申请存储空间分配方法的存储设备的一种硬件结构图,该硬件结构包括:处理器和机器可读存储介质。
[0102]
其中,机器可读存储介质,用于存储机器可执行指令;
[0103]
处理器,用于读取并执行机器可读存储介质存储的机器可执行指令,以实现如图1所示的存储空间分配方法。
[0104]
作为一个实施例,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:易失机器可读存储介质、非易失性机器可读存储介质或者类似的存储介质。具体地,机器可读存储介质可以是ram(radom access memory,随机存取机器可读存储介质)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0105]
至此,完成图5所示设备的描述。
[0106]
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0107]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0108]
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员
来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1