CN103645862A - 一种磁盘阵列初始化性能提升方法 - Google Patents
一种磁盘阵列初始化性能提升方法 Download PDFInfo
- Publication number
- CN103645862A CN103645862A CN201310671498.XA CN201310671498A CN103645862A CN 103645862 A CN103645862 A CN 103645862A CN 201310671498 A CN201310671498 A CN 201310671498A CN 103645862 A CN103645862 A CN 103645862A
- Authority
- CN
- China
- Prior art keywords
- write
- region
- initialization
- data
- thread
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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)判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(6)判断当前区域初始化是否完成,如果是,则写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(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)判断该区域内是否有写请求处理完成,如果是,则更新当前区域初始化状态和初始化位置信息,然后写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(6)判断当前区域初始化是否完成,如果是,则写线程继续下一步;如果不是,则写线程停止,跳转至步骤六(8);
(7)判断所有区域初始化是否完成,如果是则更新RAID初始化状态,然后初始化结束;如果不是,则写线程停止。
2.如权利要求1所述的一种磁盘阵列初始化性能提升方法,其特征在于,未初始化区域在上层应用写入数据时,采用重构写方式,已初始化区域在上层应用写入数据时,采用读改写方式。
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 true CN103645862A (zh) | 2014-03-19 |
CN103645862B 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) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850504A (zh) * | 2015-05-26 | 2015-08-19 | 华中科技大学 | 一种加速基于xor的raid-6编解码过程的方程并行计算方法 |
CN105468998A (zh) * | 2014-09-03 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 数据保护方法、数据保护装置以及固态硬盘存储系统 |
CN108075989A (zh) * | 2016-11-11 | 2018-05-25 | 南京南瑞继保电气有限公司 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
CN109189340A (zh) * | 2018-08-29 | 2019-01-11 | 上海兆芯集成电路有限公司 | 用于存取独立硬盘冗余阵列的系统与方法 |
CN111090391A (zh) * | 2019-11-08 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种提高固态硬盘阵列性能的方法与服务器 |
CN112463333A (zh) * | 2020-12-03 | 2021-03-09 | 北京浪潮数据技术有限公司 | 一种基于多线程并发的数据存取方法、装置和介质 |
WO2024040857A1 (zh) * | 2022-08-26 | 2024-02-29 | 苏州元脑智能科技有限公司 | 磁盘阵列初始化方法、系统、电子设备及存储介质 |
CN118069378A (zh) * | 2024-04-22 | 2024-05-24 | 山东云海国创云计算装备产业创新中心有限公司 | 位置的确定方法及装置、存储介质、电子设备 |
Citations (4)
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 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
-
2013
- 2013-12-12 CN CN201310671498.XA patent/CN103645862B/zh active Active
Patent Citations (4)
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 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468998A (zh) * | 2014-09-03 | 2016-04-06 | 腾讯科技(深圳)有限公司 | 数据保护方法、数据保护装置以及固态硬盘存储系统 |
CN105468998B (zh) * | 2014-09-03 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 数据保护方法、数据保护装置以及固态硬盘存储系统 |
CN104850504B (zh) * | 2015-05-26 | 2017-12-22 | 华中科技大学 | 一种加速基于xor的raid‑6编解码过程的方程并行计算方法 |
CN104850504A (zh) * | 2015-05-26 | 2015-08-19 | 华中科技大学 | 一种加速基于xor的raid-6编解码过程的方程并行计算方法 |
CN108075989B (zh) * | 2016-11-11 | 2021-05-28 | 南京南瑞继保电气有限公司 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
CN108075989A (zh) * | 2016-11-11 | 2018-05-25 | 南京南瑞继保电气有限公司 | 一种基于可扩展协议的负载均衡网络中间件实现方法 |
US11099739B2 (en) | 2018-08-29 | 2021-08-24 | Shanghai Zhaoxin Semiconductor Co., Ltd. | System and method for accessing redundant array of independent disks |
CN109189340A (zh) * | 2018-08-29 | 2019-01-11 | 上海兆芯集成电路有限公司 | 用于存取独立硬盘冗余阵列的系统与方法 |
CN109189340B (zh) * | 2018-08-29 | 2021-11-09 | 上海兆芯集成电路有限公司 | 用于存取独立硬盘冗余阵列的系统与方法 |
CN111090391A (zh) * | 2019-11-08 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种提高固态硬盘阵列性能的方法与服务器 |
CN111090391B (zh) * | 2019-11-08 | 2022-07-26 | 苏州浪潮智能科技有限公司 | 一种提高固态硬盘阵列性能的方法与服务器 |
CN112463333A (zh) * | 2020-12-03 | 2021-03-09 | 北京浪潮数据技术有限公司 | 一种基于多线程并发的数据存取方法、装置和介质 |
WO2024040857A1 (zh) * | 2022-08-26 | 2024-02-29 | 苏州元脑智能科技有限公司 | 磁盘阵列初始化方法、系统、电子设备及存储介质 |
CN118069378A (zh) * | 2024-04-22 | 2024-05-24 | 山东云海国创云计算装备产业创新中心有限公司 | 位置的确定方法及装置、存储介质、电子设备 |
CN118069378B (zh) * | 2024-04-22 | 2024-07-26 | 山东云海国创云计算装备产业创新中心有限公司 | 位置的确定方法及装置、存储介质、电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103645862B (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103645862A (zh) | 一种磁盘阵列初始化性能提升方法 | |
US10248362B2 (en) | Data management for a data storage device | |
CN104461391B (zh) | 一种存储设备元数据管理处理方法及系统 | |
WO2018019119A1 (zh) | 一种面向连续数据存储的动态局部并行数据布局方法及装置 | |
US11599304B2 (en) | Data aggregation in ZNS drive | |
US10481979B2 (en) | Storage system, computing system, and methods thereof | |
CN111679795B (zh) | 无锁并发io处理方法及其装置 | |
CN105280197A (zh) | 使用区段重定位对数据存储装置进行数据管理 | |
CN107665096B (zh) | 加权数据分条 | |
US20080270719A1 (en) | Method and system for efficient snapshot operations in mass-storage arrays | |
CN102880428A (zh) | 分布式独立磁盘冗余阵列的创建方法及装置 | |
CN103699457A (zh) | 基于条带化的磁盘阵列修复方法及装置 | |
CN114730604A (zh) | 动态zns开放分区活动限制 | |
US10579540B2 (en) | Raid data migration through stripe swapping | |
CN104778018A (zh) | 基于非对称混合型磁盘镜像的宽条带磁盘阵列及存储方法 | |
CN110515549B (zh) | 一种数据迁移方法及装置 | |
US20080320210A1 (en) | Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance | |
EP2344954A1 (en) | A loose coupling between raid volumes and drive groups for improved performance | |
CN103473266A (zh) | 固态硬盘及其删除重复数据的方法 | |
CN102169419A (zh) | 基于sata控制器的raid数据块拆分、组装方法 | |
CN101997919B (zh) | 一种存储资源的管理方法及管理装置 | |
CN103399783A (zh) | 虚拟机的镜像文件的存储方法和装置 | |
US20170060421A1 (en) | System and Method to Support Shingled Magnetic Recording Hard Drives in a Storage System | |
CN102436356B (zh) | 写页面空间分配方法和装置 | |
CN107132996B (zh) | 基于智能精简配置的存储方法、模块及系统 |
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 |