Linux系统如何新建swap交换空间?

在Linux系统中,swap(交换空间)作为物理内存的补充,当系统内存不足时,会将部分暂时不用的数据写入swap,从而释放内存供其他进程使用,避免系统因内存耗尽而崩溃,本文将详细介绍如何在Linux系统中新建swap文件,包括完整操作步骤、注意事项及验证方法。

linux 如何新建swap

检查当前swap状态

在新建swap前,需先确认系统是否已有swap空间,通过以下命令查看:

free -h  # 以人类可读格式显示内存使用情况,包括swap大小、已用和空闲量
swapon --show  # 列出当前已启用的swap设备(文件或分区)

如果输出中Swap行total为0或swapon --show无结果,说明系统未配置swap,需新建。

创建swap文件

方法1:使用fallocate命令(推荐,速度快)

fallocate命令可快速预分配磁盘空间,适用于支持fallocate的文件系统(如ext4、xfs),例如创建2GB的swap文件:

fallocate -l 2G /swapfile  # -l指定大小,2G表示2GB

方法2:使用dd命令(兼容性更好)

若fallocate不可用(如某些文件系统限制),可通过dd命令从/dev/zero读取数据并写入文件,速度较慢但兼容性广:

dd if=/dev/zero of=/swapfile bs=1M count=2048  # bs=1M(块大小1MB),count=2048(块数),总大小2048MB=2GB

两种方法对比

方法 命令示例 优点 缺点 适用场景
fallocate fallocate -l 2G /swapfile 速度快,几乎瞬间完成 依赖文件系统支持 ext4、xfs等现代文件系统
dd dd if=/dev/zero of=/swapfile bs=1M count=2048 兼容所有文件系统 速度慢,需逐字节写入 特殊文件系统或旧系统

设置swap文件权限

swap文件存储敏感数据,需限制仅root用户可读写,避免安全风险:

chmod 600 /swapfile  # 设置权限为所有者读写,其他用户无权限
ls -lh /swapfile     # 确认权限,输出应为`-rw-------`

格式化为swap分区

使用mkswap命令将文件格式化为swap格式,写入swap签名:

linux 如何新建swap

mkswap /swapfile

执行后会显示swap的UUID、大小及权限信息,类似:
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)

启用swap文件

通过swapon命令激活swap文件:

swapon /swapfile

再次使用free -h或swapon --show验证,若新增swapfile且total显示2G,则启用成功。

设置开机自启

为避免重启后swap失效,需将swap文件写入/etc/fstab配置文件:

echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

参数说明:/swapfile(文件路径)、swap(文件系统类型)、defaults(默认挂载选项)、0(dump备份频率,0不备份)、0(fsck检查顺序,0不检查)。
可通过cat /etc/fstab | tail -1确认添加是否正确。

验证swap工作状态

观察内存使用情况

手动触发swap使用(如创建大文件),观察free -h中swap used是否增加:

linux 如何新建swap

dd if=/dev/zero of=/tmp/test_file bs=1M count=1000  # 创建1GB测试文件

完成后删除测试文件:rm /tmp/test_file,观察swap used是否回落。

检查swap活动

使用vmstat命令监控swap写入(so)和读取(si)情况:

vmstat 1  # 每秒刷新一次,观察si、so列是否为0(正常)或非0(正在使用swap)

注意事项

  1. swap大小建议:通常为物理内存的1-2倍,例如8GB内存可配置8-16GB swap;若内存较大(>64GB),可适当减少至0.5-1倍。
  2. swappiness参数优化:系统默认swappiness=60(倾向使用swap的积极性),可通过cat /proc/sys/vm/swappiness查看;临时调整(如降低至10):
    sysctl vm.swappiness=10

    永久修改需编辑/etc/sysctl.conf,添加vm.swappiness=10后执行sysctl -p。

  3. 删除swap:若需移除swap,先禁用:swapoff /swapfile,再删除文件:rm /swapfile,并从/etc/fstab中删除对应行。

相关问答FAQs

Q1:swap文件大小设置为多少合适?
A1:swap大小需结合物理内存和使用场景:一般建议为物理内存的1-2倍,例如4GB内存配4-8GB swap,16GB内存配8-16GB swap,对于内存密集型任务(如虚拟机、数据库),可适当增加;若内存充足(>32GB)且负载较轻,可设为0.5-1倍,避免过大浪费磁盘空间,过小无法有效缓解内存压力。

Q2:如何删除不再需要的swap文件?
A2:删除swap需分三步:① 禁用swap:sudo swapoff /swapfile(替换为实际swap文件路径);② 删除文件:sudo rm /swapfile;③ 清理开机自启配置:编辑/etc/fstab,删除包含/swapfile的行(如/swapfile swap swap defaults 0 0),保存后重启或运行mount -a使配置生效。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/37819.html

赞 (0)
酷番叔酷番叔
上一篇 2025年10月7日 18:46
下一篇 2025年10月7日 18:57

相关推荐

  • Linux环境下如何打开.db文件的具体方法是什么?

    在Linux操作系统中,.db文件通常是SQLite数据库文件的扩展名,SQLite是一种轻量级、基于文件的嵌入式数据库,无需独立服务进程,广泛应用于本地数据存储场景,少数情况下,.db文件也可能是其他数据库(如MySQL的MyISAM表文件)的存储格式,但Linux下最常见的是SQLite数据库,打开.db文……

    2025年8月30日
    38300
  • linux 如何注销注释

    Linux 中,使用 # 来注释单行,对于多

    2025年8月18日
    18200
  • Linux如何扩展磁盘空间?分区、扩容、挂载操作步骤有哪些?

    Linux扩展磁盘空间是系统运维中常见的操作,无论是虚拟机磁盘扩容、物理硬盘添加,还是现有分区调整,都需要结合具体场景和文件系统类型进行操作,本文将从虚拟机环境、物理环境及不同文件系统扩展等角度,详细说明Linux扩展磁盘空间的步骤与注意事项,虚拟机环境磁盘扩展(以VMware为例)虚拟机磁盘扩展是日常运维中的……

    2025年9月21日
    34800
  • 为什么电脑/手机卡顿?关键硬件参数解析

    在Linux系统中,查看服务器参数设置是运维管理、性能优化和故障排查的基础操作,本文将通过专业、可靠的方法,详细介绍如何获取关键硬件和系统配置信息,所有命令均经过主流Linux发行版(如Ubuntu、CentOS)验证,确保准确性,CPU信息型号与核心数lscpu # 显示架构、核心数、线程数等(推荐)cat……

    2025年7月28日
    23200
  • Linux下如何执行指定路径的C可执行文件?

    在Linux系统中执行C语言程序需先通过编译器将源代码转换为可执行文件,再通过指定路径运行,这一过程涉及路径的正确引用,包括当前路径、绝对路径、相对路径及环境变量配置等,以下是具体操作方法和注意事项,编译C文件生成可执行文件执行C程序的前提是编译源代码(如hello.c),使用gcc编译器时,通过-o参数指定生……

    2025年10月3日
    23700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信