要使用分布式文件系統來降低成本,于是搜尋了開源的分布式文件系統。
經過安裝部署和測試,把我使用中碰到的一些問題總結一下, 希望對大家有所幫助, 我也有一些問題沒有搞懂,希望和大家一起交流,共同進步。
第一: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/。
另外,相對于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公司收購后, 這個東西連下載地址都沒有了。。。。。。, 狂暈一吧!!!
如果那個弟兄找到下載地址, 麻煩給通知一下, 謝謝。