在 CentOS 7.8 上测试磁盘 IO 性能或查看磁盘 IO 状态,可以使用多种工具和命令。下面列出了一些最常用的方法:

dd - 用于测试磁盘速度(推荐)

使用 dd 命令测试磁盘的读取和写入性能,你可以分两步进行:

测试写入性能

你可以使用以下命令来测试磁盘的写入性能:

dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct 

这里的参数解释如下:

  • if=/dev/zero: 从特殊设备 /dev/zero 读取数据,它提供无限的零字节流。

  • of=testfile: 输出文件的名称设置为 testfile。

  • bs=1G: 设置块大小为 1 GB。

  • count=1: 只写入一个块,也就是 1 GB 数据。

  • oflag=direct: 使用直接 I/O 以绕过文件系统的缓存。

这将创建一个 1 GB 的文件(testfile)并测量写入操作的时间。

测试读取性能

为了测试读取性能,首先确保你有一个足够大的文件来读取。可以使用上面写入性能测试创建的 testfile。然后,使用以下命令测试从这个文件读取数据的性能:

dd if=testfile of=/dev/null bs=1G count=1 iflag=direct 

这里的参数解释如下:

  • if=testfile: 输入文件设置为之前创建的 testfile。

  • of=/dev/null: 输出到 /dev/null,它实际上是一个黑洞,所有写入它的数据都会被丢弃。

  • bs=1G: 设置块大小为 1 GB。

  • count=1: 只读取一个块,也就是 1 GB 数据。

  • iflag=direct: 使用直接 I/O 以绕过文件系统的缓存,确保数据是直接从磁盘读取。

这将从磁盘读取 1 GB 数据并测量操作时间。

注意:使用 dd 命令时要非常小心,因为如果指定错误的设备或文件,可能会导致数据丢失。

在测试结束后,如果不再需要 testfile,记得使用以下命令删除它,以释放磁盘空间:

rm -f testfile 

hdparm - 用于测试硬盘读取速度

sudo hdparm -tT /dev/sda 

iostat - 用于监视系统输入/输出设备负载(建议)

安装 sysstat 包以使用 iostat:

sudo yum install sysstat 

使用 iostat 查看磁盘 IO:

iostat -dx 1 

iotop - 用于监视磁盘 IO 使用情况的实时工具

安装 iotop:

sudo yum install iotop 

使用 iotop 查看实时磁盘 IO:

sudo iotop 

sar - 收集、报告或保存系统活动信息。 

同样是 sysstat 包的一部分:

sar -d 1 10 

这个命令会报告每秒磁盘活动,共报告10次。

fio - 灵活的 IO 测试器,

是一个专门用于测试磁盘性能的工具。 

安装 fio:

sudo yum install fio 

使用 fio 进行磁盘测试:

fio --name=TEST --eta-newline=5s --filename=fio-tempfile --rw=read --size=500M --ioengine=libaio --iodepth=10 --direct=1 --numjobs=1 --runtime=60 --group_reporting 

vmstat - 报告有关进程、内存、分页、块 IO 和 CPU 的信息

vmstat 1 

在使用这些工具时,请确保了解它们的工作原理和如何解释输出结果。特别是在生产环境中进行测试时,要注意测试可能会对系统性能产生影响,因此建议在低峰时段进行或在测试环境中运行。

Q.E.D.

  • reword 您的打赏,就是俺创作的动力