Skip to content
Happyboat's Blog
Go back

你需要多大的Swap?

Updated:
Edit page

Table of contents

Open Table of contents

结论:

在现代的Linux发行版中,假如你是一般的用户,不会手动更改默认系统休眠的设置,那么4-8G的swap就足够了。反之,会手动更改成休眠到磁盘,才需要大于等于内存大小。

针对前者,更推荐的做法是,不需要创建swap分区,进入系统后再创建swap文件即可。

具体原理是是这样的:

Linux 里常见的电源状态大致有两类:

可以查看系统支持的状态:

cat /sys/power/state

# freeze = 最浅的软件冻结
# mem    = 普通挂起,通常是 suspend
# disk   = 休眠到磁盘,也就是 hibernate

Swap 的核心作用:

当 RAM 不够,或者某些内存页长期不用时,把一部分内存内容临时放到磁盘。

主要对象是:

这些内容没有普通文件作为后备,不能像文件缓存那样直接丢掉。

而文件映射页不同:

所以 Swap 不是“扩展硬盘缓存”,而是给没有文件后备的内存提供退路。

不用 hibernate,就没必要 Swap = RAM

假设你的系统只是普通 suspend:

systemctl suspend → 写入 mem → 状态保留在内存 → 不需要把整块内存写入 Swap

这时 Swap 的作用主要是防止内存压力过大,而不是保存整机状态。

所以对于普通桌面用户:Swap 4GB 或 8GB 通常够

如果硬盘空间很紧张:2GB Swap 也不是不能用

只有你明确要使用 hibernate,才需要 Swap >= RAM

如果你明确要用:

systemctl hibernate # 让 Linux 进入休眠到磁盘状态、

或者自己修改相关的休眠设置,

那么 swap 就不只是“内存压力缓冲区”,而是“休眠镜像存放区”。

这时通常建议:Swap 大于等于 RAM。例如:16GB 内存 → 至少 16GB swap

严格说,休眠镜像不一定永远等于完整内存大小,因为系统可能会压缩或丢弃部分可重建页面。

但为了避免休眠失败,保守做法仍然是:Swap >= RAM

分区还是文件?

现在更推荐普通用户使用 swap file。

优点是结构清晰,传统工具支持好。缺点是后期不好改大小。

它本质上也是磁盘空间,只是以文件形式存在。优点是灵活。

所以普通桌面用户如果不用 hibernate:推荐 swap file。

如果明确要 hibernate:可以考虑 swap partition,或者认真配置 swap file 的 resume。

因为 swap file 也能用于 hibernate,但配置通常更麻烦。

因此安装系统时,普通用户不一定要单独划 swap 分区。

更灵活的做法是:安装时只分 EFI、/、可选 /home,进入系统后再根据需要创建 swap file。


Edit page

Previous Post
发行版到底选什么呢好难选