小叨下背景:筆者的服務器內存只有1g澈圈,少得可憐陆错。之前使用apache淆珊,不堪忍受其過量的內存消耗捌臊,網站卡得想哭宇驾,數據庫也不斷地崩噪沙,無奈投入nginx的懷抱并且已經喜歡上了nginx次哈,具體請看上文《CentOS7部署輕量級web服務器nginx+php》螺捐。
在添加swap分區(qū)之前我們可以了解下當前系統(tǒng)swap是否存在以及使用情況码秉,可用:
1. free –h 或 swapon –s
了解硬盤使用情況(一般/dev/vda1為掛載硬盤):
1. df –hal
--------------------------------------------------
一.添加swap分區(qū)
使用dd命令創(chuàng)建名為swapfile 的swap交換文件(文件名和目錄任意):
1. dd if=/dev/zero of=/var/swapfile bs=1024 count=2097152
或
dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
[root@aliyun ~]# dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
記錄了2097152+0 的讀入
記錄了2097152+0 的寫出
2147483648字節(jié)(2.1 GB)已復制逮矛,31.7458 秒,67.6 MB/秒
科普:if(即輸入文件,input file)转砖,of(即輸出文件,output file)须鼎。dev/zero是Linux的一種特殊字符設備(輸入設備),可以用來創(chuàng)建一個指定長度用于初始化的空文件府蔗,如臨時交換文件晋控,該設備無窮盡地提供0,可以提供任何你需要的數目姓赤。 bs=1024 :單位數據塊(block)同時讀入/輸出的塊字節(jié)大小為1024 個字節(jié)即1KB赡译,bs(即block size)。count=2048000 :數據塊(block)數量為2048000 不铆,即2048000個1KB蝌焚。可以計算swap分區(qū)的容量為:1KB 2097152=1KB 1024(k)10242=2097152=2G誓斥。(dd命令里的單位M表示1024*1024,k表示1024)综看。
回車后,會執(zhí)行2g的讀寫操作岖食,系統(tǒng)會卡一段時間红碑,耐心等待執(zhí)行結果。
執(zhí)行完畢,對交換文件格式化并轉換為swap分區(qū):
1. mkswap /var/swapfile
[root@aliyun ~]# mkswap /var/swapfile
正在設置交換空間版本 1析珊,大小 = 2097148 KiB
無標簽羡鸥,UUID=f88182d5-1155-4cf4-8cb9-5db460d9ac4e
掛載并激活分區(qū):
1. swapon /var/swapfile
[root@aliyun ~]# swapon /var/swapfile
swapon: /var/swapfile:不安全的權限 0644,建議使用 0600忠寻。
執(zhí)行以上命令可能會出現:“不安全的權限 0644惧浴,建議使用 0600”類似提示,不要緊張奕剃,實際上已經激活了衷旅,可以忽略提示,也可以聽從系統(tǒng)的建議修改下權限:
1. chmod -R 0600 /var/swapfile
這時候可以用 free –h 或 swapon –s命令查看新swap分區(qū)是否正常添加并激活使用纵朋。
修改 fstab 配置柿顶,設置開機自動掛載該分區(qū):
1. vim /etc/fstab
在fstab文件末尾追加如下內容后:wq!保存即可:
/var/swapfile swap swap defaults 0 0
或直接對fstab進行echo追加:
1. echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
--------------------------------------------------
二. 刪除某swap分區(qū)
先停止正在使用swap分區(qū):
1. swapoff /var/swapfile
刪除swap分區(qū)文件
1. rm -rf /var/swapfile
刪除或注釋掉我們之前在fstab文件里追加的開機自動掛載配置內容:
/var/swapfile swap swap defaults 0 0
--------------------------------------------------
三. 更改Swap配置(進階級)
swappiness值(0-100),系統(tǒng)對swap分區(qū)的依賴程度操软,越高則越傾向于使用swap分區(qū)嘁锯。
當然,高度依賴swap會造成物理內存遠未使用完聂薪,就使用swap分區(qū)家乘,我們知道swap分區(qū)性能遠不如物理內存,這反而降低了系統(tǒng)性能藏澳,違背了我們創(chuàng)建swap分區(qū)的初衷仁锯。
我們希望在物理內存即將滿荷時再使用swap,這就決定了swappiness值一般為10-60為宜翔悠,固態(tài)硬盤可以偏高些业崖。
查看當前的swappiness數值:
1. cat /proc/sys/vm/swappiness
修改swappiness值,這里以50為例凉驻。
1. sysctl vm.swappiness=50
若希望vm.swappiness=50永久生效腻要,則需要修改sysctl配置文件,直接echo追加配置內容涝登,重啟系統(tǒng)后即可生效:
1. echo "vm.swappiness = 50" >> /etc/sysctl.conf
--------------------------------------------------
四. 增加(擴大)swap分區(qū)大小
- 首先我們來查看swap空間的大小
# free -m
total used free shared buffers cached
Mem: 2026 1931 95 0 15 1789
-/+ buffers/cache: 127 1899
Swap: 3074 2 3071
- 用dd命令創(chuàng)建一個2G大小的文件(102410242=2097152)
dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152
[root@aliyun ~]# dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152
記錄了2097152+0 的讀入
記錄了2097152+0 的寫出
2147483648字節(jié)(2.1 GB)已復制雄家,48.2387 秒,44.5 MB/秒
- 將該文件創(chuàng)建為linux swap
mkswap /var/swapfile1
[root@aliyun ~]# mkswap /var/swapfile1
正在設置交換空間版本 1胀滚,大小 = 2097148 KiB
無標簽趟济,UUID=43c47001-58a3-43ec-8510-bc8b2ad2ff51
- 激活該文件
swapon /var/swapfile1
[root@aliyun ~]# swapon /var/swapfile1
swapon: /var/swapfile1:不安全的權限 0644,建議使用 0600咽笼。
- 至此添加swap空間成功顷编,但此時只要系統(tǒng)一重啟就會丟失這個swap空間,所以我們要設置一下/etc/fstab文件剑刑,
在文件的末尾加上/var/swapfile1 swap swap defaults 0 0
- 查看大小 free -h
[root@aliyun ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 1.1G 73M 22M 606M 496M
Swap: 4.0G 1.0G 3.0G