创建交换空间(解决ubuntu编译大文件内存不足导致虚拟机卡死)
在日常的 Linux 运维与系统优化中,交换空间(Swap)扮演着至关重要的角色。它不仅是物理内存的辅助,还在系统稳定性与容错能力上发挥着关键作用。
一、什么是交换空间?
交换空间(Swap)是 Linux 操作系统用于扩展物理内存(RAM)的一种机制。当物理内存耗尽时,操作系统会将暂时不活跃的内存页面(memory pages)移动到硬盘上预留的区域(Swap 分区或 Swap 文件)中,从而为活跃进程释放出物理内存。
这种“换出”和“换入”的机制虽然牺牲了访问速度,但极大增强了系统在高内存压力下的稳定性。
二、Swap 的作用
-
内存扩展
当物理内存不够用时,Swap 可以提供一个“备用内存池”,确保程序不会因瞬时内存压力而崩溃。 -
休眠支持(Hibernate)
在系统休眠时,所有内存内容需要保存到磁盘,Swap 空间必须足够大以容纳全部 RAM 内容。 -
内存压力缓解
有了 Swap,即使系统短时间内内存耗尽,也能避免直接触发 OOM Killer 杀死进程。 -
提供性能缓冲
Swap 可以为系统管理员提供更多响应时间,在内存紧张时观察问题、调整配置或重启服务。
三、Swap 的使用代价
虽然 Swap 很重要,但它是建立在磁盘之上的,读写速度远不及内存。频繁使用 Swap 会导致系统响应变慢(尤其是在机械硬盘上)。
因此,Swap 更适合作为缓冲机制而非替代内存的常规方案。
四、创建交换空间
查看系统是否配置了交换空间:
swapon --show
使用fallocate程序创建一个交换文件:
sudo fallocate -l 32G /swapfile
如果提示fallocate: fallocate failed: Text file busy,则先关闭交换区:
sudo swapoff /swapfile
查看交换空间文件是否创建:
ls -lh /swapfile
让交换文件只能被root访问:
sudo chmod 600 /swapfile
使交换文件生效:
sudo mkswap /swapfile
让系统开始使用交换文件:
sudo swapon /swapfile
查看是否生效:
free -h

设置开机自动启用,使交换文件永久存在:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
五、Swap 相关调优
修改swappiness,swappiness决定内核多频繁使用 Swap。默认值是 60,范围是 0~100。值越低,系统越倾向于使用物理内存;值越高,系统更早开始使用 Swap。
查看当前值:
cat /proc/sys/vm/swappiness
临时修改为 10:
sudo sysctl vm.swappiness=10
永久修改方法,编辑配置文件:
sudo nano /etc/sysctl.conf
添加:
vm.swappiness = 80
七、总结
Swap 是 Linux 系统的重要组成部分,虽然不能代替物理内存,但在高内存负载、系统休眠、容错等方面都扮演着关键角色。合理配置 Swap,适度调优 swappiness,可以有效提升系统的稳定性与性能弹性。
如果你正在维护一台运行中、内存资源紧张的服务器,或在云计算环境中部署服务,了解并合理使用 Swap,将帮助你更好地掌控系统资源。
更多推荐
所有评论(0)