一种设计磁盘阵列的方法和存储装置的制造方法
【技术领域】
[0001] 本发明涉及存储技术,特别是指一种设计磁盘阵列的方法和存储装置。
【背景技术】
[0002] 在互联网和通信行业中,数据存储一直是业务的有力支撑,同时也是各公司对内 对外IT系统中的核心。当今现有的数据存储主要是通过磁盘驱动器(简称:磁盘,HDD,Hard DiskDrive)来实现,其包括三部分:一个或者多个铝制或者玻璃制的可以通过磁化来存储 数据的盘片(碟片),主轴马达,通过感应、改变盘片相应位置的磁场而读取、写入数据的一 个或多个(一般为盘片数量的2倍)磁头。磁盘的存储数据主要是存储在磁盘盘片上,盘 片主要由磁道(Track)和扇区(Sector)组成。
[0003] 如图1所不,一块磁盘所有盘片上的同一磁道构成一个圆柱,称作柱面 (Cylinder),每个圆柱上的磁头由上而下从0开始编号。数据的读/写按柱面进行,即磁头 读/写数据时首先在同一柱面内从〇磁头开始进行操作,依次向下在同一柱面的不同盘片 即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面。
[0004] 区域数据记录技术(ZDR,ZoneDataRecording)。磁盘主轴的工作方式是恒定角 速度,单位时间内放置的角度一致(CAV,ConstantAngularVelocity),而盘片最外圈的周 长比最内圈的周长要长很多,磁头在最外圈时,走过的距离最长,如果最内圈与最外圈磁道 的扇区数相同,必将造成极大的存储空间的浪费。ZDR技术从磁盘的最外圈划分出若干个区 域,每个区域内的每磁道扇区一致,但靠内的区域比外侧的区域的每磁道扇区数要少,可以 根据不同的磁道长度来合理设定扇区的数量,以达到充分利用磁盘存储空间的目的。如图 2所示,大多数磁盘按照16个区域划分,最外圈的每磁道扇区数正好是最内圈的一倍,与最 大的持续传输率的参数基本成比例。对于同一 ±夬磁盘,每一个扇区占用的磁道长度相等,外' 圈由于磁道长度比内圈长,所以外圈比内圈部署更多的扇区以达到更高的磁盘利用率。
[0005] 寻道速度/时间:设定一次随机寻道磁头的起始位置与终点位置都位于同一磁道 上,之间间隔4个扇区的简化情况,对应该随机读写的寻道时间是t。
[0006] 设定一个磁盘每条扇区占用的磁道长度为S,转速为P(RPM,RoundPerMinute), 盘片的对应磁道的半径为R。设定内圈的角速度为《,那么《 = 2Jif= 2jtP/60 =jtP/30, 设定磁道的线速度为u,那么u=coR=jtPR/30,对应寻道时间t= 4s/u=120s/jtPR, 磁盘的寻道时间与磁道对应的盘片半径R成反比,磁道越靠外盘片半径R越大,寻道时间越 短,寻道速度越快。
[0007] 数据读/写速度。磁头对于一个扇区的数据的读写的速度由3个因素所决定:磁 头本身的物理读写速度,盘片感应到磁头读写后生产数据的物理速度,扇区到扇区之间的 转换速度;而最后一个因素直接与磁盘在该扇区的移动速度有关。前两个因素在同一块或 者同一型号的磁盘内,可以认为其速度是无个体差异并一致的,而且不会对第三个因素产 生瓶颈。那么对于同一块或者同一型号的多块磁盘,其读/写一个扇区的速度是与扇区的 移动速度有关。根据之前寻道速度段落中的推导,该速度就是磁盘盘片在该扇区的线速度 U=c〇R=jtPR/30,其寻道时间的推导公式为t= 4s/u=120s/jtPR,可以看到,扇区数 据的读写速度也与磁道对应的盘片半径成反比,磁道越靠外盘片半径越大,扇区移动速度 越快,扇区数据的读写速度越快。
[0008] 如图3所示,典型的容量为500GBHDD的寻道时间和读取速度测试,测试的结果横 轴对应位置为从外圈开始标为0GB,直到最内圈结束,标示为500GB。一个点模拟了一次随 机读写的过程并记录了该读写与上次读写所耗费的间隔时间,随着磁盘的随机读写位置越 靠近最内圈,寻道所耗费的时间越长。
[0009] 如图3所示,曲线模拟了磁盘在每一个磁道(容量区域)对应的一块数据的连续 读写速度,随着磁盘的读写位置越靠近最内圈,读写的速度越慢。并且,磁盘最外圈的读写 速度(约130MB/S)大约为最内圈读写速度(约60MB/S)的2倍,与ZDR的推论一致-磁盘 设定的最外圈扇区数量为最内圈扇区数量的2倍。
[0010] 综上,现有磁盘扇区的分布特性决定了对于同一块或同一型号的多个磁盘,磁盘 的外圈随机寻道的速度会更快,并且数据的读写速率也会更高。
[0011]独立磁盘冗余阵列(RAID,RedundantArrayofIndependentDisks),是将相同 的数据存储在多个磁盘的不同的地方,通过将数据放在多个磁盘上,输入输出操作能以平 衡的方式交叠,改良性能。最基本和常用的是RAID0、RAID1和RAID5。
[0012]RAID0是组建磁盘阵列最简单的一种形式,需要2块或2块以上的磁盘,通过数据 条带化(DataStripping)技术,可以提高整个磁盘的性能和吞吐量。但如果任何一块磁盘 出现故障,整个磁盘阵列将会受到破坏,可靠性仅为单独一块磁盘的1/N。
[0013]RAID1是磁盘镜像,是将一个磁盘的数据镜像到另一个磁盘上,数据在写入一块磁 盘的同时会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证磁 盘阵列的可靠性和可修复性上,只要任何一对镜像盘中至少有一块磁盘可以使用,甚至可 以在一半数量的磁盘出现问题时都可以正常运行,当一块磁盘失效时,系统会忽略该磁盘, 转而使用剩余的镜像盘读写数据。在某块磁盘失效而替换新磁盘时,整个RAID1的重建时 间为1个磁盘的镜像重建时间,且在此期间仅重建的那块磁盘的性能会下降。
[0014]RAID5将数据条块化地分布于不同的磁盘上,条块单位为bit或字节,并在所有磁 盘上交叉地存取简单的奇偶校验编码来提供错误检查及恢复。如果一块磁盘失效,其他磁 盘上的数据以及奇偶校验可以重新产生失效盘中的数据。RAID5兼顾存储性能、数据安全和 存储成本,在某块磁盘失效而替换新磁盘时,整个RAID5的重建时间为1个磁盘数据和校验 数据的时间,由于其数据需要其余各个磁盘进行奇偶校验得到,所以重建速度比RAID1镜 像重建时间要长得多,并且在此期间整个RAID5中所有磁盘的性能都会严重下降。
[0015] 高性能商业用存储系统更多的使用RAID10和RAID50。
[0016]RAID10是指先将2块磁盘一组使用RAID1镜像,然后将这些组RAID1镜像再使用 条带化的方式组合起来,这样既拥有RAID0的速度,又同时拥有RAID1级别的安全保障以及 重建优势。缺点是单位存储造价非常高。
[0017] RAID50是指先将一组磁盘使用RAID5镜像,然后将这些组RAID5镜像再使用条带 化的方式组合起来。这样的组织形式使得RAID50拥有更高的容错能力,具备更快数据读取 速率,重建速度会更快,且重建的时候性能影响会局限在一组RAID5磁盘中而不会扩展到 整个RAID50磁盘阵列。
[0018] 磁盘阵列是对RAID的物理实现,根据存储网络国际协会(SNIA)的定义,磁盘阵列 子系统(diskarraysubsystem)及可将其磁盘组织起来的控制程序的磁盘子系统和磁盘 本身构成了该实现。在物理的角度,磁盘阵列最为主要的部件是阵列控制器和磁盘柜。
[0019] 阵列控制器主要作用是通过其内置的控制程序实现整个阵列的管理。控制器是一 种介于主机和磁盘之间的控制单元,配置有专门为I/O进行过优化的处理器以及一定数量 的cache。控制器上的CPU和cache共同实现对来自主机系统I/O请求的操作和对磁盘阵 列的RAID算法的计算处理。同时,控制器有一个或多个主机接口接收主机对磁盘阵列的1/ 〇请求,这些主机接口可以直接或间接通过光纤交换机与主机连接(存储SAN网络)。此外 各种管理接口,如串口、以太网口等也在控制器上。
[0020] 磁盘柜用于放置磁盘。磁盘通过磁盘接口规范与控制器进行连接,这样控制器就 可以将最终主机的I/O数据请求按照各个RAID的算法传达到对应的磁盘上了。商业化高 性能磁盘阵列中,磁盘柜的接口规范按照性能递增主要有SATA、SAS和FC。
[0021] 随着各个行业对数据存储、数据服务等IT支撑类系统提出了越来越多的要求,无 论是数据容量要求还是性能要求都已今非昔比,上PB级别的存储、上千万级别的每秒读写 次数(I〇PS,Input/Output Operations Per Second)随处可见。但是企业对IT数据的服务 要求也并不是单一只需要I0PS性能级服务的。企业往往在对自己客户的数据支撑服务中, 为了得到良好的客户感知,需要大大缩短客户的数据查询、更新等待时间,这类联机事务处 理系统(OLTP, On-Line Transaction Processing)类应用需要非常大量的I0PS资源,但 却相对不需要大量的存储容量。企业也会在运营中积累大量的数据,这类大数据中也许蕴 含着对自身有利的商业信息,所以数据分析这类联机分析处理(0LAP,On-Line Analytical Processing)系统的需求也非常的普遍,但0LAP不需要太大的I0PS,对服务时间也不敏感, 但是大量的原始数据的累积会消耗非常多的存储容量资源。
[0022] 现有技术存在如下问题:磁盘阵列内部并未考虑过针对以上性能需求和容量需求 的分级服务。比如,较高端的磁盘阵列伴随着较高端的性能以及较昂贵的扩容成本,为了搭 建一个高性能的0LTP系统往往需要一台配置全量的控制系统,但伴随着数量并不多的磁 盘,也许远远没有达到该磁盘阵列扩容磁盘数量上限的磁盘阵列。特别的,在一些非常高性 能需求的磁盘阵列中(如BOSS的帐务系统),为了提升整个数据库的性能,需要将一个VG 跨越更多的磁盘来保障性能。在如此的环境下,该系统需要的磁盘数量不是由实际需求容 量决定的,而是由性能决定的。此时,磁盘阵列为了满足应用性能所需磁盘数量往往是大于 应用实际容量所需的磁盘数量,这样就会空余一部分容量出来。但是,如果将其它应用部署 在空余容量部分会造成对原有应用的I0PS竞争,损害其性能的同时自己的性能也无法得 到保障。因此,在实践中,这部分容量常常被用来部署低I0PS消耗的应用。即使如此,有时 低I0PS的应用在高I0PS的1/0访问负荷非常大时,仍然会对性能产生影响。所以,有时在 为了绝对保障高I0PS应用的性能,而不部署任何应用在空余容量部分,任其浪费掉。
[0023] -个0LAP系统至少需要上百TB的容量,而控制器则需要半量的配置性能就已足 够,这种环境下,也许磁盘柜的磁盘数量已经达到了该磁盘阵列的最大扩容上限,而控制器 配置性能却仅仅是满性能的几分之一而已。
[0024] 当一个磁盘阵列遇到以上两种情况时,其实均没达到一个最佳的可用性能/实际 性能比。事实上,在很多企业中,针对这两种情况一般都是购买同样的但是两套独立的磁盘 阵列来满足需求。
【发明内容】
[0025] 本发明要解决的技术问题是提供一种设计磁盘阵列的方法和存储装置,现有技术 中,无法兼顾0LTP和0LAP对于磁盘阵列的需求的缺陷。
[0026] 为解决上述技术问题,本发明的实施例提供一种设计磁盘阵列的方法,磁盘阵列 包括多个磁盘,磁盘具有高性能区域和高容量区域,方法包括:确定磁盘阵列中磁盘的单盘 容量n,以及确定磁盘阵列中磁盘的数量N;根据区域数据记录技术将每一个磁盘的扇区划 分为磁盘内圈区域和磁盘外圈区域,磁盘内圈区域是高容量区域,磁盘外圈区域是高性能 区域,通过对高容量区域和高性能区域的扇区进行条带化,形成高容量的条带化单位和高 性能的条带化单位;依据不同的磁盘阵列组合原理对磁盘阵列的所有磁盘中的高容量的条 带化单位进行组合形成高容量阵列区,以及对所有磁盘中的高性能的条带化单位进行组合 形成高性能阵列区;在磁盘阵列控制器的各磁盘I/O原始队列之前,增加一个分类的双缓 冲队列,所述双缓冲队列中的每一个缓冲队列基于反馈算法控制该缓冲队列中的I/O访问 到达所述原始队列的速率,从而控制所述原始队列中的I/O访问对高容量阵列区或者高性 能阵列区的磁盘进行访问的I/O速率。
[0027] 所述的方法中,确定磁盘阵列中磁盘的数量N包括:根据阵列高容量区 域的容量V,磁盘阵列中磁盘的单盘容量n,计算出满足阵列高容量区域的容量 需要的磁盘数量N'i二pF/nl则满足阵列高性能区域的性能需要的磁盘数量 P是阵列高性能区域应满足的每秒读写次数 I0PS,P是单磁盘I0PS,a是缓存的命中率,0是该高性能区域读操作比例;确定磁盘阵 列中磁盘的数量N取N7与N〃中的最大值。
[0028] 所述的方法中,根据区域数据