本文中华纳云为大家分享关于监控和调试linux服务器上的磁盘I/O磁盘性能的最佳工具。在linux服务器中监控性能的一大关键指标就是磁盘I/O的输入和输出,会极大程度上影响linux服务器的多个方面,如文件或数据的保存或检索磁盘速度。这将会对应用程序和服务造成性能上的影响。
iostat属于sysstat包中基于终端的系统监控应用程序之一,sysstat包是一种广泛用使用的应用程序,可用于报告块设备和分区CPU统计信息和I/O的统计信息。在linux服务器中使用iostat需要运行适用于linux发行版的命令在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上]
如果仅需要显示简单的使用率报告,可以使用命令来运行:
iostat-d
第一个报告会提供关于系统启动以来时间的统计,后续报告中都会与上一个报告以来的时间有关。其中-x输出扩展统计报告,-t标志位每个报告启用时间。如果是想要消除报告输出中没有运行的设备,可以添加-x:
iostat -d -t
或者
iostat -d -x -t
在统计报告中如果是想以每秒千字节而不是每秒块为单位,可以直接添加-k,或者也可以使用-m来表示没秒兆字节为单位显示统计数据:
iostat -d -k
或者
iostat -d -m
iostat还可以用x秒的间隔来显示出连续的设备报告,如想得到以2秒间隔的显示报告:
iostat -d 2
还可以用x秒的间隔来显示出n 个报告,如2秒间隔时间来输出10个报告:
iostat -d 2 10
话可以把报告存于文件中,便于后期分析需要。
iostat -d 2 10 > disk_io_report.txt &
关于报告列的更多信息,可以选择阅读更多iostat手册页:
man Iostat
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
除上面方式外,还有其他方式可以用于监控磁盘的使用,如iotop等。根据实际情况来选择合适的工具,要记住选择运行适合当前使用linux发行版的命令。