Linux 添加與修改 Swap 虛擬內存指南
在便宜的雲廠商(如著名的各種“靈車”廠商)處購買的 VPS,內存經常只有 512MB 甚至更小。當咱們運行一點稍微複雜的應用環境(如安裝了 Docker、1Panel 或是跑個稍微耗點資源的後端服務)時,經常會遇到整個系統突然死掉、或者程序莫名其妙被系統強制殺死 (OOM-Kill) 的情況。
為了解決這個問題,添加並開啟 Swap 是一項必備技能操作。
什麼是 Swap?有什麼用?
Swap(交換空間) 其實就相當於 Windows 系統裡的“虛擬內存”。 當你的物理內存(RAM)即將被耗盡不夠用時,Linux 內核就會借用硬盤上的部分空間當作內存來湊合用,把那些很久沒被訪問的內存數據暫且移動到硬盤裡,以此騰出真實的物理內存來運行眼前的急需任務。
雖然硬盤的速度遠不如內存快,但這好歹“不至於讓程序直接崩潰退出”。
一鍵腳本(懶人最愛)
如果你不想敲過多代碼,著名的開源腳本其實能完美處理。這裡提供甬哥的一鍵添加/刪除 Swap 腳本:
wget -O swap.sh https://raw.githubusercontent.com/yqs12/swap/main/swap.sh && bash swap.sh運行後會根據菜單提示,輸入你想添加的大小數字(比如添加 1024 代表添加 1GB 或者添加 2048 代表 2GB)即可。
如果你有安全潔癖喜歡純手動掌控的過程,請往下看咱們極簡的手動教程。
純手工添加 Swap 文件教程(5個步驟)
下面以添加一個大小為 2GB 的 Swap 交換文件為例。全過程需要 root 權限去執行。
1. 檢查當前是否已有 Swap
free -h看輸出的 Swap: 這一行。如果後面顯示的都是 0B 或者 0,說明咱們現在還沒有 Swap。繼續往下走。
2. 創建一個物理文件用作 Swap
使用 fallocate 命令會在根目錄 / 下快速創建一個 2G 大小的名為 swapfile 的空白文件。
fallocate -l 2G /swapfile注:如果你需要 1GB,把 2G 改成 1G 即可。
3. 設置嚴格的安全權限並格式化該文件
不設置好權限,系統會報錯不讓你掛載(因為這事關係統內存的安全)。
chmod 600 /swapfile
mkswap /swapfile終端會提示類似 Setting up swapspace version 1。
4. 激活當前這個 Swap 文件
swapon /swapfile此時再運行一次 free -h,你看 Swap: 這一行是不是已經顯示大概 2.0G 了?說明這部分虛擬內存拿下了!
5. 設為開機自啟(永久生效)
上面的動作只要一重啟 VPS 就會失效。接下來我們需要把它寫入系統的設備掛載表 /etc/fstab 裡,讓它下次開機時自動被掛載上。
執行這行追加命令:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab如何優化 Swap 的使用率 (Swappiness)?
默認情況下,一旦內存稍微吃緊,Linux 會比較積極地去使用 Swap。不過既然有物理內存,咱們肯定更喜歡優先用內存(畢竟速度快)。我們可以通過修改一個叫 swappiness 的內核參數來讓內核不到迫不得已不要去碰 Swap。
swappiness 的值從 0 到 100:
- 值接近 0:告訴系統儘可能用物理內存,不到萬不得已別碰 Swap。
- 值接近 100:告訴系統早點把數據往硬盤(Swap)裡丟。
對大多數服務器來說,咱們把這個值設為 10 是極其推薦的。
修改步驟:
- 打開系統控制配置表bash
nano /etc/sysctl.conf - 在該文件的在最末尾換行並添加:text
vm.swappiness=10 Ctrl + X,再按Y,然後回車保存退出。- 應用生效:bash
sysctl -p
從此你的小雞再也不會輕易死機崩潰了!
- 🔥🔥🔥2026年便宜好用的翻墙VPN机场推荐评测(长期更新 欢迎推荐)
- 稳定好用的流媒体合租平台推荐(长期更新 欢迎推荐)
- AI 使用教程汇总|ChatGPT、Gemini 新手入门与国内使用指南
- 国外接码平台 Hero SMS 评测(稳定 · 低价 · 高成功率)
免责声明
本文仅供技术交流和学习参考,请遵守当地法律法规,合理合法使用网络服务。