1. 项目概述作为一名在Linux运维领域摸爬滚打多年的老手我深知CentOS 7.9这个经典版本在实际生产环境中可能遇到的各种坑。今天我就来系统梳理这些年遇到的典型报错及其解决方案希望能帮各位同行少走弯路。CentOS 7.9作为RHEL的社区分支以其稳定性和长周期支持著称但再成熟的系统也难免会遇到各种问题。从安装部署到日常运维从软件包依赖到内核参数调优每个环节都可能暗藏玄机。本文将基于真实生产案例分享那些手册上不会写的实战经验。2. 常见问题分类与诊断思路2.1 系统启动类问题案例1/boot分区空间不足导致内核更新失败症状表现为执行yum update时出现Not enough space in /boot错误。这个问题在默认安装时特别常见因为CentOS 7.9的/boot分区通常只分配了1GB空间。解决方法# 查看当前内核版本和占用空间 rpm -q kernel | sort du -sh /boot/* # 清理旧内核保留最近2个版本 package-cleanup --oldkernels --count2 # 永久解决方案是调整分区大小或重建/boot分区重要提示清理内核前务必确认系统当前运行的内核版本通过uname -r切勿删除正在使用的内核。案例2GRUB引导损坏常见于磁盘操作或异常关机后表现为启动时直接进入grub rescue模式。修复步骤先确认根分区位置ls (hd0,msdos1)/逐个尝试直到找到包含/boot目录的分区设置正确路径set root(hd0,msdos1) set prefix(hd0,msdos1)/boot/grub2 insmod normal normal进入系统后重建grubgrub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg2.2 网络连接类问题案例3NetworkManager与network服务冲突症状表现为网络时断时续或服务重启失败。CentOS 7中这两个网络管理工具并存容易产生冲突。最佳实践方案# 禁用NetworkManager适用于服务器环境 systemctl stop NetworkManager systemctl disable NetworkManager # 配置传统network服务 vi /etc/sysconfig/network-scripts/ifcfg-ens192 # 确保包含 ONBOOTyes NM_CONTROLLEDno systemctl restart network案例4防火墙规则丢失突然无法访问某些端口时先检查firewalld状态# 查看活跃zone firewall-cmd --get-active-zones # 检查具体规则 firewall-cmd --list-all --zonepublic # 临时开放端口重启后失效 firewall-cmd --add-port8080/tcp # 永久生效要加--permanent参数 firewall-cmd --add-port8080/tcp --permanent firewall-cmd --reload3. 软件包管理疑难解析3.1 Yum仓库问题案例5Could not resolve host错误这通常是DNS配置问题按以下步骤排查# 1. 检查基础网络 ping 8.8.8.8 # 2. 测试DNS解析 nslookup mirrors.aliyun.com # 3. 检查/etc/resolv.conf # 确保有有效的nameserver配置 # 注意NetworkManager可能会覆盖此文件 # 临时解决方案测试用 echo nameserver 114.114.114.114 /etc/resolv.conf案例6RPM数据库损坏症状为执行yum命令报rpmdb: BDB0113 Thread/process...错误。修复方法# 备份原有数据库 mkdir /var/lib/rpm/backup cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/ # 重建数据库 rm -f /var/lib/rpm/__db.[0-9]* rpm --rebuilddb # 验证修复 yum clean all yum check3.2 依赖地狱问题案例7libc.so.6版本冲突安装新软件时可能遇到version GLIBC_2.14 not found等错误。这是因为CentOS 7.9默认的glibc版本较旧。安全解决方案是使用Software CollectionsSCLyum install centos-release-scl yum install devtoolset-8 # 临时启用新工具链 scl enable devtoolset-8 bash # 永久生效可添加到profile echo source /opt/rh/devtoolset-8/enable ~/.bash_profile4. 存储管理实战技巧4.1 LVM常见问题案例8VG显示为unknown物理卷丢失后卷组可能显示为unknown状态。恢复步骤# 1. 扫描所有PV pvscan # 2. 导出/导入VG vgchange -an vgname vgexport vgname vgimport vgname # 3. 重新激活 vgchange -ay vgname案例9XFS文件系统修复XFS作为默认文件系统损坏时可用以下方法修复# 检查文件系统 xfs_repair -n /dev/sdb1 # 实际修复卸载状态下 umount /data xfs_repair /dev/sdb1 # 严重损坏时需要加-L参数会丢失部分数据 xfs_repair -L /dev/sdb14.2 磁盘空间异常占用案例10被删除文件仍占用空间当进程持有已删除文件的句柄时空间不会释放。查找方法# 查找被删除但仍被进程占用的文件 lsof L1 # 典型输出 # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME # java 123 root 1w REG 253,0 100G 0 1234 /var/log/app.log (deleted) # 解决方案重启相关进程或清空文件 /proc/123/fd/15. 系统性能问题排查5.1 内存泄漏诊断案例11OOM Killer频繁触发通过以下命令分析内存使用情况# 查看内存总体使用 free -h # 按进程排序显示 ps aux --sort-%mem | head # 检查内核日志 dmesg | grep -i oom # 临时解决方案 sysctl vm.overcommit_memory2 sysctl vm.overcommit_ratio805.2 CPU负载过高案例12不可中断进程(D状态)堆积使用top看到大量D状态进程时# 1. 检查磁盘I/O iostat -x 1 # 2. 查看进程I/O iotop -o # 3. 检查挂载点 mount | grep -E (nfs|cifs) # 常见原因NFS服务器无响应或存储阵列故障6. 安全相关问题处理6.1 SELinux权限问题案例13服务因SELinux拒绝启动查看/var/log/audit/audit.log获取详细信息修复方法# 临时解决方案生产环境慎用 setenforce 0 # 正确做法是修改策略 grep avc: denied /var/log/audit/audit.log | audit2allow -M mypolicy semodule -i mypolicy.pp # 或添加文件上下文 semanage fcontext -a -t httpd_sys_content_t /webroot(/.*)? restorecon -Rv /webroot6.2 SSH登录失败案例14Too many authentication failures这通常是因为客户端有太多密钥导致。解决方案# 客户端修改~/.ssh/config Host * IdentitiesOnly yes ServerAliveInterval 60 # 或指定特定密钥 ssh -o IdentitiesOnlyyes -i ~/.ssh/id_rsa userhost7. 日志分析技巧7.1 系统日志关键信息重要日志文件位置/var/log/messages通用系统消息/var/log/secure认证相关日志/var/log/cron计划任务日志/var/log/audit/audit.logSELinux审计日志实用分析命令# 实时查看日志 journalctl -f # 按时间筛选 journalctl --since 2023-01-01 --until 2023-01-02 # 按服务筛选 journalctl -u nginx # 合并分析多个日志 multitail /var/log/nginx/access.log /var/log/nginx/error.log7.2 日志轮转配置检查/etc/logrotate.conf和/etc/logrotate.d/下的配置典型配置示例/var/log/nginx/*log { daily missingok rotate 30 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate /bin/kill -USR1 cat /run/nginx.pid 2/dev/null 2/dev/null || true endscript }8. 系统维护最佳实践8.1 定期维护任务推荐设置以下计划任务crontab -e# 每天清理时文件 0 3 * * * find /tmp -type f -atime 7 -delete # 每周检查文件系统 0 5 * * 0 /usr/sbin/xfs_check /dev/sdb1 # 每月更新locate数据库 0 6 1 * * updatedb # 每季度检查坏块 0 7 1 */3 * badblocks -sv /dev/sda8.2 备份策略示例基本备份脚本框架#!/bin/bash # 定义备份目录 BACKUP_DIR/backups/$(date %Y%m%d) # 创建目录 mkdir -p $BACKUP_DIR # 备份重要配置文件 tar czf $BACKUP_DIR/etc.tar.gz /etc # 备份MySQL数据库 mysqldump -u root -pPASSWORD --all-databases $BACKUP_DIR/mysql.sql # 备份重要数据目录 rsync -a --delete /var/www $BACKUP_DIR/ # 保留最近7天备份 find /backups -type d -mtime 7 -exec rm -rf {} \;9. 升级与迁移注意事项9.1 小版本升级从CentOS 7.x升级到7.9的步骤# 1. 更新现有软件包 yum clean all yum update # 2. 安装升级工具 yum install yum-utils # 3. 升级发行版 yum upgrade # 4. 重启检查 reboot uname -a cat /etc/redhat-release9.2 向CentOS Stream迁移注意事项这不是简单的版本升级而是发行版变更生产环境不建议直接迁移正确做法是在新服务器安装Stream迁移应用和数据充分测试后切换回退方案# 如果误升级到Stream可以尝试 yum distro-sync --disablerepo* --enablerepobase,updates10. 硬件相关问题处理10.1 磁盘SMART检测定期检查磁盘健康状态# 安装工具 yum install smartmontools # 查看基本信息 smartctl -i /dev/sda # 短期测试 smartctl -t short /dev/sda # 查看结果 smartctl -H /dev/sda smartctl -A /dev/sda10.2 内存检测使用memtest86检测内存# 安装工具 yum install memtest86 # 配置grub启动项 grub2-mkconfig -o /boot/grub2/grub.cfg # 重启选择memtest86选项11. 虚拟化环境问题11.1 VMware工具问题常见问题处理# 重新安装open-vm-tools yum reinstall open-vm-tools # 检查服务状态 systemctl status vmtoolsd # 手动加载模块 modprobe vmhgfs11.2 KVM虚拟机问题virt-manager连接失败时# 检查libvirtd服务 systemctl restart libvirtd # 检查日志 journalctl -u libvirtd # 常见权限问题 usermod -aG libvirt username12. 内核调优经验12.1 内核参数优化/etc/sysctl.conf推荐配置# 避免TCP TIME_WAIT状态堆积 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1 # 增加文件描述符限制 fs.file-max 65535 # 内存过量使用策略 vm.overcommit_memory 1 vm.overcommit_ratio 80 # 应用配置 sysctl -p12.2 内核模块管理查看和加载模块# 列出已加载模块 lsmod # 查看模块信息 modinfo ext4 # 手动加载模块 modprobe module_name # 永久生效 echo module_name /etc/modules-load.d/module.conf13. 容器相关问题13.1 Docker存储驱动CentOS 7.9推荐使用overlay2# 配置/etc/docker/daemon.json { storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ] } # 重启服务 systemctl restart docker13.2 Podman与Docker兼容使用podman-docker实现兼容yum install podman-docker systemctl enable --now podman.socket # 测试 docker run hello-world14. 性能监控工具14.1 基础监控命令常用组合# CPU监控 mpstat -P ALL 1 # 内存监控 vmstat 1 # 综合监控 dstat -tcmnd --disk-util14.2 高级监控方案安装sysstat配置# 启用详细监控 vi /etc/sysconfig/sysstat # 修改 HISTORY30 SADC_OPTIONS-S DISK # 重启服务 systemctl restart sysstat15. 系统救援模式15.1 进入救援模式重启系统在GRUB菜单选择Troubleshooting选择Rescue a CentOS system按提示挂载根分区chroot /mnt/sysimage15.2 修复只读文件系统强制重新挂载为读写mount -o remount,rw /dev/sda1 # 如果失败可能是文件系统损坏 fsck -y /dev/sda116. 时间同步问题16.1 chronyd配置优化/etc/chrony.confserver ntp.aliyun.com iburst server time.google.com iburst # 允许本地网络同步 allow 192.168.1.0/24 # 监控时间偏移 makestep 1.0 3 # 检查状态 chronyc tracking chronyc sources16.2 时区设置正确设置时区# 查看当前时区 timedatectl # 设置时区 timedatectl set-timezone Asia/Shanghai # 硬件时钟同步 hwclock --systohc17. 系统服务管理17.1 服务启动失败诊断流程# 查看服务状态 systemctl status servicename # 查看详细日志 journalctl -u servicename -xe # 测试直接运行 /usr/sbin/servicename --debug17.2 自定义服务创建systemd服务示例# /etc/systemd/system/myapp.service [Unit] DescriptionMy Custom Application Afternetwork.target [Service] ExecStart/usr/local/bin/myapp Userappuser Restarton-failure [Install] WantedBymulti-user.target # 重载配置 systemctl daemon-reload18. 用户与权限问题18.1 sudo权限配置安全配置建议# 不要直接修改/etc/sudoers而是 visudo -f /etc/sudoers.d/admin_users # 添加内容 %admin ALL(ALL) NOPASSWD: ALL User_Alias ADMIN user1, user2 ADMIN ALL(ALL) ALL18.2 文件权限修复递归修复目录权限# 恢复标准权限 find /path -type d -exec chmod 755 {} \; find /path -type f -exec chmod 644 {} \; # 特殊目录如webroot find /var/www -type d -exec chmod 750 {} \; find /var/www -type f -exec chmod 640 {} \;19. 语言环境问题19.1 中文乱码处理安装中文字体yum groupinstall Fonts yum install wqy-microhei-fonts # 设置系统语言 localectl set-locale LANGzh_CN.UTF-819.2 终端编码问题确保SSH客户端和服务器编码一致# 检查当前编码 echo $LANG # 临时设置 export LANGen_US.UTF-8 export LC_ALLen_US.UTF-820. 自动化运维技巧20.1 批量执行命令使用pssh工具yum install pssh # 批量执行 parallel-ssh -i -h hosts.txt yum update -y20.2 配置管理入门使用Ansible基础# 安装 yum install ansible # 简单playbook示例 --- - hosts: webservers tasks: - name: Ensure nginx is installed yum: name: nginx state: present - name: Start nginx service service: name: nginx state: started
CentOS 7.9运维实战:常见问题与解决方案
1. 项目概述作为一名在Linux运维领域摸爬滚打多年的老手我深知CentOS 7.9这个经典版本在实际生产环境中可能遇到的各种坑。今天我就来系统梳理这些年遇到的典型报错及其解决方案希望能帮各位同行少走弯路。CentOS 7.9作为RHEL的社区分支以其稳定性和长周期支持著称但再成熟的系统也难免会遇到各种问题。从安装部署到日常运维从软件包依赖到内核参数调优每个环节都可能暗藏玄机。本文将基于真实生产案例分享那些手册上不会写的实战经验。2. 常见问题分类与诊断思路2.1 系统启动类问题案例1/boot分区空间不足导致内核更新失败症状表现为执行yum update时出现Not enough space in /boot错误。这个问题在默认安装时特别常见因为CentOS 7.9的/boot分区通常只分配了1GB空间。解决方法# 查看当前内核版本和占用空间 rpm -q kernel | sort du -sh /boot/* # 清理旧内核保留最近2个版本 package-cleanup --oldkernels --count2 # 永久解决方案是调整分区大小或重建/boot分区重要提示清理内核前务必确认系统当前运行的内核版本通过uname -r切勿删除正在使用的内核。案例2GRUB引导损坏常见于磁盘操作或异常关机后表现为启动时直接进入grub rescue模式。修复步骤先确认根分区位置ls (hd0,msdos1)/逐个尝试直到找到包含/boot目录的分区设置正确路径set root(hd0,msdos1) set prefix(hd0,msdos1)/boot/grub2 insmod normal normal进入系统后重建grubgrub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg2.2 网络连接类问题案例3NetworkManager与network服务冲突症状表现为网络时断时续或服务重启失败。CentOS 7中这两个网络管理工具并存容易产生冲突。最佳实践方案# 禁用NetworkManager适用于服务器环境 systemctl stop NetworkManager systemctl disable NetworkManager # 配置传统network服务 vi /etc/sysconfig/network-scripts/ifcfg-ens192 # 确保包含 ONBOOTyes NM_CONTROLLEDno systemctl restart network案例4防火墙规则丢失突然无法访问某些端口时先检查firewalld状态# 查看活跃zone firewall-cmd --get-active-zones # 检查具体规则 firewall-cmd --list-all --zonepublic # 临时开放端口重启后失效 firewall-cmd --add-port8080/tcp # 永久生效要加--permanent参数 firewall-cmd --add-port8080/tcp --permanent firewall-cmd --reload3. 软件包管理疑难解析3.1 Yum仓库问题案例5Could not resolve host错误这通常是DNS配置问题按以下步骤排查# 1. 检查基础网络 ping 8.8.8.8 # 2. 测试DNS解析 nslookup mirrors.aliyun.com # 3. 检查/etc/resolv.conf # 确保有有效的nameserver配置 # 注意NetworkManager可能会覆盖此文件 # 临时解决方案测试用 echo nameserver 114.114.114.114 /etc/resolv.conf案例6RPM数据库损坏症状为执行yum命令报rpmdb: BDB0113 Thread/process...错误。修复方法# 备份原有数据库 mkdir /var/lib/rpm/backup cp -a /var/lib/rpm/__db* /var/lib/rpm/backup/ # 重建数据库 rm -f /var/lib/rpm/__db.[0-9]* rpm --rebuilddb # 验证修复 yum clean all yum check3.2 依赖地狱问题案例7libc.so.6版本冲突安装新软件时可能遇到version GLIBC_2.14 not found等错误。这是因为CentOS 7.9默认的glibc版本较旧。安全解决方案是使用Software CollectionsSCLyum install centos-release-scl yum install devtoolset-8 # 临时启用新工具链 scl enable devtoolset-8 bash # 永久生效可添加到profile echo source /opt/rh/devtoolset-8/enable ~/.bash_profile4. 存储管理实战技巧4.1 LVM常见问题案例8VG显示为unknown物理卷丢失后卷组可能显示为unknown状态。恢复步骤# 1. 扫描所有PV pvscan # 2. 导出/导入VG vgchange -an vgname vgexport vgname vgimport vgname # 3. 重新激活 vgchange -ay vgname案例9XFS文件系统修复XFS作为默认文件系统损坏时可用以下方法修复# 检查文件系统 xfs_repair -n /dev/sdb1 # 实际修复卸载状态下 umount /data xfs_repair /dev/sdb1 # 严重损坏时需要加-L参数会丢失部分数据 xfs_repair -L /dev/sdb14.2 磁盘空间异常占用案例10被删除文件仍占用空间当进程持有已删除文件的句柄时空间不会释放。查找方法# 查找被删除但仍被进程占用的文件 lsof L1 # 典型输出 # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME # java 123 root 1w REG 253,0 100G 0 1234 /var/log/app.log (deleted) # 解决方案重启相关进程或清空文件 /proc/123/fd/15. 系统性能问题排查5.1 内存泄漏诊断案例11OOM Killer频繁触发通过以下命令分析内存使用情况# 查看内存总体使用 free -h # 按进程排序显示 ps aux --sort-%mem | head # 检查内核日志 dmesg | grep -i oom # 临时解决方案 sysctl vm.overcommit_memory2 sysctl vm.overcommit_ratio805.2 CPU负载过高案例12不可中断进程(D状态)堆积使用top看到大量D状态进程时# 1. 检查磁盘I/O iostat -x 1 # 2. 查看进程I/O iotop -o # 3. 检查挂载点 mount | grep -E (nfs|cifs) # 常见原因NFS服务器无响应或存储阵列故障6. 安全相关问题处理6.1 SELinux权限问题案例13服务因SELinux拒绝启动查看/var/log/audit/audit.log获取详细信息修复方法# 临时解决方案生产环境慎用 setenforce 0 # 正确做法是修改策略 grep avc: denied /var/log/audit/audit.log | audit2allow -M mypolicy semodule -i mypolicy.pp # 或添加文件上下文 semanage fcontext -a -t httpd_sys_content_t /webroot(/.*)? restorecon -Rv /webroot6.2 SSH登录失败案例14Too many authentication failures这通常是因为客户端有太多密钥导致。解决方案# 客户端修改~/.ssh/config Host * IdentitiesOnly yes ServerAliveInterval 60 # 或指定特定密钥 ssh -o IdentitiesOnlyyes -i ~/.ssh/id_rsa userhost7. 日志分析技巧7.1 系统日志关键信息重要日志文件位置/var/log/messages通用系统消息/var/log/secure认证相关日志/var/log/cron计划任务日志/var/log/audit/audit.logSELinux审计日志实用分析命令# 实时查看日志 journalctl -f # 按时间筛选 journalctl --since 2023-01-01 --until 2023-01-02 # 按服务筛选 journalctl -u nginx # 合并分析多个日志 multitail /var/log/nginx/access.log /var/log/nginx/error.log7.2 日志轮转配置检查/etc/logrotate.conf和/etc/logrotate.d/下的配置典型配置示例/var/log/nginx/*log { daily missingok rotate 30 compress delaycompress notifempty create 640 nginx adm sharedscripts postrotate /bin/kill -USR1 cat /run/nginx.pid 2/dev/null 2/dev/null || true endscript }8. 系统维护最佳实践8.1 定期维护任务推荐设置以下计划任务crontab -e# 每天清理时文件 0 3 * * * find /tmp -type f -atime 7 -delete # 每周检查文件系统 0 5 * * 0 /usr/sbin/xfs_check /dev/sdb1 # 每月更新locate数据库 0 6 1 * * updatedb # 每季度检查坏块 0 7 1 */3 * badblocks -sv /dev/sda8.2 备份策略示例基本备份脚本框架#!/bin/bash # 定义备份目录 BACKUP_DIR/backups/$(date %Y%m%d) # 创建目录 mkdir -p $BACKUP_DIR # 备份重要配置文件 tar czf $BACKUP_DIR/etc.tar.gz /etc # 备份MySQL数据库 mysqldump -u root -pPASSWORD --all-databases $BACKUP_DIR/mysql.sql # 备份重要数据目录 rsync -a --delete /var/www $BACKUP_DIR/ # 保留最近7天备份 find /backups -type d -mtime 7 -exec rm -rf {} \;9. 升级与迁移注意事项9.1 小版本升级从CentOS 7.x升级到7.9的步骤# 1. 更新现有软件包 yum clean all yum update # 2. 安装升级工具 yum install yum-utils # 3. 升级发行版 yum upgrade # 4. 重启检查 reboot uname -a cat /etc/redhat-release9.2 向CentOS Stream迁移注意事项这不是简单的版本升级而是发行版变更生产环境不建议直接迁移正确做法是在新服务器安装Stream迁移应用和数据充分测试后切换回退方案# 如果误升级到Stream可以尝试 yum distro-sync --disablerepo* --enablerepobase,updates10. 硬件相关问题处理10.1 磁盘SMART检测定期检查磁盘健康状态# 安装工具 yum install smartmontools # 查看基本信息 smartctl -i /dev/sda # 短期测试 smartctl -t short /dev/sda # 查看结果 smartctl -H /dev/sda smartctl -A /dev/sda10.2 内存检测使用memtest86检测内存# 安装工具 yum install memtest86 # 配置grub启动项 grub2-mkconfig -o /boot/grub2/grub.cfg # 重启选择memtest86选项11. 虚拟化环境问题11.1 VMware工具问题常见问题处理# 重新安装open-vm-tools yum reinstall open-vm-tools # 检查服务状态 systemctl status vmtoolsd # 手动加载模块 modprobe vmhgfs11.2 KVM虚拟机问题virt-manager连接失败时# 检查libvirtd服务 systemctl restart libvirtd # 检查日志 journalctl -u libvirtd # 常见权限问题 usermod -aG libvirt username12. 内核调优经验12.1 内核参数优化/etc/sysctl.conf推荐配置# 避免TCP TIME_WAIT状态堆积 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1 # 增加文件描述符限制 fs.file-max 65535 # 内存过量使用策略 vm.overcommit_memory 1 vm.overcommit_ratio 80 # 应用配置 sysctl -p12.2 内核模块管理查看和加载模块# 列出已加载模块 lsmod # 查看模块信息 modinfo ext4 # 手动加载模块 modprobe module_name # 永久生效 echo module_name /etc/modules-load.d/module.conf13. 容器相关问题13.1 Docker存储驱动CentOS 7.9推荐使用overlay2# 配置/etc/docker/daemon.json { storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ] } # 重启服务 systemctl restart docker13.2 Podman与Docker兼容使用podman-docker实现兼容yum install podman-docker systemctl enable --now podman.socket # 测试 docker run hello-world14. 性能监控工具14.1 基础监控命令常用组合# CPU监控 mpstat -P ALL 1 # 内存监控 vmstat 1 # 综合监控 dstat -tcmnd --disk-util14.2 高级监控方案安装sysstat配置# 启用详细监控 vi /etc/sysconfig/sysstat # 修改 HISTORY30 SADC_OPTIONS-S DISK # 重启服务 systemctl restart sysstat15. 系统救援模式15.1 进入救援模式重启系统在GRUB菜单选择Troubleshooting选择Rescue a CentOS system按提示挂载根分区chroot /mnt/sysimage15.2 修复只读文件系统强制重新挂载为读写mount -o remount,rw /dev/sda1 # 如果失败可能是文件系统损坏 fsck -y /dev/sda116. 时间同步问题16.1 chronyd配置优化/etc/chrony.confserver ntp.aliyun.com iburst server time.google.com iburst # 允许本地网络同步 allow 192.168.1.0/24 # 监控时间偏移 makestep 1.0 3 # 检查状态 chronyc tracking chronyc sources16.2 时区设置正确设置时区# 查看当前时区 timedatectl # 设置时区 timedatectl set-timezone Asia/Shanghai # 硬件时钟同步 hwclock --systohc17. 系统服务管理17.1 服务启动失败诊断流程# 查看服务状态 systemctl status servicename # 查看详细日志 journalctl -u servicename -xe # 测试直接运行 /usr/sbin/servicename --debug17.2 自定义服务创建systemd服务示例# /etc/systemd/system/myapp.service [Unit] DescriptionMy Custom Application Afternetwork.target [Service] ExecStart/usr/local/bin/myapp Userappuser Restarton-failure [Install] WantedBymulti-user.target # 重载配置 systemctl daemon-reload18. 用户与权限问题18.1 sudo权限配置安全配置建议# 不要直接修改/etc/sudoers而是 visudo -f /etc/sudoers.d/admin_users # 添加内容 %admin ALL(ALL) NOPASSWD: ALL User_Alias ADMIN user1, user2 ADMIN ALL(ALL) ALL18.2 文件权限修复递归修复目录权限# 恢复标准权限 find /path -type d -exec chmod 755 {} \; find /path -type f -exec chmod 644 {} \; # 特殊目录如webroot find /var/www -type d -exec chmod 750 {} \; find /var/www -type f -exec chmod 640 {} \;19. 语言环境问题19.1 中文乱码处理安装中文字体yum groupinstall Fonts yum install wqy-microhei-fonts # 设置系统语言 localectl set-locale LANGzh_CN.UTF-819.2 终端编码问题确保SSH客户端和服务器编码一致# 检查当前编码 echo $LANG # 临时设置 export LANGen_US.UTF-8 export LC_ALLen_US.UTF-820. 自动化运维技巧20.1 批量执行命令使用pssh工具yum install pssh # 批量执行 parallel-ssh -i -h hosts.txt yum update -y20.2 配置管理入门使用Ansible基础# 安装 yum install ansible # 简单playbook示例 --- - hosts: webservers tasks: - name: Ensure nginx is installed yum: name: nginx state: present - name: Start nginx service service: name: nginx state: started