一.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 ):
[root@iZ2zee7gmybverl53rfZ ~]# free -m total used free shared buffers cached Mem: 3828 3359 469 0 104 186 -/+ buffers/cache: 3068 760 Swap: 0 0 0 [root@iZ2zee7gmybverl53rfZ ~]#
2、增加交換分區文件及大小:
檢查沒有swap,下面就需要增加:
判定新交換文件的大小,將大小乘以1024來判定塊的大小。例如,大小為64MB的交換文件的塊大小為65536,在 shell 提示下以根用戶身份鍵入以下命令,其中的 count 等於想要的塊大小。
[root@iZ2zee7gmybverl53rfZ ~]# dd if=/dev/zero of=/var/swap bs=1024 count=1024000 1024000+0 records in 1024000+0 records out 1048576000 bytes (1.0 GB) copied, 27.1894 s, 38.6 MB/s [root@iZ2zee7gmybverl53rfZ ~]# ll /var/swap -rw-r--r-- 1 root root 1048576000 Nov 16 14:20 /var/swap [root@iZ2zee7gmy40tbverl53rfZ ~]# ll -h /var/swap -rw-r--r-- 1 root root 1000M Nov 16 14:20 /var/swap
3.使用以下命令來設置交換文件:
[root@iZ2zee7gmybverl53rfZ ~]# mkswap /var/swap mkswap: /var/swap: warning: don't erase bootbits sectors on whole disk. Use -f to force. Setting up swapspace version 1, size = 1023996 KiB no label, UUID=fe9d1189-aaa7-4744-a056-5126ee051632 [root@iZ2zee7gmy40tbverl53rfZ ~]#
4.啟用交換分區文件:
要立即啟用交換文件而不是在引導時自動啟用,使用以下命令:
[root@db2 root]# swapon /var/swap
檢查增加后的交換情況:
[root@iZ2zee7gmybverl53rfZ ~]# free -m total used free shared buffers cached Mem: 3828 3714 114 0 43 593 -/+ buffers/cache: 3077 751 Swap: 999 0 999 [root@iZ2zee7gmybverl53rfZ ~]#
5.加入開機掛載
要在引導時啟用,編輯 /etc/fstab 文件來包含以下行(/var/swap swap swap defaults 0 0 ):
[root@iZ2zee7gmybverl53rfZ ~]# cp /etc/fstab /etc/fstab.bak ###操作掛載文件時,一定要備份,否則修改失敗時,會造成不能開機的危險。
[root@iZ2zee7gmy40tbverl53rfZ ~]# ll /etc/fstab* ###備份完畢后,檢查是否備份成功
-rw-r--r-- 1 root root 693 Nov 16 14:28 /etc/fstab
-rw-r--r-- 1 root root 617 Nov 16 14:27 /etc/fstab.bak
[root@iZ2zee7gmybverl53rfZ ~]# cat /etc/fstab ## 修改完掛載文件后查看 # # /etc/fstab # Created by anaconda on Thu Feb 23 07:28:22 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=3d083579-f5d9-4df5-9347-8d27925805d4 / ext4 defaults 1 1 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /var/swap swap swap defaults 0 0 [root@iZ2zee7gmybverl53rfZ ~]#
系統下次引導時,它就會啟用新建的交換文件 。
再次檢查添加后的情況:
[root@iZ2zee7gmybverl53rfZ ~]# free -m total used free shared buffers cached Mem: 3828 3717 111 0 43 595 -/+ buffers/cache: 3077 750 Swap: 999 0 999 [root@iZ2zee7gmybverl53rfZ ~]#
