Linux 生产环境运维经验总结

4次阅读

Linux 生产环境运维经验总结

linux 生产环境运维不是靠背命令,而是靠对系统行为的理解、对风险的预判和对流程的敬畏。稳定压倒一切,变更必须可控,监控必须前置,日志必须可查。

服务稳定性:从启动到自愈

生产服务不能只靠systemctl start就完事。关键服务必须配置Restart=alwaysStartLimitIntervalSecRestartSec,防止进程意外退出后长时间失联。同时用systemctl enable确保开机自启,但更要验证systemctl is-enabledsystemctl is-active的真实状态——有些服务依赖网络或挂载点,需配合WantedBy=multi-user.targetAfter=network-online.target调整启动顺序。

  • 上线前在测试环境完整走一遍重启流程,观察服务恢复时间与依赖就绪顺序
  • 禁用所有非必要ExecStartPre脚本,避免启动卡死在某个检查环节
  • journalctl -u service-name -f实时跟踪启动日志,比ps aux | grep更可靠

磁盘与IO:别等No space left on device才行动

根分区爆满是生产事故高频原因,但真正棘手的是inodes耗尽——df -i必须和df -h一起看。/var/log/下旧日志、/tmp中残留临时文件、容器未清理的overlay层、rsync中断留下的.~临时文件,都可能悄悄吃光inodes。

  • /var/log启用logrotate并配置maxsizerotate,禁用copytruncate(有丢失日志风险)
  • find /tmp -type f -mtime +7 -delete加cron定期清理,但先-print确认范围
  • 排查IO瓶颈优先看iostat -x 1中的%utilawait,而不是只盯top里的CPU

权限与安全:最小化不是口号

运维账号不用root,应用进程不跑root,ssh不用密码登录——这三条是底线。生产机禁用PermitRootLogin yes,改用普通用户+sudoers白名单;数据库中间件配置文件权限设为640,属主为运行用户,属组为管理组;/etc/shadow必须是000/etc/passwd保持644即可。

  • visudo编辑sudoers,禁止写ALL=(ALL) NOPASSWD: ALL这种万能句式
  • 敏感配置(如DB密码)从不硬编码进systemd unit文件,改用EnvironmentFile并限制该文件权限
  • 定期执行rpm -Vacentos/RHEL)或dpkg –verifydebian/ubuntu)校验系统二进制完整性

变更与回滚:每次操作都是可逆的

没有“小修改”。哪怕只是改一行nginx配置,也要走完整流程:备份原文件(带时间戳)、用nginx -t验证语法、systemctl reload而非restart、5分钟内观察监控曲线和错误日志。线上紧急修复优先用patchsed -i.bak,保留原始副本;批量更新用ansible –check –diff预演,确认无误再执行。

  • 所有变更记录进内部CMDB或简单文本日志,包含操作人、时间、变更内容、验证方式
  • 核心服务升级前,先在灰度节点部署,观察至少一个业务高峰周期
  • 数据库结构变更必须配回滚sql,且在从库上先验证执行耗时与锁表现
text=ZqhQzanResources