[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

優化 CentOS 上的 EXT3 檔案系統

Ext3 是一個非常能幹的檔案系統,它擁有卓越的容錯功能及長久的穩定性紀錄。雖然它的表現出色,它絕不是最快速的檔案系統。你可以透過做一些東西來賦予 ext3 你所需的額外速度。

下面所列出的某些方法會借著減少儲存關於檔案系統的資料來換取速度。並非所有用戶都會從這些方法得益,因為這視乎你的輸入輸出存取種類。請花些時間來辨認你的輸入輸出的需要,然後才試用下列優化方法

1. 掛載選項

1.1. noatime、nodiratime

這是最快捷及最簡單的優化方法中的一個。這個掛載選項告訴系統不要更新 inode 的存取時間。這個選項適用於網絡伺服器、新聞伺服器及其它高存取量的檔案系統。範例:

/dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1

我們留意到 man mount 提及另一個選項:nodiratime,但我們沒有進行計時來測試加進它後能否為效率帶來實質(可量度)的差別。

1.2. commit

這個選項控制一個檔案系統應隔多久才將資料及中繼資料同步。預設值是 5 移,但你可以延長它來爭取效率。負面的影響就是,假若你的系統因為電源中斷或當機而未能寫出資料,你所損失的資料可能會長達這個設定。你選擇的設定值完全視乎你系統的效率而定。

/dev/VolGroup00/LogVol00 / ext3 defaults,commit=120 1 1

1.3. data

這個選項有三個模式可供你選擇。當其它如 XFS 及 JFS 等日誌紀錄檔案系統將中繼資料寫入硬盤時,他們不做別的。ext3 卻為了保障你的檔案,預設會同時寫入與中繼資料相關的資料。這就是 'data=ordered' 模式背後的理念:先寫入主檔案系統,然後才寫入日誌。

要令 ext3 如 XFS 及其它案檔系統般運作,在你的掛載選項中加入 'data=writeback'。writeback 模式在寫入硬盤時並不保留資料的先後次序,因此日誌可能會在檔案系統之先被寫入。這個模式較快,因為唯有中繼資料擁有日誌,而不會像預設模式般堅持要保障你的資料。

最後一個資料模式,journal,可以說是 ordered 模式的反極。它會堅制地令日誌先被寫入,然後才寫入檔案系統。這個模式普遍是最慢的,但在你需要同時閱讀寫入硬盤的特殊情況下,會較其它模式優勝。一如既往,其他人的需要與你的不會完全相同,因此他們的基準只可作參考,不能作準。請試用不同選項並看看哪個最適合你。

/dev/VolGroup00/LogVol00 /home ext3 defaults,data=writeback 1 1

ArtWork/WikiDesign/icon-admonition-attention.png

注意: 要在主檔案系統上使用 'data=ordered' 以外的模式,你必須在內核指令行加入 rootflags=data=writeback,透過啟動參數將模式傳給內核。


2. 硬盤提升器

CentOS4 擁有 4 個硬盤提升器,可以透過將硬盤的讀寫重組或合併到常用的位置,來減少磁頭的搜尋時間。這些選項改善效率,但在使用硬盤陣列的系統上,速度上的加增或許不明顯,因為它們並不將轉軸條紋列入考慮範圍。

你可以在 2005 年 6 月版的 Redhat Magazine 內為各個提升器選項找到好的解釋。

3. 硬盤陣列的數學

借著確保你的磁區與你的硬盤陣列條紋(又名「跨步」)大小對齊,你的硬盤陣列將會錄得最高的速度增幅。透過將檔案系統的寫入調整至與硬盤陣列的佈局相同,你可以避免對檔案系統作出重疊的計算及調校,於是讓系統能更容易寫入硬盤內。最終的結果就是你的系統可以更快地寫入資料,而你得到更高的效率。要理解跨步的計算法,你必須知道關於你的硬盤陣列的某些特性。

硬盤的計算是這樣的:你為單一轉軸/硬盤,將資料塊大小除以檔案系統的塊大小。這會計算出跨步的大小。然後你將跨步大小乘以存載資料硬盤的數量。這樣便得出你在格式化磁區時應使用的條紋寬度。這可能有點兒複雜,因此下面列了數個範例。

舉個列說,假設你有四個硬盤在 RAID5 下運作,它採用 64K 的資料塊大小,而你使用 4K 的檔案系統塊。單一硬盤跨步的計算是(資料塊大小/檔案系統塊大小),於是(64K/4K)得出 16。由於 RAID5 的條紋寬度少了一個硬盤,因此我們在這個 4 碟的 RAID5 群組中,只有 3 個存載資料的硬盤。於是按照(存載資料硬盤數量*跨步大小),(3*16)得出條紋寬度是 48。

當你建立 ext3 分割區時,你會如此將它格式化

mkfs.ext3 -b 4096 -E stride=16 -E stripe-width=48 -O dir_index /dev/XXXX

<!> 不幸地,'stripe-width=' 這個延伸選項由 CentOS 5.3 起在 man mkfs.ext3 裡消失了

上面所包含的 dir_index 選項是這裡要提及的最後一個微調。dir_index 這個選項讓 ext3 使用散列 B 樹來加快查閱大目錄時的速度。雖然速度上的提升並不多,但卻會有幫助。

如果這是一個 4 碟的 RAID10 陣列,那麼條紋寬度便是(16+16)= 32,因為每對硬盤的鏡像實際上變為一個擁有冗餘的硬盤,然後這兩個 RAID1 群組再以條紋形式組成 RAID10。

Translation of revision 10


2023-09-11 07:23