欢迎来到天天文库
浏览记录
ID:10021835
大小:114.00 KB
页数:15页
时间:2018-05-21
《存储是系统的最底层》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、存储是系统的最底层,非常重要,如何选择最合适自己存储呢? 梳理下知识点,以备后用1.存储应用的场景,了解自己的应用需求、预算及数据使用特点2.了解存储的相关知识3.选择存储应注意的要素4.存储的使用和维护 1.存储应用的场景,了解自己的应用需求、预算及数据使用特点 要清楚存储是应用在OLAP还是OLTP?对存储的性能,安全性要求如何?预算是多少?预计未来2-5年的业务增长趋势?中端存储可以提供高响应速度,在磁盘数量相同的条件下,不会比高端存储差多远(但高端存储的扩展能力,可靠性非常强) 2. 了解存储的相关知识磁盘: 一个IO的访问,大致分为三个步骤,第一是磁头到指定的磁道(寻道),
2、第二是等待需要读取的数据随盘片旋转到磁头(延迟),第三是读取数据。相比较前两个时间,读取数据的时间可以忽略不计,所以一个IO的响应时间等于寻道时间+延迟时间决定(ssd固态硬盘除外,它的存储方式不一样),寻道时间由于是机械的动作,所以很难得到大幅度提高,但是可以通过提高磁盘转速来提高延迟时间。所以转速越高的盘,可以承载更多的IOPS。磁盘的IOPS由磁盘的转速决定,比如15000RPM的磁盘,一般可以承受150个IOPS。和存储相关的三个性能参数:IOPS,吞吐量,响应时间吞吐量: 吞吐量,则由磁盘的转速和接口决定,转速决定了内部传输率,接口则决定了外部传输率,很明显前者肯定低于后者
3、。常见的接口有ATA,SCCI,SATA,SAS,FC等等。FC接口一般在高端存储中比较常见,而SAS和SATA多在服务器或者中低端存储中常见。 影响吞吐量的因素稍微复杂些,由磁盘的数量和存储的架构决定,当磁盘到达一定的数量后,吞吐量主要受限于存储的架构。比如某高端存储,吞吐量最大就是1.4GB,这是由它内部的架构所决定的。另外还要注意存储与主机的接口,比如HBA卡,有4Gb和2Gb(这里是bit,而不是Byte),一般主机和存储都配有多块HBA卡IOPS: 对于一个存储系统来说,IOPS主要决定于cache的算法,以及磁盘的数量。有时候我们往往会被厂商的数据给忽悠了,第一是
4、cache命中率,厂商利用了某种手段,让cache命中率非常高,IOPS几乎可以随心所欲。另外一个因素就是磁盘的数量,厂家的数据是同型号1000块磁盘的测试结果,而实际的系统只有几十或者几百块磁盘。 购买存储时,应该避免买高端的存储,而只配数量很少的磁盘,厂商非常喜欢你买一个高端的BOX,告诉你扩展性好,现在用不着可以少买点盘,以后可以扩容等等,这完全是忽悠。建议不要超前消费,如果确实对性能追求很高,可以选用容量小一些的磁盘,而磁盘的数量多一些。磁盘的数量可以计算得出,我们的经验,一般OLTP应用的cache命中率在20%左右,剩下的IO还是要到磁盘上的,根据磁盘的转速和类型,就
5、可以知道一块盘能够承载的IOPS,磁盘数量就可以估算出来了,为了得到比较好的响应时间,建议每块磁盘的IOPS不要超过100。响应时间: 除了IOPS与吞吐量,存储的另外一个重要性能指标就是单io的响应时间,单io的响应时间与IOPS的当前值,吞吐量大小及cache命中率都有密切的关系,经验值表示,一个io的响应时间在20ms以后,应用基本可以正常工作,但对于高可用的核心OLTP系统,最佳的IO时间是小10ms。Stripe: Stripe的作用就是尽可能的分散IO,它在有些存储上是可以调节的,但是很多存储是不可以调节的,一般在128K-512K之间。有一个错误的说法是,我在存储上
6、做了stripe,数据库的一个IO,所有的磁盘都会响应这个IO。这个说法是错误的,对于Oracle来说,一个随机IO的大小是8K,一般条带的大小要比8K大得多,所以Oracle一个随机IO永远只会落在一块磁盘上。一块磁盘在同一个时刻只能响应一个IO,也就是说磁盘没有并发IO的概念,但是从整个系统来看,不同的磁盘响应不同的IO,宏观上IO还是分散的,所以我们看到一个数据库在运行时,所有的磁盘都在忙,实际上每块磁盘是为不同的IO服务。对于顺序IO,Oracle的默认设置是128K,最大值由OS决定,一般是1M,如果顺序IO的大小大于stripe,那么一个IO可能会有几块盘同时响应,但是很多存
7、储的stripe都大于128K,这时一个IO还是只有一块磁盘响应,由于读是一个顺序的过程(在不同的multiblockread之间,存在一定程度的并行。Oracle每次同时向OS发送若干个multiblockreadIO请求,然后把返回的结果合并排序。整个scatteredread应该是局部并行,宏观串行的过程),所以要在数据库这个级别加上并发,才可以真正达到提高吞吐量的目的。 有人要问,stripe到底多大合适?假设把str
此文档下载收益归作者所有