天天看點

開源分布式檔案系統比較

要使用分布式檔案系統來降低成本,于是搜尋了開源的分布式檔案系統。

經過安裝部署和測試,把我使用中碰到的一些問題總結一下, 希望對大家有所幫助, 我也有一些問題沒有搞懂,希望和大家一起交流,共同進步。

第一:CEPH

網上搜尋了一些資料, 說 ceph 性能最高,C++編寫的代碼,支援Fuse,并且沒有單點故障依賴, 于是下載下傳安裝, 由于 ceph 使用 btrfs 檔案系統, 而btrfs 檔案系統需要 Linux 2.6.34 以上的核心才支援, 顯然我使用的 RHEL5 的核心還不支援 btrfs檔案系統, 于是下載下傳最新的核心進行更新, 搞了2天沒有更新成功, 編譯一次都要耗費1個多小時才能完成,最後發現最新版的 ubuntu 系統支援btrfs檔案系統, 于是安裝 ubuntu 的虛拟機,btrfs 檔案系統搞定了, 但是啟動ceph的相關程序出錯, 無法啟動成功。是以談不上對其進行過測試。

CEPH中使用了一個比較先進的算法 crush算法, 據翻譯出來,為分布式基于對象的存儲系統設計了一個可更新的僞随機的資料分布函數,它能夠有效地管理資料對象和儲存設備,而不需要通過一個中心目錄。由于大系統都是動态的,CRUSH被設計成為一個當把不需要的資料遷移最小化時,能友善的增加或移除儲存設備。這個算法提供了一個大範圍的不同種類的資料複制和可靠性機制,以及根據使用者自定義的政策來配置設定資料,這種政策迫使資料複制從故障領域分離出來。

另外CEPH使用的檔案系統為btrfs, 這個檔案系統具有很多先進的特性, 為下一代Linux使用的檔案系統。

BTRFS最終可能會給ZFS等帶來更多威脅,它具有線上碎片整理功能(隻有固态盤有這項功能)、Copy-On-Write技術、資料壓縮、鏡像、資料條帶和快照等等。

  另外,BTRFS在資料存儲方面比ext更完善。它包括一些邏輯卷管理和RAID硬體功能,可以對内部中繼資料和使用者資料進行檢驗和,同時内嵌了快照功能。ext4也可以實作以上一些功能,但是需要與檔案系統和邏輯卷管理器進行通信。

這麼多先進的功能, 可惜現在還無法消受啊。。。。。。

第二:glusterfs

網上說glusterfs比較不錯, 穩定,适合大型應用, 關鍵是沒有單點故障依賴,C語言的代碼, 支援FUSE,于是下載下傳安裝研究。 安裝配置還算簡單,啟動後進行測試。

開始感覺确實不錯,很爽。 後來用壓力測試工具對其吞吐量進行測試 , 發現性能不能滿足我們的生産需求,不知道是哪裡的配置問題,

我們測試的都是大檔案的讀操作和大檔案的寫操作, 吞吐量在 5MB/秒左右, 顯然不能滿足要求。但是沒有找到具體的瓶頸,畢竟程式是别人寫的,要查瓶頸也不容易。

關于 glusterfs的詳細的資料, 可以看這位弟兄的文章, 他做的比較深入  。

http://zhoubo.sinaapp.com/?cat=22

第三:moosefs

這個網上說性能不錯,有單點故障依賴, C代碼編寫,支援FUSE, 下載下傳試試吧。

安裝配置還算簡單。很快就搭建好環境了, 于是進行測試。測試性能還不錯。吞吐量在15MB/秒以上。

第四:mogilefs 

網上說這個是性能最高的, 不過是perl編寫的代碼, 對外提供API來進行使用, 搭建相對比較複雜一點, 因為需要安裝很多依賴的第三方perl包,另外還要安裝Mysql資料庫來支援。

安裝完畢後, 伺服器端起來了, 用戶端有JAVA, PHP,  PERL, RUBY 等開發的, 我需要的是要支援 FUSE 的, 但是這個分布式的檔案系統,對FUSE的支援需要安裝一個PERL與C通信的子產品, 這個子產品死活編譯不過去, 最後無法測試成功,無奈隻能有時間了繼續研究。

第五:fastDFS

網上說是“國人在mogileFS的基礎上進行改進的key-value型檔案系統,同樣不支援FUSE,提供比mogileFS更好的性能”, 這不是扯蛋嗎 ? Mogilefs 是perl寫的, 如果 fastDFS是在 mogilefs 的基礎上改進的話, 應該也是perl寫的, 但是下載下傳了fastDFS的代碼後, 人家都是C的代碼, 怎麼可能是在mogilefs的基礎上改進呢 ?看了一下fastDFS具體的結構,準确的說應該是“借鑒了MogileFS的思路”,而不能說“在MogileFS的基礎上改進”。

我安裝了一下, 安裝還算簡單, 不支援fuse, 上傳檔案後會生成一個http的下載下傳位址, 通過http的方式進行下載下傳。這種方式顯然不适合我想要的生産環境。

下面是一個網友寫的 FastFDS和MogileFS的對比文章, 感覺比較客觀真實, 是以在這裡給大家轉帖一下。

FastDFS設計時借鑒了MogileFS的一些思路。FastDFS是一個完善的分布式檔案存儲系統,通過用戶端API對檔案進行讀寫。可以說,MogileFS的所有功能特性FastDFS都具備,MogileFS網址:http://www.danga.com/mogilefs/。

<a></a>

另外,相對于MogileFS,FastDFS具有如下特點和優勢:

1. FastDFS完善程度較高,不需要二次開發即可直接使用;

2. 和MogileFS相比,FastDFS裁減了跟蹤用的資料庫,隻有兩個角色:tracker和storage。FastDFS的架構既簡化了系統,同時也消除了性能瓶頸;

3. 在系統中增加任何角色的伺服器都很容易:增加tracker伺服器時,隻需要修改storage和client的配置檔案(增加一行tracker配置);增加storage伺服器時,通常不需要修改任何配置檔案,系統會自動将該卷中已有檔案複制到該伺服器;

4. FastDFS比MogileFS更高效。表現在如下幾個方面:

  1)參見上面的第2點,FastDFS和MogileFS相比,沒有檔案索引資料庫,FastDFS整體性能更高;

  2)從采用的開發語言上看,FastDFS比MogileFS更底層、更高效。FastDFS用C語言編寫,代碼量不到2萬行,沒有依賴其他開源軟體或程式包,安裝和部署特别簡潔;而MogileFS用perl編寫;

  3)FastDFS直接使用socket通信方式,相對于MogileFS的HTTP方式,效率更高。并且FastDFS使用sendfile傳輸檔案,采用了記憶體零拷貝,系統開銷更小,檔案傳輸效率更高。

5. FastDFS有着詳細的設計和使用文檔,而MogileFS的文檔相對比較缺乏。

6. FastDFS的日志記錄非常詳細,系統運作時發生的任何錯誤資訊都會記錄到日志檔案中,當出現問題時友善管理者定位錯誤所在。

7. FastDFS還對檔案附加屬性(即meta data,如檔案大小、圖檔寬度、高度等)進行存取,應用不需要使用資料庫來存儲這些資訊。

8. FastDFS從V1.14開始支援相同檔案内容隻儲存一份,這樣可以節省存儲空間,提高檔案通路性能。

第六:Lustre

本來還對這個分布式檔案系統抱有無限的希望, 被Oracle公司收購後, 這個東西連下載下傳位址都沒有了。。。。。。, 狂暈一吧!!!

如果那個弟兄找到下載下傳位址, 麻煩給通知一下, 謝謝。