CH-J Server Manager透過 SSH 管理伺服器
選單
所有指南與文章 →

如何在 Ubuntu 和 Debian 上建立或擴充交換空間

檢查記憶體使用情況、建立交換檔、設定重新啟動後繼續使用,並安全調整大小,同時了解 Btrfs 和 zram 的注意事項。

檢查是否需要更多交換空間

交換空間會在記憶體不足時為系統提供額外空間,但速度遠低於 RAM。請查看 available 欄,而非 free 欄,因為 Linux 會將未使用的記憶體用作快取,並在需要時釋放。持續發生交換活動代表伺服器需要更多記憶體或更少程序,增加交換空間無法解決此問題。

free -h
swapon --show
vmstat 1 5

建立交換檔

先檢查磁碟可用空間,再建立檔案、限制權限、格式化並啟用。該檔案必須只允許 root 讀取。

df -h /
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show

重新啟動後繼續使用

先備份 /etc/fstab,再於其中加入一行。fstab 中的錯誤可能導致系統無法正常開機,因此請在重新啟動前驗證該檔案。

sudo cp /etc/fstab /etc/fstab.backup
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo findmnt --verify

調整交換檔大小

停用交換空間前,請確定其內容能放入可用記憶體:swapoff 會將內容移回 RAM,若記憶體容納不下,程序可能會遭終止。接著停用該檔案,以新的大小重新建立,再啟用。只要路徑不變,fstab 中的那一行就維持不變。

free -h
sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Btrfs 和 zram

在 Btrfs 上,交換檔需要特殊處理:請使用 btrfs filesystem mkswapfile,並注意包含交換檔的子磁碟區無法納入快照。zram 與交換檔不同,它將壓縮後的記憶體頁面保存在 RAM 中,而非磁碟上,且由自己的服務管理,不透過 fstab 管理。

CH-J Server Manager 中的交換空間

System Monitor 顯示 RAM 使用分布、RAM 和交換空間的歷程記錄,以及每個交換區域的類型、優先順序與活動情況。具有 root 或 sudo 權限時,可以在 ext2/3/4、XFS、Btrfs 和 F2FS 上建立、啟用、停用、調整大小及刪除位於 /swapfile*、/swap/<name> 或 /var/lib/swap/<name> 的交換檔,大小範圍為 64 MiB 至 64 GiB。若交換空間的內容無法放入記憶體,應用程式會拒絕停用,並會在每次變更前備份 /etc/fstab。此處 zram 和 zswap 僅供讀取。

詳細文件

man: swapon →

man: mkswap →

生物辨識解除鎖定與安全性 →