news 2026/6/2 18:57:27

别再纠结swap分区了!Ubuntu 22.04下用swapfile给内存‘扩容’的保姆级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再纠结swap分区了!Ubuntu 22.04下用swapfile给内存‘扩容’的保姆级教程

告别传统分区:Ubuntu 22.04中swapfile的完整实践指南

当你在Ubuntu 22.04上执行free -h命令时,是否注意到系统正在使用一个名为/swapfile的文件而非传统的swap分区?这种变化并非偶然,而是现代Linux系统管理内存方式的重大演进。本文将带你深入理解这一转变背后的技术逻辑,并手把手教你掌握swapfile的全生命周期管理。

1. 为什么swapfile正在取代传统分区

在过去的Linux系统中,swap分区曾是内存扩展的不二选择。管理员会在磁盘上划出专用区域,就像为系统准备了一个固定的"备用内存仓库"。然而,这种设计在灵活性方面存在明显局限:

  • 不可动态调整:一旦分区创建完成,其大小就被固定下来
  • 磁盘空间规划复杂:需要在安装系统时就准确预估未来需求
  • 迁移困难:分区结构与物理磁盘紧密绑定

相比之下,swapfile提供了完全不同的解决方案。它本质上是一个普通文件,却能够实现与传统swap分区相同的功能。Ubuntu从17.04版本开始转向默认使用swapfile,这一改变带来了几个显著优势:

性能对比

特性swap分区swapfile
创建难度需要重新分区简单文件操作
大小调整几乎不可能随时可调
磁盘利用率固定占用按需使用
性能影响略优(1-2%)几乎相当

提示:在SSD成为主流的今天,swapfile的性能损失已经可以忽略不计,特别是对于桌面用户而言。

2. 全面检查现有swap配置

在开始任何swap管理操作前,全面了解当前系统状态至关重要。以下是专业运维人员常用的诊断组合:

# 查看内存和swap使用概况 free -h # 显示swap空间详细信息 swapon --show # 检查swap使用频率 cat /proc/swaps # 查看swappiness参数 cat /proc/sys/vm/swappiness

典型输出示例:

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

当分析这些数据时,需要关注几个关键指标:

  • SIZE:当前swap空间总量
  • USED:实际使用量(长期高使用率可能预示内存不足)
  • TYPE:确认是file(文件)还是partition(分区)
  • swappiness:60是桌面版默认值,服务器建议设为10以下

3. 创建和优化swapfile的完整流程

3.1 创建新的swapfile

不同于网上广泛流传的dd命令,现代Ubuntu推荐使用更高效的fallocate

# 创建4GB的swapfile(根据内存大小调整) sudo fallocate -l 4G /swapfile # 设置正确的权限 sudo chmod 600 /swapfile # 格式化为swap空间 sudo mkswap /swapfile # 立即启用 sudo swapon /swapfile

3.2 使配置永久生效

为确保重启后swapfile仍然可用,需要编辑fstab文件:

# 先备份重要配置文件 sudo cp /etc/fstab /etc/fstab.bak # 添加swapfile配置项 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

3.3 高级调优技巧

优化swappiness:这个值(0-100)决定系统使用swap的积极程度。对于16GB以上内存的桌面系统:

# 临时设置 sudo sysctl vm.swappiness=25 # 永久生效 echo 'vm.swappiness=25' | sudo tee -a /etc/sysctl.conf

调整缓存压力:控制文件系统缓存回收的积极程度

echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf

4. 动态管理swapfile大小

这是swapfile最强大的特性之一。以下是安全调整大小的步骤:

# 首先禁用当前swapfile sudo swapoff /swapfile # 重新设置文件大小(例如扩大到8GB) sudo fallocate -l 8G /swapfile # 重新建立swap空间 sudo mkswap /swapfile # 重新启用 sudo swapon /swapfile

重要提醒:执行此操作前确保有足够可用内存,或先创建临时swapfile

对于内存密集型任务(如视频渲染),可以创建多个swapfile实现负载分散:

# 创建第二个swapfile sudo fallocate -l 4G /swapfile2 sudo chmod 600 /swapfile2 sudo mkswap /swapfile2 sudo swapon /swapfile2 --priority 10

5. 安全移除swapfile的步骤

当不再需要swapfile或需要回收磁盘空间时,应按以下顺序操作:

# 1. 停用swapfile sudo swapoff /swapfile # 2. 从fstab中删除对应行 sudo nano /etc/fstab # 删除/swapfile相关行 # 3. 删除物理文件 sudo rm /swapfile # 4. 清理内核缓存 sudo sysctl -p

对于生产环境,建议在系统负载较低时执行这些操作,并监控内存使用情况:

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

终极免费方案:3步搞定macOS虚拟PDF打印机完整指南

终极免费方案:3步搞定macOS虚拟PDF打印机完整指南 【免费下载链接】RWTS-PDFwriter An OSX print to pdf-file printer driver 项目地址: https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter 还在为macOS上缺少像Windows CutePDF那样的虚拟打印机而烦恼吗&am…

作者头像 李华
网站建设 2026/6/2 18:50:06

国产化替代第一步:手把手在信创环境(CentOS/麒麟)部署达梦DM8开发版

国产化数据库迁移实战:达梦DM8在信创环境下的深度部署指南 在信息技术应用创新产业快速发展的今天,数据库作为核心基础软件的自主可控已成为行业共识。达梦数据库DM8作为国产数据库的领军产品,凭借其卓越的Oracle兼容性和稳定的性能表现&…

作者头像 李华