出于好奇,我们有一个运行软件RAID的RHEL服务器。 有一个cronjob每隔一段时间就开始一次raid数据检查,以检查数组的一致性。 据我了解,数据检查会利用空闲的IO带宽,以免干扰服务器的正常运行。
从下面的iostat输出可以看出,服务器实际上是空闲的。 为什么raid数据仅使用6M / sec的IO带宽进行检查? 在最初的RAID构build过程中,我看到这些机器达到了320M /秒+。 为什么在内核日志条目中数据检查没有使用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。 你可以在设置中调整这个设置,如果你不喜欢这个设置,并且希望设置它来使用更多的资源(在更多的时候会干扰正常的工作)。