CN105022587A - 一种设计磁盘阵列的方法和存储装置 - Google Patents

一种设计磁盘阵列的方法和存储装置 Download PDF

Info

Publication number
CN105022587A
CN105022587A CN201410168510.XA CN201410168510A CN105022587A CN 105022587 A CN105022587 A CN 105022587A CN 201410168510 A CN201410168510 A CN 201410168510A CN 105022587 A CN105022587 A CN 105022587A
Authority
CN
China
Prior art keywords
disk
capacity
area
array
lba
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
CN201410168510.XA
Other languages
English (en)
Other versions
CN105022587B (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.)
China Mobile Group Design Institute Co Ltd
Original Assignee
China Mobile Group Design Institute 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 China Mobile Group Design Institute Co Ltd filed Critical China Mobile Group Design Institute Co Ltd
Priority to CN201410168510.XA priority Critical patent/CN105022587B/zh
Publication of CN105022587A publication Critical patent/CN105022587A/zh
Application granted granted Critical
Publication of CN105022587B publication Critical patent/CN105022587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例提供一种设计磁盘阵列的方法和存储装置,磁盘阵列包括多个磁盘,磁盘具有高性能区域和高容量区域,确定磁盘阵列单盘容量,以及确定磁盘阵列中磁盘的数量;将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,内圈区域是高容量区域,外圈区域是高性能区域,条带化后形成高容量的条带化单位和高性能的条带化单位;依据不同磁盘阵列组合原理对所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;在磁盘阵列控制器的各磁盘I/O原始队列前增加一个分类的双缓冲队列,双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达原始队列的速率。

Description

一种设计磁盘阵列的方法和存储装置
技术领域
本发明涉及存储技术,特别是指一种设计磁盘阵列的方法和存储装置。
背景技术
在互联网和通信行业中,数据存储一直是业务的有力支撑,同时也是各公司对内对外IT系统中的核心。当今现有的数据存储主要是通过磁盘驱动器(简称:磁盘,HDD,Hard Disk Drive)来实现,其包括三部分:一个或者多个铝制或者玻璃制的可以通过磁化来存储数据的盘片(碟片),主轴马达,通过感应、改变盘片相应位置的磁场而读取、写入数据的一个或多个(一般为盘片数量的2倍)磁头。磁盘的存储数据主要是存储在磁盘盘片上,盘片主要由磁道(Track)和扇区(Sector)组成。
如图1所示,一块磁盘所有盘片上的同一磁道构成一个圆柱,称作柱面(Cylinder),每个圆柱上的磁头由上而下从0开始编号。数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从0磁头开始进行操作,依次向下在同一柱面的不同盘片即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面。
区域数据记录技术(ZDR,Zone Data Recording)。磁盘主轴的工作方式是恒定角速度,单位时间内放置的角度一致(CAV,Constant Angular Velocity),而盘片最外圈的周长比最内圈的周长要长很多,磁头在最外圈时,走过的距离最长,如果最内圈与最外圈磁道的扇区数相同,必将造成极大的存储空间的浪费。ZDR技术从磁盘的最外圈划分出若干个区域,每个区域内的每磁道扇区一致,但靠内的区域比外侧的区域的每磁道扇区数要少,可以根据不同的磁道长度来合理设定扇区的数量,以达到充分利用磁盘存储空间的目的。如图2所示,大多数磁盘按照16个区域划分,最外圈的每磁道扇区数正好是最内圈的一倍,与最大的持续传输率的参数基本成比例。对于同一块磁盘,每一个扇区占用的磁道长度相等,外圈由于磁道长度比内圈长,所以外圈比内圈部署更多的扇区以达到更高的磁盘利用率。
寻道速度/时间:设定一次随机寻道磁头的起始位置与终点位置都位于同一磁道上,之间间隔4个扇区的简化情况,对应该随机读写的寻道时间是t。
设定一个磁盘每条扇区占用的磁道长度为S,转速为P(RPM,Round PerMinute),盘片的对应磁道的半径为R。设定内圈的角速度为ω,那么ω=2πf=2πP/60=πP/30,设定磁道的线速度为υ,那么υ=ωR=πPR/30,对应寻道时间t=4s/υ=120s/πPR,磁盘的寻道时间与磁道对应的盘片半径R成反比,磁道越靠外盘片半径R越大,寻道时间越短,寻道速度越快。
数据读/写速度。磁头对于一个扇区的数据的读写的速度由3个因素所决定:磁头本身的物理读写速度,盘片感应到磁头读写后生产数据的物理速度,扇区到扇区之间的转换速度;而最后一个因素直接与磁盘在该扇区的移动速度有关。前两个因素在同一块或者同一型号的磁盘内,可以认为其速度是无个体差异并一致的,而且不会对第三个因素产生瓶颈。那么对于同一块或者同一型号的多块磁盘,其读/写一个扇区的速度是与扇区的移动速度有关。根据之前寻道速度段落中的推导,该速度就是磁盘盘片在该扇区的线速度υ=ωR=πPR/30,其寻道时间的推导公式为t=4s/υ=120s/πPR,可以看到,扇区数据的读写速度也与磁道对应的盘片半径成反比,磁道越靠外盘片半径越大,扇区移动速度越快,扇区数据的读写速度越快。
如图3所示,典型的容量为500GB HDD的寻道时间和读取速度测试,测试的结果横轴对应位置为从外圈开始标为0GB,直到最内圈结束,标示为500GB。一个点模拟了一次随机读写的过程并记录了该读写与上次读写所耗费的间隔时间,随着磁盘的随机读写位置越靠近最内圈,寻道所耗费的时间越长。
如图3所示,曲线模拟了磁盘在每一个磁道(容量区域)对应的一块数据的连续读写速度,随着磁盘的读写位置越靠近最内圈,读写的速度越慢。并且,磁盘最外圈的读写速度(约130MB/s)大约为最内圈读写速度(约60MB/s)的2倍,与ZDR的推论一致-磁盘设定的最外圈扇区数量为最内圈扇区数量的2倍。
综上,现有磁盘扇区的分布特性决定了对于同一块或同一型号的多个磁盘,磁盘的外圈随机寻道的速度会更快,并且数据的读写速率也会更高。
独立磁盘冗余阵列(RAID,Redundant Array of Independent Disks),是将相同的数据存储在多个磁盘的不同的地方,通过将数据放在多个磁盘上,输入输出操作能以平衡的方式交叠,改良性能。最基本和常用的是RAID0、RAID1和RAID5。
RAID0是组建磁盘阵列最简单的一种形式,需要2块或2块以上的磁盘,通过数据条带化(Data Stripping)技术,可以提高整个磁盘的性能和吞吐量。但如果任何一块磁盘出现故障,整个磁盘阵列将会受到破坏,可靠性仅为单独一块磁盘的1/N。
RAID1是磁盘镜像,是将一个磁盘的数据镜像到另一个磁盘上,数据在写入一块磁盘的同时会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证磁盘阵列的可靠性和可修复性上,只要任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的磁盘出现问题时都可以正常运行,当一块磁盘失效时,系统会忽略该磁盘,转而使用剩余的镜像盘读写数据。在某块磁盘失效而替换新磁盘时,整个RAID1的重建时间为1个磁盘的镜像重建时间,且在此期间仅重建的那块磁盘的性能会下降。
RAID5将数据条块化地分布于不同的磁盘上,条块单位为bit或字节,并在所有磁盘上交叉地存取简单的奇偶校验编码来提供错误检查及恢复。如果一块磁盘失效,其他磁盘上的数据以及奇偶校验可以重新产生失效盘中的数据。RAID5兼顾存储性能、数据安全和存储成本,在某块磁盘失效而替换新磁盘时,整个RAID5的重建时间为1个磁盘数据和校验数据的时间,由于其数据需要其余各个磁盘进行奇偶校验得到,所以重建速度比RAID1镜像重建时间要长得多,并且在此期间整个RAID5中所有磁盘的性能都会严重下降。
高性能商业用存储系统更多的使用RAID10和RAID50。
RAID10是指先将2块磁盘一组使用RAID1镜像,然后将这些组RAID1镜像再使用条带化的方式组合起来,这样既拥有RAID0的速度,又同时拥有RAID1级别的安全保障以及重建优势。缺点是单位存储造价非常高。
RAID50是指先将一组磁盘使用RAID5镜像,然后将这些组RAID5镜像再使用条带化的方式组合起来。这样的组织形式使得RAID50拥有更高的容错能力,具备更快数据读取速率,重建速度会更快,且重建的时候性能影响会局限在一组RAID5磁盘中而不会扩展到整个RAID50磁盘阵列。
磁盘阵列是对RAID的物理实现,根据存储网络国际协会(SNIA)的定义,磁盘阵列子系统(disk array subsystem)及可将其磁盘组织起来的控制程序的磁盘子系统和磁盘本身构成了该实现。在物理的角度,磁盘阵列最为主要的部件是阵列控制器和磁盘柜。
阵列控制器主要作用是通过其内置的控制程序实现整个阵列的管理。控制器是一种介于主机和磁盘之间的控制单元,配置有专门为I/O进行过优化的处理器以及一定数量的cache。控制器上的CPU和cache共同实现对来自主机系统I/O请求的操作和对磁盘阵列的RAID算法的计算处理。同时,控制器有一个或多个主机接口接收主机对磁盘阵列的I/O请求,这些主机接口可以直接或间接通过光纤交换机与主机连接(存储SAN网络)。此外各种管理接口,如串口、以太网口等也在控制器上。
磁盘柜用于放置磁盘。磁盘通过磁盘接口规范与控制器进行连接,这样控制器就可以将最终主机的I/O数据请求按照各个RAID的算法传达到对应的磁盘上了。商业化高性能磁盘阵列中,磁盘柜的接口规范按照性能递增主要有SATA、SAS和FC。
随着各个行业对数据存储、数据服务等IT支撑类系统提出了越来越多的要求,无论是数据容量要求还是性能要求都已今非昔比,上PB级别的存储、上千万级别的每秒读写次数(IOPS,Input/Output Operations Per Second)随处可见。但是企业对IT数据的服务要求也并不是单一只需要IOPS性能级服务的。企业往往在对自己客户的数据支撑服务中,为了得到良好的客户感知,需要大大缩短客户的数据查询、更新等待时间,这类联机事务处理系统(OLTP,On-Line Transaction Processing)类应用需要非常大量的IOPS资源,但却相对不需要大量的存储容量。企业也会在运营中积累大量的数据,这类大数据中也许蕴含着对自身有利的商业信息,所以数据分析这类联机分析处理(OLAP,On-Line Analytical Processing)系统的需求也非常的普遍,但OLAP不需要太大的IOPS,对服务时间也不敏感,但是大量的原始数据的累积会消耗非常多的存储容量资源。
现有技术存在如下问题:磁盘阵列内部并未考虑过针对以上性能需求和容量需求的分级服务。比如,较高端的磁盘阵列伴随着较高端的性能以及较昂贵的扩容成本,为了搭建一个高性能的OLTP系统往往需要一台配置全量的控制系统,但伴随着数量并不多的磁盘,也许远远没有达到该磁盘阵列扩容磁盘数量上限的磁盘阵列。特别的,在一些非常高性能需求的磁盘阵列中(如BOSS的帐务系统),为了提升整个数据库的性能,需要将一个VG跨越更多的磁盘来保障性能。在如此的环境下,该系统需要的磁盘数量不是由实际需求容量决定的,而是由性能决定的。此时,磁盘阵列为了满足应用性能所需磁盘数量往往是大于应用实际容量所需的磁盘数量,这样就会空余一部分容量出来。但是,如果将其它应用部署在空余容量部分会造成对原有应用的IOPS竞争,损害其性能的同时自己的性能也无法得到保障。因此,在实践中,这部分容量常常被用来部署低IOPS消耗的应用。即使如此,有时低IOPS的应用在高IOPS的I/O访问负荷非常大时,仍然会对性能产生影响。所以,有时在为了绝对保障高IOPS应用的性能,而不部署任何应用在空余容量部分,任其浪费掉。
一个OLAP系统至少需要上百TB的容量,而控制器则需要半量的配置性能就已足够,这种环境下,也许磁盘柜的磁盘数量已经达到了该磁盘阵列的最大扩容上限,而控制器配置性能却仅仅是满性能的几分之一而已。
当一个磁盘阵列遇到以上两种情况时,其实均没达到一个最佳的可用性能/实际性能比。事实上,在很多企业中,针对这两种情况一般都是购买同样的但是两套独立的磁盘阵列来满足需求。
发明内容
本发明要解决的技术问题是提供一种设计磁盘阵列的方法和存储装置,现有技术中,无法兼顾OLTP和OLAP对于磁盘阵列的需求的缺陷。
为解决上述技术问题,本发明的实施例提供一种设计磁盘阵列的方法,磁盘阵列包括多个磁盘,磁盘具有高性能区域和高容量区域,方法包括:确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
所述的方法中,确定磁盘阵列中磁盘的数量N包括:根据阵列高容量区域的容量V,磁盘阵列中磁盘的单盘容量n,计算出满足阵列高容量区域的容量需要的磁盘数量则满足阵列高性能区域的性能需要的磁盘数量P是阵列高性能区域应满足的每秒读写次数IOPS,ρ是单磁盘IOPS,α是缓存的命中率,β是该高性能区域读操作比例;确定磁盘阵列中磁盘的数量N取N/与N//中的最大值。
所述的方法中,根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域包括:对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl;分割点所分割的LBA逻辑扇区总数为L',占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的L/3+1~L部分,表示为LBA(L/3+1,L)
所述的方法中,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位包括:采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数,将第一磁盘中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);同理,第二磁盘按照条带化单位的可用容量n/计算,第二磁盘中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);按照RAID1镜像组合将第一磁盘与第二磁盘中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
所述的方法中,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区包括:将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷LV的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
所述的方法中,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区包括:采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
所述的方法中,还包括:在磁盘阵列控制器的算法中加入新的分类标签器,分类标签器与各磁盘I/O原始队列之前的双缓冲队列连接;针对来自磁盘阵列控制器的I/O访问进行分类后,分别放入对应的缓冲队列,其中,设定q1中存放访问高性能阵列区的磁盘的队列,q2中存放访问高容量阵列区的磁盘的队列。
所述的方法中,还包括:当磁盘阵列控制器需要根据所述I/O访问对第i块磁盘进行写操作时,先将所述I/O访问按照高性能阵列区和高容量阵列区各自的LBA进行分类,将所述I/O访问缓冲入对应的q1队列或者q2队列中;将q1队列和q2队列中的数据按照先入先出的顺序赋予不同的速率缓冲入原始队列q,在原始队列q中按照先入先出的顺序等待对磁盘的高性能区域或者高容量区域进行写操作。
所述的方法中,还包括:设定磁盘能够提供的总的应用服务率为θλ,当前I/O访问的应用请求率为R,θλ和R均与IOPS是线性的正比关系,其中θ为0~1之间一个给定常数,与一个系统配置、系统限定的响应时间和实际请求时间有关;如果R>θλ,不能保障访问高性能阵列区的服务质量,否则能够保障高性能阵列区的服务质量。
所述的方法中,当R>θλ,不能保障访问高性能阵列区的服务质量时,还包括:计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,以及高容量阵列区在第k+1个时间点的应用服务率;根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率。
所述的方法中,计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率包括:在磁盘阵列中,第k个时间点对第i块磁盘的高性能区域的应用请求率为在第k个时间点所有磁盘的高性能区域对应的应用请求率表示为向量:同理,设定第k个时间点对第i块磁盘的高容量区域的应用服务率为在第k个时间点所有磁盘的高容量区域对应的应用服务率表示为向量: θλ ( HC - VC ) i k = θλ ( HC - VC ) 1 k , θλ ( HC - VC ) 2 k , . . . . , θλ ( HC - VC ) N k ; 采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率
所述的方法中,采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率包括:设定一元简单线性回归的配置参数为β0和β1,应用请求率设定第k+1时间点第i块磁盘的高容量区域应用服务率 &theta;&lambda; ( HC - VC ) i k + 1 = 0 , r i k + 1 &GreaterEqual; &theta;&lambda; &theta;&lambda; - r i k + 1 , r i k + 1 < &theta;&lambda; ; 估计β0和β1的值时,测试k+1个采样时间段的高性能区域的服务请求率分别为x0,x1,x2,....,xk,则 &beta; 1 = &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) ( x j + 1 - y &OverBar; ) &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) 2 , &beta; 0 = y &OverBar; - &beta; 1 x &OverBar; , 其中 x &OverBar; = 1 k &Sigma; j = 0 k - 1 x j , y &OverBar; = 1 k &Sigma; j = 1 k x j ; 确定了第k+1时间点对第i块磁盘的高容量区域的应用服务率按照高性能区域和高容量区域的应用服务率之和是整个磁盘的应用服务率,其中,θλ表示磁盘能够提供的总的应用服务率;则,第k+1时间点对第i块磁盘的高性能区域的应用服务率为
所述的方法中,根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率包括:当控制器预测到对第i块磁盘的高性能区域的应用请求率增大,则需要减小第i块磁盘的高容量区域的应用服务率使得高性能区域调整后的应用服务率增大并且不小于应用请求率来满足服务质量的需求。
一种存储装置,包括磁盘阵列,还包括:计算单元,用于确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;内外圈划定单元,用于根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域;第一组合单元,用于通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;第二组合单元,用于依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;I/O访问缓冲队列单元,用于在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
所述的装置中,内外圈划定单元包括:分割点模块,用于对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl;分割点所分割的LBA逻辑扇区总数为L/,占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的LBA(L/3+1,L)
所述的装置中,第一组合单元包括:条带化数量计算模块,用于采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数;条带化地址模块,用于将第一磁盘中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);同理,第二磁盘按照条带化单位的可用容量n/计算,第二磁盘中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);镜像条带化模块,用于按照RAID1镜像组合将第一磁盘与第二磁盘中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
所述的装置中,第二组合单元包括:高性能阵列区组合模块,用于将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
所述的装置中,第一组合单元包括:RAID5组合模块,用于采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;以及第二组合单元包括:高容量阵列区组合模块,用于根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
本发明的上述技术方案的有益效果如下:根据磁盘的扇区分布特性将磁盘的扇区分为不同的区域,内圈扇区对应着高容量区域,外圈扇区对应着高性能区域,再将磁盘阵列中相同的区域按照不同的RAID原理组织起来,能够同时在一个磁盘阵列中提供两种不同的存储空间-高容量阵列区和高性能阵列区,再通过基于反馈算法控制I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
附图说明
图1表示磁盘中扇区、簇、磁道和柱面的关系示意图;
图2表示内圈外圈中扇区的划分示意图;
图3表示磁盘在每一个磁道区域对应的一块数据的连续读写速度测试图;
图4表示一种设计磁盘阵列的方法流程示意图;
图5表示数据库的存储系统示意图;
图6表示设计磁盘阵列以及调整对磁盘阵列的IO访问的流程示意图;
图7表示控制算法所支持的I/O队列调度示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
现有技术通过将磁盘群分为不同的组,并将这些磁盘组使用不同的组合算法来达到不同的性能和可靠性要求。本发明实施例中,针对实际应用中对存储服务性能和容量的不同需求,通过对磁盘阵列内部的原理性改进,使得磁盘阵列在提供性能数据服务和容量数据服务的情况下得到分级和优化。
分级的磁盘阵列包括:高性能(High Performance Volume Group),拥有绝对可保证的强IOPS能力,但容量较小,简称HP-VG;以及高容量(High CapacityVolume Group),拥有相对高的容量,但IOPS能力较弱,简称HC-VG。
本发明实施例提供一种设计磁盘阵列的方法,如图4所示,磁盘阵列包括多个磁盘,磁盘具有高性能区域(简称HP-VG)和高容量区域(简称HC-VG),
方法包括:
步骤41,确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;
步骤42,根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;
步骤43,依据不同的磁盘阵列组合RAID原理对磁盘阵列的所有磁盘中的高容量对应的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能对应的条带化单位进行组合形成高性能阵列区;
步骤44,在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
应用所提供的技术,根据磁盘的扇区分布特性将磁盘的扇区分为不同的区域,内圈扇区对应着高容量区域HC-VG,外圈扇区对应着高性能区域HP-VG,再将磁盘阵列中相同的区域按照不同的RAID原理组织起来,能够同时在一个磁盘阵列中提供两种不同的存储空间-高容量阵列区和高性能阵列区,再通过基于反馈算法控制I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
在第一次应用条带化技术封装的过程中,是通过跨磁盘不同区域(内圈-HP-VG,外圈-HC-VG)来实现的,在第二次封装的过程中则采用了RAID技术,即按照RAID0的方式进行条带化。
磁盘应选择现有市场上单盘容量尽量大的磁盘。在一个优选实施例中,对于磁盘阵列的高性能区域HP-VG,由于要使用RAID10原理处理,磁盘的数量N不小于4块,一般而言多于8块为宜,最优的数量应根据该分区空间需要的性能和空间来综合确定。
磁盘阵列包括高容量阵列区和高性能阵列区,在一个优选实施例中,确定磁盘阵列中磁盘的数量N包括:
根据高容量阵列区的容量V,磁盘阵列中磁盘的单盘容量n,计算出满足高容量阵列区需要的磁盘数量
以及,计算出满足高性能阵列区需要的磁盘数量P是高性能阵列区应满足的IOPS,ρ是单磁盘IOPS,α是缓存(Cache)的命中率,β是高性能阵列区的读操作比例;
确定磁盘阵列中磁盘的数量N取N/与N//的最大值。具体地,采用N=max(N/,N//)确定磁盘阵列中磁盘的数量N取N/与N//的最大值。
如图3所示,磁盘持续传输能力随着磁道半径的变小是呈现抛物线下降,而随机读写延迟则随着磁道半径变小呈现线性的递增关系。综合考虑高性能阵列区与高容量阵列区对容量的需求,对单个磁盘的内外圈扇区的划分按照容量比约1:2进行,并对分界处柱面扇区进行标记。
在一个优选实施例中,步骤42中,如图5所示,根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域包括:
对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;
设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl
分割点所分割的LBA逻辑扇区总数为L',占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的L/3+1~L部分,表示为LBA(L/3+1,L)
这里,分割点并不真正占用了一个扇区,即这个扇区仍然应当参与划分到内圈或者外圈的分配。
传统的RAID10和RAID50都是首先对整个磁盘进行条带化,然后对条带化的数据通过镜像和奇偶校验的组合方式组合成RAID1和RAID5的逻辑卷(LV,Logic Volume),即为第一层逻辑卷LV。在此LV的基础上,又通过对这些LV再进行一次条带化,但不进行镜像和奇偶校验的组合,这样生成第二层逻辑卷LV来完成RAID10和RAID50的组合方式。与传统的RAID10和RAID50不同,本发明实施例中,对于第一层逻辑卷LV,通过将多个磁盘按照外圈区域和内圈区域条带化形成高性能条带化单位和高容量条带化单位;对磁盘群中所有高性能区域条带化单位依据RAID1原理,对高容量区域条带化单位依据RAID5原理,分别进行独立的跨磁盘组合。对于第二层逻辑卷,就是将第一层的LV再做一次条带化。条带化技术是一种自动的将I/O的负载均衡到多个物理磁盘上的技术。可以看出来,此处的两层LV跟传统两层LV最大的不同是在通过条带化形成第一层逻辑卷的过程中,在RAID1和RAID5时是通过跨磁盘组合多个不同磁盘的相同区域来实现的,而不是像传统技术那样通过组合多个完整的磁盘来实现的,同时,在第一层逻辑卷组合这些“区域”的过程中需要遵循外圈区域、内圈区域的划分。
对于第一层逻辑卷,内圈对应着高容量区域HC-VG,外圈对应着高性能区域HP-VG,在一个优选实施例中,步骤42中,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位包括:
采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘HDD1的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数;一个物理磁盘的高性能区域有多个条带化单位,n/指的是条带化第一层逻辑卷的单位大小容量,通常是128k,但是可以通过设定来改变。
将HDD1中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);
同理,第二磁盘HDD2按照条带化单位的可用容量n/计算,HDD2中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);
按照RAID1镜像组合将HDD1与HDD2中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
对于第二层逻辑卷,按照RAID0原理将第一层逻辑卷再做一次条带化,最终的高性能阵列区的LV的LBA地址表示范围为LBA(1,NL/6),在一个优选实施例中,步骤43中,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区包括:
将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷LV的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
在形成第一层逻辑卷和第二层逻辑卷过程中,n/指的是高性能区域中第一层逻辑卷最初条带化的单位大小数据存储容量,是可以人为设定的,由于其与扇区的线性关系,可以通过以n/为变量的表达式来表示从第一层逻辑卷传输数据到单个物理磁盘上所对应的LBA范围关系;同理,在完成第一层逻辑卷以后,计算出的表达式LBA(1,L/3)表示第二层逻辑卷传输数据到第一层逻辑卷上所对应的LBA范围关系;最终,在完成第二层逻辑卷以后,计算出的表达式LBA(1,NL/6)表示操作系统传输数据到第二层逻辑卷上所对应的LBA范围关系,或者说是操作系统最终能使用高性能阵列区的LBA地址范围。
综上可以知道,n/是高性能阵列区中第一层逻辑卷设定来表达每一块磁盘划分外圈和内圈LBA地址的表达式中的一个量,换言之,对于高性能阵列区或者高容量阵列区层面来讲,其映射到最底层物理磁盘中的LBA地址可以通过条带化的容量、磁盘总容量等来表达,是一个可确定的量。
以上是基于与RAID10类似的原理对各个磁盘的HP-VG进行组合形成高性能阵列区,以下则基于与RAID50类似的原理对各个磁盘的HC-VG进行组合形成高容量阵列区。
在一个优选实施例中,步骤43中,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区包括:
采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;
根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
在一个优选实施例中,对于单一个磁盘,设定逻辑扇区数为L个,单逻辑扇区容量为512字节,则磁盘的可用容量V=512*L/10243GB,
对于高性能阵列区,设定每一块磁盘的外圈区域的可用容量为VHP-VGGB,磁盘的数量为N,套用RAID10的计算公式:VHP-VG=N*V/2GB;
对于高容量阵列区,设定其RAID5的方式为校验数据与实际数据的比例按照1:3进行分配,那么可用容量VHC-VG=N*V/2*(3/4)GB。
这样的组合区别于现有的任何一种RAID组合方式,是一种全新阵列组合方式。对于该组合的容量计算有两种方式,一种是通过之前分析的每一个区域覆盖的LBA地址数并乘以逻辑扇区的单扇区容量得到,另一种方法则与原有的RAID10、RAID50计算可用容量的快速方法一样。为了达到更好的性能分级的效果,将磁盘自身特性中更快的区域采用性能更快的组合算法,来加强高性能区域的性能表现;将磁盘自身特性中较慢的部分采用容量损失更小的组合算法,让以容量为诉求的区域有更大的容量优势。
更进一步的,为了让磁盘的IOPS输出有倾向性,通过对RAID控制器到实际磁盘的I/O队列算法加入一层惩罚优化控制机制,更进一步使得每个磁盘的高性能区域获得更多的读写机会,从而加快该高性能区域性能水平,并且使得每一块磁盘的高性能区域的I/O更加独立,不会受到高容量区域的I/O干扰。
当一个I/O访问经过连接缓存(CACHE)中的命中算法过滤后最终落入到一个具体的磁盘-第一磁盘上时,则在控制器后端与第一磁盘对应的I/O原始队列中等待对第一磁盘进行操作。为此,在一个优选实施例中,在RAID的控制器算法中加入新的磁盘I/O队列调度,磁盘I/O队列调度作用于磁盘阵列控制器后端与磁盘的CACHE中,对等待写入磁盘的I/O进行分类,为此,在一个优选实施例中,还包括:
在磁盘阵列控制器的算法中加入新的分类标签器,分类标签器与各磁盘I/O原始队列之前的双缓冲队列连接;
针对来自磁盘阵列控制器的I/O访问进行分类后,分别放入对应的缓冲队列,其中,设定q1中存放访问高性能阵列区的磁盘的队列,q2中存放访问高容量阵列区的磁盘的队列。具体地,判断I/O访问的LBA编号在LBA(1,NL/6)之中时,为其设定一个标志位Flag=1,该标志位表示这个I/O访问需要落入高性能阵列区;当LBA编号不在LBA(1,NL/6)之中,置Flag=0,表示这个I/O访问是需要落入高容量阵列区。
在一个优选实施例中,当磁盘阵列控制器需要根据所述I/O访问对第i块磁盘进行写操作时,先将所述I/O访问按照高性能阵列区和高容量阵列区各自的LBA进行分类,将所述I/O访问缓冲入对应的q1队列或者q2队列中;
将q1队列和q2队列中的数据按照先入先出(FIFO,Fisrt In First Out)的顺序赋予不同的速率缓冲入原始队列q,在原始队列q中按照先入先出的顺序等待对磁盘的高性能区域或者高容量区域进行写操作。
磁盘I/O队列调度模块将实际需要更新的每一个磁盘的I/O访问按照不同的区域进行了分类并分别缓冲进入了对应队列q1和q2;主要是为了使得高性能区域的I/O的服务能够得到优先的保障,也就是,要满足使用HP-VG的应用客户端的QoS需求,在后续根据对第i块磁盘的高性能区域的应用请求率来调整高容量区域的应用服务率的过程中,分别对队列q1和q2中等待读写操作的I/O访问进行处理,可以采用计数器,假设现在HP-VG的服务率是a,HC-VG的服务率是b,单位时间内从双缓冲队列进入到磁盘阵列的原始队列的I/O访问是a+b个,那么在单位时间内,保证从q1队列放出的I/O访问是a个,从q2队列放出的I/O访问是b个就可以实现对双队列中每个队列I/O进入速度进行单独的控制。
为了让针对HP-VG的I/O请求能够获得有保障的服务质量(QoS),引入存储系统QoS的概念。在一个优选实施例中,还包括:
设定磁盘能够提供的总的应用服务率为θλ,当前I/O访问的应用请求率为R,θλ和R均与IOPS是线性的正比关系,其中θ为0~1之间一个给定常数,与一个系统配置、系统限定的响应时间和实际请求时间有关;
如果R>θλ,不能保障访问高性能阵列区的服务质量,否则能够保障高性能阵列区的服务质量。
当高性能阵列区当前的应用服务率无法满足当前的请求率的时候,就需要扩大高性能阵列区的应用服务率。由于高性能阵列区和高容量阵列区分享了每一磁盘的应用服务率,也就分享了整个磁盘阵列的应用服务率,因此当增加高性能阵列区的应用服务率的同时,高容量阵列区的应用服务率会下降。极端情况下,即当对高性能阵列区的服务请求率大于了整个磁盘阵列的应用服务率时,高容量阵列区的应用服务率会下降到0,系统表现为所有的IOPS均落在高性能阵列区所在的每一个磁盘的外圈区域上,整个磁盘阵列只为高性能阵列区服务来保障其QoS。而当高性能阵列区的请求率不繁忙的时候,系统需要自动调节高容量阵列区的服务率,使得在达到高性能阵列区的QoS的前提下,自身也可以提供服务。这一过程中,也需要设置或者默认HP-VG的优先级高于高容量阵列区。
高性能阵列区和高容量阵列区的应用服务率调整与实际高性能阵列区的请求率之间,基于反馈控制的在线动态调整算法优化q1队列和q2队列,能够形成非常强的自适应性,这种反馈控制体现在实时动态的根据前k个时间点的应用请求率,计算出高性能阵列区在第k+1个时间点的应用请求率,然后,基于该第k+1个时间点的应用请求率来调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率。
为此,在一个优选实施例中,当R>θλ,不能保障访问高性能阵列区的服务质量时,还包括:
计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,以及高容量阵列区在第k+1个时间点的应用服务率;
根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率。
在一个优选实施例中,计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率包括:
在磁盘阵列中,第k个时间点对第i块磁盘的高性能区域的应用请求率为在第k个时间点所有磁盘的高性能区域对应的应用请求率表示为向量: ( r i k ) = r 1 k , r 2 k , . . . , r N k ;
同理,设定第k个时间点对第i块磁盘的高容量区域的应用服务率为在第k个时间点所有磁盘的高容量区域对应的应用服务率表示为向量: &theta;&lambda; ( HC - VC ) i k = &theta;&lambda; ( HC - VC ) 1 k , &theta;&lambda; ( HC - VC ) 2 k , . . . . , &theta;&lambda; ( HC - VC ) N k ;
采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率
根据历史负载信息,预测下一步客户端的负载是反馈控制的基本组成,其中,使用线性回归算法进行预测是一种常用的模型,因此采用一元简单线性回归的方式拟合输入变化情况。
在一个优选实施例中,采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率包括:
设定一元简单线性回归的配置参数为β0和β1,应用请求率
设定第k+1时间点第i块磁盘的高容量区域应用服务率 &theta;&lambda; ( HC - VC ) i k + 1 = 0 , r i k + 1 &GreaterEqual; &theta;&lambda; &theta;&lambda; - r i k + 1 , r i k + 1 < &theta;&lambda; ;
估计β0和β1的值时,测试k+1个采样时间段的高性能区域的服务请求率分别为x0,x1,x2,....,xk,则 &beta; 1 = &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) ( x j + 1 - y &OverBar; ) &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) 2 , &beta; 0 = y &OverBar; - &beta; 1 x &OverBar; , 其中 x &OverBar; = 1 k &Sigma; j = 0 k - 1 x j , y &OverBar; = 1 k &Sigma; j = 1 k x j ;
确定了第k+1时间点对第i块磁盘的高容量区域的应用服务率按照高性能区域和高容量区域的应用服务率之和是整个磁盘的应用服务率,其中,θλ表示磁盘能够提供的总的应用服务率;则,第k+1时间点对第i块磁盘的高性能区域的应用服务率为 &theta;&lambda; ( HP - VC ) i k + 1 = &theta;&lambda; - &theta;&lambda; ( HC - VC ) i k + 1 = r i k + 1 .
在一个优选实施例中,根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率包括:
当控制器预测到对第i块磁盘的高性能区域的应用请求率增大,则需要减小第i块磁盘的高容量区域的应用服务率使得高性能区域调整后的应用服务率增大并且不小于应用请求率来满足服务质量的需求。同理,当第k+1时间点的应用请求率减小,则会增大第i块磁盘的高容量区域在第k+1时间点的应用服务率使得高性能区域在第k+1时间点的应用服务率减小并直到等于应用请求率来满足其服务质量的需求为止。
在实践中基于之前的分析发现,高性能区域的IOPS比磁盘外圈和内圈的平均IOPS大,此处为了与理想状态下的磁盘能够提供的平均的应用服务率θλ相区别,设定磁盘的高性能区域所能够提供的总的应用服务率是θλ(HP-VC),其中,由于磁盘外圈所能提供的IOPS能力是大于磁盘内圈的,而θλ是磁盘外圈和内圈的平均IOPS能力,所以θλ(HP-VC)>θλ,那么即,调整之后,高性能区域提供的应用服务率是大于高性能区域第i块磁盘在第k+1时间点所需要的应用请求率的。
当控制器预测到高性能区域的应用服务率增大,需要减小高容量区域的应用服务率,使得高性能区域的应用服务率增大来满足QoS的需求。特别的,对于一块磁盘而言,当高性能区域的应用请求增大到与整块磁盘的平均应用服务率相等甚至是超过时,高容量区域的应用服务率等于0,也即,此时整个磁盘完全为高性能区域服务,I/O操作全部发生在磁盘的外圈区域-高性能区域。
同理,当高性能区域的应用请求率降低,那么高容量区域的服务率就会增加。
在一个应用场景中,如图5所示,一个典型的省业务支撑系统的帐务数据库的存储系统中,大概需要61664个IOPS。
(一)现网按照RAID10部署容量为146G10K转的磁盘,单盘IOPS约为ρ=130个,Cache命中率为α=60%,读比率β=40%,写比率60%,根据性能计算磁盘数量公式个磁盘;
帐务数据库的空间容量为34T,根据容量计算磁盘数量的公式可以得到
最终选定磁盘数量N=max(N/,N//)=N//=645。有大约(645-438)*0.146T=30T的空间浪费。
(二)选择900G10K RPM的磁盘,单盘IOPS是ρ=150个,Cache命中率α=60%,读比率β=40%,根据性能计算磁盘数量公式:
根据容量的部署情况:
最终选定的磁盘数量N=max(N/,N//)=N//=559。空间浪费大约是(559-71)*0.146T=390T。
现实情况是,单容量低的磁盘要么停产,要么与新的单容量高的磁盘价格相近,但是由于以上对于性能诉求的原因,并不需要更大的容量,而需要更多的磁盘提供更多的IOPS。这种情况下通常不会选择单盘容量高的产品-例如900GB容量的磁盘,因为多出来的空间无法利用。但本发明实施例中为了解决现有技术问题,继续以900G磁盘为例进行后续的处理。
因此采用本发明实施例提供的技术实现性能分级的磁盘阵列,如图6所示,包括:
步骤a,确定磁盘阵列中单个磁盘的容量:使用的900G10K RPM的磁盘。
步骤b,确定磁盘的数量:对于使用按照扇区分区的新磁盘阵列,需要估算外圈扇区-高性能区域的IOPS。
设定一个磁盘的一个磁道的IOPS为I,旋转延迟为Tr,随机寻道时间为Ts,数据I/O时间为T0,那么I=1000ms/(Tr+Ts+To),其中,Tr与磁道半径R成反比,Ts与磁道半径R无关,T0与磁道半径成反比。
越往磁盘的外圈,其随机存取时间T=Tr+Ts+T0越小,IOPS越大,即磁盘的IOPS与磁道半径成正比,与随机存取时间成反比。
随机存取时间T可以通过简单测试得到,一个典型900GB10K RPM磁盘的4K数据在最外圈柱面的平均随机存取时间T1约为3.1ms,在磁盘容量从最外圈到1/3容量位置的柱面的平均随机存取时间T2约为5.5ms。将随机存取时间T简化为一条随磁盘容量(外圈到内圈)变化而变化的线性函数,那么位于外圈前1/3容量(高性能区域)的随机存取时间是Taverage-HP=(T1+T2)/2=4.3ms,Iaverage-HP=1000ms/4.3ms≈233IOPS。
那么
N=max(N/,N//)=N//=360。
因此,如果使用磁盘外圈并按照区域占整个磁盘1/3容量计算,满足营业数据库的要求需要360块900GB10K RPM的磁盘。
步骤c,采用具体的划分单个磁盘外圈/内圈的方法。现有磁盘的寻址技术已经由CHS、LARGE模式全面过渡到了LBA模式。先设定一个对单个磁盘划分外圈(高性能区域)与内圈(一般性能区域)的扇区作为分割点,如此则可以利用现有的LBA寻址系统来进行划分。
设定900GB10K RPM磁盘的总可用容量为n字节,LBA逻辑扇区总数为L,逻辑扇区大小nl字节,存在线性关系L=n/nl,L是这一个900GB磁盘的逻辑扇区总数,同时也是该RPM磁盘LBA的最大的值。
分割点按照总容量n的1/3计算,分割点分割出的LBA扇区是两部分,其中外圈远离主轴的部分是L/,那么L/=(n/3)*(1/nl)=(1/3)*(n/nl)=L/3。
磁盘总容量与磁盘LBA逻辑扇区总数为线性关系,磁盘总容量的1/3也表现为LBA逻辑扇区总数的1/3,那么磁盘的外圈与内圈的分割点扇区的LBA逻辑地址为L/3。高性能区域位于每一个磁盘LBA地址1~L/3的部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址为LBA(L/3+1,L)
对于900GB10K RPM的磁盘,总可用容量n约为858GB,nl的典型值为0.5k字节,L的一个典型值约为1,800,000,000个(为计算方便取整值)。高性能区域对应在每一块磁盘的LBA地址都为相同的LBA(1,600000000),容量约为286GB,高容量区域每一块磁盘的LBA地址都为相同的LBA(600000001,1,800,000,000),容量约为572GB。
步骤d,针对高性能阵列区和高容量阵列区,对磁盘阵列中每块磁盘的相应部分进行类似RAID10和RAID50处理。
传统的RAID10和RAID50都是首先对整个磁盘进行条带化,然后对条带化的数据通过镜像和奇偶校验的组合方式组合成RAID1和RAID5的逻辑卷LV。在此LV的基础上,又通过对这些LV再进行一次条带化,但不进行镜像和奇偶校验的组合,这样生成第二层逻辑卷来完成类似RAID10和RAID50的组合方式。本发明实施例中则是在借鉴现有RAID10和RAID15技术的基础上,对形成第一层逻辑卷-即设置RAID1或者RAID5的过程进行了改造。
第一层逻辑卷,对于磁盘阵列中HDD1的高性能区域,设定磁盘条带化的单位可用容量为n′,则单位可用容量占用的LBA地址数量为n′/nl。那么,高性能区域的可用磁盘条带化数量S=L*nl/3n/
HDD1高性能区域第x个条带化单位LBA地址范围是x∈(1,S);
同理,HDD2也按照HDD1的条带化单位可用容量n′计算,则HDD2中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);
由于是按照RAID1镜像组合,将HDD1与HDD2中的条带化后的地址范围映射到高性能区域的第一层RAID1的LV的LBA地址范围表示为LBA(1,L/3),其余磁盘也可以通过两两组合,可以得到N/2个磁盘组合的RAID1的LV的LBA地址表示范围。
第二层逻辑卷,是将第一层的LV再做一次条带化。具体为将N/2个已经组合为RAID1的LBA地址再按照条带化的方式映射到一个连续的LBA地址中,与传统的RAID10方法一致。最终的高性能阵列区的LV的连续的LBA地址表示范围为LBA(1,NL/6)
整个高性能阵列区的LV的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,各个高性能区域的镜像条带化以后,所有的读写操作均在相当于磁盘总容量1/3的外圈部分上。
同理,整个高容量阵列区的LV的LBA最终映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,各个高容量区域设置RAID5并条带化以后,所有的读写操作均在相当于磁盘总容量2/3的内圈部分上。
一般而言,磁盘条带化的单位可用容量n/为128k字节。900GB10K RPM磁盘高性能区域的可用磁盘条带化数量为900GB/128k*(1/3)=2,343,750个,企业磁盘逻辑扇区大小为512字节-即0.5k字节,每一个逻辑扇区具有对应的一个LBA地址,那么单位条带化容量包含有多少个逻辑扇区就表明单位条带化容量占用了多少个LBA地址,因此,单位条带化容量占用的LBA地址数量为256个。
如此,360块900GB的磁盘被按照内圈外圈的不同,从每块磁盘的第600,000,000个扇区处分割,所有小于第600,000,000个扇区的扇区部分通过先镜像再条带化的方式组合;大于第600,000,000个扇区的扇区部分通过先RAID5再条带化的方式组合。这样的组合区别于现有的任何一种RAID组合方式,是一种全新阵列组合方式。
步骤e,对于该全新阵列组合的容量计算有两种方式,一种是通过之前分析的每一个区域覆盖的LBA地址数并乘以逻辑扇区的单扇区容量得到,设定HP-VG或HC-VG的可用容量为VGB,逻辑扇区数为L个,单逻辑扇区容量为512Byte,那么V=512*L/10243GB。
另一种方法则与原有的RAID10、RAID50计算可用容量的快速方法一样。虽然本发明的RAID方式与RAID10、RAID50不同,但是只是分割方式不一样,实际的组合思想是一致的。
对于HP-VG,如果将每一块磁盘的外圈区域当成一块独立的磁盘,那么套用RAID10的计算公式,设定其可用容量为V GB,每个磁盘容量为vGB,磁盘的数量为N,那么V=N*ν/2。
同理,对于HC-VG来说,设定其RAID5的方式为3+1,也就是说校验数据与实际数据的比例按照1:3进行分配,那么V=N*ν3/4。
为了简便,一般按照后一种方式进行计算。对于360块900GB磁盘,HP-VG的可用容量约为51.48TB,HC-VG的可用容量约为154.44TB。
步骤f,磁盘阵列应用于各种应用程序,有些是高性能的应用程序,挂载在高性能阵列区上;而另一些则是性能不敏感或者容量敏感的应用程序,挂载在高容量阵列区上。实际中,磁盘阵列会收到2种不同的I/O请求,其中一类是针对高性能阵列区,另一类则是针对高容量阵列区的。由于各个磁盘中高性能区域和高容量区域的划分特性,使得最终每一次I/O实际是位于一块磁盘的不同部分,那么它们会分享同一块磁盘的IOPS能力。
为了进一步加强高性能区域的性能优势,如图7所示,在一个优选实施例中,在RAID的控制器算法中加入一个新的磁盘I/O队列调度功能,磁盘I/O队列调度功能的作用是为了对最终落在每一块磁盘上的I/O根据内圈外圈区域的划分进行惩罚和优化。
磁盘I/O队列调度模块作用于磁盘阵列控制器后端与磁盘的连接CACHE中,当一个I/O访问在经过CACHE的命中算法等过滤后,如果需要最终落入到某一个磁盘上,那么就会出现在控制器后端为每一个磁盘准备的I/O队列中等待被更新到磁盘上。
步骤g,为了控制最终落入磁盘的区域,需要对I/O队列中等待写入磁盘的I/O进行分类。
具体可以根据实际I/O的LBA编号判断,当LBA编号在LBA(1,NL/6)中时,为I/O访问设定一个标志位Flag=1,表示这个I/O落入磁盘的高性能区域,当LBA编号不在LBA(1,NL/6)之中,置Flag=0,表示这个I/O落入磁盘的高容量区域。
为便于实现,在一个优选实施例中,在控制器的各磁盘I/O队列之前新加入一个分类的双缓冲队列,设定q为原始队列,q1为HP-VG的队列;q2为HC-VG的队列,当控制器需要将I/O写入第i块磁盘时,应先根据这个I/O的LBA进行分类,并将其缓冲入对应磁盘I/O队列。
如图6所示,将实际需要更新的每一个磁盘的I/O按照不同的区域进行了分类并分别缓冲进入了对应队列q1和q2,接下来,将q1和q2中的数据按照FIFO的顺序,再赋予不同的速率缓冲入原始队列q,就可以对每个磁盘按照HP-VG和高容量区域的不同而提供不同的I/O速率服务。
确定队列q1和q2各自I/O缓存到队列q中的速率是提供差异化速率服务的关键。根据之前的分析,需要让q1的缓存速率更大来使得磁盘大部分的IOPS能力都是用来处理高性能区域的I/O,从而使得该高性能区域的性能得到进一步的保障。
步骤h,为确定I/O速率并且能够使其更合理,引入存储系统QoS的概念。
设定磁盘能够提供的总的应用服务率为θλ,当前I/O访问的应用请求率为R,θλ和R均与IOPS是线性的正比关系,其中θ为0~1之间一个给定常数,与一个系统配置、系统限定的响应时间和实际请求时间有关;所以θ是需要从系统的具体测量中得出的。
如果R>θλ,不能保障访问高性能阵列区的服务质量,否则能够保障高性能阵列区的服务质量。
在磁盘阵列控制器与I/O队列之间引入了磁盘I/O队列调度和双缓冲I/O队列,然后通过基于反馈控制的在线动态调整算法来控制读写高性能阵列区与高容量阵列区的速率。根据系统之前各个时间点输入量的大小进行自我调整,高性能阵列区的速率在重负荷下可以得到优先保障,当高性能阵列区的负荷下降后,自动将空余的IOPS能力转移到高容量阵列区上。整个过程自动根据实际负载转移IOPS能力,是自学习自适应的过程。
步骤i,进一步地,根据应用业务对于容量或者性能的需求特性以及磁盘阵列所提供的高性能阵列区和高容量阵列区,调整应用业务的部署。
本发明实施例提供一种存储装置,包括磁盘阵列,还包括:
计算单元,用于确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;
内外圈划定单元,用于根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域;
第一组合单元,用于通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;
第二组合单元,用于依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;
I/O访问缓冲队列单元,用于在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
在一个优选实施例中,内外圈划定单元包括:
分割点模块,用于对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;
设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl
分割点所分割的LBA逻辑扇区总数为L/,占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的LBA(L/3+1,L)
在一个优选实施例中,第一组合单元包括:
条带化数量计算模块,用于采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘HDD1的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数;
条带化地址模块,用于将HDD1中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);
同理,第二磁盘HDD2按照条带化单位的可用容量n/计算,HDD2中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);
镜像条带化模块,用于按照RAID1镜像组合将HDD1与HDD2中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
在一个优选实施例中,第二组合单元包括:
高性能阵列区组合模块,用于将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
在一个优选实施例中,第一组合单元包括:
RAID5组合模块,用于采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;以及
第二组合单元包括:
高容量阵列区组合模块,用于根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
在一个应用场景中,360块900GB10K RPM的磁盘可以向应用层提供51.48TB的高性能并且具有性能QoS保障的可用空间,154.44TB的高容量但性能一般的且无性能QoS保障的可用空间。
采用本方案之后的优势是:提供了将磁盘按扇区特性进行划分,以及符合扇区特性的全新RAID技术。为了提供性能分级的存储服务,应当给VG按照高性能打上HP-VG标签,高容量打上HC-VG标签,便于应用层识别,将LBA逻辑地址包装为普通的LV或VG提供给上层应用,完成内部实现差异的封装,可以根据不同标签来识别不同等级的存储服务,使得能够将营业数据库迁入到HP-VG中,将备份、日志、数据分析系统迁入到HC-VG系统中去。
以及,在磁盘阵列的控制器中引入磁盘I/O队列调度,让磁盘根据2个不同区域划分而提供了不同速率的I/O服务,也就是性能分级服务,对磁盘高性能阵列区部分的I/O请求都是可以得到最优先的服务的。在磁盘阵列控制器与I/O队列之间引入了磁盘I/O队列调度和双缓冲I/O队列,然后通过基于反馈控制的在线动态调整算法来控制HP-VG与HC-VG的速率。这种算法是根据系统输入量的大小进行自我调整的。此算法应用在该发明上最终的效果就是HP-VG的速率在重负荷下可以得到优先保障,当HP-VG的负荷下降后,系统会自动将空余的IOPS能力转移到HC-VG上。整个过程自动根据实际负载,是自学习、自适应的。因此可以根据实际I/O请求输入的大小来调整IOPS服务资源的大小,当HP-VG的I/O请求速率并不高时,在保障该I/O请求的QoS的情况下释放多余的IOPS资源给高容量区域;在保障高性能区域的性能优势的同时,整个磁盘阵列的IOPS资源可以得到最充分的优化和利用。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (18)

1.一种设计磁盘阵列的方法,其特征在于,磁盘阵列包括多个磁盘,磁盘具有高性能区域和高容量区域,方法包括:
确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;
根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;
依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;
在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
2.根据权利要求1所述的方法,其特征在于,确定磁盘阵列中磁盘的数量N包括:
根据阵列高容量区域的容量V,磁盘阵列中磁盘的单盘容量n,计算出满足阵列高容量区域的容量需要的磁盘数量则满足阵列高性能区域的性能需要的磁盘数量P是阵列高性能区域应满足的每秒读写次数IOPS,ρ是单磁盘IOPS,α是缓存的命中率,β是该高性能区域读操作比例;
确定磁盘阵列中磁盘的数量N取N/与N//中的最大值。
3.根据权利要求1所述的方法,其特征在于,根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域包括:
对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;
设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl
分割点所分割的LBA逻辑扇区总数为L',占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的L/3+1~L部分,表示为LBA(L/3+1,L)
4.根据权利要求3所述的方法,其特征在于,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位包括:
采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数,将第一磁盘中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);
同理,第二磁盘按照条带化单位的可用容量n/计算,第二磁盘中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);
按照RAID1镜像组合将第一磁盘与第二磁盘中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
5.根据权利要求4所述的方法,其特征在于,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区包括:
将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷LV的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
6.根据权利要求1所述的方法,其特征在于,依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区包括:
采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;
根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
7.根据权利要求1所述的方法,其特征在于,还包括:
在磁盘阵列控制器的算法中加入新的分类标签器,分类标签器与各磁盘I/O原始队列之前的双缓冲队列连接;
针对来自磁盘阵列控制器的I/O访问进行分类后,分别放入对应的缓冲队列,其中,设定q1中存放访问高性能阵列区的磁盘的队列,q2中存放访问高容量阵列区的磁盘的队列。
8.根据权利要求7所述的方法,其特征在于,还包括:
当磁盘阵列控制器需要根据所述I/O访问对第i块磁盘进行写操作时,先将所述I/O访问按照高性能阵列区和高容量阵列区各自的LBA进行分类,将所述I/O访问缓冲入对应的q1队列或者q2队列中;
将q1队列和q2队列中的数据按照先入先出的顺序赋予不同的速率缓冲入原始队列q,在原始队列q中按照先入先出的顺序等待对磁盘的高性能区域或者高容量区域进行写操作。
9.根据权利要求1所述的方法,其特征在于,还包括:
设定磁盘能够提供的总的应用服务率为θλ,当前I/O访问的应用请求率为R,θλ和R均与IOPS是线性的正比关系,其中θ为0~1之间一个给定常数,与一个系统配置、系统限定的响应时间和实际请求时间有关;
如果R>θλ,不能保障访问高性能阵列区的服务质量,否则能够保障高性能阵列区的服务质量。
10.根据权利要求9所述的方法,其特征在于,当R>θλ,不能保障访问高性能阵列区的服务质量时,还包括:
计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,以及高容量阵列区在第k+1个时间点的应用服务率;
根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率。
11.根据权利要求10所述的方法,其特征在于,计算出高性能阵列区在第k+1个时间点第i块磁盘的应用请求率包括:
在磁盘阵列中,第k个时间点对第i块磁盘的高性能区域的应用请求率为在第k个时间点所有磁盘的高性能区域对应的应用请求率表示为向量: ( r i k ) = r 1 k , r 2 k , . . . , r N k ;
同理,设定第k个时间点对第i块磁盘的高容量区域的应用服务率为在第k个时间点所有磁盘的高容量区域对应的应用服务率表示为向量: &theta;&lambda; ( HC - VC ) i k = &theta;&lambda; ( HC - VC ) 1 k , &theta;&lambda; ( HC - VC ) 2 k , . . . . , &theta;&lambda; ( HC - VC ) N k ;
采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率
12.根据权利要求11所述的方法,其特征在于,采用一元简单线性回归的方式预测第k+1个时间点第i块磁盘的高性能区域的应用请求率包括:
设定一元简单线性回归的配置参数为β0和β1,应用请求率
设定第k+1时间点第i块磁盘的高容量区域应用服务率 &theta;&lambda; ( HC - VC ) i k + 1 = 0 , r i k + 1 &GreaterEqual; &theta;&lambda; &theta;&lambda; - r i k + 1 , r i k + 1 < &theta;&lambda; ;
估计β0和β1的值时,测试k+1个采样时间段的高性能区域的服务请求率分别为x0,x1,x2,....,xk,则 &beta; 1 = &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) ( x j + 1 - y &OverBar; ) &Sigma; j = 0 k - 1 ( x j - x &OverBar; ) 2 , &beta; 0 = y &OverBar; - &beta; 1 x &OverBar; , 其中 x &OverBar; = 1 k &Sigma; j = 0 k - 1 x j , y &OverBar; = 1 k &Sigma; j = 1 k x j ;
确定了第k+1时间点对第i块磁盘的高容量区域的应用服务率按照高性能区域和高容量区域的应用服务率之和是整个磁盘的应用服务率,其中,θλ表示磁盘能够提供的总的应用服务率;则,第k+1时间点对第i块磁盘的高性能区域的应用服务率为 &theta;&lambda; ( HP - VC ) i k + 1 = &theta;&lambda; - &theta;&lambda; ( HC - VC ) i k + 1 = r i k + 1 .
13.根据权利要求12所述的方法,其特征在于,根据高性能阵列区在第k+1个时间点第i块磁盘的应用请求率,调整高性能阵列区和高容量阵列区在第k+1个时间点的应用服务率包括:
当控制器预测到对第i块磁盘的高性能区域的应用请求率增大,则需要减小第i块磁盘的高容量区域的应用服务率使得高性能区域调整后的应用服务率增大并且不小于应用请求率来满足服务质量的需求。
14.一种存储装置,其特征在于,包括磁盘阵列,还包括:
计算单元,用于确定磁盘阵列中磁盘的单盘容量n,以及确定磁盘阵列中磁盘的数量N;
内外圈划定单元,用于根据区域数据记录技术将每一个磁盘的扇区划分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能区域;
第一组合单元,用于通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高性能的条带化单位;
第二组合单元,用于依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合形成高性能阵列区;
I/O访问缓冲队列单元,用于在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性能阵列区的磁盘进行访问的I/O速率。
15.根据权利要求14所述的装置,其特征在于,内外圈划定单元包括:
分割点模块,用于对于单个磁盘,找到将该磁盘划分为磁盘内圈区域和磁盘外圈区域的一个扇区作为分割点,所述分割点应当属于磁盘内圈区域或者磁盘外圈区域;
设定磁盘的LBA逻辑扇区总数为L,一个逻辑扇区的大小是nl字节,磁盘的总可用容量为n字节,则存在线性关系L=n/nl
分割点所分割的LBA逻辑扇区总数为L/,占LBA逻辑扇区的总可用容量L的1/3,高性能区域位于每一个磁盘LBA地址的1~L/3部分,表示为LBA(1,L/3),高容量区域位于每一个磁盘LBA地址的LBA(L/3+1,L)
16.根据权利要求15所述的装置,其特征在于,第一组合单元包括:
条带化数量计算模块,用于采用RAID1原理对各个磁盘的高性能区域条带化形成多个条带化单位作为第一层逻辑卷,包括:对于磁盘阵列中第一磁盘的高性能区域,设定磁盘的条带化单位的可用容量为n/,一个逻辑扇区大小是nl字节,则条带化单位的可用容量占用的LBA地址数量为n//nl个,高性能区域的可用磁盘条带化数量S=L*nl/3n/,其中,L为单个物理磁盘的逻辑扇区数;
条带化地址模块,用于将第一磁盘中高性能区域第x个条带化单位LBA地址范围表示为x∈(1,S);
同理,第二磁盘按照条带化单位的可用容量n/计算,第二磁盘中高性能区域第x个条带化单位LBA地址范围表示是x∈(1,S);
镜像条带化模块,用于按照RAID1镜像组合将第一磁盘与第二磁盘中的条带化后的地址范围映射到高性能区域的LBA地址范围表示为LBA(1,L/3),其余磁盘的高性能区域也通过两两组合,得到N/2个组合的逻辑卷的LBA地址表示范围。
17.根据权利要求16所述的装置,其特征在于,第二组合单元包括:
高性能阵列区组合模块,用于将第一层逻辑卷再进行一次条带化操作得到高性能阵列区的第二层逻辑卷的LBA地址表示范围为LBA(1,NL/6),根据RAID0原理进行组合之后,整个高性能阵列区的逻辑卷的LBA最终映射到每一块磁盘上的LBA地址均在LBA(1,L/3)之内,所有的读写操作均在相当于磁盘总容量1/3的磁盘外圈区域。
18.根据权利要求15所述的装置,其特征在于,
第一组合单元包括:
RAID5组合模块,用于采用RAID5原理对各个磁盘的高容量区域条带化形成多个条带化单位作为第一层逻辑卷;以及
第二组合单元包括:
高容量阵列区组合模块,用于根据RAID0原理对第一层逻辑卷进行组合之后,整个高容量阵列区的第二层逻辑卷的LBA映射到每一块磁盘上的LBA地址均在LBA(L/3+1,L)之内,所有的读写操作均在相当于磁盘总容量2/3的内圈部分。
CN201410168510.XA 2014-04-24 2014-04-24 一种设计磁盘阵列的方法和存储装置 Active CN105022587B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410168510.XA CN105022587B (zh) 2014-04-24 2014-04-24 一种设计磁盘阵列的方法和存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410168510.XA CN105022587B (zh) 2014-04-24 2014-04-24 一种设计磁盘阵列的方法和存储装置

Publications (2)

Publication Number Publication Date
CN105022587A true CN105022587A (zh) 2015-11-04
CN105022587B CN105022587B (zh) 2018-05-08

Family

ID=54412583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410168510.XA Active CN105022587B (zh) 2014-04-24 2014-04-24 一种设计磁盘阵列的方法和存储装置

Country Status (1)

Country Link
CN (1) CN105022587B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105549910A (zh) * 2015-12-14 2016-05-04 浪潮(北京)电子信息产业有限公司 一种io调度方法及装置
CN106027642A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 用于确定cdn节点磁盘数量的方法及系统
CN106557268A (zh) * 2015-09-29 2017-04-05 联想企业解决方案(新加坡)有限公司 向共存raid 5奇偶校验流中合并的raid 1镜像
CN107301109A (zh) * 2017-06-23 2017-10-27 郑州云海信息技术有限公司 一种硬盘质量筛选方法及装置
CN108228076A (zh) * 2016-12-14 2018-06-29 华为技术有限公司 访问磁盘的方法和主机
CN108446399A (zh) * 2018-03-29 2018-08-24 重庆大学 一种结构化海量实时数据的动态存储优化方法
CN109324762A (zh) * 2018-10-11 2019-02-12 郑州云海信息技术有限公司 一种存储系统的构建方法、装置、设备及存储介质
CN109491610A (zh) * 2018-11-07 2019-03-19 郑州云海信息技术有限公司 一种基于硬盘配置的存储带宽分析方法及装置
CN110275669A (zh) * 2018-03-15 2019-09-24 杭州海康威视数字技术股份有限公司 数据存储方法、装置及电子设备
CN111338566A (zh) * 2018-12-19 2020-06-26 美光科技公司 存储器子系统中的功率损耗保护
CN117149098A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 一种条带单元分配方法、装置、计算机设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526885A (zh) * 2009-04-21 2009-09-09 杭州华三通信技术有限公司 一种提升独立磁盘冗余阵列性能的方法及其控制器
US20100290150A1 (en) * 2009-05-15 2010-11-18 Kabushiki Kaisha Toshiba Disk controller, disk drive device, and disk control method
CN103577115A (zh) * 2012-07-31 2014-02-12 华为技术有限公司 数据的排布处理方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526885A (zh) * 2009-04-21 2009-09-09 杭州华三通信技术有限公司 一种提升独立磁盘冗余阵列性能的方法及其控制器
US20100290150A1 (en) * 2009-05-15 2010-11-18 Kabushiki Kaisha Toshiba Disk controller, disk drive device, and disk control method
CN103577115A (zh) * 2012-07-31 2014-02-12 华为技术有限公司 数据的排布处理方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谢长生等: "《一种高性能RAID系统的设计和实现》", 《计算机工程与科学》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106557268B (zh) * 2015-09-29 2020-05-15 联想企业解决方案(新加坡)有限公司 一种存储数据的方法
CN106557268A (zh) * 2015-09-29 2017-04-05 联想企业解决方案(新加坡)有限公司 向共存raid 5奇偶校验流中合并的raid 1镜像
CN105549910B (zh) * 2015-12-14 2018-09-07 浪潮(北京)电子信息产业有限公司 一种io调度方法及装置
CN105549910A (zh) * 2015-12-14 2016-05-04 浪潮(北京)电子信息产业有限公司 一种io调度方法及装置
CN106027642A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 用于确定cdn节点磁盘数量的方法及系统
US11321013B2 (en) 2016-12-14 2022-05-03 Huawei Technologies Co., Ltd. Disk access method and host
CN108228076A (zh) * 2016-12-14 2018-06-29 华为技术有限公司 访问磁盘的方法和主机
CN108228076B (zh) * 2016-12-14 2020-10-16 华为技术有限公司 访问磁盘的方法和主机
CN107301109B (zh) * 2017-06-23 2020-08-21 苏州浪潮智能科技有限公司 一种硬盘质量筛选方法及装置
CN107301109A (zh) * 2017-06-23 2017-10-27 郑州云海信息技术有限公司 一种硬盘质量筛选方法及装置
CN110275669A (zh) * 2018-03-15 2019-09-24 杭州海康威视数字技术股份有限公司 数据存储方法、装置及电子设备
CN110275669B (zh) * 2018-03-15 2022-11-25 杭州海康威视数字技术股份有限公司 数据存储方法、装置及电子设备
CN108446399A (zh) * 2018-03-29 2018-08-24 重庆大学 一种结构化海量实时数据的动态存储优化方法
CN108446399B (zh) * 2018-03-29 2021-07-30 重庆大学 一种结构化海量实时数据的动态存储优化方法
CN109324762A (zh) * 2018-10-11 2019-02-12 郑州云海信息技术有限公司 一种存储系统的构建方法、装置、设备及存储介质
CN109491610A (zh) * 2018-11-07 2019-03-19 郑州云海信息技术有限公司 一种基于硬盘配置的存储带宽分析方法及装置
CN111338566A (zh) * 2018-12-19 2020-06-26 美光科技公司 存储器子系统中的功率损耗保护
CN117149098A (zh) * 2023-10-31 2023-12-01 苏州元脑智能科技有限公司 一种条带单元分配方法、装置、计算机设备及存储介质
CN117149098B (zh) * 2023-10-31 2024-02-06 苏州元脑智能科技有限公司 一种条带单元分配方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN105022587B (zh) 2018-05-08

Similar Documents

Publication Publication Date Title
CN105022587B (zh) 一种设计磁盘阵列的方法和存储装置
US9229653B2 (en) Write spike performance enhancement in hybrid storage systems
CN102622189B (zh) 存储虚拟化的装置、数据存储方法及系统
US8363519B2 (en) Hot data zones
CN104285214B (zh) 混合储存集合块跟踪
US8706962B2 (en) Multi-tier storage system configuration adviser
US9542125B1 (en) Managing data relocation in storage systems
US8762672B2 (en) Storage system and storage migration method
US8447946B2 (en) Storage apparatus and hierarchical data management method for storage apparatus
JP5944587B2 (ja) 計算機システム及び制御方法
US9274941B1 (en) Facilitating data migration between tiers
US10353616B1 (en) Managing data relocation in storage systems
US9405583B2 (en) Resource provisioning based on logical profiles and piecewise objective functions
CN106293511B (zh) 一种面向连续数据存储的动态局部并行数据布局方法
US9569268B2 (en) Resource provisioning based on logical profiles and objective functions
US10481820B1 (en) Managing data in storage systems
CN101976181A (zh) 一种存储资源的管理方法及管理装置
CN102147713A (zh) 一种网络存储系统的管理方法及装置
CN110770691A (zh) 混合数据存储阵列
US10152242B1 (en) Host based hints
CN101997919B (zh) 一种存储资源的管理方法及管理装置
JP2018197933A (ja) ストレージ制御装置、情報処理システムおよびプログラム
US9069471B2 (en) Passing hint of page allocation of thin provisioning with multiple virtual volumes fit to parallel data access
JP2015158711A (ja) ストレージ制御装置、仮想ストレージ装置、ストレージ制御方法、及びストレージ制御プログラム
US20190057121A1 (en) Predictable Allocation Latency in Fragmented Log Structured File Systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant