登录
首页 >  文章 >  linux

Linux配置swap分区教程

时间:2026-04-01 20:49:45 489浏览 收藏

本文深入解析了Linux系统中swap分区与swap文件的正确配置方法,直击“配置后不生效”这一高频痛点,涵盖启用失败排查(通过swapon --show和/proc/swaps验证)、物理分区启用全流程(mkswap、swapon、fstab持久化)、swapfile高效创建技巧(fallocate替代dd、btrfs下禁用COW)、swappiness精准调优(设为1实现“几乎不用但保底可用”的平衡),以及SSD场景下的科学配比建议(0.5–1倍内存大小+内核磨损优化机制),强调swap不是非黑即白的开关,而是需结合硬件特性、文件系统和实际负载精细校准的关键性能缓冲区——线上服务能否平稳扛过内存峰值,往往就取决于这些看似微小却极易被忽视的配置细节。

Linux怎么配置swap分区_Linux创建和启用swap教程【内存】

swap 分区创建后不生效?检查 swapon --show/proc/swaps

swap 配置完却没被系统用上,最常见原因是没真正启用,或者启用失败但没报错。运行 swapon --show,如果输出为空,说明当前没有任何活跃 swap;再看 /proc/swaps,它和前者一致,是内核实际加载的权威来源。

实操建议:

  • sudo swapon /dev/sdb1 启用前,先确认设备存在且未挂载:lsblkmount | grep sdb1
  • 如果提示 swapon: /dev/sdb1: failed to activate swap: Device or resource busy,大概率是该分区已有文件系统(比如 ext4),需先清空:用 sudo mkswap /dev/sdb1 重写 swap 签名
  • 临时启用后记得加到 /etc/fstab,否则重启失效;格式必须严格:/dev/sdb1 none swap sw 0 0,第4字段不能写成 defaults

用文件当 swap?fallocatedd 快,但得禁用 COW(尤其在 btrfs 上)

物理分区不够或不想动磁盘结构时,swapfile 是更灵活的选择。但默认用 dd 创建大文件极慢,而 fallocate 是瞬间完成——前提是文件系统支持(ext4/xfs 可以,btrfs 默认不行)。

实操建议:

  • 创建前先关掉所有 swap:sudo swapoff -a
  • sudo fallocate -l 2G /swapfile 创建,比 dd if=/dev/zero of=/swapfile bs=1M count=2048 快两个数量级
  • btrfs 下必须先禁用写时复制:sudo chattr +C /swapfile,否则 mkswap 会失败并报 Operation not supported
  • 权限必须设为 600:sudo chmod 600 /swapfile,否则 swapon 会拒绝启用

swappiness 设成 1 不等于禁用 swap,只是大幅降低倾向性

很多人以为把 vm.swappiness 改成 0 就彻底不用 swap,其实不然。值为 0 时内核只在内存完全耗尽(OOM)前做紧急回收,但仍可能触发;设成 1 才是更稳妥的“几乎不用”,但依然保留保底能力。

实操建议:

  • 临时修改:sudo sysctl vm.swappiness=1
  • 永久生效要写进 /etc/sysctl.conf/etc/sysctl.d/99-swap.conf,内容就一行:vm.swappiness=1
  • 注意:容器环境(如 Docker)中该参数由宿主机控制,容器内改无效;Kubernetes 节点也需在 kubelet 启动参数里加 --fail-swap-on=false 才允许启用 swap

SSD 上用 swap 会不会加速磨损?现代内核已缓解,但别配太大

老观念认为 swap 频繁读写会缩短 SSD 寿命,这在十年前属实。现在内核从 4.15 开始默认启用 swap_idle 机制,会主动将冷页从 swap 移回内存,并减少对 SSD 的无效写入。

实操建议:

  • 不必为 SSD 特意禁用 swap,尤其笔记本或小内存 VPS;但 swap 大小建议控制在物理内存的 0.5–1 倍,比如 8G 内存配 4G swap 即可
  • 避免用 NVMe 盘上一个高 IO 负载分区(如数据库数据目录)同时兼作 swap,争抢队列会拖慢整体响应
  • 如果真担心磨损,可用 sudo smartctl -a /dev/nvme0n1 | grep Wear 查看实际磨损值,比理论估算更可靠

swap 的核心不是“要不要”,而是“怎么配得刚好”。配太大浪费空间、拖慢回收;配太小扛不住突发负载;用文件还是分区,取决于你愿不愿意承担 btrfs/chattr 这类隐性依赖。这些细节不显眼,但线上服务半夜 OOM,往往就差在这一步。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>