一:磁盘原理(简单理解) 1、盘片以每分钟数千转到上万转的速度在高速旋转,15K,10K,7.5K,5.2K,RPM 2、磁头就能对盘片上的指定位置进行数据的读写操作 3、磁头磁化磁盘记录数据 4、从外到里存储;外快内慢 5、以扇区为单位存储 6、破碎文件读取多个扇区,时间长 7、柱面:所有盘面上的同一磁道构成一个圆柱,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据 二:磁盘读写 1、随机访问 本次IO所给出的扇区地址和上传IO给出扇区地址相差比较大,这样的话磁头在两次IO操作之间需要作比较大的移动动作才能重新开始读/写数据 2、连续访问 单次IO给出的扇区地址与上次IO结束的扇区地址一致或者是接近的话,那磁头就能很快的开始这次IO操作 3、顺序IO模式 磁盘控制器可能会一次对磁盘组发出一连串的IO命令,如果磁盘组一次只能执行一个IO命令 4、并发IO模式 当磁盘组能同时执行多个IO命令时,称为并发IO。并发IO只能发生在由多个磁盘组成的磁盘组上,单块磁盘只能一次处理一个IO命令 三:磁盘KPI IOPS:IO系统每秒所执行IO操作的次数 可以将碎片整理到一起,节省寻找的时间 IO time =Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate IOPS = 1/IO Time = 1/(Seek Time + 60 sec/Rotational Speed/2 + IO Chunk Size/Transfer Rate) 四:IOPS计算 RPM(rpm=round per minute转/每分钟) 转速:7.2K RPM Avg寻道时间:5ms 平均旋转延时:(60s/7.2K)*1/2=4.17ms(最坏情况转一圈才开始读数据,乘1/2是把读写分开取二分之一) 单位IO:比如最大传输速度50M 8K的块,传输时间=8/50=0.156ms IOPS=1/(5ms+_4.17ms+0.156ms)=107次 五:传输速度/吞吐率 Transfer Rate = IOPS * IO Chunk Size(块大小) IPOS=1000 Chunk Size=8K TR=1000*8K/s 六:IO延时 1、瓶颈表现-----IO延时 2、磁盘IO延时:也称为IO响应时间,是指内核对磁盘发出一个读或者写的IO命令,到内核接受到回应的时间,IO响应时间包括IO操作在磁盘处理的时间和IO操作在IO等待队列中所花费的等待时间。 3、单个IO时间:单个IO时间仅仅指的是IO操作在磁盘内部处理的时间,而IO响应时间还要包括IO操作在IO等待对别中所花费的等待时间。 4、Avg Queue Length 七:windows监控----perfmon 1、C:\WINDOWS\SYSTEM32目录下 2、windows下的IO性能 八:Linux--IOSTAT 1、iostat 硬盘读写性能,#查看tps和吞吐量信息 -d:显示某块具体硬盘,这里没有给出硬盘路径几乎是默认全部了 -k:以KB为单位显示 5:统计间隔为5秒 2:共统计2次 tps:每秒IO次数 kB_read/s:每秒从设备读取的数据量 kB_wrtn/s:每秒向设备写入的数据量 kB_read:读取的总数据量 kB_wrtn:写入的总数据量 note:读写单位kilobytes 2、iostat -x (查看设备使用率(%util)、响应时间(await)) rrqm/s:每秒这个设备相关的读取请求有多少被合并(请求相同block时,请求合并) wrqm/s:每秒这个设备相关的写入请求有多少被合并 r/s:每秒读取请求数(rio) w/s:每秒写入请求数(wio) resc/s:每秒读扇区数(rsect) wsec/s:每秒写扇区数(wsect) rkB/s:每秒读取的数据量,单位K字节 wkB/s:每秒写入的数据量,单位K字节 avgrq-sz:平均每次设备I/O操作的数据大小(扇区),(rsect+wsect)*扇区大小/(rio+wio) avgqu-sz:平均I/O队列长度(重点关注) await:平均每次设备I/O操作的等待时间(毫秒)(重点关注) svctm:平均每次设备I/O操作的服务时间(毫秒)svctm越接近于await则说明等待时间少(重点关注) %util:Disk Time/总时间,表示了设备的繁忙程度,80%表示设备已经很忙了(如果多磁盘另算,一体不能代表全局)(重点关注) 3、iostat常用命令 1、iostat -c参数:查看CPU状态信息 2、iostat -t参数:磁盘状态统计信息 1、Blk_read/s:每秒读多少块 2、Blk_read/s:开机到现在读了多少块 3、Blk_wrtn/s:每秒写了多少块 4、Blk_wrtn:开机到现在写了多少块 九:磁盘速度改进 目前改进磁盘存取速度的方式主要有两种: 1、磁盘快取控制:他将从磁盘读取的数据存在快取内存中以减少磁盘存取的次数,数据的读写都在快取内存中进行,大幅增加存取的速度,如要读取的数据不再快取内存中,或要写数据到磁盘时,才做磁盘的存取动作。这种方式在单工环境如dos之下,对大量数据的存取有很好的性能(量小且频繁的存取则不然),但在多工环境之下(因为要不停的做数据交换的动作)或数据库的存取(因为每一记录都很小)就不能显示其性能。这种方式没有任何的安全保障。 2、使用磁盘陈列的技术。磁盘阵列是把多个磁盘组成一个陈列,当做单一的磁盘使用,它将数据以分段的方式存储在不同的磁盘中,存取数据时,陈列中的相关磁盘一起动作,大幅减低数据的存取时间,同时有更佳的空间利用率。磁盘阵列所利用的不同的技术,称为RAID level,不同的level针对不同的系统及应用,以解决安全的问题。 3、RAIDO RAIDO将数据条带化将连续的数据分散在多个磁盘上进行存取,系统发出的IO命令(不管读IO还是写IO都一样),就可以在磁盘上被并行的执行,每个磁盘单独执行自己的那一部分要求,这样的并行的IO操纵能大大的增强整个存储系统的性能。假设一个RAIDO阵列有n(n>=2)个磁盘组成,每个磁盘的随机读写的IO能力都达到120的话,那么整个磁盘阵列的IO能力将是120*n。同时如果这个阵列总线的传输能力允许的情况下,RAIDO的吞吐量也将是单个磁盘的N倍 优点:快速,大容量 缺点:无备份安全性差(可以分别都存同样的,读只读个个的一部分)