在 Ubuntu 上开启 Swap 主要推荐使用交换文件的方式,因为它方便管理,并且在需要调整大小时也更灵活。以下是完整的操作流程。
整个流程都在终端中操作。
bash# 1. 查看当前 Swap 状态,确认是否有现成配置
sudo swapon --show
free -h
1. 创建 Swap 文件
使用 fallocate 指令可以快速创建一个指定大小的文件,其中 4G 是文件大小。
bashsudo fallocate -l 4G /swapfile
如果 fallocate 命令不可用,可使用 dd 命令作为备选。
bashsudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
2. 设置文件权限
为确保安全,Swap 文件必须只能被 root 用户读写。
bashsudo chmod 600 /swapfile
3. 格式化为 Swap 空间
使用 mkswap 工具将文件设置为 Swap 格式。
bashsudo mkswap /swapfile
4. 立即启用 Swap 启用文件,让系统开始使用它。
bashsudo swapon /swapfile
5. 验证是否启用 再次检查,确认新的 Swap 空间已生效。
bashsudo swapon --show free -h
6. 设置开机自动挂载
为了避免重启后失效,需要将配置添加到系统文件/etc/fstab中。下面的命令会自动添加一行。
bashecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Ubuntu 默认的 swappiness 值为 60,代表当物理内存使用率达到约 40% 时,系统就会开始使用 Swap,对于内存充裕的机器来说可能过于积极。可以将其调低,让系统更优先使用物理内存。
通过以下命令查看当前值:
bashcat /proc/sys/vm/swappiness
建议设置为 10,这会让系统仅在内存紧张时才使用 Swap,对于桌面系统或服务器是不错的平衡点。
bash# 临时设置,立即生效,重启后失效
sudo sysctl vm.swappiness=10
# 永久设置,将配置写入系统文件
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
如果你想移除已配置的 Swap,可以先关闭它,然后删除文件和 fstab 中的配置行。
bashsudo swapoff /swapfile
sudo rm /swapfile
sudo vim /etc/fstab # 然后手动删除包含 '/swapfile' 的那一行
如果需要调整 Swap 大小,首先关闭当前文件,然后重新执行“创建到启用”的步骤即可。
bashsudo swapoff /swapfile
sudo rm /swapfile
# 重新执行上面的"创建"到"启用"的步骤即可
Swap 的大小没有一个放之四海而皆准的标准,可以根据你的物理内存总量和实际使用需求来参考:
| 物理内存大小 | 推荐 Swap 大小 | 适用场景说明 |
|---|---|---|
| ≤ 2GB | 内存的 1-2 倍 | 内存较小,Swap 作为重要的内存补充。 |
| 2GB - 8GB | 与内存大小相等 | 较为通用的配置,能在容量和性能间取得平衡。 |
| 8GB - 16GB | 4GB - 8GB | 物理内存相对充足,Swap 主要用于应对偶发的内存峰值。 |
| ≥ 16GB | 4GB - 8GB | 大内存设备,Swap 主要作为“保险丝”防止 OOM,无需过大。 |
| 需要休眠功能 | ≥ 物理内存大小 | 系统休眠时会将 RAM 内容全部写入 Swap,因此 Swap 容量必须足够大。 |
swappiness 值以减少对 SSD 的写入。本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!