CN107749307A - 存储系统写盘失败时的重写方法、装置、设备和存储介质 - Google Patents

存储系统写盘失败时的重写方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN107749307A
CN107749307A CN201710930438.3A CN201710930438A CN107749307A CN 107749307 A CN107749307 A CN 107749307A CN 201710930438 A CN201710930438 A CN 201710930438A CN 107749307 A CN107749307 A CN 107749307A
Authority
CN
China
Prior art keywords
disk
space
disk failure
write
failure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710930438.3A
Other languages
English (en)
Other versions
CN107749307B (zh
Inventor
甄天桥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201710930438.3A priority Critical patent/CN107749307B/zh
Publication of CN107749307A publication Critical patent/CN107749307A/zh
Application granted granted Critical
Publication of CN107749307B publication Critical patent/CN107749307B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/012Recording on, or reproducing or erasing from, magnetic disks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B5/00Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
    • G11B5/02Recording, reproducing, or erasing methods; Read, write or erase circuits therefor
    • G11B5/09Digital recording

Abstract

本申请公开了存储系统写盘失败时的重写方法、装置、设备和存储介质,该方法包括:当写盘失败时,对写盘失败的IO进行记录;当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。上述存储系统写盘失败时的重写方法、装置、设备和存储介质,能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。

Description

存储系统写盘失败时的重写方法、装置、设备和存储介质
技术领域
本发明属于存储系统技术领域,特别是涉及存储系统写盘失败时的重写方法、装置、设备和存储介质。
背景技术
CEPH后端支持多种存储引擎,以插件式的方式来进行管理使用,包括Filestore、kv Store、Memstore和bluestore等等,目前最新的存储引擎为bluestore。bluestore减少了之前的存储引擎存在的写放大问题,并针对SSD盘做优化,而且直接管理裸盘,从理论上进一步减少文件系统部分的开销,将成为CEPH未来默认的存储引擎。
Bluestore在写操作时,根据IO在对象中的起始位置偏移和长度是否按最小分配单位对齐,将该IO划分到若干个blob中,具体的,每一个IO都是用一个二元组(偏移,长度)来表示的,其中偏移是相对于IO所操作对象的偏移,整块磁盘按某个固定的大小(最小分配单位)划分为多个分配单位,每次分配空间时都要按这个分配单位的整数倍来分配,为IO分配空间时根据IO的(偏移,长度)是否按最小分配单位对齐(也就是偏移和长度的值是否能整除最小分配单位的值)将对齐部分和不对齐部分分别划分到不同的逻辑空间中,(对齐部分即为在这个“偏移”位置开始的“长度”范围内,有多少空间是占满最小分配单位的,不对齐部分即为IO的“偏移”开始或结束部分占不满一个最小分配单位的空间。
对划分到每一个blob中的数据,根据数据长度分配磁盘空间,并将数据在对象中的偏移转换为磁盘空间的绝对偏移,通过linux aio写入盘中。如果写盘失败,则负责写盘的OSD进程会自动退出,这样一旦磁盘中存在一定范围的坏块,分配空间时又正好分配了坏块空间,写数据时就会失败,进程就会自动退出,而坏块无标记,下次分配时可能还会分配到,进程反复退出会导致系统稳定性变差。
发明内容
为解决上述问题,本发明提供了存储系统写盘失败时的重写方法、装置、设备和存储介质,能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。
本发明提供的存储系统写盘失败时的重写方法,包括:
当写盘失败时,对写盘失败的IO进行记录;
当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;
根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;
将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。
优选的,在上述存储系统写盘失败时的重写方法中,所述查找所述写盘失败的IO所归属的逻辑空间为:
根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
优选的,在上述存储系统写盘失败时的重写方法中,所述将所述写盘失败的IO的数据写入所述新的磁盘空间中为:
通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
本发明提供的存储系统写盘失败时的重写装置,包括:
记录单元,用于当写盘失败时,对写盘失败的IO进行记录;
查找单元,用于当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;
重写单元,用于根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;
标记单元,用于将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。
优选的,在上述存储系统写盘失败时的重写装置中,所述查找单元具体用于根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
优选的,在上述存储系统写盘失败时的重写装置中,所述重写单元具体用于通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
本发明提供的存储系统写盘失败时的重写设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上面任一项所述存储系统写盘失败时的重写方法的步骤。
本发明提供的存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上面任一项所述存储系统写盘失败时的重写方法的步骤。
通过上述描述可知,本发明提供的上述存储系统写盘失败时的重写方法、装置、设备和存储介质,该方法包括当写盘失败时,对写盘失败的IO进行记录;当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用,因此能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的第一种存储系统写盘失败时的重写方法的示意图;
图2为本申请实施例提供的第一种存储系统写盘失败时的重写装置的示意图;
图3为本申请实施例提供的存储系统写盘失败时的重写设备的示意图。
具体实施方式
本发明的核心思想在于提供存储系统写盘失败时的重写方法、装置、设备和存储介质,能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的第一种存储系统写盘失败时的重写方法如图1所示,图1为本申请实施例提供的第一种存储系统写盘失败时的重写方法的示意图,该方法包括如下步骤:
S1:当写盘失败时,对写盘失败的IO进行记录;
需要说明的是,可以但不限于利用linux aio(异步输入/输出)方式进行写盘,这里只是对写盘失败的IO记录,暂时不做其他处理。
S2:当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;
需要说明的是,一次事务提交中会包含多个IO,必须等该事务中所有的IO都完成后才能对该事务跳转到下一个处理状态,处理流程是针对事务的,所以必须得等到事务中的IO完成后,才能遍历写盘失败的IO。一次事务提交中可能有多个IO,每一个IO都对应着一个具体的对象,在写数据分配空间的过程中,会先为对象分配逻辑存储空间,再为逻辑存储空间分配物理空间,每一块物理空间都是用“偏移+长度”的二元组来表示的。当物理空间写失败时,则需要遍历当前事务中的每一个对象的每一个逻辑空间所包含的物理空间,通过匹配物理空间二元组的偏移值,以确定写失败的物理空间属于哪个对象的哪个逻辑空间。
S3:根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;
需要说明的是,先找到与逻辑空间大小匹配的新的磁盘空间,然后将其与该逻辑空间的对应关系进行更新,写入数据,当新的磁盘空间依然无法写入时,则循环该步骤继续寻找磁盘空间,直到写入成功为止。
S4:将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。
需要说明的是,磁盘空间分配器记录的分配单元的状态为未使用/已使用两种状态,对于故障单元来说,会将故障状态持久化保存到磁盘的元数据中,但分配器中的状态需要设置为已使用,以保证后续分配时不会被分配。需要指出的是,分配器是通过比特位来标记是否使用的,只能标记未使用和已使用两种状态,故对于故障单元在分配器中直接标记为已使用,能保证其在后续过程中不再被分配。
可见这种方案能够在磁盘存在坏块时依然保证数据写入成功,同时坏块只会被访问一次,后续分配空间不再分配坏块,进程也不会再因为写失败而退出,大大提升了坏块时系统的稳定性。
本申请实施例提供的第一种存储系统写盘失败时的重写方法,由于包括当写盘失败时,对写盘失败的IO进行记录;当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用,因此能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。
本申请实施例提供的第二种存储系统写盘失败时的重写方法,是在上述第一种存储系统写盘失败时的重写方法的基础上,还包括如下技术特征:
所述查找所述写盘失败的IO所归属的逻辑空间为:
根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
需要说明的是,其中所述的blob是bluestore存储中对象的逻辑存储空间,一个对象可以有多个blob。
本申请实施例提供的第三种存储系统写盘失败时的重写方法,是在上述第二种存储系统写盘失败时的重写方法的基础上,还包括如下技术特征:
所述将所述写盘失败的IO的数据写入所述新的磁盘空间中为:
通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
利用这种方式来提交是一种常见的方式。
本申请实施例提供的第一种存储系统写盘失败时的重写装置如图2所示,图2为本申请实施例提供的第一种存储系统写盘失败时的重写装置的示意图,该装置包括:
记录单元201,用于当写盘失败时,对写盘失败的IO进行记录,需要说明的是,可以但不限于利用linux aio(异步输入/输出)方式进行写盘,这里只是对写盘失败的IO记录,暂时不做其他处理;
查找单元202,用于当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间,需要说明的是,一次事务提交中会包含多个IO,必须等该事务中所有的IO都完成后才能对该事务跳转到下一个处理状态,处理流程是针对事务的,所以必须得等到事务中的IO完成后,才能遍历写盘失败的IO,一次事务提交中可能有多个IO,每一个IO都对应着一个具体的对象,在写数据分配空间的过程中,会先为对象分配逻辑存储空间,再为逻辑存储空间分配物理空间,每一块物理空间都是用“偏移+长度”的二元组来表示的,当物理空间写失败时,则需要遍历当前事务中的每一个对象的每一个逻辑空间所包含的物理空间,通过匹配物理空间二元组的偏移值,以确定写失败的物理空间属于哪个对象的哪个逻辑空间;
重写单元203,用于根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中,需要说明的是,先找到与逻辑空间大小匹配的新的磁盘空间,然后将其与该逻辑空间的对应关系进行更新,写入数据,当新的磁盘空间依然无法写入时,则循环该步骤继续寻找磁盘空间,直到写入成功为止;
标记单元204,用于将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用,需要说明的是,磁盘空间分配器记录的分配单元的状态为未使用/已使用两种状态,对于故障单元来说,会将故障状态持久化保存到磁盘的元数据中,但分配器中的状态需要设置为已使用,以保证后续分配时不会被分配,需要指出的是,分配器是通过比特位来标记是否使用的,只能标记未使用和已使用两种状态,故对于故障单元在分配器中直接标记为已使用,能保证其在后续过程中不再被分配。
可见这种方案能够在磁盘存在坏块时依然保证数据写入成功,同时坏块只会被访问一次,后续分配空间不再分配坏块,进程也不会再因为写失败而退出,大大提升了坏块时系统的稳定性。
本申请实施例提供的第二种存储系统写盘失败时的重写装置,是在上述第一种存储系统写盘失败时的重写装置的基础上,还包括如下技术特征:
所述查找单元具体用于根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
需要说明的是,其中所述的blob是bluestore存储中对象的逻辑存储空间,一个对象可以有多个blob。
本申请实施例提供的第三种存储系统写盘失败时的重写装置,是在上述第二种存储系统写盘失败时的重写装置的基础上,还包括如下技术特征:
所述重写单元具体用于通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
利用这种方式来提交是一种常见的方式。
本申请实施例提供的存储系统写盘失败时的重写设备如图3所示,图3为本申请实施例提供的存储系统写盘失败时的重写设备的示意图,该设备包括:
存储器301,用于存储计算机程序;
处理器302,用于执行所述计算机程序时实现如上面任一种所述存储系统写盘失败时的重写方法的步骤。
本申请实施例提供的存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上面任一种所述存储系统写盘失败时的重写方法的步骤。
上述设备和存储介质由于能够执行所述计算机程序时实现如上面任一种所述存储系统写盘失败时的重写方法的步骤,因此能够避免单次写入失败导致进程退出问题,提升存储系统的稳定性。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.存储系统写盘失败时的重写方法,其特征在于,包括:
当写盘失败时,对写盘失败的IO进行记录;
当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;
根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述新的磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;
将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。
2.根据权利要求1所述的存储系统写盘失败时的重写方法,其特征在于,所述查找所述写盘失败的IO所归属的逻辑空间为:
根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
3.根据权利要求2所述的存储系统写盘失败时的重写方法,其特征在于,所述将所述写盘失败的IO的数据写入所述新的磁盘空间中为:
通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
4.存储系统写盘失败时的重写装置,其特征在于,包括:
记录单元,用于当写盘失败时,对写盘失败的IO进行记录;
查找单元,用于当前事务的IO完成后,遍历写盘失败的IO,查找所述写盘失败的IO所归属的逻辑空间;
重写单元,用于根据所述逻辑空间的大小重新分配新的磁盘空间,并将所述磁盘空间更新到对应的所述逻辑空间中,将所述写盘失败的IO的数据写入所述新的磁盘空间中;
标记单元,用于将所述写盘失败的IO所属的逻辑空间对应的原来的磁盘空间标记为已使用。
5.根据权利要求4所述的存储系统写盘失败时的重写装置,其特征在于,所述查找单元具体用于根据所述写盘失败的IO在磁盘空间上的偏移在本次事务中所有写对象的所有blob中查找所述写盘失败的IO所归属的对象和blob。
6.根据权利要求5所述的存储系统写盘失败时的重写装置,其特征在于,所述重写单元具体用于通过linux aio提交写操作,将所述写盘失败的IO的数据写入所述新的磁盘空间中。
7.存储系统写盘失败时的重写设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至3任一项所述存储系统写盘失败时的重写方法的步骤。
8.存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3任一项所述存储系统写盘失败时的重写方法的步骤。
CN201710930438.3A 2017-10-09 2017-10-09 存储系统写盘失败时的重写方法、装置、设备和存储介质 Active CN107749307B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710930438.3A CN107749307B (zh) 2017-10-09 2017-10-09 存储系统写盘失败时的重写方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710930438.3A CN107749307B (zh) 2017-10-09 2017-10-09 存储系统写盘失败时的重写方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN107749307A true CN107749307A (zh) 2018-03-02
CN107749307B CN107749307B (zh) 2020-05-26

Family

ID=61254778

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710930438.3A Active CN107749307B (zh) 2017-10-09 2017-10-09 存储系统写盘失败时的重写方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN107749307B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103700387A (zh) * 2013-09-18 2014-04-02 福建鼎恩协创电子科技有限公司 硬盘坏道监测修复装置及方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103700387A (zh) * 2013-09-18 2014-04-02 福建鼎恩协创电子科技有限公司 硬盘坏道监测修复装置及方法

Also Published As

Publication number Publication date
CN107749307B (zh) 2020-05-26

Similar Documents

Publication Publication Date Title
US8832159B2 (en) Systems and methods for asynchronous schema changes
US10977124B2 (en) Distributed storage system, data storage method, and software program
US6539453B1 (en) Storage system including means for management of a memory with anti-attrition, and process of anti-attrition management of a memory
US20040015468A1 (en) Capturing data changes utilizing data-space tracking
US8782360B2 (en) Preserving an existing volume map in re-initializing a data storage volume
US11321302B2 (en) Computer system and database management method
US20130013648A1 (en) Method for database storage of a table with plural schemas
CN103106286A (zh) 元数据的管理方法和装置
CN106682215A (zh) 一种数据处理方法和管理节点
US20160014200A1 (en) Identifying workload and sizing of buffers for the purpose of volume replication
CN1904855B (zh) 自动使卷容器中的存储区域网络的组件相关的系统和方法
CN102306128B (zh) 磁盘管理方法、装置及网络设备
CN108694230A (zh) 数据库中的唯一标识符的管理
US7290099B2 (en) Using parallelism for clear status track processing during error handling behavior in a storage system
CN103377090A (zh) 多处理器系统中共享不同数据集的多个编目的方法和系统
US10282116B2 (en) Method and system for hardware accelerated cache flush
US9015124B2 (en) Replication system and method of rebuilding replication configuration
CN107749307A (zh) 存储系统写盘失败时的重写方法、装置、设备和存储介质
US10747731B2 (en) Transferring data using unique identifiers of a table of a relational database
US7146373B2 (en) Data-space tracking with index data-spaces and data data-spaces
US20170322963A1 (en) Apparatus and Method for Creating User Defined Variable Size Tags on Records in RDBMS
CN106874121A (zh) 一种虚拟机内存回收方法及装置
JPS63133240A (ja) 常駐テ−ブルの内容保証方式
CN108763498A (zh) 用户身份识别方法、装置、电子设备及可读存储介质
EP2144175A1 (en) Method for performing a bulk load into a database

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200427

Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 450018 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant