马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
内存吃满,服务开始被 OOM Killer 杀掉,第一反应就是加 Swap。可 Ubuntu 从 18.04 起默认装的已经不是 Swap 分区,而是一个 Swap 文件,两者的调整方式完全不同。本文把两种情况的分工讲清楚,并给出扩容的完整步骤。
Swap 是什么,两种形态有啥区别
Swap 是磁盘上专门划出的一块空间,物理内存不够时内核把暂时不用的页换到这里,腾出 RAM 给正在跑的任务。本质上它都是「虚拟内存的后备区」,差别只在承载形式:
- Swap 分区:单独划一块磁盘空间、用
mkswap 标成 swap 类型。传统做法,开销略低。
- Swap 文件:在普通文件系统里放一个大文件(默认路径
/swapfile)。Ubuntu 18.04 以后默认就是这个,灵活、好调大小、不好坏盘。
先看当前系统用的是哪种:
swapon --show
输出里 TYPE 列是 file 就是文件,partition 就是分区:
# swap 文件
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
# swap 分区
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 4G 0B -2
顺带一提:如果要做休眠(suspend to disk),Swap 分区更可靠;日常内存扩容用文件就够了。
方案一:调整 Swap 文件
假设要把 swap 从 4G 扩到 8G,流程是「关旧 — 删旧 — 建新 — 启用 — 写 fstab」:
1. 关闭并删除旧 swap 文件
sudo swapoff /swapfile
sudo rm /swapfile
2. 创建新 swap 文件
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
bs=1G count=8 表示写 8 个 1GB 的块,也就是 8G。也可以用 fallocate -l 8G /swapfile,速度更快且不真正占用空间(文件系统支持时)。
3. 收紧权限
sudo chmod 600 /swapfile
这步别省。swap 文件里可能残留内存页内容,权限放太开等于把数据裸奔出去。
4. 格式化并启用
sudo mkswap /swapfile
sudo swapon /swapfile
5. 写进 fstab 保证重启后还在
sudo vim /etc/fstab
追加一行(原来那行 /swapfile 要删掉或注释掉,否则会重复挂载):
/swapfile none swap sw 0 0
保存退出后跑 sudo mount -a 验证没写错。
6. 验证
swapon --show
free -h
方案二:调整 Swap 分区
老系统或者装系统时手动分了 swap 分区的,得动分区表。注意:改分区表是有数据风险的,动之前一定先备份。
sudo swapoff -a
fdisk -l
找到 swap 所在的分区(比如 /dev/nvme0n1p12),先停用,然后删掉旧分区、新建一个指定大小的分区,再:
sudo mkswap /dev/nvme0n1p12
sudo swapon /dev/nvme0n1p12
最后同样编辑 /etc/fstab,把原来的那行替换成新分区:
/dev/nvme0n1p12 none swap sw 0 0
再用 swapon --show 和 free -h 确认。
要不要调 swappiness
Swap 启用不等于立刻用。内核换页积极不积极,由 swappiness 控制(0–100,默认 60,值越大越早把内存换出去):
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
想永久生效就写进 /etc/sysctl.conf。数据库服务器建议调低(10 以内),避免 MySQL / PostgreSQL 的热数据被无谓地换出去,反而拖慢;桌面或内存紧张的小机器可以适当调高。
踩坑清单
- 改了文件大小却没换路径:直接
dd 覆盖同一个 /swapfile 而没先 swapoff,写入会失败。
- fstab 里两行 swap:旧的没删,重启后
swapon 报错或分配异常。
- 权限没改成 600:部分系统直接拒绝启用,或者留隐私隐患。
- swap 比内存还大:一般配 1–2 倍内存就够了,配 8 倍纯属浪费磁盘,而且会掩盖真正的内存泄漏问题。
- 把 swap 放根目录分区:根目录本来就紧张,swap 一写满整个磁盘直接服务全挂,最好放独立卷或数据盘。
Swap 只是缓冲,不是内存。扩容能续命,真要根治还得查谁在吃内存。
qidao123.com企服评测-应用市场 编辑提示 |