CN104461930A - 一种写缓存的方法及装置 - Google Patents
一种写缓存的方法及装置 Download PDFInfo
- Publication number
- CN104461930A CN104461930A CN201310438221.2A CN201310438221A CN104461930A CN 104461930 A CN104461930 A CN 104461930A CN 201310438221 A CN201310438221 A CN 201310438221A CN 104461930 A CN104461930 A CN 104461930A
- Authority
- CN
- China
- Prior art keywords
- write
- described data
- data block
- buffer memory
- disc cache
- 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
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明提供了一种写缓存的方法及装置,该写缓存的方法包括:获得写缓存的指令;根据所述写缓存的指令,将获得的数据写入缓存盘;根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。本发明实施例的写缓存的方法及装置,提高了写性能,同时可以防范意外断电造成数据丢失,扩容方便,容量大,无需镜像保护,且经济实惠。
Description
技术领域
本发明涉及提高数据写入性能的方法,特别涉及一种写缓存的方法及装置。
背景技术
磁盘写缓存(Cache)实际上就是将要写入磁盘的数据先保存于***为写缓存分配的内存空间中,当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少写入所需的时间。
传统以内存作为写缓存的方法存在以下不足:
1.容量受体系架构限制;
2.电池或转存机制均有隐患;
3.缓存镜像引入性能瓶颈;
4.毫秒级IO响应时间。
发明内容
本发明要解决的技术问题是提供一种写缓存的方法及装置,提高写性能。
为解决上述技术问题,本发明实施例提供一种写缓存的方法,包括:
获得写缓存的指令;
根据所述写缓存的指令,将获得的数据写入缓存盘;
根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
其中,将获得的数据写入缓存盘的步骤包括:
从前端应用***获得要写入缓存盘的数据;
根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
根据所述数据块的分配情况,将所述数据写入所述数据块。
其中,若所述数据对应的所述缓存盘中的数据块为2个以上时,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
其中,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
从所述缓存盘的BAT表中,查找所述数据块是否已经被分配过,若已经分配过,则分配新的数据块,并将所述数据写入分配的新的数据块中;否则,根据所述数据块的位图信息,将所述数据写入所述数据块。
其中,所述根据所述数据块的位图信息,将所述数据写入所述数据块的步骤包括:
如果所述数据块的位图信息中显示所述数据要写入的区域之前没有写入过,则更新所述要写入的区域的位图,将所述数据写入所述要写入的区域;否则,将所述数据写入所述要写入的区域。
其中,将所述数据写入所述要写入的区域后还包括:
如果写入失败,则恢复所述要写入的区域的位图的比特位。
其中,所述写缓存的方法,还包括:
若所述缓存盘为满状态,或者所述数据对应的数据块不在所述缓存盘中,则直接将所述数据写入所述存储磁盘。
本发明实施例提供一种写缓存的装置,包括:
第一获取模块,用于获得写缓存的指令;
写入模块,用于根据所述写缓存的指令,将获得的数据写入缓存盘;
存储模块,用于根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
其中,所述写入模块具体包括:
第一获取子模块,用于从前端应用***获得要写入缓存盘的数据;
确定模块,用于根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
第一写入子模块,用于根据所述数据块的分配情况,将所述数据写入所述数据块。
其中,若所述数据对应的所述缓存盘中的数据块为2个以上时,第一写入子模块具体用于:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
本发明的上述技术方案的有益效果如下:
上述方案中,通过获得写缓存的指令;根据所述写缓存的指令,将获得的数据写入缓存盘;根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。提高了写性能,防范意外断电造成数据丢失,扩容方便,容量大,且无需镜像保护,经济实惠。
附图说明
图1表示本发明实施例中存储管理网关关系示意图;
图2表示本发明实施例中缓存盘组织结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明针对现有写缓存时容量受体系架构限制,电池或转存机制均存在隐患的问题,提供了一种写缓存的方法及装置。
本发明的实施例提供了一种写缓存的方法,包括:
步骤11,获得写缓存的指令;
步骤12,根据所述写缓存的指令,将获得的数据写入缓存盘;
步骤13,根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
其中,所述缓存盘是存储池中包括:性能好的磁盘(如:SSD)来作为存储***的缓存盘。这样利用少量高价高性能盘,即可达到很好的性能效果,也避免了内存缓存的一些弊端。
其中,将获得的数据写入缓存盘的步骤包括:
从前端应用***获得要写入缓存盘的数据;
根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
根据所述数据块的分配情况,将所述数据写入所述数据块。
其中,若所述数据对应的所述缓存盘中的数据块为2个以上时,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
其中,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
从所述缓存盘的BAT表中,查找所述数据块是否已经被分配过,若已经分配过,则分配新的数据块,并将所述数据写入分配的新的数据块中;否则,根据所述数据块的位图信息,将所述数据写入所述数据块。
其中,所述根据所述数据块的位图信息,将所述数据写入所述数据块的步骤包括:
如果所述数据块的位图信息中显示所述数据要写入的区域之前没有写入过,则更新所述要写入的区域的位图,将所述数据写入所述要写入的区域;否则,将所述数据写入所述要写入的区域。
其中,将所述数据写入所述要写入的区域后还包括:
如果写入失败,则恢复所述要写入的区域的位图的比特位。
其中,所述写缓存的方法,还包括:
若所述缓存盘为满状态,或者所述数据对应的数据块不在所述缓存盘中,则直接将所述数据写入所述存储磁盘。
下面具体说明上述实施例的具体实现过程,如图1和图2所示,当IO(写数据)从上层传下来的时候,OsnPA会检查IO的Offset(偏移量)、Length(总的长度),来计算出所属的Block Num(数据块),在16M BAT(批处理)里查找是否相对应的BLock块是否已经分配,如果没有,则分配新的block块,更新BAT表。
在得到分配的Block块之后,检测对应Block的Bitmap(位图信息),如果IO所需要写入的区域没有写入过,则先更新对应位置的Bitmap,等Bitmap更新完成之后再写入数据,如果写入数据失败,则恢复对应Block Bitmap的bit位。
如果缓存盘满了,IO对应数据区域又不在缓存盘则IO往源盘写入,否则往对应缓存盘Block写入。还会出现一种情况就是一个IO横跨了两个Block,这个时候需要切分IO,分别写入两个Block,必须更新两个Block的Bitmap。
上述实施例写缓存的方法,提高了写性能,可以防范意外断电造成的数据丢失,且扩容方便,容量大,无需镜像保护。
本发明实施例提供一种写缓存的装置,包括:
第一获取模块,用于获得写缓存的指令;
写入模块,用于根据所述写缓存的指令,将获得的数据写入缓存盘;
存储模块,用于根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
其中,所述写入模块具体包括:
第一获取子模块,用于从前端应用***获得要写入缓存盘的数据;
确定模块,用于根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
第一写入子模块,用于根据所述数据块的分配情况,将所述数据写入所述数据块。
其中,若所述数据对应的所述缓存盘中的数据块为2个以上时,第一写入子模块具体用于:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
第一写入子模块具体包括:
第二写入子模块,用于从所述缓存盘的BAT表中,查找所述数据块是否已经被分配过,若已经分配过,则分配新的数据块,并将所述数据写入分配的新的数据块中;否则,根据所述数据块的位图信息,将所述数据写入所述数据块。
其中,所述根据所述数据块的位图信息,将所述数据写入所述数据块的具体包括:
第三写入子模块,用于如果所述数据块的位图信息中显示所述数据要写入的区域之前没有写入过,则更新所述要写入的区域的位图,将所述数据写入所述要写入的区域;否则,将所述数据写入所述要写入的区域。
将所述数据写入所述要写入的区域后还包括:
恢复模块,用于如果写入失败,则恢复所述要写入的区域的位图的比特位。
其中,所述的写缓存的装置,还包括:
第四写入子模块,用于若所述缓存盘为满状态,或者所述数据对应的数据块不在所述缓存盘中,则直接将所述数据写入所述存储磁盘。
上述实施例的写缓存的装置,如图1所示,存储管理网关1统一管理存储资源,普通磁盘2和缓存盘3都加入静态存储池,然后分别新建卷作为源卷和缓存卷,建立缓存关系。缓存盘可以插在存储管理网关上也可以作为后端阵列存在。
当需要删除缓存关系的时候,需要先把缓存盘里的数据迁移到数据盘,以保证数据不丢失,迁移过程中如果遇到一个数据块有数据需要写入,同时又在迁移数据的,则暂时先放弃迁移这个数据块而迁移下一个数据块,最终迁移完所有数据之后删除缓存关系。
迁移的时候根据位图信息来分析读取数据,一个数据最大读1M,迁移策略目前定位:手动迁移,每隔一定时间全部迁移,缓存关系满60%迁移部分数据块,后续再根据热度来判断优先需数据块。
如图2所示,在配置缓存关系的时候需要获取源盘和缓存盘的信息、盘大小等,用于初始化osndskhd4(存在于缓存盘第一个512bytes的元数据)和osndskch7(存在于缓存盘osndskhd4之后第一个512bytes的元数据),在初始化完之后写入缓存盘的前两个扇区,并且初始化之后的16M bat5数据为空,以将来记录数据块的分配情况。
本发明的上述实施例的写缓存的方法及装置,提高了写性能,防范意外断电造成数据丢失,扩容方便,容量大,且无需镜像保护,经济实惠。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种写缓存的方法,其特征在于,包括:
获得写缓存的指令;
根据所述写缓存的指令,将获得的数据写入缓存盘;
根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
2.根据权利要求1所述的写缓存的方法,其特征在于,将获得的数据写入缓存盘的步骤包括:
从前端应用***获得要写入缓存盘的数据;
根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
根据所述数据块的分配情况,将所述数据写入所述数据块。
3.根据权利要求2所述的写缓存的方法,其特征在于,若所述数据对应的所述缓存盘中的数据块为2个以上时,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
4.根据权利要求2或3所述的写缓存的方法,其特征在于,根据所述数据块的分配情况,将所述数据写入所述数据块的步骤包括:
从所述缓存盘的BAT表中,查找所述数据块是否已经被分配过,若已经分配过,则分配新的数据块,并将所述数据写入分配的新的数据块中;否则,根据所述数据块的位图信息,将所述数据写入所述数据块。
5.根据权利要求4所述的写缓存的方法,其特征在于,根据所述数据块的位图信息,将所述数据写入所述数据块的步骤包括:
如果所述数据块的位图信息中显示所述数据要写入的区域之前没有写入过,则更新所述要写入的区域的位图,将所述数据写入所述要写入的区域;否则,将所述数据写入所述要写入的区域。
6.根据权利要求5所述的写缓存的方法,其特征在于,将所述数据写入所述要写入的区域后还包括:
如果写入失败,则恢复所述要写入的区域的位图的比特位。
7.根据权利要求5所述的写缓存的方法,其特征在于,还包括:
若所述缓存盘为满状态,或者所述数据对应的数据块不在所述缓存盘中,则直接将所述数据写入所述存储磁盘。
8.一种写缓存的装置,其特征在于,包括:
第一获取模块,用于获得写缓存的指令;
写入模块,用于根据所述写缓存的指令,将获得的数据写入缓存盘;
存储模块,用于根据已经建立的缓存盘与所述存储磁盘的缓存关系,将所述数据通过所述缓存盘存入所述存储磁盘。
9.根据权利要求8所述的写缓存的装置,其特征在于,所述写入模块具体包括:
第一获取子模块,用于从前端应用***获得要写入缓存盘的数据;
确定模块,用于根据所述数据的偏移量,确定所述数据对应的所述缓存盘中的数据块;
第一写入子模块,用于根据所述数据块的分配情况,将所述数据写入所述数据块。
10.根据权利要求9所述的写缓存的装置,其特征在于,若所述数据对应的所述缓存盘中的数据块为2个以上时,第一写入子模块具体用于:
将所述数据分割为与所述数据块数量相同的部分,根据所述数据块的分配情况,将每一部分分别写入相应的数据块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310438221.2A CN104461930A (zh) | 2013-09-23 | 2013-09-23 | 一种写缓存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310438221.2A CN104461930A (zh) | 2013-09-23 | 2013-09-23 | 一种写缓存的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104461930A true CN104461930A (zh) | 2015-03-25 |
Family
ID=52908016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310438221.2A Pending CN104461930A (zh) | 2013-09-23 | 2013-09-23 | 一种写缓存的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461930A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484314A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种缓存数据控制方法及装置 |
CN106557264A (zh) * | 2015-09-25 | 2017-04-05 | 伊姆西公司 | 针对固态硬盘的存储方法及设备 |
CN107291386A (zh) * | 2017-06-14 | 2017-10-24 | 湖北第二师范学院 | 一种用于蓝光vtl网关的缓存管理***及方法 |
CN107748649A (zh) * | 2017-09-18 | 2018-03-02 | 北京京东尚科信息技术有限公司 | 一种缓存数据的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482838A (zh) * | 2009-02-06 | 2009-07-15 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据写入方法及设备 |
CN102870100A (zh) * | 2012-06-30 | 2013-01-09 | 华为技术有限公司 | 数据缓存装置、数据存储***及方法 |
CN103049394A (zh) * | 2012-11-30 | 2013-04-17 | 记忆科技(深圳)有限公司 | 固态硬盘数据缓存的方法及其*** |
CN103092786A (zh) * | 2013-02-25 | 2013-05-08 | 浪潮(北京)电子信息产业有限公司 | 一种双控双活存储控制***及方法 |
US8527703B1 (en) * | 2009-06-19 | 2013-09-03 | Emc Corporation | Cache management system and method |
-
2013
- 2013-09-23 CN CN201310438221.2A patent/CN104461930A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482838A (zh) * | 2009-02-06 | 2009-07-15 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据写入方法及设备 |
US8527703B1 (en) * | 2009-06-19 | 2013-09-03 | Emc Corporation | Cache management system and method |
CN102870100A (zh) * | 2012-06-30 | 2013-01-09 | 华为技术有限公司 | 数据缓存装置、数据存储***及方法 |
CN103049394A (zh) * | 2012-11-30 | 2013-04-17 | 记忆科技(深圳)有限公司 | 固态硬盘数据缓存的方法及其*** |
CN103092786A (zh) * | 2013-02-25 | 2013-05-08 | 浪潮(北京)电子信息产业有限公司 | 一种双控双活存储控制***及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484314A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种缓存数据控制方法及装置 |
CN106484314B (zh) * | 2015-09-01 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 一种缓存数据控制方法及装置 |
CN106557264A (zh) * | 2015-09-25 | 2017-04-05 | 伊姆西公司 | 针对固态硬盘的存储方法及设备 |
CN107291386A (zh) * | 2017-06-14 | 2017-10-24 | 湖北第二师范学院 | 一种用于蓝光vtl网关的缓存管理***及方法 |
CN107291386B (zh) * | 2017-06-14 | 2018-09-07 | 湖北第二师范学院 | 一种用于蓝光vtl网关的缓存管理***及方法 |
CN107748649A (zh) * | 2017-09-18 | 2018-03-02 | 北京京东尚科信息技术有限公司 | 一种缓存数据的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107346290B (zh) | 使用并行化日志列表重放分区逻辑到物理数据地址转换表 | |
CN104461391B (zh) | 一种存储设备元数据管理处理方法及*** | |
US9043541B2 (en) | Storage control device, storage device, and control method for controlling storage control device | |
US9514838B2 (en) | Apparatus including memory system controllers and related methods for memory management using block tables | |
US9076528B2 (en) | Apparatus including memory management control circuitry and related methods for allocation of a write block cluster | |
EP2715729B1 (en) | Apparatus including memory system controllers and related methods | |
CN109977034B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
US8543758B2 (en) | Apparatus including memory channel control circuit and related methods for relaying commands to logical units | |
US8886884B2 (en) | System and method for increasing read and write speeds of hybrid storage unit | |
CN102682012A (zh) | 一种文件***内读写数据的方法及装置 | |
CN102831072B (zh) | 闪存设备及其管理方法、数据读写方法及读写装置 | |
TW201437807A (zh) | 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置 | |
TW201232256A (en) | Transaction log recovery | |
US9400603B2 (en) | Implementing enhanced performance flash memory devices | |
US20220229722A1 (en) | Method and apparatus to improve performance of a redundant array of independent disks that includes zoned namespaces drives | |
CN110347613B (zh) | 多租户固态盘中实现raid的方法、控制器及多租户固态盘 | |
CN105138286A (zh) | 一种在磁盘文件***中混合利用ssd和smr硬盘的方法 | |
CN107608625B (zh) | 一种提升固存储设备读性能的方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN103076993A (zh) | 一种密集型***中的存储***及方法 | |
TW201007452A (en) | SSD with a controller accelerator | |
CN106104515A (zh) | 利用非易失性存储器的文件***设计和故障恢复方法 | |
CN104461930A (zh) | 一种写缓存的方法及装置 | |
CN104575595A (zh) | 非易失性随机存取的存储装置 | |
CN102520885B (zh) | 一种混合硬盘的数据管理*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 12 building, 1038 International Venture Center, Jincheng Road, Xiaoshan District, Zhejiang, Hangzhou, 311202 Applicant after: Hangzhou Xinhe Data Technology Co.,Ltd. Address before: 12 building, 1038 International Venture Center, Jincheng Road, Xiaoshan District, Zhejiang, Hangzhou, 311202 Applicant before: Hangzhou Xinhe Data Technology Co.,Ltd. |
|
COR | Change of bibliographic data | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150325 |