Ubuntu 18.04 swap配置指南:fallocate与mkswap实战详解

新手小白Ubuntu18.04超详细安装教程 新手小白ubuntu18.04安装 阅读详情

1. 为什么 Ubuntu 18.04 用户突然开始关心 swap 空间?

“Ubuntu 18.04 默认不创建 swap 分区”——这句话在当年的 Linux 社区里像一颗小石子,没激起太大水花,但三年后它成了无数人深夜重启服务器时的共同困惑。我第一次遇到这个问题,是在给一台 2GB 内存的旧笔记本装完 Ubuntu 18.04 LTS 后,运行 Chrome + VS Code + Docker 容器,系统直接卡死在光标闪烁状态, top 命令都打不开。 free -h 输出里 Swap: 那一行是空的,不是 0B ,是彻底消失——连占位符都没有。

这背后不是疏忽,而是 Canonical 的一次明确设计转向:他们判断,现代 SSD 寿命与 swap 频繁写入存在冲突,而内存价格持续走低,多数新设备已配 4GB+ RAM;同时,ZRAM(压缩内存)作为更轻量、更快速的替代方案,在桌面场景中表现足够稳定。于是 Ubuntu 18.04 安装器默认跳过了 swap 分区创建,只在安装介质启动时临时启用 ZRAM。

但现实远比设计复杂。ZRAM 是把一部分 RAM 压缩后当 swap 用,本质是“用内存换内存”,它缓解了磁盘 I/O,却无法解决物理内存耗尽的根本问题。一旦你运行内存密集型任务(比如编译大型 C++ 项目、训练轻量 PyTorch 模型、用 GIMP 处理 100MB 的 TIFF 图层),ZRAM 的压缩率会急剧下降,CPU 占用飙升,系统响应反而更慢。这时,一块真正落盘的 swap 空间,就成了救命稻草——它不快,但它稳;它不抢 CPU,但它能兜底。

你搜到的那些热词:“linux让系统使用swap”、“如何在外挂的硬盘中扩展swap”,恰恰印证了这个断层:官方默认方案在特定场景下失效,用户被迫回归传统机制。这不是倒退,而是对真实工作负载的务实妥协。尤其当你手头只有一台 2015 年的老 ThinkPad,加内存条要拆机、换 SSD 成本高,那么在现有硬盘上划出 2GB 空间做 swap,就是成本最低、见效最快的系统稳定性加固手段。

提示:别被“swap 已过时”的论调带偏。Linux 内核至今将 swap 视为内存管理的 核心安全阀 。 vm.swappiness=60 是默认值,不是摆设; /proc/sys/vm/swappiness 被设为 0 时,内核仍会在 OOM(Out of Memory)前尝试 swap out 不活跃页——只是策略更保守。它的价值不在日常流畅度,而在极端压力下的 可预测性 。

2. 两种实现路径的本质差异:fallocate vs mkswap + dd

当你执行 sudo fallocate -l 2G /swapfile ,你其实跳过了文件系统的底层细节,直奔结果。 fallocate 是一个“元数据操作”:它告诉 ext4 文件系统,“请预留 2GB 连续空间给这个文件,但不用真的往磁盘块里填零”。整个过程毫秒级完成,无论磁盘多慢。这是它快的根本原因。

而 dd if=/dev/zero of=/swapfile bs=1M count=2048 是“物理写入操作”:它真的一字节一字节地把 2GB 零写进磁盘。在机械硬盘上,这可能耗时 30 秒以上;在老旧 USB 3.0 移动硬盘上,甚至超过 2 分钟。更糟的是,如果磁盘有坏道或文件系统碎片严重, dd 可能中途报错,而 fallocate 通常不会。

但 fallocate 有个隐藏前提:它依赖文件系统支持 FALLOC_FL_KEEP_SIZE 标志。ext4、XFS、Btrfs 都支持,但如果你在 FAT32 或 NTFS(通过 ntfs-3g 挂载)分区上操作, fallocate 会直接失败,报错 fallocate: fallocate failed: Operation not supported 。这时候, dd 就是唯一选择。

我们来实测对比一下:

操作 执行命令 耗时(SSD) 耗时(HDD) 是否需要填充零 文件系统兼容性
fallocate fallocate -l 2G /swapfile < 0.01s < 0.01s 否 ext4/XFS/Btrfs
dd dd if=/dev/zero of=/swapfile bs=1M count=2048 ~1.2s ~28s 是 全平台通用

但注意: fallocate 创建的文件,其内容是“未定义”的。虽然 swap 机制本身不关心文件内容(它只用文件大小和位置),但某些严格的安全审计策略(如 CIS Ubuntu Benchmark)会要求 swap 文件必须用随机数据初始化,以防止从旧磁盘块中恢复敏感信息。此时,

Ubuntu 18.04 Swap配置实战:Swap文件创建与swappiness调优 Swap(交换空间)是Linux内存管理的核心机制,通过将不活跃内存页暂存至磁盘,缓解物理内存压力、支持休眠并优化内核缓存效率。其原理基于页换入换出(swap in/out)和vm.swappiness内核参数调控,技术价值在于提升系统稳定性与响应韧性,尤其适用于开发环境、容器化部署及轻量服务器等内存波动场景。本文聚焦Ubuntu 18.04平台,详解Swap文件替代传统分区的工程优势、2GB合理容量的计算逻辑,以及mkswap/swapon/fstab三步闭环配置,并结合swappiness调优与实时监控 阅读详情

相关推荐

Ubuntu 18.04 手动配置 swapfile 完全指南

Swap(交换空间)是 Linux 内存管理的核心机制,通过将非活跃匿名页暂存至磁盘,缓解物理内存压力并提升 page cache 效率。其原理基于内核的虚拟内存子系统与 swap_info_struct 管理链表,技术价值在于避免 OOM killer 非预期终止关键进程,保障服务稳定性。典型应用场景包括低内存设备(如 4GB 树莓派)、Docker 容器编排及老旧服务器运维。在 Ubuntu 18.04(内核 4.15)这一长期支持版本中,swapfile 因支持动态调整、LUKS/LVM 兼容及 fa

weixin_33462927的博客 220

Ubuntu 20.04 Swapfile 配置实战:从原理到生产级部署

Swap 是 Linux 内存管理的核心机制,本质是内核在物理内存紧张时将非活跃匿名页暂存至磁盘的缓冲策略,而非简单扩展内存。其价值在于防止 OOM Killer 杀死关键进程、保障多任务稳定性,并支撑数据库、容器、AI训练等高负载场景的平滑运行。技术实现上,Ubuntu 20.04 默认采用 swapfile 方案,兼顾灵活性、SSD 友好性与安装兼容性,区别于传统 swap partition 和压缩型替代方案(如 zram)。正确配置需协同 swappiness、vfs_cache_pressure

weixin_30735745的博客 345

Ubuntu 18.04 Swap 配置指南:文件vs分区、fstab持久化与swappiness调优

Swap(交换空间)是Linux内存管理的核心机制,通过将不活跃的匿名页换出至磁盘,缓解物理内存压力,避免OOM Killer粗暴杀进程。其原理依赖内核的页面回收策略(如LRU链表)与vm.swappiness参数协同调控。技术价值在于提升系统稳定性与资源弹性,尤其在内存受限设备(如Jetson边缘AI平台)、容器化环境(Docker内存限制依赖宿主机Swap)及突发负载场景中不可或缺。典型应用场景包括Ubuntu 18.04桌面系统调优、云服务器(单分区环境)Swap文件部署、以及LVM/加密根分区下的S

weixin_32325225的博客 343

Ubuntu 18.04 手动配置 swapfile 完整指南

Swap(交换空间)是 Linux 内存管理的核心机制,用于在物理内存紧张时提供缓冲,防止 OOM killer 强制终止进程。其原理基于内核的页面回收(page reclaim)策略,依赖 swappiness 等参数调控换入换出行为。技术价值在于提升系统稳定性与多任务容错能力,尤其适用于老旧硬件、开发工作站及容器化环境。典型应用场景包括编译大型项目、运行 Docker 多容器、浏览器多标签并发等内存压力场景。本文聚焦 Ubuntu 18.04 这一长期支持版本,详解如何安全、可逆地创建并持久化 swap

weixin_29698641的博客 278

Ubuntu 18.04 swapfile 配置实战:从原理到生产级调优

Swap 是 Linux 内存管理的核心机制,本质是内核在物理内存紧张时对匿名页进行换出(swap out)的弹性缓冲策略。其原理依赖于 page cache 与匿名页回收的权衡调度,技术价值在于以毫秒级 SSD 延迟换取系统稳定性与 OOM 规避能力。广泛应用于 Web 服务器、Docker 宿主机、开发工作站等内存压力场景。Ubuntu 18.04 因内核 4.15.x 的内存管理优化及默认不配 swap 的设计,使 swapfile 成为兼顾兼容性、SSD 寿命与云环境适配的关键方案。本文深入解析 s

weixin_34354173的博客 338

Windows 11 下 WSL 离线安装 Ubuntu 22.04 保姆级教程(国内镜像加速版)

本文提供了一份针对中国地区用户的Windows 11下WSL离线安装Ubuntu 22.04的详细教程。通过使用国内镜像源加速下载安装包,并配合PowerShell命令完成部署,有效解决了官方商店下载缓慢的问题。教程涵盖环境准备、离线包获取、安装初始化及安装后的关键优化配置,帮助用户快速搭建高效的Linux开发环境。

weixin_28452161的博客 1376

抖音自定义卡片链接(图文链接)

抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil

傅恒的博客 4140

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4571

拯救我的老平板三星note8.0 table(GT-N5110)升级到lineage os-14.1(android7.1)全记录

买了多年的三星平板note8.0已经闲置了一段时间,今天在家不能出门,也没啥事,就把它拿出来刷新系统。不成想居然搞了一天,还差点变成了砖。 原版的系统是安卓4.0的系统,很多软件已经不能用了,微信、优酷都不支持,而且三星也不提供更新升级,于是寻求第三方解决方案。折腾过程一波三折,就不赘述了,我就讲一下正确的操作过程吧。 切记我这里讲的过程只针对三星note8.0 table,国行版本,版本号是...

weixin_41108814的博客 2万+

RK3588内核崩溃日志捕获:pstore与ramoops的实战配置指南

本文详细介绍了在RK3588嵌入式设备上配置pstore与ramoops以捕获内核崩溃日志的实战指南。通过内核配置调整、设备树设置及高级调试技巧,帮助开发者有效定位系统崩溃原因,特别适合户外智能设备等无法长期连接调试器的场景。文章还提供了生产环境优化建议,确保日志捕获的可靠性与安全性。

weixin_29189363的博客 405

PX4从放弃到精通(二十二):日志

文章目录前言一、下载日志二、ulog转CSV三、利用flightplot软件分析PX4的ulog日志1 windos安装2 ubuntu18.04安装四、使用PlotJuggler分析PX4日志五、设置日志记录条件六、添加自定义日志消息 前言 PX4 1.10以上固件 QGC 一、下载日志 将飞控链接地面站,在下图页面点击“刷新”,即可看到保存的日志(前提是要有TF卡) 选择需要下载的日志,点击右侧的“下载”,然后选择目录即可进行下载,如果想擦除所有的日志,可以点击右侧的“擦除全部” 二、ulog转CS

超维空间科技的博客 6791

ZYNQ BRAM实现PS与PL数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller 的寄存器,不通过它读写数据。

baidu_34971492的博客 2271

剪映自动化工具来了:AI帮你自动剪辑成片

🎬分享一个剪映自动化剪辑工具!AI 自动帮你完成从写文案、配音、加字幕、选音乐、上特效到最终导出的整套流程🎈

XiaoqiangClub的博客 855

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 驾驭工程:构建可靠AI智能体的四大架构支柱与实践指南
下一篇: CentOS 8用户管理:adduser、wheel组与sudo权限安全实践
hidetobj
博客等级 码龄19年 15粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值