在日常的 Linux 运维与系统优化中,交换空间(Swap)扮演着至关重要的角色。它不仅是物理内存的辅助,还在系统稳定性与容错能力上发挥着关键作用。

一、什么是交换空间?

交换空间(Swap)是 Linux 操作系统用于扩展物理内存(RAM)的一种机制。当物理内存耗尽时,操作系统会将暂时不活跃的内存页面(memory pages)移动到硬盘上预留的区域(Swap 分区或 Swap 文件)中,从而为活跃进程释放出物理内存。

这种“换出”和“换入”的机制虽然牺牲了访问速度,但极大增强了系统在高内存压力下的稳定性。

二、Swap 的作用

  1. 内存扩展
    当物理内存不够用时,Swap 可以提供一个“备用内存池”,确保程序不会因瞬时内存压力而崩溃。

  2. 休眠支持(Hibernate)
    在系统休眠时,所有内存内容需要保存到磁盘,Swap 空间必须足够大以容纳全部 RAM 内容。

  3. 内存压力缓解
    有了 Swap,即使系统短时间内内存耗尽,也能避免直接触发 OOM Killer 杀死进程。

  4. 提供性能缓冲
    Swap 可以为系统管理员提供更多响应时间,在内存紧张时观察问题、调整配置或重启服务。

三、Swap 的使用代价

虽然 Swap 很重要,但它是建立在磁盘之上的,读写速度远不及内存。频繁使用 Swap 会导致系统响应变慢(尤其是在机械硬盘上)。

因此,Swap 更适合作为缓冲机制而非替代内存的常规方案。

四、创建交换空间

查看系统是否配置了交换空间:

swapon --show

使用fallocate程序创建一个交换文件:

sudo fallocate -l 32G /swapfile

如果提示fallocate: fallocate failed: Text file busy,则先关闭交换区:

sudo swapoff /swapfile

查看交换空间文件是否创建:

ls -lh /swapfile

让交换文件只能被root访问:

sudo chmod 600 /swapfile

使交换文件生效:

sudo mkswap /swapfile

让系统开始使用交换文件:

sudo swapon /swapfile

查看是否生效:

free -h

在这里插入图片描述

设置开机自动启用,使交换文件永久存在:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

五、Swap 相关调优

修改swappiness,swappiness决定内核多频繁使用 Swap。默认值是 60,范围是 0~100。值越低,系统越倾向于使用物理内存;值越高,系统更早开始使用 Swap。
查看当前值:

cat /proc/sys/vm/swappiness

临时修改为 10:

sudo sysctl vm.swappiness=10

永久修改方法,编辑配置文件:

sudo nano /etc/sysctl.conf

添加:

vm.swappiness = 80

七、总结

Swap 是 Linux 系统的重要组成部分,虽然不能代替物理内存,但在高内存负载、系统休眠、容错等方面都扮演着关键角色。合理配置 Swap,适度调优 swappiness,可以有效提升系统的稳定性与性能弹性。

如果你正在维护一台运行中、内存资源紧张的服务器,或在云计算环境中部署服务,了解并合理使用 Swap,将帮助你更好地掌控系统资源。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐