PRF:20190423 How To Monitor Disk I-O Activity Using iotop And iostat Commands In Linux.md

@warmfrog
This commit is contained in:
Xingyu.Wang 2019-05-05 10:13:40 +08:00
parent 8287fa3edf
commit eae7cec613

View File

@ -1,6 +1,6 @@
[#]: collector: (lujun9972)
[#]: translator: (warmfrog)
[#]: reviewer: ( )
[#]: reviewer: (wxy)
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (How To Monitor Disk I/O Activity Using iotop And iostat Commands In Linux?)
@ -8,67 +8,55 @@
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
在 Linux 中如何使用 iotop 和 iostat 监控磁盘 I/O 活动?
===================================================
======================================
你知道在 Linux 中我们使用什么工具检修和监控实时的磁盘活动吗?
你知道在 Linux 中我们使用什么工具检修和监控实时的磁盘活动吗?如果 [Linux 系统性能][1]变慢,我们会用 [top 命令][2] 来查看系统性能。它被用来检查是什么进程在服务器上占有如此高的使用率,对于大多数 Linux 系统管理员来说很常见,现实世界中被 Linux 系统管理员广泛采用。
如果 **[Linux 系统性能][1]**变慢,我们会用 **[top 命令][12]** 来查看系统性能。
它被用来检查是什么进程在服务器上占有如此高的使用率。
对于大多数 Linux 系统管理员来说很常见。
现实世界中被 Linux 系统管理员广泛采用。
如果在进程输出中你没有看到很大的不同,你仍然有选择查看其他东西。
我会建议你在 top 输出中检查 `wa` 状态因为大多数时间服务器性能由于在硬盘上的高 I/O 读和写降低了性能。
如果它很高或者波动,很可能就是它造成的。因此,我们需要检查硬盘上的 I/O 活动。
如果在进程输出中你没有看到很大的不同,你仍然有选择查看其他东西。我会建议你在 `top` 输出中检查 `wa` 状态,因为大多数时间里服务器性能由于在硬盘上的高 I/O 读和写降低了性能。如果它很高或者波动,很可能就是它造成的。因此,我们需要检查硬盘上的 I/O 活动。
我们可以在 Linux 中使用 `iotop``iostat` 命令监控所有的磁盘和文件系统的磁盘 I/O 统计。
### 什么是 iotop
iotop 是一个类似 top 的工具来显示实时的磁盘活动。
`iotop` 是一个类似 `top` 的工具,用来显示实时的磁盘活动。
iotop 监控 Linux 内核输出的 I/O 使用信息并且显示一个系统中进程或线程的当前 I/O 使用情况。
`iotop` 监控 Linux 内核输出的 I/O 使用信息,并且显示一个系统中进程或线程的当前 I/O 使用情况。
它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程 时间花费的百分比。
它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程花费的时间的百分比。
Total DISK READ 和 Total DISK WRITE 的值表示了一方面进程和内核线程之间的总的读写带宽,另一方面表示内核块设备子系统的。
`Total DISK READ``Total DISK WRITE` 的值一方面表示了进程和内核线程之间的总的读写带宽,另一方面也表示内核块设备子系统的。
Actual DISK READ 和 Actual DISK WRITE 的值表示在内核块设备子系统和下面硬件HDDSSD等等。)对应的实际磁盘 I/O 带宽。
`Actual DISK READ``Actual DISK WRITE` 的值表示在内核块设备子系统和下面硬件HDD、SSD 等等)对应的实际磁盘 I/O 带宽。
### 如何在 Linux 中安装 iotop
我们可以轻松在包管理器的帮助下安装,因为该软件包在所有的 Linux 发行版仓库中都可以获得。
对于 **`Fedora`** 系统,使用 **[DNF 命令][3]** 来安装 iotop。
对于 Fedora 系统,使用 [DNF 命令][3] 来安装 `iotop`
```
$ sudo dnf install iotop
```
对于 **`Debian/Ubuntu`** 系统,使用 **[API-GET 命令][4]** 或者 **[APT 命令][5]** 来安装 iotop。
对于 Debian/Ubuntu 系统,使用 [API-GET 命令][4] 或者 [APT 命令][5] 来安装 `iotop`
```
$ sudo apt install iotop
```
对于基于 **`Arch Linux`** 的系统,使用 **[Pacman Command][6]** 来安装 iotop。
对于基于 Arch Linux 的系统,使用 [Pacman Command][6] 来安装 `iotop`
```
$ sudo pacman -S iotop
```
对于 **`RHEL/CentOS`** 的系统,使用 **[YUM Command][7]** 来安装 iotop。
对于 RHEL/CentOS 的系统,使用 [YUM Command][7] 来安装 `iotop`
```
$ sudo yum install iotop
```
对于使用 **`openSUSE Leap`** 的系统,使用 **[Zypper Command][8]** 来安装 iotop。
对于使用 openSUSE Leap 的系统,使用 [Zypper Command][8] 来安装 `iotop`
```
$ sudo zypper install iotop
@ -76,72 +64,70 @@ $ sudo zypper install iotop
### 在 Linux 中如何使用 iotop 命令来监控磁盘 I/O 活动/统计?
iotop 命令有很多参数来检查关于磁盘 I/O 的变化
`iotop` 命令有很多参数来检查关于磁盘 I/O 的变化
```
# iotop
```
[![][9]![][9]][10]
![10]
如果你想检查那个进程实际在做 I/O那么运行 iotop 命令加上 `-o` 或者 `--only` 参数。
如果你想检查那个进程实际在做 I/O那么运行 `iotop` 命令加上 `-o` 或者 `--only` 参数。
```
# iotop --only
```
[![][9]![][9]][11]
**细节:**
* **`IO:`** 它显示每个进程的 I/O 利用率,包含磁盘和交换。
* **`SWAPIN:`** 它只显示每个进程的交换使用率。
![11]
细节:
* `IO`:它显示每个进程的 I/O 利用率,包含磁盘和交换。
* `SWAPIN` 它只显示每个进程的交换使用率。
### 什么是 iostat
iostat 被用来报告中央处理单元CPU的统计和设备与分区的输出/输出的统计。
`iostat` 被用来报告中央处理单元CPU的统计和设备与分区的输出/输出的统计。
iostat 命令通过观察与他们平均传输率相关的设备活跃时间来监控系统输入/输出设备载
`iostat` 命令通过观察与它们平均传输率相关的设备活跃时间来监控系统输入/输出设备载。
iostat 命令生成的报告可以被用来改变系统配置来更好的平衡物理磁盘之间的输入/输出负载。
`iostat` 命令生成的报告可以被用来改变系统配置来更好的平衡物理磁盘之间的输入/输出负载。
所有的统计都在 iostat 命令每次运行时被报告。该报告包含一个 CPU 头部,后面是一行 CPU 统计。
所有的统计都在 `iostat` 命令每次运行时被报告。该报告包含一个 CPU 头部,后面是一行 CPU 统计。
在多处理器系统中CPU 统计被计算为系统层面的所有处理器的平均值。一个设备头行显示后紧跟一行每个配置设备的统计。
在多处理器系统中CPU 统计被计算为系统层面的所有处理器的平均值。设备头行后紧跟显示每个配置的设备一行的统计。
iostat 命令生成两种类型的报告CPU 利用率报告和设备利用率报告。
`iostat` 命令生成两种类型的报告CPU 利用率报告和设备利用率报告。
### 在 Linux 中怎样安装 iostat
iostat 工具是 sysstat 包的一部分,所以我们可以轻松地在包管理器地帮助下安装因为在所有的 Linux 发行版的仓库都是可以获得的。
`iostat` 工具是 `sysstat` 包的一部分,所以我们可以轻松地在包管理器地帮助下安装因为在所有的 Linux 发行版的仓库都是可以获得的。
对于 **`Fedora`** 系统,使用 **[DNF Command][3]** 来安装 sysstat。
对于 Fedora 系统,使用 [DNF Command][3] 来安装 `sysstat`
```
$ sudo dnf install sysstat
```
对于 **`Debian/Ubuntu`** 系统,使用 **[APT-GET Command][4]** 或者 **[APT Command][5]** 来安装 sysstat。
对于 Debian/Ubuntu 系统,使用 [APT-GET Command][4] 或者 [APT Command][5] 来安装 `sysstat`
```
$ sudo apt install sysstat
```
对于基于 **`Arch Linux`** 的系统,使用 **[Pacman Command][6]** 来安装 sysstat。
对于基于 Arch Linux 的系统,使用 [Pacman Command][6] 来安装 `sysstat`
```
$ sudo pacman -S sysstat
```
对于 **`RHEL/CentOS`** 系统,使用 **[YUM Command][7]** 来安装 sysstat。
对于 RHEL/CentOS 系统,使用 [YUM Command][7] 来安装 `sysstat`
```
$ sudo yum install sysstat
```
对于 **`openSUSE Leap`** 系统,使用 **[Zypper Command][8]** 来安装 sysstat。
对于 openSUSE Leap 系统,使用 [Zypper Command][8] 来安装 `sysstat`
```
$ sudo zypper install sysstat
@ -149,9 +135,9 @@ $ sudo zypper install sysstat
### 在 Linux 中如何使用 sysstat 命令监控磁盘 I/O 活动/统计?
在 iostat 命令中有很多参数来检查关于 I/O 和 CPU 的变化统计信息。
`iostat` 命令中有很多参数来检查关于 I/O 和 CPU 的变化统计信息。
不加参数运行 iostat 命令会看到完整的系统统计。
不加参数运行 `iostat` 命令会看到完整的系统统计。
```
# iostat
@ -169,7 +155,7 @@ loop1 0.00 0.00 0.00 0.00 1093
loop2 0.00 0.00 0.00 0.00 1077 0 0
```
运行 iostat 命令加上 `-d` 参数查看所有设备的 I/O 统计。
运行 `iostat` 命令加上 `-d` 参数查看所有设备的 I/O 统计。
```
# iostat -d
@ -184,7 +170,7 @@ loop1 0.00 0.00 0.00 0.00 1093
loop2 0.00 0.00 0.00 0.00 1077 0 0
```
运行 iostat 命令加上 `-p` 参数查看所有的设备和分区的 I/O 统计。
运行 `iostat` 命令加上 `-p` 参数查看所有的设备和分区的 I/O 统计。
```
# iostat -p
@ -206,7 +192,7 @@ loop1 0.00 0.00 0.00 0.00 1093
loop2 0.00 0.00 0.00 0.00 1077 0 0
```
运行 iostat 命令加上 `-x` 参数显示所有设备的详细的 I/O 统计信息。
运行 `iostat` 命令加上 `-x` 参数显示所有设备的详细的 I/O 统计信息。
```
# iostat -x
@ -224,7 +210,7 @@ loop1 0.00 0.00 0.00 0.00 0.40 12.86 0.00 0.
loop2 0.00 0.00 0.00 0.00 0.38 19.58 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
```
运行 iostat 命令加上 `-d [设备名]` 参数查看具体设备和它的分区的 I/O 统计信息。
运行 `iostat` 命令加上 `-d [设备名]` 参数查看具体设备和它的分区的 I/O 统计信息。
```
# iostat -p [Device_Name]
@ -242,7 +228,7 @@ sda2 0.18 6.76 80.21 0.00 3112916 36924
sda1 0.00 0.01 0.00 0.00 3224 0 0
```
运行 iostat 命令加上 `-m` 参数以 `MB` 为单位而不是 `KB` 查看所有设备的统计。默认以 KB 显示输出。
运行 `iostat` 命令加上 `-m` 参数以 MB 为单位而不是 KB 查看所有设备的统计。默认以 KB 显示输出。
```
# iostat -m
@ -260,7 +246,7 @@ loop1 0.00 0.00 0.00 0.00 1
loop2 0.00 0.00 0.00 0.00 1 0 0
```
运行 iostat 命令使用特定的间隔使用如下的格式。在这个例子中,我们打算以 5 秒捕获的间隔捕获两个报告。
运行 `iostat` 命令使用特定的间隔使用如下的格式。在这个例子中,我们打算以 5 秒捕获的间隔捕获两个报告。
```
# iostat [Interval] [Number Of Reports]
@ -290,7 +276,7 @@ loop1 0.00 0.00 0.00 0.00 0
loop2 0.00 0.00 0.00 0.00 0 0 0
```
运行 iostat 命令 `-N` 参数来查看 LVM 磁盘 I/O 统计报告。
运行 `iostat` 命令与 `-N` 参数来查看 LVM 磁盘 I/O 统计报告。
```
# iostat -N
@ -307,7 +293,7 @@ sdc 0.01 0.12 0.00 2108 0
2g-2gvol1 0.00 0.07 0.00 1204 0
```
运行 nfsiostat 命令来查看 Network File SystemNFS的 I/O 统计。
运行 `nfsiostat` 命令来查看 Network File SystemNFS的 I/O 统计。
```
# nfsiostat
@ -320,7 +306,7 @@ via: https://www.2daygeek.com/check-monitor-disk-io-in-linux-using-iotop-iostat-
作者:[Magesh Maruthamuthu][a]
选题:[lujun9972][b]
译者:[warmfrog](https://github.com/warmfrog)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出