CN103645862B - 一种磁盘阵列初始化性能提升方法 - Google Patents

一种磁盘阵列初始化性能提升方法 Download PDF

Info

Publication number
CN103645862B
CN103645862B CN201310671498.XA CN201310671498A CN103645862B CN 103645862 B CN103645862 B CN 103645862B CN 201310671498 A CN201310671498 A CN 201310671498A CN 103645862 B CN103645862 B CN 103645862B
Authority
CN
China
Prior art keywords
region
write
data
thread
read
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.)
Active
Application number
CN201310671498.XA
Other languages
English (en)
Other versions
CN103645862A (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.)
BEIJING TOYOU FEIJI ELECTRONICS Co Ltd
Original Assignee
BEIJING TOYOU FEIJI ELECTRONICS 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 BEIJING TOYOU FEIJI ELECTRONICS Co Ltd filed Critical BEIJING TOYOU FEIJI ELECTRONICS Co Ltd
Priority to CN201310671498.XA priority Critical patent/CN103645862B/zh
Publication of CN103645862A publication Critical patent/CN103645862A/zh
Application granted granted Critical
Publication of CN103645862B publication Critical patent/CN103645862B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及一种更加有效的磁盘阵列初始化方法。该方法包括:将组建磁盘阵列设备的每个存储介质划分成N个区域,每个区域内可包括多个条带,同一区域内,选取一块存储介质作为初始化校验盘,不同区域,选择的初始化校验盘不同;初始化时,从磁盘阵列中初始化校验盘以外的每个存储介质上读取未完成初始化的数据,其中每个存储介质读取的数据块大小相同,且在同一区域;根据磁盘阵列校验算法对读取的多个存储介质的数据进行校验,以生成校验数据,然后将其写入到校验盘的相应位置,以保证上述初始化区域的数据一致性。本发明实现了多个区域并行初始化,不会出现读写交叉,通过区域的设计,大大提高了初始化速度与性能。

Description

一种磁盘阵列初始化性能提升方法
技术领域
本发明涉及存储技术,尤其涉及一种更加有效的磁盘阵列初始化方法,属于计算机存储技术领域。
背景技术
磁盘阵列(RAID)技术为了保证数据的可用性和后续应用访问的性能,在使用之前通常要进行初始化。
磁盘阵列在未初始化的区域中,为了保证写入数据的一致性,通过重构写的方式进行条带写处理。即,当前条带从所有不需要修改的数据块中读取原来的数据,再和本条带中写入位置的新数据块数据校验出新的校验块数据,并将新的数据块数据以及新的校验块数据一并写入当前条带。
RAID(以RAID5为例)在已初始化的区域中,条带数据已经具有一致性,该条带中的每个数据都可通过其他存储介质中同一条带中的数据校验出来。新写入的数据,通过读改写的方式进行条带写处理。即,只读取写入位置的数据块数据和校验块数据,重新经过校验得出新的校验块数据,并将新的数据块数据以及新的校验块数据一并写入当前条带。
现有技术中,RAID(以RAID5为例)初始化的处理方式是以条带为单位的。在初始化时,会先读取每个存储介质的数据,将所有数据块数据与校验块数据一起进行异或运算,判断运算结果,如果为0,则说明该条带数据一致,跳过此条带,继续初始化下一个条带;如果非0,则说明该条带数据不一致,需要使用所有数据块数据校验出新的校验块数据。但因为现有技术RAID校验块数据按照条带大小分布在所有存储介质中,在初始化时,每个存储介质都会有读写操作,导致存储介质读写交叉频繁,限制了初始化速度。
发明内容
本发明提供一种磁盘阵列初始化方法,应用于计算机存储领域存储设备中,解决现有技术存储介质读写交叉频繁,初始化速度受限的问题,具体技术方案为:
步骤一、对存储介质进行区域划分:将组成RAID设备中的每个存储介质划分为N个区域,其中1<=N<=STRIPE_NUM,STRIPE_NUM为条带个数,每个区域包含STRIPE_NUM/N个条带;
步骤二、进行多区域并行初始化,且多区域在并行初始化时,同一存储介质保证一次处理的读写请求足够长,避免读写频繁交叉造成的性能下降;
步骤三、每个区域内部,选择至少一个存储介质为校验块写入盘,其他存储介质为数据块读取盘;
步骤四、进行读写请求判断,若为读请求,则执行步骤五,若为写请求,执行步骤六;
步骤五、读线程用于各区域内初始化读请求的下发:
(1)当初始化开始时,唤醒一个空闲的读线程;
(2)读线程唤醒后,选择一个未被初始化区域,根据初始化位置计算出该位置所在区域号;
(3)计算该区域内校验块数据写入盘号;
(4)从该区域内非校验块数据写入盘上读取数据,其中所有数据的大小相同,记录读请求下发个数;
(5)检查该区域内读请求是否处理完毕,如果是,则唤醒一个空闲写线程,执行步骤六,然后读线程继续下一步;如果不是,则读线程继续下一步;
(6)判断所有区域的读请求是否下发完毕,如果是,则跳转至步骤五(7);如果不是,则返回步骤五(1)继续下一个区域的读请求下发;
(7)读线程停止;
步骤六、写线程用于处理完成读请求的区域写请求的下发,在某一区域数据读取完毕后,写线程负责校验出校验块数据,并写入该区域内的校验盘对应位置,具体处理流程如下:
(1)唤醒一个空闲写线程,第一次被唤醒是由步骤五(5)触发;
(2)扫描一个初始化未完成区域;
(3)判断该区域内读请求计数是否为0,如果是,则使用RAID校验所有读取出来的数据,返回步骤六(1);如果不是,则写线程继续下一步;
(4)判断该区域内是否有数据校验完成,如果是,则向当前区域内校验块写入盘下发写请求,准备将校验出来的数据写入校验盘,返回步骤六(1);如果不是,则写线程继续下一步;
(5)判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步;如果不是,则写线程停止;
(6)判断当前区域初始化是否完成,如果是,则写线程继续下一步;如果不是,则写线程停止;
(7)判断所有区域初始化是否完成,如果是则更新RAID初始化状态,然后初始化结束;如果不是,则写线程停止;
应用写入数据一致性保证:未初始化区域在上层应用写入数据时,采用重构写方式,已初始化区域在上层应用写入数据时,采用读改写方式,保证了初始化时上层应用写入数据的一致性;
初始化数据一致性保证:初始化时校验块写入盘的数据是根据该校验块在RAID中的位置,通过其他盘的数据校验得到;在初始化到上层应用未写入数据区域时,可保证该区域初始化完成后数据的一致性,在初始化到上层应用已写入数据区域时,该区域数据已经具有一致性,即通过其他盘的数据校验得到校验块数据与该校验块写入盘数据一致;
负载均衡算法:通过该算法获取当前初始化区域的校验块写入盘的盘号,保证所有存储介质读取和写入的数据量是一样的。
本发明实现了多个区域并行初始化,不会出现读写交叉,读写请求为异步处理,可保证上层应用写入数据的一致性;
本发明不局限于条带做初始化操作,并可保证读写请求在单个存储介质上是分开的;通过区域的设计,大大提高了初始化速度与性能;还兼顾了负载均衡的考虑,使初始化过程中每个存储介质负载一致;
另外,本发明存储介质并不局限于普通硬盘,还可包括固态硬盘等其他可存储数据的设备。
附图说明
图1为本发明一种RAID初始化性能提升方法的区域划分与读写盘划分图
图2为本发明一种RAID初始化性能提升方法的读处理流程图
图3为本发明一种RAID初始化性能提升方法的写处理流程图
具体实施方式
本发明提出一种新的磁盘阵列初始化性能提升方法,应用于存储设备中,其处理步骤如下:
如图1所示,根据步骤一,将每个RAID中的存储介质划分为N个区域,其中1<=N<=STRIPE_NUM(条带个数),每个区域包含STRIPE_NUM/N个条带,每个区域内选择一个存储介质作为校验块写入盘,区域的划分和校验块所在存储介质的计算通过一个负载均衡算法完成,该算法能保证在一次初始化过程中,每个存储介质的读写负载相同;
根据步骤二,进行多区域并行初始化,RAID创建时,需要创建读线程和写线程,线程个数不仅限于1个,可以以cpu个数作为参照,如当前cpu为4核,可以创建2个读线程,2个写线程;
根据步骤三,每个区域内部,会选中至少一个存储介质为校验块写入盘,其他存储介质为数据块读取盘,如图1所示,区域0中,DiskA、DiskB、DiskC、DiskD为数据块读取盘,DiskE为校验块写入盘;
根据步骤四,进行读写请求判断,若为读请求,如图2所示,根据步骤五,读线程唤醒后,选择一个未被初始化区域0,根据初始化位置计算出该位置所在区域号0,计算该区域内校验块数据写入盘号DiskE,从该区域内非校验块数据写入盘DiskA、DiskB、DiskC、DiskD上分别读取4K数据,并记录该区域内本次读取的位置和本次读取的数据长度,然后通过统计计数计算下发的请求个数4,检查该区域内读请求是否处理完毕,即判断读请求计数是否为0,如果是,则唤醒一个空闲写线程,然后读线程继续下一步,如果不是,则读线程继续判断所有区域的读请求是否下发完毕,如果是,则读线程结束,如果不是,则再次唤醒一个空闲读线程,继续下一个区域的读请求下发;
若步骤四中判断的为写请求,如图3所示,根据步骤六,写线程被唤醒后,扫描所有区域得到一个初始化未完成区域0,判断该区域内读请求计数是否为0,如果是,则使用RAID校验所有读取出来的数据,再次唤醒一个空闲写线程,然后写线程继续下一步,如果不是,则判断该区域内是否有数据校验完成,如果是,则向当前区域内校验块写入盘DiskE下发写请求,准备将校验出来的数据写入校验盘DiskE,再次唤醒一个空闲写线程,然后写线程继续下一步,如果不是,则写线程继续判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步,如果不是,则写线程停止,判断当前区域初始化是否完成,如果是,则写线程继续下一步,如果不是,则写线程停止,判断所有区域初始化是否完成,如果是则更新RAID初始化状态,初始化结束,如果不是,写线程停止。
事实上,上面举的例子中一次读取4k数据,而实际应用环境中,一次读请求读取的数据大小会比这个要大,另外读写线程个数也可以动态调整。
在上述实施方式的基础上再介绍一种优化的实施方式,区域划分时,将每个区域的长度指定为2MB以上即可避免单个存储介质的读写频繁交叉,每次读取的数据长度可以设置为64K,而读写线程数可以设定个数为cpu核数+1,负载均衡算法可以使用与磁盘阵列中校验块的偏移相类似的算法,如区域0的校验块写入磁盘为DiskE,区域1的校验块写入磁盘为DiskD,以此类推。
需要说明的是,首先以上是以RAID5为例进行说明的,然而本发明并不局限于RAID5;其次区域内包含的条带块个数也可以根据实际测试结果动态指定,因为本发明并没有限制单个存储介质可以划分多少个区域,只要能够保证每个区域内的数据一致即可;此外,负载均衡算法也只是举了其中一种方法。
以上所述仅为本发明的较佳实施方法而已,并不用以限制本发明,凡在本发明的设计思路内,不管里何种RAID级别,何种类型存储介质,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (2)

1.一种磁盘阵列初始化性能提升方法,其特征在于:
步骤一、对存储介质进行区域划分:将组成RAID设备中的每个存储介质划分为N个区域,其中1<=N<=STRIPE_NUM,STRIPE_NUM为条带个数,每个区域包含STRIPE_NUM/N个条带,区域的划分和校验块所在存储介质的计算通过一个负载均衡算法完成,该算法能保证在一次初始化过程中,每个存储介质的读写负载相同;
步骤二、进行多区域并行初始化,且多区域在并行初始化时,同一存储介质保证一次处理的读写请求足够长,避免读写频繁交叉造成的性能下降;
步骤三、每个区域内部,选择至少一个存储介质为校验块写入盘,其他存储介质为数据块读取盘;
步骤四、进行读写请求判断,若为读请求,则执行步骤五,若为写请求,执行步骤六;
步骤五、读线程用于各区域内初始化读请求的下发:
(1)当初始化开始时,唤醒一个空闲的读线程;
(2)读线程唤醒后,选择一个未被初始化区域,根据初始化位置计算出该位置所在区域号;
(3)计算该区域内校验块数据写入盘号;
(4)从该区域内非校验块数据写入盘上读取数据,其中所有数据的大小相同,记录读请求下发个数;
(5)检查该区域内读请求是否处理完毕,如果是,则唤醒一个空闲写线程,执行步骤六,然后读线程继续下一步;如果不是,则读线程继续下一步;
(6)判断所有区域的读请求是否下发完毕,如果是,则跳转至步骤五(7);如果不是,则返回步骤五(1)继续下一个区域的读请求下发;
(7)读线程停止;
步骤六、写线程用于处理完成读请求的区域写请求的下发,在某一区域数据读取完毕后,写线程负责校验出校验块数据,并写入该区域内的校验盘对应位置,具体处理流程如下:
(1)唤醒一个空闲写线程,第一次被唤醒是由步骤五(5)触发;
(2)扫描一个初始化未完成区域;
(3)判断该区域内读请求计数是否为0,如果是,则使用RAID校验所有读取出来的数据,返回步骤六(1);如果不是,则写线程继续下一步;
(4)判断该区域内是否有数据校验完成,如果是,则向当前区域内校验块写入盘下发写请求,准备将校验出来的数据写入校验盘,返回步骤六(1);如果不是,则写线程继续下一步;
(5)判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步;如果不是,则写线程停止;
(6)判断当前区域初始化是否完成,如果是,则写线程继续下一步;如果不是,则写线程停止;
(7)判断所有区域初始化是否完成,如果是则更新RAID初始化状态,然后初始化结束;如果不是,则写线程停止。
2.如权利要求1所述的一种磁盘阵列初始化性能提升方法,其特征在于,未初始化区域在上层应用写入数据时,采用重构写方式,已初始化区域在上层应用写入数据时,采用读改写方式。
CN201310671498.XA 2013-12-12 2013-12-12 一种磁盘阵列初始化性能提升方法 Active CN103645862B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310671498.XA CN103645862B (zh) 2013-12-12 2013-12-12 一种磁盘阵列初始化性能提升方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310671498.XA CN103645862B (zh) 2013-12-12 2013-12-12 一种磁盘阵列初始化性能提升方法

Publications (2)

Publication Number Publication Date
CN103645862A CN103645862A (zh) 2014-03-19
CN103645862B true CN103645862B (zh) 2016-05-18

Family

ID=50251089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310671498.XA Active CN103645862B (zh) 2013-12-12 2013-12-12 一种磁盘阵列初始化性能提升方法

Country Status (1)

Country Link
CN (1) CN103645862B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468998B (zh) * 2014-09-03 2019-01-29 腾讯科技(深圳)有限公司 数据保护方法、数据保护装置以及固态硬盘存储系统
CN104850504B (zh) * 2015-05-26 2017-12-22 华中科技大学 一种加速基于xor的raid‑6编解码过程的方程并行计算方法
CN108075989B (zh) * 2016-11-11 2021-05-28 南京南瑞继保电气有限公司 一种基于可扩展协议的负载均衡网络中间件实现方法
CN109189340B (zh) * 2018-08-29 2021-11-09 上海兆芯集成电路有限公司 用于存取独立硬盘冗余阵列的系统与方法
CN111090391B (zh) * 2019-11-08 2022-07-26 苏州浪潮智能科技有限公司 一种提高固态硬盘阵列性能的方法与服务器
CN115098046B (zh) * 2022-08-26 2023-01-24 苏州浪潮智能科技有限公司 磁盘阵列初始化方法、系统、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
US7711897B1 (en) * 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
CN101847081A (zh) * 2009-03-24 2010-09-29 纬创资通股份有限公司 初始化磁盘阵列系统的方法和电子装置及磁盘阵列系统
CN102033716A (zh) * 2010-12-01 2011-04-27 北京同有飞骥科技股份有限公司 一种双磁盘容错的节能型磁盘阵列的构建方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711897B1 (en) * 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
CN101566924A (zh) * 2008-04-23 2009-10-28 中兴通讯股份有限公司 一种磁盘阵列的数据读写方法
CN101847081A (zh) * 2009-03-24 2010-09-29 纬创资通股份有限公司 初始化磁盘阵列系统的方法和电子装置及磁盘阵列系统
CN102033716A (zh) * 2010-12-01 2011-04-27 北京同有飞骥科技股份有限公司 一种双磁盘容错的节能型磁盘阵列的构建方法

Also Published As

Publication number Publication date
CN103645862A (zh) 2014-03-19

Similar Documents

Publication Publication Date Title
CN103645862B (zh) 一种磁盘阵列初始化性能提升方法
US20200393974A1 (en) Method of detecting read hotness and degree of randomness in solid-state drives (ssds)
US8621141B2 (en) Method and system for wear leveling in a solid state drive
US10223010B2 (en) Dynamic storage device provisioning
CN104461391B (zh) 一种存储设备元数据管理处理方法及系统
US9317214B2 (en) Operating a memory management controller
US10481979B2 (en) Storage system, computing system, and methods thereof
CN103077121B (zh) 一种闪存存储设备中数据管理的方法及装置
US20140359226A1 (en) Allocation of cache to storage volumes
US10324833B2 (en) Memory controller, data storage device, and memory control method
CN103473266A (zh) 固态硬盘及其删除重复数据的方法
CN110515549B (zh) 一种数据迁移方法及装置
CN112286838A (zh) 存储设备可配置的映射粒度系统
CN103399783A (zh) 虚拟机的镜像文件的存储方法和装置
US9390751B1 (en) Reducing overcounting of track-level damage caused by adjacent-track and far-track interference
CN104391652A (zh) 一种硬盘的损耗均衡方法及装置
US9129627B1 (en) Sector-based write operation
CN107132996B (zh) 基于智能精简配置的存储方法、模块及系统
US20170060421A1 (en) System and Method to Support Shingled Magnetic Recording Hard Drives in a Storage System
CN102436356B (zh) 写页面空间分配方法和装置
Le et al. SMR disks for mass storage systems
CN103064640A (zh) 应用于nandflash存储设备的快速读写方法
US11983431B2 (en) Read-disturb-based read temperature time-based attenuation system
US11928354B2 (en) Read-disturb-based read temperature determination system
US11922035B2 (en) Read-disturb-based read temperature adjustment system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant