我想中断在debian挤压软件突袭运行resync操作。 (这是常规的比较重新同步,在这种情况下raid数组仍旧是干净的,不要把这个和一个磁盘失败并重build后的重build相混淆。
如何在运行时停止计划的重新同步操作? 另一个raidarrays是“resync pending”,因为他们都在同一天(星期日晚上)被一个接一个的检查。 我想要一个完整的停止这个星期天晚上的同步。
[编辑: sudo kill -9 1010
不会停止它,1010是md2_resync进程的PID]
我也想知道如何控制resyncs和剩余时间之间的时间间隔,直到下一个时间。
[编辑2:我现在所做的是使resync变得非常慢,所以它不再打扰:
sudo sysctl -w dev.raid.speed_limit_max=1000
取自http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html
在晚上,我会把它设置回一个高的值,所以重新同步可以终止。
这种解决方法对于大多数情况都是好的,但是知道我问的是否可能是有趣的。 例如,它似乎没有可能增长一个数组,而它正在resyncing或resyncing“挂起”]
如果你的数组是md0
那么echo "idle" > /sys/block/md0/md/sync_action
“空闲”将停止活动的重新同步/恢复等。不能保证另一个重新同步/恢复可能不会再次自动启动,尽pipe某些事件将需要触发这个。
我想减慢或暂停重新同步过程,以保存一些I / O备份在另一台计算机上的东西。 这个线程帮助我,但我find了另一个解决scheme
在我的Debian Lenny上:
echo "idle" > /sys/block/md0/md/sync_action
可以正常工作,但重新同步过程会立即重新启动。
checkarray -x --all
:工作,但结果相同:重新同步过程立即重新启动。
所以我使用这个方法: echo 0 > /proc/sys/dev/raid/speed_limit_max
如上所述,在Debian / Ubuntu系统上, /usr/share/mdadm/checkarray
脚本调用/usr/share/mdadm/checkarray
脚本来启动重新同步检查。
该脚本可以select取消所有正在运行的同步检查:
/usr/share/mdadm/checkarray -x --all
不知道如何取消重新同步,但日程安排由Debian / Ubuntu系统上的/etc/cron.d/mdadm
控制。
脚本/usr/share/mdadm/checkarray
可能会对你的问题的其他部分有所了解,因为这是cron所调用的。
如果您的md设备是md0,并且您想停止重新同步写入:
echo "idle" > /sys/block/md0/md/sync_action
echo "idle" > /sys/block/md0/md/sync_action
当/ sys / block / md * / md / sync_action是“resync”时不起作用(不像状态是“check”或者“repair”),你可以在sync_action文件中回显“idle”,但是不影响这个内核的文档文件在这里错误地指出它可以工作,但是它从来没有为我工作:
“空闲”将停止活动的重新同步/恢复等。不能保证另一个重新同步/恢复可能不会再次自动启动,尽pipe某些事件将需要触发这个。
为此可能的解决scheme,花了一点儿,以了解细节。
我的系统:CentOS 6.5 mdadm v3.3.2
每周不断地检查,想暂停其中一个,RAID是干净的,通过每周运行的/etc/cron.d/raid-check脚本检查。
要取消检查,请使用–misc –actionfunction。 假设RAID设备是/ dev / md0,这只是每周一致性检查而不是设备故障,您可以以root身份:
mdadm –misc –action = idle / dev / md0
同样,开始一致性检查
mdadm –misc –action = check / dev / md0
您可以使用以下命令序列(以root身份)取消正在进行的arrays重新同步:
echo frozen > /sys/block/md0/md/sync_action echo none > /sys/block/md0/md/resync_start echo idle > /sys/block/md0/md/sync_action
请注意, 这可能会使arrays处于不一致的状态 。 除非确定arrays状态良好,否则不要这样做,并在稍后重新运行同步。
(信贷的应得: 在这个线程中find这个咒语)
我知道这是一个4岁的职位,但你也可以这样做(假设md0作为数组,sdb4作为resyncing“disk”):
mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4
这个命令假装sdb4是一个失败的磁盘,因此从arrays中踢出来,停止重新同步。 如果在重新同步停止操作期间没有错误,那么这个命令也会从md0数组中删除sdb4。 如果有任何错误,则磁盘保持失败状态,但仍保留在arrays中。
如果您在mdadm
任何位置发生故障,则将其设置为逻辑失败。 如果数组是干净的 (不降级),那么磁盘保持一致,可以用–add << disk >> –assume-clean选项重新添加。 如果在分离之后有任何操作 (例如重新同步,重build或写入),则–assume-clean将会失败并立即启动重新同步操作。
更改raid.speed_limit_min
和raid.speed_limit_max
是一个不好的主意,因为它不仅影响重新同步/重build速度,还影响正常的运行速度,并且很可能会失去使用RAIDarrays所获得的很多性能。