一种解决存储磁盘阵列Write Hole的处理方法

文档序号:1963432 发布日期:2021-12-14 浏览:33次 >En<

阅读说明:本技术 一种解决存储磁盘阵列Write Hole的处理方法 (Processing method for solving Write Hole of storage disk array ) 是由 史建才 于 2021-08-26 设计创作,主要内容包括:本发明涉及一种解决存储磁盘阵列Write Hole的处理方法,于设计RAID时,采用文件系统的Journal日志设计方式进行写请求的原子处理;采用非易失性的快速设备做为写缓存,达到原子写操作的目的。本发明在实现写请求的原子处理过程中,journal盘由SSD固态硬盘与HDD机械硬盘组合而成,并且先通过对io块的大小进行解析,再根据io块的大小不同而分别写入不同journal盘,若io块为小块,则将小块io并写入journal-SSD;若io块为大块,则将大块io并写入journal-HDD;若io块为小块且为连续状态,则写入journal-HDD,从而避免Write Hole问题的出现。(The invention relates to a processing method for solving the problem of Write Hole of a storage disk array, which adopts a Journal log design mode of a file system to perform atomic processing of a Write request when designing RAID; and nonvolatile fast equipment is used as a write cache to achieve the purpose of atomic write operation. In the process of realizing the atomic processing of the write request, the journal disk is formed by combining an SSD solid state disk and an HDD mechanical hard disk, the size of an io block is analyzed, then different journal disks are respectively written into according to the different sizes of the io block, and if the io block is a small block, the small block io is written into a journal-SSD; if the io block is a large block, writing the large block io into a journal-HDD; if the io block is a small block and is in a continuous state, the journal-HDD is written, thereby avoiding the Write Hole problem.)

一种解决存储磁盘阵列Write Hole的处理方法

技术领域

本发明涉及计算机存储技术领域,尤其涉及一种解决存储磁盘阵列Write Hole的处理方法。

背景技术

本领域技术人员均知晓,RAID系统中会存在一个称之为Write Hole的问题,WriteHole是一种非常形象的描述,当系统出现异常(如掉电、复位等现象)时,磁盘阵列即容易出现write Hole现象。具体地讲,对于一个采用条带内部通过校验数据进行数据保护的系统,当应用程序正在更新条带内部数据时,如果系统突然断电,则条带数据无法正常更新完成,那么此时就会出现条带中的数据部分更新完成,在这种情况下,当系统重启之后,条带中的数据是不完整的,校验数据和条带中的有效数据无法匹配上,条带处于数据不一致的情况。

为进一步分析Write Hole问题,本申请技术方案之设计人员以所列举的图1为例进行详细的解析:

由于RAID会将磁盘进行条带化,即每块盘各取PAGE_SIZE(通常为4k、64k)大小的连续扇区,做成一个条带stripe,多个stripe组合在一起是chunk,多个chunk组合在一起就是整个阵列。

假设阵列是由五块盘组成的raid6,三块盘存数据D1-D3,两块盘存校验P和Q,一个stripe组成了chunk;系统发生crash前更新了stripe数据D1->D1’,但是,stripe的P和Q还没来得急更新完,此时系统发生crash重启;在这种情况下stripe的数据处于不一致的状态,系统重启之后,RAID无法感知这种数据不一致的stripe。

该情形下,如果此时D2再次发生故障,要用D1’+D3+P+Q计算生成D2,很明显,计算的过程用到了D1’,显然恢复出来的数据错误,不再是原来的D2数据。所以,数据不一致的stripe会进一步引起数据的正确性问题。可见,Write Hole问题不仅破坏被更新过的数据,进一步还会潜在影响未更新数据的正确性,在极端情况下会影响整条带数据的正确性,这也是Write Hole问题的突出表现。

尽管技术人员以往在应对Write Hole问题时,做出了一系列的改进,例如,考虑在发生Write Hole问题的时候,即在条带数据更新时,系统突然断电,RAID系统中出现若干数据不一致的条带。在系统重启之后,针对这些数据不一致的条带,可以采用全系统扫描的方式对数据不一致条带进行修复,这也是目前很多RAID系统所常用的方法,通过这种方式可以防止数据不一致条带进一步导致未更新数据的正确性问题。

即便在RAID系统中通常存在SYNC功能,当系统非法重启之后,可以通过SYNC功能对RAID中的所有条带进行检查,并且将数据不一致条带进行修复,然而,根据实际验证可以得出,这种方式虽然可防止Write Hole问题的扩散,但还是会导致RAID系统中部分数据的彻底丢失。

本发明技术方案正是针对以上问题展开相应的解决方案,为了彻底解决WriteHole这一问题,提出一种解决存储磁盘阵列Write Hole的处理方法,其主要设计构思为,在设计RAID4、5、6时,采用文件系统journal的设计方式,实现写请求的原子处理,通常借助于能快速处理io的非易失性存储介质进行写缓存,来达到原子处理的目的,从而避免WriteHole问题的出现。当然,经过实践应用表明,本发明所提出的技术方案能够缓解、部分解决或完全解决现有技术存在的问题。

发明内容

为克服上述问题或者至少部分地解决上述问题,本发明提供一种解决存储磁盘阵列Write Hole的处理方法,其采用文件系统journal的设计方式,实现写请求的原子处理,通常借助于能快速处理io的非易失性存储介质进行写缓存,来达到原子处理的目的,从而避免Write Hole问题的出现。

为实现上述目的,本发明采用以下技术方案:

一种解决存储磁盘阵列Write Hole的处理方法,该处理方法的具体处理步骤为:

于设计RAID时,采用文件系统的Journal日志设计方式进行写请求的原子处理;

采用非易失性的快速设备做为写缓存,以便达到原子写操作的目的;

进一步地,其中的非易失性的快速设备由SSD固态硬盘与HDD机械硬盘组合而成,并且先通过对io块的大小进行解析,再根据不同io块的大小不同而分别写入不同journal盘,包括:

若io块为小块,则将小块io并写入journal-SSD;

若io块为大块,则将大块io并写入journal-HDD;

若io块为小块且为连续状态,则写入journal-HDD。

通过对以上方法的实施,所得到的技术方案可进一步施以不同的技术手段,包括:

其中,journal盘为至少两种硬盘的组合,以便同时确保硬盘的寿命以及提升硬盘的性能;

其中,所采用的文件系统Journal日志的方式,包括,把一次数据更新操作看成一次transaction事务,即一次原子操作;相应地,一次原子操作形成atomic write操作。

对于atomic write操作,当atomic write中间过程发生故障时,系统重启之后可以继续操作,保证数据要么更新完成,要么完全没有写入,不存在中间状态。

进一步地,每次RAID进行条带数据更新时,首先记录一下日志,保存事件类型以及相关的数据,然后再将数据提交到条带中;当条带数据全部更新完成之后,清除日志数据。

本发明在基于解决存储磁盘阵列Write Hole的处理方法此同一构思的基础上,还包含其它技术方案:

其中的写请求的原子处理操作则引入非易失内存,在更新RAID数据时,首先将数据写入非易失内存中,当内存中的数据聚合完毕之后再更新写入条带;在条带数据更新的过程中,如果系统出现异常重启,由于内存中依然存在未完成更新的数据,条带中的数据将会被再次更新,不会存在中间数据状态。

另外,RAID可与文件系统、上层的应用系统进行配合

本发明以文件系统journal设计思路为基础,实现写请求的原子处理,journal盘则由SSD固态硬盘与HDD机械硬盘组合而成,并且先通过对io块的大小进行解析,再根据io块的大小不同而分别写入不同journal盘,例如,若io块为小块,则将小块io并写入journal-SSD;若io块为大块,则将大块io并写入journal-HDD;若io块为小块且为连续状态,则写入journal-HDD,从而达到原子处理的目的,避免Write Hole问题的出现。

附图说明

下面根据附图对本发明作进一步详细说明。

图1是所列举的目前出现的存储磁盘阵列Write Hole问题的原理示意图;

图2是本发明所实施的解决存储磁盘阵列Write Hole的处理方法,其采用文件系统的Journal(日志)设计思想来进行原子处理的流程示意图;

图3是本发明所实施的解决存储磁盘阵列Write Hole的处理方法,其采用采用合适的介质做journal盘进行原子处理的流程示意图;

图4是本发明所实施的解决存储磁盘阵列Write Hole的处理方法,其写入journal盘的处理流程示意图。

具体实施方式

本发明拟实施的解决存储磁盘阵列Write Hole的处理方法,所实施的技术手段要达到的目的在于,采用文件系统的Journal(日志)的设计思想,选用ssd+hdd两种盘的有效组合方式,借助于非易失性的快速设备做为写缓存,达到原子写操作的目的,从而避免Write Hole问题的出现。

本发明技术方案之设计人员所实施的处理方法,主要是在设计RAID时采用文件系统的Journal日志的设计思想,结合两种盘的有效组合方式来实现写请求的原子处理。然而,所构建的技术方案并非是针对每一种盘的具体型号或该方法所采用何种算法等技术手段进行限定的,并且本发明技术方案也无需对这些方面进行不必要的限定,如果技术人员在应用该方法时需要结合实际应用需求在所涉及的该方面进行优化,所涉及的各种手段均可采用常规技术手段即可。因而,所实施的技术方案实际上是一种能够让本领域技术人员结合常规技术手段参照及实施的处理方法,技术人员根据不同的应用需求以及设计要求,能够构建最终的解决存储磁盘阵列Write Hole的处理方法,并且通过所构建成的解决存储磁盘阵列Write Hole的处理方法技术方案在应用时能够实际获得其带来的一系列优势,如提高数据的准确性、实现写请求的原子处理、避免Write Hole问题的出现等,这些优势将会在以下对方法步骤的解析中逐步体现出来。

如图1-4所示,本发明所实施的解决存储磁盘阵列Write Hole的处理方法,其在设计RAID时,采用文件系统的Journal日志的设计思想,来实现写请求的原子处理,并且借助于非易失性的快速设备做为写缓存,达到原子写操作的目的,在采用相应的方法步骤之前,还要对方法的设计思路、设计过程进行解析,如下:

经过设计人员的反复验证,若采用非易失性的快速设备做为写缓存,实际上则可以达到对写请求的原子处理方法步骤的一种优化。

首先,文件系统在数据更新时,为了保证数据更新的原子性,可采用日志的方式,把一次数据更新操作看成一次transaction事务,即不论一次数据更新操作有多少次IO,从外部来看这是一次原子操作,可以称之为atomic write;当atomic write中间过程发生故障时,系统重启之后可以继续操作,保证数据要么更新完成,要么完全没有写入,不会存在中间状态;RAID系统想要解决Write Hole的问题,也需要引入这种Atomic write的机制,最直接的方式是在每次RAID进行条带数据更新时,首先记录一下日志,保存事件类型以及相关的数据;然后,再将数据提交到条带中;当条带数据全部更新完成之后,清除日志数据。这种方式可保证原子写,即使在条带数据更新过程中发生系统故障,系统重启之后,通过日志数据可以继续写过程,保证条带数据完全更新完毕,并处于数据一致的状态。

相应地,虽然采用日志的方式看似完善,但也会严重影响性能。在磁盘存储系统中,日志更新非常耗时,一次更新需要进行多次磁盘IO操作,如果日志存储空间和条带存储空间在物理上不连续,那么将会引入磁盘抖动问题,严重影响性能;对于闪存存储系统,引入日志系统之后,所有的数据操作将会引入双倍的数据写入操作,写放大问题变得非常棘手;所以,在开源RAID系统中,都没有提供这种日志操作方式,通常需要上层的文件系统来解决这种Write Hole的问题。

进一步地,在引入非易失内存的基础上,在更新RAID数据时,首先将数据写入非易失内存中,例如,非易失内存NVRAM(非易失性随机访问存储器,断电后仍能保持数据的一种RAM),当NVRAM中的数据聚合完毕之后再更新写入条带,在条带数据更新的过程中,如果系统出现异常重启,由于NVRAM中依然存在未完成更新的数据,所以,条带中的数据将会被再次更新,不会存在中间数据状态,不会存在Write Hole的问题。

此外,在软RAID中,可以在系统中使用PCIe NVRAM或者NVDIMM来实现RAID的非易失数据缓存,通常在存储系统中,软RAID会和文件系统、上层的应用系统进行配合,因此,NVRAM也会和文件系统进行共享,从而解决掉Write Hole的问题。Write Hole是RAID的一个比较难于解决的问题,但是借助于非易失内存技术之后,该类问题则便于有效的避免和解决。

如图2-4所示,本发明所实施的解决存储磁盘阵列Write Hole的处理方法,对所采用的设计思路及设计过程进行总结,其步骤主要为:

首先,设计RAID时,以文件系统的Journal日志设计为基础,进行写请求的原子处理;

然后,借助于非易失性的快速设备做为写缓存,达到原子写操作的目的,对于journal盘的选择,分析如下:

对于SSD固态硬盘与HDD机械硬盘的选择,各自具有相应的优缺点,例如,各自储存原理不同,HDD机械硬盘中所有盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动,SSD固态硬盘则是用固态电子存储芯片阵列制成的硬盘。又如,防震抗摔性不同,HDD机械硬盘都是磁碟型的,数据储存在磁碟扇区里,防震抗摔性差,SSD固态硬盘是使用闪存颗粒制作而成,所以SSD固态硬盘内部不存在任何机械部件,即使在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用,在发生碰撞和震荡时能够将数据丢失的可能性降到最小;再如,数据存储速度不同,从评测数据来看,SSD固态硬盘相对HDD机械硬盘性能提升至少两倍。

针对本发明所实施之技术方案,倘若只选SSD做journal盘,SSD性能固然较佳,但是擦写次数有限,价格相对也比较高,而且无法进行数据恢复;若只选HDD做journal盘,HDD对擦写次数无限制,价格便宜,但是写性能又相对较低。

鉴于以上采用SSD固态硬盘与HDD机械硬盘的各自优缺点,本发明技术方案采用SSD+HDD的方式,通过两种盘的有效组合,消除SSD磁盘的寿命问题,以及HDD性能低的问题。

对于两种盘的有效结合方式,主要是通过监控数据io块大小而利用常规技术手段设计相应的算法,通过算法对io大小进行解析,若为小块,则将小块io并写入journal-SSD,若为大块,则将大块io并写入journal-HDD,若是遇到小块io且亦为连续的状况,则也并写入journal-HDD。

在本说明书的描述中,若出现术语“实施例一”、“本实施例”、“具体实施”等描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明或发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例;而且,所描述的具体特征、结构、材料或特点可以在任何一个或多个实施例或示例中以恰当的方式结合。

在本说明书的描述中,术语“设置”、“具有”等均做广义理解,可根据具体情况理解上述术语在本发明中的具体含义。

上述对实施例的描述是为了便于该技术领域的普通技术人员能够理解和应用,熟悉本领域技术的人员显然可轻易对这些实例做出各种修改,并把在此说明的一般原理应用到其它实施例中而不必经过创造性的劳动。因此,本案不限于以上实施方式,对于以下几种情形的修改,都应该在本案的保护范围内:①以本发明技术方案为基础并结合现有公知常识所实施的新的技术方案,如在Journal日志设计基础上,再通过SSD与HDD相结合形成用于区分不同io块写入的盘,所形成的技术方案产生的预期效果没有超出本发明之外;②采用公知技术对本发明技术方案的部分特征的等效替换,例如,根据常规技术手段设计而成的算法等,所产生的技术效果与本发明技术效果相同;③以本发明技术方案为基础进行拓展,拓展后的技术方案的实质内容没有超出本发明技术方案之外;④利用本发明文本记载内容所作的等效变换,将所得技术手段应用在其它相关技术领域的方案。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:信息的存储方法、装置、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类