Linux swap

作者admin

1月 12, 2026

在 Linux 里,swap(交换空间)指的是一种虚拟内存机制。

简单说一句话:

👉 当内存(RAM)不够用时,Linux 会把一部分暂时不用的数据挪到磁盘上的 swap 空间里。

  • RAM(内存):速度快,但容量有限
  • Swap(交换空间):在硬盘/SSD 上,速度慢,但容量相对大

Linux 会把暂时不活跃的内存页写入 swap,这样可以:

  • 给当前活跃程序腾出内存
  • 避免因为内存耗尽而直接把程序杀掉(OOM)

Swap 的核心作用

  1. 扩展虚拟内存:允许系统运行超出物理内存大小的应用程序。
  2. 防止 OOM(Out of Memory)崩溃:当内存耗尽时,Linux 会触发 OOM Killer 机制随机杀死进程。适当的 Swap 可以提供缓冲,避免系统直接崩溃。
  3. 内存页换出(Paging Out):将物理内存中不常用的冷数据(Inactive/Idle Pages)转移到磁盘,腾出空间给热数据(Active Pages)。
  4. 支持系统休眠(Hibernate):休眠时,系统需要将整个物理内存的状态保存到非易失性存储中,通常就依赖 Swap 分区。

Swap 的存在形式

Swap 分区(Swap Partition)

  • 定义:硬盘上独立划分出来的专门用于交换的磁盘分区。
  • 特点:性能较好,适合传统的机械硬盘或固态硬盘,结构简单、稳定。

Swap 文件

  • 定义:文件系统根目录下的一个特定大小的文件(例如 /swapfile)。
  • 特点:灵活性极高,不需要重新分区即可随时创建、调整大小或删除。现代 Linux 发行版(如 Ubuntu)默认采用 Swap 文件。

ZRAM / ZSWAP(内存压缩交换,现代特性)

  • 定义:将一部分 RAM 划出来作为压缩交换空间。
  • 特点:数据写入时先在内存中进行压缩,极大地减少了对慢速磁盘的读写,特别适合内存较小、无物理 Swap 或需要提升响应速度的嵌入式设备和笔记本。

Swap 的优缺点

优点:

  • 防止内存爆掉导致系统崩溃
  • 对服务器、长时间运行的系统很重要

缺点:

  • 磁盘比内存慢得多
  • swap 用多了,系统会明显变卡

核心参数:Swappiness

swappiness 是控制 Linux 内核倾向于使用 Swap 程度的核心内核参数,取值范围为 0 到 100。

  • 值较低(如 10 或更低):内核会尽量少使用 Swap,尽可能将数据保留在物理内存中,只有在物理内存快耗尽时才使用 Swap。
  • 值较高(如 60,默认值):内核会积极地将内存页移到 Swap 中,以保持更多的空闲物理内存。
  • 值为 0:在现代内核中,代表极少使用 Swap(早期内核中代表完全禁用)。

调优建议:对于拥有大内存(如 32GB 及以上)且运行数据库等高性能服务的服务器,通常会将 swappiness 调低(如 10),以避免不必要的磁盘 I/O 拖慢系统响应。

可以通过以下命令查看当前的 swappiness:

cat /proc/sys/vm/swappiness

swap 的常用命令

1.查看当前的 Swap 使用情况

free -h # 查看内存和 swap 使用情况
swapon –show # 查看当前启用的 swap

2. 创建并启用一个 Swap 文件(以 2GB 为例)

# 1. 创建一个 2GB 的空文件
sudo fallocate -l 2G /swapfile
# 或者使用 dd 命令:sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# 2. 设置严格的权限(仅 root 可读写,保障安全)
sudo chmod 600 /swapfile

# 3. 将文件格式化为 Swap 格式
sudo mkswap /swapfile

# 4. 立即激活该 Swap 文件
sudo swapon /swapfile

# 5. 配置开机自动挂载(将配置写入 /etc/fstab)
echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab

3. 关闭 Swap

# 关闭指定的 Swap 文件或分区
sudo swapoff /swapfile

Swap 的大小应该设置多少?

关于 Swap 的大小,官方和社区并没有绝对统一的标准,通常取决于物理内存大小以及计算机的用途:

物理内存 (RAM) 建议的 Swap 大小(常规参考) 备注
小于 2 GB RAM 的 2 倍 物理内存较小,需要更多 Swap 补充
2 GB ~ 8 GB 等于 RAM 大小 满足常规日常办公或轻量服务器需求
8 GB ~ 32 GB 等于或略小于 RAM(如 4GB – 8GB) 视是否有休眠需求而定(休眠需要 Swap $\ge$ RAM)
大于 32 GB 4 GB ~ 8 GB 足够 大内存机器基本不需要过大的 Swap,除非用于休眠

总结与注意事项

性能瓶颈:磁盘(无论是 HDD 还是 SSD)的读写速度远慢于内存(RAM)。当系统频繁发生 Swap 进出(称为 Swap Thrashing/颠簸)时,系统性能会急剧下降,表现为卡顿、响应迟缓。

固态硬盘(SSD)磨损:虽然频繁写入 Swap 会产生一定的写入量,但现代 SSD 的寿命和写入擦除次数已经非常高,通常无需过分担心寿命问题。

最佳实践:如果应用对延迟极度敏感(如高频交易服务器、实时数据库),有些管理员会选择完全关闭 Swap;但对于绝大多数通用服务器和个人电脑,配置适量的 Swap 能够提供一道安全防线。

作者 admin

百度广告效果展示