一种数据存储的方法及存储设备与流程

文档序号:15517611发布日期:2018-09-25 18:44阅读:143来源:国知局

本申请涉及存储技术领域,尤其涉及一种数据存储的方法及存储设备。



背景技术:

为了提高数据安全性,现有技术中通常会应用独立磁盘冗余阵列(redundantarraysofindependentdisks,raid)冗余保护技术。raid冗余保护技术是指,将待存储数据切割成多个数据块,并对这些数据块进行冗余计算得到校验块,再将这些数据块和校验块分别存放在不同的硬盘上。这样,当硬盘阵列中任意一个硬盘发生故障导致该硬盘上的数据块损坏时,可从其他硬盘中读出其他数据块和校验块,通过执行数据重构过程修复损坏的数据块。

其中,为了检查数据是否损坏,美国国家标准学会(americannationalstandardsinstitute,ansi)制定的t10标准定义了一种数据完整性检查方法:数据写入硬盘时,采用如图1所示的数据结构,即在数据末尾增加8个字节的附加部分,该附加部分在硬盘中的区域为数据完整性域(dataintegrityfield,dif)。dif包含一个2字节的循环冗余校验(cyclicredundancycheck,crc)字段、一个2字节的逻辑块应用(logicalblockapplication,lba)标签和一个4字节的逻辑块参考(logicalblockreference,lbr)标签。其中,crc字段用于存储采用t10标准规定的crc算法对数据计算得出的完整性校验值。当从硬盘上读数据时,可以通过对读出的数据进行计算得出完整性校验值,并将该完整性校验值与dif中存储的crc字段的完整性校验值进行比较。如果相等,则说明数据是完整的,没有损坏。如果不相等,则说明数据或者dif区有数据损坏。

因此,如图2所示,对应用了基于raid冗余保护技术的存储设备中的数据采用t10标准定义的dif格式进行完整性验证时,在存入数据块和raid校验数据的同时也分别会存入数据和raid校验数据的完整性校验值。但是,当数据丢失时,基于raid技术,可以进行恢复,但数据对应的完整性校验值丢失却无法修复,从而无法实现对已存入数据的完整性检查。



技术实现要素:

本申请实施例提供一种数据存储的方法及存储设备,能够解决当数据丢失时,基于raid技术,可以进行恢复,但数据对应的完整性校验值却无法修复,从而无法实现对已存入数据的完整性检查。

为达到上述目的,本申请的实施例采用如下技术方案:

第一方面,提供一种数据存储的方法,应用于存储设备中,存储设备包含m个存储单元,每一个存储单元中存储有数据和该数据的完整性校验值,并且这m个存储单元中存储的数据之间存在校验关系,该方法具体包括:将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值,并将第一校验值存储到除上述n个存储单元外的一个或多个存储单元。再将除上述n个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值,并将第二校验值存储到n个存储单元中的一个或多个存储单元。

其中,m为大于等于2的整数,n为大于等于1小于m的整数。校验运算可以为raid校验算法,也可以为纠删码(erasurecode,ec)运算。第一校验值和第二校验值的个数可以为一个和多个。

基于本申请提供的方法,通过对一部分存储单元中存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至另一部分存储单元中;同理,对所述另一部分存储单元中的存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至所述一部分存储单元中。相比于现有技术,本申请增加了对存储单元存储的完整性校验值进行冗余保护的过程,因此,当有存储单元损坏导致该存储单元中的数据和完整性校验值均丢失时,可通过其他存储单元中完整性校验值对应的校验值对丢失的完整性校验值进行修复,进而修复后的完整性校验值可用于检查数据是否损坏,还可以用于检查重构修复后的数据是否正确。

在一种可能的设计中,存储设备的每个存储单元为raid校验关系时,m个存储单元包括p个数据单元和m-p个校验单元,其中,p个数据单元用于存储接收的数据;所述m-p个校验单元用于存储p个数据单元的校验数据。

在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,该第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息,该附加信息包括完整性校验值。相应的,可将第一校验值存储到第一存储单元的第二存储区,将第二校验值存储到第二存储单元的第二存储区。

其中,第二存储区可以为dif,则可将第一校验值存储到第一存储单元的dif的lbr标签的预设字节。同理,将第二校验值存储到第二存储单元的dif的lbr标签的预设字节。

在一种可能的设计中,完整性校验值可具体为crc,当该crc为采用ansit10标准制定的算法计算得到时,该crc位于dif中。

在一种可能的设计中,完整性校验值可以为对存储单元中存储的数据进行异或计算后得到,该完整性校验值可以位于dif中,并存储在dif的lbr标签的除预设字节外的其他字节。这样,由于相较于对crc进行校验运算,采用异或计算得到的完整性校验值更简单,对其进行校验运算的计算量更小,有利于提高存储设备的性能。

第二方面,提供一种存储设备,包括m个存储单元,这m个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且这m个存储单元中存储的数据之间存在校验关系。

该存储设备还包括:运算单元,用于将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;存储执行单元,用于将运算单元运算得到的第一校验值存储到第一存储单元。其中,第一存储单元为m个存储单元中除这n个存储单元外的一个或多个存储单元;运算单元,还用于将m个存储单元中除这n个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;存储执行单元,还用于将运算单元运算得到的第二校验值存储到第二存储单元。其中,第二存储单元为这n个存储单元中的一个或多个存储单元。其中,m为大于等于2的整数,n为大于等于1小于m的整数。

在一种可能的设计中,m个存储单元包括p个数据单元和m-p个校验单元,这p个数据单元用于存储该存储设备接收的数据;这m-p个校验单元用于存储p个数据单元的校验数据。

在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息。其中,附加信息包括所述完整性校验值。

在一种可能的设计中,存储执行单元具体用于将运算单元运算得到的第一校验值存储到第一存储单元的第二存储区,将所述运算单元运算得到的所述第二校验值存储到第二存储单元的第二存储区。

在一种可能的设计中,所述第二存储区为dif。存储执行单元具体用于将运算单元运算得到的第一校验值存储到第一存储单元的dif的lbr标签的预设字节,将运算单元运算得到的第二校验值存储到第二存储单元的dif的lbr标签的预设字节。

在一种可能的设计中,完整性校验值为crc。

在一种可能的设计中,完整性校验值为对数据进行异或计算后得到。完整性校验值位于dif的lbr的除预设字节外的其他字节。

第三方面,提供一种存储设备,包括处理器和m个存储单元,m个存储单元中的每一个存储单元用于存储数据以及数据的完整性校验值,且所述m个存储单元中存储的数据之间存在校验关系。

该处理器,用于将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将第一校验值存储到第一存储单元,其中,第一存储单元为m个存储单元中除这n个存储单元外的一个或多个存储单元;将m个存储单元中除这n个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元,其中,第二存储单元为这n个存储单元中的一个或多个存储单元;其中,m为大于等于2的整数,n为大于等于1小于m的整数。

在一种可能的设计中,所述m个存储单元包括p个数据单元和m-p个校验单元,所述p个数据单元用于存储该存储设备接收的数据;所述m-p个校验单元用于存储所述p个数据单元的校验数据。

在一种可能的设计中,每个存储单元包括第一存储区和第二存储区,所述第一存储区用于存储数据,所述第二存储区用于存储所述数据对应的附加信息,所述附加信息包括所述完整性校验值。该处理器还用于将第一校验值存储到第一存储单元的第二存储区;将第二校验值存储到第二存储单元的第二存储区。

在一种可能的设计中,所述第二存储区为dif,该处理器将第一校验值存储到第一存储单元的dif的lbr标签的预设字节;将第二校验值存储到第二存储单元的dif的lbr标签的预设字节。

在一种可能的设计中,所述完整性校验值为crc。

在一种可能的设计中,所述完整性校验值为对数据进行异或计算后得到。该处理器还用于将上述完整性校验值存储到所述dif的lbr标签的除所述预设字节外的其他字节。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述方面所述的方法。

另一种实现方式,存储设备将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元,将所述m个存储单元中除所述n个存储单元外的l个存储单元的每个存储单元中存储的完整性校验值进行校验运算得到第三校验值;将所述第三校验值存储到第三存储单元。其中,所述n个存储单元为m个存储单元中的任意n个存储单元,n的取值为大于等于1且小于m的整数。l的取值大于等于1并且小于m,并且n+l不大于m。其中,第一存储单元为所述m个存储单元中除所述n个存储单元外的一个或多个存储单元,所述第三存储单元为所述m个存储单元中除所述l个存储单元外的一个或多个存储单元。

另一种实现方式,存储设备除m个存储单元外,还包括r个存储单元,存储设备将所述m个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第四校验值,将所述第四校验值存储到第四存储单元。r为大于等于1的整数。其中,所述第四存储单元为所述r个存储单元中的一个或多个。具体实现可参见前面实施例描述。

上述存储设备可以为存储阵列,硬盘等。

附图说明

图1为现有技术提供的一种ansit10标准定义的数据结构示意图;

图2为现有技术提供的一种采用raid技术存储的数据结构示意图;

图3为本申请实施例提供的一种存储阵列的结构示意图;

图4为本申请实施例提供的一种数据存储的方法的流程示意图;

图5为本申请实施例提供的另一种数据存储的方法的流程示意图;

图6为本申请实施例提供的一种存储设备的结构示意图;

图7为本申请实施例提供的另一种存储设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述。

本申请实施例提供一种存储数据的方法,可应用于存储设备。如图3所示,该存储设备包括m个存储单元。该m个存储单元中的每一个存储单元存储有数据及该数据的完整性校验值,并且,这m个存储单元中存储的数据之间存在校验关系。

其中,本申请所指的存储设备,例如可以为多个盘组成的存储阵列,则每一个盘为该存储阵列中的一个存储单元,存储单元可以为硬盘,如机械硬盘、固态硬盘等。存储阵列会将待写入的数据切分成多个更小粒度的数据,并对这些更小粒度的数据进行冗余校验计算,得到校验数据;再将这些更小粒度的数据(以下称为“数据”)和校验数据分别存储在不同的存储设备中。具体的,当采用raid6的方式对数据进行冗余检验计算时,可以将这些数据存储到存储设备1至存储设备m-2中,将校验数据存储到存储设备m-1和存储设备m中。当采用raid5的方式对数据进行冗余检验计算时,可以将这些数据存储到存储设备1至存储设备m-1中,将校验数据存储到存储设备m中。在该存储阵列中采用的冗余校验算法可以为raid运算或纠删码(erasurecode,ec)运算。riad运算包括raid5、raid6等算法。raid运算和ec运算的具体实现可参考现有技术,本申请不再赘述。

在该存储阵列中存储的完整性校验值可以为ansi制定的t10标准中采用crc算法得到的校验值,具体实现可参考现有技术,本申请不再赘述。

在存储单元中存储数据的完整性校验值,是为了对存储的数据进行完整性检查,具体的,当从存储单元中读出该数据时,可先计算读出的数据完整性校验值,并与存储单元中存储的完整性校验值进行比较。当二者相同时,则读出的数据没有损坏。当二者不同时,则说明读出的数据或者存储的完整性校验值已损坏。

由于在现有技术中,对存储的数据进行了冗余校验保护,却没有对完整性校验值进行冗余校验保护,因此,当完整性校验值丢失,无法对完整性校验值进行重构修复,从而无法对重构修复的数据进行完整性校验,进而可能会造成重构修复的数据错误地重写入存储单元中。

为了对完整性校验值进行冗余保护,本申请实施例提供的一种数据存储方法,可应用于存储设备中,存储设备包含m个存储单元。例如,存储设备可以为如图3所示的存储阵列。如图4所示,该方法具体包括:

101、将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元。

其中,所述n个存储单元为m个存储单元中的任意n个存储单元,n的取值为大于等于1且小于m的整数。

所述校验运算可采用raid运算或ec运算。采用不同的校验算法得到的第一校验值的个数不同,因此,用于存储第一校验值的第一存储单元可能为所述m个存储单元中除所述n个存储单元外的一个或多个存储单元。

示例性的,当校验运算为raid5运算时,所述第一存储单元为除所述n个存储单元外的1个存储单元。当校验运算为raid6运算时,所述第一存储单元为除所述n个存储单元外的2个存储单元。当校验运算为ec运算时,所述第一存储单元为除所述n个存储单元外的多个存储单元。

图4中分别以101a和101b示出了步骤101中的各个过程。

102、将所述m个存储单元中除所述n个存储单元外每个存储单元中存储的完整性校验值进行校验运算得到第二校验值;将所述第二校验值存储到第二存储单元。

其中,本步骤中所指的校验运算可以为raid运算或ec运算。具体实现时,该校验运算可以和步骤101中的校验运算相同,也可以和步骤101中的校验运算不同。采用不同的校验算法得到的第二校验值的个数不同,因此,用于存储第二校验值的第二存储单元可能为所述n个存储单元中的一个或多个存储单元。

图4中分别以102a和102b示出了步骤102中的各个过程。

需要说明的是,在执行本申请实施例所述的数据存储方法时,可以先执行步骤101再执行步骤102,也可以先执行步骤102,再执行步骤101,还可以同时执行步骤101和步骤102。本申请实施例不限定步骤101和步骤102的执行顺序。

本申请实施例提供的数据存储方法,通过对一部分存储单元中存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至其余存储单元中;同理,对所述其余存储单元中的存储的完整性校验值进行校验运算,得到对应的校验值,并将得到的校验值存储至所述一部分存储单元中。相比于现有技术,本申请增加了对存储单元存储的完整性校验值进行冗余保护的过程,因此,当有存储单元损坏导致该存储单元中的数据和完整性校验值均丢失时,可通过其他存储单元中的校验值对丢失的完整性校验值进行修复,进而修复后的完整性校验值可用于检查数据是否损坏,并在检查到数据损坏时进行数据重构以恢复数据。

可选的,在重构或修复损坏的数据后,该完整性校验值还能够验证修复后的数据是否有误,在验证修复后的数据无误的情况下,保证将正确的数据重写入存储单元中。

在本申请实施例的一种应用场景中,m个存储单元中的数据采用的校验关系可以为raid校验关系。则相应的,m个存储单元中包含p个数据单元和m-p个校验单元。其中,m-p个校验单元用于存储p个数据单元的校验数据。p的取值为大于1小于等于m的整数。

结合该应用场景,在一种可能的实现方式中,在对完整性校验值进行raid校验运算时,可以采用与对数据进行校验计算时相同的校验算法。则本申请提供的数据存储的方法具体可为:将m个存储单元中的p个存储单元中的完整性校验值进行raid校验计算,得到第一校验值,并将得到的第一校验值存入其余m-p个存储单元中;同理,将其余m-p个存储单元中的完整性校验值进行raid校验计算,得到第二校验值,并将得到的第二校验值存入p个存储单元中。

示例性的,存储阵列中包含5个存储单元,其中包含3个数据单元和2个校验单元,该3个数据单元和2个校验单元之间为raid6的校验方式。则当第一校验值和第二校验值的计算方法相同时,本申请提供的数据存储方法具体为:首先,从5个存储单元中任选3个存储单元,将这3个存储单元中存储的完整性校验值进行raid6校验计算后,得到2个第一校验值,将这2个第一校验值存储至剩余2个存储单元,其中,每个存储单元存储一个第一校验值。同理,将所述剩余2个存储单元中存储的完整性校验值进行raid6校验运算,运算得到2个第二校验值。将这2个第二校验值分别存储到所述3个存储单元中的任意2个存储单元中。

可选的,第一校验值和第二校验值的计算方法可以不同,则本申请提供的数据存储方法具体还可以为:首先,从5个存储单元中任选3个存储单元,将这3个存储单元中存储的完整性校验值进行raid6校验计算后,得到2个第一校验值,将这2个第一校验值存储至剩余2个存储单元,其中,每个存储单元存储一个第一校验值。同理,将所述剩余2个存储单元中存储的完整性校验值进行raid5校验运算,运算得到1个第二校验值。将这1个第二校验值存储到所述3个存储单元中的任意1个存储单元中。

可选的,在存储阵列中包含5个存储单元,其中包含4个数据单元和1个校验单元,该4个数据单元和1个校验单元之间为raid5的校验方式的场景下,本申请实施例提供的数据存储方法具体还可以为:首先,从5个存储单元中任选4个存储单元,将这4个存储单元中存储的完整性校验值进行raid5校验计算后,得到1个第一校验值并存储到剩余1个存储单元中;同时,再从这5个存储单元中选取4个存储单元(包含上述剩余的1个存储单元)中存储的完整性校验值进行raid5校验计算,得到1个第二校验值,并将该1个第二校验值存储到上述4个存储单元中。

可以理解的是,也可以仅对上述剩余的1个存储单元中存储的完整性校验值采用其他冗余校验算法进行计算得到第二校验值,并将得到的第二校验值存储到上述4个存储单元中。

可选的,本申请实施例中的每个存储单元包括第一存储区和第二存储区,且第一存储区用于存储数据,第二存储区用于存储数据对应的附加信息,该附加信息包括所述完整性校验值。例如:该第二存储区为dif,则在本申请实施例的一种实现方式中,存储单元中的完整性校验值可以采用ansi制定的t10标准定义的crc校验值。相应的,第一校验值存储在第一存储单元;同理,第二校验值可存储在第二存储单元的dif区内。具体的,可存储在dif区内的lbr标签内的任两个字节。

为了减少运算量,本申请实施例中所指的完整性校验值还可以采用自定义算法计算得到,则在步骤101之前,本申请实施例提供的方法,如图5所示,具体包括:

201、对存储阵列中每一个存储单元内的数据采用自定义算法计算完整性校验值,并存储在dif区。

具体的,自定义的算法通常选择较为简单的算法,例如:异或(exclusiveor,xor)算法,该自定义的完整性校验值可存储在dif区内。可选的,具体可存储在lbr标签内除用于存储第一校验值和第二校验值的2个字节的另外2个字节内。

图5中分别以201a和201b示出了步骤201中的各个过程。

在本步骤之后,执行步骤101和102中对完整性校验值进行校验运算时,可以直接对自定义的完整性校验值进行校验运算,得到第一校验值和第二校验值,并分别存储在第一存储单元和第二存储单元中。这样,当有存储单元中有数据或者自定义的完整性校验值损坏时,可通过第一校验值或第二校验值对丢失的自定义的完整性校验值进行重构修复,采用修复后的自定义的完整性校验值对重构后的数据进行完整性检查,确保重构后的数据正确的重写入存储阵列中。

由于自定义的完整性校验值的算法简单,从而能够减少存储阵列的校验运算量,也降低了对自定义的完整性校验值进行重构修复的运算量,进而减轻存储阵列的数据处理量,有利于提高存储阵列的性能。

另一种实现方式,将n个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第一校验值;将所述第一校验值存储到第一存储单元,将所述m个存储单元中除所述n个存储单元外的l个存储单元的每个存储单元中存储的完整性校验值进行校验运算得到第三校验值;将所述第三校验值存储到第三存储单元。其中,所述n个存储单元为m个存储单元中的任意n个存储单元,n的取值为大于等于1且小于m的整数。l的取值大于等于1并且小于m,并且n+l不大于m。其中,第一存储单元为所述m个存储单元中除所述n个存储单元外的一个或多个存储单元,所述第三存储单元为所述m个存储单元中除所述l个存储单元外的一个或多个存储单元。具体实现可参见前面实施例描述。

另一种实现方式,存储设备除m个存储单元外,还包括r个存储单元,存储设备将所述m个存储单元中的每个存储单元中存储的完整性校验值进行校验运算得到第四校验值,将所述第四校验值存储到第四存储单元。r的为大于等于1的整数。其中,所述第四存储单元为所述r个存储单元中的一个或多个。具体实现可参见前面实施例描述。

在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的存储设备一种可能的结构示意图,存储设备60包括m个存储单元601,m个存储单元601中的每一个存储单元用于存储数据以及数据的完整性校验值。存储设备60还包括运算单元602和存储执行单元603。其中,运算单元602用于支持存储设备执行图4中的过程101a和102a,图5中的过程201a。存储执行单元603用于支持存储设备执行图4中的过程101b和102b,图5中的过程201b。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应上述单元的实现,在此不再赘述。具体实现中,上述单元可以为软件实现,也可以为硬件实现,还可以为两者的结合,本发明实施例对此不作限定。存储设备60各单元用于支持存储设备实施本发明各实施例中的步骤是指存储设备60各单元用于或被配置于执行本发明各实施例中的步骤。

图7示出了存储设备的另一种可能的结构示意图。存储设备70包括处理器701和存储单元702,其中,处理器701可以是中央处理器(centralprocessingunit,cpu)与存储器的组合,还可以是通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者上述任意合适的组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。当存储设备70为存储阵列时,存储单元702可以为硬盘。当存储设备70为硬盘时,存储单元702可以为组件硬盘的存储组件。存储设备70还可以为其他存储形态的设备,本发明实施例对此不作限定。处理器701用于执行上述实施例所描述的方法或步骤,以实现数据存储。

结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。

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