溫馨提示×

Linux Swap滿了怎么清理

小樊
36
2025-10-22 13:27:28
欄目: 智能運維

1. 查看Swap及內存使用情況
首先確認Swap空間的使用狀態和內存占用情況,明確清理方向。常用命令:

  • free -h:直觀顯示內存、Swap的總大小、已用空間及剩余空間;
  • swapon --show:列出所有啟用的Swap分區/文件及其大小、優先級;
  • top(按f鍵添加SWAP列)或ps aux --sort=-%mem | head:找出占用Swap最多的進程。

2. 臨時釋放Swap空間(快速緩解壓力)
若需立即釋放Swap,可通過“關閉-重新啟用”Swap的方式,將Swap中的數據換回內存(需確保物理內存充足,否則可能導致OOM)。具體步驟:

  • 關閉所有Swapsudo swapoff -a(此命令會終止所有使用Swap的進程,建議在業務低峰期操作);
  • 重新啟用Swapsudo swapon -a(恢復Swap啟用狀態);
  • 驗證效果free -h查看Swap使用量是否歸零。

3. 調整Swappiness參數(減少Swap使用傾向)
vm.swappiness參數控制內核使用Swap的積極性(默認值60,范圍0-100)。降低該值可讓系統更傾向于使用物理內存,減少Swap占用。操作方法:

  • 臨時調整(立即生效):sudo sysctl vm.swappiness=10(例如設置為10,表示內存使用率達90%時才啟用Swap);
  • 永久生效:將vm.swappiness=10添加到/etc/sysctl.conf文件末尾,執行sudo sysctl -p使配置生效。

4. 清理內存緩存(釋放物理內存,間接減少Swap使用)
Linux系統會利用空閑內存作為緩存(如頁面緩存、dentries/inodes緩存),可通過清理緩存釋放物理內存,降低Swap使用概率。命令:
sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'

  • sync:將緩存數據同步到磁盤,避免數據丟失;
  • echo 3:清理頁面緩存、目錄項緩存和inode緩存(echo 1僅清理inode,echo 2僅清理頁面緩存)。

5. 終止占用Swap的高內存進程(解決根源問題)
若某進程長期占用大量Swap,需定位并終止該進程(謹慎操作,避免影響核心服務)。步驟:

  • 找出占用Swap最多的進程
    for file in /proc/*/status; do 
      awk '/VmSwap|Name/{printf $2 " " $3} END{ print ""}' $file; 
    done | sort -k 2 -n -r | head -n 5
    
    該命令會列出Swap使用量前5的進程(顯示進程名和Swap用量);
  • 終止進程:根據進程名或PID,執行sudo kill -9 <PID>-9表示強制終止)。

6. 擴展Swap空間(長期解決方案)
若物理內存不足且頻繁出現Swap滿的情況,需擴展Swap空間(優先選擇Swap文件,操作更靈活)。常見方法:

  • 創建Swap文件(以2GB為例):
    sudo fallocate -l 2G /swapfile  # 創建2GB空文件
    sudo chmod 600 /swapfile        # 設置僅root可讀寫
    sudo mkswap /swapfile           # 格式化為Swap格式
    sudo swapon /swapfile           # 啟用Swap文件
    
  • 永久生效:將/swapfile none swap sw 0 0添加到/etc/fstab文件中(重啟后自動啟用);
  • 擴展Swap分區(適用于LVM或物理分區):
    若使用LVM,可通過lvextend擴展邏輯卷,再用mkswap重新格式化;若為物理分區,需使用fdisk/parted調整分區大小,操作較復雜。

注意事項

  • 操作前務必備份重要數據,尤其是修改/etc/fstab或調整分區時;
  • 釋放Swap前需確保物理內存充足(可通過free -h查看available內存),否則可能導致系統崩潰;
  • 若Swap頻繁滿,建議升級物理內存(從根本上解決問題)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女