LINUX系統效能調諧(轉)

BSDLite發表於2007-08-11
LINUX系統效能調諧(轉)[@more@]本文從磁碟,檔案及檔案系統,記憶體和編譯等方面詳細的講述瞭如何對Linux系統效能進行調諧。不管是Linux伺服器還是客戶機或者使用者單機,按照本文提供的調諧方法,均可不同程度地改善Linux系統的效能。
1. 引言

實踐證明Linux是高效能、穩定可靠而又相當靈活的作業系統,近年來,世界上許多大軟體公司紛紛推出各種Linux伺服器系統及Linux下的應用軟體。目前,Linux已可以與各種傳統的商業作業系統分庭抗禮,在伺服器市場,佔據了相當大的份額。Linux的伺服器系統多種多樣,可用作web伺服器,郵件伺服器,ftp伺服器,檔案伺服器以及資料庫伺服器等等。針對不同的系統以及具體的應用環境,可以對Linux的效能進行相應的調諧。下面分別從磁碟調諧,檔案系統,記憶體管理以及編譯最佳化等方面來論述Linux系統的最佳化調諧策略。

2.磁碟調諧

2.1 最佳化的分割槽

在安裝Linux系統之初,就應該考慮怎樣使linux系統得到最好的效能。在Linux系統中,我們可以自由地組織磁碟分割槽。一個最佳化的分割槽策略,可以很好地改進Linux系統的效能,減少磁碟碎片,提高磁碟I/O能力。

根據磁碟的特點,我們知道越是靠磁碟外部的柱面,旋轉越快,而且每次旋轉時,磁碟讀寫頭可以覆蓋較多的區域,也就意味著靠外部的柱面可以得到較好的效能。所以在分割槽時,我們應該考慮將訪問頻率高的,對系統效能影響相對較大的分割槽置於磁碟的靠外部分。同時,為了減少磁碟碎片,應將內容經常改變的目錄放在單獨的分割槽。從方便備份資料的角度考慮,因為很多備份工具對整個分割槽進行備份的效率要高,所以我們應將Linux系統的幾個主要的目錄作為單獨的檔案系統,為它們各自分配一個區。推薦的分割槽策略如圖一:





在上圖中,磁碟還有一部分未分割槽的空間,為什麼不在安裝系統時,將整個磁碟分割槽呢?現在的硬碟空間比較大,而在安裝系統時,也許你所安裝的檔案加上以後增長所需要的空間用不到整個磁碟儲存空間。保留一部分未分割槽空間,當以後有新的需要時,就可以用fdisk重新將之分割槽。在分割槽時,需要注意的是,根據系統將來執行的需要或過去的經驗來估計各個分割槽的大小,以免將來空間不夠。

如果你的系統有多塊硬碟,可以考慮使用多個交換分割槽。每個磁碟上劃分一個交換分割槽。透過在/etc/fstab檔案中設定pri 選項,可使多個交換分割槽具有同樣的優先順序。Linux系統即可並行地使用它們。這樣即可提高交換分割槽的效能。


/dev/hda5 swap swap defaults,pri=5 0 0
/dev/hdc5 swap swap defaults,pri=5 0 0




圖(二)多個交換分割槽設定相同的優先順序
當然,如果你的系統記憶體足夠大,而你的系統又遠遠用不了那麼多的記憶體,那也就用不到什麼虛存了。分割槽時你就可以考慮去掉交換分割槽。不過作為一個Linux伺服器,即使你的記憶體足夠大,還是應該設定交換分割槽。

2.2 使用hdparm改善Linux系統效能

如果你的Linux系統執行於IDE硬碟,可以使用hdparm工具來提高磁碟I/O的效能。不過使用hdparm要小心,因為可能破壞硬碟上的資料。所以在使用hdparm之前,仔細閱讀你的硬碟手冊。根據你具體的硬碟規格來使用相應的hdparm開關引數。對一塊UltraATA/66 EIDE 硬碟,其控制晶片支援多 PIO 模式和DMA,我們使用以下命令來調諧磁碟效能:

# /sbin/hdparm -x66 -d1 -u1 -m16 -c3 /dev/hda

選項說明:

① c3 :就是把硬碟的16位格式轉換為32位模式(32-bit mode w/sync)。控制資料如何從pci匯流排傳遞到控制器。
② m16 :改變硬碟的多路扇區的讀功能,-m16可以使得硬碟在一次i/o中斷中讀入16個扇區的資料(據具體硬碟而定)。
③ d1:開啟DMA模式。
④ x66 :在支援UDMA-capable的硬碟中,這個引數可以支援雙DMA通道的資料傳輸模式。
⑤ u1 :Linux在處理磁碟中斷時,可以unmask其他的中斷或者響應其他中斷相關的任務。


檢視以上的更改情況可以使用命令:

# /sbin/hdparm /dev/hda

測試磁碟I/O效能可以使用命令:

# /sbin/hdparm -tT /dev/hda

如果磁碟的效能有改進的話,可以使用以下命令來儲存設定:

# /sbin/hdparm -k1 /dev/hda

2.3 Linux下使用軟RAID

RAID(磁碟冗餘陣列)是透過將資料分佈在多個磁碟上來增強磁碟效能和可靠性的技術。如果你的系統沒有硬體RAID控制器的話,在Linux下可以透過軟體來實現RAID。RAID的有很多的級別,不同的級別對硬體有不同的要求,相應也會得到不同的效能和可靠性。RAID0為資料分割,資料塊被交替寫到磁碟,可以得到最好的讀寫效能,但是不提供資料冗餘。RAID1為磁碟映象,寫到磁碟1中的一切也寫到磁碟2中,從任何一個磁碟都可以讀取。RAID3除了資料分割之外,還指定一個磁碟驅動器來儲存奇偶資訊。

在LINUX下透過軟體來實現RAID, 需要LINUX的核心支援,可以透過編譯新核心來新增對RAID的支援。然後還需編譯並安裝 raidtools 軟體包。raidtools 是可以初始化、啟動、停止及控制 RAID 陣列的使用者級工具。下面是我們用兩塊IDE硬碟在LINUX核心2.4上實現RAID0的方法。

設定分割槽 使用RAID0至少需要兩個分割槽,它們位於不同的磁碟。最好做RAID0的兩個分割槽有相同的大小。建立分割槽時,將分割槽型別指定為 "FD"。以使 Linux 核心能將它們識別為 RAID 分割槽,這樣,這些分割槽就可在每次引導時自動被檢測並啟動。如果您沒有以這種方式標記 RAID 分割槽,則在每次引導之後,必須首先輸入 "raidstart --all" 才能掛載 RAID 陣列。我們做成RAID0的兩個分割槽為hda5和hdc5。

編輯/etc/raidtab檔案 建立/etc/raidtab檔案以描述RAID陣列的配置資訊。Linux 核心使用這些資訊在引導時自動檢測並啟動 RAID 陣列,因此必須對建立的每個 RAID 陣列進行這種配置。將分割槽hda5和hdc5組成md0 RAID0陣列的配置檔案如下:
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-945759/,如需轉載,請註明出處,否則將追究法律責任。

LINUX系統效能調諧(轉)
請登入後發表評論 登入
全部評論

相關文章