概述
本文對swap進行簡要介紹,以及系統安裝后(在運行中)如何建立或調整swap分區。
文中演示環境為:
什么是swap space?
交換分區,即swap space。它將某段磁盤空間獨立劃分出來,當物理內存不夠的情況下,系統先把物理內存中暫時不用的數據,暫存到交換空間,騰出內存空間來,以保證程序的運行;當swap中存儲的頁面被訪問到時,系統會將其重新載入到物理內存中去運行。在Windows、Unix、Linux系統中都有交換分區的概念。
怎么分配swap space?
作為系統物理內存的補充,交換分區的操作即是磁盤I/O的操作,我們應當盡可能地利用更高I/O的硬盤劃分交互分區。優先考慮的是固態硬盤,而對于機械硬盤來說,前面的磁盤要比后面的快,因此優先使用靠前的扇區劃分swap。
另外,Swap分區的數量對性能也有很大的影響。如果有多個Swap交換區,Swap空間的分配會以輪流的方式操作于所有的Swap,這樣會大大均衡IO的負載,加快Swap交換的速度。如果只有一個交換區,所有的交換操作會使交換區變得很忙,使系統大多數時間處于等待狀態,效率很低。
分配多少swap space?
分配太多的Swap空間會浪費磁盤空間,而Swap空間太少,則系統會發生錯誤。如果系統的物理內存用光了,系統就會跑得很慢,但仍能運行;如果Swap空間用光了,那么系統就會發生錯誤。例如,Web服務器能根據不同的請求數量衍
生出多個服務進程(或線程),如果Swap空間用完,則服務進程無法啟動,通常會出現“application is out of
memory”的錯誤,嚴重時會造成服務進程的死鎖。因此Swap空間的分配是很重要的。
通過翻查《 Red Hat Enterprise Linux 7 Installation Guide 》,看到紅帽官方推薦的分配方案:
生產環境中不應開啟休眠(hibernation),所以不需要考慮第三列,即:
-
內存小于 2GB時,推薦swap大小為內存2倍;
-
內存 2 ~ 8GB時,推薦swap大小等于內存大?。?/strong>
-
內存 8 ~64GB時,推薦swap大小為內存的0.5;
-
內存大于64GB時,則視服務器的工作負載配置。
如果您的系統資源允許的話,增加交換空間可能會導致更好的性能。
如何查看swap space?
Linux中,系統提供了三種方法可以查看系統的swap的分區情況:
-
cat /proc/swaps
-
swapon -s
-
free
如何劃分和增加swap space?
我們都知道在安裝Linux系統時在分區時可以分配swap分區,而系統安裝后(在運行中)如何建立或調整swap分區呢?
在裝完Linux系統之后,建立Swap分區基本設置包括:
-
創建交換分區或者文件
-
使用mkswap寫入特殊簽名
-
在/etc/fstab文件中添加適當的條目
-
使用swapon -a 激活交換空間
swap分區的操作必須用root權限,操作過程應該小心謹慎。
為了避免不必要的問題,我們先停止所有的swap分區:
[root@IP70-CentOS7 ~]# >>swapoff -a #停止所有的swap分區
1. 創建交換分區或者文件
建立swap有兩種方法:a.新建磁盤分區;b.用文件作為swap分區。
a.新建磁盤分區:
用fdisk命令(例:# fdisk /dev/sdb),新建大小2GB分區,在fdisk中用“t”命令調整分區類型為82(Linux swap類型),最后w保存fdisk操作。
b.用文件作為swap分區:
用dd命令創建分區文件,文件大小可以通過指定選項進行設置。(bs*count=文件大?。?/span>
[root@IP70-CentOS7 ~]# >> dd if=/dev/zero of=/root/swap bs=1M count=2048
2. 使用mkswap寫入特殊簽名(格式化swap分區)
mkswap是專門用于設置Linux swap分區的命令,命令格式是mkswap [options] device [size]
3. 在/etc/fstab文件中添加適當的條目
4. 使用swapon -a 激活交換空間
多個swap分區是有優先級(Priority)的,數值大,則優先使用。我們可以通過swapon的-p選項調整swap的優先級,優化swap性能:分布存放,高性能磁盤存放。
需要注意的是:修改后,需要swapoff禁用,再swapon進行重新掛載。
結束語
雖然swap分區能夠作為"虛擬"的內存,但它的速度比物理內存可是慢多了,因此如果需要更快的速度的話,并不能寄厚望于swap,最好的辦法仍然是加大物理內存。swap分區只是臨時的解決辦法.
原創文章,作者:昭其,如若轉載,請注明出處:http://www.www58058.com/42130