1. 什么是swap分區
Swap分區在系統的物理內存不夠用的時候,把物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區中,等到那些程序要運行時,再從Swap分區中恢復保存的數據到內存中。swap分區是從磁盤空間劃分而來,有的是單獨使用一個分區,有的是把一個大文件當做swap。
2. 官方關于swap設置
Redhat6.4 官方推薦(我們使用CentOS 6.4)
推薦的系統交換空間
系統中的RAM數量 建議交換空間 如果允許休眠,建議使用交換空間
?2GB RAM的2倍 RAM數量的3倍
> 2GB - 8GB 等于RAM的數量 RAM的2倍
> 8GB - 64GB 至少4 GB RAM的1.5倍
> 64GB 至少4 GB 不建議休眠
因為有些系統會允許休眠狀態,如果不設置swap會無法啟動,就像windows系統使用休眠設置虛擬內存一樣。
Mysql 5.6 和5.7的建議
mysql5.6
是說在物理內存足夠的情況下,可以刪除swap,因為系統在有些情況下會及時內存夠用使用swap,若使用會因為I/0變高導致mysql故障。Mysql建議刪除。
oracle建議
另外在其它博客中看到下面一個推薦設置,當然我不清楚其怎么得到這個標準的。是否合理也無從考證。可以作為一個參考。
4G以內的物理內存,SWAP 設置為內存的2倍。
4-8G的物理內存,SWAP 等于內存大小。
8-64G 的物理內存,SWAP 設置為8G。
64-256G物理內存,SWAP 設置為16G。
當然這么多建議標準,很讓人無所適從,不知道該怎么設置。其實根據系統實際情況和內存的負荷綜合考慮,但是實際情況又是什么樣呢?
個人建議從如下幾個考慮:
3. 如何增加或者刪除swap分區
1、查看swap空間和使用情況
[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1[root@localhost-zabbix ~]# free -m total used free shared buffers cachedMem: 1877 565 1311 0 132 188-/+ buffers/cache: 244 1632Swap: 2047 0 2047
2、關閉swap
[root@localhost-zabbix ~]# swapoff /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority
3、啟用之前關閉分區
[root@localhost-zabbix ~]# swapon /dev/dm-1[root@localhost-zabbix ~]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1
4、縮小Swap分區
如果是增大Swap分區大小,那么就需要擴展正在使用的swap分區的邏輯卷,此處使用lvreduce命令收縮邏輯卷
[root@getlnx14uat ~]# lvreduce -L 8G /dev/mapper/VolGroup00-LogVol01 WARNING: Reducing active logical volume to 8.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce LogVol01? [y/n]: y Reducing logical volume LogVol01 to 8.00 GB Logical volume LogVol01 successfully resized[root@getlnx14uat ~]# mkswap /dev/mapper/VolGroup00-LogVol01 #格式化Setting up swapspace version 1, size = 8589930 kB[root@getlnx14uat ~]# swapon -sFilename Type Size Used Priority[root@getlnx14uat ~]# swapon /dev/mapper/VolGroup00-LogVol01[root@getlnx14uat ~]# swapon -sFilename Type Size Used Priority/dev/mapper/VolGroup00-LogVol01 partition 8388600 0 -1
5、增大swap空間
如果磁盤還有剩余未分配空間可以新分區swap或者增大之前的swap
如果沒有磁盤未分配,可以新建分區文件,來增大swap
[root@localhost-zabbix ~]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000記錄了1024000+0 的讀入記錄了1024000+0 的寫出1048576000字節(1.0 GB)已復制,2.69212 秒,389 MB/秒[root@localhost-zabbix ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_localhostzabbix-lv_root 18G 4.7G 12G 29% /tmpfs 939M 0 939M 0% /dev/shm/dev/sda1 485M 33M 427M 8% /boot[root@localhost-zabbix ~]# mkswap /home/swapmkswap: /home/swap: warning: don't erase bootbits sectors on whole disk. Use -f to force.Setting up swapspace version 1, size = 1023996 KiBno label, UUID=74c16b0d-7d88-4384-b41e-b12cc93d4bbf[root@localhost-zabbix ~]# cd /home/[root@localhost-zabbix home]# lsswap[root@localhost-zabbix home]# mkswap swap mkswap: swap: warning: don't erase bootbits sectors on whole disk. Use -f to force.Setting up swapspace version 1, size = 1023996 KiBno label, UUID=7677912c-b337-4e83-9003-b736dec93d31[root@localhost-zabbix home]# free -m total used free shared buffers cachedMem: 1877 1611 265 0 135 1192-/+ buffers/cache: 283 1593Swap: 2047 0 2047[root@localhost-zabbix home]# swapon swap [root@localhost-zabbix home]# free -m total used free shared buffers cachedMem: 1877 1612 265 0 135 1192-/+ buffers/cache: 284 1592Swap: 3047 0 3047[root@localhost-zabbix home]# swapon -sFilename Type Size Used Priority/dev/dm-1 partition 2097144 0 -1/home/swap file 1023992 0 -2
我們可以看到上面是有分區文件的方式增大了swap空間。但是這里還有個問題就是重啟系統以后swap還是會變回去,這里需要修改/etc/fstab
增加:/home/swap swap swap default 0 0
刪除剛剛增加swap
swapoff /home/swaprm -rf /home/swapvi /etc/fstab/home/swap swap swap default 0 0
是有新的分區新建swap:
使用fdisk來創建交換分區(假設 /dev/sdb2 是創建的交換分區)
mkswap /dev/sdb2swapon /dev/sdb2vi /etc/fstab/dev/sdb2 swap swap defaults 0 0
6、修改swappiness
swappiness參數值說明vm.swappiness = 0 僅在內存不足的情況下--當剩余空閑內存低于vm.min_free_kbytes limit時,使用交換空間。 vm.swappiness = 1 內核版本3.5及以上、Red Hat內核版本2.6.32-303及以上,進行最少量的交換,而不禁用交換。 vm.swappiness = 10當系統存在足夠內存時,推薦設置為該值以提高性能。 vm.swappiness = 60默認值vm.swappiness = 100 內核將積極的使用交換空間# sysctl -a | grep vm.swappiness 查看swappinessvm.swappiness = 30# echo 10 > /proc/sys/vm/swappiness 臨時修改# sysctl -a | grep vm.swappiness# vm.swappiness = 10# sysctl -w vm.swappiness=10 臨時修改vm.swappiness = 10# cat /proc/sys/vm/swappiness10在/etc/sysctl.conf中編輯,增加如下參數(如果存在的話)vm.swappiness = 10 永久修改 需要重啟
特別注意:
在不影響業務和系統,物理內存足夠情況下,優先建議使用最后一種修改swappiness這樣可以保證在優先使用物理內存而在物理內存不足的情況下使用swap防止內存溢出。根據查詢資料建議設置值10
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答