news 2026/7/16 11:47:26

Ubuntu系统Swap分区配置与优化指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu系统Swap分区配置与优化指南

1. 为什么需要Swap交换分区?

在Ubuntu系统中,Swap交换分区扮演着虚拟内存的角色。当物理内存(RAM)耗尽时,系统会将部分暂时不用的内存数据转移到Swap空间,从而避免程序崩溃或系统卡死。虽然Swap的读写速度远低于物理内存,但它确实能在关键时刻救你一命。

我曾在开发一个机器学习项目时,由于数据集过大导致16GB内存瞬间爆满。如果没有提前配置Swap分区,整个系统就会直接卡死,所有未保存的工作成果都将付诸东流。那次经历让我深刻认识到合理配置Swap的重要性。

2. 检查现有Swap配置

在开始设置之前,我们需要先检查系统当前的Swap使用情况。打开终端(Ctrl+Alt+T),输入以下命令:

free -h

输出结果类似这样:

total used free shared buff/cache available Mem: 15Gi 3.2Gi 9.8Gi 356Mi 2.0Gi 11Gi Swap: 2.0Gi 0B 2.0Gi

如果Swap行显示为0,或者你发现现有的Swap空间不足(比如只有1-2GB),那么就需要考虑增加Swap空间了。根据我的经验,对于普通桌面使用,Swap大小建议设置为物理内存的1-2倍;对于服务器环境,可能需要更大。

3. 创建Swap文件的详细步骤

3.1 确定Swap文件大小

首先需要决定Swap文件的大小。这里我以创建4GB Swap文件为例:

sudo fallocate -l 4G /swapfile

注意:如果你使用的是较旧的文件系统(如ext3),fallocate可能会失败。这时可以使用dd命令替代:

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

3.2 设置正确的文件权限

Swap文件需要严格的权限设置,否则会有安全隐患:

sudo chmod 600 /swapfile sudo chown root:root /swapfile

3.3 格式化Swap文件

将文件格式化为Swap格式:

sudo mkswap /swapfile

你应该会看到类似这样的输出:

Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) no label, UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

3.4 启用Swap文件

sudo swapon /swapfile

再次运行free -h,现在应该能看到新增的Swap空间了。

4. 永久化Swap配置

上面的设置只会在当前会话有效,重启后就会失效。为了让Swap配置永久生效,需要编辑/etc/fstab文件:

sudo nano /etc/fstab

在文件末尾添加以下行:

/swapfile none swap sw 0 0

保存并退出(Ctrl+X,然后按Y确认)。

5. 优化Swap性能参数

仅仅创建Swap还不够,我们还需要调整一些内核参数来优化Swap的使用效率。编辑/etc/sysctl.conf文件:

sudo nano /etc/sysctl.conf

添加或修改以下参数:

vm.swappiness=10 vm.vfs_cache_pressure=50

提示:swappiness值范围是0-100,表示系统使用Swap的倾向。0表示尽量不使用Swap,100表示积极使用Swap。对于SSD硬盘,建议设置为10-30;对于HDD,可以适当提高。

使设置立即生效:

sudo sysctl -p

6. 删除或调整Swap空间

如果你需要删除或调整Swap空间大小,可以按照以下步骤操作:

6.1 禁用当前Swap

sudo swapoff /swapfile

6.2 删除Swap文件

sudo rm /swapfile

6.3 调整Swap大小

如果你想调整Swap大小,只需重复第3节的步骤,创建一个新大小的Swap文件即可。

7. 常见问题与解决方案

7.1 Swap空间未被使用

有时候即使物理内存紧张,系统也不使用Swap。这通常是因为swappiness设置过低。可以临时提高这个值测试:

sudo sysctl vm.swappiness=60

7.2 系统启动时Swap挂载失败

如果系统启动时提示无法挂载Swap,可能是因为文件系统检查顺序问题。可以尝试:

  1. 运行sudo fsck /swapfile
  2. 确保/etc/fstab中的配置正确
  3. 检查文件权限是否为600

7.3 性能问题

Swap使用过多会导致系统变慢。可以通过以下命令监控Swap使用情况:

watch -n 1 free -h

如果发现Swap使用率持续很高,考虑增加物理内存或优化应用程序的内存使用。

8. 高级技巧:使用ZRAM替代传统Swap

对于内存较小的设备(如树莓派或老旧笔记本),ZRAM可能是更好的选择。ZRAM在内存中创建一个压缩的块设备作为Swap,比传统Swap更快:

sudo apt install zram-config

安装后重启系统,ZRAM会自动配置。你可以通过以下命令验证:

cat /proc/swaps

在我的旧笔记本上,使用ZRAM后系统响应速度明显提升,特别是在处理多个浏览器标签时。

9. 实际应用场景分析

根据我的经验,合理配置Swap在不同场景下的作用:

  • 开发环境:编译大型项目时,内存需求会突然激增。4-8GB的Swap可以防止编译过程中断。
  • 服务器应用:数据库服务器在查询高峰期可能耗尽内存,Swap可以防止服务崩溃。
  • 多媒体处理:视频编辑和3D渲染软件常常需要大量内存,Swap可以作为缓冲。

我曾经为一个运行PostgreSQL数据库的Ubuntu服务器配置了16GB的Swap空间(物理内存8GB),成功应对了突发的查询高峰,避免了服务中断。

10. 性能监控与调优建议

长期监控Swap使用情况对于系统调优很重要。我推荐以下工具:

  1. htop:直观显示内存和Swap使用情况

    sudo apt install htop htop
  2. vmstat:查看内存和Swap的统计信息

    vmstat 1
  3. 编写监控脚本

    #!/bin/bash while true; do date >> /var/log/swap_usage.log free -h >> /var/log/swap_usage.log sleep 300 done

根据监控数据,你可以:

  • 如果Swap使用率长期低于5%,可以考虑减小Swap空间
  • 如果Swap使用率经常超过50%,应该考虑增加物理内存或优化应用
  • 如果系统频繁进行Swap交换(swapping),说明内存严重不足

在我的运维实践中,发现一个规律:当Swap使用率持续超过30%时,系统性能就会明显下降。这时就需要采取行动了,要么增加内存,要么优化应用的内存使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 11:45:11

智能体技术解析与Coze平台实践指南

1. 智能体与Coze初探:从概念到落地实践作为一名长期关注AI技术落地的从业者,我见证了智能体技术从实验室走向产业应用的完整历程。2023年被称为"AI智能体元年",各类智能体平台如雨后春笋般涌现,其中字节跳动旗下的Coze平…

作者头像 李华
网站建设 2026/7/16 11:44:45

打造高效写作流:yuque-hexo+语雀+Hexo组合使用指南

打造高效写作流:yuque-hexo语雀Hexo组合使用指南 【免费下载链接】yuque-hexo 同步语雀的文章到你的 Hexo 项目吧! 项目地址: https://gitcode.com/gh_mirrors/yu/yuque-hexo yuque-hexo是一款强大的语雀知识库同步工具,能够帮助用户将…

作者头像 李华
网站建设 2026/7/16 11:44:20

ChatGPT增强、Git代码管理...alfred-workflows热门插件全解析

ChatGPT增强、Git代码管理...alfred-workflows热门插件全解析 【免费下载链接】alfred-workflows Save time, Improve life.🚀 ☕️ 💻 项目地址: https://gitcode.com/gh_mirrors/alfredworkfl/alfred-workflows GitHub加速计划的alfred-workflo…

作者头像 李华
网站建设 2026/7/16 11:44:16

如何利用Opulence路由系统构建灵活的URL结构

如何利用Opulence路由系统构建灵活的URL结构 【免费下载链接】Opulence A simple, secure, and scalable PHP application framework 项目地址: https://gitcode.com/gh_mirrors/op/Opulence Opulence是一个简单、安全且可扩展的PHP应用框架,其强大的路由系统…

作者头像 李华
网站建设 2026/7/16 11:43:20

如何在Windows系统上高效管理Btrfs文件系统:完整配置指南

如何在Windows系统上高效管理Btrfs文件系统:完整配置指南 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs WinBtrfs是一款专为Windows平台设计的开源Btrfs文件系统驱动程序&…

作者头像 李华
网站建设 2026/7/16 11:43:15

dbt Python模型开发:扩展数据工程能力的创新方法

dbt Python模型开发:扩展数据工程能力的创新方法 【免费下载链接】complete-dbt-bootcamp-zero-to-hero Supplementary Materials for the The Complete dbt (Data Build Tool) Bootcamp Udemy course 项目地址: https://gitcode.com/gh_mirrors/co/complete-dbt-…

作者头像 李华