在Linux系統中,如果系統需要更多的記憶體資源並且實體記憶體已滿時,將使用swap分區(交換空間)。使用交換空間為不活躍的進程和資料提供臨時儲存,並防止實體記憶體滿時記憶體不足。交換空間充當實體記憶體的擴充,並允許系統在實體記憶體耗盡時繼續平穩運行。
開啟swap分區可能會導致記憶體I/O效能下降。當ECS執行個體記憶體不足時,建議優先通過修改執行個體規格增加執行個體的實體記憶體。若因業務需要開啟swap分區,請參見本文進行配置。
如果您使用的是普通雲端硬碟,不建議使用swap分區,因為其I/O效能較低,會導致效能下降和I/O瓶頸。其他類型雲端硬碟可以根據實際情況使用swap分區,但應合理配置以避免頻繁的swap分區操作,確保系統效能和穩定性。
查看swap分區配置
遠程登入Linux執行個體。
具體操作,請參見通過密碼或密鑰認證登入Linux執行個體。
執行以下命令,查看swap分區的配置。
swapon --show
配置swap分區
開啟swap分區
執行以下命令,建立用於交換分區的檔案。
sudo dd if=/dev/zero of=/var/swap bs=1M count=1024說明其中:
of的值/var/swap是變數,表示交換分區的標識,請您自訂設定,該變數值不能和已有分區標識相同。bs和count的值表示建立的分頁檔的大小,您可以自訂設定,該命令中bs=1M count=1024表示設定分頁檔的大小為1 GB。
執行以下命令,將檔案格式化為swap分區。
sudo mkswap /var/swap
說明如果使用
mkswap命令建立swap時出現類似mkswap: error: swap area needs to be at least 40 KiB報錯,表示指定的swap分區檔案太小,swap分區檔案至少應該大於40 KB,您需要重新建立更大的分頁檔。執行以下命令,開啟swap分區。
sudo chmod 600 /var/swap sudo swapon /var/swap執行以下命令,驗證swap分區是否已開啟。
swapon --show如下回顯資訊表示swap分區已開啟。

在
/etc/fstab檔案中寫入新分區資訊,配置開機自動掛載swap分區。echo '/var/swap none swap defaults 0 0' | sudo tee -a /etc/fstab查看新分區資訊。
cat /etc/fstab結果如下所示,可以查詢已配置的swap分區資訊。

重啟ECS執行個體後,再次檢查swap分區是否自動啟用。
swapon --show(條件可選)編輯
/etc/rc.local檔案, 排查是否有swapoff -a命令。如果有將其修改為swapon -a,確保/etc/rc.local中的命令與/etc/fstab的配置一致,以確保swap分區能夠正常啟用。
相關操作
在Linux系統中,可以通過設定swappiness參數來確定系統對swap分區的使用原則,swappiness參數取值範圍為0到100。
swappiness值越低,表示最大限度地使用實體記憶體,實體記憶體使用完畢後,才會使用swap分區。swappiness值越高,表示積極地使用swap分區,並且把記憶體中的資料及時地置換到swap分區。
調整swap參數是一項需要謹慎操作的任務,因為不恰當地修改可能會導致系統效能下降或虛擬記憶體使用不符合預期,請您根據實際業務情境並在充分瞭解參數作用的基礎上謹慎操作。如果您不確定是否需要調整,建議保持預設配置。
編輯
/etc/sysctl.conf檔案,以實體記憶體少於10%時才使用swap分區為例,需要調整以下參數值。vm.swappiness=10儲存並退出,然後執行以下命令使配置生效。
sudo sysctl -p執行以下命令,驗證
swappiness參數配置是否生效。cat /proc/sys/vm/swappiness如下回顯資訊表示
swappiness參數配置已生效。
關閉swap分區
執行以下命令,關閉swap分區。
sudo swapoff /var/swap說明其中
/var/swap為swap分區標識,請您根據實際環境替換。編輯
etc/fstab檔案,並刪除類似以下的swap相關掛載資訊,取消swap自動掛載。/var/swap none swap defaults 0 0儲存並退出,然後執行以下命令,確認swap分區是否已經關閉。
swapon --show如果回顯資訊為空白,表示系統已關閉swap分區。


