Не удается записать в /sys/kernel/, чтобы отключить прозрачные огромные страницы (THP) для MongoDB в OVH CentOS 7

Мой вопрос

У меня возникают проблемы при удалении предупреждений MongoDB о прозрачных огромных страницах (THP) в установке OVH CentOS 7, и проблема заключается в невозможности записи в /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, включая скрипт в документации MongoDB. Во всех решениях это ключевая часть:

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

Тем не менее, файлы не существуют, и я не могу ничего создать под /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, но я все еще не могу создать каталог как root.

Настроенный профиль также не помогает

Чтобы быть точным, я также создал настраиваемый профиль (согласно инструкциям в 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 (и повторение после каждого обновления), я готов это сделать.

1 ответ

Решение

Прямо сейчас я установил CentOS 7 на OVH. Они используют /boot/bzImage-3.14.32-xxxx-grs-ipv6-64 который реализует grsecurity ( https://grsecurity.net/), что исключает доступ к некоторым папкам.

Очень простое решение предупреждений MongoDB об огромных страницах можно решить, заменив ядро. Процедура для 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
Другие вопросы по тегам