一.swap交換分區
Swap分區在系統的實體記憶體不夠用的時候,把硬碟空間中的一部分空間釋放出來,以供目前運作的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時儲存到Swap分區中,等到那些程式要運作時,再從Swap分區中恢複儲存的資料到記憶體中。
用于當實體記憶體不足時,調用硬碟的一部分來充當記憶體使用,這個就是所謂的虛拟記憶體。其類似Windows的pagesfile.sys.
二.swap分區大小
分區時一般設定:swap分區的大小=1.5*實體記憶體容量。當記憶體比較小的時候(8G或8G以下),可以為記憶體的1.5-2倍(因為記憶體小的時候,記憶體很容易被充滿,這個時候就要把交換分區分大點)。
正常情況下,當記憶體充足的時候,swap分區是不會被使用的,是以,一旦發生記憶體充足時,而swap使用了很多,說明應用程式等程序有記憶體洩露,此時就要和開發程式人員一起來分析哪裡記憶體洩露,當系統使用swap分區用的越多,系統性能反而會下降,某些大型資料庫也可能不使用swap分區,也是可以考慮的,不過,這也會帶來記憶體耗盡,服務直接挂掉的風險。而swap是記憶體不夠時的一個緩沖地帶。雖然慢,伺服器不會挂掉,這點就仁者見仁了。
三.linux中增加swap分區檔案的步驟方法:
1、檢查目前的分區情況(使用free -m或cat /proc/swaps ):
<code>[root@master ~]</code><code># free -m</code>
<code> </code><code>total used </code><code>free</code> <code>shared buffers cached</code>
<code>Mem: 980 872 108 0 46 726</code>
<code>-/+ buffers</code><code>/cache</code><code>: 99 881</code>
<code>Swap: 1499 0 1499</code>
2、增加交換分區檔案及大小:
檢查沒有swap,下面就需要增加:
判定新交換檔案的大小,将大小乘以1024來判定塊的大小。例如,大小為64MB的交換檔案的塊大小為65536,在 shell 提示下以根使用者身份鍵入以下指令,其中的 count 等于想要的塊大小。
<code>[root@iZ2zee7gmybverl53rfZ ~]</code><code># dd if=/dev/zero of=/var/swap bs=1024 count=1024000</code>
<code>1024000+0 records </code><code>in</code>
<code>1024000+0 records out</code>
<code>1048576000 bytes (1.0 GB) copied, 27.1894 s, 38.6 MB</code><code>/s</code>
<code>[root@iZ2zee7gmybverl53rfZ ~]</code><code># ll /var/swap </code>
<code>-rw-r--r-- 1 root root 1048576000 Nov 16 14:20 </code><code>/var/swap</code>
<code>[root@iZ2zee7gmy40tbverl53rfZ ~]</code><code># ll -h /var/swap </code>
<code>-rw-r--r-- 1 root root 1000M Nov 16 14:20 </code><code>/var/swap</code>
3.使用以下指令來設定交換檔案:
<code>[root@iZ2zee7gmybverl53rfZ ~]</code><code># mkswap /var/swap </code>
<code>mkswap: </code><code>/var/swap</code><code>: warning: don't erase bootbits sectors</code>
<code> </code><code>on whole disk. Use -f to force.</code>
<code>Setting up swapspace version 1, size = 1023996 KiB</code>
<code>no label, UUID=fe9d1189-aaa7-4744-a056-5126ee051632</code>
<code>[root@iZ2zee7gmy40tbverl53rfZ ~]</code><code>#</code>
4.啟用交換分區檔案:
要立即啟用交換檔案而不是在引導時自動啟用,使用以下指令:
[root@db2 root]# swapon /home/swap
檢查增加後的交換情況:
5.加入開機挂載
要在引導時啟用,編輯 /etc/fstab 檔案來包含以下行(/var/swap swap swap defaults 0 0 ):
<code>[root@iZ2zee7gmybverl53rfZ ~]</code><code># cp /etc/fstab /etc/fstab.bak </code>
<code>###操作挂載檔案時,一定要備份,否則修改失敗時,會造成不能開機的危險。</code>
<code>[root@iZ2zee7gmy40tbverl53rfZ ~]</code><code># ll /etc/fstab* ###備份完畢後,檢查是否備份成功</code>
<code>-rw-r--r-- 1 root root 693 Nov 16 14:28 </code><code>/etc/fstab</code>
<code>-rw-r--r-- 1 root root 617 Nov 16 14:27 </code><code>/etc/fstab</code><code>.bak</code>
<code>[root@iZ2zee7gmybverl53rfZ ~]</code><code># cat /etc/fstab ## 修改完挂載檔案後檢視</code>
<code>[root@master ~]</code><code># cat /etc/fstab </code>
<code>#</code>
<code># /etc/fstab</code>
<code># Created by anaconda on Mon Sep 25 15:36:47 2017</code>
<code># Accessible filesystems, by reference, are maintained under '/dev/disk'</code>
<code># See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info</code>
<code>UUID=16374817-681c-4c75-95dd-a6fe323ceb03 / ext4 defaults 1 1</code>
<code>UUID=53605068-3d62-4c37-9d51-29b9e7927b01 </code><code>/boot</code> <code>ext4 defaults 1 2</code>
<code>UUID=e9e1c650-32df-40be-912b-00231844173a swap swap defaults 0 0</code>
<code>tmpfs </code><code>/dev/shm</code> <code>tmpfs defaults 0 0</code>
<code>devpts </code><code>/dev/pts</code> <code>devpts gid=5,mode=620 0 0</code>
<code>sysfs </code><code>/sys</code> <code>sysfs defaults 0 0</code>
<code>proc </code><code>/proc</code> <code>proc defaults 0 0</code>
<code>/tmp/swap</code> <code>swap swap defaults 0 0</code>
系統下次引導時,它就會啟用建立的交換檔案 。
再次檢查添加後的情況:
<code>[root@master ~]</code><code># free -m</code>
<code>Mem: 980 111 868 0 9 27</code>
<code>-/+ buffers</code><code>/cache</code><code>: 74 906</code>
<code>Swap: 2499 0 2499</code>
<code></code>
本文轉自 藍葉子Sheep 51CTO部落格,原文連結:http://blog.51cto.com/dellinger/1983692,如需轉載請自行聯系原作者