如何监视磁盘io?


Answers:


225

对于磁盘I / O趋势分析,有一些选择。我个人最喜欢的是的sar命令sysstat。默认情况下,它给出如下输出:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

%iowait是等待I / O所花费的时间。使用Debian软件包,您必须/etc/default/sysstat在安装软件包后通过配置文件启用统计收集器。

要查看按设备划分的当前利用率iostat,还可以从sysstat软件包中使用命令:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

可以在趋势图中显示磁盘使用情况的其他一些选择是munincacti


Munin或Cacti是我想要的。感谢您的指导。
camomileCase 2012年

6
请注意,%iowait仅显示内核仅等待IO的时间。在100%CPU绑定的服务器上,无论它正在执行多少IO,它都将为零。
于尔根斯特罗贝尔

iostat -x dm-0 | grep设备;iostat -xd 2 -y dm-0 | grep dm-0
胡安·麦地那

104

看看iotop。

或iodump,如果这更不利于您的思考方式。

注意:这至少需要内核2.6.20才能运行。


这不仅是Linux,还需要更新(或修补)的内核。
jordanm 2012年

这些看起来很适合发现当前发生的情况,但是我正在寻找更大的图像监控。
camomileCase 2012年

8
@camomileCase -你没有指定你的问题...
天衣

90

我喜欢dstat。它可以显示每个磁盘甚至md设备(RAID)的总数和统计信息,还可以使用颜色进行更好的概述:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t 时间戳记
  • -d 用于磁盘统计
  • -D 指定要报告的确切设备
  • 60平均超过60秒。显示屏每秒更新一次,但是每60秒仅更新一次。

  • 在此示例中未使用,但是-c可以报​​告等待IO百分比,在大多数情况下,该百分比与CPU等待磁盘中的数据有关。

它可用于大多数Linux发行版,但有时需要从存储库中安装。


49

只需从计算机上的文件(假设使用最新内核),您就可以询问/sys/block/sda/stat/proc/diskstats。但是,它将需要一些翻译。但这对快速而肮脏的检查很好。




2
此答案的最大优点是无需安装任何工具。就在那里。(可能是:
本·阿弗林

2
例如:echo“读取io合并扇区的滴答声,写入io合并扇区的滴答声在飞行中,时间inqueks”; cat / sys / block / vda / vda1 / stat; sleep 10; cat / sys / block / vda / vda1 / stat
Ben Aveling

35

另一种选择是使用: sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

该程序将告诉您自iotop启动以来,一个进程已写入磁盘和从磁盘读取了多少数据。


我听到有什么东西正在访问磁盘,但是累积的输出却非常缓慢地增长,有时甚至在一秒钟之内根本没有增长。
迈克尔,

如果您听到该磁盘,则可能是旧的和/或速度慢。现代硬盘驱动器通常非常安静。它发出什么样的声音?使用smartctl,以查看磁盘是否是健康的。
rudolfbyker

8

监视磁盘Io可以通过以下多种工具来完成。

  1. 恒温器
  2. SAR
  3. 虚拟机

另外,一些重要的操作系统概念对于理解它们也是非常必要的。阅读Linux IO完整教程


2
iozone用于测试而非监视:“ Iozone是文件系统基准测试工具。该基准测试可生成并测量各种文件操作。”
Andrew Beals

7

快速了解负载来源的另一个好工具是 atop

它可以向您显示所有资源(CPU,内存/交换,网络和磁盘I / O)的概述,或者您可以向下钻取到单个资源并按消耗的资源对进程进行排序。


5

为什么不尝试nmon。它可以处理磁盘和网络。最初用于AIX,但现在已经移植到Linux了几年。


1

如果您想长期查看性能,最好的方法是使用Centreon ,它是Nagios的强大工具。Centreon使您能够通过绘制资源性能和许多其他事物的图表进行监视。


还有什么其他的东西?有截图吗?请扩大您的答案。
Konrad Gajewski
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.