我的问题
我无法在 OVH CentOS 7 安装上删除有关透明大页面 (THP) 的 MongoDB 警告,问题似乎是无法以/sys/kernel/mm
root 身份写入。
首先,我意识到 OVH 内核是定制的,我知道你们中的许多人会说要使用新的非定制内核,但现在这不是一个选择。我需要为当前的操作系统解决这个问题。
MongoDB 警告:
2016-03-09T00:31:45.889-0500 W CONTROL [initandlisten] Failed to probe "/sys/kernel/mm/transparent_hugepage": Permission denied
2016-03-09T00:31:45.889-0500 W CONTROL [initandlisten] Failed to probe "/sys/kernel/mm/transparent_hugepage": Permission denied
MongoDB 正在尝试读取 transparent_hugepage 文件(如下),但它们不存在:
/sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag
无法创建文件
我见过的所有解决方案都涉及创建文件和填充它们never
,包括MongoDB 文档中的脚本。在所有解决方案中,这是关键部分:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
但是,这些文件不存在,我无法/sys/kernel/mm
以 root 身份创建任何内容。
root@myhost [~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
-bash: /sys/kernel/mm/transparent_hugepage/enabled: No such file or directory
root@myhost [~]# mkdir -p /sys/kernel/mm/transparent_hugepage
mkdir: cannot create directory ‘/sys/kernel/mm/transparent_hugepage’: Operation not permitted
目录的所有者和组/sys/kernel/mm
是root
,我暂时将权限从 700 更改为 777,但我仍然无法以 root 身份创建目录。
调整的配置文件也无济于事
为了彻底,我还创建了自定义 Tuned 配置文件(根据上面 MongoDB 链接中的说明)并激活它,但它会产生错误WARNING tuned.plugins.plugin_vm: Option 'transparent_hugepages' is not supported on current hardware.
调整配置文件(/etc/tuned/no-thp/tuned.conf):
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
调整日志中的错误:
WARNING tuned.plugins.plugin_vm: Option 'transparent_hugepages' is not supported on current hardware.
MongoDB本身的一些解决方案?
似乎最好的解决方案是以某种方式显式配置 MongoDB 不使用 THP,这样它就不必检查丢失的文件,但我没有看到这样的情况。如果有办法,即使它涉及自定义 MongoDB(并在每次更新后重复),我也愿意这样做。