首頁 > 軟體

用於檢測檢視磁碟活動的Linux命令

2020-06-16 16:40:43

Linux系統提供了一套方便的命令,可以幫助您檢視磁碟的繁忙程度,而不僅僅是有多滿。 在這篇文章中,我們將研究五個非常有用的命令來檢視磁碟活動。 可能必須將兩個命令(iostat和ioping)新增到您的系統中,這兩個命令要求您使用sudo許可權,但所有五個命令都提供了檢視磁碟活動的有用方法。

可能這些命令中最容易和最明顯的一個是dstat。

dstat

儘管dstat命令以字母“d”開頭,但它提供的資料不僅僅是磁碟活動。 如果要僅檢視磁碟活動,可以使用-d選項。 如下所示,您將獲得連續的磁碟讀/寫測量列表,直到您使用^ c停止顯示。 請注意,在第一個報告之後,顯示中的每個後續行將在以下時間間隔內報告磁碟活動,預設值僅為一秒。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -d
-dsk/total-
 read  writ
 346k  307k
  0    0
  0    0
  0    44k
 520k    0
 128k  324k
 244k    0
 924k  376k
 256k    0

在-d選項後面加一個數位會將間隔設定為該秒數。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat -d 10
-dsk/total-
 read  writ
 344k  306k
7782B 2048B
 354k  300k
4096B  98k
2458B 9421B
9557B  132k

注意,報告的資料可以以許多不同的單位顯示 - 例如,M(兆位元組),k(千位元組)和B(位元組)。

如果沒有選項,dstat命令也會向您顯示許多其他資訊 - 指示CPU如何花費時間,顯示網路和分頁活動,以及報告中斷和上下文切換。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in  out | int  csw
  5  2  93  0  0| 341k  303k|  0    0 |6755B  41k| 140  548
  3  1  96  0  0|  0    0 |  0    0 |  0    0 | 202  731
  5  3  91  1  0|  0    48k|  0    0 |  0    0 | 262  782
 31  9  60  0  0|  0    0 |  0    0 |  0    0 | 555  1882
 41  13  44  3  0|6600k    0 |  0    0 |  0    0 | 444  2309
 73  23  0  3  0|6408k  716k|  0    0 |  0    0 | 787  2629

dstat命令提供了對整體Linux系統效能的寶貴見解,幾乎用一組結合其功能的靈活而強大的命令取代了vmstat,netstat,iostat和ifstat等舊工具的集合。 有關dstat命令可以提供的其他資訊的更多資訊,請參閱dstat命令上的這篇文章。

iostat

iostat命令通過觀察裝置相對於其平均傳輸速率的活動時間來幫助監視系統輸入/輸出裝置負載。 它有時用於評估磁碟之間的活動平衡。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ iostat
Linux 4.20.0-042000-generic (linuxidc)  2018年12月29日  _x86_64_ (1 CPU)

avg-cpu:  %user  %nice %system %iowait  %steal  %idle
          4.76    0.10    2.00    0.17    0.00  92.97

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0            0.01        0.06        0.00        680          0
loop1            0.03        0.19        0.00      2291          0
loop2            0.01        0.02        0.00        219          0
loop3            0.04        0.18        0.00      2215          0
loop4            0.04        0.19        0.00      2256          0
loop5            0.01        0.02        0.00        220          0
loop6            0.01        0.02        0.00        228          0

當然,當您只想專注於磁碟時,Linux環路裝置上提供的所有統計資訊都會使顯示混亂。 但是,該命令提供了-p選項,允許您只檢視磁碟 - 如下面的命令所示。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ iostat -p sda
Linux 4.20.0-042000-generic (linuxidc)  2018年12月29日  _x86_64_ (1 CPU)

avg-cpu:  %user  %nice %system %iowait  %steal  %idle
          4.76    0.12    2.00    0.17    0.00  92.95

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              16.59      322.89      310.22    3942493    3787784
sda1            16.58      322.64      310.22    3939409    3787784

請注意,tps指的是每秒傳輸次數。

您也可以通過iostat提供重複報告。 在下面的範例中,我們使用-d選項每五秒進行一次測量。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ iostat -p sda -d 5
Linux 4.20.0-042000-generic (linuxidc)  2018年12月29日  _x86_64_ (1 CPU)

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              16.55      321.79      309.15    3944097    3789224
sda1            16.54      321.54      309.15    3941013    3789224

如果您希望省略第一個(啟動後的統計資訊)報告,請在命令中新增-y。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ iostat -p sda -d 5 -y
Linux 4.20.0-042000-generic (linuxidc)  2018年12月29日  _x86_64_ (1 CPU)

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              0.64        0.00        10.19          0        48
sda1              0.64        0.00        10.19          0        48

如果是兩個磁碟,可以看看第二個磁碟驅動器,命令如下:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ iostat -p sdb

iotop

iotop命令是用於檢視磁碟I/O的頂級實用程式。 它收集Linux核心提供的I/O使用資訊,以便您了解哪些進程在磁碟I/O方面最苛刻。 在下面的範例中,迴圈時間已設定為5秒。 顯示屏將自動更新,覆蓋以前的輸出。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ sudo iotop -d 5

Total DISK READ :      0.00 B/s | Total DISK WRITE :      3.18 K/s
Actual DISK READ:      0.00 B/s | Actual DISK WRITE:      7.95 K/s
  TID  PRIO  USER    DISK READ  DISK WRITE  SWAPIN    IO>    COMMAND       
  389 be/3 root        0.00 B/s    3.18 K/s  0.00 %  0.01 % [jbd2/sda1-8]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init splash
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_gp]
    4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_par_gp]
    6 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/~-kblockd]
    8 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [mm_percpu_wq]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]

ioping

ioping命令是一種完全不同型別的工具,但它可以報告磁碟延遲 - 磁碟響應請求所需的時間 - 並且可以幫助診斷磁碟問題。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ sudo ioping /dev/sda1
[sudo] linuxidc 的密碼:
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=1 time=937.0 us (warmup)
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=2 time=5.90 ms
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=3 time=3.94 ms
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=4 time=3.88 ms
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=5 time=6.37 ms
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=6 time=5.72 ms
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=7 time=958.4 us (fast)
4 KiB <<< /dev/sda1 (block device 30.0 GiB): request=8 time=93.3 us (fast)

atop

atop命令和top一樣,提供了很多關於系統效能的資訊,包括一些關於磁碟活動的統計資訊。

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ atop

ATOP - linuxidc      2018/12/29  13:57:54      --------------        10s elapsed
PRC | sys    2.05s | user  1.93s | #proc    337 | #zombie    1 | #exit    12 |
CPU | sys      9% | user    22% | irq      0% | idle    68% | wait      0% |
CPL | avg1    0.55 | avg5    0.24 | avg15  0.13 | csw    25241 | intr    4509 |
MEM | tot    2.8G | free  128.9M | cache 840.2M | buff  123.1M | slab  191.8M |
SWP | tot    1.4G | free    1.0G |              | vmcom  5.2G | vmlim  2.8G |
PAG | scan    6661 | steal  5565 | stall      0 | swin      6 | swout    123 |
DSK |          sda | busy    112% | read      71 | write    134 | avio 46.2 ms |
NET | transport    | tcpi    390 | tcpo    370 | udpi    104 | udpo    104 |
NET | network      | ipi      494 | ipo      474 | ipfrw      0 | deliv    494 |
NET | ens33    0% | pcki    753 | pcko    402 | si  614 Kbps | so  43 Kbps |
NET | lo      ---- | pcki      72 | pcko      72 | si    4 Kbps | so    4 Kbps |

如果您只想檢視磁碟統計資訊,可以使用以下命令輕鬆管理:

linuxidc@linuxidc:~/www.linuxidc.com/Linux公社$ atop | grep DSK
DSK |          sda | busy    100% | read  163221 | write  43826 | avio 63.9 ms |
DSK |          sda | busy    86% | read      12 | write    77 | avio 93.7 ms |
DSK |          sda | busy    104% | read      3 | write    40 | avio  231 ms |
DSK |          sda | busy    108% | read    110 | write    306 | avio 21.7 ms |

了解磁碟I/O

Linux提供了足夠的命令,可以讓您深入了解磁碟執行的難度,並幫助您專注於潛在的問題或減速。 希望其中一個命令可以告訴您在詢問磁碟效能時需要知道的內容。 偶爾使用這些命令有助於確保在需要檢查時特別忙或慢的磁碟是顯而易見的。


IT145.com E-mail:sddin#qq.com