Rain WikiWindows · Linux · Android

Linux 上的交换空间

概念所有 Linux 发行版可安全删除: 否

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

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

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

2交换倾向性

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

3交换文件

交换文件是通过创建、使用 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 中的错误可能会阻止系统启动:请在重启前检查该行。

资料来源

  1. swapon(8) man7.org
  2. mkswap(8) man7.org
  3. free(1) man7.org
  4. /proc/sys/vm 的文档 (kernel.org) kernel.org

最后审核: