以下是如何在 **Ubuntu 20.04** 上添加交换空间(Swap Space)的中文指南:
---
### **如何在 Ubuntu 20.04 上添加交换空间**
**发布日期**:2020年5月5日
**作者**:Brian Boucheron
**适用场景**:防止应用因内存不足(OOM)崩溃,尤其适用于非 SSD 存储的服务器。
---
### **什么是交换空间?**
- **定义**:交换空间是硬盘上预留的一块区域,用于临时存储内存(RAM)中无法容纳的数据。
- **作用**:当物理内存不足时,系统将部分非活跃数据移至交换空间,避免应用崩溃。
- **性能注意**:硬盘速度远慢于 RAM,因此交换空间应作为备用方案,而非替代内存。
---
### **步骤 1:检查当前交换空间状态**
```bash
# 查看现有交换分区/文件
sudo swapon --show
# 若无输出,表示未配置交换空间
# 使用 free 确认内存和交换空间使用情况
free -h
```
**输出示例**:
```
total used free shared buff/cache available
Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi
Swap: 0B 0B 0B # 此处显示交换空间为0
```
---
### **步骤 2:检查硬盘可用空间**
```bash
# 查看磁盘剩余空间
df -h
```
**关键点**:
- 选择挂载点为 `/` 的分区(示例中为 `/dev/vda1`,剩余 23G)。
- **交换空间大小建议**:
- 等于或双倍于物理内存(例如 1G 内存 → 1-2G 交换空间)。
- 超过 4G 的交换空间通常不必要。
---
### **步骤 3:创建交换文件**
```bash
# 创建 1G 的交换文件(根据需求调整大小)
sudo fallocate -l 1G /swapfile
# 验证文件大小
ls -lh /swapfile
```
**输出示例**:
```
-rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
```
---
### **步骤 4:启用交换文件**
```bash
# 设置文件权限(仅 root 可读写)
sudo chmod 600 /swapfile
# 将文件格式化为交换空间
sudo mkswap /swapfile
# 启用交换文件
sudo swapon /swapfile
# 验证交换空间已激活
sudo swapon --show
free -h
```
**成功输出示例**:
```
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
total used free shared buff/cache available
Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi
Swap: 1.0Gi 0B 1.0Gi
```
---
### **步骤 5:永久保留交换文件**
```bash
# 备份 fstab 文件
sudo cp /etc/fstab /etc/fstab.bak
# 将交换文件信息添加到 /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
```
---
### **步骤 6:优化交换空间设置**
#### **调整交换频率(Swappiness)**
```bash
# 查看当前值(默认 60,范围 0-100)
cat /proc/sys/vm/swappiness
# 临时设置为 10(更倾向使用 RAM)
sudo sysctl vm.swappiness=10
# 永久生效:编辑 /etc/sysctl.conf
sudo nano /etc/sysctl.conf
```
**添加以下行**:
```
vm.swappiness=10
```
#### **调整缓存压力(vfs_cache_pressure)**
```bash
# 查看当前值(默认 100)
cat /proc/sys/vm/vfs_cache_pressure
# 临时设置为 50(保留更多文件系统缓存)
sudo sysctl vm.vfs_cache_pressure=50
# 永久生效:编辑 /etc/sysctl.conf
sudo nano /etc/sysctl.conf
```
**添加以下行**:
```
vm.vfs_cache_pressure=50
```
---
### **总结**
通过上述步骤,您已成功:
1. 创建交换文件作为内存不足时的安全网。
2. 优化系统以减少对交换空间的依赖,提升性能。
**注意事项**:
- 若频繁触发交换空间,建议升级内存或优化应用配置。
- 交换空间适用于机械硬盘环境,SSD 用户可适当减少其大小。
浙公网安备 33010602011771号