Ubuntu修改Swap交换空间大小的三种方法

 更新时间:2026年03月12日 09:13:43   作者:AI老李  
在Ubuntu系统中,Swap交换空间是虚拟内存,用于在物理RAM不足时扩展内存,默认情况下,Ubuntu通常创建一个 1-2 GB的Swap文件,修改Swap大小的原因可能是运行内存密集型任务,本文给大家介绍了Ubuntu修改Swap交换空间大小的三种方法,需要的朋友可以参考下

Ubuntu 修改 Swap 交换空间大小

在 Ubuntu 系统(包括 18.04、20.04、22.04 等版本)中,Swap 交换空间是虚拟内存,用于在物理 RAM 不足时扩展内存。默认情况下,Ubuntu 通常创建一个 1-2 GB 的 Swap 文件(位于 /swapfile)。修改 Swap 大小的原因可能是运行内存密集型任务(如机器学习、视频编辑)时出现 OOM(Out of Memory)错误。

注意事项:

  • 操作前备份重要数据,以防分区调整出错。
  • 推荐 Swap 大小:等于或略大于 RAM(例如 RAM 8 GB 时 Swap 设为 8-16 GB),但不超过 4 GB 作为备份使用。如果是服务器,建议根据实际负载调整。
  • 这些操作需要 root 权限,使用 sudo
  • 如果系统使用 Swap 分区(而非文件),调整更复杂,可能需调整分区表(使用 gparted 工具),建议在单用户模式或 Live USB 下操作。

以下是两种常见方法:调整现有 Swap 文件(推荐,简单无风险)和创建新 Swap 文件(如果现有 Swap 不足)。我将以调整为 8 GB 为例。

方法一:调整现有 Swap 文件大小(适用于大多数 Ubuntu 安装)

查看当前 Swap 信息
运行命令确认当前 Swap 大小和位置:

sudo swapon --show

free -h

输出示例:

NAME      TYPE SIZE USED PRIO
/swapfile file   1G   0B   -2

这显示 Swap 文件位于 /swapfile,大小 1 GB。

停用当前 Swap

sudo swapoff -a

(这会暂时禁用 Swap,确保没有进程在使用它。如果系统内存紧张,此步可能失败——先关闭不必要程序。)

删除旧 Swap 文件

sudo rm /swapfile

(确认文件已删除:ls /swapfile 应无输出。)

创建新 Swap 文件(例如 8 GB)

使用 fallocate(更快)或 dd(更兼容):

bs=1G count=8 表示块大小 1 GB,创建 8 个块。)

fallocate 方法:

sudo fallocate -l 8G /swapfile

dd 方法(如果 fallocate 不可用):

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

设置权限(仅 root 可读写):

sudo chmod 600 /swapfile

格式化为 Swap

sudo mkswap /swapfile

启用新 Swap

sudo swapon /swapfile

永久生效(开机自动挂载):

编辑 /etc/fstab 文件:

sudo nano /etc/fstab

在文件末尾添加一行(如果已存在 /swapfile none swap sw 0 0,无需重复):

/swapfile none swap sw 0 0

保存退出(Ctrl+O, Enter, Ctrl+X)。

验证

sudo swapon --show
free -h

应显示新大小 8 GB。

方法二:创建额外 Swap 文件(不删除旧的,增加总空间)

如果不想修改现有 Swap,可创建新文件(例如 /newswapfile)并启用。步骤类似方法一的 4-9,但路径改为 /newswapfile,并在 /etc/fstab 中添加相应行。

方法三:调整 Swap 分区(高级,需分区工具)

如果使用分区(非文件),需:

  1. 停用 Swap:sudo swapoff -a
  2. 使用 gpartedsudo apt install gparted)调整分区大小(需未分配空间)。
  3. 格式化:sudo mkswap /dev/sdX(X 为分区,如 sda3)。
  4. 更新 /etc/fstabsudo swapon /dev/sdX
  5. 重启验证。
    警告:分区操作风险高,可能导致数据丢失。

优化 Swap 使用

调整 Swappiness(Swap 使用倾向):默认 60(内存用 40% 后开始 Swap)。设为 10(更倾向内存)或 0(禁用 Swap):

sudo sysctl vm.swappiness=10

永久:编辑 /etc/sysctl.conf 添加 vm.swappiness=10,然后 sudo sysctl -p

优先级:如果多个 Swap,设置优先级:sudo mkswap -p 10 /swapfile(数字越高优先)。

如果遇到错误(如“no space left”),检查磁盘空间:df -h。对于特定 Ubuntu 版本(如 24.04),步骤类似,但确认文件位置。

如果你的系统是服务器或有特殊配置,建议提供更多细节(如 swapon --show 输出)以进一步诊断。

以上就是Ubuntu修改Swap交换空间大小的三种方法的详细内容,更多关于Ubuntu修改Swap交换空间大小的资料请关注脚本之家其它相关文章!

相关文章

  • Linux centos如何让普通用户获取root权限

    Linux centos如何让普通用户获取root权限

    这篇文章主要介绍了Linux centos如何让普通用户获取root权限问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Linux下的chkconfig命令详解

    Linux下的chkconfig命令详解

    大家都知道chkconfig命令在linux中使用是非常的关键的,我们可以利用chkconfig来对系统的一些启动与禁止相关设置,下面这篇文章小编就来给大家详细的介绍Linux下的chkconfig命令用法,有需要的朋友们可以参考学习,下面来一起看看吧。
    2016-11-11
  • 重启宝塔面板后提示-ModuleNotFoundError: No module named ''geventwebsocket''

    重启宝塔面板后提示-ModuleNotFoundError: No module named ''geventwebso

    这篇文章主要介绍了重启宝塔面板后提示-ModuleNotFoundError: No module named 'geventwebsocket',本文给出了解决方法,需要的朋友可以参考下
    2019-11-11
  • centos6-7 yum安装php的方法(推荐)

    centos6-7 yum安装php的方法(推荐)

    这篇文章主要介绍了centos6-7 yum安装php的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • linux程序链接时库依赖顺序详解

    linux程序链接时库依赖顺序详解

    Linux链接器处理库依赖时,需按"依赖者在前,被依赖者在后"排序,静态库对顺序敏感,动态库宽松但仍有规则,循环依赖可用--start-group解决,工具如pkg-config可辅助确定依赖链
    2025-09-09
  • 分析从Linux源码看TIME_WAIT的持续时间

    分析从Linux源码看TIME_WAIT的持续时间

    本文主要介绍了Linux下的TIME_WAIT状态的持续时间,从状态转移到它的源码,一步步让你了解它的机制
    2021-06-06
  • Linux下利用unzip命令如何解压多个文件详解

    Linux下利用unzip命令如何解压多个文件详解

    这篇文章主要给大家介绍了关于在Linux下利用unzip命令如何解压多个文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Ubuntu中如何实现更新Linux内核

    Ubuntu中如何实现更新Linux内核

    本文详细介绍了如何使用三种方法更新Ubuntu中的Linux内核,包括系统更新流程、使用系统更新程序强制更新以及手动使用Mainline选择和安装新内核
    2025-01-01
  • Linux如何定时删除7天前的日志文件

    Linux如何定时删除7天前的日志文件

    这篇文章主要介绍了Linux如何定时删除7天前的日志文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 修改.htaccess实现301域名重定向示例分享

    修改.htaccess实现301域名重定向示例分享

    这篇文章主要介绍了修改.htaccess实现301域名重定向示例,需要的朋友可以参考下
    2014-03-03

最新评论