CN110928493A - 一种元数据模块及元数据模块处理方法 - Google Patents
一种元数据模块及元数据模块处理方法 Download PDFInfo
- Publication number
- CN110928493A CN110928493A CN201911049648.7A CN201911049648A CN110928493A CN 110928493 A CN110928493 A CN 110928493A CN 201911049648 A CN201911049648 A CN 201911049648A CN 110928493 A CN110928493 A CN 110928493A
- Authority
- CN
- China
- Prior art keywords
- module
- metadata
- request
- transaction
- offline
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种元数据模块,包括:元数据对象模块:用于管理元数据对象,包括LUN信息、B+树的rootNode;实现ROOT区数据结构的初始化、更新和恢复;事务模块:用于保证请求的原子性;写缓存模块:用于将I/O业务的请求在内存中缓存;B+树模块:用于实现元数据模块的B+树操作算法;读缓存模块:用于提高元数据模块的读性能;查询模块:用于进行查询操作。还公开了一种用于处理存储***下层离线情况的元数据模块处理方法,保证了下层离线时元数据请求的原子性,确保数据的完整性和一致性,有利于提高元数据模块开发的可靠性。
Description
技术领域
本发明涉及存储***领域,具体涉及一种元数据模块及元数据模块处理方法。
背景技术
在全闪存储***的集群结构下,元数据是最重要的部分,元数据模块通过读缓存和写缓存进行性能提高,流程十分复杂。针对一般I/O业务,需要管理逻辑地址到物理地址的映射关系;针对垃圾回收功能,需要管理物理地址到逻辑地址的映射关系;针对支持的崇山功能,需要管理I/O的指纹值到物理地址的映射关系。由此可见,针对一个I/O业务,需要进行多次映射关系的管理等操作,因此,在事务进行时要保证其原子性。
当存储***遇到硬盘故障、拔盘、存储池满等下层离线的情况时,需要进行硬盘更换或扩容,对于元数据模块来说需要进行较为复杂的操作,如果操作不当,将影响数据的可靠性和一致性。
发明内容
为了解决上述技术问题,本发明提出了一种元数据模块及元数据模块处理方法,在下层离线的情况下,保证了数据的可靠性与一致性。
为实现上述目的,本发明采用以下技术方案:
一种元数据模块,包括:
元数据对象模块:用于管理元数据对象,包括LUN信息、B+树的rootNode;实现ROOT区数据结构的初始化、更新和恢复;
事务模块:用于保证请求的原子性;
写缓存模块:用于将I/O业务的请求在内存中缓存;
B+树模块:用于实现元数据模块的B+树操作算法;
读缓存模块:用于提高元数据模块的读性能;
查询模块:用于进行查询操作。
进一步地,所述保证请求的原子性,包括:
若一个请求内的若干子请求全部完成,则请求完成;
若任意一个子请求未完成,则请求回滚,已完成的子请求取消。
进一步地,所述写缓存模块包括WRITE_BACK模式和WRITE_THROUGH模式,其中:
WRITE_BACK模式:写缓存模块被划分一定的内存空间,用于将事务模块发送的请求进行缓存,在达到设定条件时请求进行下刷;
WRITE_THROUGH模式:直接将事务模块发送的请求进行下刷。
本发明还提供了一种元数据模块处理方法,用于处理存储***下层离线的情况,基于上述的元数据模块,具体步骤包括:
离线处理:停止后台任务,取消元数据请求,建立事务重做链表;
重新上线处理:写缓存下刷任务开启,根据事务重做链表重做请求,重启后台任务。
进一步地,所述后台任务包括卷删除和写缓存定时下刷。
进一步地,所述取消元数据请求,包括:
若元数据模块内存空间请求尚未处理,则主动取消元数据请求,向上层返回FAILED_OFFLINE;
若元数据模块已申请到内存空间,则通过模块入口判断当前是否为下层离线状态,若为非离线状态,则正常处理;若为离线状态,则取消请求,向上层返回FAILED_OFFLINE。
进一步地,所述元数据请求通过事务模块、写缓存模块、查询模块处理,其中,事务模块取消的请求写入事务重做链表。
进一步地,所述根据事务重做链表重做请求,重启后台任务,包括:
事务重做结束后,通知上层处理结束,重启元数据后台任务。
本发明的有益效果是:
本发明通过提供一种元数据模块及元数据模块处理方法,解决了全闪存储***中下层离线时元数据模块操作复杂的问题,通过事务模块保证元数据请求的原子性,从而确保数据的完整性和一致性,有利于提高元数据模块开发的可靠性,为全闪存储的元数据模块的高可用性开发起到一定的作用,能够有效减少实现的开发周期。
附图说明
图1是本发明实施例元数据模块结构示意图;
图2是本发明元数据模块处理方法的离线处理流程示意图;
图3是本发明元数据模块处理方法的重新上线处理流程示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
本发明实施例提供了一种元数据模块,如图1所示,其内部划分为以下几个子模块:
元数据对象模块:用于管理元数据对象,包括LUN信息、B+树的rootNode;实现ROOT区数据结构的初始化、更新和恢复。
事务模块:用于保证请求的原子性。由于一个请求可以被分为多个子请求,因此需要事务机制进行原子性保证:若所有子请求完成则全部完成,若其中一个子请求未完成则表示失败,请求需要进行回滚重做,已完成的子请求也需要进行取消操作。
写缓存模块:用于将I/O业务的请求在内存中缓存。写缓存模块负责将I/O业务的处理在内存中进行缓存,根据业务需要,分为WRITE_BACK模式和WRITE_THROUGH模式。在WRITE_BACK模式中,写缓存被划分一定的内存空间,用于将事务模块发送的请求进行缓存,并在达到设定条件的情况下才进行下刷。而在WRITE_THROUGH模式下,则直接将事务模块发送的请求进行下刷。
B+树模块:用于实现元数据模块的B+树操作算法。B+树模块是整个元数据模块的交互核心。
读缓存模块:用于提高元数据模块的读性能。
查询模块:用于进行查询操作。
本发明实施例还提供了一种元数据模块处理方法,用于处理存储***下层离线的情况,所述下层离线情况包括硬盘故障、拔盘、存储池满等情况。具体步骤包括:
离线处理:停止后台任务,取消元数据请求,建立事务重做链表;
重新上线处理:写缓存下刷任务开启,根据事务重做链表重做请求,重启后台任务。
所述后台任务包括卷删除和写缓存定时下刷等。
对于下层RAID离线的情况,此时基于该RAID建立的存储池将不可进行读写操作,此时若进行I/O操作,需要元数据模块进行相应的离线处理,其基本原则是:等待元数据请求主动进行取消,若无法取消,则通过在I/O路径上的各个位置进行被动判断而取消,然后向上层返回FAILED_OFFLINE。
如图2所示,本发明一种实施例的离线处理流程具体包括:
11)停止后台任务。对于如卷删除、写缓存定时下刷等后台任务,该任务在处理过程中涉及到大量的元数据内部I/O操作,即会造成大量的读写请求,由于RAID离线时无法进行处理,因此第一步需要将这些后台任务停止。
12)主动取消元数据请求。若元数据模块内事务模块、写缓存模块、查询模块等模块的内存空间请求尚未处理,则主动取消元数据请求,向上层返回FAILED_OFFLINE,而不下发到下层模块中。对于事务模块,将这些请求写入事务重做链表,等待onl ine之后取出重做。
13)被动取消元数据请求。若元数据模块已申请到内存空间,各个模块的各个阶段已经开始处理请求,则通过模块入口判断当前是否为下层RAID离线状态,若当前不是离线状态,则正常处理;若当前是离线状态,则取消请求,向上层返回FAILED_OFFLINE。对于事务模块,将这些请求写入事务重做链表,等待onl ine之后取出重做。
下层RAID重新上线后,需要在各模块都处理完成之前,保证上层不会下发新的I/O业务。因此,此时元数据模块需要处理RAID离线过程中可能出现的事务子请求失败,以及重新打开后台任务。
如图3所示,重新上线处理流程如下:
21)写缓存下刷任务开启。开启在RAID离线过程中停止的写缓存下刷任务,以保证事务请求可以正常下发。
22)事务重做。在离线过程中,事务模块将取消的请求写入事务重做链表,在RAID上线后,需要首先将该重做链表中的请求重新下发,各模块开始正常处理请求。
23)重启元数据后台任务。等待事务重做结束后,元数据模块便可以接收新的I/O业务下发,此时通知上层处理结束,重启元数据后台任务,准备处理新I/O业务。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制。对于所属领域的技术人员来说,在上述说明的基础上还可以做出其它不同形式的修改或变形。这里无需也无法对所有的实施方式予以穷举。在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (8)
1.一种元数据模块,其特征是,包括:
元数据对象模块:用于管理元数据对象,包括LUN信息、B+树的rootNode;实现ROOT区数据结构的初始化、更新和恢复;
事务模块:用于保证请求的原子性;
写缓存模块:用于将I/O业务的请求在内存中缓存;
B+树模块:用于实现元数据模块的B+树操作算法;
读缓存模块:用于提高元数据模块的读性能;
查询模块:用于进行查询操作。
2.根据权利要求1所述的元数据模块,其特征是,所述保证请求的原子性,包括:
若一个请求内的若干子请求全部完成,则请求完成;
若任意一个子请求未完成,则请求回滚,已完成的子请求取消。
3.根据权利要求1所述的元数据模块,其特征是,所述写缓存模块包括WRITE_BACK模式和WRITE_THROUGH模式,其中:
WRITE_BACK模式:写缓存模块被划分一定的内存空间,用于将事务模块发送的请求进行缓存,在达到设定条件时请求进行下刷;
WRITE_THROUGH模式:直接将事务模块发送的请求进行下刷。
4.一种元数据模块处理方法,用于处理存储***下层离线的情况,其特征是,基于权利要求1-3所述的元数据模块,具体步骤包括:
离线处理:停止后台任务,取消元数据请求,建立事务重做链表;
重新上线处理:写缓存下刷任务开启,根据事务重做链表重做请求,重启后台任务。
5.根据权利要求4所述的元数据模块处理方法,其特征是,所述后台任务包括卷删除和写缓存定时下刷。
6.根据权利要求4所述的元数据模块处理方法,其特征是,所述取消元数据请求,包括:
若元数据模块内存空间请求尚未处理,则主动取消元数据请求,向上层返回FAILED_OFFLINE;
若元数据模块已申请到内存空间,则通过模块入口判断当前是否为下层离线状态,若为非离线状态,则正常处理;若为离线状态,则取消请求,向上层返回FAILED_OFFLINE。
7.根据权利要求6所述的元数据模块处理方法,其特征是,所述元数据请求通过事务模块、写缓存模块、查询模块处理,其中,事务模块取消的请求写入事务重做链表。
8.根据权利要求4所述的元数据模块处理方法,其特征是,所述根据事务重做链表重做请求,重启后台任务,包括:
事务重做结束后,通知上层处理结束,重启元数据后台任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911049648.7A CN110928493B (zh) | 2019-10-31 | 2019-10-31 | 一种元数据模块及元数据模块处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911049648.7A CN110928493B (zh) | 2019-10-31 | 2019-10-31 | 一种元数据模块及元数据模块处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928493A true CN110928493A (zh) | 2020-03-27 |
CN110928493B CN110928493B (zh) | 2022-07-22 |
Family
ID=69849989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911049648.7A Active CN110928493B (zh) | 2019-10-31 | 2019-10-31 | 一种元数据模块及元数据模块处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928493B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836051A (zh) * | 2021-11-29 | 2021-12-24 | 苏州浪潮智能科技有限公司 | 一种元数据空间回收方法、装置、设备及存储介质 |
CN116662019A (zh) * | 2023-07-31 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 请求的分配方法、装置、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609335A (zh) * | 2012-01-12 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制保护元数据的装置及方法 |
CN109522243A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种全闪存储中元数据缓存管理方法、装置及存储介质 |
-
2019
- 2019-10-31 CN CN201911049648.7A patent/CN110928493B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609335A (zh) * | 2012-01-12 | 2012-07-25 | 浪潮(北京)电子信息产业有限公司 | 一种实现写时复制保护元数据的装置及方法 |
CN109522243A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种全闪存储中元数据缓存管理方法、装置及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836051A (zh) * | 2021-11-29 | 2021-12-24 | 苏州浪潮智能科技有限公司 | 一种元数据空间回收方法、装置、设备及存储介质 |
CN113836051B (zh) * | 2021-11-29 | 2022-03-22 | 苏州浪潮智能科技有限公司 | 一种元数据空间回收方法、装置、设备及存储介质 |
CN116662019A (zh) * | 2023-07-31 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 请求的分配方法、装置、存储介质及电子装置 |
CN116662019B (zh) * | 2023-07-31 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 请求的分配方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110928493B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360863B2 (en) | Key-value store on persistent memory | |
EP3662390B1 (en) | High availability database through distributed store | |
CN106471478B (zh) | 用于在非易失性数据存储设备内以原子的方式执行多个写事务的设备控制器和方法 | |
EP1770492B1 (en) | A method for improving writing data efficiency and storage subsystem and system implementing the same | |
CN105468293B (zh) | 通过预测损坏的m-页提高闪存利用率的方法和*** | |
CN103714015B (zh) | 减少来自侦听过滤器的后无效事务的方法、装置和*** | |
CN107992269B (zh) | 一种基于去重ssd的事务写入方法 | |
US20110072224A1 (en) | Snapshot metadata management in a storage system | |
US20140006687A1 (en) | Data Cache Apparatus, Data Storage System and Method | |
CN106445405B (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
US10152247B2 (en) | Atomically committing write requests | |
KR101221185B1 (ko) | 캐쉬내 디렉토리 스캔들의 우선순위를 정하는 방법 및 시스템 | |
CN102012849B (zh) | 一种基于闪存的数据库恢复方法 | |
US20100235568A1 (en) | Storage device using non-volatile memory | |
CN110928493B (zh) | 一种元数据模块及元数据模块处理方法 | |
CN110673978B (zh) | 一种双控集群掉电后的数据恢复方法及相关装置 | |
US20140215127A1 (en) | Apparatus, system, and method for adaptive intent logging | |
US8407434B2 (en) | Sequentially written journal in a data store | |
US6658541B2 (en) | Computer system and a database access method thereof | |
US8108356B2 (en) | Method for recovering data in a storage system | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储*** | |
US9921913B2 (en) | Flushing host cache data before rebuilding degraded redundant virtual disk | |
CN113778338A (zh) | 分布式存储数据读取效率优化方法、***、设备和介质 | |
US11263180B2 (en) | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device | |
JP2010152747A (ja) | ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |