reiserfs
新型的文件系統
ReiserFS是一種新型的文件系統,它通過一種與眾不同的方式--完全平衡樹結構來容納數據,包括文件數據,文件名以及日誌支持。ReiserFS還以支持海量磁碟和磁碟陣列,並能在上面繼續保持很快的搜索速度和很高的效率。
ReiserFS相對於Linux上傳統的文件系統--ext2有很多優點,在下面一一介紹。
ReiserFS有先進的日誌(Journaling/logging)功能 機制。日誌機制保證了在每個實際數據修改之前,相應的日誌已經寫入硬碟。文件與數據的安全性有了很大提高。
Reiserfs對一些小文件不分配inode。而是將這些文件打包,存放在同一個磁碟分塊中。而其它文件系統則為每個小文件分別放置到一個磁碟分塊中。這意味著:如果有10000個小文件,就要佔用10000個分塊。想想看這多浪費磁碟空間。
ReiserFS基於快速平衡樹(balanced tree)搜索,平衡樹在性能上非常卓越,這是一種非常高效的演演算法。ReiserFS搜索大量文件時,搜索速度要比ext2快得多。Reiserfs文件系統使用B*Tree存儲文件,而其它文件系統使用B+Tree樹。B*Tree查詢速度比B+Tree要快很多。Reiserfs在文件定位上速度非常快。
在實際運用中,ReiserFS 在處理小於 1k 的文件時,比ext2 快 8 到 15 倍!ReiserFS 幾乎在各個方面都優於 ext2。
ReiserFS是一個非常優秀的文件系統,可輕鬆管理上百G的文件系統,ReiserFS文件系統最大支持的文件系統尺寸為16TB。這非常適合企業級應用中。
由於它的高效存儲和快速小文件I/O特點,使用ReiserFs文件系統的PC,在啟動X窗口系統時,所花的時間要比在同一台機器上使用ext2文件系統少1/3。另外,ReiserFS文件系統支持單個文件尺寸為4G的文件,這為大型資料庫系統在linux上的應用提供了更好的選擇。
ReiserFS是基於平衡樹(STree)的文件系統結構,尤其對於大量文件的巨型文件系統,如伺服器上的文件系統,搜索速度要比ext2快;ext2使用局部的二分查找法,綜合性能比不上ReiserFS。
在Reiser4中還運用了文件即是目錄的設計來管理meta-data,並且運用了Hans Reiser自己發明的Dancing B-tree,效率提升非常明顯。
ReiserFS里的目錄是完全動態分配的,因此不存在ext2中常見的無法回收巨型目錄佔用的磁碟空間的情況。ReiserFS里小文件(< 4K)可以直接存儲進樹,小文件讀取和寫入的速度更快,樹內節點是按位元組對齊的,小的文件可共享同一個硬碟塊,節約大量空間。Ext2使用固定大小的塊分配策略,也就是說,不到4K的小文件也要佔據4K的空間,導致的空間浪費比較嚴重。
出現異常斷電的時候,會出現大量的未寫入完全的數據。ReiserFS會在恢復的時候進行rebuild-tree。而這個過程是非常慢的。在ReiserFS的升級版本Reiser4中有所改觀。
在1997年7月23日,Hans Reiser把他的基於平衡樹結構的ReiserFS文件系統在網上公布。這是ReiserFS的第一次公開亮相。此後,ReiserFS一直在Hans Reiser和領導下的開發小組下開發和發展,SuSE Linux也對它的發展起了重大的幫助。由於ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。Novell收購SUSE公司以後停止了對Namesys的資助。但是在2001年,Namesys的ReiserFS受到了五角大樓60萬美元的資助。
2008年,由於ReiserFS的創始人Hans Reiser的謀殺罪名成立,Namesys可能面臨倒閉或被收購的危險,但是Namesys的工作人員稱,即使Namesys倒閉也不會停止Reiser4的繼續完善和開發。
就技術而言,兩個文件系統有很多的不同,但是對於多數人來說,只需關心其中的幾點即可。第一是你可以很方便地從ext2格式進行升級,因為到目前為止,很多Linux發行套件仍然在使用這種文件系統。第二就是ext3不僅可以記錄數據日誌(這在ext2中就已經具備),而且在此基礎上還可以記錄元數據 (Metadata)日誌。現在的ReiserFS則只有日誌元數據。第三就是文件系統的可擴展性。在介紹第三點以前,讓我們先來看一看前兩個不同點,因為第三點值得我們特別關注。就ext3來說,它可以方便地從ext2文件系統進行升級轉換是其一大優勢。當然,對於一直使用ReiserFS的人來說,這沒有什麼意義。但是,大多數用戶並不願意嘗試使用ext3以外的任何一種日誌文件系統。原因很簡單,把ext2轉換到ext3要比轉換成其它任何一種文件系統更簡單、快捷。
和ext2相比,ext3提供了更佳的安全性,這就是數據日誌和元數據日誌之間的不同。在兩台不同的電腦上,其中一台使用數據日誌,另外一台使用數據和元數據日誌。啟動一些應用程序,並對一些數據文件進行適當的改動,然後撥掉電源。當啟動第一台機器時,它可以很快地把文件系統恢復到穩定的狀態。但是可以肯定,剛才你對數據文件所做的改動,已經由於掉電而丟失。第二台機器也可以很快地將文件系統恢復到穩定的狀態,並且可以保留掉電前你對數據所做的所有改動。
很顯然,對於大多數計算機用戶來說,一般都願意使用後者。不過,除非真的有此需求,否則應該慎重考慮。在數據日誌上增加了元數據日誌后,會使系統速度受到嚴重的影響。在大多數情況下,ReiserFS已經比沒有日誌功能的ext2快了很多。並且,在一般情況下,ReiserFS要比具有元數據日誌功能的ext3快得多。如果你同時選擇了數據和元數據日誌功能,那麼ReiserFS要比ext3快得多。
上面說到ReiserFS的速度要快得多,不過在現實中,人們關心的往往並不是速度(我指的是感覺不是特別明顯的速度上的差異)。作為一個用戶,很難想象他會在意打開一個Word文件,或者Excel表單需要2.5秒還是4秒的時間。事實上,大部分人選擇使用微軟的Office,並不是基於速度方面的考慮,而是因為大家都在使用該辦公套件。
這種現象並不僅僅發生在Windows領域。KWord或者AbiWord的載入速度要比StarOffice快得多,但是,很多Linux用戶一邊等著 StarOffice緩慢地啟動,一邊還在對其大加讚賞。一般情況下,他們並不會因為StarOffice的速度上有欠缺而放棄它,因為,他們已經習慣了。
可見,雖然速度較慢,但是只要其還在人們可以容忍的限度之內,一般人是不會介意的。我們一般喜歡把速度慢的原因歸咎於硬體,而不是軟體。比如說,眾多骨灰級的遊戲玩家一般會購買最新的晶元和顯卡,來運行自己鍾愛的遊戲,而不會根據自己現有的硬體配置來購買可以運行的遊戲。
在此,我必須澄清,我並不認為因為可以使用更快的處理器,以及更大的內存,所以Linux就可以採用那些很慢的、臃腫的程序代碼(當然Linus Torvalds也不會答應這麼做)。我只是覺得在做某些事情時,完全可以採取或者選擇一種合適的方式來完成。如果有人要享受ext3提供的數據日誌的安全功能,並且又不想因此而在速度上有所損失的話,完全可以買一個更快的處理器來彌補該文件系統性能上的不足。
當然,ReiserFS文件系統也有類似的問題。所以,如果你要想使用ReiserFS,而又擔心自己的數據丟失,那麼你可以關閉驅動器的寫緩衝功能。根據所使用的系統不同,關閉該功能的命令可能也會有所不同,但可能都和以下所示的命令類似:
/sbin/hdparm -wo /dev/had
以上命令是要關閉系統中的第一個IDE驅動器的寫緩衝功能。需要引起注意的是,這樣做將會使系統性能受到很大影響。當然,既然你可以忍受ext3元數據日誌功能帶來的系統速度下降,這樣做又有何不可呢?在我的機器上,由於害怕丟失一些重要數據,我就關閉了其中一個驅動器的寫緩衝功能,性能下降得很厲害,但我認為這種代價還是值得的。
說了那麼多,我只是想說明一件事,也就是說對於大多數使用電腦的人而言,選擇ReiserFS還是ext3,速度並不是決定性的因素。只有少數的用戶和一些對速度要求非常苛刻的特殊環境,才會關心二者的速度差異。此外,ext3有一個獨特的功能,它可以在每一個載入點讓用戶控制數據日誌功能。換句話說,你可以從一個驅動器上載入多個分區,並且每一個分區都可以決定是否使用數據日誌功能。當然,如果把整個驅動器的寫緩衝功能都關閉了,那麼也就沒有這個選項了。
在現實中,大多數人既不會考慮性能的因素,也不會考慮安全的因素,而總是希望採用一種最方便和最熟悉的途徑。在各種途徑的選擇中,一個取決定性的因素就是用戶目前正在使用什麼系統。不過,在以後我們選擇使用的Linux套件中,不管你是重新安裝,還是進行升級,各Linux發行公司都會把文件系統的選擇過程變得非常簡單。
現在讓我們來看一看關鍵的第三個因素:可擴展性。如果你訪問一下ReiserFS的站點就會發現,ReiserFS對空間利用率和速度非常在意,因此,它在磁碟利用率和性能方面都非常出色。當我把文件系統從ReiserFS轉換到ext3 時,發現我的可用空間變少了。不過這沒有關係,因為現在的磁碟空間和內存的價格都非常便宜。此外,ReiserFS還在平衡樹方面下了很大的功夫。 ReiserFS是基於平衡樹的文件系統結構,這使得其在處理大量文件的巨型文件系統,如伺服器上的文件系統時性能要好得多。
ReiserFS突出的地方還在於其設計上著眼於實現一些未來的插件程序,這些插件程序可以提供訪問控制列表、超級鏈接,以及一些其它非常不錯的功能。在這一點上,ReiserFS的開發者要比ext3做得好,因為他們已經事先考慮到了所要實現的功能。這樣在真正要增加這些功能時,其穩定性肯定要比 ext3好。據資料顯示,在設計ext2時,並沒有人計劃要為其設計日誌功能。日誌功能是後來匆忙補充上去的。當然,這並不能說是什麼壞事,但至少在你使用時,總會有一種不安全的感覺。所以,如果著眼於將來擴展性方面的考慮,選擇ReiserFS應該說是一明智之舉。
總的看來,這兩個文件系統都比較優秀,並且誰也沒有絕對的優勢可以壓倒對方。如果你現在使用的是ext2文件系統,並且對數據安全性要求很高,那麼可以考慮使用ext3。如果你更在意文件系統的速度及可擴展性,或者想嘗試使用ext2以外的文件系統,那麼ReiserFS應該是首選。
從namesys下載reiserfs的補丁程序,要確保下載的補丁版本和你的kernel版本是一致的。
下載後用root身份登錄進入系統,切換至/usr/src/linux目錄,執行命令:
#gunzip /path/to/linux-2.2.16-reiserfs-3.5.22-patch.gz #patch -p1 -i /path/to/linux-2.2.16-reiserfs-3.5.22-patch
在做完上面的兩步后,重新編譯kernel,將reiserfs編譯進kernel或做成一個模塊。
Reiserfs的相關應用程序在 /usr/src/linux/fs/reiserfs/utils 目錄下。你可以用下面方法安裝它們:
#mkdir bin #make #make install
最後,你可以用"fdisk"命令重新分區或用"mkreiserfs"命令重新格式化一個已經存在的分區。指定reiserfs類型載入這個分區,如"mount -t reiserfs /dev/hda2 /download",這樣你就可以使用這個新的分區了。
reiserfs是Linux操作系統上面性能最好、設計最先進的文件系統,特別是reiserfs4 版本具備了很多領先的文件系統特性。reiserfs的作者是Hans Reiser,Hans是從俄裔美國人,他領導的Namesys公司致力於開發和維護reiserfs文件。特別值得一提的是reiserfs開發團隊的大多數人都是在俄國國內的開發人員。
本來reiserfs是Linux平台最有前途的文件系統,JavaEye的伺服器也一直使用reiserfs,非常滿意於reiserfs的穩定性和高性能,但是所有這一切在2006年被改變。
2006年9月Hans離異的妻子Nina Reiser失蹤,隨後警方在Hans的住所發現了Nina的血跡,Hans被指控謀殺了他的妻子。據悉,Hans離異的妻子和Hans的好友兼公司合伙人關係密切,而Hans已經因為公司財務問題和合伙人關係破裂,此時Nina和他的合伙人走到了一起,可能引發了Hans的報復心理。
經過長達一年半的審訊,2008年4月28日,美國加州奧克蘭法庭宣判,Hans Reiserfs一級謀殺罪名成立,現年44歲的Hans Reiserfs將面臨25年的牢獄生涯。