linux swap(交換)

pingley發表於2012-03-29
linux swap(交換)
在linux 系統中當實體記憶體不足的時候,系統會將那些記憶體中不活躍的分頁置換到swap 空間。
swap 在邏輯上擴充套件記憶體,但他畢竟不是記憶體不能取代記憶體,如果你的機器實體記憶體是實在不足,
最好的解決辦法是新增記憶體條。
linux swap 大小的設定沒有唯一的標準,因為系統負載各異。通用的劃分方式是當RAM<=2G 的
時候,swap 是RAM的兩倍。當RAM>2G 的時候,swap=RAM+2G.檢視當前系統的swap 大小與使用情況。
[oracle@zeng ~]$ cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
從swap 空間的使用情況來看,我的linux 系統效能還不錯。也可以使用free 命令來檢視swap的
大小和使用情況。
[oracle@zeng ~]$ free
             total       used       free     shared    buffers     cached
Mem:       1207500     986096     221404          0      43120     728300
-/+ buffers/cache:     214676     992824
Swap:      3481592          0    3481592
有時候你需要擴大swap。比如擴大swap 空間以應對記憶體密集型的運用程式(當然這不是根本
的解決辦法,單可能是最好最廉價的解決辦法)。擴大swap 的空間有三種備選的方法。新建
一個swap 分割槽,建立一個新的swap 檔案,或者擴充套件用作swap 的LVM2 邏輯卷。在修改swap
空間的時候swap 空間不能被分配給核心,所有才需要檢視/proc/swaps 確定swap 的使用情況。
建議的方式修改swap 空間的方式是重啟系統到rescue mode.
建立一個交換檔案
當然你也可以新建一個交換分割槽,或者擴充套件已有的用作交換的LVM2邏輯卷,如果有的話。
1、確定要建立的新交換檔案的大小(使用MB為單位),再乘以1024(block size)確定block的數量。
linux 中 swap space 不能小於32MB。
2、以需要的block size 建立檔案。這裡的bs 可以設定的大一點比如1MB,這樣swap space 效率會
更好。
[root@zeng ~]# dd if=/dev/zero f=/work/swapfile bs=1024 count=65536
65536+0 records in
65536+0 records out
67108864 bytes (67 MB) copied, 7.83355 s, 8.6 MB/s
3、把建立的檔案設定為交換檔案(swap file).
[root@zeng ~]# mkswap /work/swapfile
mkswap: /work/swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 65532 KiB
no label, UUID=d04ab35d-423a-4184-ad59-8ea3a0e4dae5
3、啟用剛才建立的swap file。
[root@zeng ~]# swapon /work/swapfile
4、檢視新增swap file 以後的swap 狀況。
[root@zeng ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
/work/swapfile                          file            65400   0       -2
[root@zeng ~]# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
/work/swapfile                          file            65400   0       -2
5、設定開機的時候自動啟用新建立的swap file。
上面的設定下次開機重啟的時候就無效了,要想重啟的時候總是有效,可以把swap file 的資訊
寫入/etc/fstab。
[root@zeng ~]# echo "/work/swapfile   swap  swap  defaults 0 0" >> /etc/fstab
6、關掉swap file。
[root@zeng ~]# swapoff -v  /work/swapfile
swapoff on /work/swapfile
確認下關閉交換檔案以後的swap 狀態。
[root@zeng ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       3481592 0       -1
7、撤掉移除swap file。
[root@zeng ~]# rm /work/swapfile
rm: remove regular file `/work/swapfile'? y
另外記得把/etc/fstab 中關於/work/swapfile 的條目註釋掉,或者移除掉。
注:對於這個swap 一般桌面計算機基本用不上,因為一般現在的計算機記憶體都比較大。但是對於
伺服器就完全不同了,比如安裝oracle 資料庫軟體的時候就有檢查swap space 那麼一項。oracle
也會使用到交換,因為資料庫伺服器一般對記憶體是非常飢渴的。但是不要太依賴交換,人家本質上
還是硬碟空間,不管名字再怎麼好聽交換,虛擬記憶體。。。都是沒用的,用用就好。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26110315/viewspace-719872/,如需轉載,請註明出處,否則將追究法律責任。

相關文章