查看linux服务器硬盘IO读写负载

来源:互联网 发布:网络电视连不上wifi 编辑:程序博客网 时间:2024/05/21 21:43

        近段时间,由于一台服务器的一个硬盘坏掉了(总共有两个硬盘),于是网上购买了一个普通的硬盘(非服务器专用),安装了 centos 系统,但是安装完之后,感觉非常的慢,使用一个命令都卡死在那里。最后怀疑是硬盘的问题,换服务器硬盘安装了系统,感觉好了许多,用 sdb(坏的硬盘)挂载了/home目录,用以存储数据,但是问题还是没有解决,IO压力非常的大..................         所以啊,不要贪便宜和方便,否则你会为你以后所带来的麻烦而后悔的呵呵

         I/O是 input/output的缩写,即输入输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。

          I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O 异步I/O),Memory-Mapped I/O(内存映设I/O)等,不同的I/O方式有不同的实现 方式和性能,在不同的应用中可以按情况选择不同的I/O方式。


          以下是对服务器的一个检查的过程:

         



基本分析:

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.


以下再接着使用参考资料所描述的方法进一步观察 :

可以结合vmstat 查看查看b参数(等待资源的进程数)

  vmstat -1

  如果你想对硬盘做一个IO负荷的压力测试可以用如下命令

  time dd if=/dev/zero bs=1M count=2048 of=direct_2G

  此命令为在当前目录下新建一个2G的文件

  我们在新建文件夹的同时来测试IO的负荷情况

  再通过如下脚本查看高峰的进程io情况

  monitor_io_stats.sh

  #!/bin/sh

  /etc/init.d/syslog stop

  echo 1 > /proc/sys/vm/block_dump

  sleep 60

  dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \

  print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \

  head -n 10

  echo 0 > /proc/sys/vm/block_dump

  /etc/init.d/syslog start