磁碟
扇區sector: 是磁碟中最小的物理儲存單元,單位 512位元組(byte)
塊Block:在linux檔案系統中多個連續的扇區,被稱為block,塊的概念,也是系統中認為最小的儲存單元
linux:類似Ext4檔案系統,就是磁碟分塊
windows: 類似NTFS檔案系統,也是塊,只是被叫做簇
頁page:作業系統與記憶體資料交換的最小單位
緩衝區: buffer 記憶體與磁碟速度不匹配,在資料與磁碟進行10時,資料先進入緩衝區
頁快取: linux記憶體中對磁碟部分資料的副本,加快程式讀取磁碟的速度和程序間資料共享
在linux系統中,
一切都是檔案
。它把一切資源都看作是檔案, 像是硬體裝置等,我們對硬體的訪問,可以透過讀寫檔案的方式來進行。
磁碟檔案系統 :ext4,xfs,nfs
記憶體檔案系統:/proc,/sys 基於記憶體的檔案系統
網路檔案系統:用於訪問其他裝置資料的檔案系統,nfs,smb
讀寫檔案的操作流程 :
fdisk -l 檢視磁碟資訊
磁碟陣列RAID (Redundant Array of Independent Disks)
-- 獨立磁碟構成具有冗餘能力的陣列
由多塊獨立的磁碟組合成一個容量巨大的磁碟組,利用磁碟提供資料所產生的加成效果提升整個磁碟系統的效能。利用這個技術,把資料切割成多段,分別存在不同磁碟上
RAID0:資料分片存在2塊磁碟,
讀寫速度提升
2倍,主要用於SWAPITMP,但是資料不幾餘,資料恢復難 ——-提速
RAID1:相同資料幾餘存入2塊磁碟,寫速度不變,讀速度提升2倍,資料幾餘1份,主要用於
資料備份
,但磁碟利用率低 ——-備份
RAID5:資料分片和校驗碼混合儲存3份,
讀寫速度
提升2倍,主要在要求高速時用,可以用於
資料還原
RAID10:2塊磁碟1組先做RAID1,多組RAID1,再做RAIDO。讀寫速度N倍 兼顧RAID 0 和1 的優點
磁碟監聽命令
iostat
需要透過 yum install systat -y 安裝
iostat -dx 2
rrqm/s: 每秒進行merge的讀運算元目,即delta(rmerge)/s
wrqm/s:每秒進行merge的寫運算元目 即 delta(wmerge)/s
r/s: 每秒完成的讀I/0裝置次數 即delta(rio)/s
w/s:每秒完成的寫I/0裝置次數
rsec/s: 每秒讀扇區數
wsec/s: 每秒寫扇區數
rkB/s: 每秒讀k位元組數
wkB/s:每秒寫k位元組數
檢視具體磁碟使用空間使用 df-h
df -h 跟上詳細系統名
du -sh 檢視當前資料夾的磁碟大小
磁碟的效能指標
使用率: 指磁碟處理I/O的時間百分比
飽和度: 磁碟處理I/0的繁忙程度
IOPS: inputloutput per second 每秒的I/0請求
吞吐量: 每秒的I/O請求大小
響應時間: 指I/O請求從發出到手到響應的時間間隔
磁碟寫效能分析
先清除快取 使用命令 echo 3 > /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches 釋放頁快取
echo 2 > /proc/sys/vm/drop_caches 釋放目錄項
echo 3 > /proc/sys/vm/drop_caches 釋放目錄項加頁快取和 節點
執行完該命令後 buffer會清空為0,cache會減少空間,free 會增大
清除後的磁碟資訊
再模擬寫操作: dd if=/dev/sda of=$PWD/outfile bs=25MB count=99
if :輸入檔案(input file), of 輸出檔案 (out file)
/dev/sda 讀取裝置的第一個磁碟會有IO產生
of=$PWD/outfile 輸出到當前目錄的下的outfile檔案
bs=25mb count=99塊檔案25mb ,執行99次
vmstat 1 指標得出:
cache
增大,
b
o(寫)變大,
in
(每秒中斷)也有明顯資料變化 ,
free
資料開始變小 ,
buff
資料不變
iostat -dx 1 指標得出:
wkB/s
(每秒寫k位元組數)有大量資料 await也有資料 w/s (每秒完成的寫I/0裝置次數)資料變大
寫檔案的速度大概是72MB/s
生成的檔案
磁碟讀效能分析
先清除快取 使用命令 echo 3 > /proc/sys/vm/drop_caches
再模擬讀操作:time dd if=/dev/sda of=/dev/null bs=25MB count=99
if :輸入檔案(input file), of 輸出檔案 (out file)
/dev/sda 表示一個偽裝置只產生字元流不會產生IO
of= dev/null 偽裝置,回收站可以無限放資料
bs=25mb count=99塊檔案25mb ,執行99次
/dev/null裝置
是個黑洞裝置,它丟棄一切寫入其中資料,空裝置通常被用於丟棄不需要的輸出流。記得當年用windows時候,有個類似的裝置:NUL ,跟這個功能一樣。任何寫入該裝置資料都會被丟棄掉。從這個裡面讀取資料返回是空。將一些不用內容經常傳送給這個裝置,丟棄不需要的資料。
vmstat 1 指標得出:
cache部分
減少,
b
i(讀)變大,
in
(每秒中斷)也有明顯資料變化 ,
free
資料開始變小 ,
buff
大幅增大
iostat -dx 1 指標得出:rKB/s
/s
(每秒讀k位元組數)有大量資料 await也有資料 w/s (每秒完成的寫I/0裝置次數)資料有但是比較小
讀取檔案的速度大概是228MB/s
記憶體讀寫效能分析
/dev/zero裝置 使用記憶體生成字元流
在類UNIX 作業系統中, /dev/zero 是一個特殊的檔案,當你讀它的時候,它會提供無限的空字元(NULL, ASCII NUL, 0x00)。其中的一個典型用法是用它提供的字元流來覆蓋資訊,另一個常見用法是產生一個特定大小的空白檔案。
先清空快取 echo 3 >/proc/sys/vm/drop_caches
再模擬操作:time dd if=/dev/zero of=/dev/null bs=25MB count=999 (產生資料丟到回收站 所以沒有磁碟的操作只會有記憶體的操作)
磁碟的讀寫速度,幾百MB/s 記憶體 幾GB/s
總結:寫操作時 ,cache增大,
b
o(寫)有明顯資料,
讀資料時,buff增大,
b
i(讀)有明顯資料