1. 程式人生 > >CentOS7下swap分割槽建立(新增),刪除以及相關配置

CentOS7下swap分割槽建立(新增),刪除以及相關配置

 

小叨下背景:筆者的伺服器記憶體只有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
---------------------


 

參考網站:

https://blog.csdn.net/ausboyue/article/details/73433990