Не удается записать в /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 выглядит следующим образом:
- Загрузите необходимое ядро с OVH ftp: ftp://ftp.ovh.net/made-in-ovh/bzImage2 в
/boot
папка. редактировать
/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