# Linux 上的交换空间

> 什么是交换空间、如何使用 free 和 swapon 查看它、如何添加交换文件，以及 vm.swappiness 的更改内容。

交换空间是 Linux 内核用作内存溢出区的磁盘空间：很少使用的内存页面会被移动到那里，以便让 RAM 保持空闲状态供活动工作使用。它可以是专用分区或交换文件，通过命令 free -h 和 swapon --show 显示。

## 为什么交换空间仍然有用

即使拥有充足的 RAM，交换空间也能让内核将闲置页面移出内存，并在内存溢出杀死进程（out-of-memory killer）之前提供一个缓冲区。然而，频繁且持续的交换意味着机器需要更多的 RAM 或更少的工作负载。

## 交换倾向性

内核设置 vm.swappiness（0-200，默认值为 60）会影响内核进行交换的积极性，以及与丢弃文件缓存相比的倾向。较低的值可以使应用程序内存更长时间地保留在 RAM 中。通过 'sysctl vm.swappiness' 读取该值，并在 /etc/sysctl.d/ 下的文件中永久设置。

## 交换文件

交换文件是通过创建、使用 mkswap 格式化、使用 swapon 启用并添加到 /etc/fstab 中以在重启后保持生效的。其权限必须为 600。

## 如何添加 2 GB 的交换文件

1. 创建文件：sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
2. 限制访问权限：sudo chmod 600 /swapfile
3. 格式化文件：sudo mkswap /swapfile
4. 启用文件：sudo swapon /swapfile
5. 使其永久生效：将行 '/swapfile none swap sw 0 0' 添加到 /etc/fstab
6. 检查：swapon --show 和 free -h

## 注意事项

- 在 Btrfs 上，交换文件需要进行特殊准备（禁用写时复制）；请遵循您的发行版指南。
- /etc/fstab 中的错误可能会阻止系统启动：请在重启前检查该行。

## 资料来源

- [swapon(8)](https://man7.org/linux/man-pages/man8/swapon.8.html)
- [mkswap(8)](https://man7.org/linux/man-pages/man8/mkswap.8.html)
- [free(1)](https://man7.org/linux/man-pages/man1/free.1.html)
- [/proc/sys/vm 的文档 (kernel.org)](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html)

最后更新: 2026-10-08
URL: https://raincleaner.eu/zh/wiki/linux/swap
