linux 增加虛擬內存swap(使用文件)


1、簡介

如果你的服務器的總是報告內存不足,並且時常因為內存不足而引發服務被強制kill的話,在不增加物理內存的情況下,啟用swap交換區作為虛擬內存是一個不錯的選擇。    

為了測試一些功能我在阿里雲購買了1核1G的ECS服務器幾台(最便宜的了,再貴舍不得啊),一台服務器就安裝了LANMP,redis,memcache,elk等等耗內存較大的軟件,內存各種不夠用啊,這時候虛擬內存就派上用場了。

 虛擬內存一般設置為物理內存的2倍即可,多了也是浪費硬盤。

2、新增swap分區

  由於服務器已經安裝了各種軟件,懶得重新給硬盤分區,所以這里使用文件作為swap分區 ,下面操作需要在root用戶下操作

  

  使用 free -h 查看當前內存占用情況,可以看到物理內存所剩無幾,下面的swap也是使用的文件作為虛擬內存使用的

 

  創建要作為swap分區的文件:增加1GB大小的交換分區,則命令寫法如下,其中的count等於想要的塊的數量(bs*count=文件大小),如下面是2G

  # dd if=/dev/zero of=/root/swapfile2 bs=1M count=2048

  

  這里我使用的of為/root/swapfile2 ,可以看到該文件是新創建的,這時候這個文件還不能直接使用為swap文件

 

  修改文件權限,如不修改,在啟用swap文件的時候會提示下面信息(不影響使用,建議修改)

  # chmod 0600 /root/swapfile2

  

 

 

 

  格式化為交換分區文件,建立swap的文件系統,/root/swapfile2需要與上面的of的值一致,這個目錄可以自定義

  # mkswap /root/swapfile2

  

 

   

  啟用swap文件:

  # swapon /root/swapfile2

  

  可以看到未啟用時虛擬內存為2G,啟用后內存增加了2G

 

  使系統開機時自啟用

  # vim /etc/fstab

  

  在文件/etc/fstab中添加一行

  /root/swapfile2 swap swap defaults 0 0

3、調整swap空間使用的優先級

  如果內存夠大,應當告訴 linux 不必太多的使用 SWAP 分區, 可以通過修改 swappiness 的數值。

  swappiness=0的時候表示最大限度使用物理內存,然后才是 swap空間,swappiness=100的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間里面。

  各個操作系統的優先級可能都不一樣,如果不調整,你會發現添加的虛擬內存幾乎沒有用到

 

  查看當前swappiness值

  # cat /proc/sys/vm/swappiness

  

  修改swappiness值為60(臨時修改,重啟后即還原為默認值)

  # sudo sysctl vm.swappiness=60

  

  

  永久修改swappiness默認值(重啟生效)

  # vim /etc/sysctl.conf

  找到vm.swappiness ,如果沒有則需要手動添加一行  vm.swappiness = 60 保存即可

  

  

 

 

 

  

 

  

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM