磁盤為系統(tǒng)提供了最基本的持久化存儲(chǔ)粱胜。文件系統(tǒng)則在磁盤的基礎(chǔ)上亡嫌,提供了一個(gè)用來管理文件的樹狀結(jié)構(gòu)县习。
- 根據(jù)存儲(chǔ)介質(zhì)的不同,常見磁盤可以分為兩類:機(jī)械磁盤和固態(tài)磁盤配深。
- 按照接口來分類携添,比如可以把硬盤分為 IDE(Integrated Drive Electronics)、SCSI(Small Computer System Interface) 篓叶、SAS(Serial Attached SCSI) 烈掠、SATA(Serial ATA) 、FC(Fibre Channel) 等缸托。
- 按照不同的使用方式左敌,又可以把它們劃分為多種不同的架構(gòu)。最簡(jiǎn)單的俐镐,就是直接作為獨(dú)立磁盤設(shè)備來使用母谎;另一個(gè)比較常用的架構(gòu),是把多塊磁盤組合成一個(gè)邏輯磁盤京革,構(gòu)成冗余獨(dú)立磁盤陣列奇唤,也就是 RAID(Redundant Array of Independent Disks)幸斥;最后一種架構(gòu),是把這些磁盤組合成一個(gè)網(wǎng)絡(luò)存儲(chǔ)集群咬扇,再通過 NFS甲葬、SMB、iSCSI 等網(wǎng)絡(luò)存儲(chǔ)協(xié)議懈贺,暴露給服務(wù)器使用经窖。
指標(biāo)查看
容量
$ df /dev/sda1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 30308240 3167020 27124836 11% /
磁盤IO
- 性能指標(biāo):
- 使用率,是指磁盤處理 I/O 的時(shí)間百分比梭灿。過高的使用率(比如超過 80%)画侣,通常意味著磁盤 I/O 存在性能瓶頸。
- 飽和度堡妒,是指磁盤處理 I/O 的繁忙程度配乱。過高的飽和度,意味著磁盤存在嚴(yán)重的性能瓶頸皮迟。當(dāng)飽和度為 100% 時(shí)搬泥,磁盤無法接受新的 I/O 請(qǐng)求。
- IOPS(Input/Output Per Second)伏尼,是指每秒的 I/O 請(qǐng)求數(shù)忿檩。
- 吞吐量,是指每秒的 I/O 請(qǐng)求大小爆阶。
- 響應(yīng)時(shí)間燥透,是指 I/O 請(qǐng)求從發(fā)出到收到響應(yīng)的間隔時(shí)間。
- iostat
# -d -x表示顯示所有磁盤I/O的指標(biā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)時(shí)間杉女。
進(jìn)程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)和進(jìn)程 ID(PID) 。
- 每秒讀取的數(shù)據(jù)大性(kB_rd/s) 熏挎,單位是 KB。
- 每秒發(fā)出的寫請(qǐng)求數(shù)據(jù)大猩卫(kB_wr/s) 坎拐,單位是 KB。
- 每秒取消的寫請(qǐng)求數(shù)據(jù)大小(kB_ccwr/s) 哼勇,單位是 KB都伪。
- 塊 I/O 延遲(iodelay),包括等待同步塊 I/O 和換入塊 I/O 結(jié)束的時(shí)間积担,單位是時(shí)鐘周期陨晶。
- 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
前兩行分別表示,進(jìn)程的磁盤讀寫大小總數(shù)和磁盤真實(shí)的讀寫大小總數(shù)帝璧。因?yàn)榫彺嫦扔⒕彌_區(qū)、I/O 合并等因素的影響的烁,它們可能并不相等褐耳。
剩下的部分,則是從各個(gè)角度來分別表示進(jìn)程的 I/O 情況渴庆,包括線程 ID铃芦、I/O 優(yōu)先級(jí)、每秒讀磁盤的大小把曼、每秒寫磁盤的大小杨帽、換入和等待 I/O 的時(shí)鐘百分比等漓穿。