冬瓜头答疑:磁盘阵列内部FC-AL的性能问题

作者:冬瓜头出处:IT专家网2009-08-03 09:59
 

问:

  大多数磁盘阵列都是通过两个控制器后端的端口,组成1/2/4条FC-AL环,来连接所有磁盘。

  FC-AL仲裁环的协议规定,同一时刻只有两个设备能传送数据,也就是说,在一条FC-AL环里面,控制器的一个后端端口充当了发起者的角色,环上的一个硬盘充当了目的地的角色,在一个时刻里,后端端口发出数据读写指令,只有一个硬盘能响应这个指令并传输数据。

  那是否就意味着,一条FC-AL环的总体性能,取决于一个硬盘的读写性能?15K转速的硬盘,持续读写带宽不到70MB/S,IOPS不到400。那像IBM DS4800、EMC CX-80之类的,总共4条环,后端的性能岂不是只有280MB/S、1600 IOPS?除了以阵列里CACHE来提高速度,我不知道有没有别的办法,或者,磁盘阵列内部采用的不是工业标准的FC-AL?

答:

  这个问题非常好,而且也非常经典。要解释这个问题,需要明白三点:

  1.FCAL的传输通道的确同一时刻只允许两点间独占通道带宽来传输数据。

  2.控制器在有足够IO请求的情况下绝对不会让通道闲着,会充分利用带宽。

  3.磁盘的外部传输率和内部传输率。FCAL环路上存在多个设备的时候,由于控制器的轮询策略充分利用带宽,整个系统在外体现为一个永远都在读写数据状态而不是寻道状态的大虚拟设备(《大话存储》第53页也有描述),一旦某个设备需要寻道,那么就让其他设备来传输数据来弥补所浪费的时隙,所以整体系统可以发挥出一个单一设备的内部传输率。

  下面是详细总结:

  当FCAL环路上存在多个设备的时候,控制器向谋设备发起IO之后,该设备需要一定的寻道时间,而此期间内AL环出于被释放的状态,此时控制器依然可以向另外的设备发起IO,也就类似于先把该做的命令全部下发,待某个设备寻道完成请求将数据返回给控制器的时候,往往是多个设备都出于积攒状态,也就是他们都干完活了,准备交差了,而此时只能排队一个一个来,大家都鼓着劲呢。明白了这一点,我们就往下看。

  关于IOPS数值的矛盾:

  IOPS与吞吐量是一对矛盾关系。在关注IOPS的环境下,IO SIZE往往比较小,因为只要较小的SIZE才不至于充满带宽达到瓶颈,所以,要达到较高的IOPS,IO SIZE需要比较小。而这种情况下控制器将IO请求发送给设备之后,多个设备出于积攒状态,他们会仲裁从而一个一个的分别得到传输数据的机会,由于IO SIZE很小,所以每次传输数据很快就结束,这样,一个IO就飞快的完成了,而上一个设备的IO完成之后,下一个设备接着也会很快完成,因为他已经出于积攒态,待返回的数据早已在cache中准备发送。

这样的话,这个整体系统对外就表现为一个永远在完成IO而不需要寻道的虚拟设备。而如果AL环上除了控制器之外只有一个设备,那么环路就必须等待它寻道,因为寻道的时隙内,AL环上已经没有其他设备可工作了。

然而,AL环的这种弥补寻道时隙的效果也不是设备越多就越好,不同的设计和产品都有自己不同的最佳设备数量,目前的经验值为64个,也就是环路总容量的一半,超过这个值,性能不会再有提高,甚至有所下降。

我们可以推论出另外一个结论,也就是,慢速设备,比如寻道时间长的设备,越是慢速设备,组成AL环路之后其带来的整体提升越大,越是快速设备,高规格的设备,组成AL环路之后,提升的性能越有限。这就是AL环或者其他共享总线/环方式弥补设备自身处理产生的时隙的效果。

  关于吞吐量/带宽值的矛盾:

  经过上面的描述,我们已经对共享总线/环传输方式的底层机制以及其效用有了一个很好的理解了。在重视和追求高吞吐量,也就是充分利用带宽的环境下,IO SIZE往往非常大,以至于在较低的IOPS值下就已经可以吃满通道带宽了。

往往这种情况下,上层所发出的IO都是连续大块的IO,以至于AL环之上的设备寻道时间可以大大降低,这就使得设备更快的出于积攒态,准备向外发送数据。我们知道磁盘外部传输率由于磁盘内部不断换道被打断,致使其数值较内部传输率降低了大约20倍。而AL环的效用就是弥补寻道所浪费的时隙,所以整体系统的外部吞吐量,就被提升了上来,从而解决了这个矛盾。

冬瓜头答疑:磁盘阵列内部FC-AL的性能问题的更多相关文章

  1. java对象头信息和三种锁的性能对比

    java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...

  2. [ZT]DAS\NAS\IP SAN\FC SAN之区别

    DAS:服务器直接后挂存储设备,最经济的一种结构. NAS:网络上直接挂接的存储设备,其实就是处于以太网上的一台利用NFS.CIFS等网络文件系统的文件共享服务器. SAN是网络上的磁盘,NAS是一个 ...

  3. DB9 公头母头引脚定义及连接、封装

    DB9 公头母头引脚定义及连接.封装 转自:http://blog.csdn.net/yangshuodianzi/article/details/8997478 1.实物及引脚简介 在做开发的时候经 ...

  4. RAID磁盘阵列介绍

    磁盘阵列 RAID介绍 一.简介: 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 最初是由加利福尼亚 ...

  5. FC网络学习笔记02 -网络配置方法

    随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...

  6. 磁盘阵列RAID

                                                                                  磁盘阵列RAID 年提出的.RAID名为独立 ...

  7. 存储之磁盘阵列RAID

         存储之磁盘阵列RAID RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的.RAID名为独立冗余磁盘阵列(RedundantArray of Indepe ...

  8. iSCSI存储系统知识

    一.概述 SCSI 即小型计算机系统接口(Small Computer System Interface:简写:SCSI),一种用于计算机和外部设备之间(硬盘.光驱.软驱.打印机等)系统级接口的独立处 ...

  9. 【转】怎样查出SQLServer的性能瓶颈

    怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...

随机推荐

  1. Repeater绑定数组

    前台代码: <asp:Repeater ID="rptarry" runat="server" >         <HeaderTempla ...

  2. c#多线程下的进程同步SignalAndWait 使用简单说明

    解释:向一个 WaitHandle 发出信号并等待另一个进入信号. 总体概述: .NET Framework中提供一些类用于手动进行线程间的访问同步.这些类主要分为3大类别(但正如下文中会看到的这些类 ...

  3. nim博弈

    尼姆博弈 1.问题模型:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 2.解决思路:用(a,b,c)表示某种局势,显证(0,0,0)是第一种奇异 ...

  4. Java中方法的重写

    ★★前提:方法的重写建立在继承关系上★★ 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 所谓方法的重写是指子类中的方法与父类中继承 ...

  5. 如何查看xmtb项目接口

    http://api.xmtb.com/?act=jucheng&op=get_show

  6. Netty 源码(一)Netty 组件简介

    Netty 源码(一)Netty 组件简介 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) 一.Netty 架构 Core: ...

  7. 论坛:Html代码生成器>>FCKeditor的使用

    >>文件准备: >>例1: >>例2: >>例3:指定工具栏 添加 JS代码:

  8. 摹客 · Veer 第二届设计大赛邀你来战!

    2018年12月,摹客设计大赛一年一度一归来. 继2017年摹客全国首届原型设计大赛成功举办后,本次大赛是摹客第二届设计大赛.大赛由摹客主办,Veer独家冠名赞助,iSlide和创客贴协办,国内多家知 ...

  9. IOS初级:UIwindow

    AppDelegate.h @property (strong, nonatomic) UIWindow *window; AppDelegate.m - (BOOL)application:(UIA ...

  10. 利用 FFmpeg 将 MP4 转成 FLV

    最近做一个小项目,要在线播放录制的 MP4 视频,想开源的 flash player 或 html 5 可以播放.可,虽然 MP4 是 H.264 编码,但就是播放不了.可能是封装方式(PS 方式)不 ...