CN101840312A - 一种用于多核处理器的raid5写数据方法及装置 - Google Patents

一种用于多核处理器的raid5写数据方法及装置 Download PDF

Info

Publication number
CN101840312A
CN101840312A CN200910244570A CN200910244570A CN101840312A CN 101840312 A CN101840312 A CN 101840312A CN 200910244570 A CN200910244570 A CN 200910244570A CN 200910244570 A CN200910244570 A CN 200910244570A CN 101840312 A CN101840312 A CN 101840312A
Authority
CN
China
Prior art keywords
raid5
data
cpu
processing threads
link table
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
Application number
CN200910244570A
Other languages
English (en)
Other versions
CN101840312B (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.)
Innovation Technology Co., Ltd.
Shenzhen Innovation Software Technology Co., Ltd.
Original Assignee
CHUANGXINKE SOFTWARE TECHNOLOGY (SHENZHEN) Co Ltd
Innovation And Technology Storage Technology 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 CHUANGXINKE SOFTWARE TECHNOLOGY (SHENZHEN) Co Ltd, Innovation And Technology Storage Technology Co Ltd filed Critical CHUANGXINKE SOFTWARE TECHNOLOGY (SHENZHEN) Co Ltd
Priority to CN2009102445704A priority Critical patent/CN101840312B/zh
Publication of CN101840312A publication Critical patent/CN101840312A/zh
Application granted granted Critical
Publication of CN101840312B publication Critical patent/CN101840312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种用于多核处理器的RAID5写数据方法,包括如下步骤:创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;接收到写请求数据,将请求数据加入到等待处理的数据链表中;多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。本发明还公开了一种RAID2写数据装置。本发明方案通过创建多于一个的md_raid5处理进程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上,这样多个CPU可以并行写入数据,这样就可以发挥出高性能多核处理器的性能优势。

Description

一种用于多核处理器的RAID5写数据方法及装置
技术领域
本发明涉及数据存储技术领域,特别涉及磁盘阵列存储技术,尤其涉及一种用于多核处理器的RAID5写数据方法及装置。
背景技术
独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)技术将多个单独的物理硬盘以特定方式组合成一个逻辑硬盘,从而提高了硬盘的读写性能和数据安全性。根据不同的组合方式可以分为不同的RAID级别。常用RAID级别有:0、1、2、3、4、5、6、01、10等。
RAID 5是以数据的校验位来保证数据的安全,但它不是以单独某一个硬盘来存放数据的校验位,而是将数据段的校验位交替存放于各个硬盘上。Raid5数据在磁盘中存放结构如图1所示。图1中示出了由四个磁盘组成的磁盘阵列,每一个圆柱体表示一个磁盘;P(parity)表示校验位,D(data)表示数据段,校验数据的计算非常简单,就是异或(xor),在图1所示例子中,每三个数据段的异或结果作为这三个数据段的校验位。例如,校验位P1是数据段D1、D2、D3的异或结果,即 P 1 = D 1 ⊕ D 2 ⊕ D 3 . 这样任何一个硬盘损坏,都可以根据其它硬盘上的校验位以及数据段来重建损坏的数据。
Linux操作系统中实现了raid5功能,实现方法是一个raid5磁盘阵列对应一个md_raid5线程,该线程负责这个raid5磁盘阵列的相关数据校验值的计算以及把相应数据写进磁盘。当用户对磁盘阵列有写请求时,该写请求就会加入到相应的请求链表中去,md_raid5线程会对请求链表中需要处理的请求按加入链表中的顺序进行相应处理。
目前,很多存储服务器都是采用高性能多核(CPU)多核处理器,但现有的Linux操作系统实现的只是单线程处理raid磁盘阵列。单个线程只能在单个CPU中运行,所以不能很好发挥出高性能多核处理器的性能优势。
发明内容
有鉴于此,本发明的目的在于,提出一种用于多核处理器的RAID5写数据方法及装置,可以充分发挥Linux操作系统下的多核处理器的存储服务器的性能优势。
本发明实施例提出的一种用于多核处理器的RAID5写数据方法,包括如下步骤:
创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;
接收到写请求数据,将请求数据加入到等待处理的数据链表中;
多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。
较佳地,所述创建多于一个的md_raid5处理线程为:获取多核处理器的CPU数目n,创建n个md_raid5处理线程,n为大于1的自然数。
所述数据链表带有互斥机制,确保同一时刻只有一个md_raid5线程可以获取数据链表中等待处理的数据或者添加数据到数据链表中。
所述多个md_raid5处理线程并行处理所述数据链表中等待处理的数据包括:
第一md_raid5处理线程处理数据链表中的第一组数据的同时,第二md_raid5处理线程处理数据链表中的第二组数据。
其特征在于,该方法进一步包括:
分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
将平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则在该CPU上新建一个md_raid5进程。
本发明实施例还提出一种RAID5写数据装置,该装置设置于采用Linux操作系统且使用多核处理器的RAID5磁盘阵列中,该装置包括:
线程管理模块,用于创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;
数据链表模块,用于以链表的形式暂存待写入的数据;
写请求接收模块,用于接收到写请求数据,将请求数据加入到等待处理的数据链表中;
并行处理模块,用于调用已创建的md_raid5处理线程并行处理所述数据链表中等待处理的数据。
所述数据链表模块对链表中的数据处理设置互斥机制,确保同一时刻只能有一个md_raid5获取或者加入数据到链表中。
所述线程管理模块进一步包括:
负载统计单元,用于分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
比较单元,用于将所述平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则线程管理模块关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则线程管理模块在该CPU上新建一个md_raid5进程。
从以上技术方案可以看出,通过创建多于一个的md_raid5处理进程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上,这样多个CPU可以并行写入数据,这样就可以发挥出高性能多核处理器的性能优势。
附图说明
图1为由四个磁盘组成的磁盘阵列中,数据段和校验位的存储位置示意图;
图2为本发明实施例的Linux操作系统下用于多核处理器的RAID5写数据流程图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
图2示出了本发明实施例提出的Linux操作系统下用于多核处理器的RAID5写数据流程,包括如下步骤:
步骤S201:当创建或激活某个raid5磁盘阵列时,获取多核处理器中的CPU数目。该步骤为可选步骤。
步骤S202:根据CPU数目,创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上。处理线程的总数小于或等于CPU数目。
假设多核处理器CPU的数目为n,n为自然数,则可以创建2至n个md_raid5处理线程,每个CPU上运行0到1个md_raid5处理线程。
步骤S203:接收到写请求数据,将请求数据加入到等待处理的数据链表中。
步骤S204:多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。
比如需要处理的数据链表中有多个需要处理的数据,第一个md_raid5_0线程在处理数据链表中第一组数据的同时,而第二个md_raid5_1可以获取并处理数据链表中第二组数据,如果设置更多线程以此类推。为了避免多线程并发处理同一组数据出现竞态,通过使用自旋锁方式保护数据链表中数据安全,使某一时刻只有一个线程可以从数据链表中获取数据。
自旋锁是现有技术中专为防止多核处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。自旋锁使数据链表带有互斥机制,确保同一时刻只有一个md_raid5线程可以获取数据链表中等待处理的数据或者添加数据到数据链表中。
在上述过程中,还可以根据需要动态调整md_raid5处理线程数量。具体做法为:
分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
将平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则在该CPU上新建一个md_raid5进程;其他情况不执行任何操作。
本发明实施例还提出一种RAID5写数据装置,该装置设置于采用Linux操作系统且使用多核处理器的RAID5磁盘阵列中,该装置包括:
线程管理模块,用于创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;
数据链表模块,用于以链表的形式暂存待写入的数据;
写请求接收模块,用于接收到写请求数据,将请求数据加入到等待处理的数据链表中;
并行处理模块,用于调用已创建的md_raid5处理线程并行处理所述数据链表中等待处理的数据。
其中,所述数据链表模块用于对数据链表中的数据设置自旋锁。
较佳地,所述线程管理模块还可以进一步包括:
负载统计单元,用于分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
比较单元,用于将所述平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则线程管理模块关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则线程管理模块在该CPU上新建一个md_raid5进程。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种用于多核处理器的RAID5写数据方法,其特征在于,包括如下步骤:
创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;
接收到写请求数据,将请求数据加入到等待处理的数据链表中;
多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。
2.根据权利要求1所述的方法,其特征在于,所述创建多于一个的md_raid5处理线程为:获取多核处理器的CPU数目n,创建n个md_raid5处理线程,n为大于1的自然数。
3.根据权利要求1所述的方法,其特征在于,所述数据链表带有互斥机制,确保同一时刻只有一个md_raid5线程可以获取数据链表中等待处理的数据或者添加数据到数据链表中。
4.根据权利要求1所述的方法,其特征在于,所述多个md_raid5处理线程并行处理所述数据链表中等待处理的数据包括:
第一md_raid5处理线程处理数据链表中的第一组数据的同时,第二md_raid5处理线程处理数据链表中的第二组数据。
5.根据权利要求1至4任一项所述的方法,其特征在于,该方法进一步包括:
分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
将平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则在该CPU上新建一个md_raid5进程。
6.一种RAID5写数据装置,其特征在于,该装置设置于采用Linux操作系统且使用多核处理器的RAID5磁盘阵列中,该装置包括:
线程管理模块,用于创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;
数据链表模块,用于以链表的形式暂存待写入的数据;
写请求接收模块,用于接收到写请求数据,将请求数据加入到等待处理的数据链表中;
并行处理模块,用于调用已创建的md_raid5处理线程并行处理所述数据链表中等待处理的数据。
7.根据权利要求6所述的装置,其特征在于,所述数据链表模块对链表中的数据处理设置互斥机制,确保同一时刻只能有一个md_raid5获取或者加入数据到链表中。
8.根据权利要求6或7所述的装置,其特征在于,所述线程管理模块进一步包括:
负载统计单元,用于分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时长内的平均负载率;
比较单元,用于将所述平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则线程管理模块关闭该md_raid5处理线程;若平均负载率低于最低负载阈值,且本CPU上没有md_raid5处理线程,则线程管理模块在该CPU上新建一个md_raid5进程。
CN2009102445704A 2009-12-31 2009-12-31 一种用于多核处理器的raid5写数据方法及装置 Active CN101840312B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102445704A CN101840312B (zh) 2009-12-31 2009-12-31 一种用于多核处理器的raid5写数据方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102445704A CN101840312B (zh) 2009-12-31 2009-12-31 一种用于多核处理器的raid5写数据方法及装置

Publications (2)

Publication Number Publication Date
CN101840312A true CN101840312A (zh) 2010-09-22
CN101840312B CN101840312B (zh) 2012-01-11

Family

ID=42743707

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102445704A Active CN101840312B (zh) 2009-12-31 2009-12-31 一种用于多核处理器的raid5写数据方法及装置

Country Status (1)

Country Link
CN (1) CN101840312B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980168A (zh) * 2010-11-05 2011-02-23 北京云快线软件服务有限公司 一种动态分块传输方法及装置
CN102385542A (zh) * 2011-12-13 2012-03-21 云海创想信息技术(无锡)有限公司 一种raid0数据备份的方法及装置
CN102902512A (zh) * 2012-08-31 2013-01-30 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
CN107025064A (zh) * 2016-01-30 2017-08-08 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法
CN107203330A (zh) * 2016-03-17 2017-09-26 北京忆恒创源科技有限公司 一种面向读写数据流的闪存数据分布方法
CN107526551A (zh) * 2017-09-14 2017-12-29 郑州云海信息技术有限公司 一种cpu多核的io请求处理方法、装置及设备
CN108986253A (zh) * 2018-06-29 2018-12-11 百度在线网络技术(北京)有限公司 用于存储数据的方法、装置、设备和计算机可读存储介质
CN111090391A (zh) * 2019-11-08 2020-05-01 苏州浪潮智能科技有限公司 一种提高固态硬盘阵列性能的方法与服务器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7080379B2 (en) * 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
EP1936498A1 (en) * 2006-12-21 2008-06-25 International Business Machines Corporation A method and system to manage memory accesses from multithread programs on multiprocessor systems
CN101196935B (zh) * 2008-01-03 2010-06-09 中兴通讯股份有限公司 一种创建索引库的系统及其方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101980168A (zh) * 2010-11-05 2011-02-23 北京云快线软件服务有限公司 一种动态分块传输方法及装置
CN102385542A (zh) * 2011-12-13 2012-03-21 云海创想信息技术(无锡)有限公司 一种raid0数据备份的方法及装置
CN102902512A (zh) * 2012-08-31 2013-01-30 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
CN102902512B (zh) * 2012-08-31 2015-12-16 浪潮电子信息产业股份有限公司 一种基于多线程编程及消息队列的多线程并行处理方法
CN107025064A (zh) * 2016-01-30 2017-08-08 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法
CN107025064B (zh) * 2016-01-30 2019-12-03 北京忆恒创源科技有限公司 一种低延迟高iops的数据访问方法
CN107203330A (zh) * 2016-03-17 2017-09-26 北京忆恒创源科技有限公司 一种面向读写数据流的闪存数据分布方法
CN107203330B (zh) * 2016-03-17 2021-03-23 北京忆恒创源科技有限公司 一种面向读写数据流的闪存数据分布方法
CN107526551A (zh) * 2017-09-14 2017-12-29 郑州云海信息技术有限公司 一种cpu多核的io请求处理方法、装置及设备
CN108986253A (zh) * 2018-06-29 2018-12-11 百度在线网络技术(北京)有限公司 用于存储数据的方法、装置、设备和计算机可读存储介质
CN111090391A (zh) * 2019-11-08 2020-05-01 苏州浪潮智能科技有限公司 一种提高固态硬盘阵列性能的方法与服务器
CN111090391B (zh) * 2019-11-08 2022-07-26 苏州浪潮智能科技有限公司 一种提高固态硬盘阵列性能的方法与服务器

Also Published As

Publication number Publication date
CN101840312B (zh) 2012-01-11

Similar Documents

Publication Publication Date Title
CN101840312B (zh) 一种用于多核处理器的raid5写数据方法及装置
US20210342225A1 (en) Data Reconstruction in Distributed Storage Systems
US9823980B2 (en) Prioritizing data reconstruction in distributed storage systems
US10346245B2 (en) Data storage system and data storage method
US8977893B2 (en) Accelerated rebuild and zero time rebuild in raid systems
US9811416B2 (en) Memory access method and apparatus for message-type memory module
US9513992B2 (en) Method and apparatus to perform concurrent read and write memory operations
US10430336B2 (en) Lock-free raid implementation in multi-queue architecture
KR20160039544A (ko) 실시간 분석을 지원하는 인-메모리 팝 카운트
US9092349B2 (en) Storage of codeword portions
US11061772B2 (en) FPGA acceleration system for MSR codes
CN106844098A (zh) 一种基于十字交叉纠删编码的快速数据恢复方法及系统
KR102646619B1 (ko) 컴포지트 메모리 장치를 포함하는 전자 장치에 파일 시스템을 제공하는 시스템 및 방법
Duan et al. CoREC: Scalable and resilient in-memory data staging for in-situ workflows
US11275518B2 (en) System and method for implementing heterogeneous media types with raid
CN105843562B (zh) 数据重建的方法及装置
US9229812B2 (en) Layered failure protection scheme for protecting destaged data units
CN206833432U (zh) 一种分布式数据存储系统
Balasubramonian Making the case for feature-rich memory systems: The march toward specialized systems
US20240111432A1 (en) Erasure coding implementation with reduced parity calculation overhead
US11209990B2 (en) Apparatus and method of allocating data segments in storage regions of group of storage units
US11157363B2 (en) Distributed raid storage-device-assisted data rebuild system
CN107577551A (zh) 一种固态硬盘写失败处理方法及系统
WO2023274531A1 (en) Data storage system and method of managing the data storage system
Curry A GPU-Based Storage System.

Legal Events

Date Code Title Description
C06 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
CP03 Change of name, title or address

Address after: Room 505, Taixing Building, 11 Garden East Road, Haidian District, Beijing, 100191

Co-patentee after: Chuangxinke Software Technology (Shenzhen) Co., Ltd.

Patentee after: Innovation Technology Co., Ltd.

Address before: 100083 8th Floor of First Enjoyment Science and Technology Building, 51 College Road, Haidian District, Beijing

Co-patentee before: Chuangxinke Software Technology (Shenzhen) Co., Ltd.

Patentee before: Innovation and Technology Storage Technology Co., Ltd.

CP03 Change of name, title or address
CP01 Change in the name or title of a patent holder

Address after: Room 505, Taixing Building, 11 Garden East Road, Haidian District, Beijing, 100191

Co-patentee after: Shenzhen Innovation Software Technology Co., Ltd.

Patentee after: Innovation Technology Co., Ltd.

Address before: Room 505, Taixing Building, 11 Garden East Road, Haidian District, Beijing, 100191

Co-patentee before: Chuangxinke Software Technology (Shenzhen) Co., Ltd.

Patentee before: Innovation Technology Co., Ltd.

CP01 Change in the name or title of a patent holder