我已经构建了一台全新的 Ubuntu 20.04 机器,它使用 mdadm RAID5 配置(3x 10TB)。每次登录时系统都会抛出错误。我可以从 systemctl 看到 mdcheck_start 服务失败。
通过检查服务状态我还可以看到守护进程正在尝试启动不存在的脚本。此脚本未随 Ubuntu 或任何 mdadm 软件包一起安装。
systemctl status mdcheck_start.service
● mdcheck_start.service - MD array scrubbing
Loaded: loaded (/lib/systemd/system/mdcheck_start.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2020-05-03 09:18:05 EDT; 5min ago
TriggeredBy: ● mdcheck_start.timer
Process: 196602 ExecStart=/usr/share/mdadm/mdcheck --duration $MDADM_CHECK_DURATION (code=exited, status=203/EXEC)
Main PID: 196602 (code=exited, status=203/EXEC)
May 03 09:18:05 BAILEYFS02 systemd[1]: Starting MD array scrubbing...
May 03 09:18:05 BAILEYFS02 systemd[196602]: mdcheck_start.service: Failed to execute command: No such file or directory
May 03 09:18:05 BAILEYFS02 systemd[196602]: mdcheck_start.service: Failed at step EXEC spawning /usr/share/mdadm/mdcheck: No such file or directory
May 03 09:18:05 BAILEYFS02 systemd[1]: mdcheck_start.service: Main process exited, code=exited, status=203/EXEC
May 03 09:18:05 BAILEYFS02 systemd[1]: mdcheck_start.service: Failed with result 'exit-code'.
May 03 09:18:05 BAILEYFS02 systemd[1]: Failed to start MD array scrubbing.
这是一个合法的错误吗?
我可以安全地禁用此服务,这样我每次登录时就不再收到这些恼人的错误吗? mdadm 不应该定期清理我的阵列以确保其正常工作吗?
答案1
这似乎是 Ubuntu 20.04mdadm
软件包中的一个错误。该mdcheck
脚本完全丢失,因此计时器/服务无法执行它。
当您安装时mdadm
,它还会激活 mdcheck_start 计时器和服务。
# apt-get install mdadm
[...]
Setting up mdadm (4.1-5ubuntu1) ...
Generating mdadm.conf... done.
update-initramfs: deferring update (trigger activated)
Created symlink /etc/systemd/system/mdmonitor.service.wants/mdcheck_start.timer → /lib/systemd/system/mdcheck_start.timer.
Created symlink /etc/systemd/system/mdmonitor.service.wants/mdmonitor-oneshot.timer → /lib/systemd/system/mdmonitor-oneshot.timer.
mdcheck_continue.timer is a disabled or a static unit, not starting it.
[...]
然后该mdcheck_start
服务应该运行 mdcheck 脚本:
[Service]
Type=oneshot
Environment=MDADM_CHECK_DURATION='"6 hours"'
ExecStart=/usr/share/mdadm/mdcheck --duration $MDADM_CHECK_DURATION
然而……/usr/share/mdadm/mdcheck
实际上根本不存在,所以它不起作用。
# ls -l /usr/share/mdadm/
total 12
-rwxr-xr-x 1 root root 6475 Jan 23 19:41 checkarray
-rwxr-xr-x 1 root root 2637 Jan 23 19:41 mkconf
在packages.ubuntu.com 中搜索该文件也一无所获。
因此,要么 Ubuntu 忘记包含 mdcheck 脚本,要么他们打算删除它但忘记删除对它的 systemd 计时器/服务引用。
如果有兴趣,我想你可以在这里获取文件:https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/tree/misc/mdcheck
我发现了 2020 年 1 月的错误报告https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1858342然而这个错误似乎还没有分配给任何人。
mdadm 不应该定期清理我的阵列以确保其正常工作吗?
如果 Ubuntu 20.04 中有任何东西可以做到这一点,那么我找不到它。
安装了一个 checkarray 脚本,但没有计时器或 cron 作业来实际调用它。
所以我认为它现在不会运行任何自动检查。
答案2
太长了;博士 apt install mdadm
该错误已修复4.1-5ubuntu1.1
:
mdadm (4.1-5ubuntu1.1) 焦点;紧急程度=中
- d/规则:安装杂项/mdcheck(LP:#1852747)
- 缺少 mdcheck 实用程序会阻止 mdcheck_continue.service 和 mdcheck_start.service 在服务通过 ExecStart 启动时执行命令。 (关闭:#960132)
mdadm (4.1-6) 不稳定;紧急程度=中
- 安装杂项/mdcheck;谢谢理查德·拉格。 (关闭:#960132)