『壹』 linux Swap 絀洪棿綆$悊涓庝紭鍖栨寚鍗楋細浠庡熀紜浣跨敤鍒拌繃楂樺勭悊
Linux Swap絀洪棿綆$悊涓庝紭鍖栵細娣卞叆鐞嗚В涓庡疄鐢ㄧ瓥鐣
鍦↙inux鐨勪笘鐣岄噷錛孲wap絀洪棿鏄鍐呭瓨綆$悊鐨勭寷闂峰叧閿緇勪歡錛屽畠宸у欏湴鎵婕旂潃鉶氭嫙鍐呭瓨鐨勮掕壊錛屽挨鍏跺湪鍐呭瓨緔у紶鏃訛紝鑳芥彁鍗囩郴緇熻祫婧愮殑鍒╃敤鐜囥傜劧鑰岋紝Swap絀洪棿騫墮潪鏃犻檺鍒剁殑欖旀硶錛屽叾浣跨敤涓嶅綋鍙鑳戒細瀵圭郴緇熸ц兘閫犳垚璐熼潰褰卞搷銆傛湰鏂囧皢甯︿綘鎺㈢儲Swap絀洪棿鐨勫熀紜鍘熺悊錛屾暀浣犲備綍鐩戞帶銆佽劇疆鍜屼紭鍖栵紝浠ュ簲瀵筍wap浣跨敤榪囬珮鏃剁殑鎸戞垬銆
Swap絀洪棿鐨勪綔鐢ㄥ湪浜庯紝褰撶墿鐞哛AM錛圧AM錛変笉鍫閲嶈礋鏃訛紝浼氬皢鏆傛椂涓嶆椿璺冪殑鏁版嵁縐誨姩鑷崇‖鐩樹笂鐨勯勭暀絀洪棿銆傝繖鐪嬩技綆鍗曪紝瀹炲垯鍏充箮緋葷粺鐨勭伒媧繪т笌紼沖畾鎬с備笉榪囷紝紜鐩樿誨啓閫熷害榪滀綆浜嶳AM錛岄戠箒鐨凷wap鎿嶄綔鍙鑳藉艱嚧鎬ц兘涓嬮檷錛屽洜姝わ紝鍚堢悊閰嶇疆Swap絀洪棿鑷沖叧閲嶈併
棣栧厛錛屼嬌鐢╢ree -m鍛戒護錛屼綘鍙浠ョ洿瑙傚湴鐪嬪埌鍐呭瓨鍜孲wap鐨勪嬌閫楀巻鐢ㄦ儏鍐點傞氳繃swapon --show鍛戒護錛屽彲浠ヨ︾粏浜嗚ВSwap鐨勫垎鍖烘垨鏂囦歡鐘舵併
錛1錛夊壋寤篠wap鏂囦歡錛氫嬌鐢╯udo fallocate鍒涘緩錛屼緥濡傚壋寤4GB鐨勬枃浠秙udo fallocate -l 4G /swapfile銆
錛2錛夋潈闄愯劇疆錛氱『淇濆彧鏈塺oot鏉冮檺鍙璁塊棶錛屽俿udo chmod 600 /swapfile銆
錛3錛夋牸寮忓寲涓篠wap錛氱敤mkswap鍛戒護鏍煎紡鍖栵紝濡俿udo mkswap /swapfile銆
錛4錛夊惎鐢ㄥ苟鎸佷箙鍖栵細涓存椂鍚鐢╯wapon錛屾案涔呯敓鏁堝垯闇娣誨姞鍒/etc/fstab銆
Swappiness鍙傛暟褰卞搷鍐呭瓨鍒癝wap鐨勫垏鎹錛岃皟鏁村畠鑳戒紭鍖栧唴瀛樹嬌鐢ㄣ傚厛鏌ョ湅褰撳墠鍊礆紝涓存椂鏀硅撅紝鐒跺悗姘鎬箙淇鏀歸厤緗銆
灝界Swap鍙浠ヨˉ鍏匯AM錛屼絾紜鐩樻ц兘褰卞搷鏄捐憲銆傚敖閲忎嬌鐢⊿SD浠ユ彁鍗嘢wap鎿嶄綔閫熷害錛岄伩鍏嶆ц兘鐡墮堛
Swap絀洪棿鍙鑳藉寘鍚鏁忔劅鏁版嵁錛岃板緱鍦ㄤ笉闇瑕佹椂浣跨敤swapoff鍛戒護鍏抽棴錛屽苟娓呴櫎swap鏂囦歡浠ヤ繚瀹夊叏銆
閫氳繃涓婅堪姝ラわ紝鎴戜滑鎴愬北鐭ユ悳鍔熸墿灞曚簡Linux緋葷粺Swap絀洪棿錛岃В鍐充簡鍙鑳界殑涓嶈凍銆傜悊瑙e苟綆$悊濂絊wap錛屽氨鍍忕粰緋葷粺鍔犺呬簡鍐呭瓨鎵╁睍鍣錛岀『淇濆湪鍐呭瓨鍘嬪姏涓嬶紝緋葷粺浠嶈兘淇濇寔騫崇ǔ榪愯屻傝繖鏄涓涓鎻愬崌緋葷粺鎬ц兘鍜岀ǔ瀹氭х殑瀹炵敤宸ュ叿錛屽煎緱姣忎釜Linux鐢ㄦ埛鎺屾彙銆
璁頒綇錛孲wap絀洪棿鐨勭$悊騫墮潪涓鍔蟲案閫革紝鍔ㄦ佽皟鏁村拰鐩戞帶Swappiness鍊礆紝閫夋嫨鍚堥傜殑紜鐩樼被鍨嬶紝閮芥槸紜淇濈郴緇熼珮鏁堣繍琛岀殑鍏抽敭銆傜幇鍦錛屼綘宸茬粡鍑嗗囧ソ鍦↙inux涓栫晫涓錛岀伒媧昏屾湁鏁堝湴綆$悊浣犵殑Swap絀洪棿浜嗐
『貳』 CentOS下SWAP分區建立及釋放內存詳解
方法一:
一、查看系統當前的分區情況:
free -m
二、創建用於交換分區的文件:
dd if=/dev/zero of=/whatever/swap bs=block_size (10M)count=number_of_block(3000)
三、設置交換分區文件:
mkswap /export/swap/swapfile
四、立即啟用交換分區文件:
swapon /whateever/swap
五、若要想使開機時自啟用,則需修改文件/etc/fstab中的swap行:
/whatever/swap swap swap defaults 0 0
方法二
增加交換分區空間的方法:
1.查看一下/etc/fstab確定目前的分區
2.swapoff /dev/hd**
3.free 看一下是不是停了.
4.fdisk 刪了停掉的swap分區
5.重新用FDISK建一個新的SWAP分區
6.mkswap /dev/hd**把新的分區做成swap
7.swapon /dev/hd**打開swap
8.修改/etc/fstab
操作實例:
1.查看系統Swap空間使用
# free
total used free shared buffers cached
Mem: 513980 493640 20340 0 143808 271780
-/+ buffers/cache: 78052 435928
Swap: 1052248 21256 1030992
2.在空間合適處創建swap文件
# mkdir swap
# cd swap
# dd if=/dev/zero of=swapfile bs=1024 count=10000
10000+0 records in
10000+0 records out
# ls -al
total 10024
drwxr-xr-x 2 root root 4096 7月 28 14:58 .
drwxr-xr-x 19 root root 4096 7月 28 14:57 ..
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# mkswap swapfile
Setting up swapspace version 1, size = 9996 KiB
3.激活swap文件
# swapon swapfile
# ls -l
total 10016
-rw-r--r-- 1 root root 10240000 7月 28 14:58 swapfile
# free
total used free shared buffers cached
Mem: 513980 505052 8928 0 143900 282288
-/+ buffers/cache: 78864 435116
Swap: 1062240 21256 1040984
生成1G的文件
# dd if=/dev/zero of=swapfile bs=10M count=3000
創建為swap文件
#mkswap swapfile
讓swap生效
#swapon swapfile
查看一下swap
#swapon -s
[root@cluster /]# swapon -sFilenameTypeSizeUsedPriority/dev/sda3 partition10201161728-1/state/partition1/swap/swapfile file307199920-2
加到fstab文件中讓系統引導時自動啟動
#vi /etc/fstab
/state/partition1/swap/swapfil swap swap defaults 0 0
完畢。
二,LINUX釋放內存
細心的朋友會注意到,當你在linux下頻繁存取文件後,物理內存會很快被用光,當程序結束後,內存不會被正常釋放,而是一直作為caching.這個問題,貌似有不少人在問,不過都沒有看到有什麼很好解決的辦法.那麼我來談談這個問題.
先來說說free命令
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
其中:
total 內存總數
used 已經使用的內存數
free 空閑的內存數
shared 多個進程共享的內存總額
buffers Buffer Cache和cached Page Cache 磁碟緩存的大小
-buffers/cache 的內存數:used - buffers - cached
+buffers/cache 的內存數:free + buffers + cached
可用的memory=free memory+buffers+cached
有了這個基礎後,可以得知,我現在used為163MB,free為86,buffer和cached分別為10,94
那麼我們來看看,如果我執行復制文件,內存會發生什麼變化.
[root@cluster /]# cp -r /etc ~/test/
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
在我命令執行結束後,used為244MB,free為4MB,buffers為8MB,cached為174MB,天吶都被cached吃掉了.別緊張,這是為了提高文件讀取效率的做法.
引用[url]http://www.2qyou.com/thread-591-1-1.html[/url] 為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。
那麼有人說過段時間,linux會自動釋放掉所用的內存,我們使用free再來試試,看看是否有釋放?
[root@cluster /]# free -m
total used free shared buffers cached
Mem: 31730 31590 139 0 37 27537
-/+ buffers/cache: 4015 27714
Swap: 30996 1 30994
MS沒有任何變化,那麼我能否手動釋放掉這些內存呢???回答是可以的!
/proc是一個虛擬文件系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段.也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整.那麼我們可以通過調整/proc/sys/vm/drop_caches來釋放內存.操作如下:
[root@cluster /]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默認為0
[root@cluster /]# sync
手動執行sync命令(描述:sync 命令運行 sync 子常式。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件)
[root@server test]# echo 3 /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches值設為3
[root@server test]# free -m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再來運行free命令,發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那麼有效的釋放了buffer和cache.
有關/proc/sys/vm/drop_caches的用法在下面進行了說明
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects
這幾天發現linux系統內存一直漲,即使把apache和mysql關閉了,內存也不釋放,可以使用以下腳本來釋放內存:
腳本內容:
#!/bin/sh
# cache釋放:
# To free pagecache:
/bin/sync
/bin/sync
#echo 1 /proc/sys/vm/drop_caches
# To free dentries and inodes:
#echo 2 /proc/sys/vm/drop_caches
# To free pagecache, dentries and inodes:
echo 3 /proc/sys/vm/drop_caches
利用系統crontab實現每天自動運行:
crontab -e
輸入以下內容:
00 00 * * * /root/Cached.sh
每天0點釋放一次內存,這個時間可以根據自己需要修改設置
在運行./Cached.sh時如果提示錯誤:Permission denied 許可權的問題,可以運行
『叄』 如何在Ubuntu中創建swap分區文件
備註:
1)Ubuntu版本:14.04
2)Linux用戶:root
通常,Linux系統中swap分區可以通過兩種方式指定,分別為:一、在磁碟分區的時候格式化一個swap分區;二、在文件系統中創建一個swap文件作為swap分區。此文主要介紹第二種方式。步驟如下:
1. 創建文件
fallocate -l 8G /swapfile
說明:8G 表示swap文件大小,/swapfile為swap文件路徑和名稱,可以任意指定。
2. 修改文件許可權
chmod 600 /swapfile
3. 將 swapfile 初始化為交換文件
mkswap /swapfile
4. 啟用交換文件
swapon /swapfile
5. 至此,linux系統已經將swapfile作為交換文件使用,但是重啟之後是不會自動掛在剛才創建的文件的,因此需要手動修改 /etc/fstab 配置文件:
gedit /etc/fstab
在文件中添加如下內容:
/swapfile none swap sw 0 0
6. 完成,測試下:
swapon -s
提示:
如果需要卸載swap分區文件,可以使用命令:swapoff /swapfile