查看磁盘类型

当前磁盘中速度最快的应该是SSD了。

查看命令:

> yum install lsscsi

> lsscsi # 列出 SCSI 设备(或主机)及其属性

[0:2:0:0]    disk    DELL     PERC H330 Adp    4.30  /dev/sda 
[14:0:0:0]   cd/dvd  HL-DT-ST DVD+-RW GU90N    A3C3  /dev/sr0

显然,我的电脑上没有SSD,只是普通的磁盘。

如果有SSD,第5列会显示SSD字样。

查看磁盘使用情况

使用top命令,可以看到机器总体概况。

其中,wa为io操作wait的情况,其值越大,说明io操作阻塞情况越严重。

更加详细的磁盘状况可以使用sar分析。

安装:

yum install sysstat

然后就可以使用iostat、mpstat、sar命令了。

其中:

  • iostat: 监控系统IO设备的负载,能够显示平均读写速率,可根据监测结果调整系统配置以平衡物理磁盘和IO负载
  • mpstat: 打印cpu状态
  • sar:可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据

这里主要介绍一下sar的使用。基本操作:

sar [options] [-o filename] interval [count]

- -o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中
- interval:表示采样间隔时间,该参数必须手动设置
- count:表示采样次数,是可选参数,其默认值为 1
- options:为命令行选项,可通过man sar查看

举例说明如下:

# 查看cpu状态,第秒统计一次,共统计10次
sar -u 1 10

Linux 3.10.0-1160.el7.x86_64 (centos7) 	11/01/2021 	_x86_64_	(8 CPU)
01:37:30 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:37:31 PM     all     14.68      0.09      6.02      0.99      0.00     78.22
...

含义:

  • %user:用于表示用户模式下消耗的 CPU 时间的比例
  • %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例
  • %system:系统模式下消耗的 CPU 时间的比例
  • %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例
  • %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例
  • %idle:CPU 空闲时间比例
# 查看磁盘状态,第秒统计一次,共统计10次
sar -d 1 10

Linux 3.10.0-1160.el7.x86_64 (centos7) 	11/01/2021 	_x86_64_	(8 CPU)

01:40:31 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
01:40:32 PM    dev8-0     26.00      0.00    355.00     13.65      0.56     21.69      2.46      6.40
01:40:32 PM  dev253-0     26.00      0.00    355.00     13.65      0.56     21.65      2.46      6.40
01:40:32 PM  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
...

含义:

  • tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的
  • rd_sec/s:每秒读扇区的次数
  • wr_sec/s:每秒写扇区的次数
  • avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区)
  • avgqu-sz:磁盘请求队列的平均长度
  • await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒
  • svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间
  • %util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和

通过’iostat -dxk 1 10’ 也可以得到类似的输出,具体使用可参考manpage。

小结

如果磁盘性能不足以应对应用程序的请求,可通过调整系统参数来达到平衡。

如果磁盘一直处于较高的使用状态,可能会对其他进程产生影响,导致不易调试的bug。