為了突破物理內存的限制,在操作系統(tǒng)中實現(xiàn)了"虛擬內存"技術。它使得應用程序可以操縱大于實際物理內存的空間。而且虛擬內存可以用來隔離每個進程,成為進程的安全保護網,使得每個進程都不受其他程序的干擾。如果swap空間不夠會產生什么負面作用呢?簡單的來說,如果系統(tǒng)的物理內存用光了,系統(tǒng)就反映速度會變得很慢,但是操作系統(tǒng)仍能運行;如果Swap空間用光了,那么系統(tǒng)就會發(fā)生錯誤。例如,Web服務器能根據(jù)不同的請求數(shù)量衍生出多個服務進程或線程,如果Swap空間用完,則服務進程無法啟動,就會出現(xiàn)swap空間不足的錯誤,嚴重時會造成服務進程的死鎖??梢奡wap空間的分配是很重要的。如果swap空間太小會造成應用程序錯誤,而不光光是性能下降的問題。
在Linux系統(tǒng)下,這個虛擬內存就被叫做swap。在安裝操作系統(tǒng)的時候,安裝向導會提示用戶需要創(chuàng)建多少的swap空間。通常情況下,swap比較合適的大小為物理內存的1-2倍。但是有些應用程序的話,對于swap分區(qū)比較饑渴,如JAVA或者Oracle應用程序,他們要求swap分區(qū)的大小能夠達到物理內存的2倍以上。此時原先在安裝系統(tǒng)的時候為其分配的swap分區(qū)就太小了。那么該如何補救呢?
筆者以前就遇到過類似的問題。有一臺Linux服務器,上面已經部署了文件服務器。后來出于部署ERP系統(tǒng)的需要,要在這臺服務器上部署一個Oracle數(shù)據(jù)庫系統(tǒng)。不過Oracle數(shù)據(jù)庫系統(tǒng)對swap的空間有要求。如果不滿足這個要求的話,Oracle操作系統(tǒng)無法安裝。而筆者不能夠通過重裝Linux服務器的方式來擴展swap空間,因為上面還運行著文件服務器。為此筆者只好通過其他途徑來實現(xiàn)這個需求了。針對這種情況,Linux系統(tǒng)提出了兩種補救措施,分別為創(chuàng)建新的swap空間和創(chuàng)建swap 文件。筆者是通過創(chuàng)建swap文件的方式來調整swap空間的。如上圖所示,筆者就在home目錄下創(chuàng)建了一個swap文件,并且通過啟動配置文件讓其隨著系統(tǒng)的啟動而自動啟用。如此配置之后,Oracle數(shù)據(jù)庫系統(tǒng)就可以順利安裝了。
這兩種調整方式的具體的實現(xiàn)方式如下所示。
措施一:創(chuàng)建新的swap空間,增加swap容量。
如果在Linux服務器的硬盤中還有比較多的空余容量,或者系統(tǒng)管理員添置了新硬盤,此時就可以利用Linux系統(tǒng)自帶的fdisk硬盤格式化工具,來創(chuàng)建新的swap分區(qū)。具體的操作如下:
第一步:創(chuàng)建新的分區(qū)。如筆者在服務器硬盤中還有一個20G的分區(qū)沒有使用過,就可以利用fdisk磁盤格式化工具,來創(chuàng)建新的分區(qū)。具體fdisk命令的使用方法大家可以參考其它的相關資料,筆者在這里就不過多展開了。在使用這個工具的時候,如果要把分區(qū)設置為swap分區(qū),則需要注意要把空間設置為擴展分區(qū)。然后再在擴展分區(qū)上設置一個邏輯分區(qū)。如此的話,為后續(xù)維護與管理提供了方便。如管理員可以陸續(xù)增加swap空間等等。
第二步:將分區(qū)的文件系統(tǒng)設置為swap文件系統(tǒng)。
默認情況下系統(tǒng)新增加的分區(qū)其文件格式為ext3。為了讓這個分區(qū)成為swap分區(qū),則需要把這個分區(qū)的文件格式改為swap文件系統(tǒng)。這個任務也是在fdisk命令中完成。如果要把這個分區(qū)格式改為swap,則在fdisk命令執(zhí)行時,當提示hex code時,系統(tǒng)管理員需要輸入swap文件系統(tǒng)的代號。通常情況下swap文件系統(tǒng)的代號為82。然歐再繼續(xù)后續(xù)的工作。如果不修改的話,則系統(tǒng)默認會采用ext3文件系統(tǒng)格式。
第三步:格式化并啟動swap分區(qū)格式。當fdisk命令執(zhí)行完畢后,還必須重新啟動計算機,剛才的設置才會生效。但是,fdisk命令只是劃分出了一個swap分區(qū),系統(tǒng)還是無法使用這個分區(qū),因為這個分區(qū)還沒有格式化與啟動。與微軟操作系統(tǒng)一樣,當劃分出一個分區(qū)之后,系統(tǒng)管理員還需要格式化這個分區(qū)。為此,系統(tǒng)管理員需要通過mkswap命令來對剛才劃分的swap分區(qū)進行格式化。不過與微軟操作系統(tǒng)不同的是,對分區(qū)格式化之后,這個新的分區(qū)默認情況下是沒有啟動的,第一次需要通過系統(tǒng)管理員手工啟動它。此時系統(tǒng)管理員需要采用的命令是swapon,來啟動swap分區(qū)。
通過以上簡單的三個步驟,就可以在硬盤為用的空間中或者新添加的硬盤中增加一個swap分區(qū),以實現(xiàn)擴大swap分區(qū)容量的目的。不過這里需要注意一點,在使用fdisk工具的時候,會把目標空間中的內容都刪除。為此只有當目標空間中沒有存儲文件或者存儲的文件不再需要時才使用這種方法。如果現(xiàn)在系統(tǒng)中沒有未使用的空間;但是已有的分區(qū)中則有多余的空間,則就需要采用另外一種方法,即通過增加swap文件的方式來調整swap空間容量。
措施二:創(chuàng)建swap文件調整swap容量。
當系統(tǒng)中的硬盤空間已經全部分配給其它分區(qū),此時就不適合采用fdisk命令來增加swap分區(qū)的容量。因為這個命令會刪除目標空間的文件。遇到這種情況時,系統(tǒng)管理員需要采用創(chuàng)建swap文件的方式來增加虛擬的swap空間。簡單的說,就是在硬盤中創(chuàng)建一個虛擬的swap文件。通過這個文件讓其在系統(tǒng)硬盤中劃分出一個空間,供swap空間使用。
第一步:創(chuàng)建swap 文件。
系統(tǒng)管理員可以利用"dd bs= count="這個命令來創(chuàng)建swap文件。這個命令中主要采用了bs與count兩個參數(shù)。其中bs參數(shù)制定每次讀取及輸入多少個字節(jié)。因為硬盤存取的最小單位為扇區(qū),所以設置bs參數(shù)就相當于設置每個扇區(qū)的大小。通常情況下這個參數(shù)設置為32為好。參數(shù)count則主要是用來設置可以使用扇區(qū)的數(shù)量。所以這個文件所占用的空間就是以上連個參數(shù)的乘積。這里需要注意的是,如果要增加swap文件容量,往往是通過調整count參數(shù)來實現(xiàn)的。也就是說,bs參數(shù)一般就是32,不需要去動它。
第二步格式化并啟動swap 文件。
跟上面的方法一樣,建立好文件之后還需要格式化這個文件并啟用它。這主要是因為到現(xiàn)在為止,這個文件用的還是硬盤中原來的文件系統(tǒng)格式,如為ext3等等。這個文件系統(tǒng)格式是不能夠用來做swap分區(qū)的擴展的。為此系統(tǒng)管理員需要先通過mkswap工具把這個文件格式化為swap文件格式。然后再使用swapon命令啟用這個文件。這個特性有點像微軟操作系統(tǒng)中的動態(tài)磁盤的概念。
雖然這兩種方式都可以解決swap分區(qū)過小的問題,但是這跟在安裝操作系統(tǒng)的時候劃分swap分區(qū)還是有一定的區(qū)別。如通過以上兩種方式建立的swap分區(qū),不會隨著系統(tǒng)的重新啟動而自動啟動。而系統(tǒng)安裝時設置的swap分區(qū)則會在開機時自動啟動。如果每次開機后都要手工執(zhí)行swapon命令來啟動swap分區(qū)或者文件的話,那么這也太麻煩了。為了解決這個問題,就需要修改Linux系統(tǒng)的啟動配置文件。如系統(tǒng)管理員可以在啟動配置文件中加入一行內容,讓Linux系統(tǒng)開機時自動啟動swap分區(qū)以及文件。除了這個自動啟動以外,在性能上也有一定的差異。特別是通過swap文件來創(chuàng)建虛擬的swap空間,其執(zhí)行性能要比真實的swap空間性能要差一點。不過其好處是不會對現(xiàn)有分區(qū)中的文件造成影響。
所以雖然Linux官方檢疫Swap空間的容量最好為內存的1-2倍。但是在實際工作中有些應用程序則對此提出了特殊的要求。為此在Linux系統(tǒng)安裝完畢之后,系統(tǒng)工程師有時還不得不對swap容量進行調整。以上兩種方式是比較簡單使用的調整方式,系統(tǒng)管理員可以嘗試著使用。
關鍵詞標簽:Linux系統(tǒng)swap分區(qū)
相關閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內存型號 linux tc實現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關機、重啟、注銷 命令 查看linux服務器硬盤IO讀寫負載