2021-05-12 14:32:11
用於檢測檢視磁碟活動的Linux命令
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提供了足夠的命令,可以讓您深入了解磁碟執行的難度,並幫助您專注於潛在的問題或減速。 希望其中一個命令可以告訴您在詢問磁碟效能時需要知道的內容。 偶爾使用這些命令有助於確保在需要檢查時特別忙或慢的磁碟是顯而易見的。
相關文章