该终端截图展示了创建和启用 4GB 交换文件(swapfile)的过程,使用了 、、 和 命令,并通过 查看内存和交换空间的使用情况。 (由 AI 生成标题)

Linux Swap 添加、删除、调整大小及优先级:让你的系统如虎添翼

购置了一台1核1G的低配VPS,原计划部署WAF,却因内存不足启动失败。本文分享如何通过创建Swap分区,突破小内存VPS的瓶颈,成功部署测试环境并提升系统稳定性。Swap利用硬盘扩展RAM,避免崩溃、支持多任务及大型应用。文中详解配置步骤(以Ubuntu为例)、优先级调整、停用删除方法及注意事项,适合面临内存困境的用户参考。合理使用Swap,不仅能应急,还能优化性能,但需注意适度分配及安全。

前言

购入了一台1核1G的低配VPS,原本计划部署WAF,却因内存捉襟见肘而无法顺利启动。本文将分享如何在小内存VPS上,通过创建Swap分区巧妙地突破内存瓶颈,成功部署应用(测试环境)并提升系统稳定性的实战经验,希望能为同样身处内存困境的朋友们提供一些参考 :handshake:


Swap简介

在Linux系统中,内存管理是保证系统流畅运行的关键。你是否曾遭遇过系统卡顿,甚至在运行大型程序时意外崩溃的窘境? :disappointed_relieved: 这很可能源于内存不足。Swap,作为Linux内核中一项重要的内存管理技术,能有效缓解此类问题。本文将由浅入深地剖析Linux Swap的概念、作用、配置方法以及使用注意事项。

Swap(交换空间)本质上是硬盘上预留的一块特殊区域,它被巧妙地用来模拟物理内存(RAM)。 当RAM空间告急时,系统会将暂时不常用的数据“转移”到Swap分区,从而释放宝贵的内存资源,保障关键应用程序的正常运行。 形象地说,Swap就像一个“内存缓冲区”,在系统面临内存压力时,挺身而出,发挥缓冲作用。 :shield:


为何要启用 Swap?它的价值远不止“救急”

你或许会认为,如果RAM足够大,似乎就没有必要使用Swap了。 事实上,Swap的功能和价值远不止于“应急”。 它能为系统带来诸多益处:

  • 避免系统崩溃的“最后防线”:当RAM完全耗尽,且没有Swap可用时,系统很可能会直接停止响应,陷入瘫痪。 Swap的介入,可以暂时接管部分数据,维持系统的基本运行,为我们争取宝贵的排错时间。 :hourglass_flowing_sand:
  • 提升多任务并发处理能力:Swap的存在,使得系统能够承受更高的并发压力,即使应用程序的内存需求超过了RAM的物理上限,也能保持相对稳定。 :person_juggling:
  • 为大型应用提供“虚拟内存扩展”:对于视频编辑软件、虚拟机等资源密集型应用而言,Swap可以提供额外的内存支持,缓解系统卡顿,提升使用体验。 :clapper:

需要特别注意的是,Swap并非越多越好。 毕竟,硬盘的读写速度远低于RAM,依赖Swap会导致系统性能急剧下降。 因此,Swap应该视为一种紧急预案,而非主要依赖的资源。 适当地配置Swap,才能在关键时刻发挥它的最大价值。 :+1:


配置 Swap 的步骤

以下以Ubuntu为例,演示如何添加swap。其他发行版的操作类似:

检测现有 Swap

执行以下命令,检查当前系统是否存在swap:

swapon --show

若无输出,则表示没有swap。反之,记录现有配置,以避免潜在冲突。 :memo:

创建 Swap 文件

Swap可采用独立分区或文件形式。 为方便起见,推荐使用文件。 假设需要创建4GB的swap,执行:

sudo fallocate -l 4G /swapfile

该命令将在根目录创建名为/swapfile的4GB文件。 文件大小建议为RAM的1-2倍,具体取决于实际需求和磁盘空间。 :floppy_disk:

设置权限

为确保安全性,限制文件权限,仅允许root用户访问:

sudo chmod 600 /swapfile

标记为 Swap

通知系统,该文件将被用作swap空间:

sudo mkswap /swapfile

启用 Swap

启动swap:

sudo swapon /swapfile

永久生效

若不进行设置,重启后swap将失效。编辑/etc/fstab文件:

sudo nano /etc/fstab

在文件末尾添加一行:

/swapfile none swap sw 0 0

保存并退出。 此配置将在下次启动时自动启用swap。 :gear:

验证配置

最后,验证swap是否正常工作:

swapon --show
free -h

swap行显示数据,则配置成功。最后附上截图:

该终端截图展示了创建和启用 4GB 交换文件(swapfile)的过程,使用了 、、 和 命令,并通过 查看内存和交换空间的使用情况。 (由 AI 生成标题)

Linux Swap 优先级调整

:mag: 什么是 Swap 优先级?

Swap 优先级通过 vm.swappiness 参数控制(范围 0-100),该值决定系统使用物理内存和Swap空间的倾向性

  • 高值(60-100):积极使用Swap,适合普通桌面环境
  • 低值(0-30):尽量避免Swap,适合数据库/实时系统
  • 极端值 0:内存耗尽前禁用Swap(但不会完全阻止)

:gear: 查看当前优先级

# 查看当前 swappiness 值
cat /proc/sys/vm/swappiness
# 典型输出:60(默认值)
这<binary data, 1 bytes><binary data, 1 bytes><binary data, 1 bytes>张截图展示了在终端中使用  命令查看  文件的内容,结果显示为 60。 (由 AI 生成标题)

:hammer_and_wrench: 调整优先级方法

临时修改(立即生效)

# 设置为保守模式(推荐数据库服务器) 
sudo sysctl vm.swappiness=10 
# 激进模式(老旧设备适用)
 sudo sysctl vm.swappiness=80

永久修改

# 编辑 sysctl 配置文件
sudo nano /etc/sysctl.conf

# 在文件末尾添加(示例设为20)
vm.swappiness=20

# 使配置立即生效(无需重启)
sudo sysctl -p

停用与删除 Swap

# 停用 Swap
sudo swapoff /swapfile

# 删除配置(编辑 /etc/fstab 删除对应行)
sudo sed -i '/\/swapfile/d' /etc/fstab

# 彻底删除文件
sudo rm -f /swapfile

# 验证清除结果
swapon --show  # 无输出表示成功

Swap 使用须知

配置swap并不复杂,但使用时需注意以下事项:

  • 适度分配:过大的swap不仅浪费磁盘空间,还会急剧降低系统性能。 仅需满足基本需求,避免过度分配,可以参考下这个表格:
内存 (Memory)Swap 大小 (Swap Size)备注 (Remarks)
≤ 4GB内存的 1~2 倍 (2 times the Memory)如:2GB 内存 → 4GB Swap,覆盖休眠需求 (e.g. 2GB Memory → 4GB Swap, covers hibernation needs)
4-64GB内存的 1-1.5 倍 (1-1.5 times the Memory)根据经验不要超过8g比较好
≥ 64GB4~16GB仅应急 (Emergency use only)
  • 选择存储介质: 优先将swap放置在SSD上。 机械硬盘速度较慢,会降低swap的效果。 :zap:
  • 定期监控: 使用free -htop命令监控swap的使用情况。 若swap长期处于高负荷状态,可能需要考虑增加RAM。 :bar_chart:
  • 安全至上: Swap可能存储敏感数据,如密码。 建议在关机时清空swap,或对其进行加密,防止数据泄露。 :lock:

总结

至此,相信你已对swap有了了解。合理利用swap,可增强Linux系统的稳定性和性能,尤其是在内存受限的情况下,swap可作为重要的保障措施。无论你是系统管理员还是普通用户,配置swap都将带来显著的收益:tada:

希望文章对你有所帮助,有疑问或心得,欢迎留言讨论或者加入论坛我们一起讨论更多 linux运维 技巧。

版权声明 © 2024 — Now BOBO BLOG:原创文章受著作权法保护,请尊重他人劳动成果。未经作者书面允许,不得以任何形式复制其内容、摘编、转载,侵权必究。

订阅评论
提醒
guest
0 评论
最新
最旧 最多投票
内联反馈
查看所有评论
error: 对于文章内容被恶意复制,现在已经关闭复制功能。如需复制文章内代码,请点击Exteran(新窗口打开)