GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

以下是如何在 **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 用户可适当减少其大小。

posted on 2025-02-23 06:33  GKLBB  阅读(105)  评论(0)    收藏  举报