我想从 CentOS 6.9 迁移到 CentOS 7.5。在安装过程中,我看到了一个kdump
可以启用或禁用的选项。我想知道什么是kdump
禁用它对服务器有什么不好的影响吗?我想稍后在我的服务器上安装数据库,我只是想确保这kdump
不会造成问题。
答案1
kdump
是一种内核崩溃转储机制。如果系统崩溃,kdump
会生成内核崩溃转储,可用于进一步分析。根据故障的严重程度,此故障转储可能是唯一可用于进一步分析的信息。
如果系统崩溃,则kdump
通过使用kexec
系统调用将第二个内核加载到内存中来工作。第二个内核捕获第一个内核内存的内容。此信息保存为故障转储。
为了允许第二个内核加载到内存中,必须为其永久保留一部分系统内存。第一个内核无法访问该内存区域。保留的内存量取决于系统架构和系统上安装的内存总量。例如,具有该x86_64
架构和 2 GiB 安装内存的系统将需要至少 163968 KiB (160.25 MiB) 为kdump
.
kdump
对于(大多数)新安装,RHEL 7(以及 CentOS 7,扩展)默认安装并激活了该机制。 Anaconda 安装程序提供了有限的配置选项kdump
。默认情况下可能未启用其他安装选项(例如 Kickstart)kdump
。
有关(安装、配置、使用)的更多详细信息kdump
,请参阅有关内核管理的 RHEL 7 文档:内核故障转储指南
答案2
kdump
在内核崩溃时转储内核内存。所以
如果您的内核从未崩溃,则可以安全地禁用 kdump
如果您不关心内核崩溃,则禁用 kdump 是安全的
如果您没有支持合同,并且不具备自行调试内核崩溃所需的知识,并且不愿意一次性付费给某人来诊断内核崩溃,那么禁用 kdump 是安全的。
否则保持启用状态。
对于大多数人来说(1)是正确的。对于其余的,(2)或(3)可能是正确的。如果您使用嵌入式 Linux 制作高价值设备,那么 kdump 可能会非常有价值。
答案3
kdump 专门用于调试内核崩溃。启用它有一个主要缺点,即占用大量内存。例如,在具有 2GB RAM 的系统上,它将使用不到 8% 的 RAM。由于 RAM 通常是服务器性能的限制因素,因此对于大多数用户来说,它会触及“最薄弱的环节”,因此这可能会造成重大损失。除了 RAM 受到影响之外,没有任何缺点。
我想问你的问题是:你是否需要调试内核崩溃?
CentOS 及其较新的克隆版本(如 Rocky Linux 和 AlmaLinux)以及其商业版 Red Hat Enterprise Linux 通常被选择用于生产环境中的稳定性。在我运行生产服务器 19 多年的时间里,我从未在 CentOS 或任何生产服务器上经历过内核崩溃,即使是运行“不太稳定”发行版的生产服务器。
我只在使用实验性驱动程序或设置为桌面系统编译自己的内核时,以及使用像 Gentoo 或 LFS 这样的“前沿”Linux 系统时,才经历过内核崩溃。在这些情况下,我知道我会遇到什么情况,并确保启用了 kdump。即使在那里,事故也很少发生。我为生产服务器编译了许多自定义内核,但没有一个崩溃过。
绝大多数运行生产服务器的人都希望禁用 kdump。如果您使用 CentOS 或任何相对稳定的发行版并且不编译您自己的内核,请禁用它。一些编译自己内核的人,如果他们对自己使用的设置有信心,甚至可能想禁用它。