CentOS如何手動添加/刪除虛擬內存SWAP交換文件&分區?

CentOS的如何手動添加/刪除虛擬內存SWAP交換文件&分區?

Swap分區是什麼? SWAP即交換區,SWAP空間的作用是,當Linux系統的物理內存不足時,便將物理內存部分空間釋放,用於補充物理內存不足的情況,以讓當前在運行的軟件程序使用。

使用Swap交換分區的好處

SWAP的優化設置調整,對於Web服務器的性能應用非常重要,若物理內存不足,可以通過虛擬內存SWAP分區的的設置,有效節約LINUX系統升級的開支。

Swap分區大小應該設置多少才對?

根據實際系統內存的大小、所用的軟件,來決定設置SWAP交換分區的大小。

CentOS、RHEL6的建議如下,請根據具體情形做合適的優化調整:

  • 4GB of RAM requires a minimum of 2GB of swap space 4GB以下內存建議2GB以上Swap空間
  • 4GB to 16GB RAM requires a minimum of 4GB of swap space 4GB-16GB內存建議4GB以上Swap空間
  • 16GB to 64GB of RAM requires a minimum of 8GB of swap space 16GB-64GB內存建議8GB以上Swap空間
  • 64GB to 256GB of RAM requires a minimum of 16GB of swap space 64GB-256GB內存建議16GB以上Swap空間

查看當前的內存和swap 空間大小(默認單位為k, -m 單位為M):
free -m

顯示結果如下(示例):
total used free shared buffers cached
電話:498 347 151 0 101 137
-/+ buffers/cache: 108 390
交換:0 0 0

Swap為0表示沒有,就要手動添加SWAP交換分區。

(注意事項:OPENVZ架構的VPS,不支持手動添加SWAP交換分區)

添加SWAP交換空間有2種:

  • 1、添加1個SWAP交換分區。
  • 2、添加1個SWAP交換文件。

推薦添加SWAP交換分區;要是所剩空閒空間不多,就添加交換文件。

查看SWAP信息(包括SWAP交換文件和分區的詳細信息):

swapon -s
有人
cat /proc/swaps

(若無顯示SWAP數值,表示尚未添加SWAP空間)

下面是如何創建SWAP文件的示例:

1、創建1GB的swap

dd if=/dev/zero of=/home/swap bs=1k count=1024k
mkswap /swapfile
swapon /swapfile
echo "/home/swap swap swap default 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

2、創建2GB的swap

dd if=/dev/zero of=/home/swap bs=1k count=2048k
mkswap /home/swap
swapon /home/swap
echo "/home/swap swap swap default 0 0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

(完)

下面是另外詳細參考說明:

1、使用dd命令創建一個swap交換文件

1G內存
dd if=/dev/zero of=/home/swap bs=1024 count=1024000

2G內存:
dd if=/dev/zero of=/home/swap bs=1k count=2048k

這樣就建立一個/home/swap的文件,1024000大小為1G,2048k為2G。

2、製作為swap格式文件:
mkswap /home/swap

3、再用swapon命令把這個文件分區掛載swap分區
/sbin/swapon /home/swap

我們用free -m命令看一下,發現已經有交換文件了。
free -m

但是重啟系統後,swap交換文件又變成0了。

4、為防止重啟後swap交換文件變成0,要修改/etc/fstab文件

在/etc/fstab 文件末尾(最後一行)加上:
/home/swap swap swap default 0 0

(這樣就算重啟系統,swap交換文件還是有值)

或直接使用以下命令,添加重啟自動掛載配置命令:
echo "/home/swap swap swap default 0 0
" | sudo tee -a /etc/fstab

VPS在什麼情況下才用到SWAP交換的空間?

也不是等所有的物理內存都消耗完畢之後,才去使用SWAP交換的空間,而是由swappiness 的參數值來決定。

[root@ ~]# cat /proc/sys/vm/swappiness
60
(該值默認值是60)

  • swappiness=0表示最大限度使用物理內存,然後才是SWAP交換的空間,
  • swappiness=100表示積極的使用SWAP交換的空間,並且把內存上的數據及時的搬運到swap空間裡面。

怎樣設置swappiness參數?

臨時修改:

[root@ ~]# sysctl vm.swappiness=10
虛擬機交換性 = 10
[root@ ~]# cat /proc/sys/vm/swappiness
10
(此臨時修改已生效,但若重啟系統,會變回默認值60)

永久修改:

在/etc/sysctl.conf文件裡添加如下參數:
vm.swappiness=10

(保存,重啟後便生效)

或直接輸入命令:
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

刪除SWAP交換文件

1、先停止swap分區

/sbin/swapoff /home/swap

2、刪除swap分區文件

rm -rf /home/swap

3、刪除自動掛載配置命令

vi /etc/fstab

這行刪除:

/home/swap swap swap default 0 0

(這樣就能把手動增加的交換文件刪除了)

注意事項:

  • 1、只能使用root用戶進行增加或刪除swap的操作。
  • 2、安裝VPS系統時所分配的swap分區好像無法刪除。
  • 3、swap分區一般為內存的2倍。

希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《CentOS如何手動添加/刪除虛擬內存SWAP交換文件&分區? 》,對您有幫助。

歡迎分享本文鏈接:https://www.chenweiliang.com/cwl-158.html

歡迎加入陳溈亮博客的Telegram 頻道,獲取最新更新!

🔔 率先在頻道置頂目錄獲取寶貴的《ChatGPT 內容行銷AI 工具使用指南》! 🌟
📚 這份指南蘊含價值巨大,🌟難逢的機遇,切勿錯失良機! ⏰⌛💨
喜歡就分享和按贊!
您的分享和按贊,是我們持續的動力!

 

發表評論

您的電子郵箱地址不會被公開。 必填項已用 * 標註

滾動到頂部