使用iostat查看磁盘压力
磁盘是计算机系统中最重要的资产之一。无论是用于存储数据、运行操作系统还是应用程序,磁盘都是必不可少的。因此,保证系统磁盘的正常运行是至关重要的。
了解iostat命令
iostat命令是一个用于监控磁盘 I/O(输入/输出)的工具。当磁盘I/O负载过重时,系统的响应时间和性能会下降,因此可通过iostat来监测系统中的磁盘运行情况。
iostat命令默认情况下提供的输出结果如下:
Linux 4.15.0-141-generic (hostname) 12/05/2021 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 4.27 0.00 1.47 0.24 0.00 94.03 Device tps kB/s iops %util sda 31.69 396.54 15.85 21.54 sdb 0.01 0.16 0.00 0.00
其中几个重要字段是:
- avg-cpu:显示了 CPU 的平均使用情况
- %util:显示了设备的最大I/O负载
- tps:显示了每秒传输的I/O请求数
- kB/s:每秒块的传输速度,单位为KB
- iops:每秒I/O操作的数量
如何使用iostat命令
iostat命令可以以两种格式运行:单次计数或定期更新。默认情况下,iostat将显示运行系统的所有磁盘信息:
iostat
要显示特定设备的信息,可使用以下命令:
iostat -p /dev/{device_name}
例如,如果要查看名为sda的磁盘的详细信息,可以使用以下命令:
iostat -p /dev/sda
为了连续查看系统的磁盘信息,可以使用以下命令:
iostat -x 5
其中“5”是更新输出的延迟时间。这条命令将每5秒更新一次磁盘信息。
如何解读iostat输出
iostat输出的信息可以帮助我们了解我们的磁盘是否正常工作,是否有任何性能瓶颈。
以下是一些常见的指标和指标值及其含义:
- avg-cpu:显示了 CPU 的平均使用情况
- %user:表示在用户级别运行的处理器时间的百分比
- %nice:表示在批处理优先级的上下文中运行的处理器时间的百分比
- %system:表示在内核级别(系统调用等)运行的处理器时间的百分比
- %iowait:表示在系统等待I/O完成时处理器空闲的时间百分比
- %steal:表示虚拟机监视器(如 hypervisor 或 KVM)从虚拟 CPU 窃取的 CPU 时间百分比
- %idle:表示未使用处理器时间的百分比
- tps:传输每秒I/O请求的数量。此值将不包括不同类型的I/O请求,如sync、async、direct等
- kB/s:每秒传输块的数量。这通常是可读的请求的总数,如标准文件读取
- iops:每秒I/O操作数量。这包括所有不同类型的I/O请求,如sync、async、direct等
- %util:磁盘I/O错误百分比
需要指出的是,最重要的是%util值。如果这个值超过80%,那么就可能是磁盘性能瓶颈的来源。