Linux 日志管理:journald 与日志轮转

概述 日志是系统运维的眼睛。从内核消息到应用日志、从安全审计到性能分析,日志贯穿了故障排查的每个环节。现代 Linux 采用 journald 作为系统日志守护进程,配合 logrotate 进行日志轮转,构成了完整的日志管理基础设施。本文深入 journald 的原理与配置、journalctl 的高级查询技巧、日志轮转策略、远程日志收集方案以及实战分析案例。 journald 原理 架构概览 journald 是 systemd 的系统日志组件,取代了传统的 syslog(rsyslog)。它接收来自内核、系统服务和应用程序的日志,统一存储为结构化的二进制格式。 [内核日志] [systemd 服务] [应用程序] │ │ │ ▼ ▼ ▼ [kmsg] [sd_journal_print] [syslog()/stdout] │ │ │ └──────────┬───────┴──────────┬───────┘ ▼ ▼ [journald] [/dev/log] │ ┌──────────┼──────────┐ ▼ ▼ ▼ [持久日志] [运行时日志] [转发到 syslog] /var/log/ /run/log/ /var/log/ journal/ journal/ messages 日志存储模式 # 查看当前存储模式 $ cat /etc/systemd/journald.conf | grep Storage #Storage=auto # 三种模式: # auto(默认): /var/log/journal 存在则持久化,否则仅内存 # persistent: 强制持久化(自动创建 /var/log/journal) # volatile: 仅内存(/run/log/journal) 模式 存储位置 重启后保留 适用场景 persistent /var/log/journal 是 生产环境 auto /var/log/journal 或 /run/log/journal 取决于目录 默认 volatile /run/log/journal 否 临时系统/安全要求 日志大小控制 # /etc/systemd/journald....

February 14, 2024 · 10 分钟 · 2022 字 · 徐保金

systemd 服务管理深度指南

systemd 架构概述 systemd 是现代 Linux 发行版的事实标准 init 系统,从 2015 年起已取代 SysVinit 成为绝大多数主流发行版的默认 init。它不只是"启动服务的工具",而是一个完整的系统和服务管理器。 核心 unit 类型 systemd 通过 unit(单元)来管理系统资源,每种 unit 类型对应一种资源: unit 类型 扩展名 作用 service .service 系统服务(守护进程) socket .socket IPC 套接字(支持套接字激活) timer .timer 定时任务(替代 cron) target .target 服务组(类似传统 runlevel) mount .mount 文件系统挂载点 device .device 内核设备 path .path 文件路径监控(文件出现时触发服务) slice .slice cgroup 资源分配层级 target 与传统 runlevel 的映射 # 查看当前默认 target systemctl get-default # 通常输出: multi-user.target(对应 runlevel 3,多用户命令行模式) # 切换到图形界面(对应 runlevel 5) sudo systemctl isolate graphical....

February 13, 2024 · 5 分钟 · 935 字 · 徐保金

Linux 性能诊断工具集:从 top 到 perf

概述 性能诊断是 SRE 的核心技能。Linux 提供了丰富的性能分析工具,从简单的 top 到强大的 perf/eBPF,每个工具都有其适用场景。掌握这些工具的使用时机和方法,是快速定位性能瓶颈的关键。本文按 CPU、内存、IO、网络和综合工具五大维度,逐步梳理 Linux 性能诊断工具集,并提供使用场景速查表和实战案例。 负载监控工具 top:经典进程监控 $ top # 顶部摘要信息 top - 15:30:00 up 30 days, 3:21, 3 users, load average: 1.23, 0.98, 0.85 Tasks: 234 total, 1 running, 233 sleeping, 0 stopped, 0 zombie %Cpu(s): 12.3 us, 3.4 sy, 0.0 ni, 83.3 id, 0.5 wa, 0.0 hi, 0.5 si, 0.0 st MiB Mem : 32000.0 total, 5000.0 free, 15000.0 used, 12000.0 buff/cache MiB Swap: 4096....

January 19, 2024 · 14 分钟 · 2833 字 · 徐保金

Linux 文件系统选型与性能优化

概述 文件系统是操作系统与存储设备之间的桥梁,直接影响数据可靠性、I/O 性能和运维复杂度。Linux 支持多种文件系统,每种都有其设计取舍。本文对比 ext4、xfs、btrfs、zfs 四大主流文件系统,深入挂载参数优化、IO 调度器选择、journal 模式、fsync 性能等核心主题,并提供生产环境的选型建议和调优方案。 文件系统对比 核心特性一览 特性 ext4 xfs btrfs zfs 最大文件 16TB 8EB 16EB 16EB 最大卷 1EB 8EB 16EB 256ZB 日志 是 是 是(CoW) 是(CoW/ZIL) 快照 否 否 是 是 压缩 否 否 是 是 去重 否 否 是(实验) 是 校验和 否 否 是 是 子卷 否 否 是 是 RAID 否 否 是 是(原生) 在线扩容 是 是 是 是 在线缩容 否 否 是 否 CoW 部分 否 是 是 开发方 Linux 社区 SGI → Red Hat Oracle OpenZFS ext4:稳定可靠的传统选择 ext4 是 ext3 的改进版,自 2008 年进入主线内核,是 Ubuntu、Debian 等发行版的默认文件系统。...

January 1, 2024 · 8 分钟 · 1529 字 · 徐保金

Linux 内核参数调优实战手册

概述 Linux 内核通过 /proc/sys/ 和 sysctl 接口暴露了数千个可调参数,涵盖网络、内存、文件系统、安全等各个方面。合理调整这些参数可以显著提升系统性能和稳定性,但盲目调参也可能适得其反。本文逐步梳理 sysctl 体系,按网络、文件描述符、内存、安全四大维度展开,并提供生产环境调优模板和参数验证方法。 sysctl 体系 参数查看与修改 # 查看所有参数 $ sysctl -a # 查看特定参数 $ sysctl net.ipv4.tcp_max_syn_backlog $ sysctl vm.swappiness # 临时修改(重启失效) $ sysctl -w vm.swappiness=10 # 从文件加载 $ sysctl -p /etc/sysctl.d/99-custom.conf # 永久生效:写入配置文件 # /etc/sysctl.conf — 传统配置文件 # /etc/sysctl.d/*.conf — 推荐方式(按字母序加载) 配置文件加载顺序 /etc/sysctl.d/ 下按文件名字母序加载: 00-default.conf → 默认值 50-network.conf → 网络参数 99-custom.conf → 自定义参数(最后加载,覆盖前面) 最后加载 /etc/sysctl.conf(如果存在) 参数命名空间 kernel.* — 内核通用参数 vm.* — 虚拟内存参数 fs.* — 文件系统参数 net....

December 21, 2023 · 10 分钟 · 2115 字 · 徐保金

Linux 安全加固清单:从最小化到合规

前言 一台默认安装的 Linux 服务器,暴露的攻击面远超想象:多余的 RPM 包、开放的网络服务、宽松的 SSH 配置、未启用的审计系统。安全加固不是一次性操作,而是一套从安装到运行的全生命周期清单。本文按 CIS Benchmark 框架梳理加固要点,每一步都给出可直接执行的配置。 系统最小化安装原则 包管理裁剪 最小化安装的核心思路:只装需要的,不装可能需要的。 # 安装时选择 Minimal Install(RHEL 系)或 minimal image(Debian 系) # 安装后审计已安装的包组,移除不需要的 yum grouplist # RHEL/CentOS dnf group list # Fedora/RHEL 8+ # 移除不需要的包组 dnf group remove "GNOME Desktop" "Graphical Administration Tools" # 审计已安装的包,按大小排序 rpm -qa --queryformat '%{SIZE} %{NAME}\n' | sort -rn | head -30 # 移除已知不需要的包 dnf remove -y ypbind rsh-server ypserv telnet-server talk-server Debian/Ubuntu 系: # 查看手动安装的包(可安全移除的候选) apt-mark showmanual # 移除不需要的服务包 apt purge -y rsh-client rsh-redone-server telnetd tftpd xinetd 服务裁剪 安装后审计运行中的服务,关闭一切非必要服务:...

December 18, 2023 · 9 分钟 · 1723 字 · 徐保金

SSH 安全最佳实践:从认证到隧道

概述 SSH(Secure Shell)是 Linux 运维的核心通道,也是攻击者的主要目标。一个配置不当的 SSH 服务可能导致服务器被完全接管。从认证机制、服务端硬化、跳板机架构、隧道技术、审计日志到暴力破解防护,全面覆盖 SSH 安全的好的实践。 密钥认证 生成密钥对 # 生成 Ed25519 密钥(推荐) $ ssh-keygen -t ed25519 -C "admin@sre.wang" -f ~/.ssh/id_ed25519 # 生成 RSA 密钥(兼容性需求,至少 4096 位) $ ssh-keygen -t rsa -b 4096 -C "admin@sre.wang" -f ~/.ssh/id_rsa # 生成带密码保护的密钥 $ ssh-keygen -t ed25519 -N "strong-passphrase" -f ~/.ssh/id_ed25519 # 查看密钥指纹 $ ssh-keygen -lf ~/.ssh/id_ed25519.pub 256 SHA256:abc123... admin@sre.wang (ED25519) 密钥算法对比 算法 密钥长度 安全性 性能 推荐 Ed25519 256 位 极高 极快 首选 RSA-4096 4096 位 高 中 兼容场景 RSA-2048 2048 位 中 快 不推荐 ECDSA 256/384/521 高 快 有争议(NIST 曲线) DSA 1024 位 低 - 已废弃 部署公钥 # 方式 1:ssh-copy-id(推荐) $ ssh-copy-id -i ~/....

December 12, 2023 · 11 分钟 · 2136 字 · 徐保金