背景:
我有一个包提供了与 LXD 不兼容的 systemd 单元文件。具体来说,它使用以下两个选项,这两个选项在容器内似乎失败:
[Service]
IOSchedulingClass=realtime
CPUSchedulingPolicy=rr
所以,我尝试使用 drop-in 覆盖这些systemctl edit
与以下内容一起使用:
[Service]
IOSchedulingClass=
CPUSchedulingPolicy=
但后来我收到以下消息journalctl -xe
:
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:2] Failed to parse IO scheduling class, ignoring:
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:4] Failed to parse CPU scheduling policy, ignoring:
问题:
似乎不允许取消这样的选项。我还尝试使用一对空引号(例如IOSchedulingClass=""
)。执行此操作的正确方法是什么?我知道我可以覆盖整个单元文件,但如果可能的话,我不想屏蔽打包单元文件中的任何后续更新。
作为参考,systemd.exec(5)
联机帮助页建议应该有某种方法可以做到这一点:
如果将此选项指定为空字符串,则之前对 IOSchedulingClass= 和 IOSchedulingPriority= 的所有指定均无效。
答案1
这听起来像是一个错误,但我会尝试
[Service]
IOSchedulingClass=best-effort
CPUSchedulingPolicy=other
解决它。这些是默认值,取自ioprio_set
和sched_setscheduler
联机帮助页。
当然,您也可以通过将同名的文件放入/etc/systemd/system/
.明智的做法是避免这样做,因为它肯定需要更多的维护工作(尽管您可以将其编写为容器构建的一部分)。