不同RAID级别对性能和容量影响

[复制链接]
发表于 : 2016-11-10 10:15:30 最新回复:2016-11-14 22:02:25
4334 4
岁月葱葱  导师  

 

 

IO聚合成满分条写优化写惩罚

IO聚合成满分条大小的情况下,无需做预读操作,不会触发RAID写惩罚,RAID写惩罚在不是满分条写的时候,才会触发预读的流程。以RAID5-5小写为例,写一个数据位,需要预读两次,写校验位一次。可以认为是一个IO被放大成了四个IO

cid:image004.png@01CFC057.3A8F6EC0

而满分条写的时候,同时写四个数据位,不需要预读,只需要额外写一次校验位,可以认为是四个IO被放大成了五个IO 。对比非满分条写,效率大大提高。

cid:image005.png@01CFC057.3A8F6EC0

存储的IO合并能力对于数据库业务是否各家都能做到IO合并

一般存储针对不同类型的IO有不同的合并能力;数据库业务主要是随机IO,各厂商都做不到完全满分条IO合并。

存储收到的IO是否能够合并,主要取决于两个方面:

1、主机侧发下来的业务IO模型:IO是否顺序,是否连续,与主机业务软件本身、主机侧块设备、卷管理策略、HBA卡拆分策略等相关。主机下发的IO越顺序、越连续,到达阵列后的合并效果越好。

2、存储侧对IO的合并能力:IO路径上的Cache、存储块设备、硬盘等模块都会对IO进行排序与合并的操作,试图尽可能将小IO合成大IO下盘。

对于顺序小IO而言,基本上能够实现将IO都合并成满分条后下盘。而对于IO随机程度较高的数据库业务,各厂商都无法确保所有IO都能够合并,只能尽量通过排序和合并,将相邻地址的小IO合成大IO,但合并程度由于算法实现和内存大小等因素可能会有所差异。

 

OLTPOLAPVDISPC-1业务模型和场景

OLTPOLAPVDI是当前性能评估中常见的三类业务场景。SPC-1是业界通用的随机IOPS型的IO模型,在不清楚实际业务类型的条件下,常用此模型来进行性能评估。四种模型的简单IO特征如下表所示。

showimage-17303999-69539-7bf9b7939822790

下面将分别介绍四种模型的业务特性与IO特征:

一、OLTP业务模型和特征:

1、业务特征:每个事务的读,写,更改涉及的数据量非常小,同时有很多用户连接到数据库,使用数据库,要求数据库有很快的响应时间,通常一个事务在几秒内完成,时延要求一般在10-20ms

2IO特征:针对DATA LUN,随机小IOIO大小主要为8KBIO大小与数据库的Block块大小一致),读写比约为3:2,读全随机,写有一定合并。 针对LOG LUN,多路顺序小IO,大小不定,几乎都是写IO

二、OLAP业务模型和特征

1、业务特征:一般很少有数据修改,除非在批量加载数据时;系统调用非常复杂的查询语句,同时扫描非常多的行;一个查询将花费数小时,甚至数天;主要取决于查询语句的复杂程度;查询的输出通常是一个统计值,由group byorder by得出;当读取操作进行时,发生的写操作通常在临时表空间内;平常对在线日志写入很少,除非在批量加载数据时;分析型业务,一般对时延没有要求。

2IO特征:针对DATA LUN,多路顺序大IO(可以近似认为是随机大IO),IO大小与主机侧设置的分条大小有关(如512KB),90%以上为读业务,混合间断读写。针对TMP LUN,随机IO,读写混合(先写后读,计算时写,读临时表时读,大部分是写,占整个业务中很少部分的IO),IO大小基本为200KB以上大IO

三、VDI业务模型和特征

1、业务特性:可以分为启动风暴、登录风暴和平稳状态几个常见场景,在不同的状态下,业务压力相差很大。启动风暴,即大量虚拟机同时启动时的突发状态,是读密集型操作,可以通过VSAView Storage Accelerator 可以降低70%的读负载)、分批错峰等操作规避。登录风暴,即大量用户同时登录到桌面,导致共享存储产生大量爆发性负载的情况,是写密集型的,很难通过技术方式避免。平稳状态,即所有用户在同时使用桌面时,产生负载波动较小的状态。不同的用户类型,平稳状态的负载有所不同。时延要求一般在10ms左右。

2IO特征:平稳状态下,读写比例约为2:8,多路顺序小IO,主要是写,存在一定的合并,IO大小从512B16KB都有;少量的读IO,基本都是16KB,在负载稳定之后,Cache命中率在80%以上(采用链接克隆技术的情况下,如果是完整克隆的情况,命中率有所下降)。

四、SPC-1业务模型和特征

1、业务特性:SPC-1设计一个专门为测试存储系统在典型业务应用场合下的负载模型,这个负载模型连续不断地对业务系统并发的做查询和更新的工作,因此其主要由随机I/O组成。这些随机I/O的操作主要涉及数据库型的OLTP应用以及E-mail系统应用,能够很好地衡量存储系统的IOPS指标。

2IO特征:它抽象的测试区域称为ASU,包括ASU1临时数据区域,ASU2用户数据区域和ASU3日志区域。对整体而言,读写比约为4:6,顺序IO与随机IO的比例约为3:7IO大小主要为4KB,有较明显的热点访问区域。

 

SSDSASNL-SAS的性能特点、优势与局限

高性能盘(SSD)

性能盘(SAS)

容量盘(NL-SAS/SATA)

性能

IOPS/GB和低延迟

单线程访问响应时间<1-5ms

多线程访问响应时间<10ms

高负载下可提供高带宽

单线程访问响应时间5ms

多线程访问响应时间10-50ms

IOPS/GB

单线程访问响应时间7-10ms

多线程访问响应时间长至100ms

优势

提供非常高速的读访问

相比SAS/FC能更好的处理多路顺序写操作

顺序读操作可以利用预读功能

/写操作混合时可以预测性能

在性能和花费上可以取得相对好的平衡

处理大数据块I/O效率高

顺序读操作可以利用预读功能

顺序写操作可以利用系统优化硬盘

局限

写操作比读操作慢

大量写访问影响读操作速度

单线程大数据块顺序I/O速率和SAS盘差不多

相比SASNL-SAS,花费较高

未被缓存的数据写操作比读操作慢

大量写操作会造成较长的响应时间

处理多路读写时效率较差

 

 

FC链路带宽是如何计算的

FC协议是主机服务器与存储系统连接传输的常用协议之一。在评估存储系统整体带宽时,FC链路的带宽是计算前端带宽的最重要的因素之一。

8G FC链路的理论带宽计算方法如下:

8Gbps FC参考时钟:8.5G Hz

8Gbps FC协议编码:8b/10b编码

8Gbps FC协议传输效率计算如下:

cid:image004.jpg@01CFBAF2.5C18E0E0

协议帧的传输如上图所示。ACKFC协议中是class 1class 2服务(面向连接)使用的,class 3服务不使用ACK帧,因此可以获得更高的传输效率。通常使用的是class 3服务,按照class 3服务计算实际传输效率为97.15%

单向理论数据传输带宽计算公式如下:链路时钟*链路编码效率* FC协议层传输效率/8 /1024 /1024

8Gbps FC单向理论数据传输带宽=(8.5*1000*1000*1000) * (8/10) * 97.15%/8 /1024 /1024 = 787.5MB/s

由于传输命令请求也要开销链路带宽,帧与帧之间的传输还需要协议的原语开销,故单向链路的数据带宽无法超越理论值787.5MB/s

双向带宽理论上为单向链路的两倍,但是由于光模块和上层模块的处理调度开销等因素,实际测试时达不到两倍的理论值。

当前产品中常见的FC链路为8G FC4G FC链路,它们的极限带宽如下表所示:

链路极限带宽

单向带宽

双向带宽

4G FC链路带宽实测

390MB

690MB

8G FC链路带宽实测

780MB

1300MB~1400MB

某场景下的读带宽估算

例如,某客户采购了一台阵列,此款产品能够提供的最大读带宽为3000MB,客户规划配置48600GB 15k SAS盘(推荐单盘读带宽为40MB),前端双控各配置18G FC卡,分别连接了1根光纤到AB控,估算当前场景下能够提供的最大读带宽。

硬盘提供的有效读带宽 = 单盘顺序读带宽 * 硬盘数量 = 40MB * 48 = 1920 MB

前端链路提供的最大读带宽 = 780MB * 2 = 1560 MB

该场景能提供的最大读带宽 = MIN(产品能提供的最大读带宽,硬盘提供的有效写带宽,前端链路提供的最大读带宽)= MIN3000MB1920MB , 1560MB= 1560 MB

 

 

带宽计算中如何考虑校验的影响

对于顺序写业务,IO经过cacheIO合并后下发到RAID层,基本能够确保都是满分条写。对于RAID5-54D+1P)这种配置来说,每4个数据IOD)下盘同时会有一个校验IOP)需要下盘。校验IO下盘所占的硬盘带宽用于保障数据的可靠性,而对于用户上层业务来说并没有提供可用带宽,因此需要扣除掉校验位下盘所占的带宽开销。

showimage-17192717-69539-9ba2e3780883a92

对于顺序读业务,在满分条的情况下,在每个分条内部只需要读数据位所在的磁盘,不需要读校验位所在的磁盘。

showimage-17192719-69539-1140b21d1d68c2b

例如,某一款产品,能够提供的最大写带宽为3200MB,规划配置96600GB 15k SAS盘(推荐单盘写带宽为30MB),部署RAID6-64D+2P),估算这款产品能够提供的有效写带宽。

硬盘提供的有效写带宽 = 单盘顺序写带宽 * 硬盘数量 * (RAID数据盘数量/RAID总盘数)= 30MB * 96 * 4/6= 1920 MB

产品能提供的有效写带宽 = MIN(产品能提供的最大写带宽,硬盘提供的有效写带宽)= MIN3200MB1920MB= 1920 MB

什么是读写比和对性能影响

读写比(Read/Write):指的是上层应用下发的读IO和写IO的比例分布。此数据是存储规划的重要参考依据。读业务与写业务消耗的存储资源差异很大。下面是一些典型业务模型的常见读写比例

showimage-17174597-69539-6d8ce763d98df0a

确切了解上层应用的读写比例直接影响到对cache策略、RAID级别和LUN配置的选择。写业务比读业务会消耗更多的存储系统资源:

1、在回写的场景下,写IO下发到cache之后需要通过交换通道“镜像”到对端控制器,IO路径更长,并需要占用交换通道的带宽;

2、为保证写数据的可靠性和一致性,智能存储通常会采用一些可靠性技术,例如writehole方案,需要将写数据额外保存一份在cache或磁盘上;

3、对于不同的RAID级别而言,写惩罚的存在会造成更大的时延和资源的开销;

4、此外,对于磁盘(包括SSD盘)而言,写速度低于读速度。

而对于读业务来说,通常消耗较少的系统资源。例如,读业务不需要生成额外的数据来保证数据一致。此外,绝大部分存储设备的读速度都比写速度要快。当读IO发现它所需读取的数据已经在cache中(读命中)时,可以直接返回而不需要再下盘读取。在读命中的情况下,通常意味着最短的响应时延。

同样数量的主机IO,如果读写比例不同,最终需要下盘的IO数量不同,意味着需要提供的磁盘能力不同。例如,RAID6单次写入需要分别对数据位和校验位进行3次读和3次写,即写惩罚是6。在RAID6的场景下,如果有1000个随机的主机IO,读写比为2:8,则需要下盘的IO数量为

1000*0.2 + 1000*0.8*6 = 5000

而如果读写比例为8:2的话,则需要下盘的IO数量为

1000*0.8 + 1000*0.2*6 = 2000

 

不同RAID级别对性能和容量影响

由于各RAID级别的写惩罚不同,对于相同的业务类型、同样数量的硬盘而言,选择不同的RAID算法,能够提供给主机的性能是不相等的。

针对各种典型场景的RAID10RAID5RAID6的性能对比,其中假设某存储设备上所有硬盘能够提供的性能为100%,按照各个应用场景的读写比例,经过写惩罚系数的折算,得到配置成各个RAID级别后能提供给用户的实际性能。

应用场景

读写比例

硬盘性能

RAID10

RAID5

RAID6

SPC-1

0.40.6

100%

62.5%

35.7%

25%

OLTP

0.540.46

100%

68.5%

42%

30.3%

VDI

0.20.8

100%

55.6%

29.4%

20%

从数据中也可以看出,对于不同的业务类型、同样数量的硬盘、相同的RAID算法,写比例越大,性能越差。以SPC-1场景配置RAID6为例,假设用户实际性能为x,则0.4x + 0.6x * 6 = 100%,得到x = 100% / 4 = 25%

由于RAID算法的实现原理不同(RAID10的镜像、RAID5/6的校验盘),对于同样大小的裸容量来说,选择不同的RAID算法,可提供给用户的可用容量是不同的(不考虑热备空间和系统预留的影响)。

RAID级别

RAID10

RAID5-9(8D+1P)

RAID6-6(4D+2P)

RAID6-10(8D+2P)

空间利用率

50%

88.9%

66.7%

80%

另外,从可靠性的层面来看,RAID6的可靠性最佳,RAID10次之,RAID5最差。

 

原理】CACHE加速的原理

CACHE是存储中最重要的模块之一,对于IOPS性能而言,CACHE的主要作用是加速。

对于写业务,CACHE加速体现在三个方面:

1、回写情况下,主机侧下到阵列侧的数据只需要下到CACHE处而不需要真正写到磁盘即可以返回通知主机写完成,当写CACHE的数据积累到一定程度(水位),阵列才把数据刷到磁盘。由此可以将速度较差的“同步单个写”转为“异步批量写”,在通常情况下,回写的性能约是透写性能的两倍以上。

2、写命中。回写条件下,新写到CACHE中的数据发现在CACHE中已经有准备写到相同地址但还没有刷盘的数据。在这种情况下,只需要将新写入的数据下盘即可。

3、写合并。例如小IO下到CACHE中,CACHE会尽可能对IO进行排序与合并,将多个小IO合成单个大IO再下盘。

对于读业务,CACHE加速主要体现在读命中。例如智能预取策略,CACHE会主动识别IO流的特征,如果发现是顺序IO流,CACHE会在下盘读IO的同时,主动读取相邻区域的大块数据放到CACHE中。当顺序IO下发到CACHE时,发现CACHE中已存放了需要的数据,则直接将此数据返回即可,不需要再下盘读。其中的一个特例是“全命中”。在全命中条件下,业务需要读取的数据已经全部保存到CACHE中,完全不需要再下盘处理,即所有IOCACHE层就返回了,路径和时延最短。全命中读的IOPS值,往往是一款存储产品能够提供的最大IOPS值。

二、【应用】性能评估中CACHE命中率的使用

在性能评估中必须要考虑命中率对性能的影响,特别是高命中率的场景,例如VDI。在常规的性能评估中,都是以存储硬件能力作为主要参考来进行的,例如CPU(控制器极限性能)、硬盘(单盘IOPS/带宽)。在CACHE中命中以后,IO基本不会再下盘进行访问,这部分的IO就不会占用硬盘的性能,因此,一般情况下,命中率越高,总体性能越高,例如全命中的场景下的IOPS远远高于需要下盘的场景。

命中率在eDesigner评估工具中是一个比较抽象的概念,包含了下述因素:

1、读命中率:包括了两个部分,顺序IO流依靠CACHE预取功能命中的IO比例和热点数据常驻内存命中的IO比例

2、写命中率(脏数据下盘之前再被访问的比例)

3、写合并率(多个写请求合并为单个IO下盘的比例)

在当前的性能评估方案中,提供的命中率默认是读和写各自的命中率的合并值,即表示主机的IO有多大比例未下盘。

三、【举例】桌面云场景计算和全命中的例子

例如,客户需要部署一套桌面云,要求存储阵列能够提供200kIOPSCACHE命中率为70%,则

实际需要下盘的IOPS = 200k * (1-70%) = 60k

再以60k为依据规划所需的硬盘类型和数量。

由上例可见,如果忽略了CACHE命中率,参与计算的IOPS将是实际所需的IOPS3.3倍,如果应用到商务中,意味着对标的硬盘数将是实际所需的3.3倍!

又例如,客户要求存储阵列在OLTP业务下能够提供150kIOPS,某产品经理恰好有一款产品最大IOPS的数据,此款产品在全命中的情况下能够达到200kIOPS,便以此产品参与竞标。在交付时发现,客户要求的150k IOPS是全下盘情况下的性能,此款产品根本无法满足。

另外,同样也需特别注意友商宣称的产品可达IOPS值是在什么条件下得到的,是全命中或高命中率下的,还是全下盘情况下的。

 

 

如何区分顺序IO和随机IO

IO的寻址方式是IO特性的一个重要方面,分为顺序、随机或混合,这取决于上层应用程序获取数据的方式。例如,数据库OLTP业务是典型的随机读写,视频监控业务是典型的顺序读,SPC-1模型是混合读写。

在通常情况下,如果数据的读写是在连续的磁盘空间上,可以认为是顺序IO;如果应用读取的数据分布在不连续的磁盘空间,且无固定的顺序,则视为随机IO;如果一部分数据是顺序读写,一部分数据是随机读写,则视为混合类型IO

二、【影响】顺序/随机特性对性能的影响

在磁盘层面,顺序IO的性能优于随机IO。这是由于传统的机械磁盘读写数据需要盘片转动和磁头移动,使得随机读写的盘片旋转和磁头寻道时间要远大于顺序读写。

在智能存储系统层面,通常情况下,顺序IO的性能同样大大优于随机IO,特别是对于小IOIOPS性能而言:

1、小IO读:通过顺序流识别和预取算法,系统提前在磁盘上读取大块的连续数据存放在cache中,后续的大量顺序小IOcache中命中,无需下盘处理。而随机小IOcache中命中率极低,只能逐个下盘读。

2、小IO写:通过IO合并,系统将多个顺序小IO合并成一个较大的IO下盘。如果在RAID5RAID6场景,IO聚合成满分条大小的情况下,无需做预读操作,不会触发RAID写惩罚,效率很高。而随机小IO无法合并,只能逐个下盘写,且会触发写惩罚,导致性能更为低下。

三、【举例】典型业务场景的顺序/随机特性

以下是一些典型业务场景的顺序/随机特性:

showimage-17040077-69539-599bcf233be0106

一、【原理】如何区分大IO和小IO

在做性能评估和讨论IO模型时,经常会遇到是大IO还是小IO的问题。我们通常把<=16KBIO认为是小IO(典型的如512bytes4KB),而>=32KBIO认为是大IO(典型的如256KB1MB处于16K32K间的IO也认为是小IO。例如,典型的OLTP数据业务是小IO,而数据仓库业务是大IO

二、【影响】IO大小对性能的影响

IO的大小取决于上层应用程序本身。对性能而言,小IO一般用IOPS来衡量,大IO一般用带宽来衡量。例如我们熟悉的SPC-1,主要衡量存储系统在随机小IO负荷下的IOPS,而SPC-2则主要衡量在各种高负荷连续读写应用场合下存储系统的带宽。

就单个IO而言,大IO从微观角度相比小IO会需要更多的处理资源。对于随机IO而言,随着随机IO块大小的增加,IOPS会随之降低。例如,当随机IO大小大于16KB时,机械硬盘的IOPS会呈线性下降。因此,我们通常SPC-1测试的IOPS值很高,但因为用户业务模型不同,IO大小不同,性能值也是变化的。

不过对于智能存储系统来说,会尽可能通过排序、合并、填充等方法对IO进行整合,将多个小IO组合成单个大IO。例如,典型的Web Server Log业务,一般是8KB大小的顺序小IO,在分条大小设置为128KB的存储设备上,最终会将168KB大小的小IO合并成一个128KB的大IO下发到硬盘上。在这种情况下,对比处理多个小IO,处理单个大IO的速度更快、开销更小。

IO的大小,影响到磁盘选型,缓存、RAID类型、LUN的一些属性和策略的调优。例如,随机小IO的场景,由于SSD盘具有快速随机读写的特性,选用SSD盘对比SAS盘能够大幅提升性能;但如果是随机大IO,选用带宽性能相当、价钱便宜的SAS盘更有优势。

三、【举例】典型业务场景的IO大小

以下是一些典型业务场景的IO大小:

showimage-17025817-69539-f14d9a7157f1c5e

 

 

本帖最后由 岁月葱葱 于 2016-11-17 12:45 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • x
  • 常规:

点评 回复

跳转到指定楼层
建赟  版主   发表于 2016-11-10 11:19:22 已赞(0) 赞(0)

感谢分享!
  • x
  • 常规:

点评 回复

岁月葱葱  导师   发表于 2016-11-10 17:26:34 已赞(0) 赞(0)

http://www.infoq.com/cn/presentations/ibm-smartcloud-technology-architecture-and-development-practice
  • x
  • 常规:

点评 回复

岁月葱葱  导师   发表于 2016-11-14 11:39:50 已赞(0) 赞(0)

http://go.scality.com/acton/attachment/18585/f-010f/1/-/-/-/-/Scality Technical Whitepaper.pdf?sid=TV2:TCgS6RYQE
  • x
  • 常规:

点评 回复

岁月葱葱  导师   发表于 2016-11-14 22:02:25 已赞(0) 赞(0)

现在发文不允许带附件了吗?这么久还不给审核通过。
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
快速回复 返回顶部