我在完全更新的 Ubuntu 20.04 上使用 mdadm 设置了软件 RAID。我每月会经历约 31 小时的阵列重新同步。我怀疑这是由以下原因引起的/etc/default/mdadm
,其中包括:
# AUTOCHECK:
# should mdadm run periodic redundancy checks over your arrays? See
# /etc/cron.d/mdadm.
AUTOCHECK=true
我想更改这个安排的时间,但似乎没有/etc/cron.d/mdadm
:
# apt policy mdadm
mdadm:
Installed: 4.1-5ubuntu1.2
Candidate: 4.1-5ubuntu1.2
Version table:
*** 4.1-5ubuntu1.2 500
500 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
100 /var/lib/dpkg/status
4.1-5ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu focal/main amd64 Packages
# find /etc -name '*mdadm*' -or -name '*checkarray*'
/etc/default/mdadm
/etc/monit/conf-available/mdadm
/etc/logcheck/violations.d/mdadm
/etc/logcheck/ignore.d.server/mdadm
/etc/modprobe.d/mdadm.conf
/etc/mdadm
/etc/mdadm/mdadm.conf
# dpkg -S /etc/cron.d/mdadm
dpkg-query: no path found matching pattern /etc/cron.d/mdadm
# grep -REi 'mdadm|raid|/dev/md|autocheck|checkarray' /etc/*cron*
#
所以我猜 Debian/Ubuntu 文档已经过时了,这个检查触发器已经移动了(/usr/share/mdadm/checkarray
可能已经移动了,但我仍然不知道是什么触发了它)。第一个对话框指出dpkg-reconfigure mdadm
,这个检查在每月第一个星期日的 01:06 触发(见下面的屏幕截图),但我找不到该触发器的来源。
我能找到的最好的方法是 checkarray。我的搜索:
# dpkg -L mdadm |xargs -d '\n' grep -Fswn AUTOCHECK
/usr/share/mdadm/checkarray: -c|--cron honour AUTOCHECK setting in /etc/default/mdadm.
/usr/share/mdadm/checkarray:if [ $cron = 1 ] && ! is_true ${AUTOCHECK:-false}; then
我猜解决方案是设置AUTOCHECK=false
,找到checkarray
它要运行的命令,然后手动添加我自己的 cron 作业来复制它。为此,我希望确认这是最佳选择,并找到传递它的理想参数。
我还很好奇旧方法发生了什么以及在哪里可以找到更新的文档。
附加问题:由于重新同步需要很长时间,有没有办法将其分解,以便我可以在多个晚上逐步完成?
答案1
它由 systemd 处理。使用的重新同步脚本是/usr/share/mdadm/mdcheck
,触发器在/lib/systemd/system/mdcheck_start.timer
,操作定义在/lib/systemd/system/mdcheck_start.service
(或者可能是/etc/systemd/system/...
,如果您需要修改它们,则应将上述内容复制到此处)。
您可以在服务文件中为该过程指定一个时间限制,它应该在下次启动时从上次中断的地方继续运行(计时器文件中指定了超时时间)。或者您可以在需要时中断检查 - 请查看 mdcheck 脚本的末尾。