丨版權說明 : 《關於CentOS7下swap分區創建(添加),刪除以及相關配置》於當前CSDN博客和乘月網屬同一原創,轉載請說明出處,謝謝。
小叨下背景:筆者的服務器內存只有1g,少得可憐。之前使用apache,不堪忍受其過量的內存消耗,網站卡得想哭,數據庫也不斷地崩,無奈投入nginx的懷抱並且已經喜歡上了nginx,具體請看上文《CentOS7部署輕量級web服務器nginx+php》。
然而過了幾個月後數據庫還是繼續崩,經查詢mysql日誌還是因爲內存吃不消,折騰幾番發現mysql自身就不是省油的燈,一度佔用了500M的內存------我捂住嘴巴不讓自己哭出來,還順便來了段Bbox。
這兩天我那誰一直在折騰RedHat安裝Oracle數據,該數據庫有一項要求就是需要一定空間的swap分區。雖然早有耳聞swap分區,而且筆者經常折騰windows下的虛擬內存(swap和虛擬內存是類似概念),卻很慚愧一直沒想到這個辦法,於是------進入今天的主題:
在添加swap分區之前我們可以瞭解下當前系統swap是否存在以及使用情況,可用:
free -h 或 swapon -s
瞭解硬盤使用情況(一般/dev/vda1爲掛載硬盤):
df -hal
1.添加swap分區使用dd命令創建名爲swapfile 的swap交換文件(文件名和目錄任意):
dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152
或
dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
科普:if(即輸入文件,input file),of(即輸出文件,output file)。dev/zero是Linux的一種特殊字符設備(輸入設備),可以用來創建一個指定長度用於初始化的空文件,如臨時交換文件,該設備無窮盡地提供0,可以提供任何你需要的數目。 bs=1024 :單位數據塊(block)同時讀入/輸出的塊字節大小爲1024 個字節即1KB,bs(即block size)。count=2048000 :數據塊(block)數量爲2048000 ,即2048000個1KB。可以計算swap分區的容量爲:1KB *2097152=1KB *1024(k)*1024*2=2097152=2G。(dd命令裏的單位M表示1024*1024,k表示1024)。
回車後,會執行2g的讀寫操作,系統會卡一段時間,耐心等待執行結果。
執行完畢,對交換文件格式化並轉換爲swap分區:
mkswap /var/swapfile
掛載並激活分區:swapon /var/swapfile
執行以上命令可能會出現:“不安全的權限 0644,建議使用 0600”類似提示,不要緊張,實際上已經激活了,可以忽略提示,也可以聽從系統的建議修改下權限:chmod -R 0600 /var/swapfile
這時候可以用 free -h 或 swapon -s命令查看新swap分區是否正常添加並激活使用。
修改 fstab 配置,設置開機自動掛載該分區: vim /etc/fstab
在fstab文件末尾追加如下內容後:wq!保存即可:/var/swapfile swap swap defaults 0 0
或直接對fstab進行echo追加:
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
2.刪除某swap分區
先停止正在使用swap分區:swapoff /var/swapfile
刪除swap分區文件rm -rf /var/swapfile
刪除或註釋掉我們之前在fstab文件裏追加的開機自動掛載配置內容:/var/swapfile swap swap defaults 0 0
3.更改Swap配置(進階級)
swappiness值(0-100),系統對swap分區的依賴程度,越高則越傾向於使用swap分區。
當然,高度依賴swap會造成物理內存遠未使用完,就使用swap分區,我們知道swap分區性能遠不如物理內存,這反而降低了系統性能,違背了我們創建swap分區的初衷。
我們希望在物理內存即將滿荷時再使用swap,這就決定了swappiness值一般爲10-60爲宜,固態硬盤可以偏高些。
查看當前的swappiness數值:
cat /proc/sys/vm/swappiness
修改swappiness值,這裏以50爲例。sysctl vm.swappiness=50
若希望vm.swappiness=50永久生效,則需要修改sysctl配置文件,直接echo追加配置內容,重啓系統後即可生效:echo "vm.swappiness = 50" >> /etc/sysctl.conf