如何中断软件团队重新同步?


50

我想中断对debian squeeze软件raid的运行中的重新同步操作。(这是常规的预定比较比较同步。在这种情况下,raid阵列仍然干净。在磁盘发生故障并更换磁盘后,请勿将其与重建混淆。)

如何在运行时停止此计划的重新同步操作?另一个RAID阵列是“重新同步未决”,因为它们都在同一天(星期日晚上)接连检查。我希望此星期日晚上重新同步完全停止。

[编辑:sudo kill -9 1010不会停止,1010是md2_resync进程的PID]

我还想知道如何控制重新同步之间的间隔以及到下一次的保持时间。

[Edit2:我现在所做的是使重新同步非常缓慢,因此不再受到干扰:

sudo sysctl -w dev.raid.speed_limit_max=1000

取自http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html

在夜间,我将其设置回较高的值,因此重新同步可以终止。

对于大多数情况,此解决方法都很好,不过,知道我所问的内容是否可能会很有趣。例如,在重新同步或重新同步“待处理”时似乎无法增长数组]


我认为我没有办法取消重新同步。我担心它可能永远不会再开始。
汤姆·奥康纳

1
@Tom:这只是正常的重新同步,它检查每个星期日是否都匹配。如果停止(例如通过关闭计算机),它将在下次启动时继续。
2011年

哦好的。那没关系
Tom O'Connor

Answers:


48

如果阵列是md0那么echo "idle" > /sys/block/md0/md/sync_action

'idle'将停止活动的重新同步/恢复等。虽然可能需要某些事件来触发此操作,但不能保证不会再次自动启动另一个重新同步/恢复。

http://www.mjmwired.net/kernel/Documentation/md.txt#477


更改权限后,我可以更新文本文件,但是在同一实例中,文件的内容从后面更改回了“重新同步”。重新同步在另一个阵列(以前是“待处理”)处继续进行。当我在另一个数组的文件中写入“ idle”时,它将再次交换,但永不停止。
亚当5

2
如果您有多个团队袭击:sudo tee / sys / block / md * / md / sync_action
Ole Tange

实际上,“空闲”只会暂停检查。下一个“检查”将在/sys/block/md0/md/sync_min’. To reset this write 0`处继续 到该文件。
rudimeier

33

我想减慢或暂停重新同步过程,以保存一些I / O以便将某些内容备份到另一台计算机上。这个线程帮助了我,但是我找到了另一个解决方案。

在我的Debian Lenny上:

  • echo "idle" > /sys/block/md0/md/sync_action 可以,但是重新同步过程会立即重新启动。

  • checkarray -x --all :有效,但结果相同:重新同步过程立即重启。

所以我用这种方法: echo 0 > /proc/sys/dev/raid/speed_limit_max


1
有趣的方法。我发现您还需要降低speed_limit_min中的值。
Diomidis Spinellis 2013年

1
我还需要设置speed_limit_min为0才能完全暂停重新同步。
njahnke 2014年

12

您可以使用以下命令序列(以root用户身份)取消正在进行的阵列重新同步:

echo frozen > /sys/block/md0/md/sync_action
echo none > /sys/block/md0/md/resync_start
echo idle > /sys/block/md0/md/sync_action

请注意,这可能会使您的数组处于不一致状态。除非您确定阵列状态良好,否则请勿执行此操作,然后稍后重新运行同步。

(信用额度应归功于此:在此线索中发现了该咒语。


8

如上所述,在Debian / Ubuntu系统上,/etc/cron.d/mdadm脚本调用/usr/share/mdadm/checkarray脚本以启动重新同步检查。

该脚本具有一个选项,可以取消所有正在运行的同步检查:

/usr/share/mdadm/checkarray -x --all

3

不确定如何取消重新同步,但是时间表由/etc/cron.d/mdadmDebian / Ubuntu系统控制。

该脚本/usr/share/mdadm/checkarray可能使您对问题的另一部分有所了解,因为这就是cron所说的。


3

如果您的md设备是md0,并且您想停止重新同步写入:

echo "idle" > /sys/block/md0/md/sync_action

3

为此可能的解决方案,花了一些时间来详细介绍。

我的系统:CentOS 6.5 mdadm v3.3.2

每周不断检查,想暂停其中的一个,RAID干净,通过每周运行的/etc/cron.d/raid-check脚本调用检查。

要取消检查,请使用--misc --action函数。假设RAID设备为/ dev / md0,这只是每周一次的一致性检查,而不是设备故障,您将以root身份登录:

mdadm --misc --action = idle / dev / md0

同样,开始一致性检查

mdadm --misc --action = check / dev / md0


2
echo "idle" > /sys/block/md0/md/sync_action

当/ sys / block / md * / md / sync_action为“ resync”时不起作用(与状态为“ check”或“ repair”不同的是。您可以将“ idle”回显到sync_action文件中,但是不会影响此内核文档文件在此处错误地指出它可以工作,但对我而言从来没有起作用:

'idle'将停止活动的重新同步/恢复等。虽然可能需要某些事件来触发此操作,但不能保证不会再次自动启动另一个重新同步/恢复。


1
但是,您可以在此状态下使用/ sys / block / md * / md / sync_speed_max影响“重新同步”的速率。我不确定为什么文件编录不正确,也许没人知道
brian

请花一分钟的时间来学习堆栈交易所降价语法(meta.serverfault.com/editing-help
斯文

0

我知道这是4岁的帖子,但是您也可以这样做(假设md0作为数组,sdb4作为重新同步的“磁盘”):

    mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4

该命令伪装sdb4为故障磁盘,因此将其从阵列中踢出,从而停止重新同步。如果在重新同步停止操作期间没有错误,那么此命令还将从md0阵列中删除sdb4。如果有任何错误,则磁盘将保持故障状态,但仍保留在阵列中。

如果您在中的任何地方使磁盘发生故障mdadm,则将其逻辑设置为失败。如果阵列是干净的(未降级),则磁盘保持一致,可以通过--add << disk >> --assume-clean选项重新添加磁盘,而无需担心。如果拆离后有任何操作(例如,重新同步,重新构建甚至是写操作),则--assume-clean将会失败,并立即开始重新同步操作。

更改raid.speed_limit_minraid.speed_limit_max在某种程度上是一个坏主意,因为它不仅影响重新同步/重建速度,也能正常运行速度,而且很可能你会失去很多的性能,通过使用RAID阵列获得。


5
我认为从RAID中删除运行状况良好的磁盘是一个坏主意。在大多数情况下,它可能不会引起任何问题,但是每次执行操作时,都有造成数据丢失或数据损坏的风险。
卡巴斯德(Kasperd),2015年

1
永远不要这样做。如果您--assume-clean在实时系统上添加了磁盘,而剩余磁盘上发生了任何写入操作,则您会遇到麻烦。
Sanmai's
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.