一:磁盘原理(简单理解)

    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操作的次数

    

监控ASM磁盘 监控磁盘io命令_监控ASM磁盘


    可以将碎片整理到一起,节省寻找的时间

    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等待队列中所花费的等待时间。

    

监控ASM磁盘 监控磁盘io命令_监控ASM磁盘_02


    

    3、单个IO时间:单个IO时间仅仅指的是IO操作在磁盘内部处理的时间,而IO响应时间还要包括IO操作在IO等待对别中所花费的等待时间。

    

    4、Avg Queue Length

    

七:windows监控----perfmon

    1、C:\WINDOWS\SYSTEM32目录下

    2、windows下的IO性能

    

监控ASM磁盘 监控磁盘io命令_监控ASM磁盘_03


八:Linux--IOSTAT

    1、iostat 硬盘读写性能,#查看tps和吞吐量信息

    

监控ASM磁盘 监控磁盘io命令_ios_04


        -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倍

            

            优点:快速,大容量

            缺点:无备份安全性差(可以分别都存同样的,读只读个个的一部分)