Я пытаюсь следовать инструкциям документации MongoDB , чтобы правильно настроить LTH для машины, на которой работает MongoDB.
Одна из инструкций состоит в создании сценария, который запускается при загрузке.К сожалению, ни предложенный скрипт, ни аналогичный код , переписанный как служба systemd , не работают.
При отладке проблемы я обнаружил еще одну. Когда я выполняю:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
, команда выглядит успешно, но файл остается неизменным, поэтому, если я затем запустил:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
, он вернет исходное содержимое:
always madvise [never]
Я попытался изменить файл с помощью vim
; при попытке сохранить файл жалуется, что Fsync не удалось . Хотя эта ошибка была задокументирована , в моем случае достаточно места на диске на /
(используется 20%, доступно 7 ГБ).
Я запускаю команду в ] sudo
режим, и права доступа к файлам кажутся правильными:
-rw-r--r-- 1 root root 4096 ...
Каталог / sys
также не смонтирован в режиме только для чтения , как показано:
root@demo:/# grep sysfs /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Что здесь происходит?
sysfs
, файловая система, обычно монтируемая в / sys
, представляет собой специальную виртуальную файловую систему для взаимодействия с ядром Linux.
Файлы в нем не являются настоящими файлами, они представляют собой структуры данных в ядре и поддерживают только довольно простые методы доступа. При чтении такого файла ядро запрашивает информацию. Запись в такой файл указывает ядру изменить настройку или выполнить действие.
Вот почему vim
не работает. Он пытается получить доступ к виртуальным файлам способами, оптимизированными для реальных файлов, и это не поддерживается в sysfs
.
Ваша первая команда
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
уже была успешной!
Многие «файлы» sysfs, включая / sys / kernel / mm / transparent_hugepage / enabled
, не только печатают текущие настройки при чтении, но и выводят все возможные режимы и используют скобки для описания того, какой из вместо этого активен несколько режимов.
В вашем случае никогда
не заключен в скобки, поэтому режим, который вы пытались активировать с помощью echo
, уже активен:
always madvise [never]
Если вас интересует, как sysfs
работает, вы можете узнать больше об этом в Википедии или в документации ядра Linux .