I/O管理及监控命令
一:磁盘原理(简单理解)
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倍
优点:快速,大容量
缺点:无备份安全性差(可以分别都存同样的,读只读个个的一部分)