> ## Content Index
> Fetch the complete content index at: https://tbbbk.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Linux VPS 新手必备：5分钟创建 2GB Swap 交换空间完整教程
- URL: https://tbbbk.com/linux-create-2gb-swap-tutorial/
- Published: 2026-01-04T07:15:28.000Z
- Updated: 2026-01-30T05:31:38.000Z
- Author: TuBaiBai
- Tags: 随手记, #Import 2026-07-20 07:13

## 开篇：小内存 VPS 为什么需要 Swap？

如果你手里有台 **1GB 内存的 VPS**（比如甲骨文的 AMD 小鸡、各种低配云服务器），在运行 Ghost 博客、WordPress 或者编译程序时,可能会遇到内存不够的尴尬情况——**系统直接把进程杀掉（OOM Killed）**。

这种时候，**Swap 交换空间**就是你的救命稻草。

### 什么是 Swap？简单说就是"硬盘充当临时内存"

Swap 其实就是**用硬盘空间模拟内存**。当物理内存（RAM）不够用时，系统会把一部分暂时不用的数据挪到 Swap 里，给急需内存的程序腾地方。

**通俗类比**：

- 物理内存 = 你的办公桌
- Swap = 旁边的抽屉
- 当桌面放不下时，把不常用的东西塞进抽屉，需要时再拿出来

**为什么推荐 2GB？**

- 对于 1GB 内存的服务器，**2倍内存大小**的 Swap 是经典配置
- 既能应对临时内存峰值，又不会占用太多硬盘空间

好了，废话不多说，下面直接开干！

---

## 正文：6步创建并永久启用 Swap

整个过程大概 **5分钟**，适用于 Ubuntu、Debian、CentOS 等主流 Linux 发行版。

### 第一步：使用 fallocate 快速创建 Swap 文件

传统的 `dd` 命令创建文件很慢，我们用更快的 `fallocate`：

```bash
# 创建一个 2GB 大小的文件，路径为 /swapfile
sudo fallocate -l 2G /swapfile
```

**这个命令的作用**：

- `fallocate`：瞬间分配磁盘空间（比 `dd` 快几十倍）
- `-l 2G`：指定文件大小为 2GB
- `/swapfile`：文件保存路径（可以改，但建议用默认的）

**执行后没有任何输出**，这是正常的。我们接着验证文件是否创建成功：

```bash
ls -lh /swapfile
```

应该会看到：

```
-rw-r--r-- 1 root root 2.0G Jan  4 10:30 /swapfile
```

---

### 第二步：设置严格的安全权限（非常重要！）

Swap 文件里可能包含**敏感数据**（比如密码、密钥），必须确保只有 `root` 能读写：

```bash
# 将 /swapfile 的权限设置为 600
sudo chmod 600 /swapfile
```

**权限解释**：

- `600` \= 只有所有者（root）有读写权限，其他所有人没有任何权限
- 这是 **Linux 系统安全的基本原则**

再次检查权限：

```bash
ls -lh /swapfile
```

现在应该显示：

```
-rw------- 1 root root 2.0G Jan  4 10:30 /swapfile
```

前面的 `-rw-------` 就是 600 权限，完美！

---

### 第三步：格式化为 Swap 格式

现在这个文件还只是一个普通文件，需要告诉系统"这是 Swap 空间"：

```bash
# 格式化为 swap 格式
sudo mkswap /swapfile
```

**成功后会看到**：

```
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```

出现 UUID 就说明格式化成功了！

---

### 第四步：启用 Swap 空间

让系统开始使用这个 Swap 文件：

```bash
# 启用 swap
sudo swapon /swapfile
```

同样，**没有输出就是最好的输出**。

---

### 第五步：验证 Swap 是否生效

用 `free` 命令查看内存和 Swap 的使用情况：

```bash
free -h
```

**`-h` 参数的意思**：human-readable（人类友好的单位，如 G、M、K）

你应该会看到类似这样的输出：

```
               total        used        free      shared  buff/cache   available
Mem:           981Mi       169Mi       131Mi       0.0Ki       680Mi       662Mi
Swap:          2.0Gi          0B       2.0Gi
```

**重点看最后一行**：

- `Swap: 2.0Gi` —— ✅ 说明 Swap 已经成功启用！
- `0B` 是当前使用量（系统还有足够的物理内存，所以暂时没用到 Swap）

---

### 第六步：让 Swap 永久生效（关键一步！）

⚠️ **注意**：上面的 `swapon` 命令只在当前会话有效，**服务器重启后 Swap 会失效**。

为了让服务器每次开机都自动挂载 Swap，需要把配置写入 `/etc/fstab` 文件：

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

**这个命令做了什么**：

- `echo '...'`：生成配置内容
- `|`：管道符，把前面的输出传给后面的命令
- `sudo tee -a /etc/fstab`：以 root 权限追加（`-a`）到 `/etc/fstab` 文件末尾

**验证是否写入成功**：

```bash
tail -1 /etc/fstab
```

应该显示：

```
/swapfile none swap sw 0 0
```

完美！现在重启服务器，Swap 也会自动挂载。

---

## 进阶优化：调整 Swappiness 值（强烈推荐）

### 什么是 Swappiness？

`swappiness` 是 Linux 内核参数，控制系统使用 Swap 的**积极程度**：

- **值范围**：0 到 100
- **值越高**：系统越早使用 Swap（默认通常是 60）
- **值越低**：系统尽量使用物理内存，只有在必要时才用 Swap

### 为什么要调低？

对于 VPS 和网站服务器，**默认值 60 太高了**，会导致：

- ❌ 系统过早使用 Swap（硬盘 I/O 比内存慢几十倍）
- ❌ 网站响应速度变慢
- ❌ 数据库查询延迟增加

**推荐值：10**

- ✅ 让系统优先使用物理内存
- ✅ 只在内存真正不够时才用 Swap
- ✅ 性能和稳定性的最佳平衡

### 实操：修改 Swappiness

#### 方法一：临时修改（立即生效，重启后失效）

```bash
sudo sysctl vm.swappiness=10
```

**验证当前值**：

```bash
cat /proc/sys/vm/swappiness
```

应该显示 `10`。

#### 方法二：永久修改（重启后依然生效）

编辑系统配置文件：

```bash
sudo nano /etc/sysctl.conf
```

在文件**最末尾**添加一行：

```
vm.swappiness=10
```

**保存并退出**：

1. 按 `Ctrl + X`
2. 按 `Y` 确认保存
3. 按 `Enter` 退出

**让配置立即生效**（不用重启）：

```bash
sudo sysctl -p
```

完美！现在你的服务器会更聪明地使用 Swap。

---

## 常见问题 FAQ

### Q1：我的服务器是 512MB 内存，应该创建多大的 Swap？

**推荐 1GB**。规则是：

- 1GB 以下内存 → Swap = 内存的 2 倍
- 1-4GB 内存 → Swap = 内存大小或 2GB
- 4GB 以上内存 → Swap = 1-2GB 即可（甚至可以不用）

### Q2：Swap 会拖慢系统吗？

**看情况**：

- ✅ 合理配置 + 调低 Swappiness = **不会影响性能**，反而能避免 OOM
- ❌ 没调 Swappiness + 频繁使用 Swap = **硬盘狂读写，卡得要死**

### Q3：可以把 Swap 文件放在其他位置吗？

可以！只要路径一致即可：

```bash
sudo fallocate -l 2G /var/swap
sudo chmod 600 /var/swap
sudo mkswap /var/swap
sudo swapon /var/swap
echo '/var/swap none swap sw 0 0' | sudo tee -a /etc/fstab
```

### Q4：如何删除 Swap？

```bash
# 1. 停用 Swap
sudo swapoff /swapfile
2. 从 fstab 中删除配置行
sudo nano /etc/fstab  # 手动删除 /swapfile 那一行
3. 删除文件

```

---

## 总结：Swap 配置的最佳实践

✅ **推荐配置**：

- 1GB 内存 VPS → 创建 2GB Swap
- 设置 600 权限（安全第一）
- 写入 `/etc/fstab` 永久挂载
- 设置 `vm.swappiness=10`（性能优化）

✅ **适用场景**：

- Ghost、WordPress 等博客程序
- 编译代码（make、npm build）
- Docker 容器运行
- 临时任务处理

❌ **不推荐**：

- 生产环境高负载服务器（应该直接加内存）
- SSD 寿命敏感的场景（频繁写入会缩短寿命）