当前位置: 首页 > news >正文

别再让Ubuntu卡成PPT!手把手教你用swapfile把交换空间从1G扩容到64G(附权限修复)

Ubuntu系统Swap空间扩容实战:从1G到64G的完整解决方案

当你在Ubuntu上运行内存密集型任务时,是否遇到过系统突然变得异常缓慢,甚至完全卡死的情况?很多拥有大内存(如32GB或更高)的用户可能会惊讶地发现,他们的高性能系统竟然会因为默认配置的1GB Swap空间而频繁出现性能瓶颈。本文将带你深入了解Swap空间的运作机制,并提供一套完整的解决方案,无需重装系统就能安全地将Swap空间从1GB扩展到64GB。

1. 理解Swap空间及其重要性

Swap空间(交换空间)是Linux系统中用于内存管理的重要机制。当物理内存(RAM)被完全占用时,系统会将部分不活跃的内存页面移动到Swap空间,从而为当前活跃的进程腾出更多内存。虽然Swap的访问速度远低于物理内存(因为存储在硬盘上),但它能有效防止系统因内存耗尽而崩溃。

现代Ubuntu桌面版默认只分配1GB的Swap空间,这对于拥有大内存的用户来说往往不够合理。根据Linux内存管理的最佳实践:

  • Swap大小建议
    • 内存≤4GB:Swap应为内存的2倍
    • 4GB<内存<16GB:Swap等于内存大小
    • 内存≥16GB:Swap至少为内存的1/2,但不超过32GB

对于32GB内存的系统,64GB的Swap空间是一个合理的配置,特别是当你需要:

  • 运行多个虚拟机或容器
  • 处理大型数据集(如机器学习、视频编辑)
  • 长时间不重启系统
  • 需要系统休眠(hibernate)功能

2. 诊断当前Swap使用情况

在开始调整Swap空间前,我们需要先了解系统的当前状态。打开终端,执行以下命令:

free -h

典型输出如下:

total used free shared buff/cache available Mem: 31Gi 1.2Gi 28Gi 154Mi 1.8Gi 29Gi Swap: 976Mi 0.0Ki 976Mi

关键指标解读:

  • Mem行:显示物理内存状态
    • available表示实际可用的内存量
  • Swap行:显示交换空间状态
    • total显示当前Swap总量(示例中为976MB≈1GB)
    • used显示已使用的Swap量

另一个有用的命令是检查系统内存压力:

vmstat 1 5

关注si(swap in)和so(swap out)列的非零值,这表示系统正在频繁使用Swap空间。

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

与传统分区方式不同,我们将使用Swap文件来实现动态扩容。这种方法更灵活,无需重新分区,且可以随时调整大小。

3.1 准备工作

首先,确保有足够的磁盘空间。检查磁盘使用情况:

df -h

你需要至少64GB的可用空间(建议在根分区/下)。

3.2 创建Swap文件

以下是创建64GB Swap文件的完整流程:

  1. 创建专用目录(可选但推荐):

    sudo mkdir /swap
  2. 使用dd命令创建文件:

    sudo dd if=/dev/zero of=/swap/swapfile bs=1G count=64 status=progress
    • if=/dev/zero:输入源(全零)
    • of=/swap/swapfile:输出文件路径
    • bs=1G:每次写入1GB
    • count=64:写入64次
    • status=progress:显示进度
  3. 设置正确的权限:

    sudo chmod 600 /swap/swapfile
  4. 将文件格式化为Swap:

    sudo mkswap /swap/swapfile
  5. 启用Swap文件:

    sudo swapon /swap/swapfile
  6. 验证Swap是否生效:

    free -h

3.3 性能优化建议

为了获得更好的Swap性能,可以考虑以下优化:

  • 使用更快的存储设备:如果可能,将Swap文件放在NVMe SSD而非传统硬盘上
  • 调整swappiness(控制系统使用Swap的倾向):
    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
    值范围0-100,建议桌面环境设为10-30

4. 解决常见问题与权限修复

在Swap文件使用过程中,可能会遇到几个典型问题:

4.1 "不安全的权限0644"警告

当你看到类似这样的警告:

swapon: /swap/swapfile:不安全的权限 0644,建议使用 0600。

这意味着Swap文件的权限设置过于宽松,可能带来安全风险。解决方法:

sudo chmod 600 /swap/swapfile sudo swapon /swap/swapfile

4.2 系统重启后Swap失效

要使Swap文件在重启后自动生效,需要编辑/etc/fstab文件:

  1. 获取Swap文件的UUID(可选但推荐):

    sudo findmnt -no UUID -T /swap/swapfile
  2. 编辑fstab文件:

    sudo nano /etc/fstab
  3. 添加以下行(使用UUID或路径):

    /swap/swapfile none swap sw 0 0

    UUID=your-uuid-here none swap sw 0 0
  4. 验证fstab配置:

    sudo mount -a

4.3 Swap空间不足时的紧急处理

如果系统已经因Swap耗尽而卡死,可以尝试:

  1. 通过SSH连接到系统(如果可能)
  2. 终止占用内存最多的进程:
    top -o %MEM
    记下PID,然后:
    kill -9 [PID]
  3. 临时增加Swap空间(即使只有小量):
    sudo fallocate -l 1G /swap/swapfile_temp sudo chmod 600 /swap/swapfile_temp sudo mkswap /swap/swapfile_temp sudo swapon /swap/swapfile_temp

5. 高级配置与维护

5.1 多个Swap文件的管理

Ubuntu支持同时使用多个Swap文件或分区。要查看所有活动的Swap空间:

swapon --show

如果需要停用特定Swap文件:

sudo swapoff /path/to/swapfile

5.2 调整现有Swap文件大小

要调整Swap文件大小,需要先停用它:

  1. 停用Swap文件:

    sudo swapoff /swap/swapfile
  2. 删除旧文件并创建新大小的文件:

    sudo rm /swap/swapfile sudo dd if=/dev/zero of=/swap/swapfile bs=1G count=32 status=progress
  3. 重新设置并启用:

    sudo chmod 600 /swap/swapfile sudo mkswap /swap/swapfile sudo swapon /swap/swapfile

5.3 监控Swap使用情况

定期监控Swap使用情况有助于发现潜在的内存问题:

  • 实时监控:

    watch -n 1 'free -h'
  • 生成Swap使用报告:

    vmstat -s | grep -i swap
  • 检查哪些进程在使用Swap:

    sudo smem -s swap -r

6. 安全注意事项与最佳实践

虽然Swap文件非常有用,但也需要注意以下安全事项:

  • 加密Swap:包含敏感数据的系统应考虑加密Swap

    sudo apt install cryptsetup sudo cryptsetup luksFormat /swap/swapfile
  • 定期检查:监控Swap使用模式,异常的高使用率可能表明内存不足

  • 性能平衡:不要过度依赖Swap,物理内存才是性能关键

  • 备份重要数据:在进行系统级修改前,建议备份重要文件

对于大多数现代桌面和工作站用户,遵循这些指导原则配置Swap空间,可以显著改善系统在高负载下的稳定性,避免因内存不足导致的性能下降或系统崩溃。

http://www.jsqmd.com/news/881024/

相关文章:

  • 【iOS】底层原理:理解dyld
  • 告别虚拟机!手把手教你用U盘给新电脑装Win11+统信UOS 1060双系统(保姆级分区教程)
  • Win10开机WiFi列表全空?先别慌,按这个‘服务状态排查流程图’走一遍
  • 2026靠谱仪器推荐:Trim200离子束刻蚀机、Essent Optics分光光度计、LINZA分光光度计、LensCheck MTF传函仪选择指南 - 优质品牌商家
  • 告别下载量低迷,5套实操方法打通用户增长
  • MacBook新手福音:用Final Cut Pro 10.6.5搞定你的第一门视频课(附保姆级设置与导出指南)
  • 2026年知名的大豆定量包装机/饲料定量包装机厂家哪家好 - 行业平台推荐
  • 从零开始手把手教你用Python和XFLR5估算小型固定翼无人机的升力系数(附代码)
  • 2026北京搬家公司优质推荐指南:北京公司搬家公司/北京收纳整理公司/北京日式搬家公司/北京本地搬家/北京企业搬家/选择指南 - 优质品牌商家
  • 【程序源代码】答题微信小程序(含源码)
  • Cocos Creator 3.x 实战:用 BoxCollider 和 CircleCollider 快速搞定一个2D平台跳跃游戏的碰撞检测
  • 避坑指南:在openEuler 22.03上配置vsftpd虚拟用户,解决gdbmtool替代db_load的认证问题
  • 2026智能人工气候室应用白皮书:低温型人工气候室/保鲜库/催芽室/全天候智能人工气候室/养虫室/冷冻库/医药冷库/选择指南 - 优质品牌商家
  • 别再为立体匹配发愁了!手把手教你用Fusiello法搞定双目相机极线校正(附Python代码)
  • 2026年黄金回收商家深度解析:宝奢科技等头部企业如何选择 - 2026年企业推荐榜
  • 别再只认ldd了!盘点5种查看Linux程序动态库依赖的方法(含静态/交叉编译场景)
  • Unity新手村:用Terrain工具5分钟搭出你的第一个3D场景(含环境包导入)
  • 昇腾NPU强化学习训练实战——从PPO到GRPO的完整落地
  • 别再手动调阴影了!Godot 4.0 2D光照系统保姆级配置指南(含法线/高光贴图实战)
  • 企业官网后台的工程化设计:内容建模、所见即所得与源码自主可控
  • 抗功耗侧信道攻击的逻辑综合框架PoSyn解析
  • 规避管理执行漏洞,前沿定位技术助力行业安全提质——基于视频孪生无感定位的矿山管理漏洞根治与安全升级技术方案
  • Bi-LSTM vs CNN-BiLSTM:实战对比哪个模型更适合你的时间序列预测任务?
  • GRACE水储量研究避坑指南:手把手教你处理CSR、JPL、GSFC mascon数据常见问题
  • 2026专业音响设备应用白皮书文体场馆选型剖析:ZOBO音响、舞台音响、Montarbo音响、Nettuno音响选择指南 - 优质品牌商家
  • 告别.bash_profile:在macOS Ventura/Sonoma上为Maven配置环境变量的几种新方法(含Zsh教程)
  • 解锁UE5.1增强输入高级玩法:用自定义Input Modifier实现游戏摇杆灵敏度曲线与高级死区
  • Unity地形优化实战:Terrain设置、LOD与Draw Call控制,让你的开放世界跑得更流畅
  • 别再只用ARIMA了!用Python的SSA算法给你的时间序列数据‘卸个妆’(附完整代码与调参心得)
  • 别再为单细胞数据批次效应发愁了:手把手教你用Harmony算法在R/Seurat中搞定整合