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。此例子就是写多读少的场景
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/skB_wrtn/s 每秒写入磁盘的数据的大小,单位KB/skB_read 从磁盘读出的数据总数,单位KBkB_wrtn 写入磁盘的的数据总数,单位KBiostat 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