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 的交换文件
- 创建文件:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 - 限制访问权限:
sudo chmod 600 /swapfile - 格式化文件:
sudo mkswap /swapfile - 启用文件:
sudo swapon /swapfile - 使其永久生效:将行 '/swapfile none swap sw 0 0' 添加到
/etc/fstab - 检查:
swapon --show和free -h
注意事项
- 在 Btrfs 上,交换文件需要进行特殊准备(禁用写时复制);请遵循您的发行版指南。
/etc/fstab中的错误可能会阻止系统启动:请在重启前检查该行。
相关文章
- df (磁盘剩余空间)如何读取 df 的输出,为什么普通用户在 Avail 降为零之前 Use% 就可能达到 100%,以及如何使用 df -i 检查 inode。
- systemd 单元与 systemctl什么是 systemd 单元、常见的单元类型,以及如何使用 systemctl 启动、停止、启用和检查服务。
- 使用 du 和 ncdu 查看磁盘使用情况如何使用 du 和交互式的 ncdu 查找 Linux 磁盘中被占满的内容,并提供保留在单个文件系统中的选项。
资料来源
- swapon(8) man7.org
- mkswap(8) man7.org
- free(1) man7.org
- /proc/sys/vm 的文档 (kernel.org) kernel.org
最后审核: