CH-J Server Manager通过 SSH 管理服务器
菜单
全部指南与文章 →

如何在 Ubuntu 和 Debian 上创建或扩大交换空间

检查内存使用情况,创建交换文件,设置重启后继续使用,并安全调整大小,同时了解 Btrfs 和 zram 的注意事项。

检查是否需要更多交换空间

交换空间在内存不足时为系统提供额外空间,但速度远低于 RAM。请查看 available 列,而非 free 列,因为 Linux 会将未使用的内存用作缓存,并在需要时释放。持续发生交换活动意味着服务器需要更多内存或更少进程,增加交换空间无法解决这个问题。

free -h
swapon --show
vmstat 1 5

创建交换文件

先检查磁盘可用空间,再创建文件、限制权限、格式化并启用。该文件必须仅允许 root 读取。

df -h /
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show

重启后继续使用

先备份 /etc/fstab,再向其中添加一行。fstab 中的错误可能导致系统无法正常启动,因此请在重启前验证该文件。

sudo cp /etc/fstab /etc/fstab.backup
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo findmnt --verify

调整交换文件大小

停用交换空间前,请确保其中的内容能放入可用内存:swapoff 会将内容移回 RAM,若内存容纳不下,进程可能被终止。然后停用该文件,以新的大小重新创建,再启用。只要路径不变,fstab 中的那一行就无需更改。

free -h
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Btrfs 和 zram

在 Btrfs 上,交换文件需要特殊处理:请使用 btrfs filesystem mkswapfile,并注意包含交换文件的子卷不能纳入快照。zram 与交换文件不同,它将压缩后的内存页保存在 RAM 中,而非磁盘上,且由自己的服务管理,不通过 fstab 管理。

CH-J Server Manager 中的交换空间

System Monitor 显示 RAM 使用分布、RAM 和交换空间的历史记录,以及每个交换区域的类型、优先级和活动情况。拥有 root 或 sudo 权限时,可以在 ext2/3/4、XFS、Btrfs 和 F2FS 上,创建、启用、停用、调整大小和删除位于 /swapfile*、/swap/<name> 或 /var/lib/swap/<name> 的交换文件,大小范围为 64 MiB 至 64 GiB。若交换空间中的内容无法放入内存,应用程序会拒绝停用,并会在每次更改前备份 /etc/fstab。此处 zram 和 zswap 仅供查看,无法修改。

详细文档

man: swapon →

man: mkswap →

生物识别解锁与安全 →