
在
Linux 系统中,当
物理内存(RAM)不足时,
swap 机制作为
虚拟内存的核心,通过将磁盘空间模拟为内存扩展,保障系统稳定运行。本文以简洁语言解析 Swap 的核心知识与实操方法。
虚拟内存通过硬件 MMU 与
操作系统协作,为进程提供独立的虚拟地址空间,实现三大价值:
- 内存隔离:进程间内存互不干扰,提升安全性;
- 地址扩展:突破物理内存限制,支持超大程序运行;
- 共享优化:通过共享库和内存映射减少重复占用。
Linux 采用
分页机制管理内存,以 4KB 标准页为单位。当进程访问不在物理内存的页时,触发
缺页中断,内核从 Swap 或磁盘加载数据。
Swap 是磁盘上的专用区域,当物理内存不足时:
- 页面选择:内核通过 LRU 算法(最近最少使用)挑选冷数据页;
- 换出操作:将选中页写入 Swap,标记为 “已换出”;
- 换入操作:进程再次访问时,从 Swap 读回物理内存。
| 形式 |
创建命令示例 |
适用场景 |
特点 |
| 交换分区 |
mkswap /dev/sdb2 |
长期运行服务器 |
连续 IO 性能优 |
| 交换文件 |
fallocate -l 4G /swapfile |
云主机 / 容器 |
灵活扩容,动态调整 |
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile && sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h:快速查看内存 / Swap 使用概况;
vmstat 1 5:实时监控换入(si)/ 换出(so)速率;
sar -W 1 3:分析历史 Swap 活动。
- Swap 使用率过高:用
top -o %MEM排查内存泄漏进程,优化应用或增加物理内存;
- 性能下降:将 Swap 迁移至 SSD,或启用 zswap 内存压缩;
- 容器环境:Kubernetes 需在 kubelet 配置中开启
failSwapOn: false。
Swap 是 Linux 内存管理的 “安全气囊”,但需理性使用:优先优化应用和增加物理内存,通过监控及时发现异常。掌握 Swap 配置与调优,是保障系统稳定性的关键技能。