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