歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> ReiserFS的優勢

ReiserFS的優勢

日期:2017/2/27 9:38:57   编辑:更多Linux

ReiserFS 3.6.x(作為 Linux 2.4 一部分的版本)是由 Hans Reiser 和他的在 Namesys 的開發組共同開發設計的。Hans 和他的組員們相信最好的文件系統是那些能夠有助於創建獨立的共享環境或者命名空間的文件系統,應用程序可以在其中更直接、有效和有力地相互作用。為了實現這一目標,文件系統就應該滿足其使用者對性能和功能方面的需要。那樣,使用者就能夠繼續直接地使用文件系統,而不必建造運行在文件系統之上(如數據庫之類)的特殊目的層。  小文件的性能  那麼,如何能使文件系統更加適應環境呢?Namesys 已經決定著眼於文件系統的一個方面,至少最初是 — 小文件的性能。通常,像 ext2 和 ufs 這樣的文件系統在這一方面做的並不是很好,經常迫使開發人員轉向數據庫或者特別組織的處理來獲取他們所需要的某種性能。隨著時間的推移,這種“圍繞問題進行編碼”的方法慫恿了代碼的膨脹和許多不兼容的特殊目的 API,這並不是好事情。    這兒有一個 ext2 如何鼓勵這種編程的例子。ext2 很擅長存儲大量大小在 20k 以上的文件,但是對於存儲 2,000 個 50 字節的文件來說,它就不是一種很理想的技術了。當 ext2 必須處理非常小的文件時,不只是性能顯著地下降,而且存儲效率也同樣下降,因為 ext2 是按 1k 或者 4k 的塊來分配空間的(可在文件系統創建時設定)。    現在,常規的明智做法會提示您不應該在文件系統上儲存這麼多小的文件。而是應該存儲在某種運行在文件系統之上的數據庫裡。作為對這種說法的回應,Hans Reiser 指出無論何時您需要在文件系統的頂上建立一層,那就意味著文件系統不滿足您的需要。如果文件系統滿足您的需要,那麼您首先就要避免使用特殊目的的解決方案。這樣就可以節省開發的時間,並消除代碼膨脹。這些代碼可能是在您手動處理自己的個人存儲器或者緩沖機制時,或者與數據庫的某個庫交互作用過程時所產生的。    理論上是這樣。但是在實際運用中,ReiserFS 的小文件性能會是如何的好呢?好得讓人吃驚。實際上,當處理小於 1k 的文件時,ReiserFS 大概要比 ext2 快 8 到 15 倍!更妙的是,這些性能提高並不以其它文件類型的性能損失為代價。通常,ReiserFS 幾乎在各個方面都優於 ext2,但是在處理小文件時才真正體現出了其閃光點。    ReiserFS 技術  那麼 ReiserFS 是怎樣提供如此出色的小文件性能的呢?ReiserFS 使用了特殊的優化 b* 平衡樹(每個文件系統一個)來組織所有的文件系統數據。這為其自身提供了非常不錯的性能改進,也能夠減輕文件系統設計上的人為約束。例如,現在一個目錄下可以容納 100,000 個子目錄。另一個使用 b* 樹的好處就是 ReiserFS 能夠像大多其它的下一代文件系統一樣,根據需要動態地分配索引節,而不必在文件系統創建時建立固定的索引節。這有助於文件系統更靈活地適應其面臨的各種存儲需要,同時提供附加的空間有效率。    ReiserFS 有許多特征是特別針對提高小文件的性能的。和 ext2 不同,ReiserFS 並不固定地以 1k 或者 4k 的塊分配存儲空間,而是分配所需要的精確尺寸。而且 ReiserFS 也包括了以尾文件為中心的特殊優化 — 尾文件是指那些比文件系統塊小的文件及文件結尾部分。為了提高性能,ReiserFS 能夠在 b* 樹的葉子節點存儲文件,而不是把數據存儲在磁盤的其它地方再指向它。    這做了兩件事。第一,它顯著地提高了小文件的性能。由於文件數據和 stat_data(索引節)信息是緊挨著存儲的,它們通常能被同一次磁盤 IO 操作所讀取。第二,ReiserFS 能夠壓縮尾文件,節省大量磁盤空間。實際上,帶有尾文件壓縮功能(默認)的 ReiserFS 文件系統可以比同等的 ext2 文件系統多存儲 6 個百分點的數據,這就其自身來說是令人驚歎的。    然而,由於在文件被修改時,尾文件壓縮迫使 ReiserFS 重裝數據,這就導致了性能上的輕微折損。鑒於這個原因,ReiserFS 尾文件壓縮可以被關掉,允許系統管理員在速度與空間有效率上做出選擇,或者犧牲一些存儲能力來換取更高的速度。   




Copyright © Linux教程網 All Rights Reserved