Home Knowledge base Skyline Cloud 如何在 Linux 服务器上添加交换空间(Ubuntu 22.04/24.04) KNOWLEDGE BASE

如何在 Linux 服务器上添加交换空间(Ubuntu 22.04/24.04)

一份正确、循序渐进的指南,教你在 Ubuntu 22.04/24.04 上创建交换文件、使其永久生效并调优 swappiness——非常适合低内存 VPS 和云服务器。

如何在 Linux 服务器上添加交换空间(Ubuntu 22.04/24.04)

一份正确、循序渐进的指南,教你在 Ubuntu 22.04/24.04 上创建交换文件、使其永久生效并调优 swappiness——非常适合低内存 VPS 和云服务器。

SKYLINE Engineering @skyline

发布时间: 2026 年 6 月 9 日
阅读时长: 6 分钟

什么是交换空间,何时需要它?

交换空间(swap)是磁盘上的一块区域,Linux 将其用作内存(RAM)的溢出空间。当物理内存被占满时,内核会把不活跃的内存页移动到交换空间,从而为活跃进程腾出 RAM。交换空间并不会让服务器变快——磁盘远比内存慢——但它充当一道安全网,能在内存不足时防止内核的内存不足(OOM, Out-Of-Memory)杀手突然终止进程。

在内存只有 1–4 GB 的小型 VPS 和云服务器上,交换空间尤其有价值:一次流量高峰、一条数据库查询,或一次 composer/npm 构建都可能耗尽内存。许多控制面板和应用栈也通常要求系统中存在一定的交换空间。

本教程面向 Ubuntu 22.04 和 24.04 LTS,但由于使用的工具完全相同,这些步骤几乎适用于任何现代 Linux 发行版(Debian、Rocky、AlmaLinux)。如果你正在部署一台新服务器,可以在 Skyline Cloud VPS 上完全照搬这些步骤。

第 1 步 — 检查是否已有交换空间

在创建交换空间之前,先确认尚不存在交换空间。同时运行两个交换文件既浪费资源,又容易造成混乱。

sudo swapon --show

如果该命令没有任何输出,说明你没有处于活跃状态的交换空间。你也可以一眼看到内存与交换空间的总量:

free -h

Swap 这一行中,总量为 0B 即可确认目前还没有交换空间。

第 2 步 — 选择交换空间大小

并不存在唯一正确的大小,但对于服务器而言,以下准则是一个合理的起点:

内存 推荐交换空间
1 GB 2 GB
2 GB 2–4 GB
4 GB 4 GB
8 GB 或以上 2–4 GB(如果内存非常充裕,也可不设)

交换空间不应替代充足的内存。如果你的服务器持续依赖交换空间,正确的解决办法是增加内存——通过调整云套餐即可轻松完成,而无需购买新硬件。

第 3 步 — 创建交换文件

请先确认有足够的可用磁盘空间:

df -h /

创建一个 2 GB 的交换文件。fallocate 命令会即时分配空间:

sudo fallocate -l 2G /swapfile

验证文件大小:

ls -lh /swapfile

如果 fallocate 不可用,或你的文件系统对它支持不够完善(某些环境需要完整写入的文件),则改用 dd。这种方式较慢,但总能奏效:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

第 4 步 — 加固并格式化文件

交换文件必须仅对 root 可读可写,否则其内容将被暴露。将权限设置为 600

sudo chmod 600 /swapfile

现在将该文件标记为 Linux 交换区:

sudo mkswap /swapfile

你会看到输出,其中确认了交换区标签和一个 UUID。

第 5 步 — 启用交换空间

立即激活交换文件:

sudo swapon /swapfile

确认它已生效:

sudo swapon --show
free -h

此时 free -h 中的 Swap 行应显示出你的 2 GB。交换空间已激活——但仅在下次重启之前有效。

第 6 步 — 让交换空间永久生效

要在重启后仍保留交换文件,需将其添加到 /etc/fstab。请先备份该文件:

sudo cp /etc/fstab /etc/fstab.bak

使用 tee 安全地追加交换条目:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

各字段含义为:文件路径、挂载点(交换空间用 none)、文件系统类型(swap)、选项(sw)、dump(0)以及 fsck 检查顺序(0)。验证该行已正确添加:

grep swapfile /etc/fstab

此处的拼写错误可能导致系统无法正常启动,因此请仔细核对拼写,并确认你使用的是 >>/tee -a(追加)而非覆盖整个文件。

第 7 步 — 调优 swappiness

swappiness 控制内核将数据移入交换空间的积极程度,取值范围为 0–100。Ubuntu 的默认值为 60,对桌面系统而言没问题,但对服务器来说过于激进——它可能在 RAM 仍有余量时就将数据推送到缓慢的磁盘上。

查看当前值:

cat /proc/sys/vm/swappiness

对于典型服务器,10 是一个不错的值:仅在 RAM 确实吃紧时才使用交换空间。现在就应用它:

sudo sysctl vm.swappiness=10

使其在重启后依然生效:

echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf

你还可以选择性地降低 vfs_cache_pressure,让文件系统元数据在缓存中保留更久:

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

第 8 步 — 重启后验证(可选)

为确保配置在重启后依然有效,请重启并重新检查:

sudo reboot

重新登录后:

sudo swapon --show
cat /proc/sys/vm/swappiness

两者都应反映出你设置的值。

移除或调整交换空间大小

要移除交换空间,先禁用它,从 /etc/fstab 中删除对应行,然后再删除文件:

sudo swapoff /swapfile
sudo sed -i '/\/swapfile/d' /etc/fstab
sudo rm /swapfile

要调整大小,只需删除旧文件,再按上述步骤创建一个所需大小的新文件即可。

关于 SSD 与云磁盘的说明

现代 NVMe 和 SSD 存储能够很好地处理交换写入,合理调优的交换文件所带来的少量磨损可以忽略不计。在云服务器上,交换空间还能在你决定是否升级内存期间为你争取一些缓冲空间。对于受内存制约的工作负载,最干净的长期解决方案是增加内存,而非增加交换空间。

在托管云服务器上运行

交换空间是一项能快速见效的优化,但一台健康的服务器还需要可靠的存储、快照,以及按需扩展内存的余量。Skyline Cloud 在沙特境内运行,符合 PDPL/NCA 的数据驻留要求,提供本地阿拉伯语支持和透明的定价——让你的数据和工作负载都留在沙特阿拉伯。将你的 VPS 与企业邮箱托管和托管备份搭配使用,即可全面覆盖整个技术栈。

前往 VPS 与云服务器专区了解各类套餐,然后创建你的 Skyline Cloud 账户,在几分钟内即可拥有一台经过调优、可投入生产的服务器。

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.