一种用于多核处理器的RAID5写数据方法及装置制造方法及图纸

技术编号:4272953 阅读:234 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种用于多核处理器的RAID5写数据方法,包括如下步骤:创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;接收到写请求数据,将请求数据加入到等待处理的数据链表中;多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。本发明专利技术还公开了一种RAID2写数据装置。本发明专利技术方案通过创建多于一个的md_raid5处理进程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上,这样多个CPU可以并行写入数据,这样就可以发挥出高性能多核处理器的性能优势。

【技术实现步骤摘要】

本专利技术涉及数据存储
,特别涉及磁盘阵列存储技术,尤其涉及一种用于 多核处理器的RAID5写数据方法及装置。
技术介绍
独立冗余磁盘阵列(Redundant Array of Independent Disk, RAID)技术将多个 单独的物理硬盘以特定方式组合成一个逻辑硬盘,从而提高了硬盘的读写性能和数据安全 性。根据不同的组合方式可以分为不同的RAID级别。常用RAID级别有0、1、2、3、4、5、6、 OlUO 等。RAID 5是以数据的校验位来保证数据的安全,但它不是以单独某一个硬盘来存放 数据的校验位,而是将数据段的校验位交替存放于各个硬盘上。Raid5数据在磁盘中存放 结构如图1所示。图1中示出了由四个磁盘组成的磁盘阵列,每一个圆柱体表示一个磁盘; P(parity)表示校验位,D(data)表示数据段,校验数据的计算非常简单,就是异或(xor), 在图1所示例子中,每三个数据段的异或结果作为这三个数据段的校验位。例如,校验位Pl 是数据段D1、D2、D3的异或结果,即Pl=Dl D2 D3。这样任何一个硬盘损坏,都可 以根据其它硬盘上的校验位以及数据段来重建损坏的数据。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,创建η个md_raid5处理线程,η为大于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的数目为η,η为自然数,则可以创建2至η个md_raid5处理 线程,每个CPU上运行0到1个md_raid5处理线程。步骤S203 接收到写请求数据,将请求数据加入到等待处理的数据链表中。步骤S204 多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。比如需要处理的数据链表中有多个需要处理的数据,第一个md_raid5_0线程在 处理数据链表中第一组数据的同时,而第二个md_raid5_l可以获取并处理数据链表中第 二组数据,如果设置更多线程以此类推。为了避免多线程并发处理同一组数据出现竞态,通 过使用自旋锁方式保护数据链表中数据安全,使某一时刻只有一个线程可以从数据链表中 获取数据。自旋锁是现有技术中专为防止多核处理器并发而引入的一种锁,它在内核中大 量应用于中断处理等部分。自旋锁使数据链表带有互斥机制,确保同一时刻只有一个md_ raid5线程可以获取数据链表中等待处理的数据或者添加数据到数据链表中。在上述过程中,还可以根据需要动态调整md_raid5处理线程数量。具体做法为分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特 定时长内的平均负载率;将平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率 高于最高负载阈值,且本CPU上有一个md_raid5处理线程,则关闭该md_raid5处理线程; 若平均本文档来自技高网
...

【技术保护点】
一种用于多核处理器的RAID5写数据方法,其特征在于,包括如下步骤:创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;接收到写请求数据,将请求数据加入到等待处理的数据链表中;多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。

【技术特征摘要】
一种用于多核处理器的RAID5写数据方法,其特征在于,包括如下步骤创建多于一个的md_raid5处理线程,将每个md_raid5处理线程分别指定在多核处理器的一个CPU上;接收到写请求数据,将请求数据加入到等待处理的数据链表中;多个md_raid5处理线程并行处理所述数据链表中等待处理的数据。2.根据权利要求1所述的方法,其特征在于,所述创建多于一个的md_raid5处理线程 为获取多核处理器的CPU数目n,创建η个md_raid5处理线程,η为大于1的自然数。3.根据权利要求1所述的方法,其特征在于,所述数据链表带有互斥机制,确保同一时 刻只有一个md_raid5线程可以获取数据链表中等待处理的数据或者添加数据到数据链表 中。4.根据权利要求1所述的方法,其特征在于,所述多个md_raid5处理线程并行处理所 述数据链表中等待处理的数据包括第一 md_raid5处理线程处理数据链表中的第一组数据的同时,第二 md_raid5处理线 程处理数据链表中的第二组数据。5.根据权利要求1至4任一项所述的方法,其特征在于,该方法进一步包括分别计算并实时更新多核处理器的每个CPU上的负载率,并统计每个CPU最近特定时 长内的平均负载率;将平均负载率与预先设置的最高负载阈值以及最低负载阈值比较,若平均负载率高于 最高负载阈值,且本CPU上有一个md_raid5处理线程,则关闭该md_raid5处理线程;若平 均负载率低于最低负载阈...

【专利技术属性】
技术研发人员:金振成
申请(专利权)人:创新科存储技术有限公司创新科软件技术深圳有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利