RAID 5
存储方案规划的过程中,最基本的考虑因素有两个,性能和容量。性能上的计算看可以分为IOPS和带宽需求。计算IOPS,抛开存储阵列的缓存和前端口不谈。计算后端物理磁盘的IOPS不能简单的把物理磁盘的最大IOPS相加而获得。原因是,对于不同的RAID级别,为了保证当有物理磁盘损坏的情况下可以恢复数据,数据写入的过程中都需要有一些特别的计算。比如对于RAID-5,条带上的任意磁盘上的数据改变,都会重新计算校验位。如下图所示,一个7+1的RAID-5的条带中,七个磁盘存储数据,最后一个磁盘存储校验位。
对于一个数据的写入,我们假设在第五个磁盘上写入的数据为1111,如下图所示。那么整个RAID-5需要完成写入的过程分为以下几步:
由上述几个步骤可见,对于任何一次写入,在存储端,需要分别进行两次读+两次写,所以说RAID-5的写城法治的值是4。
不同RAID级别的写惩罚值
raid 0 =1
raid 1 = 2
raid 5 = 4
raid 6 = 6
raid 10 = 2
RAID-0:直接的条带,数据每次写入对应物理磁盘上的一次写入
RAID-1和10:RAID-1 和RAID-10的写惩罚很简单理解,因为数据的镜像存在的,所以一次写入会有两次。
RAID-5:RAID-5由于要计算校验位的机制存在,需要读数据、读校验位、写数据、写校验位四个步骤,所以RAID-5的写惩罚值是4。
RAID-6:RAID-6由于有两个校验位的存在,与RAID-5相比,需要读取两次校验位和写入两次校验位,所以RAID-6的写惩罚值是6。
IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据 *** 作请求。
另一个重要指标是数据吞吐量(Throughput),指单位时间内可以成功传输的数据数量。对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
根据上文的描述,在实际存储方案设计的过程中,计算实际可用IOPS的过程中必须纳入RAID的写惩罚计算。计算的公式如下:
物理磁盘总的IOPS = 物理磁盘的IOPS × 磁盘数目
可用的IOPS = (物理磁盘总的IOPS × 写百分比 ÷ RAID写惩罚) + (物理磁盘总的IOPS × 读百分比)
假设组成RAID-5的物理磁盘总共可以提供500 IOPS,使用该存储的应用程序读写比例是50%/50%,那么对于前端主机而言,实际可用的IOPS是:
(500 ×50% ÷ 4)+ ( 500 * 50%) = 312.5 IOPS
寻道时间Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O *** 作越快,目前磁盘的平均寻道时间一般在3-15ms。
旋转延迟Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟约为2ms。
因此,理论上可以计算出磁盘的平均最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略数据传输时间。假设磁盘平均物理寻道时间为3ms, 磁盘转速为7200,10K,15K rpm,则磁盘IOPS理论最大值分别为,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
SSD这种最昂贵的存储介质为什么能帮助充分利用资金呢?这是因为它可以提高你每GB存储空间所能传输的IOPS数量。这就降低了每次IO *** 作所需的空间和能耗。正如在我们的白皮书“Visualizing SSD Readiness”中所讨论过的那样,现在许多程序都可以进行充足的IO请求还可以支持有许多轴数(spindle counts)的硬盘阵列。阵列中的轴数越多,性能也就越好。大量的驱动器数量带来的问题就是驱动器上数量的增加。所有这些驱动器需要排列,排放,安置,管理以及供能。这都要花钱。你的程序或许可以支持300个驱动器,但是你有那么多的预算吗?
还有一个问题就是空间利用率。如果你有一个能支持300个驱动器的程序,那么按照当今的驱动器水平,它会导致上TB的未使用空间。现在确实也可以通过SAN来让其它应用程序也使用那些驱动器,但是这会影响你的关键业务的性能,而且其它应用也往往并不需要你最初那项业务那么高的存储性能。
更有意义的就是好钢用在刀刃上,增加一个针对应用程序的存储层。在块IO(block IO)中,最典型的做法就是向现有的存储系统中增加SSD,或者更直接一点使用Texas Memory或Violin Memory这些公司的SSD系统。实际上,借助他们的PCI-E卡,让IOPS在应用程序服务器内进行,Fusion-io和Texas Memory可以更进一步提升应用程序专一性。
面临的挑战之一就是确定如何以及何时从SSD中获取正确的数据集。通常这是一个特定的应用程序或数据集,比如像一张Oracle表,把这张表移动到SSD中去就是一个非常简单的过程。要更广泛地运用SSD,尤其是在NAS存储领域,挑战就更大了。一种解决办法是使用NetApp和DataCore这些公司的存储虚拟化设备来统一管理SSD。
像Storspeed这公司已经开始提出在NAS IO中的可行替代办法。这些公司正在开发一种改进型的缓存技术以智能地在分层存储中存入取出数据。这使得SSD能尽可能地利用空间并且始终让最活跃的数据保存在这一高速的存储层上。同时还可以让用户控制具体哪一个程序或哪一份数据使用这一层。
不管使用哪种方案,采用SSD,特别是再加上它日益增长的负载能力,是减少开支,立竿见影的好办法。
sqlserver 怎么查询iops高的原因QL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
SQL Server查询速度慢原因4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)