1. Linux RH134进阶知识点深度解析
作为红帽认证系统管理员(RHCSA)的进阶课程,RH134涵盖了诸多企业级Linux运维的核心技能。本系列第二篇将聚焦文件系统管理、进程调度和网络配置三大模块的实战技巧,这些正是日常运维中最常遇到又最容易踩坑的领域。
提示:本文所有命令均在RHEL 8/CentOS 8环境验证,部分参数在RHEL 9系列需要调整
1.1 文件系统管理进阶
XFS文件系统修复实战:
当遇到系统崩溃导致XFS文件系统损坏时,按以下步骤处理:
bash复制# 1. 先尝试只读方式挂载检查
mount -o ro,norecovery /dev/sdb1 /mnt
# 2. 若挂载失败则进行元数据检查
xfs_repair -n /dev/sdb1
# 3. 实际修复操作(需卸载状态)
xfs_repair /dev/sdb1
# 4. 严重损坏时使用-L强制清空日志
xfs_repair -L /dev/sdb1
配额管理关键参数:
bash复制# 启用配额功能(需在/etc/fstab添加usrquota,grpquota)
mount -o remount /home
quotacheck -cug /home
quotaon /home
# 用户配额设置示例
setquota -u devuser 500M 1G 0 0 /home
注意:RHEL 8开始默认使用xfs_quota工具管理XFS配额,与ext4的quota命令参数有差异
1.2 进程调度与资源控制
cgroups v2实战配置:
bash复制# 创建控制组
mkdir /sys/fs/cgroup/mycgroup
# 设置CPU限制(示例限制为单核的30%)
echo "30000 100000" > /sys/fs/cgroup/mycgroup/cpu.max
# 设置内存限制(示例限制为500MB)
echo "500M" > /sys/fs/cgroup/mycgroup/memory.max
# 将进程加入控制组
echo $$ > /sys/fs/cgroup/mycgroup/cgroup.procs
nice值调整的隐藏规则:
- 普通用户只能调低优先级(即增大nice值)
- 实时优先级(rtprio)需要root权限
- 使用ionice调整磁盘IO优先级常被忽视:
bash复制ionice -c2 -n7 -p $$
1.3 网络配置深度优化
nmcli高级用法:
bash复制# 创建绑定接口(bonding)
nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
# 配置IPv6隐私扩展(解决地址频繁变更问题)
nmcli con modify eth0 ipv6.ip6-privacy 2
firewalld富规则实战:
bash复制# 允许来自特定IP范围的HTTPS访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="https" accept'
# 限制SSH连接速率
firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="3/m" accept'
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统服务管理精要
2.1 systemd单元文件调试
服务启动超时问题处理:
ini复制# 在服务单元文件中增加(/etc/systemd/system/myapp.service)
[Service]
TimeoutStartSec=300
RestartSec=5s
Restart=on-failure
日志筛选技巧:
bash复制journalctl -u nginx --since "2023-07-01" --until "2023-07-02" -p err
journalctl --disk-usage # 查看日志占用空间
journalctl --vacuum-size=200M # 限制日志大小
2.2 定时任务高级用法
anacron配置企业案例:
bash复制# /etc/anacrontab 示例配置
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
@monthly 15 cron.monthly run-parts /etc/cron.monthly
# 强制立即执行所有延迟的任务
anacron -f -n
临时文件管理规范:
bash复制# /etc/tmpfiles.d/mytemp.conf 示例
d /var/tmp/mycache 1777 root root 1d
D /tmp/.X11-unix 1777 root root -
3. 安全加固实操指南
3.1 SELinux策略定制
布尔值快速配置:
bash复制# 查看与HTTP相关的布尔值
getsebool -a | grep httpd
# 允许Apache访问用户目录
setsebool -P httpd_enable_homedirs on
# 生成自定义模块(针对特定报错)
ausearch -m avc -ts recent | audit2allow -M mypolicy
semodule -i mypolicy.pp
端口上下文管理:
bash复制# 查看现有端口标签
semanage port -l
# 添加MySQL使用非标准端口
semanage port -a -t mysqld_port_t -p tcp 3307
3.2 SSH加固方案
多因素认证配置:
bash复制# 安装Google Authenticator
yum install google-authenticator
# 修改SSH配置(/etc/ssh/sshd_config)
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
会话保持技巧:
bash复制# ~/.ssh/config 客户端配置
Host *
ServerAliveInterval 60
TCPKeepAlive yes
ControlMaster auto
ControlPath ~/.ssh/connections/%r@%h:%p
ControlPersist 4h
4. 性能调优实战
4.1 内存管理优化
透明大页配置:
bash复制# 查看当前状态
cat /sys/kernel/mm/transparent_hugepage/enabled
# 启动时禁用(GRUB_CMDLINE_LINUX参数)
transparent_hugepage=never
# 动态调整
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
OOM Killer调优:
bash复制# 调整进程oom_score_adj(-1000到1000)
echo -500 > /proc/$$/oom_score_adj
# 系统级策略(/etc/sysctl.conf)
vm.panic_on_oom = 0
vm.oom_kill_allocating_task = 1
4.2 存储性能优化
IO调度器选择:
bash复制# 查看可用调度器
cat /sys/block/sda/queue/scheduler
# 临时切换为deadline(NVMe建议none)
echo deadline > /sys/block/sda/queue/scheduler
# 永久生效(GRUB配置)
elevator=deadline
EXT4优化参数:
bash复制# /etc/fstab示例
/dev/sdb1 /data ext4 defaults,noatime,nodelalloc,data=writeback,journal_async_commit 0 2
5. 疑难问题排查手册
5.1 启动故障处理
救援模式实战:
- 在GRUB菜单按e编辑启动参数
- 在linux16行末尾添加
systemd.unit=rescue.target - Ctrl+X启动后执行:
bash复制mount -o remount,rw /
journalctl --list-boots # 查看历史启动记录
dmesg | grep -i error
文件系统修复工具链:
mermaid复制graph TD
A[无法挂载] --> B{xfs_repair -n}
B -->|有错误| C[umount后执行xfs_repair]
B -->|无错误| D[检查硬件]
C --> E[尝试-L参数]
E --> F[终极方案mkfs]
5.2 网络连接诊断
tcpdump高级过滤:
bash复制# 捕获HTTP GET请求
tcpdump -i eth0 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# 分析TCP重传
tcpdump -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) = tcp-syn'
连接状态统计:
bash复制ss -antop | awk 'NR>1 {print $1}' | sort | uniq -c
netstat -s | grep -E 'retrans|segments'
