CN107577551A - 一种固态硬盘写失败处理方法及系统 - Google Patents
一种固态硬盘写失败处理方法及系统 Download PDFInfo
- Publication number
- CN107577551A CN107577551A CN201710795762.9A CN201710795762A CN107577551A CN 107577551 A CN107577551 A CN 107577551A CN 201710795762 A CN201710795762 A CN 201710795762A CN 107577551 A CN107577551 A CN 107577551A
- Authority
- CN
- China
- Prior art keywords
- hosts
- raid stripe
- write
- write requests
- data
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种固态硬盘写失败处理方法及系统,该方法包括:当NAND Flash接收到目标RAID条带写请求时,则执行写操作;若写操作失败,则依次检查RAID条带中的所有hosts写请求的重写标记是否被置位;若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。其中,目标RAID条带的写入过程,包括:步骤S11:当接收到hosts写请求,查询hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;步骤S12:若是,则对hosts写请求设置重写标记;步骤S13:若否,则对LBA分配新PBA值;步骤S14:再次执行步骤S11,直到RAID条带被填满。通过本发明中的方法可以保证RAID条带在写入NAND Flash发生失败时,直接将无效的数据丢弃,进而保证固态硬盘的存储效率。
Description
技术领域
本发明涉及计算机通信领域,特别涉及一种固态硬盘写失败处理方法及系统。
背景技术
随着计算机数据处理能力的不断增强,硬盘的读写速度已经无法满足大量数据读写的需要,固态硬盘(Solid State Drives,SSD)是用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元组成,被广泛应用于军事、车载、工控、视频监控、网络监控、医疗、航空及导航设备等领域。
磁盘阵列(Redundant Arrays of Independent Disk,RAID)因其能够同时存储和读取数据,所以大幅度地提高了存储系统的数据吞吐量,近年来磁盘阵列以其成本低、功耗小、传输速率高、实现简单、容错能力强等优点,在网络服务器中得到了广泛的应用,在RAID的诸多分级方案当中,尤其以RAID5的使用最为广泛。在实际情况中,企业级固态硬盘要求提供完整的数据保护功能,但是采用RAID方案,数据在写入固态硬盘的过程时,数据会以整条带的方式写入NAND Flash中,会写入一部分无效数据,占用了固态硬盘大量的存储空间,因此,如何更好的利用固态硬盘的存储空间,是本领域技术人员亟待解决的一个问题。
发明内容
有鉴于此,本发明的目的在于提供一种固态硬盘写失败处理方法,以达到提高固态硬盘存储空间利用率的目的。其具体方案如下:
一种RAID条带数据写入方法,包括:
步骤S11:当接收到hosts写请求,查询所述hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
步骤S12:若是,则对所述hosts写请求设置重写标记;
步骤S13:若否,则对所述LBA分配新PBA值;
步骤S14:再次执行步骤S11,直到所述RAID条带被填满。
优选的,所述步骤S13:若否,则对所述LBA分配新PBA值的过程之后,还包括:
将所述新PBA值存储于与所述hosts写请求对应的上下文中。
优选的,所述RAID条带包括N个所述LBA。
优选的,所述步骤S12:若是,则对所述hosts写请求设置重写标记的过程,包括:
若是,则查找所述旧PBA值对应用户数据的上下文;
根据所述上下文,对所述hosts写请求设置所述重写标记。
相应的,本发明还公开了一种固态硬盘写失败处理方法,包括:
当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,所述目标RAID条带为利用前述公开的条带写入方法所创建的RAID条带;
若所述写操作失败,则依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位;
若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
优选的,所述执行写操作的过程之后,还包括:
若所述写操作成功,则结束。
优选的,所述依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位的过程之后,还包括:
若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起所述目标RAID条带写请求。
相应的,本发明还公开了一种RAID条带数据写入系统,包括:
数据判断模块,用于步骤S11:当接收到hosts写请求,查询所述hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
第一结果执行模块,用于步骤S12:若是,则对所述hosts写请求设置重写标记;
第二结果执行模块,用于步骤S13:若否,则对所述LBA分配新PBA值;
数据循环模块,用于步骤S14:再次执行步骤S11,直到所述RAID条带被填满。
相应的,本发明还公开了一种固态硬盘写失败处理系统,包括:
写操作执行模块,用于当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,所述目标RAID条带为利用前述公开的条带数据写入系统所创建的RAID条带;
重写标记检查模块,用于当所述写操作失败,则依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位;
数据丢弃模块,用于当hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
优选的,还包括:
数据重写模块,用于依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位的过程之后,若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起所述目标RAID条带写请求。
在本发明中,一种固态硬盘写失败处理方法,包括:当NAND Flash接收到目标RAID条带写请求时,则执行写操作;若写操作失败,则依次检查RAID条带中的所有hosts写请求的重写标记是否被置位;若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。其中,目标RAID条带的写入过程,包括:步骤S11:当接收到hosts写请求,查询hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;步骤S12:若是,则对hosts写请求设置重写标记;步骤S13:若否,则对LBA分配新PBA值;步骤S14:再次执行步骤S11,直到RAID条带被填满。
可见,首先通过查询RAID条带中是否有重复数据,如果有,则对RAID条带中的重复数据进行标记,然后当目标RAID条带在写入NAND Flash发生写失败时,则会检查RAID条带中的所有hosts写请求对应的重写标记是否被置位,如果hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。从而避免了将无效的数据写入NAND Flash当中,进而避免了无效数据的写放大,提高了NAND Flash的存储效率,提高了固态硬盘的核心竞争力,同时也提高了用户对数据的访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一公开的一种RAID条带数据写入方法流程图;
图2为本发明实施例二公开的一种RAID条带数据写入方法流程图;
图3为本发明实施例三公开的一种固态硬盘写失败处理方法流程图;
图4为本法明实施例四公开的一种固态硬盘写失败处理方法流程图;
图5为本发明实施例五公开的一种RAID条带数据写入系统结构图;
图6为本发明实施例六公开的一种固态硬盘写失败处理系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例一公开了一种RAID条带数据写入方法,参见图1所示,该方法,包括:
步骤S11:当接收到hosts写请求,查询hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
步骤S12:若是,则对hosts写请求设置重写标记;
步骤S13:若否,则对LBA分配新PBA值;
步骤S14:再次执行步骤S11,直到RAID条带被填满。
在本发明实施例中,首先是根据hosts写请求对应的LBA去判断旧的PBA值是否位于RAID条带的最大PBA值与最小PBA值之间,若在,说明该数据为重复数据,则对hosts写请求设置重写标记,若不在,则为LBA分配新的PBA值,重复执行以上步骤,就可以将保证不会将重复的数据再次存储到RAID条带当中。
本发明实施例二公开了一种具体的RAID条带数据写入方法,参见图2所示,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
步骤S21:当接收到hosts写请求,查询hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
步骤S22:若是,则对hosts写请求设置重写标记;
具体的,步骤S22包括步骤S221和步骤S222;
步骤S221:若是,则查找旧PBA值对应用户数据的上下文;
步骤S222:根据上下文,对hosts写请求设置重写标记。
步骤S23:若否,则对LBA分配新PBA值;
具体的,步骤S23具体包括步骤S231;
步骤S231:将新PBA值存储于与hosts写请求对应的上下文中。
步骤S24:再次执行步骤S11,直到RAID条带被填满。
相对于上一实施例,在本实施例中,具体阐述了对于hosts写请求设置重写标记的过程,以及说明了新PBA值的存储位置,重复执行以上步骤,就可以将保证不会将重复的数据再次存储到RAID条带当中。
本发明实施例三公开了一种固态硬盘写失败处理方法,参见图3所示,该方法,包括:
步骤S31:当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,目标RAID条带为利用前述公开的条带数据写入方法所创建的RAID条带;
步骤S32:若写操作失败,则依次检查RAID条带中的所有hosts写请求的重写标记是否被置位;
步骤S33:若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
在本实施例中,在RAID条带写入NAND Flash的过程中,首先是依次检查RAID条带中的所有hosts写请求对应的重写标记是否被置位,若置位,说明该数据为无效数据,则在写入NAND Flash发生失败时,直接将置位的对应数据丢弃即可,这样就可以避免将无效的数据再次写入NAND Flash当中,进而避免了无效数据的写放大,因此提高了NAND Flash的存储效率,同时也提高了用户对数据的访问效率。
本发明实施例四公开了一种具体的固态硬盘写失败处理方法,参见图4所示,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
步骤S41:当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,目标RAID条带为利用前述公开的条带数据写入方法所创建的RAID条带;
步骤S42:若写操作成功,则结束。
步骤S43:若写操作失败,则依次检查RAID条带中的所有hosts写请求的重写标记是否被置位;
步骤S44:若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
步骤S45:若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起目标RAID条带写请求。
在本实施例中,在RAID条带写入NAND Flash的过程中,如果写操作成功,则结束该程序;如果写操作失败,则依次检查RAID条带中的所有hosts写请求对应的重写标记是否被置位,若置位,说明该数据为重复数据,则在写入NAND Flash发生失败时,直接将置位的对应数据丢弃即可,这样就可以避免将无效的数据再次写入NAND Flash当中,进而避免了无效数据的写放大;如果是hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起目标RAID条带写请求。通过这样的循环过程,可以避免将无效的数据再次写入NAND Flash,从而提高了NAND Flash的存储效率,同时也提高了用户对数据的访问效率。
相应的,本发明还公开了一种RAID条带数据写入系统,参见图5所示,该系统包括:
数据判断模块51,用于步骤S11:当接收到hosts写请求,查询hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
第一结果执行模块52,用于步骤S12:若是,则对hosts写请求设置重写标记;
第二结果执行模块53,用于步骤S13:若否,则对LBA分配新PBA值;
数据循环模块54,用于步骤S14:再次执行步骤S11,直到RAID条带被填满。
具体的,该RAID条带数据写入系统,还包括:
数据存储模块,用于在步骤S13:若否,则对LBA分配新PBA值的过程之后,将新PBA值存储于与hosts写请求对应的上下文中。
具体的,第一结果执行模块52包括:数据查找单元和重写标记设置单元;其中:
数据查找单元,用于若是,则查找旧PBA值对应用户数据的上下文;
重写标记设置单元,用于根据上下文,对hosts写请求设置重写标记。
相应的,本发明还公开了一种固态硬盘写失败处理系统,如图6所示,该系统包括:
写操作执行模块61,用于当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,目标RAID条带为利用前述公开的条带数据写入系统所创建的RAID条带;
重写标记检查模块62,用于当写操作失败,则依次检查RAID条带中的所有hosts写请求的重写标记是否被置位;
数据丢弃模块63,用于当hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
具体的,该固态硬盘写失败处理系统,还包括:
数据写入模块:用于当写操作成功,则结束。
具体的,该固态硬盘写失败处理系统,还包括:
数据重写模块,用于依次检查RAID条带中的所有hosts写请求的重写标记是否被置位的过程之后,若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起目标RAID条带写请求。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种RAID条带数据写入方法及系统和一种固态硬盘写失败处理方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种RAID条带数据写入方法,其特征在于,包括:
步骤S11:当接收到hosts写请求,查询所述hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
步骤S12:若是,则对所述hosts写请求设置重写标记;
步骤S13:若否,则对所述LBA分配新PBA值;
步骤S14:再次执行步骤S11,直到所述RAID条带被填满。
2.根据权利要求1所述的方法,其特征在于,所述步骤S13:若否,则对所述LBA分配新PBA值的过程之后,还包括:
将所述新PBA值存储于与所述hosts写请求对应的上下文中。
3.根据权利要求1所述的方法,其特征在于,所述RAID条带包括N个所述LBA。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述步骤S12:若是,则对所述hosts写请求设置重写标记的过程,包括:
若是,则查找所述旧PBA值对应用户数据的上下文;
根据所述上下文,对所述hosts写请求设置所述重写标记。
5.一种固态硬盘写失败处理方法,其特征在于,包括:
当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,所述目标RAID条带写请求为利用权利要求1至4任一项所述的条带数据方法所创建的RAID条带;
若所述写操作失败,则依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位;
若hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
6.根据权利要求5所述的方法,其特征在于,所述执行写操作的过程之后,还包括:
若所述写操作成功,则结束。
7.根据权利要求5或6所述的方法,其特征在于,所述依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位的过程之后,还包括:
若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起所述目标RAID条带写请求。
8.一种RAID条带数据写入系统,其特征在于,包括:
数据判断模块,用于步骤S11:当接收到hosts写请求,查询所述hosts写请求的对应的LBA的旧PBA值是否位于RAID条带的最大PBA值与最小PBA值之间;
第一结果执行模块,用于步骤S12:若是,则对所述hosts写请求设置重写标记;
第二结果执行模块,用于步骤S13:若否,则对所述LBA分配新PBA值;
数据循环模块,用于步骤S14:再次执行步骤S11,直到所述RAID条带被填满。
9.一种固态硬盘写失败处理系统,其特征在于,包括:
写操作执行模块,用于当NAND Flash接收到目标RAID条带写请求时,则执行写操作;其中,所述目标RAID条带写请求为利用权利要求8所述的条带写入系统所创建的RAID条带;
重写标记检查模块,用于当所述写操作失败,则依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位;
数据丢弃模块,用于当hosts写请求的重写标记被置位,则将hosts写请求的对应数据丢弃。
10.根据权利要求9所述的系统,其特征在于,还包括:
数据重写模块,用于依次检查所述RAID条带中的所有hosts写请求的重写标记是否被置位的过程之后,若hosts写请求的重写标记未被置位,则对未被置位的对应的hosts写请求重新分配RAID条带,并重新发起所述目标RAID条带写请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710795762.9A CN107577551A (zh) | 2017-09-06 | 2017-09-06 | 一种固态硬盘写失败处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710795762.9A CN107577551A (zh) | 2017-09-06 | 2017-09-06 | 一种固态硬盘写失败处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107577551A true CN107577551A (zh) | 2018-01-12 |
Family
ID=61031262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710795762.9A Pending CN107577551A (zh) | 2017-09-06 | 2017-09-06 | 一种固态硬盘写失败处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577551A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920293A (zh) * | 2018-06-28 | 2018-11-30 | 郑州云海信息技术有限公司 | 固态硬盘写失败的处理方法和固态硬盘 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094994A (ja) * | 2005-09-30 | 2007-04-12 | Fujitsu Ltd | Raidシステム及びそのリビルド/コピーバック処理方法 |
US20110283064A1 (en) * | 2007-10-19 | 2011-11-17 | Hitachi, Ltd. | Storage apparatus and data storage method using the same |
CN103049222A (zh) * | 2012-12-28 | 2013-04-17 | 中国船舶重工集团公司第七0九研究所 | 一种raid5的写io优化处理方法 |
CN104350477A (zh) * | 2012-06-29 | 2015-02-11 | 英特尔公司 | 用于固态驱动装置(ssd)的优化的上下文移除 |
-
2017
- 2017-09-06 CN CN201710795762.9A patent/CN107577551A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007094994A (ja) * | 2005-09-30 | 2007-04-12 | Fujitsu Ltd | Raidシステム及びそのリビルド/コピーバック処理方法 |
US20110283064A1 (en) * | 2007-10-19 | 2011-11-17 | Hitachi, Ltd. | Storage apparatus and data storage method using the same |
CN104350477A (zh) * | 2012-06-29 | 2015-02-11 | 英特尔公司 | 用于固态驱动装置(ssd)的优化的上下文移除 |
CN103049222A (zh) * | 2012-12-28 | 2013-04-17 | 中国船舶重工集团公司第七0九研究所 | 一种raid5的写io优化处理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920293A (zh) * | 2018-06-28 | 2018-11-30 | 郑州云海信息技术有限公司 | 固态硬盘写失败的处理方法和固态硬盘 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754725B2 (en) | Self-accumulating exclusive or program | |
US10216578B2 (en) | Data storage device for increasing lifetime and RAID system including the same | |
US10126988B1 (en) | Assigning RAID extents and changing drive extent allocations within RAID extents when splitting a group of storage drives into partnership groups in a data storage system | |
US10379948B2 (en) | Redundancy coding stripe based on internal addresses of storage devices | |
US8131969B2 (en) | Updating system configuration information | |
US20070067667A1 (en) | Write back method for RAID apparatus | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
US10649843B2 (en) | Storage systems with peer data scrub | |
US20160179403A1 (en) | Storage controller, storage device, storage system, and semiconductor storage device | |
US10409683B2 (en) | Data storage system configured to perform data rebuild operation via reduced read requests | |
CN105045525A (zh) | 存储控制器、存储系统及操作存储控制器的方法 | |
WO2017173623A1 (zh) | 用于处理存储设备中分条的方法和存储设备 | |
US20200089606A1 (en) | Use of a logical-to-logical translation map and a logical-to-physical translation map to access a data storage device | |
EP2239654A2 (en) | Memory systems for computing devices and systems | |
JP2004227560A (ja) | 外部格納サブシステムにおけるパリティー格納方法及びエラーブロック復旧方法 | |
CN101504625A (zh) | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 | |
US10095585B1 (en) | Rebuilding data on flash memory in response to a storage device failure regardless of the type of storage device that fails | |
DE102016009807A1 (de) | Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung | |
CN104008780A (zh) | 存储单元的修复方法和装置 | |
KR20190020229A (ko) | 스토리지 장치의 어드레스 맵핑 방법 및 동작 방법 | |
CN103608784A (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
US20240037041A1 (en) | System and method for lba-based raid | |
CN107729536A (zh) | 一种数据存储方法和装置 | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
CN103218271A (zh) | 一种数据纠错方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180112 |