Linux SWAP 啟用與禁用策略實(shí)戰(zhàn)指南(含配置優(yōu)化建議)
今天分享一下SWAP交換分區(qū)。
1. 什么是 SWAP?
在 Linux 系統(tǒng)中,SWAP(交換空間)是物理內(nèi)存(RAM)的一個(gè)補(bǔ)充區(qū)域,當(dāng)物理內(nèi)存(RAM)不足時(shí),系統(tǒng)會(huì)將一些不活躍的數(shù)據(jù)轉(zhuǎn)移到 SWAP(磁盤空間),以釋放內(nèi)存供活躍進(jìn)程使用。SWAP 既可以是一個(gè)獨(dú)立的分區(qū),也可以是一個(gè)普通文件。
雖然 SWAP 的訪問速度遠(yuǎn)低于 RAM,但它能防止系統(tǒng)因內(nèi)存耗盡而崩潰。
查看交換分區(qū):
free -h
進(jìn)一步查看當(dāng)前 SWAP 文件/分區(qū):
swapon --show
2. 如何禁用 SWAP
在某些場景下(如高性能數(shù)據(jù)庫、Docker 容器環(huán)境、Kubernetes 節(jié)點(diǎn)),禁用 SWAP 可以提高性能與系統(tǒng)可預(yù)測性。
(1) 臨時(shí)禁用 SWAP
這種方式重啟后會(huì)失效。
swapoff -a
(2) 永久禁用 SWAP
# 注釋掉包含swap的行
sed -ri 's/.*swap.*/#&/' /etc/fstab
驗(yàn)證是否關(guān)閉:
free -h
從圖片可以看到,swap分區(qū)已經(jīng)被禁用了,目前沒有容量。
3. 如何啟用 SWAP
如果你是在低配機(jī)器或內(nèi)存容易吃緊的環(huán)境中,啟用 SWAP 是非常必要的。
(1) 啟用SWAP 分區(qū)或文件
swapon -a
(2) 創(chuàng)建新的 SWAP 文件
使用 dd 創(chuàng)建 2G SWAP 文件:
dd if=/dev/zero of=/swapfile bs=1M count=2048
設(shè)置權(quán)限:
chmod 600 /swapfile
格式化為 SWAP:
mkswap /swapfile
啟用 SWAP:
swapon /swapfile
添加到 /etc/fstab 實(shí)現(xiàn)永久掛載:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
4. 優(yōu)化策略
主要是調(diào)整 Swappiness 值,swappiness 是一個(gè)內(nèi)核參數(shù),用于控制系統(tǒng)何時(shí)使用 SWAP。
- 值范圍:0 ~ 100
- 值越小 → 越少使用 SWAP(更偏重使用 RAM)
- 默認(rèn)值為 60,通常建議設(shè)置為 10~20
(1) 查看當(dāng)前值
cat /proc/sys/vm/swappiness
(2) 臨時(shí)設(shè)置(重啟失效)
sysctl vm.swappiness=10
(3) 永久設(shè)置
編輯配置文件:
vi /etc/sysctl.conf
添加或修改這一行:
vm.swappiness=10
保存并執(zhí)行:
sysctl -p
5. 實(shí)際場景建議
場景 | 建議策略 | 說明 |
高性能數(shù)據(jù)庫服務(wù)器 | 禁用 SWAP 或 swappiness=1 | 防止數(shù)據(jù)庫因?yàn)閮?nèi)存交換而性能下降 |
Docker / Kubernetes 節(jié)點(diǎn) | 禁用 SWAP(K8s 要求) | 容器環(huán)境對內(nèi)存調(diào)度更敏感 |
桌面系統(tǒng)(8GB+) | swappiness=10 | 避免 SWAP 影響系統(tǒng)響應(yīng)速度 |
輕量 VPS(1~2G RAM) | 啟用 SWAP,swappiness=20~30 | 防止內(nèi)存溢出崩潰 |
游戲/圖形工作站 | 啟用 SWAP,但盡量減少使用 | 某些 GPU 程序會(huì)觸發(fā)內(nèi)存高占用 |
6. 常見問題與建議
(1) SWAP 會(huì)損傷 SSD 嗎?
頻繁寫入確實(shí)會(huì)影響 SSD 壽命,但現(xiàn)代 SSD 壽命普遍較長,實(shí)際影響較小。如果擔(dān)心,可以設(shè)置較低的 swappiness,減少 SWAP 觸發(fā)頻率。
(2) 關(guān)閉 SWAP 會(huì)讓系統(tǒng)更快嗎?
不一定。系統(tǒng)可能因此頻繁觸發(fā) OOM Killer 殺掉進(jìn)程。高 RAM 機(jī)器(>8G)受益明顯,小內(nèi)存機(jī)器則風(fēng)險(xiǎn)大。