第 3 章 · 03 存储、网络与性能排障


文档摘要

第 3 章 · 03 存储、网络与性能排障 本节摘要:最后一层能力:存储体系(inode 深挖、ext4 vs xfs、LVM/RAID、挂载管理)、网络诊断(命令矩阵、bonding、DNS 查询)、性能分析(load average 解读、慢系统排查套路)、文本三剑客(grep/awk/sed)与容器隔离基础(命名空间)。末尾附原库四个动手练习。学完本节,面对一台"很慢/满了/连不上"的服务器,你有完整的排查路径。 学习目标 说出 inode 的作用与"磁盘满但 df 有空间"的排查路径。 对比 ext4 与 xfs、RAID 0/1/5/10、LVM 三层。 说出网络诊断命令矩阵与端口占用双查法。 解读 load average,说出慢系统排查的标准套路。

第 3 章 · 03 存储、网络与性能排障

本节摘要:最后一层能力:存储体系(inode 深挖、ext4 vs xfs、LVM/RAID、挂载管理)、网络诊断(命令矩阵、bonding、DNS 查询)、性能分析(load average 解读、慢系统排查套路)、文本三剑客(grep/awk/sed)与容器隔离基础(命名空间)。末尾附原库四个动手练习。学完本节,面对一台"很慢/满了/连不上"的服务器,你有完整的排查路径。

学习目标

  1. 说出 inode 的作用与"磁盘满但 df 有空间"的排查路径。
  2. 对比 ext4 与 xfs、RAID 0/1/5/10、LVM 三层。
  3. 说出网络诊断命令矩阵与端口占用双查法。
  4. 解读 load average,说出慢系统排查的标准套路。
  5. 用 grep/awk/sed 完成三类文本处理,并说出命名空间七类。

一、磁盘与文件系统

inode 深挖

  • inode:每个文件/目录的元数据结构(大小、属主、权限、时间戳、链接数、数据块指针),不含文件名——文件名属于目录文件;
  • 查看:ls -i(inode 号)、df -i(inode 使用率);
  • 经典故障:报 "File system is full" 但 df -h 仅用 20% → 极可能 inode 耗尽(海量小文件吃光 inode 表),df -i 确认。

文件系统对照

维度 ext4 xfs
默认地位 RHEL 6 及以前 RHEL 7+ 默认
定位 通用老牌稳定 大文件/高并发写入强
缩减(shrink) 支持 不支持(只能在线扩容)
单文件上限 16 TiB 8 EiB 级
修复工具 e2fsck xfs_repair

LVM 与 RAID

  • LVM 三层:PV 物理卷 → VG 卷组 → LV 逻辑卷,支持在线扩容与快照;
  • RAID 对照:0 条带(性能、无冗余)、1 镜像(冗余、容量减半)、5 分布式奇偶校验(1 盘冗余,≥3 盘)、10 先镜像后条带(性能+冗余,≥4 盘)。

挂载管理

mount / umount # 挂载/卸载 cat /proc/mounts # 当前挂载真相(mount 无输出时查这个) df -T # 文件系统类型+用量 df -h vs df -i # 块空间 vs inode

/etc/fstab 管开机持久挂载;lazy umount(umount -l)延迟卸载忙设备;swap 是磁盘交换空间,tmpfs 是占 RAM 的临时文件系统。

建文件三式:touchcat > file+Ctrl+D、truncate -s <size>(或 dd/fallocate 建指定大小)。

二、网络诊断

命令矩阵

场景 命令
接口/地址/路由 ip linkip addrip route
连通性 ping
逐跳路径 traceroute(递增 TTL 让路由器返回超时)
端口↔进程 netstat -tnlauplsof -i -n -P
抓包 tcpdump、wireshark
裸 TCP 交互 nc(可发 HTTP 请求)

端口占用双查法:netstat -tnlp | grep <port> / lsof -i -n -P | grep <port>

lo 回环接口:本机与自身通信,诊断与本地服务用。

bonding(网卡绑定)模式:balance-rr 轮询(吞吐)、active-backup 主备(容错)、balance-tlb 发送均衡、balance-alb 双向均衡。

DNS 查询

  • 主机名:/etc/hostname 是永久名;hostname/hostnamectl 可能只显示临时名;
  • 工具:dighostnslookup;
  • TTL:dig 结果中的数字即 TTL——该记录在本机缓存的秒数,期间不再问 DNS 服务器;
  • 改 DNS:nmcli con mod "连接名" ipv4.dns "8.8.8.8"nmcli con up 生效 → cat /etc/resolv.conf 验证。

三、性能分析

load average 解读

uptime/top 显示 1/5/15 分钟均值。它不是 CPU 使用率——包含 R 与 D 状态进程的排队长度;数值持续大于 CPU 核数说明存在排队。

指标命令

资源 命令
CPU topperf(采样剖析)、火焰图
内存 free -htopps -eo rss
磁盘 iostat -xz 1df -hdu -sh
网络 sar -n TCP,ETCP 1dstat -t
进程 pidstatstrace

慢系统排查标准套路:

top 看异常进程 → dstat -t 查磁盘/网络吞吐 → sar 查网络统计 → iostat 查 I/O 等待 → strace 查进程行为

反直觉场景:CPU 负载高但没有高 CPU 进程 → 可能 D 状态进程堆积或内核线程消耗。

内存两概念:MemFree(完全未使用的物理 RAM)vs MemAvailable(新负载可用的内存,含可回收页,监控应看后者);OOM killer 在内存耗尽时按 oom_score 挑进程强杀。

四、文本三剑客

工具 模型 典型用法
grep 过滤行 grep -E "error|failure"(扩展正则或关系);grep '\baaa\b' 词边界
cut 按分隔符取段 cut -d' ' -f1 取第一列
awk 逐行分列加工 awk '{print $4}' 取第 4 列;awk 'length($0) > 79' 筛长行;awk -F ',' '{print $1}' 解析 CSV
sed 流式替换编辑 sed -i s/good/great/g file 原地全局替换;2,5d 删行

日志日期提取拆解(三段替换剥壳):

sed 's/.*\[//g;s/].*//g;s/:.*//g' # 去 [ 之前 → 去 ] 之后 → 去时间冒号段

退出码:0 成功,大于 0 错误;$? 只取上一条命令的退出码;管道表达式默认取最后一段的退出码。

五、容器隔离基础:命名空间七类

命名空间 隔离内容
PID 每个 namespace 内第一个进程都是 PID 1
Mount 挂载点
Network 路由表/接口/ARP 表(默认互不相通,需 veth/bridge 打通)
UTS 主机名/域名
IPC 进程间通信
User UID/GID(子命名空间内可以有 UID 0 的 root)
Time 系统时间

命名空间是容器技术的底层机制,第 5 章会再见面。

六、动手练习四连

练习 1:目录导航(navigation)

按序 cd /tmpcd ..cd ~cd ..×2 → pwd 确认到根 /cd - 回上次目录。考察 cd 全部变体。

练习 2:创建与删除(create_remove)

touch xmkdir contentmv x contenttouch content/ymkdir -p content/dir1/dir2/dir3(一次建多级)→ rm -rf content 整体删除。考察 -p/-rf 选项。

练习 3:复制与改名(copy)

touch /tmp/xcp x ~/cp x ymkdir filesmv x y filescp -r files copy_of_files(目录必须 -r)→ mv copy_of_files files2(改名)→ 清理。考察 cp/mv 二用。

练习 4:统计唯一 IP(uniqe_count)

sort ip_list | cut -d' ' -f1 | uniq -c | sort -n | tail -1

考察管道组合与 uniq 必须先排序的前提。

七、本章自测(原库陷阱题)

  1. 报磁盘满但 df -h 只有 20%,查什么?(df -i 查 inode)
  2. load average 是 CPU 使用率吗?(不是,含 R+D 状态排队)
  3. 哪个进程占用了某文件?(lsof <FILE> 拿 PID → kill)
  4. ext4 与 xfs 哪个支持缩减?(ext4)
  5. DNS 记录缓存多久?(TTL 秒数,期间不再询问)

小结

  • 存储:inode 耗尽是最隐蔽的"满";LVM 三层与 RAID 0/1/5/10 是容量规划基础。
  • 网络:netstat/lsof 双查端口,ip 系列看路由,traceroute 逐跳。
  • 性能:load average ≠ CPU%;慢系统套路 top→dstat→sar→iostat→strace。
  • 三剑客:grep 过滤、cut 切列、awk 加工、sed 替换。
  • 命名空间七类:PID/Mount/Network/UTS/IPC/User/Time——容器隔离的底层。

下一节预告:Linux 在手,开始写自动化脚本——Shell 脚本编程。


发布者: 作者: 灏天文库 转发
评论区 (0)
U