个人技术空间

Linux 设置swap虚拟内存

# 创建一个 2G 的文件(根据实际需求选择创建的文件大小)
dd if=/dev/zero of=/swapfile bs=1M count=2048
# 或者使用更快的 fallocate
# fallocate -l 2G /swapfile

#设置权限
chmod 0600 /swapfile

#将文件格式化为 Swap 格式
mkswap /swapfile

#写入开机启动,编辑 fstab,追加一行
vim /etc/fstab
#追加一行
/swapfile swap swap defaults 0 0

#启用 fstab 中的 所有swap
swapon -a

调整内核swappiness参数
在大多数云服务器中,会默认设置swappiness为 0
这种情况下,即使开启了虚拟内存,内核也不会使用

root@linux:~# sysctl -p
vm.swappiness = 0

修改方式

#打开sysctl配置
vim /etc/sysctl.conf文件
#将vm.swappiness的值改为 60(如果没有则添加一行)
vm.swappiness = 60
#设置生效
sysctl -p

swappiness取值范围及其含义 (0 - 100/200)

0:在旧版本内核(3.5 之前)中,0 表示尽可能不使用 Swap。在现代内核中,这表示除非内存面临 OOM (Out Of Memory) 风险,否则绝不使用 Swap。
10 - 30:推荐用于 桌面系统或 SSD 硬盘。系统会优先使用 RAM,保持极高的响应速度,只有在压力较大时才动用磁盘。
60:默认值。这是一个折中方案,适用于大多数通用服务器。
100:内核会以相等的概率尝试回收文件缓存和匿名内存。
150 - 200:在 5.8+ 内核中,如果使用了 zRAM(内存压缩),swappiness 可以设置得更高,因为压缩内存比读写磁盘快得多。
CreateBy:2026-02-21,UpdateBy:2026-02-22
版权声明:署名-非商业性使用-禁止演绎 3.0 未本地化版本 (CC BY-NC-ND 3.0)
留言板开发中,站长邮箱:admin@aliencn.net。欢迎交流。