磁共振成像
主办单位:中华人民共和国国家卫生和计划生育委员会
国际刊号:1674-8034
国内刊号:11-5902/R
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:20327 人次
 
    本刊论文
RAID0请求性能的模拟评估_磁盘阵列

  论文摘要:对磁盘阵列技术性能的评估,若是直接通过对硬件的测试来评估的话,所耗费的时间、金钱和工作量是很大的,并且测试结果的准确性又不高,于是可配置的模拟测试系统在此发挥了作用。本文在多模块结构性能评估模型的基础上,实现了具体模块的性能模拟和分析,设计了一个RAID0的模拟测试软件,并将单磁盘作为对比,通过模拟单磁盘与磁盘阵列处理I/O请求的过程,配置相同的参数,即请求个数,旋转速度等,通过时间计算函数算出各自处理的时间,最终计算出数据传输率,由此看出性能的高低。

  论文关键词:磁盘阵列,多模块结构,模拟

  1.引言

  磁盘阵列将多个磁盘进行组合,通过I/O并行性和数据冗余机制,提供高性能、高可靠度的数据存取服务,已成为构建大规模存储系统的基本组成部分。磁盘阵列研究的目标,就是最大限度地开发其所具有的潜力和优势,满足不同存储应用的要求,选择以模拟的方式来测试磁盘阵列的性能不失为一种高效,准确,方便及低投入的方法。

  好的评估模型可以帮助研究开发人员,充分了解所用网络存储技术的特性与存储应用上的不足,以便找到更好的优化策略配置存储系统,或者找到有效的优化方法来优化存储系统。多模块结构性能评估模型的方法研究,适用于不同的磁盘阵列的性能评估,选择合适的模块组合,并按每个模块选择合适的功能参数与策略,这样既有利于比较不同类型磁盘阵列的性能,也有利于比较同类磁盘阵列的不同优化策略的性能,从而有利于设计和配置更适合给定存储应用类型的磁盘阵列。

  本文给出一个基于多模块结构模型的RAID0的设计和实现。首先,给出多模块结果模型的模块划分、功能分配和应用方法;然后,以多模块结构为理论基础,将RAID0所涉及的模块采用MFC编程实现;最后,将RAID0的测试结果与单磁盘对比分析。

  2.多模块结构的评估模型

  经过许多存储技术的分析,我们可以给出一个通用的、可配置、多模块结构模型,从存储结构的角度我们引出以下几个基本模块:

  (1)主机模块H,往往处在存储I/O路径的开始或者中间位置,具有三个角色:客户、服务器和文件管理器。客户产生存储应用请求,服务器负责收集应用请求,而文件管理器负责分流应用请求或产生内部数据请求,以便反映不同存储系统状态(正常、降级、重建与扩展)改变的影响。

  (2)阵列控制器模块C,集中了阵列技术的控制功能,涉及数据布局的冗余信息处理操作、逻辑磁盘请求的分解与合并。

  (3)带宽模块B,是请求数据传输的共享部分,多个请求数据的传输受它的带宽限制。一般有三种带宽模块:总线Bb、互联网Bn和光纤通道Bf。实际上总线还有PCI、SCSI和其他总线之分。各种带宽模块的传输开销是不一样的。

  (4)控制模块C',有三种功能配置:部分C模块的功能、支持网络或通道的传输功能和支持面向对象存储功能。

  (5)磁盘模块D,是阵列存储应用I/O路径的终点。给阵列分解的磁盘请求定位到适当位置然后完成I/O操作。这样得到每个子请求的服务时间和完成时间。

  (6)转换模块T,是两个带宽模块的传输格式转换接口。有六种不同的转换模块:总线与总线T(b,b)、总线与互联网T(b,n)、总线与光纤通道T(b,f)、互联网与互联网T(n,n)、互联网与光纤通道T(n,f)以及光纤通道与光纤通道T(f,f)。

  (7)无关模块X,综合了其他信息流对带宽模块的影响,不是存储应用的有用成分,例如,对总线模块而言,X模块代表总线其他设备成分对总线带宽的占用,而对于互联网络模块,X模块代表来自网上其他网络信息流对网络带宽的占用。

  (8)/:用来表示模块的合并作用。例如,H/C’表示网络磁盘阵列中的客户主机兼有阵列控制器的部分功能,而H/C表示存储服务器具有软磁盘阵列的控制器功能。

  基于某种存储技术存储结构可以用这些模块的组合得到一个评估模型,如图1所示。

  图1几个存储系统的模块结构

  3.设计分析

  该设计模拟实现了RAID0和单磁盘。同时,也只实现了主机模块H、磁盘模块D以及控制模块C的RAID0和单磁盘部分。对于带宽模块B、控制模块C'、转换模块T、无关模块X的影响,这里未作考虑。

  4.1总体思路

  首先,会根据用户输入的请求个数和请求类型,随机生成一组请求,这组请求的逻辑地址和请求大小都是随机产生。然后,根据用户输入的磁盘个数、阵列级别以及条状块大小,是把请求分配到磁盘上,即地址映射,对于单磁盘与磁盘阵列地址映射是不同的(这在下面有详细说明)。接下来,就是请求在磁盘上的调度,在此次设计中我选择的是扫描算法SCAN。最后,就是根据用户选择的磁盘转速,由时间计算函数计算出单磁盘与磁盘阵列处理这组请求分别所用的总时间,从而比较单磁盘与磁盘阵列的效率,到达模拟仿真的目标。

  该设计的核心部分就是单磁盘与多磁盘的效率比较,而其比较的实现主要在于阵列的地址映射和单个磁盘的地址映射的不同。

  单磁盘地址映射:由逻辑地址直接转化为物理地址,即随机产生的逻辑地址除以扇区大小,得到起始扇区号,进而又算出磁道号以及要读的扇区个数。

  磁盘阵列的地址映射:同单磁盘一样,也是先随机产生逻辑地址,然后算出起始扇区号,磁道号及要读的扇区个数。但其与单磁盘的区别在于对每一个请求,有几个磁盘同时工作,会把该请求分配到不同的磁盘上,形成新的请求组,于是每个磁盘的工作量减少,效率也随之提高。当一个请求被处理完后,处理时间最长的那个磁盘所对应的时间作为该请求的时间。

  4.2模块设计

  在该设计中,主要涉及三大模块:

  (1)主机模块H:主要功能是I/O请求生成。编写了一个请求生成函数Generate_Req(),该函数完成了对请求逻辑地址的生成,由于要符合现实情况,在生成请求的逻辑地址和逻辑长度时,要判断它们是否超过磁盘的总容量。于是就是涉及到总容量的计算:磁道×扇区×扇区大小。当请求的逻辑起始地址+逻辑长度>总容量时,不符合要求,返回并重新生成逻辑地址和逻辑长度。

  (2)控制模块C:主要功能是I/O请求分配。编写了一个请求分配函数Separate_Req(std::vector),该函数完成了地址映射,从逻辑地址及逻辑请求大小转换为物理地址及物理请求大小。单磁盘是由逻辑地址和逻辑长度直接算出对应的磁道号、扇区号和扇区个数。而对磁盘阵列,由于要分配到几个磁盘上,就涉及到条状块,即请求分配到几个磁盘上的单位大小。由此使一个请求分配到几个磁盘上,提高并行度,从而提高处理请求的效率。根据条状块就可以算出分配请求的磁道号、扇区号及扇区个数,从而实现地址的映射,算出对应的物理地址。

  当一个请求被处理完后,处理时间最长的那个磁盘所对应的时间作为该请求的时间。这里用到了两个特殊处理:

  只需考虑起始盘的情况,其它盘不需考虑。因为起始盘所分得的数据量总是最大的,则其处理时间理论上应该是最长的,所以可以将其处理时间作为当前请求的处理时间。

  对于一个盘来说,也就是起始盘,该盘所分得的一组子请求的物理地址是连续的。所以,这里的磁道号和扇区号都只求第一个子请求的,扇区数就为几个子请求的相加。

  (3)磁盘模块D:主要功能是磁盘调度和处理时间计算。编写了一个磁盘调度函数和处理时间计算函数。

  首先,磁盘调度选择的是SCAN算法(即电梯调度算法),由此对请求排序,从而使处理请求时有个先后顺序,达到提高效率的目的。在这个调度算法中,会根据磁道号选择最优的处理顺序,最先处理最近及磁道号递增的请求,然后再返回来处理磁道号递减的请求。随机产生当该组请求到达时的磁头位置,保证了真实性。

  然后,处理时间计算函数给定n个磁盘请求的等待队列R1,R2,…,Rn,它们对应完成时间分别为T1,T2,…,Tn。这样,它们占用磁盘的总时间为:

  式中,T,T和T分别为第k个请求的查找时间,旋转延迟和传输时间。同一磁盘,请求相互依赖。第k个请求可以用参数(C,S,B)形式化,其中C,S和B分别表示要到达的柱面号、要读的起始扇区号和要读的扇区个数。TD=B/(rN),其中N为对应磁道上的扇区数,r为旋转速度,以转/分(rpm)作为单位。用旋转一个扇区的时间作为基本时间单位τ=1/(rN),例如HP97560,N=72,r=4002,所以τ=0.21ms。一般地,查找时间表示为查找所经历的柱面数nt的函数:

  在该设计中,a=3.24,b=0.40,c=8.20,d=0.0075,n0=383。

  查找和旋转时间依赖于磁盘所处磁臂和旋转位置。因此考虑两个磁盘请求且假定具有参数(C,S,B)的第k-1请求紧靠在具有参数(C,S,B)的第k个请求前。第k-1个请求完成后磁头停在柱面C处,而旋转位置在起始扇区。第k个请求在柱面C处寻道,在C处结束。所经历寻道距离为d(R,R)=g|CC|,其中g为紧相邻磁道间距离。参数n=|CC|,得到查找时间T(|CC|)。以一个扇区作为时间单位,查找时间内盘片旋转接近个扇区。查寻后旋转位置为。

  如果,则要经过旋转个扇区后才能开始传输数据;否则要经过个扇区才能开始传输数据。这是旋转延迟的部分。第k个请求真正用于数据传输的时间为T=τ×B,而其它时间用于磁盘定位操作,一般称之为磁盘定位时间或称为磁盘访问时间T。传输结束,旋转位置在。第k个请求存储服务时间可以按下面的公式计算:

  从上面可以看到相邻请求之间的磁道、扇区和传输的扇区数对旋转位置的依赖。得到的总的时间就是处理该组请求的处理时间。最后,将得到的单磁盘与磁盘阵列处理请求的时间并比较,就可以达到此次设计的目的。

  4.性能测试与分析

  按照上述设计思路,在VC++的环境下实现性能测试的模拟,运用MFC对建立好的模拟模块具体实现。为了测试多磁盘下I/O请求的性能,选择了对RAID0技术的模拟,为了使测试结果的可信性强,不但在对磁盘配置相应的性能参数要符合实际,还要有比较对象,此次设计选用了与单磁盘下执行I/O请求性能模拟的比较,在配置参数时要与多磁盘的参数相同,磁盘调度算法也要选择相同的。这样运行结果才有可比性,也就是对磁盘阵列性能近一步的分析和了解。软件的界面如图2所示。

  图2软件界面

  一个盘面的磁道数设定为1964个,一个扇区的大小为512B,一个磁道的扇区数为72个。需要用户输入的参数:磁盘转速(能选5400rpm或7200rpm)、磁盘个数、阵列级别(这里只实现了RAID0)、条状大小、请求类型以及请求个数。磁盘个数、阵列级别和条状块大小,只是磁盘阵列的参数,与单磁盘无关。

  这里,主要测试条状快大小和磁盘个数对RAID0处理效率的影响。在测试条状快大小对RAID0的性能的影响时,RAID0的磁盘个数设定为2;在测试磁盘个数对RAID0的性能的影响时,RAID0的条带快大小设定为10KB。磁盘转速选定的是5400rpm,具体测试性能见图3和图4。

  图3条状快大小对RAID0的影响

  由图3可知,当条状块大小在比较小的范围内时,RAID0的性能较高;但条状块过大,反而使RAID0的性能降低,当条带块在80KB时,RAID0的性能接近单磁盘。

  图4磁盘个数对RAID0的影响

  由图4可知,随着RAID0的磁盘个数的增加,则其性能增高;但当RAID0的磁盘个数增加到一定限度后,RAID0曲线趋向平缓,此时RAID0的处理效率更多是取决于单个磁盘的性能。

  5.结论

  测试结果验证了RAID0的请求处理性能一般比单磁盘要高,并说明了条带块大小和磁盘个数对RAID0的影响。随着条带块的不断增大,RAID0的性能会降低,到达一定限度时,接近单磁盘的性能。这是因为条带快过大,单一I/O请求只用到一个磁盘,其他磁盘并未起作用。随着磁盘数量的不断增加,RAID0的性能并未持续提高,到达一定限度后,性能曲线会趋向平缓,性能不再会明显提升。这是因为磁盘个数达到一定数量后,RAID0性能就更多的取决于磁盘的物理性能,比如转速、寻道时间等。

  RAID0在所有RAID级别中效率最高,但却是惟一不具有容错性的,极大地增加了数据的安全隐患。下一步将在软件实现其他RAID级别,并考虑带宽模块B、控制模块C'、转换模块T、无关模块X的影响,以进一步提高该软件的适用性。

特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《磁共振成像》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《磁共振成像》编辑部  (权威发表网)   苏ICP备20026650号-8