我們知道SWaP 是一個客觀的三維方法,為當今伺服器的評估提供了現實而且富有綜合性的標準。那麼,我們就發現了問題,如果SWaP空間不夠會產生什麼負面作用呢?
簡單的來說,如果系統的實體記憶體用光了,系統就反映速度會變得很慢,但是作業系統仍能運行;如果SWaP空間用光了,那麼系統就會發生錯誤。
例如,Web伺服器能根據不同的請求數量衍生出多個服務進程或線程,如果SWaP空間用完,則服務進程無法啟動,就會出現SWaP空間不足的錯誤,嚴重時會造成服務進程的死結。可見SWaP空間的分配是很重要的。如果SWaP空間太小會造成應用程式錯誤,而不光光是效能下降的問題。
在Linux系統下,這個虛擬記憶體就被叫做SWaP。在安裝作業系統的時候,安裝嚮導會提示使用者需要建立多少的SWaP空間。通常情況下,SWaP比較合適的大小為實體記憶體的1-2倍。
但是有些應用程式的話,對於SWaP分區比較饑渴,如JAVA或者Oracle應用程式,他們要求SWaP分區的大小能夠達到實體記憶體的2倍以上。此時原先在安裝系統的時候為其分配的SWaP分區就太小了。那麼該如何補救呢?
筆者以前就遇到過類似的問題。有一台Linux伺服器,上面已經部署了檔案伺服器。後來出於部署ERP系統的需要,要在這台伺服器上部署一個Oracle資料庫系統。不過Oracle資料庫系統對SWaP的空間有要求。
如果不滿足這個要求的話,Oracle作業系統無法安裝。而筆者不能夠通過重裝Linux伺服器的方式來擴充SWaP空間,因為上面還運行著檔案伺服器。為此筆者只好通過其他途徑來實現這個需求了。
針對這種情況,Linux系統提出了一種補償措施,建立新的SWaP空間,增加SWaP容量。
措施:建立新的SWaP空間,增加SWaP容量。
如果在Linux伺服器的硬碟中還有比較多的空餘容量,或者系統管理員添置了新硬碟,此時就可以利用Linux系統內建的fdisk硬碟格式化工具,來建立新的SWaP分區。具體的操作如下:
第一步:建立新的分區。如筆者在伺服器硬碟中還有一個20G的分區沒有使用過,就可以利用fdisk磁碟格式化工具,來建立新的分區。具體fdisk命令的使用方法大家可以參考其它的相關資料,筆者在這裡就不過多展開了。
在使用這個工具的時候,如果要把分區設定為SWaP分區,則需要注意要把空間設定為擴充分區。然後再在擴充分區上設定一個邏輯分區。如此的話,為後續維護與管理提供了方便。如管理員可以陸續增加SWaP空間等等。
第二步:將分區的檔案系統設定為SWaP檔案系統。
預設情況下系統新增加的分區其檔案格式為ext3。為了讓這個分區成為SWaP分區,則需要把這個分區的檔案格式改為SWaP檔案系統。這個任務也是在fdisk命令中完成。
如果要把這個分區格式改為SWaP,則在fdisk命令執行時,當提示hex code時,系統管理員需要輸入SWaP檔案系統的代號。通常情況下SWaP檔案系統的代號為82。然歐再繼續後續的工作。如果不修改的話,則系統預設會採用ext3檔案系統格式。
第三步:格式化並啟動SWaP分區格式。當fdisk命令執行完畢後,還必須重新啟動電腦,剛才的設定才會生效。但是,fdisk命令只是劃分出了一個SWaP分區,系統還是無法使用這個分區,因為這個分區還沒有格式化與啟動。
與微軟作業系統一樣,當劃分出一個分區之後,系統管理員還需要格式化這個分區。為此,系統管理員需要通過mkSWaP命令來對剛才劃分的SWaP分區進行格式化。不過與微軟作業系統不同的是,對分區格式化之後,這個新的分區預設情況下是沒有啟動的,第一次需要通過系統管理員手工啟動它。此時系統管理員需要採用的命令是SWaPon,來啟動SWaP分區。
通過以上簡單的三個步驟,就可以在硬碟為用的空間中或者新添加的硬碟中增加一個SWaP分區,以實現擴大SWaP分區容量的目的。不過這裡需要注意一點,在使用fdisk工具的時候,會把目標空間中的內容都刪除。
為此只有當目標空間中沒有隱藏檔或者儲存的檔案不再需要時才使用這種方法。如果現在系統中沒有未使用的空間;但是已有的分區中則有多餘的空間,則就需要採用另外一種方法,即通過增加SWaP檔案的方式來調整SWaP空間容量。