Linux内核基础:理解系统核心
Linux内核基础:理解系统核心
什么是Linux内核
Linux内核是操作系统的核心组件,负责管理系统硬件资源并为上层应用程序提供系统调用接口。它运行在特权模式(Ring 0),直接与硬件交互。
内核架构
Linux采用宏内核(Monolithic Kernel)架构,主要包含以下子系统:
1. 进程管理
负责进程的创建、调度和销毁。Linux使用CFS(Completely Fair Scheduler)调度器:
# 查看当前调度策略
chrt -p $(pgrep -n sshd)
# 查看调度器信息
cat /proc/schedstat
2. 内存管理
管理物理内存和虚拟内存,包括页面置换、内存映射等:
# 查看内存信息
cat /proc/meminfo
# 查看虚拟内存统计
vmstat 1 5
3. 文件系统
支持ext4、XFS、Btrfs等多种文件系统:
# 查看支持的文件系统
cat /proc/filesystems
# 查看挂载信息
mount | head -5
4. 网络协议栈
实现TCP/IP协议族,处理网络数据包的收发:
# 查看网络统计
cat /proc/net/snmp | head -4
内核模块管理
内核模块可以在运行时动态加载和卸载:
# 查看已加载模块
lsmod | head -10
# 查看模块详细信息
modinfo ext4
# 加载模块
sudo modprobe br_netfilter
# 卸载模块
sudo modprobe -r br_netfilter
# 开机自动加载模块
echo "br_netfilter" | sudo tee /etc/modules-load.d/k8s.conf
系统调用
系统调用是用户空间与内核空间的桥梁:
# 查看系统调用统计
strace -c ls /dev/null
# 跟踪进程系统调用
strace -e trace=network ping -c 2 8.8.8.8
/proc虚拟文件系统
/proc是内核暴露的虚拟文件系统,提供系统运行时信息:
# 查看CPU信息
cat /proc/cpuinfo | grep "model name" | head -1
# 查看系统运行时间
cat /proc/uptime
# 查看中断统计
cat /proc/interrupts | head -5
# 查看内核参数
cat /proc/sys/net/ipv4/ip_forward
内核参数调优
通过sysctl动态调整内核参数:
# 查看所有参数
sysctl -a | wc -l
# 查看网络相关参数
sysctl -a | grep net.ipv4
# 临时修改参数
sudo sysctl -w net.ipv4.ip_forward=1
# 永久修改
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
内核版本管理
# 查看内核版本
uname -r
# 查看所有可用内核
dpkg --list | grep linux-image # Debian/Ubuntu
rpm -qa | grep kernel # CentOS/RHEL
# 查看内核编译配置
cat /boot/config-$(uname -r) | head -20
实践:内核性能调优
# 优化文件描述符限制
echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf
# 优化TCP参数
cat >> /etc/sysctl.conf << EOF
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 32768
net.ipv4.tcp_tw_reuse = 1
EOF
sudo sysctl -p
总结
理解Linux内核的工作原理,有助于更好地进行系统调优和故障排查。内核模块、系统调用和/proc文件系统是运维工程师必须掌握的核心知识。