當物理記憶體 (RAM) 不足時,核心將暫時不用的記憶體頁面換出到磁碟 Swap 空間,騰出 RAM 給活躍進程。Swap 為系統提供緩衝,防止 OOM Killer 殺死關鍵進程,但過度依賴 Swap 會嚴重拖慢效能(磁碟 I/O 遠慢於 RAM)。
# 1. 建立 1GB 空檔案 (bs=1M count=1024)
dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress
# 2. 設定權限 (僅 root 可讀寫)
chmod 600 /swapfile
# 3. 格式化為 Swap 區
mkswap /swapfile
# 4. 立即啟用
swapon /swapfile
# 5. 驗證
free -h
# 輸出應包含 Swap: 1.0G
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 或手動編輯 /etc/fstab 新增上述行
/proc/sys/vm/swappiness (0-100),預設 60。數值越低越傾向保留在 RAM,數值越高越積極換出。
# 臨時修改
echo 10 | sudo tee /proc/sys/vm/swappiness
# 永久修改
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
資料庫/高效能伺服器建議設 10-20;桌面/一般伺服器 60 即可。
# 1. 停用
swapoff /swapfile
# 2. 刪除檔案
rm -f /swapfile
# 3. 移除 fstab 對應行
sed -i '/\/swapfile/d' /etc/fstab
| 類型 | 優點 | 缺點 |
|---|---|---|
| 分區 | 效能略優、不受檔案系統碎片影響 | 調整大小需重新分區、佔用主分區槽位 |
| 檔案 | 彈性調整大小、無需重分區、易於備份/遷移 | 極端碎片可能微影響效能、需檔案系統支援 |
現代核心 (2.6+) 與 ext4/xfs/btrfs 對 Swap 檔案支援良好,推薦使用檔案方式靈活管理。
Swap 是記憶體不足時的救命稻草,而非效能加速器。建立適當大小(通常 1-2 倍 RAM 或固定 2-4GB)、設定低 Swappiness、監控實際使用量(sar -W、vmstat),才是正確的 Swap 管理之道。