首页 > 代码库 > linux 磁盘性能监控

linux 磁盘性能监控

linux下对于查看进程的命令非常多也非常强大。经常使用的如:ps  top

可是在磁盘性能监控方面就没有那么统一了。

以下列举一些磁盘监控命令。此处仅仅是起到抛砖引玉作用,具体使用參数请參考man手冊。

一 df

df命令能够获取硬盘被占用了多少空间。眼下还剩下多少空间等信息,它也能够显示全部文件系统对i节点和磁盘块的使用情况。

常见的用法如:df -h  以人类easy阅读的方式显示。


二 du

du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。统计文件夹(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定文件夹的每个子文件夹并显示该文件夹占用文件系统数据块(1024字节)的情况。若没有给出指定文件夹,则对当前文件夹进行统计。

常见使用方式有:列出当前文件夹大小:du -sh   假设希望列出当前文件夹中各个子文件夹大小 :du -sh *


三 fdisk

能够对磁盘进行分区,同一时候也能够查看整个磁盘大小,尤其是在磁盘刚买来还没有分区格式化的时候使用,能够使用:

fdisk /dev/(your disk name)  进入后使用p命令能够查看磁盘的具体信息。


四 iostat 能够提供丰富的IO状态数据  

$ iostat -d -k 1 10

參数 -d 表示,显示设备(磁盘)使用状态。-k某些使用block为单位的列强制使用Kilobytes为单位。1 10表示。数据显示每隔1秒刷新一次,共显示10次。


使用-x參数能够获得很多其它统计信息,部分显示參数解释例如以下:

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用须要读取数据的 时候,VFS将请求发到各个FS,假设FS发现不同的读取请求读取的是同样Block的数据,FS会将这个请求合并Merge)。wrqm/s:每秒这个 设备相关的写入请求有多少被Merge了。


rsec/s:每秒读取的扇区数。wsec/: 每秒写入的扇区数。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;


await:每个IO请求的处理的平均时间(单位是微秒)。

这里能够理解为IO的响应时 间,一般地系统IO响应时间应该低于5ms,假设大于10ms就比較大了。


%util:在统计时间内全部处理IO时间。除以总共统计时间。比如。假设统计间隔1秒。该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该參数暗示了设备的繁忙程度。一般地,假设该參数是100%表示设备已经接近满负荷执行了(当然假设是多磁盘,即使%util是100%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。


五 vmstat  实时产看内存使用情况

不解释了,直接上结果:

$ vmstat 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2037916 105012 725188    0    0    63    18  206  589  5  2 92  2  0	
想看清楚一些能够加 -S  后面跟 K M

$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0   1903    104    723    0    0    57    17  207  613  5  2 92  2  0	


六 dstat  强大的网络 磁盘 cpu监控命令

彩色显示cpu、磁盘、网络、IO、内存等使用情况。

dstat 
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  5   2  92   2   0   0| 266k   70k|   0     0 |   0     0 | 825  2532 
  2   2  82  14   0   0|3596k   84k| 352B    0 |   0     0 | 894    12k
  3   3  83  11   0   0|2632k    0 |   0     0 |   0     0 |1025  7427 
  1   1  87  11   0   0|3020k   52k| 128B  142B|   0     0 | 534  4132 
  2   1  88   9   0   0|3236k    0 | 160B   78B|   0     0 | 597  6167 ^C

默认情况下分五个区域:

1、 --total-cpu-usage---- CPU使用率
usr:用户空间的程序所占百分比。
sys:系统空间程序所占百分比。
idel:空暇百分比。
wai:等待磁盘I/O所消耗的百分比;
hiq:硬中断次数;
siq:软中断次数。
2、 -dsk/total- 磁盘统计
read:读总数
writ:写总数
3、 -net/total- 网络统计
recv:网络收包总数
send:网络发包总数
4、 ---paging-- 内存分页统计
in: pagein(换入)
out:page out(换出)
注:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间。通常情况下当系统已经開始用交换空间的时候,就说明你的内存已经不够用了,或者说内存很分散。理想情况下page in(换入)和page out(换出)的值是0 0。
5、 --system-- 系统信息
int:中断次数
csw:上下文切换
注:中断(int)和上下文切换(csw)。这项统计仅在有比較基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,须要对CPU进行关注。你的server普通情况下都会执行执行一些程序。所以这项总是显示一些数值。
默认情况下,dstat 会每隔一秒刷新一次数据。一直刷新并一直输出,按 Ctrl+C 退出 "dstat"

七 iotop  查看进程的io性能

以上命令仅仅能查看整个硬盘的io性能。不能对每一个进程的io性能进行监控。

iotop则用于监控每一个进程的io性能,

类似于查看进程状态的top命令,我这里须要超级权限才干执行

很直观的显示每一个进程的读写速度。不上结果了。自行验证。

八 nload 命令行实时监控网速

nload <eth0 / wlan0>

技术分享

附:查看系统中某个文件夹下占用空间最大的前十个文件夹:

<pre name="code" class="python">sudo  du -sh * ./ | sort -n -r | head -n 10





linux 磁盘性能监控