我想在 CentOS 7 EC2 实例上禁用 transparent_hugepage (THP),默认情况下启用:
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Run Code Online (Sandbox Code Playgroud)
可以手动更改此设置:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
Run Code Online (Sandbox Code Playgroud)
...但重新启动后更改将丢失。
我试图将echo never [...]指令放入我的rc.local和cloud.cfg文件中,但没有奏效。
我也试图追加设置transparent_hugepage=never到内核行/etc/grub.conf(如解释有),但它并没有更好地工作。
那么...如何在 AWS EC2 实例上运行的 CentOS 7 上禁用 THP?
编辑:更改标题...我需要禁用 THP和THP 碎片整理
Docker 的文档中有一篇关于 Docker 安全性的好文章:https : //docs.docker.com/articles/security/
然而,我不太清楚容器中的 root 特权进程如何在主机系统中实际运行,以及我应该如何配置 SELinux 以处理进程“泄漏”到容器外的风险。
例如,我在容器中运行 nginx,当我在容器外执行“ps”时,我可以看到所有 nginx 进程。
根 7281 4078 0 01:36 ? 00:00:00 nginx:主进程 nginx www-data 7309 7281 0 01:36 ? 00:00:00 nginx:工作进程 www-data 7310 7281 0 01:36 ? 00:00:00 nginx:工作进程 www-data 7311 7281 0 01:36 ? 00:00:00 nginx:工作进程 www-data 7312 7281 0 01:36 ? 00:00:00 nginx:工作进程
这并不奇怪,因为这就是 Docker 的工作方式——它不是虚拟化,在虚拟机之外没有任何东西出现。使用 Docker,容器的进程在命名空间和有限权限内的主机操作系统上运行。它们直接与主机内核对话。
在这种情况下,我认为我应该配置 SELinux 来保护 nginx 进程而不是 docker 进程,就像它在没有 docker 的情况下运行一样。那是对的吗?
另外,是否有任何特定的 Docker 配置更适合运行像 nginx 这样的网络服务器?