在Linux服务器上需要监控的关键性能指标之一是磁盘I/O(输入/输出)活动,磁盘 I/O 活动会显著影响Linux服务器的多个方面,特别是在文件或数据的读取和写入速度方面(尤其是在数据库服务器上)。这会对应用程序和服务的性能产生连锁反应。
1. iostat – 显示设备的输入输出统计信息
iostat 是 sysstat 包中的众多基于终端的系统监控工具之一,sysstat 是一个广泛使用的实用工具,旨在报告 CPU 统计信息以及块设备和分区的 I/O 统计信息。
要在 Linux 服务器上使用 iostat,您需要通过运行适用于您 Linux 发行版的命令来安装 sysstat 包。
sudo apt install sysstat [Debian, Ubuntu 和 Mint]
sudo yum install sysstat [RHEL/CentOS/Fedora 和 Rocky Linux/AlmaLinux]
sudo emerge -a app-admin/sysstat [Gentoo Linux]
sudo apk add sysstat [Alpine Linux]
sudo pacman -S sysstat [Arch Linux]
sudo zypper install sysstat [OpenSUSE]
要显示一个简单的设备利用率报告,可以使用 `-d` 命令行选项运行 iostat。通常,第一次报告提供关于自系统启动以来的统计信息,每个后续报告则关注自上次报告以来的时间。
使用 `-x` 来获得扩展统计信息报告,使用 `-t` 标志为每个报告启用时间。此外,如果您希望从报告输出中排除没有任何活动的设备,可以添加 `-z` 标志:
iostat -d -t
或者
iostat -d -x -t
要以每秒千字节而非每秒块为单位显示统计信息,可以添加 `-k` 标志,或者使用 `-m` 标志以每秒兆字节为单位显示统计信息。
iostat -d -k
或者
iostat -d -m
iostat 还可以显示连续的设备报告,间隔为 x 秒。例如,以下命令显示每两秒的报告:
iostat -d 2
与前面的命令相关,您可以在每 x 秒的间隔中显示 n 个报告。以下命令将在每两秒间隔中显示 10 个报告:
iostat -d 2 10
另外,您还可以将报告保存到文件中以供稍后分析。
iostat -d 2 10 > disk_io_report.txt &
有关报告列的更多信息,请阅读 iostat 手册页:
man iostat
2. sar – 显示 Linux 系统活动
sar 是另一个非常有用的工具,它也随 sysstat 包一起提供,旨在收集、报告或保存系统活动信息。在开始使用它之前,您需要按以下步骤进行配置。
首先,在 `/etc/default/sysstat` 文件中启用数据收集。
vi /etc/default/sysstat
找到以下行并将值更改为 “true”:
ENABLED="true"
接下来,您需要减少 sysstat cron 作业中定义的数据收集间隔。默认情况下,它设置为每 10 分钟收集一次数据,您可以将其降低为每 2 分钟。
您可以在 `/etc/cron.d/sysstat` 文件中进行此操作:
# vi /etc/cron.d/sysstat
保存并关闭文件。
最后,使用以下 systemctl 命令启用并启动 sysstat 服务:
systemctl enable --now sysstat.service
systemctl enable sysstat.service
接下来,等待 2 分钟,然后开始查看 sar 报告。使用 sar 命令和 `-b` 命令行选项来报告 I/O 和传输速率统计信息,使用 `-d` 来报告每个块设备的活动,如下所示:
sar -d -b
3. iotop – 监控 Linux 磁盘 I/O 使用情况
iotop 类似于 top 监控工具,它是一个简单的实用工具,可以让您按进程监控磁盘 I/O 活动和使用情况。
您可以按照以下步骤在 Linux 服务器上安装它(记得运行适合您 Linux 发行版的命令):
sudo apt install iotop [Debian, Ubuntu 和 Mint]
sudo yum install iotop [RHEL/CentOS/Fedora 和 Rocky Linux/AlmaLinux]
sudo emerge -a sys-processs/iotop [Gentoo Linux]
sudo apk add iotop [Alpine Linux]
sudo pacman -S iotop [Arch Linux]
sudo zypper install iotop [OpenSUSE]
要监控每个进程的 I/O 活动,您可以按照以下方式运行 iotop,而不带任何参数。默认情况下,迭代之间的延迟为 1 秒。您可以使用 `-d` 标志来更改此延迟。
iotop
或者
iotop -d 2
iotop 默认显示进程的所有线程。要更改此行为,仅显示进程,可以使用 `-P` 命令行选项。
iotop -P
此外,使用 `-a` 选项,您可以指示它显示累计的 I/O,而不是带宽。在此模式下,iotop 显示自启动以来进程执行的 I/O 总量。
iotop -P -a
以上就是我们为您提供的内容!我们希望了解您对本指南或上述工具的看法。