gpt4 book ai didi

linux - 无法写入/sys/kernel/以在 OVH CentOS 7 上禁用 MongoDB 的透明大页面 (THP)

转载 作者:可可西里 更新时间:2023-11-01 10:23:42 25 4
gpt4 key购买 nike

我的问题

我在安装 OVH CentOS 7 时无法删除有关透明大页面 (THP) 的 MongoDB 警告,问题似乎是无法以 root 身份写入 /sys/kernel/mm .

首先,我意识到 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 填充它们,包括 script in the MongoDB documentation .在所有的解决方案中,这是关键部分:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

但是,文件不存在,我无法以 root 身份在 /sys/kernel/mm 下创建任何内容。

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,还是不能创建根目录。

调整后的配置文件也无济于事

为了彻底,我还创建了自定义 Tuned 配置文件(按照上面 MongoDB 链接中的说明)并激活它,但它会生成错误 WARNING tuned.plugins.plugin_vm: Option 'transparent_hugepages' is not supported on当前硬件。

调谐配置文件(/etc/tuned/no-thp/tuned.conf):

[main]
include=virtual-guest

[vm]
transparent_hugepages=never

Tuned 日志中的错误:

WARNING  tuned.plugins.plugin_vm: Option 'transparent_hugepages' is not supported on current hardware.

MongoDB 本身的一些解决方案?

似乎最好的解决方案是以某种方式显式配置 MongoDB 不使用 THP,这样它就不必检查丢失的文件,但我从未见过这样的情况。如果有办法,即使它涉及自定义 MongoDB(并在每次更新后重复),我也愿意这样做。

最佳答案

现在我已经在 OVH 上安装了 CentOS 7。他们使用 /boot/bzImage-3.14.32-xxxx-grs-ipv6-64 实现了 grsecurity ( https://grsecurity.net ),它阻止了对某些文件夹的访问。

解决MongoDB关于huge pages的警告的方法很简单,可以通过更换内核来解决。 CentOS7的流程如下:

  1. 从 OVH ftp 下载所需的内核:ftp://ftp.ovh.net/made-in-ovh/bzImage2进入 /boot 文件夹。
  2. 编辑/etc/grub2.cfg:

    # linux/boot/bzImage-3.14.32-xxxx-grs-ipv6-64 root=/dev/md1 ro net.ifnames=0

    linux/boot/bzImage-4.8.17-xxxx-std-ipv6-64 root=/dev/md1 ro net.ifnames=0

这里我将 bzImage-3.14.32-xxxx-grs-ipv6-64 默认替换为 bzImage-4.8.17-xxxx-std-ipv6-64 没有 grs

现在,重新启动并检查新内核是否正常:

root@ns506846 ~]# uname -r
4.8.17-xxxx-std-ipv6-64

关于linux - 无法写入/sys/kernel/以在 OVH CentOS 7 上禁用 MongoDB 的透明大页面 (THP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com