# 💾 Linux 启用 ZRAM + 磁盘 Swap 完整配置(Markdown 笔记)

> 适用系统:Debian / Ubuntu / GCP 小实例  
> 作用:提升系统在低内存环境的稳定性、减少 OOM

---

## 🧩 一、安装 ZRAM 工具

```bash
sudo apt update
sudo apt install zram-tools -y
```

---

## ⚙️ 二、配置 ZRAM 参数

编辑配置文件:

```bash
sudo nano /etc/default/zramswap
```

修改为如下内容:

```bash
# 进去修改三项就行 size注释不变
```

保存并退出:  
`Ctrl + O` → 回车 → `Ctrl + X`

---

## 🚀 三、启用并验证 ZRAM

```bash
sudo systemctl enable zramswap --now
sudo systemctl restart zramswap
zramctl
swapon --show
free -m
```

尽可能进入zram:
```bash
echo "vm.swappiness = 200" | sudo tee /etc/sysctl.d/99-zram-aggressive.conf
sudo sysctl --load=/etc/sysctl.d/99-zram-aggressive.conf

echo "vm.page-cluster = 0" | sudo tee -a /etc/sysctl.d/99-zram-aggressive.conf
sudo sysctl -p /etc/sysctl.d/99-zram-aggressive.conf
```

---

## 💾 四、创建磁盘 Swap(备用用)

1. **创建 1G swap 文件**
   ```bash
   sudo fallocate -l 1G /swapfile
   # 若不支持 fallocate,可用:
   # sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
   ```

2. **设置权限**
   ```bash
   sudo chmod 600 /swapfile
   ```

3. **格式化为 swap 类型**
   ```bash
   sudo mkswap /swapfile
   ```

4. **启用 swap**
   ```bash
   sudo swapon /swapfile
   ```

5. **查看状态**
   ```bash
   swapon --show
   free -h
   ```

输出示例:
```
NAME        TYPE  SIZE  USED  PRIO
/dev/zram0  zram  485M   0B   100
/swapfile   file  1G     0B   10
```

---

## 🔁 五、让 swap 文件永久生效

```bash
sudo bash -c 'echo "/swapfile none swap sw,pri=10 0 0" >> /etc/fstab'
```

---

## 🧠 六、检查当前所有 swap

```bash
swapon --show
free -m
```

若看到两行(zram 和 swapfile),说明双层 swap 配置完成 ✅

---

## 📊 七、性能建议
| 条目 | 建议值 |
|------|---------|
| ZRAM 比例(`PERCENT`) | 50%~75% 内存 |
| ZRAM 压缩算法 | `lz4`(推荐)或 `zstd`(更高压缩比) |
| ZRAM 优先级 | 100 |
| 磁盘 swapfile 优先级 | 10 |
| 单实例内存 ≤2 GB | 强烈推荐开启 ZRAM |
| swapfile 大小 | 1 GB 或更大视需求而定 |

---

## 🧰 八、关闭或重启 ZRAM

```bash
sudo systemctl stop zramswap
sudo swapoff /dev/zram0
sudo systemctl start zramswap
```

---

## ✅ 九、检查日志(可选)

```bash
sudo journalctl -u zramswap | tail -20
```

可以看到启动时的分配大小、算法等信息。

---

**总结:**

> 💡 推荐组合配置:
> - `/dev/zram0` → 高速压缩内存 swap(priority=100)  
> - `/swapfile` → 磁盘补充 swap(priority=10)  
>
> ⚙️ 在 GCP 或 1 GB 内存以下主机上特别有效。