根據伺服器用途合理選擇Linux分區

在linux系統上部署網路應用的時候,系統管理員需要合理規劃Linux分區。這跟在微軟伺服器上部署網路應用有一定的差別。在微軟伺服器上如果要實現比較高的安全性能的話,只需要把分區格式轉換為NTFS格式即可。但是如果採用Linux系統的話,就沒有這麼簡單。Linux系統管理員要根據伺服器的用途來選擇合適的Linux分區。

一、 Linux分區與Windos分區表示的異同。

微軟作業系統中,其分區是通過C、D、E等單個大小字母表示的。但是在Linux作業系統中則另有一套表示的方法。如果要管理好Linux分區,在首先要對這套分區的編碼有一個瞭解。其實,Linux系統中分區的編碼分為兩部分,一是硬碟的編碼,二是分區的編碼。

在Linux系統中,每一個硬體設備都印射到一個系統的檔。所以硬碟、光碟機等硬體設備在Linux系統中是以一個檔的形式存儲的。Linux 把各種 IDE 設備分配了一個由 hd 首碼組成的檔;而對於各種 SCSI 設備,則分配了一個由 sd 首碼組成的檔。例如,第一個 IDE 設備,Linux 就定義為 hda;第二個 IDE 設備就定義為 hdb;下麵以此類推。而 SCSI 設備就應該是 sda、sdb、sdc 等。如果Linux作業系統中有兩塊IDE硬碟,則第一個硬碟代碼為had,第二塊硬碟代碼為hdb。顯然這跟微軟的作業系統表示方法不一樣。如果是Windows作業系統,則它直接以磁片0、磁片1表示。

另外,在分區的表示上兩個作業系統也有差異。兩者有一個相同,就是要進行分區就必須針對每一個硬體設備進行操作,這就有可能是一塊IDE硬碟或是一塊SCSI硬碟。不過兩者分區的代碼不同。對於每一個硬碟,Linux作業系統中分配了一個 1 到 16 的序號碼,這就代表了這塊硬碟上面的分區號碼。例如,第一塊 IDE 硬碟的第一個分區,在 Linux 下面映射的就是 hda1,第二個分區就稱作是 hda2。如果有第二塊硬碟,則分區的代碼就為hdb1等等。這跟Windows作業系統是不同的。在微軟作業系統中,其分區直接使以C、D、E、F等標示下去的。故如果單看這個分區代碼,在微軟作業系統中並不知道這個作業系統中有多少塊硬碟,哪一個分區是在哪一個硬碟上的。這就給系統的日常管理帶來一定的麻煩。

在Linux系統中利用df命令可以查看當前的分區資訊。其現實的資訊如下圖。從這個資訊中可以得知當前硬碟的數量、硬碟的類型(是IDE硬碟還是SCSI硬碟)、各個分區的用途、使用率等等。

二、/CHROOT與/CACHE分區。

在Linux作業系統中,有兩個很特殊的分區。他們分別叫做CHROOT分區與/CACHE分區。這兩個分區並不是Linux作業系統上必須存在的分區。這兩個分區的是否需要存在直接跟在Linux所跑的服務有關。

如/chroot分區是為yDNS伺服器、Apache伺服器和其他需要改變根目錄的伺服器準備的。/cache分區是為Proxy伺服器準備的。如果不打算安裝Squid Proxy 伺服器,不必創建/cache分區。.不過在實際工作中,這兩個應用服務的結合會使伺服器的性能提高很多並且更加安全。所以如果系統管理員要在Linux伺服器上部署郵件伺服器、FTP伺服器等等,就需要注意在對硬碟進行分區時,是否需要建立這些特殊的分區。如果一些網路應用服務可能需要改變根目錄的,那麼在分區的時候就需要建立這個/chroot分區。

在分區安排中,特別保留了四百兆的磁碟空間給改變根目錄的(英文名為chrooted)程式,如DSN伺服器以及其他軟體。這是必須的,因為這些應用服務的某些檔和其他可執行的程式都會安裝在這個分區上。

那麼CHROOT到底有什麼用途呢?簡單的說,CHROOT就是改變程式執行時所參考的根目錄位置。因為預設情況下,Linux作業系統其根目錄為/root。有時候出於安全或者其它一些目的,系統管理員要更改這個根目錄的位置。限制其它應用服務訪問這個作業系統的根目錄。具體的說,只所以要為需要改變根目錄的服務設置這個特殊的分區,主要是因為這個分區具有如下幾個特殊的功用。如可以防止使用者存取某些特定檔案,增進系統的安全。如限制被chroot的使用者所能執行的程式,如SetUid的程式,或是會造成Load 的 Compiler等等。也就是說,採用/chroot分區格式主要是出於安全方面的考慮。

另外CHROOT的另外一個用途就是可以用來在已有Linux作業系統的基礎上來安裝另外一個Linux版本的作業系統。也就是常說的雙作業系統。chroot 工具是Linux作業系統都具備的工具,從表面的意思看,chroot 是從一個根目錄到另一個根目錄。在一個Linux作業系統中安裝另一個作業系統,就是利用chroot的這個特點。首先創建chroot運行的基礎環境,然後通過chroot到新的根目錄,然後再用相應的套裝軟體管理工具把新的作業系統其它套裝軟體安裝上。這就是基本的原理。由於這不是這篇文章要談的內容,故這裡只是做一個大致的說明。
如果Linux作業系統不是當作伺服器,而是當作普通的作業系統來使用,則沒有必要建立這兩個特殊的分區格式。

三、 合理設置交換分區大小以提高伺服器性能。

在Linux伺服器部署的時候,除了要考慮是否需要安裝以上兩個分區格式外,最重要的就是合理設置交換分區。什麼交換分區呢?簡單的說,交換分區就是一個在硬碟空間中劃分的“虛擬記憶體”。當系統的實體記憶體不夠用的時候,就需要將實體記憶體中的一部分空間釋放出來,以供當前運行的程式使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時保存到交換分區空間中,等到那些程式要運行時,再從交換分區中恢復保存的資料到記憶體中。這樣,系統總是在實體記憶體不夠時,才進行交換分區交換。

其實交換分區在Windows作業系統中也存在,只是換了個名字而已。在微軟作業系統中這個交換分區又叫做虛擬記憶體。在使用Windows系統時,大家可能有這個直觀的感受。在微軟作業系統中同時運行多個程式。當管理員切換到一個很長時間沒有“運行”的程式時,會聽到硬碟突然發出很大的響聲。但是此時沒有從硬碟中讀取大量資料。為什麼會突然發出這麼大的硬碟資料讀取聲音呢?這是因為這個程式的記憶體被那些頻繁運行的程式給佔用了(記憶體不能夠容納全部程式的情況下),放到了虛擬記憶體中。因此,一旦此程式被放置到前端,它就會從虛擬記憶體中取回自己的資料,將其放進記憶體,然後接著運行。

Linux作業系統下的虛擬分區就是跟虛擬記憶體一樣,起著一個備用記憶體的作用。交換分區的調整對Linux伺服器的性能至關重要。通過調整交換分區,有時甚至可以越過系統性能瓶頸,節省系統升級費用。交換分區不但在功能上突破了實體記憶體的限制,使程式可以操縱大於實際實體記憶體的空間,利用硬碟空間來增大有限的記憶體大小。更重要的是,交換分區是隔離每個進程的安全保護網,使每個進程都不受其它程式的干擾,可以提高更高的安全性。同時也可以有效避免多個進程之間相互干擾的情況。當系統管理員在部署網路應用的時候,需要合理設置這個交換分區的大小。通常情況下,一般建議交換分區為記憶體的一倍到兩倍大小為好。如果設置的太大是一種浪費,太小又不能夠滿足應用程式的需要。如果中間對伺服器的記憶體進行升級了,那麼這個交換分區的大小也需要隨之調整。

另外需要注意的是,交換分區的數量對性能也有很大的影響。因為交換的操作其實就是是磁片輸入輸出(叢硬碟中存取資料)的操作,如果有多個交換分區,則交換分區空間的分配會以輪流的方式操作所有的交換分區,這樣會大大均衡硬碟輸入輸出的負載,加快交換速度。如果只有一個交換分區,所有的交換操作會使交換區變得很忙,使系統大多數時間處於等候狀態,效率很低。此時系統管理員就會發現CPU並不很忙,而系統卻慢。這說明,瓶頸在硬碟的輸入輸出上,依靠提高CPU的速度是解決不了問題的。在Linux系統中可以創建一個以上的交換分區。在部署應用伺服器時,如果併發訪問用戶比較多或者一台服務上同時部署多個網路應用,則應多建立幾個交換分區,以減輕磁片輸入輸出的壓力。另外這個交換分區的位置對交換分區與伺服器的性能也會產生影響。應儘量把交換分區放在硬碟驅動器的起始位置,因為一個磁片的起始位置物理上是在最外的柱面上,所以磁頭每轉一圈可以覆蓋更大的面積。

(此篇文章為網路轉載,如有冒犯,請來信告知,當即刻移除!)