一种条带单元分配方法、装置、计算机设备及存储介质转让专利

申请号 : CN202311426778.4

文献号 : CN117149098B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李飞龙马艳许永良王磊康佳孙明刚

申请人 : 苏州元脑智能科技有限公司

摘要 :

本发明涉及计算机技术领域,公开了一种条带单元分配方法、装置、计算机设备及存储介质,方法应用于磁盘阵列控制器,包括:获取磁盘阵列中各个磁盘分区的数据读写速度,磁盘分区是磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;获取磁盘阵列中各条带单元的条带访问率;根据预配置的所述条带访问率和所述数据读写速度之间的映射关系,构建条带单元的分配原则,其中,所述映射关系用以表示所述条带访问率越高,所述数据读写速度越快;按照所述分配原则,将各个条带单元分配到各个磁盘分区中。本发明提高了磁盘阵列I/O读写性能。

权利要求 :

1.一种条带单元分配方法,其特征在于,应用于磁盘阵列控制器,所述方法包括:获取磁盘阵列中各个磁盘分区的数据读写速度,所述磁盘分区是所述磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;

获取磁盘阵列中各条带单元的条带访问率;

根据预配置的所述条带访问率和所述数据读写速度之间的映射关系,构建条带单元的分配原则,其中,所述映射关系用以表示所述条带访问率越高,所述数据读写速度越快;

按照所述分配原则,将各个条带单元分配到各个磁盘分区中;

所述获取磁盘阵列中各条带单元的条带访问率,包括:根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率;

所述根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率,包括:在当前周期内,当当前条带单元被访问时,记录访问时间戳到所述当前条带单元对应的时间戳队列;当所述时间戳队列存满时,利用所述时间戳队列中的时间戳平均时间间隔更新前一周期对应的热度值,并清空所述时间戳队列,其中,任一周期的起始时刻为时间戳队列开始存储访问时间戳的时刻,终止时刻为所述时间戳队列存满的时刻;将更新后的热度值作为所述当前周期内的当前条带单元的条带访问率;

利用所述时间戳队列中的时间戳平均时间间隔更新所述热度值,包括:通过下式计算当前条带单元更新后的热度值:式中, 是当前条带单元 更新后的热度值, 是当前条

带单元 更新前的热度值,K表示所述时间戳队列的长度,d表示更新权重,是0至1之间的常数,ti表示时间戳队列中第i个时间戳,ti+1表示时间戳队列中第i+1个时间戳;

所述按照所述分配原则,将各个条带单元分配到各个磁盘分区中,包括:若各个条带单元的热度值是维持恒定的,则将各个条带单元按照热度值从大到小的顺序排序,获取排序结果;在所述排序结果中,将热度值最大的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从大到小的顺序,从最外圈磁盘分区开始依次存放所述排序结果中的条带单元到各个磁盘分区中;

所述按照所述分配原则,将各个条带单元分配到各个磁盘分区中,包括:若各个条带单元的热度值会发生变化,则将各个条带单元按照当前的热度值从小到大的顺序排序,获取排序结果;在所述排序结果中,将热度值最小的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从小到大的顺序,从轴心磁盘分区开始依次存放所述排序结果中的条带单元到各个磁盘分区中。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

若当前条带单元在当前磁盘分区中还未存放完成时所述当前磁盘分区已满,则将所述当前条带单元的剩余部分跨区存放在下一个磁盘分区;其中,各个条带单元之间紧密排列。

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

记录各个磁盘分区的热度信息到对应磁盘中,所述热度信息包括对应磁盘分区的最大热度值和最小热度值;

记录各个磁盘分区的条带状态图到对应磁盘中,所述条带状态图用于表示对应磁盘分区中各个条带单元处于被访问的占用状态还是未被访问的空闲状态。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

实时监测各个磁盘分区中每一个条带单元的热度值;

当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将所述目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,其中,所述当前磁盘分区是所述目标条带单元当前所在的磁盘分区。

5.根据权利要求4所述的方法,其特征在于,所述当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将所述目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,包括:将所述目标条带单元的新热度值和所述当前最大热度值进行比对;

当所述新热度值大于所述当前最大热度值时,将所述目标条带单元迁移到所述目标磁盘分区中;

当所述新热度值小于等于所述当前最大热度值时,保持所述目标条带单元不动。

6.根据权利要求5所述的方法,其特征在于,所述当所述新热度值大于所述当前最大热度值时,将所述目标条带单元迁移到所述目标磁盘分区中,包括:根据各个磁盘分区的热度信息从全部磁盘分区中查找最大热度值大于所述新热度值的候选磁盘分区;

对各个所述候选磁盘分区的数据读写速度进行排序,并从所述候选磁盘分区中选择数据读写速度居中的磁盘分区作为所述目标磁盘分区;

将所述目标条带单元迁移到所述目标磁盘分区中。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

当所述候选磁盘分区不存在时,确定磁盘阵列中保存有数据且数据读写速度最大的目的磁盘分区;

根据所述目的磁盘分区对应的条带状态图,确定所述目的磁盘分区中第一目的条带单元的位置,所述第一目的条带单元是所述目的磁盘分区中处于空闲状态的条带单元;

利用所述目标条带单元顶替所述目的磁盘分区中所述第一目的条带单元,以完成对所述目标条带单元的迁移。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

若所述目的磁盘分区中,不存在所述第一目的条带单元,则迁移所述目标条带单元到与所述目的磁盘分区相邻的磁盘分区。

9.根据权利要求6所述的方法,其特征在于,所述将所述目标条带单元迁移到所述目标磁盘分区中,包括:当所述目标磁盘分区具有闲置空间时,将所述目标条带单元迁移到所述闲置空间的位置,所述闲置空间是没有部署条带单元的空间;

当所述目标磁盘分区不具有闲置空间时,依次确认所述目标磁盘分区中每个条带单元对应的热度值,直至找到热度值小于所述目标条带单元的热度值的第二目的条带单元;

利用所述目标条带单元顶替所述第二目的条带单元,以完成对所述目标条带单元的迁移。

10.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:

将被顶替的条带单元重新作为新的目标条带单元,并将所述新的目标条带单元的热度值作为所述新热度值;

根据所述新热度值,为所述新的目标条带单元分配新的磁盘分区。

11.根据权利要求10所述的方法,其特征在于,所述方法还包括:

当生成新条带单元时,将所述新条带单元存放到具有闲置空间的磁盘分区。

12.根据权利要求11所述的方法,其特征在于,所述方法还包括:

当所述新条带单元的时间戳队列存满时,计算所述新条带单元的目标热度值,并根据所述目标热度值对所述新条带单元进行迁移。

13.一种条带单元分配装置,其特征在于,应用于磁盘阵列控制器,所述装置包括:速度获取模块,用于获取磁盘阵列中各个磁盘分区的数据读写速度,所述磁盘分区是所述磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;

访问率获取模块,用于获取磁盘阵列中各条带单元的条带访问率;访问率获取模块,包括:访问率计算单元,用于根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率;访问率计算单元,包括:时间戳记录单元,用于在当前周期内,当当前条带单元被访问时,记录访问时间戳到当前条带单元对应的时间戳队列;热度值更新单元,用于当时间戳队列存满时,利用时间戳队列中的时间戳平均时间间隔更新前一周期对应的热度值,并清空时间戳队列,将更新后的热度值作为当前周期内的当前条带单元的条带访问率;

其中,任一周期的起始时刻为时间戳队列开始存储访问时间戳的时刻,终止时刻为时间戳队列存满的时刻;

通过下式计算当前条带单元更新后的热度值:

式中, 是当前条带单元 更新后的热度值, 是当前条

带单元 更新前的热度值,K表示所述时间戳队列的长度,d表示更新权重,是0至1之间的常数,ti表示时间戳队列中第i个时间戳,ti+1表示时间戳队列中第i+1个时间戳;

分配原则生成模块,用于根据预配置的所述条带访问率和所述数据读写速度之间的映射关系,构建条带单元的分配原则,其中,所述映射关系用以表示所述条带访问率越高,所述数据读写速度越快;

分配模块,用于按照所述分配原则,将各个条带单元分配到各个磁盘分区中;分配模块包括:第一排序单元,用于若各个条带单元的热度值是维持恒定的,则将各个条带单元按照热度值从大到小的顺序排序,获取排序结果;第一分配单元,用于在排序结果中,将热度值最大的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从大到小的顺序,从最外圈磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中;第二排序单元,用于若各个条带单元的热度值会发生变化,则将各个条带单元按照当前的热度值从小到大的顺序排序,获取排序结果;第二分配单元,用于在排序结果中,将热度值最小的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从小到大的顺序,从轴心磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。

14.一种计算机设备,其特征在于,包括:

存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至12中任一项所述的方法。

15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至12中任一项所述的方法。

说明书 :

一种条带单元分配方法、装置、计算机设备及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种条带单元分配方法、装置、计算机设备及存储介质。

背景技术

[0002] RAID,即Redundant Array of Independent Disks的缩写,是独立磁盘冗余阵列的意思,简称磁盘阵列。磁盘阵列是由很多块独立的磁盘组合成一个容量巨大的磁盘组,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。利用这项技术,可以将数据切割成许多区段,并发工作分别存放在各个磁盘上。条带单元又称为stripe,是将数据切割成许多区段的单位,当主机I\O读写数据任务来临后,主机I\O读写数据任务会被划分为多个子任务,从而分配使用不同的条带单元来响应各个子任务。然而在磁盘阵列中,一个主机I\O读写数据任务虽然被划分为若干个条带单元分别存储到磁盘阵列中的各个成员磁盘中,但是其整个主机I\O读写数据任务的整体访问时间由数据读写速度最慢的条带单元决定,所以条带单元的数据传输速率高低会严重影响整个磁盘阵列的I/O读写性能。目前,缺少有效提高磁盘阵列I/O读写性能的解决办法。

发明内容

[0003] 有鉴于此,本发明提供了一种条带单元分配方法、装置、计算机设备及存储介质,以解决磁盘阵列I/O读写性能较低的问题。
[0004] 第一方面,本发明提供了一种条带单元分配方法,应用于磁盘阵列控制器,方法包括:获取磁盘阵列中各个磁盘分区的数据读写速度,磁盘分区是磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;获取磁盘阵列中各条带单元的条带访问率;根据预配置的条带访问率和数据读写速度之间的映射关系,构建条带单元的分配原则,其中,映射关系用以表示条带访问率越高,数据读写速度越快;按照分配原则,将各个条带单元分配到各个磁盘分区中。
[0005] 根据本发明实施例提供的技术手段,首先对磁盘阵列中的各磁盘进行区位记录技术优化,使得各磁盘的中磁道距离磁盘轴心越远数据传速速率越快,从而将磁盘从轴心到外圆方向按照同心圆形划分的磁盘区域,靠近磁盘轴心的近区数据读写速度较慢,远离磁盘轴心的远区数据传输显著加快。进而,获取磁盘阵列中各条带单元的条带访问率,然后将访问率较大的条带单元分配到远区,访问率较小的条带单元分配到近区,从而访问率较大的条带单元可以结合远区数据读写速度较快的特性显著提高读写任务速度,显著提高了磁盘阵列I/O读写性能。
[0006] 在一种可选地实施方式中,获取磁盘阵列中各条带单元的条带访问率,包括:根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率。
[0007] 根据本发明实施例提供的技术手段,通过各个条带单元被读写任务访问的时间间隔确定各个条带单元访问率的高低,能够准确且简单的表征各个条带单元的使用频繁程度。
[0008] 在一种可选地实施方式中,根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率,包括:在当前周期内,当当前条带单元被访问时,记录访问时间戳到当前条带单元对应的时间戳队列;当时间戳队列存满时,利用时间戳队列中的时间戳平均时间间隔更新前一周期对应的热度值,并清空时间戳队列,其中,任一周期的起始时刻为时间戳队列开始存储访问时间戳的时刻,终止时刻为时间戳队列存满的时刻;将更新后的热度值作为当前周期内的当前条带单元的条带访问率。
[0009] 根据本发明实施例提供的技术手段,为每一个条带单元维护一个时间戳队列,每当时间戳队列放满时,则利用该时间戳队列中每次读写任务的访问时间戳来计算当前条带单元的被访问的平均时间间隔,从而利用平均时间间隔计算热度值来表示一个条带单元的在一段时间内的访问率更加准确,并且,以时间戳队列存满为一个更新周期,利用新计算的热度值不断更新旧热度值,进一步保证了条带单元访问率的准确性。
[0010] 在一种可选地实施方式中,利用时间戳队列中的时间戳平均时间间隔更新热度值,包括:
[0011] 通过下式计算当前条带单元更新后的热度值:
[0012]
[0013] 式中, 是当前条带单元 更新后的热度值, 是当前条带单元 更新前的热度值,K表示时间戳队列的长度,d表示更新权重,是0至1之间的常数,ti表示时间戳队列中第i个时间戳。
[0014] 根据本发明实施例提供的技术手段,使用平均时间间隔的倒数确定热度值,与条带单元的访问率大小更加匹配,并且,利用旧热度值和新计算的热度值进行加权求和,进一步考虑了前段时间的热度变化情况,避免更新后的热度值出现突然跳变的不可靠问题。
[0015] 在一种可选地实施方式中,按照分配原则,将各个条带单元分配到各个磁盘分区中,包括:若各个条带单元的热度值是维持恒定的,则将各个条带单元按照热度值从大到小的顺序排序,获取排序结果;在排序结果中,将热度值最大的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从大到小的顺序,从最外圈磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0016] 根据本发明实施例提供的技术手段,如果判定出各个条带单元的热度值在很长一段时间内都是维持恒定的,则各个条带单元的访问率基本是稳定的,可以认为用户需求各个条带单元的需求程度也是固定不变的,从而,将热度值最大的条带单元放到最远的磁盘分区,即最外圈磁盘分区,即数据读写速度最大的磁盘分区,然后按照顺序,依次把其他条带单元从外圈磁盘分区向内圈磁盘分区分配,最后一个条带单元也位于最靠近轴心的位置,从而这种分配方式能够最大程度上保证访问率最大的条带单元数据读写速度最快,以在最大程度上提高磁盘读写性能。
[0017] 在一种可选地实施方式中,方法还包括:若当前条带单元在当前磁盘分区中还未存放完成时当前磁盘分区已满,则将当前条带单元的剩余部分跨区存放在下一个磁盘分区;其中,各个条带单元之间紧密排列。
[0018] 根据本发明实施例提供的技术手段,条带单元从数据读写速度最快的最外圈磁盘分区依次向内分配,访问率更高的条带单元更靠近外圈,访问率更低的条带单元更贴近内圈,并且,条带单元之间紧密排列,还可以跨区存放,中间不留闲置空间,提高了传输速度较快的外圈磁盘分区的利用率,进一步提高了磁盘阵列的读写性能。
[0019] 在一种可选地实施方式中,按照分配原则,将各个条带单元分配到各个磁盘分区中,包括:若各个条带单元的热度值会发生变化,则将各个条带单元按照当前的热度值从小到大的顺序排序,获取排序结果;在排序结果中,将热度值最小的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从小到大的顺序,从轴心磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0020] 根据本发明实施例提供的技术手段,如果判定出各个条带单元的热度值在一段时间内都是不断变化的,可以认为用户需求各个条带单元的需求程度也是频繁变化的,从而,将热度值最小的条带单元放到最近的磁盘分区,即磁盘轴心位置的磁盘分区,即数据读写速度最小的磁盘分区,然后按照顺序,依次把其他条带单元从磁盘的轴心向外分配,热度值越大的条带单元越靠近外圈,当最后一个条带单元分配完成时,往往磁盘最外圈的空间不会占满,是具有一定闲置空间的,这种分配方式能够不仅可以保证当前访问率更大的条带单元更靠近外圈,提高其数据读写速度,而且在一些条带单元的访问率发生变化时,可以利用闲置的最外圈空间让一些访问率突然变大的条带单元迁移到磁盘最外圈,显著提高磁盘的读写性能。
[0021] 在一种可选地实施方式中,方法还包括:记录各个磁盘分区的热度信息到对应磁盘中,热度信息包括对应磁盘分区的最大热度值和最小热度值;记录各个磁盘分区的条带状态图到对应磁盘中,条带状态图用于表示对应磁盘分区中各个条带单元处于被访问的占用状态还是未被访问的空闲状态。
[0022] 根据本发明实施例提供的技术手段,在各个磁盘中维护对应磁盘分区的热度信息和条带状态图,当条带单元迁移时,利用热度信息和条带状态图能够更为准确地分析出哪一个磁盘分区是更合适的磁盘分区,从而提高迁移的准确度和灵活度。
[0023] 在一种可选地实施方式中,方法还包括:实时监测各个磁盘分区中每一个条带单元的热度值;当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,其中,当前磁盘分区是目标条带单元当前所在的磁盘分区。
[0024] 根据本发明实施例提供的技术手段,当任意一个目标条带单元的热度值增加时,可以将目标条带单元迁移到相比当前磁盘分区数据读写速度更大的目标磁盘分区中,进一步提高磁盘阵列的读写性能。
[0025] 在一种可选地实施方式中,当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,包括:将目标条带单元的新热度值和当前最大热度值进行比对;当新热度值大于当前最大热度值时,将目标条带单元迁移到目标磁盘分区中;当新热度值小于等于当前最大热度值时,保持目标条带单元不动。
[0026] 根据本发明实施例提供的技术手段,当某个条带单元的热度增大到超过其所在的前磁盘分区的当前最大热度值时,才对其进行迁移,否则不迁移,减少磁盘阵列控制器面对频繁的迁移消耗更多的计算资源。
[0027] 在一种可选地实施方式中,当新热度值大于当前最大热度值时,将目标条带单元迁移到目标磁盘分区中,包括:根据各个磁盘分区的热度信息从全部磁盘分区中查找最大热度值大于新热度值的候选磁盘分区;对各个候选磁盘分区的数据读写速度进行排序,并从候选磁盘分区中选择数据读写速度居中的磁盘分区作为目标磁盘分区;将目标条带单元迁移到目标磁盘分区中。
[0028] 根据本发明实施例提供的技术手段,如果存在一些候选磁盘分区目前分配的条带单元的热度值普遍大于目标条带单元的热度值,则从候选磁盘分区中选择中间区使目标条带单元迁入,这是为了平衡读和写的性能,一方面可以保留其中读写速度最快的磁盘分区用于新条带单元的分配,起到快速响应新任务的效果,另一方面,不选择其中最慢的区而是中间区能够更多地提高数据读取的速度。
[0029] 在一种可选地实施方式中,方法还包括:当候选磁盘分区不存在时,确定磁盘阵列中保存有数据且数据读写速度最大的目的磁盘分区;根据目的磁盘分区对应的条带状态图,确定目的磁盘分区中第一目的条带单元的位置,第一目的条带单元是目的磁盘分区中处于空闲状态的条带单元;利用目标条带单元顶替目的磁盘分区中第一目的条带单元,以完成对目标条带单元的迁移。
[0030] 根据本发明实施例提供的技术手段,如果候选磁盘分区不存在,说明目标条带单元的热度值是全部条带单元中最大的,但是目标条带单元目前所在的当前磁盘分区的数据读写速度可能是最快的也可能不是,所以,本实施例直接找到数据读写速度最大的、保存了数据的目的磁盘分区,然后将目标条带单元迁移到目的磁盘分区中处于空闲状态的条带单元,以提高目标条带单元的读写速度,进一步提高磁盘读写性能。
[0031] 在一种可选地实施方式中,方法还包括:若目的磁盘分区中,不存在第一目的条带单元,则迁移目标条带单元到与目的磁盘分区相邻的磁盘分区。
[0032] 根据本发明实施例提供的技术手段,如果目的磁盘分区中没有空闲状态的条带单元,则退而求其次,迁移目标条带单元到与目的磁盘分区相邻的磁盘分区,也能进一步提高目标条带单元的读写速度,进一步提高磁盘读写性能。
[0033] 在一种可选地实施方式中,将目标条带单元迁移到目标磁盘分区中,包括:当目标磁盘分区具有闲置空间时,将目标条带单元迁移到闲置空间的位置,闲置空间是没有部署条带单元的空间;当目标磁盘分区不具有闲置空间时,依次确认目标磁盘分区中每个条带单元对应的热度值,直至找到热度值小于目标条带单元的热度值的第二目的条带单元;利用目标条带单元顶替第二目的条带单元,以完成对目标条带单元的迁移。
[0034] 根据本发明实施例提供的条带单元分配方法,通常磁盘最外圈的磁盘分区具有一些没有存放条带单元的闲置空间,从而当目标磁盘分区具有闲置空间时,本实施例将目标条带单元迁移到闲置空间的位置,起到快速迁移的效果,并且闲置空间的数据读写速度更快。如果目标磁盘分区没有闲置空间,则找到热度值大于目标条带单元的热度值的第二目的条带单元,利用目标条带单元顶替第二目的条带单元的位置,从而将目标条带单元迁移到数据读写速度更快的磁盘分区。
[0035] 在一种可选地实施方式中,方法还包括:将被顶替的条带单元重新作为新的目标条带单元,并将新的目标条带单元的热度值作为新热度值;根据新热度值,为新的目标条带单元分配新的磁盘分区。
[0036] 根据本发明实施例提供的技术手段,针对被顶替位置的条带单元,将其作为需要迁移的条带单元重新执行前述迁移步骤,构成策略闭环,保障各个条带单元均能合理安排在各个磁盘分区中。
[0037] 在一种可选地实施方式中,方法还包括:当生成新条带单元时,将新条带单元存放到具有闲置空间的磁盘分区。
[0038] 在一种可选地实施方式中,方法还包括:当新条带单元的时间戳队列存满时,计算新条带单元的目标热度值,并根据目标热度值对新条带单元进行迁移。
[0039] 根据本发明实施例提供的技术手段,当磁盘阵列控制器需要安排新的条带单元到磁盘阵列中时,优先把新条带单元存放到具有闲置空间的磁盘分区,先保证其当前的数据读写速度,随时使用时间的增长,如果发现新条带单元的访问率并不高,再对其进行迁移,从而进一步提高了条带单元分配的灵活性。
[0040] 第二方面,本发明提供了一种条带单元分配装置,应用于磁盘阵列控制器,装置包括:速度获取模块,用于获取磁盘阵列中各个磁盘分区的数据读写速度,磁盘分区是磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;访问率获取模块,用于获取磁盘阵列中各条带单元的条带访问率;分配模块,用于按照条带访问率从小到大和数据读写速度从小到大的匹配原则将各个条带单元分配到各个磁盘分区中。
[0041] 第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的方法。
[0042] 第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的方法。

附图说明

[0043] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1是相关技术的磁盘阵列结构示意图;
[0045] 图2是根据本发明实施例的一种条带单元分配方法的流程示意图;
[0046] 图3是相关技术的磁盘结构示意图;
[0047] 图4是本发明实施例的通过ZBR优化和未通过ZBR优化的磁盘结构示意图;
[0048] 图5是根据本发明实施例的通过ZBR优化的磁盘分区示意图;
[0049] 图6是根据本发明实施例的条带单元分配到各磁盘分区的结构示意图;
[0050] 图7是根据本发明实施例的条带单元分配到各磁盘分区的另一个结构示意图;
[0051] 图8是根据本发明实施例的分区信息表的结构示意图;
[0052] 图9是根据本发明实施例的一种条带单元分配装置的结构示意图;
[0053] 图10是本发明实施例的计算机设备的硬件结构示意图。

具体实施方式

[0054] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055] 磁盘阵列是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术。利用这项技术,将数据切割成许多区段,并发工作分别存放在各个磁盘上。当主机I\O读写数据任务来临后,主机I\O读写数据任务会被划分为多个子任务,每个子任务按照区段存放到磁盘阵列中,而将数据切割成许多区段的单位就是条带单元,英文称为stripe。而对于条带单元,又是阵列的不同分区上的位置相关的分块的集合,是组织不同分区上分块的单位。分块的英文称为strip/chunk,是磁盘上的物理存储介质的分区,用于磁盘阵列进行数据重构的粒度大小。I\O则是Input\Output的缩写,即主机的输入/输出。
[0056] 当主机I\O读写数据任务来临后,主机I\O读写数据任务会被划分为多个子任务,从而分配使用不同的条带单元来响应各个子任务。如图1所示,以RAID5这一阵列为例,假设有5个硬盘,该主机I\O读写数据任务读写数据较小,只切分为图1中stripe0、 stripe1、 stripe2和stripe3的四个条带单元;而大一些的主机I\O读写数据任务可以切分为成百上千个条带单元,由于本发明篇幅有限,不再就大主机I\O任务进行附图说明。图1中的strip1strip16表示用于存放实际数据的块,parity1 parity4表示存放奇偶校验信息的块。~ ~
[0057] 然而在磁盘阵列中,一个主机I\O读写数据任务虽然被划分为若干个条带单元分别存储到磁盘阵列中的各个成员磁盘中,但是其整个主机I\O读写数据任务的整体访问时间由数据读写速度最慢的条带单元决定,所以条带单元的数据传输速率高低会严重影响整个磁盘阵列的I/O读写性能。目前,缺少有效提高磁盘阵列I/O读写性能的解决办法。
[0058] 为了解决上述问题,根据本发明实施例,提供了一种条带单元分配方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0059] 在本实施例中提供了一种条带单元分配方法,可用于上述的磁盘阵列控制器,图2是根据本发明实施例的一种条带单元分配方法的流程图,如图2所示,该流程包括如下步骤:
[0060] 步骤S101,获取磁盘阵列中各个磁盘分区的数据读写速度,磁盘分区是磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域。
[0061] 具体地,本发明实施例,首先针对磁盘阵列采用区位记录技术进行了优化。区位记录技术(Zone Bit Recording,ZBR)是一种能够提高磁盘存储容量的技术,即根据与磁盘轴心的距离不同,柱面被划分为若干个磁盘分区,如图3所示,一个磁盘分区由若干连续的柱面组成,朝向磁盘轴心看去,各个磁盘分区视为同心圆的形状,这些柱面的每个磁道具有的扇数相同,扇区是磁盘的最小存储单元,存储容量固定,一般为512字节。
[0062] 采用ZBR技术优化的磁盘和没有采用ZBR技术优化的磁盘区别如图4所示,因此与近磁盘轴心区(简称近区)相比,远磁盘轴心的区(简称远区)中每个磁道具有较多的扇区,也就具有更大的存储容量。如图5所示,由于磁盘远区的磁道比近区磁道的存储容量大,磁盘盘片以一定的角速度旋转,因此磁盘远区的数据传输率高于近区。一般磁盘可以划分3至20个区,分区的数目还有增多的趋势,距磁盘轴心最远区与距磁盘轴心最近区的数据传输率之差可达130%,甚至更高,从而数据在磁盘存放的分区位置会极大地影响I/O读写性能。
[0063] 基于此,本发明实施例获取磁盘阵列中各个磁盘分区的数据读写速度,从而分辨出其中哪些磁盘分区的数据读写速度快,哪些磁盘分区的数据读写速度慢。
[0064] 步骤S102,获取磁盘阵列中各条带单元的条带访问率。
[0065] 具体地,本发明实施例进一步获取各条带单元的条带访问率,其中,每个条带单元的访问率可以用来表示条带单元被用户需求的需求程度高低,如果条带单元被需求的程度高,那么数据在该条带单元中读写也就更频繁,如果该条带单元能够在数据读写速度更快的磁盘分区中,就能够显著提高磁盘阵列的整体性能。在本实施例中,各条带单元的条带访问率可以利用预设时间段内各条带单元的总访问次数来表示,本实施例仅以此举例,不以此为限。
[0066] 步骤S103,根据预配置的条带访问率和数据读写速度之间的映射关系,构建条带单元的分配原则,其中,映射关系用以表示条带访问率越高,数据读写速度越快;
[0067] 步骤S104,按照分配原则,将各个条带单元分配到各个磁盘分区中。
[0068] 具体地,本实施例最后按照条带访问率从小到大和数据读写速度从小到大的匹配原则将各个条带单元分配到各个磁盘分区中,换言之,将访问率较大的条带单元分配到远区,访问率较小的条带单元分配到近区,从而访问率较大的条带单元可以结合远区数据读写速度较快的特性显著提高读写任务速度,显著提高了磁盘阵列I/O读写性能。
[0069] 在一些可选地实施方式中,上述步骤S102,包括:
[0070] 步骤a1,根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率。
[0071] 具体地,本发明实施例通过各个条带单元被读写任务访问的时间间隔计算并确定各个条带单元访问率的高低,能够更准确、更简单地表征各个条带单元的使用频繁程度,例如,将某个条带单元被读写任务访问的时间间隔排成序列,如果该序列呈现上升趋势,则表示条带单元的访问率在降低,如果该序列呈现下降趋势,则表示条带单元的访问率在升高,从而利用序列曲线的斜率可以在一定程度上表示为条带单元的访问率。通过这一方案,进一步提高了确定访问率的可靠性。
[0072] 在一些可选地实施方式中,上述步骤a1,包括:
[0073] 步骤a11,在当前周期内,当当前条带单元被访问时,记录访问时间戳到当前条带单元对应的时间戳队列;
[0074] 步骤a12,当时间戳队列存满时,利用时间戳队列中的时间戳平均时间间隔更新前一周期对应的热度值,并清空时间戳队列,其中,任一周期的起始时刻为时间戳队列开始存储访问时间戳的时刻,终止时刻为时间戳队列存满的时刻;
[0075] 步骤a13,将更新后的热度值作为当前周期内的当前条带单元的条带访问率。
[0076] 具体地,本发明实施例定义了一个用于表示条带单元访问率的指标,并称之为热度值,热度值是基于时间戳队列中的时间戳平均时间间隔计算得到的,而磁盘阵列控制器为每一个条带单元均维护有一个时间戳队列,用来存放该条带单元每次受到主机读写任务的访问时间。在条带单元新生成的初始时刻,每个时间戳队列都为空,并且需要初始化各个条带单元的热度值,在本发明实施例中,每个条带单元的初始热度值初始化为0。当主机的访问请求到达磁盘阵列控制器时,根据主机任务切分后的访问请求对应的条带单元,当前访问时间戳就被记录在对应条带单元的时间戳队列中,一旦该时间戳队列满,一个时间戳统计的周期完成,磁盘阵列控制器即利用该时间戳队列中每次读写任务的访问时间戳来计算当前条带单元的被访问的平均时间间隔,从而利用平均时间间隔计算热度值来表示一个条带单元的在一段时间内的访问率。通过这一方案,以时间戳队列存满为一个更新周期,利用新计算的热度值不断更新旧热度值,进一步保证了条带单元访问率的准确性。
[0077] 在一些可选地实施方式中,上述步骤a12包括:
[0078] 通过下式计算当前条带单元更新后的热度值:
[0079]
[0080] 式中, 是当前条带单元 更新后的热度值, 是当前条带单元 更新前的热度值,K表示时间戳队列的长度,d表示更新权重,是0至1之间的常数,ti表示时间戳队列中第i个时间戳。
[0081] 具体地,通过上式更新各个条带的热度值有两方面效果。第一方面,用计算时间戳队列中各时间戳的平均间隔,即访问请求到达的平均间隔,然后通过其倒数表示新计算的热度值,从而,当时间戳平均时间间隔越短时,其倒数越大,从而表示条带单元的访问率更大,表示效果更加好。
[0082] 另一方面,本发明实施例考虑了一些条带单元的热度增加或减少可能是短时间的跳变,这些条带单元的热度值很可能在长期时间内主要还是保持稳定不变,从而本实施例还利用旧热度值和新计算的热度值进行加权求和,将求和的结果作为条带单元 更新后的热度值,进一步考虑了早些时间的热度变化情况,避免更新后的热度值出现突然跳变的不可靠问题。
[0083] 在一些可选地实施方式中,还可以通过下式计算整体主机I\O读写数据任务的访问率,即主机I\O读写数据任务的热度,以便于研究人员进行数据整理和分析。具体根据其包含的多个条带的热度的平均值来计算,公式如下:
[0084]
[0085] 其中, 表示整体主机I\O读写数据任务的热度,P为该主机I\O读写数据任务中的条带个数。
[0086] 在一些可选地实施方式中,上述步骤S104包括:
[0087] 步骤b1,若各个条带单元的热度值是维持恒定的,则将各个条带单元按照热度值从大到小的顺序排序,获取排序结果;
[0088] 步骤b2,在排序结果中,将热度值最大的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从大到小的顺序,从最外圈磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0089] 具体地,如图6所示,如果磁盘阵列控制器判定出各个条带单元的热度值在很长一段时间内都是维持恒定的,则各个条带单元的访问率基本是稳定的,可以认为用户需求各个条带单元的需求程度也是固定不变的,从而,将热度值最大的条带单元放到最远的磁盘分区,即最外圈磁盘分区,即数据读写速度最大的磁盘分区,然后按照顺序,依次把其他条带单元从外圈磁盘分区向内圈磁盘分区分配,最后一个条带单元也位于最靠近轴心的位置,通常,条带单元的数量不会把全部磁盘分区占满,从而轴心位置的磁盘分区往往闲置,例如图6中阴影区域是分配了条带单元的区域,空白区域是闲置区域。而通过这种分配方式,能够最大程度上保证访问率最大的条带单元数据读写速度最快,以在最大程度上提高磁盘读写性能。
[0090] 在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括如下步骤:
[0091] 步骤b3,若当前条带单元在当前磁盘分区中还未存放完成时当前磁盘分区已满,则将当前条带单元的剩余部分跨区存放在下一个磁盘分区;其中,各个条带单元之间紧密排列。
[0092] 具体地,由于本发明实施例除了将条带单元从数据读写速度最快的最外圈磁盘分区依次向内分配,访问率更高的条带单元更靠近外圈,访问率更低的条带单元更贴近内圈之外。还控制条带单元之间紧密排列,即条带单元和条带单元之间不留闲置的磁盘空间,而是首尾紧密相邻的占用磁盘分区。另外,条带单元还可以跨区存放,中间不留闲置空间。通过这一方案,从而进一步提高了传输速度较快的外圈磁盘分区的利用率,进一步提高了磁盘阵列的读写性能。
[0093] 在一些可选地实施方式中,上述步骤S104包括:
[0094] 步骤c1,若各个条带单元的热度值会发生变化,则将各个条带单元按照当前的热度值从小到大的顺序排序,获取排序结果;
[0095] 步骤c2,在排序结果中,将热度值最小的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从小到大的顺序,从轴心磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0096] 具体地,在本发明实施例中,如果磁盘阵列控制器判定出各个条带单元的热度值在一段时间内都是不断变化的,且变化幅度较大,即可认为用户需求各个条带单元的需求程度也是频繁变化的。从而,如图7所示,本发明实施例将热度值最小的条带单元放到最近的磁盘分区,即磁盘轴心位置的磁盘分区,即数据读写速度最小的磁盘分区,然后按照顺序,依次把其他条带单元从磁盘的轴心向外分配,热度值越大的条带单元越靠近外圈,当最后一个条带单元分配完成时,往往磁盘最外圈的空间不会占满,是具有一定闲置空间的(例如图7中,阴影区域是被分配了条带单元的区域,空白区域是没有分配条带单元的闲置区域),这种分配方式能够不仅可以保证当前访问率更大的条带单元更靠近外圈,提高其数据读写速度,而且在一些条带单元的访问率发生变化时,可以利用闲置的最外圈空间让一些访问率突然变大的条带单元迁移到磁盘最外圈,显著提高磁盘的读写性能。在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括:
[0097] 步骤e1,记录各个磁盘分区的热度信息到对应磁盘中,热度信息包括对应磁盘分区的最大热度值和最小热度值;
[0098] 步骤e2,记录各个磁盘分区的条带状态图到对应磁盘中,条带状态图用于表示对应磁盘分区中各个条带单元处于被访问的占用状态还是未被访问的空闲状态。
[0099] 具体地,本发明实施例在各个磁盘中还维护了磁盘所包含磁盘分区的热度信息和条带状态图。其中热度信息用来表示各磁盘分区的最大热度值和最小热度值,其中,当前磁盘分区的最大热度值即为当前磁盘分区包含的全部条带单元中,最大热度的条带单元对应的热度值,同理,当前磁盘分区的最小热度值即为当前磁盘分区包含的全部条带单元中,最小热度的条带单元对应的热度值。而条带状态图用于表示对应磁盘分区中各个条带单元处于被访问的占用状态还是未被访问的空闲状态。
[0100] 例如图8所示,假设磁盘的数据块被划分为m个分区,分别为 , ,… ,…, ,基于此,创建分区信息表,条带单元的热度信息和条带状态图保存在分区信息表中,该表是数据存放和迁移所需参照的数据结构。表中有m个条目,每个条目对应一个磁盘分区,条目记录了分区号、该分区中条带单元的最大热度和最小热度以及该区条带单元的条带状态图。条带单元的最大热度和最小热度有利于条带单元迁移进程,快速为需要迁移的条带单元找到目标磁盘分区。各个磁盘分区条带单元的条带状态图中的一个位(bit)对应一个条带单元的可用状态,例如该位为1表示该条带单元已被占用,是占用状态,为0表示该条带单元没有被访问,从而是空闲状态,条带状态图有利于数据迁移进程快速找到空闲条带单元来进行数据插入。利用热度信息和条带状态图能够更为准确地分析出哪一个磁盘分区是更合适的磁盘分区,从而提高迁移的准确度和灵活度。在本实施例中,分区信息表占据的空间比较小,假设组成磁盘阵列的磁盘容量为10G,条带单元大小为4k,那么每个磁盘分区信息表的大小约为30kb。
[0101] 在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括如下步骤:
[0102] 步骤d1,实时监测各个磁盘分区中每一个条带单元的热度值。
[0103] 步骤d2,当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,其中,当前磁盘分区是目标条带单元当前所在的磁盘分区。
[0104] 具体地,在本发明实施例中,磁盘阵列控制器还实时监测各个条带单元对应的热度值,分析各个条带单元热度值的变化情况。当任意一个磁盘分区内的任意一个目标条带单元的热度值增加时,本发明实施例还利用增加后的新热度值和当前磁盘分区的当前最大热度值进行比对,确定是否将目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中。如果目标条带单元增加后的新热度值很大,则通过迁移技术将目标条带单元迁移到相比当前磁盘分区数据读写速度更大的目标磁盘分区中,从而使访问率更高的条带单元动态具有更大的数据读写速度,进一步提高了磁盘阵列的读写性能。
[0105] 在一些可选地实施方式中,上述步骤d2,包括:
[0106] 步骤f1,将目标条带单元的新热度值和当前最大热度值进行比对;
[0107] 步骤f2,当新热度值大于当前最大热度值时,将目标条带单元迁移到目标磁盘分区中;
[0108] 步骤f3,当新热度值小于等于当前最大热度值时,保持目标条带单元不动。
[0109] 具体地,在本发明实施例中,对于条带单元的迁移,还需要分析某个条带单元的热度增大的程度是否较高,如果某个条带单元的热度增大到超过其所在的前磁盘分区的当前最大热度值时,才表示该条带单元位于当前磁盘分区不合适,当前磁盘分区的数据读写速度不能满足其访问率,从而对当前条带单元进行迁移,否则不对当前条带单元进行迁移,减少磁盘阵列控制器面对频繁的迁移消耗更多的计算资源。
[0110] 在一些可选地实施方式中,上述步骤f2包括:
[0111] 步骤g1,根据各个磁盘分区的热度信息从全部磁盘分区中查找最大热度值大于新热度值的候选磁盘分区;
[0112] 步骤g2,对各个候选磁盘分区的数据读写速度进行排序,并从候选磁盘分区中选择数据读写速度居中的磁盘分区作为目标磁盘分区;
[0113] 步骤g3,将目标条带单元迁移到目标磁盘分区中。
[0114] 具体地,当目标条带单元热度值增加,并且热度值增加到超过当前磁盘分区的当前最大热度值时,本发明实施例开始对目标条带单元进行迁移。首先,确定目标条带单元更新后的新热度值,然后磁盘阵列控制器从全部磁盘分区中查找最大热度值大于新热度值的候选磁盘分区。因为候选磁盘分区中一定存放了热度值大于目标条带单元的其他条带单元,所以,将目标条带单元迁移到候选磁盘分区中的任意一个分区,都能够起到提高磁盘读写性能的效果。
[0115] 需要注意的是,本发明实施例进一步从候选磁盘分区中选择数据读写速度位于中间的中间区,从而使目标条带单元迁入。这样做的目的是为了平衡读和写的性能,一方面可以保留其中读写速度最快的磁盘分区用于一些刚刚生成的新条带单元的分配,起到快速响应新任务的效果,另一方面,选择中间区而不选择其中最慢的区能够更大地提高目标条带单元数据读取的速度,更高程度上提高磁盘阵列的读写性能。
[0116] 在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括:
[0117] 步骤h1,当候选磁盘分区不存在时,确定磁盘阵列中保存有数据且数据读写速度最大的目的磁盘分区;
[0118] 步骤h2,根据目的磁盘分区对应的条带状态图,确定目的磁盘分区中第一目的条带单元的位置,第一目的条带单元是目的磁盘分区中处于空闲状态的条带单元;
[0119] 步骤h3,利用目标条带单元顶替目的磁盘分区中第一目的条带单元,以完成对目标条带单元的迁移。
[0120] 具体地,在本发明实施例中,如果磁盘阵列控制器查询出候选磁盘分区不存在,说明目标条带单元的热度值是全部条带单元中最大的。然而,目标条带单元目前所在的当前磁盘分区可能是数据读写速度最快的磁盘分区,也可能不是数据读写速度最快的磁盘分区。所以,本实施例直接找到保存了数据的并且数据读写速度最大的目的磁盘分区(目的磁盘分区可能是当前磁盘分区也可能不是,但目的磁盘分区一定是已经保存有数据且数据读写速度最快的磁盘分区),然后,将目标条带单元迁移到目的磁盘分区中处于空闲状态的条带单元的位置。一方面,优先将目标条带单元迁移到已经保存有数据的磁盘分区,保留具有闲置空间的磁盘分区供新条带单元使用,另一方面,选择的磁盘分区是所有已经保存有数据的磁盘分区中数据读写速度最快的磁盘分区,同时提高了目标条带单元的读写速度,进一步提高磁盘读写性能。
[0121] 在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括:
[0122] 步骤h4,若目的磁盘分区中,不存在第一目的条带单元,则迁移目标条带单元到与目的磁盘分区相邻的磁盘分区。
[0123] 具体地,在本发明实施例中,如果目的磁盘分区中没有空闲状态的条带单元,则退而求其次,迁移目标条带单元到与目的磁盘分区相邻的磁盘分区,相邻的磁盘分区可能比目的磁盘分区的数据读写速度大,也可能比目的磁盘分区的数据读写速度小。如果保存有数据的目的磁盘分区已经是全部磁盘分区中数据读写速度最大的,那么相邻磁盘分区会比目的磁盘分区的数据读写速度小,如果存在没有保存有数据的闲置磁盘分区,比目的磁盘分区的数据读写速度更大,则本发明实施例优先选择这类闲置磁盘分区。通过这一方案,同样能够提高目标条带单元的读写速度,进一步提高磁盘读写性能。
[0124] 在一些可选地实施方式中,上述步骤g3,包括:
[0125] 步骤g31,当目标磁盘分区具有闲置空间时,将目标条带单元迁移到闲置空间的位置,闲置空间是没有部署条带单元的空间。
[0126] 步骤g32,当目标磁盘分区不具有闲置空间时,依次确认目标磁盘分区中每个条带单元对应的热度值,直至找到热度值小于目标条带单元的热度值的第二目的条带单元。
[0127] 步骤g33,利用目标条带单元顶替第二目的条带单元,以完成对目标条带单元的迁移。
[0128] 具体地,根据本发明实施例提供的条带单元分配方法,通常磁盘最外圈的磁盘分区具有一些没有存放条带单元的闲置空间(如图7所示),从而当目标磁盘分区具有闲置空间时,本实施例将目标条带单元迁移到闲置空间的位置,起到快速迁移的效果,并且闲置空间的数据读写速度更快。如果目标磁盘分区没有闲置空间,则在找到第一个热度值小于目标条带单元的热度值的第二目的条带单元时,立即利用目标条带单元顶替第二目的条带单元的位置,从而将目标条带单元迁移到数据读写速度更快的磁盘分区,同时提高迁移效率。
[0129] 在一些可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括:
[0130] 步骤I1,将被顶替的条带单元重新作为新的目标条带单元,并将新的目标条带单元的热度值作为新热度值。
[0131] 步骤I2,返回步骤g1,根据新热度值,为新的目标条带单元分配新的磁盘分区。
[0132] 根据本发明实施例提供的技术手段,针对被顶替位置的条带单元,同样将其作为需要迁移的条带单元重新执行前述迁移策略,构成策略闭环,保障各个条带单元均能合理安排在各个磁盘分区中。
[0133] 在一种可选地实施方式中,本发明实施例提供的条带单元分配方法,还包括:
[0134] 步骤J1,当生成新条带单元时,将新条带单元存放到具有闲置空间的磁盘分区;
[0135] 步骤J2,当新条带单元的时间戳队列存满时,计算新条带单元的目标热度值,并根据目标热度值对新条带单元进行迁移。
[0136] 具体地,根据本发明实施例提供的技术手段,当磁盘阵列控制器需要安排新的条带单元到磁盘阵列中时,优先把新条带单元存放到具有闲置空间的磁盘分区,例如图7所示的空白区域,先保证新条带单元当前的数据读写速度,随时使用时间的增长,逐步更新新条带单元的热度值,从而如果发现新条带单元的访问率并不高,再对其进行迁移,进一步提高了条带单元分配的灵活性。
[0137] 通过本发明实施例提供的上述方案,提出了一种在磁盘阵列中进行条带单元迁移的策略,即利用多分区磁盘具有远轴心区数据传输率较高的特点,根据条带单元的访问率,动态地将访问率高的条带单元迁移到其所在磁盘的数据传输率较高的分区。本发明提出的方法可以使磁盘阵列的I\O性能得到较大的提高,并且磁盘阵列的各分区间的数据传输率的差异越大,则通过该数据迁移策略能够提高的性能相对也就越大。该数据优化方法根据磁盘阵列中的条带单元的访问热度,动态地将访问频率高的条带单元迁移到数据传输率较高的磁盘分区,从而优化I\O读写数据切分后多个条带单元在磁盘阵列的存放位置,使磁盘阵列中的数据分布能够适应读写访问率的动态变化。本发明提供的技术方案,业务逻辑清晰,逻辑控制和算法简单明了,易于实现,在不增加硬件的基础上,通过本发明提出技术方案提高了磁盘阵列的I\O读写性能。
[0138] 在本实施例中还提供了一种条带单元分配装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0139] 本实施例提供一种条带单元分配装置,应用于磁盘阵列控制器,如图9所示,包括:
[0140] 速度获取模块901,用于获取磁盘阵列中各个磁盘分区的数据读写速度,磁盘分区是磁盘阵列中各磁盘采用区位记录技术优化后,将磁盘从轴心到外圆方向按照同心圆形划分的区域;
[0141] 访问率获取模块902,用于获取磁盘阵列中各条带单元的条带访问率;
[0142] 分配原则生成模块903,用于根据预配置的条带访问率和数据读写速度之间的映射关系,构建条带单元的分配原则,其中,映射关系用以表示条带访问率越高,数据读写速度越快;
[0143] 分配模块904,用于按照分配原则,将各个条带单元分配到各个磁盘分区中。
[0144] 在一些可选的实施方式中,访问率获取模块902,包括:
[0145] 访问率计算单元,用于根据各个条带单元被读写任务访问的时间间隔计算各条带单元的条带访问率。
[0146] 在一些可选的实施方式中,访问率计算单元,包括:
[0147] 时间戳记录单元,用于在当前周期内,当当前条带单元被访问时,记录访问时间戳到当前条带单元对应的时间戳队列;
[0148] 热度值更新单元,用于当时间戳队列存满时,利用时间戳队列中的时间戳平均时间间隔更新前一周期对应的热度值,并清空时间戳队列,将更新后的热度值作为当前周期内的当前条带单元的条带访问率。其中,任一周期的起始时刻为时间戳队列开始存储访问时间戳的时刻,终止时刻为时间戳队列存满的时刻。
[0149] 在一些可选的实施方式中,分配模块904,包括:
[0150] 第一排序单元,用于若各个条带单元的热度值是维持恒定的,则将各个条带单元按照热度值从大到小的顺序排序,获取排序结果;
[0151] 第一分配单元,用于在排序结果中,将热度值最大的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从大到小的顺序,从最外圈磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0152] 在一些可选的实施方式中,分配模块904,还包括:
[0153] 调整分配单元,用于若当前条带单元在当前磁盘分区中还未存放完成时当前磁盘分区已满,则将当前条带单元的剩余部分跨区存放在下一个磁盘分区;其中,各个条带单元之间紧密排列。
[0154] 在一些可选的实施方式中,分配模块904,包括
[0155] 第二排序单元,用于若各个条带单元的热度值会发生变化,则将各个条带单元按照当前的热度值从小到大的顺序排序,获取排序结果;
[0156] 第二分配单元,用于在排序结果中,将热度值最小的条带单元作为首个进行存放的条带单元,按照磁盘分区的数据读写速度从小到大的顺序,从轴心磁盘分区开始依次存放排序结果中的条带单元到各个磁盘分区中。
[0157] 在一些可选的实施方式中,本实施例提供一种条带单元分配装置,还包括:
[0158] 热度信息模块,用于记录各个磁盘分区的热度信息到对应磁盘中,热度信息包括对应磁盘分区的最大热度值和最小热度值;
[0159] 条带状态图模块,用于记录各个磁盘分区的条带状态图到对应磁盘中,条带状态图用于表示对应磁盘分区中各个条带单元处于被访问的占用状态还是未被访问的空闲状态。
[0160] 在一些可选的实施方式中,本实施例提供一种条带单元分配装置,还包括:
[0161] 迁移模块,用于实时监测各个磁盘分区中每一个条带单元的热度值,当任意一个目标条带单元的热度值增加时,根据增加后的新热度值和当前磁盘分区的当前最大热度值,确定是否将目标条带单元迁移到相比当前磁盘分区的数据读写速度更大的目标磁盘分区中,其中,当前磁盘分区是目标条带单元当前所在的磁盘分区。
[0162] 在一些可选的实施方式中,迁移模块包括:
[0163] 热度值比对单元,用于将目标条带单元的新热度值和当前最大热度值进行比对;
[0164] 迁移子单元,用于当新热度值大于当前最大热度值时,将目标条带单元迁移到目标磁盘分区中;
[0165] 不迁移子单元,用于当新热度值小于等于当前最大热度值时,保持目标条带单元不动。
[0166] 在一些可选的实施方式中,迁移子单元包括:
[0167] 候选分区查找单元,用于根据各个磁盘分区的热度信息从全部磁盘分区中查找最大热度值大于新热度值的候选磁盘分区;
[0168] 分区挑选单元,用于对各个候选磁盘分区的数据读写速度进行排序,并从候选磁盘分区中选择数据读写速度居中的磁盘分区作为目标磁盘分区;
[0169] 迁移执行单元,用于将目标条带单元迁移到目标磁盘分区中。
[0170] 在一些可选地实施方式中,本实施例提供的迁移子单元,还包括:
[0171] 目的分区查找单元,用于当候选磁盘分区不存在时,确定磁盘阵列中保存有数据的、数据读写速度最大的目的磁盘分区;
[0172] 目的条带单元查找单元,用于根据目的磁盘分区对应的条带状态图,确定目的磁盘分区中第一目的条带单元的位置,第一目的条带单元是目的磁盘分区中处于空闲状态的条带单元;
[0173] 第二迁移执行单元,用于利用目标条带单元顶替目的磁盘分区中第一目的条带单元,以完成对目标条带单元的迁移。
[0174] 在一些可选地实施方式中,本实施例的迁移子单元,还包括:
[0175] 第三迁移执行单元,用于若目的磁盘分区中,不存在第一目的条带单元,则迁移目标条带单元到与目的磁盘分区相邻的磁盘分区。
[0176] 在一些可选地实施方式中,迁移执行单元,包括:
[0177] 第一迁移执行子单元,用于当目标磁盘分区具有闲置空间时,将目标条带单元迁移到闲置空间的位置,闲置空间是没有部署条带单元的空间;
[0178] 第二目的条带单元查找单元,用于当目标磁盘分区不具有闲置空间时,依次确认目标磁盘分区中每个条带单元对应的热度值,直至找到热度值小于目标条带单元的热度值的第二目的条带单元;
[0179] 第二迁移执行子单元,利用目标条带单元顶替第二目的条带单元,以完成对目标条带单元的迁移。
[0180] 在一些可选地实施方式中,本实施例的一种条带单元分配装置,还包括:
[0181] 循环迁移模块,用于将被顶替的条带单元重新作为新的目标条带单元,并将新的目标条带单元的热度值作为新热度值,返回候选分区查找单元,根据新热度值,为新的目标条带单元分配新的磁盘分区。
[0182] 新条带分配模块,用于当生成新条带单元时,将新条带单元存放到具有闲置空间的磁盘分区。
[0183] 新条带迁移模块,用于当新条带单元的时间戳队列存满时,计算新条带单元的目标热度值,并根据目标热度值对新条带单元进行迁移。
[0184] 上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
[0185] 本实施例中的条带单元分配装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
[0186] 本发明实施例还提供一种计算机设备,具有上述图9所示的一种条带单元分配装置。
[0187] 请参阅图10,图10是本发明可选实施例提供的一种计算机设备的结构示意图,如图10所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器10为例。
[0188] 处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
[0189] 其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
[0190] 存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0191] 存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
[0192] 该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
[0193] 本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
[0194] 虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。