磁盤為系統(tǒng)提供了最基本的持久化存儲。文件系統(tǒng)則在磁盤的基礎(chǔ)上,提供了一個用來管理文件的樹狀結(jié)構(gòu)。
- 根據(jù)存儲介質(zhì)的不同,常見磁盤可以分為兩類:機械磁盤和固態(tài)磁盤。
- 按照接口來分類,比如可以把硬盤分為 IDE(Integrated Drive Electronics)、SCSI(Small Computer System Interface) 、SAS(Serial Attached SCSI) 、SATA(Serial ATA) 、FC(Fibre Channel) 等。
- 按照不同的使用方式,又可以把它們劃分為多種不同的架構(gòu)。最簡單的,就是直接作為獨立磁盤設(shè)備來使用;另一個比較常用的架構(gòu),是把多塊磁盤組合成一個邏輯磁盤,構(gòu)成冗余獨立磁盤陣列,也就是 RAID(Redundant Array of Independent Disks);最后一種架構(gòu),是把這些磁盤組合成一個網(wǎng)絡(luò)存儲集群,再通過 NFS、SMB、iSCSI 等網(wǎng)絡(luò)存儲協(xié)議,暴露給服務(wù)器使用。
指標查看
容量
$ df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 30308240 3167020 27124836 11% /
磁盤IO
- 性能指標:
- 使用率,是指磁盤處理 I/O 的時間百分比。過高的使用率(比如超過 80%),通常意味著磁盤 I/O 存在性能瓶頸。
- 飽和度,是指磁盤處理 I/O 的繁忙程度。過高的飽和度,意味著磁盤存在嚴重的性能瓶頸。當飽和度為 100% 時,磁盤無法接受新的 I/O 請求。
- IOPS(Input/Output Per Second),是指每秒的 I/O 請求數(shù)。
- 吞吐量,是指每秒的 I/O 請求大小。
- 響應(yīng)時間,是指 I/O 請求從發(fā)出到收到響應(yīng)的間隔時間。
- 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 ,就是響應(yīng)時間。
進程IO
可以使用 pidstat 或 iotop
- 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) 。
- 每秒讀取的數(shù)據(jù)大?。╧B_rd/s) ,單位是 KB。
- 每秒發(fā)出的寫請求數(shù)據(jù)大?。╧B_wr/s) ,單位是 KB。
- 每秒取消的寫請求數(shù)據(jù)大?。╧B_ccwr/s) ,單位是 KB。
- 塊 I/O 延遲(iodelay),包括等待同步塊 I/O 和換入塊 I/O 結(jié)束的時間,單位是時鐘周期。
- 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
前兩行分別表示,進程的磁盤讀寫大小總數(shù)和磁盤真實的讀寫大小總數(shù)。因為緩存、緩沖區(qū)、I/O 合并等因素的影響,它們可能并不相等。
剩下的部分,則是從各個角度來分別表示進程的 I/O 情況,包括線程 ID、I/O 優(yōu)先級、每秒讀磁盤的大小、每秒寫磁盤的大小、換入和等待 I/O 的時鐘百分比等。