歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux磁盤IO監測簡介

DB運行產生太多的磁盤IO的話,性能肯定會受到影響。可以借助zabbix這樣的工具進行磁 盤IO的監測,或 者自己動手都可以。

我們可以從proc/diskstats中直接獲取信息:

 7 3 

loop3 0 0 0 0 0 

0 0 0 0 0 0
 7 4 loop4 0 0 0 0 0 0 0 0 0 0 0
 7 5 loop5 0 0 0 0 0 0 0 0 0 0 0
 7 6 loop6 0 0 0 0 0 0 0 0 0 0 0
 7 7 loop7 0 0 0 0 0 0 0 0 0 0 0
.....
 8       0 sda 16140 67741 1740112 1453724 16858 18744 1043336 390704 0 173612 

1844580
 8       1 sda1 176 138 1468 1160 0 0 0 0 0 1160 1160
 8       2 sda2 164 486 1300 1556 0 0 0 0 0 1556 1556
 

sda為整個硬盤的統計信息

sda1為第一個分區的統計信息

sda2為第 二個分區的統計 信息。

信息依次為:

1、major 主設備號

2、minor 磁盤次設備號

3、name  磁盤的設備名

4、rio  讀請求總數

5、rmerge  合並的讀請 求總數

6 、rset 讀扇區總數

7、讀數據花費的時間,單位ms

8、wio寫請求總數

9、wmerge 合並 的寫請求總數

10、wset 寫扇區總數

11、寫數據花費的時間

12、現在 正在進行的IO數 等於IO隊列中請求數

13、系統真正花費在IO上的時間,減去重復等待時間

14 、系統花費在IO 上花費的時間。

要計算某塊磁盤的IOPS的話,只需要將第4列和第8列的值相加。

監控代碼 :

     #!/bin/bash
     uprio=0
     upwio=0
     while true
      do
        rio=$(grep '\bsda\b' /proc/diskstats | awk '{print $4}')
        wio=$(grep '\bsda\b' /proc/diskstats | awk '{print $8}')
        Real_rio=$[ $rio - $uprio ]
        Real_wio=$[ $wio - $upwio ]
        Iops=$[$Real_rio + $Real_wio]
        echo "Iops:$Iops   Read : $Real_rio   Write: $Real_wio"
        uprio=$rio
        upwio=$wio
        sleep 1
      done

監控輸出:

Iops:35373   Read : 16792   Write: 18581
Iops:9   Read : 0   Write: 9
Iops:0   Read : 0   Write: 0
Iops:0   Read : 0   Write: 0
Iops:0   Read : 0   Write: 0
Iops:5   Read : 0   Write: 5
Iops:43   Read : 0   Write: 43
       

對於DB服務器 可以考慮將日志文件和數據文件放到不同的磁盤,這樣就可以分別 監控 日志和 數 據的IOPS。這個可以參考:http://keeland.org/?p=45

對於DB所使用的磁盤,我們還 應該監測其IO利 用率,可以通過IOSTAT 進行。

返回欄目頁:http://www.bianceng.cn/OS/Linux/

Copyright © Linux教程網 All Rights Reserved