TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

Ubuntu20.04交换空间扩容指南:手把手教你添加Swap分区

2025-08-01
/
0 评论
/
5 阅读
/
正在检测是否收录...
08/01


为什么需要Swap空间?

最近在折腾一台老旧的Ubuntu开发机时,频繁遇到内存不足导致进程被杀的情况。这让我意识到——是时候给系统加点"缓冲地带"了。Swap空间本质上是用硬盘空间模拟内存,当物理内存耗尽时,系统会将不活跃的内存页暂存到Swap中。虽然速度比不上物理内存,但总比直接崩溃强得多。

对于云服务器用户来说,Swap更是救命稻草。某次我的2GB内存小服务器跑MySQL时,就是因为没配置Swap,直接OOM(内存溢出)崩了服务。血泪教训告诉我们:没有Swap的Linux系统就像没备胎的汽车

实战:三步创建Swap文件

第一步:检查现有Swap状态

打开终端,先摸清家底:
bash sudo swapon --show free -h
如果显示"no swap"或只有很小的分区(通常<1GB),就需要扩容了。我的案例中,一台4GB内存的机器默认只配了1GB Swap,编译大型项目时根本不够用。

第二步:创建Swap文件的最佳实践

传统教程会直接让你用dd创建文件,但这里有个坑——稀疏文件可能带来性能问题。更推荐的做法是:

bash sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile
这里-l 4G表示创建4GB文件(建议值为物理内存的1-2倍)。用fallocatedd快十倍不止,而且不会真写数据,瞬间完成。

关键细节
- 文件位置最好放在SSD根目录(HDD用户建议放最快磁盘)
- 避免放在已加密的目录(如/home)影响性能
- 大内存机器(32G+)可以适当减少Swap比例

第三步:启用并永久生效

激活Swap文件:
bash sudo swapon /swapfile

然后编辑/etc/fstab添加:
/swapfile none swap sw 0 0
记得用sudo nano /etc/fstab,别用图形化编辑器,权限容易出问题。

高级调优技巧

Swappiness参数优化

默认值60对于桌面还行,但服务器建议调低:
bash echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
这个值(0-100)控制系统使用Swap的积极程度。数据库服务器可以设为5-10,图形工作站保持30-60。

优先级设置(多Swap时)

如果有多个Swap设备,可以设置优先级:
bash sudo swapon -p 100 /swapfile
数字越大优先级越高,系统会优先使用高优先级的Swap空间。

避坑指南

  1. 文件权限错误:务必确保chmod 600 /swapfile,否则系统会拒绝使用

  2. 休眠支持问题:如果要启用休眠,需要Swap大于内存大小,且需修改/etc/initramfs-tools/conf.d/resume

  3. Btrfs文件系统:需要额外参数sudo mkswap -f /swapfile

  4. 云服务商限制:某些VPS(如AWS某些实例)默认禁用Swap,需修改云初始化配置

性能测试对比

在我的ThinkPad T480(8G内存+SSD)上测试:
- 无Swap时:编译Linux内核到85%报OOM
- 2G Swap:编译完成,但出现明显卡顿
- 4G Swap:流畅完成,swappiness=10时Swap使用率仅15%

建议用vmstat 1监控si/so(Swap in/out)值,如果持续过高,说明需要加物理内存了。

结语

合理配置Swap就像给系统买了份保险——平时用不上,关键时刻能救命。特别是对于预算有限的学生开发者或小型服务器,Swap的成本效益比极高。完成配置后,不妨用htop观察内存使用情况,你会发现系统变得更加游刃有余了。

小贴士:如果后期升级了物理内存,记得用sudo swapoff /swapfile && sudo rm /swapfile清理不必要的Swap文件,避免浪费SSD寿命。

内存优化Linux系统管理Ubuntu 20.04Swap交换空间swapfile创建
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/34489/(转载时请注明本文出处及文章链接)

评论 (0)