CentOS 上 Cobbler 故障排查与修复指南
一 快速定位流程
- 检查核心服务状态:确认 cobblerd、tftp、dhcp、httpd 已启动并开机自启;若未运行,执行 systemctl start/enable 启动并设置自启。
- 执行配置校验:运行 cobbler check,按输出逐项修复(如 server/next_server、引导文件、DHCP/TFTP 等)。
- 查看关键日志:用 journalctl -n 100 查看近期系统日志;同时关注 /var/log/cobbler/cobblerd.log 与 /var/log/httpd/ssl_error_log(Web 错误)。
- 同步配置:每次修改后执行 cobbler sync,使 DHCP、PXE 与数据目录一致。
- 网络连通性:确保客户端与服务器在同一二层网络,DHCP/TFTP 可达,必要时抓包或查看交换机日志。
二 常见故障与修复对照表
| 症状 |
可能原因 |
修复要点 |
| PXE 停在 DHCP/找不到引导文件 |
next_server 错误、TFTP 未起、引导文件缺失 |
将 /etc/cobbler/settings 中 next_server 设为服务器 IP;启动 tftp 并设为自启;执行 cobbler get-loaders 补齐 /var/lib/cobbler/loaders(如 pxelinux.0、menu.c32、grub.efi) |
| cobbler check 报错 server/next_server |
配置为 127.0.0.1 或不可解析 |
将 server 与 next_server 改为可访问的 IP/主机名 |
| cobbler sync 失败 |
DHCP 模板错误、依赖缺失、服务未起 |
检查 /etc/cobbler/dhcp.template 的网关/网段;安装缺失依赖(如 pyyaml);确认 cobblerd/dhcp 运行后再 sync |
| 导入镜像或执行命令报 Python 模块缺失 |
例如 ImportError: No module named yaml |
安装 pyyaml(如 yum install pyyaml 或 pip install pyyaml) |
| Web 界面 500/无法登录 |
httpd 未运行、WSGI 模块未加载、Django 版本不兼容 |
启动 httpd;在 /etc/httpd/conf.d/wsgi.conf 中确保加载 mod_wsgi;必要时重装/调整 Django 版本并重启 httpd |
| 修改服务器 IP 后异常 |
server/next_server 未同步更新 |
更新 /etc/cobbler/settings 中的 server/next_server 为当前 IP,执行 cobbler sync 并重启相关服务 |
| 客户端拿不到 IP 或安装介质 |
DHCP 未起/配置错误、防火墙/SELinux 拦截 |
启动 dhcpd 并校验 dhcp.template;临时关闭 firewalld/SELinux 验证,再按需放行端口/调整策略 |
| 磁盘空间不足导致失败 |
/var 分区满(镜像、日志) |
清理旧镜像与日志,确保 /var 有足够空间(建议预留 10GB+) |
三 关键配置与服务检查要点
- 核心配置:在 /etc/cobbler/settings 中确保 server 与 next_server 均为服务器可达的 IP/主机名,且不等于 127.0.0.1;修改后执行 cobbler sync。
- 引导文件:确认 /var/lib/cobbler/loaders 包含 pxelinux.0、menu.c32、elilo.efi、grub.efi 等;缺失时运行 cobbler get-loaders 补齐。
- DHCP 配置:如使用 Cobbler 管理 DHCP,检查 /etc/cobbler/dhcp.template 中的 subnet、range、gateway 等;修改后 cobbler sync 生成并分发配置。
- 服务与自启:确保 cobblerd、tftp、dhcpd、httpd 处于 active 状态并设置为开机自启;变更后重启相关服务。
- 日志定位:优先查看 /var/log/cobbler/cobblerd.log(Cobbler 服务)、/var/log/httpd/ssl_error_log(Web 错误)、journalctl 与 /var/log/messages(系统级)。
四 防火墙与 SELinux 处理建议
- 快速验证:临时执行 systemctl stop firewalld、setenforce 0,若恢复正常,说明是策略问题。
- 生产建议:不要长期关闭,改为精确放行端口与路径(如 HTTP/HTTPS、TFTP UDP 69、DHCP 67/68 等),并为 httpd/cobbler 配置合适的 SELinux 布尔值与文件上下文,避免放宽到 disabled。
五 变更 IP 或重装后的恢复步骤
- 同步配置:更新 /etc/cobbler/settings 中的 server 与 next_server 为新 IP;执行 cobbler sync。
- 重启服务:重启 cobblerd、httpd、dhcpd、tftp,确保新配置生效。
- 校验与回滚:运行 cobbler check 复核;保留一份 /etc/cobbler/settings 与 /etc/cobbler/dhcp.template 的备份以便快速回滚。