RAID技术与磁盘性能比较

RAID技术与磁盘性能比较

 RAID技术是构造高性能、海量存储的基础技术,核心是依靠磁盘的并行性提高性能。
最简单的RAID卡,一般都包含有几十,甚至几百兆的RAID cache,写cache的数据积累到一定程度(实现批量写),阵列才把数据刷到磁盘,
cache数据的保护,一般都依赖于镜相与电池(或者是UPS),磁盘阵列读操作的关键更多的体现在cache的命中率上。

如果数据库时刻会写入数据(如从总部接收)而且写入的次数非常频繁,属于随机写的场景。如果采用raid5,
一次写会有写入+放入cache和校验+放入cache四个IO(raid5很依赖cache),采用raid10的话只有有写入加镜像两个IO

举例:
像小io的数据库类型操作,建议采用RAID10。大型数据仓库(如,医疗PACS系统,视频编辑系统、)建议采用raid5。工作中遇到的一个实际example,场景是随机写很多的DB,搭建在raid5之上,平常时间没发现什么差异,双十一来临的时候就各种性能瓶颈。后来改为raid10,就避免了这个问题。

决定IOPS(每秒进行读写操作的次数)的主要因素取决于阵列的算法,cache命中率(作用是便于读,如果是写多的业务就不需要使用cache),以及磁盘个数。
这里的IOPS是衡量了随机读,连续读,随机写,连续写。

对于磁盘性能的测量,比较方便的是使用iostat

image.png

       此例子就是写多读少的场景

 iostat命令可以查看CPU利用率和磁盘性能相关数据,用来监视系统输入/输出设备负载。
-c    只显示CPU利用率
-d    只显示磁盘利用率
iostat 2 2,这表示每2秒报告一次,报告2次

iostat -x 1 1 输出参数解析:
rrqm/s    每秒合并到设备的读取请求数
wrqm/s    每秒合并到设备的写请求数

r/s    每秒向磁盘发起的读操作数。
w/s    每秒向磁盘发起的写操作数。
rsec/s    每秒从设备读取的扇区数量。
wsec/s    每秒向设备写入的扇区数量。

avgrq-sz    I/O 请求的平均大小,以扇区为单位
avgqu-sz    向设备发起的I/O 请求队列的的平均队列长度


await    I/O 请求的平均等待时间,单位为毫秒。这个时间包括请求队列(这个概念很重要)消耗的时间和为每个请求服务的时间
svctm    I/O 请求的平均服务时间,单位为毫秒。
%util    处理 I/O 请求所占用的时间的百分比,即设备利用率。I/O请求期间CPU时间的百分比(即设备的带宽利用率)。当这个值接近100%时,表示磁盘I/O已经饱和


kB_read/s    每秒从磁盘读取数据大小,单位KB/s
kB_wrtn/s    每秒写入磁盘的数据的大小,单位KB/s
kB_read      从磁盘读出的数据总数,单位KB
kB_wrtn      写入磁盘的的数据总数,单位KB

iostat 1 1 输出参数解析:
tps    每秒I/O数。(即IOPS。磁盘连续读和连续写之和)
Blk_read/s    每秒从设备读取的数据大小,单位是block/s(块每秒)
Blk_wrtn/s    每秒写入设备的数量,单位是block/s。
Blk_read    从磁盘读出的块的总数
Blk_wrtn    写入磁盘的块的总数


吞吐量是IOPS*每个IO的大小,在iostat报告中,tps=r/s+w/s


猜你喜欢

转载自blog.51cto.com/zhouyaxiong/2384370