Redhat

為什麼 raid-check 使用這麼少的 io 頻寬?

  • October 6, 2013

出於好奇,我們有一個執行軟體 RAID 的 RHEL 伺服器。有一個 cronjob 每隔一段時間就會啟動一次 raid 數據檢查以檢查陣列的一致性。據我了解,數據檢查將利用空閒的IO頻寬,以免干擾伺服器的正常執行。

從下面的 iostat 輸出可以看出,伺服器實際上是空閒的。為什麼raid數據檢查只使用6M/sec的IO頻寬?在最初的 RAID 建構過程中,我看到這些機器達到了 320M/sec+。為什麼數據檢查沒有使用 200MB/秒,如核心日誌條目中的最大頻寬所示?

以下是上次啟動 RAID 數據檢查時的日誌輸出:

Apr 28 01:00:01 xxxx kernel: md: data-check of RAID array md1
Apr 28 01:00:01 xxxx kernel: md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
Apr 28 01:00:01 xxxx kernel: md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check.
Apr 28 01:00:01 xxxx kernel: md: using 128k window, over a total of 3824596992k.
Apr 28 01:00:07 xxxx kernel: md: delaying data-check of md0 until md1 has finished (they share one or more physical units)

以下是與 md1 相關的 /proc/mdstat 的一些輸出:

md1 : active raid10 sdb2[1] sda2[0] sdd2[3] sdg2[6] sdh2[7] sde2[4] sdc2[2] sdf2[5]
     3824596992 blocks super 1.1 512K chunks 2 near-copies [8/8] [UUUUUUUU]
     [==========>..........]  check = 53.4% (2045997824/3824596992) finish=5255.6min speed=5639K/sec
     bitmap: 10/29 pages [40KB], 65536KB chunk

iostat -m 的輸出:

[root@xxxx ~]# iostat -m
Linux 2.6.32-358.2.1.el6.x86_64 (xxxx)  05/01/2013  _x86_64_    (32 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          2.92    0.07    0.83    1.26    0.00   94.92

Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sde              35.25         1.26         0.38    1520624     456526
sdf              33.15         1.21         0.38    1461256     456526
sdb              35.49         1.24         0.38    1485991     460191
sda              36.80         1.28         0.38    1542868     460191
sdc              31.64         1.26         0.36    1519241     429095
sdd              30.00         1.21         0.36    1460629     429095
sdh              30.51         1.21         0.35    1460819     424707
sdg              31.90         1.26         0.35    1519924     424707
md0               2.72         0.01         0.01       8465      12014
md1             177.21         0.38         1.34     453189    1607605

這已經回答了很多次……它可以設置為:

echo 50000 > /proc/sys/dev/raid/speed_limit_min

echo 50000 > /proc/sys/dev/raid/speed_limit_max

查看 /etc/sysconfig/raid-check。這使您可以為此檢查設置 ionice 和 nice 參數。預設值為低,它降低了 5 並設置了 ionice。如果您不喜歡該設置並希望將其設置為使用更多資源,則可以在設置中進行調整(以使其乾擾正常工作為代價)。

引用自:https://serverfault.com/questions/506004