磁盘IO

作者: kar_joe | 来源:发表于2020-02-05 16:31 被阅读0次

    磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。

    • 根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。
    • 按照接口来分类,比如可以把硬盘分为 IDE(Integrated Drive Electronics)、SCSI(Small Computer System Interface) 、SAS(Serial Attached SCSI) 、SATA(Serial ATA) 、FC(Fibre Channel) 等。
    • 按照不同的使用方式,又可以把它们划分为多种不同的架构。最简单的,就是直接作为独立磁盘设备来使用;另一个比较常用的架构,是把多块磁盘组合成一个逻辑磁盘,构成冗余独立磁盘阵列,也就是 RAID(Redundant Array of Independent Disks);最后一种架构,是把这些磁盘组合成一个网络存储集群,再通过 NFS、SMB、iSCSI 等网络存储协议,暴露给服务器使用。

    指标查看

    容量

    $ df /dev/sda1 
    Filesystem     1K-blocks    Used Available Use% Mounted on 
    /dev/sda1       30308240 3167020  27124836  11% / 
    

    磁盘IO

    1. 性能指标:
    • 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
    • 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
    • IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
    • 吞吐量,是指每秒的 I/O 请求大小。
    • 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。
    1. iostat
    # -d -x表示显示所有磁盘I/O的指标
    $ iostat -d -x 1 
    Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util 
    loop0            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   0.00 
    loop1            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   0.00 
    sda              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   0.00 
    sdb              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   0.00 
    
    image.png

    需要注意的是:

    • %util ,就是我们前面提到的磁盘 I/O 使用率;
    • r/s+ w/s ,就是 IOPS;
    • rkB/s+wkB/s ,就是吞吐量;
    • r_await+w_await ,就是响应时间。

    进程IO

    可以使用 pidstat 或 iotop

    1. pidstat
    $ pidstat -d 1 
    13:39:51      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command 
    13:39:52      102       916      0.00      4.00      0.00       0  rsyslogd
    
    • 用户 ID(UID)和进程 ID(PID) 。
    • 每秒读取的数据大小(kB_rd/s) ,单位是 KB。
    • 每秒发出的写请求数据大小(kB_wr/s) ,单位是 KB。
    • 每秒取消的写请求数据大小(kB_ccwr/s) ,单位是 KB。
    • 块 I/O 延迟(iodelay),包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。
    1. iotop
    $ iotop
    Total DISK READ :       0.00 B/s | Total DISK WRITE :       7.85 K/s 
    Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s 
      TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND 
    15055 be/3 root        0.00 B/s    7.85 K/s  0.00 %  0.00 % systemd-journald 
    

    前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。
    剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。

    相关文章

      网友评论

          本文标题:磁盘IO

          本文链接:https://www.haomeiwen.com/subject/bopsxhtx.html