程序員的智囊?guī)煜盗兄?--分布式文件系統(tǒng)(Distributed file systems)
這是 程序員的智囊?guī)煜盗? 的第三篇文章。 上一篇文章 本來打算介紹幾個搭建網(wǎng)站的框架,但由于這部分的內(nèi)容較多,還需要再整理一段時間,所以先放出這部分的第三篇文章。這一部分我們講介紹分布式存儲相關(guān)的一些知識,以及當(dāng)下(2013-10-29)主流的分布式文件系統(tǒng)。由于有些NoSQL數(shù)據(jù)庫也可以用來做分布式文件系統(tǒng)的替代物,所以這部分我們還將介紹幾個NoSQL數(shù)據(jù)庫。主要講介紹以下幾種分布式文件系統(tǒng)和NoSQL數(shù)據(jù)庫:
-
nfs
-
ceph
-
TFS
-
GlusterFS
-
MooseFS
-
PVFS2
-
GPFS
-
HDFS
-
FastDFS
-
MogileFS
-
Lustre
-
GoogleFS
-
memcached
-
Tokyo Tyrant
-
Redis
- MongoDB
背景
之前公司一直用nfs做文件服務(wù)器,nfs的好處就是配置簡單,使用方便。但缺點(diǎn)是當(dāng)數(shù)據(jù)量很多,尤其是小文件多的時候,其性能令人堪憂,往往會成為整個系統(tǒng)的性能瓶頸。所以準(zhǔn)備在將來考慮用性能更好的方法替代nfs,于是花大工夫整理調(diào)查,橫向?qū)Ρ攘烁鞣植际轿募到y(tǒng)。調(diào)查報(bào)告的詳細(xì)結(jié)果整理在 這里 ,本文是從中抽出幾個概要部分稍作講解,具體內(nèi)容請參見調(diào)查報(bào)告 原文 。 我把分析報(bào)告原文放到了七牛上,但我感覺它最近不太穩(wěn)定,如果下載不了,請與我聯(lián)系,或直接在下面評論里留郵箱。
注:本來調(diào)查報(bào)告分兩部分,理論分析報(bào)告和性能測試報(bào)告。本文的目的是介紹給大家更多的知識,擴(kuò)展知識面,增加知識的廣度。
而不是說直接告訴你,這個比那個好,你用這個,別用那個。
尤其是性能測試這種東西,別人的測試結(jié)果的參考價值并不是很大,必須沉下心來,自己去一點(diǎn)點(diǎn)的測才能找到最適合自己的工具、參數(shù)。
因此,本文只給出了理論分析報(bào)告,并沒有給出性能測試報(bào)告。
幾點(diǎn)基礎(chǔ)知識
存儲方案
-
DAS
-
SAN
- NAS
數(shù)據(jù)存儲的方法
-
塊存儲(block)
-
文件存儲(file)
- 對象存儲(object)
元數(shù)據(jù)(meta data)
元數(shù)據(jù)的概念:data about data
數(shù)據(jù)是指普通文件中的實(shí)際數(shù)據(jù),而元數(shù)據(jù)指用來描述一個文件的特征的系統(tǒng)數(shù)據(jù),
諸如訪問權(quán)限、文件擁有者以及文件數(shù)據(jù)塊的分布信息(inode...)等等。
在集群文件系統(tǒng)中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。
用戶需要操作一個文件必須首先得到它的元數(shù)據(jù),才能定位到文件的位置并且得到文件的內(nèi)容或相關(guān)屬性。
元數(shù)據(jù)對文件系統(tǒng)的影響:文件系統(tǒng)對元數(shù)據(jù)的操作占據(jù)了傳統(tǒng)文件系統(tǒng)總負(fù)荷的近一半。
高效的元數(shù)據(jù)管理方式對提高整個系統(tǒng)的性能至關(guān)重要。
A comparison of file system workloads. 2000 USENIX Annual Technical Conference
單點(diǎn)依賴
當(dāng)一臺服務(wù)器出現(xiàn)故障后,整個服務(wù)器群癱瘓。
解決方案:
1 TFS 利用linux 高可用性(HA)機(jī)制,配置HA元數(shù)據(jù)服務(wù)集群。但這樣只能配置主設(shè)備和從設(shè)備,事實(shí)上同一時刻還是只有一個服務(wù)器在服務(wù)。這樣做只能提高系統(tǒng)的穩(wěn)定性,并不能解決采用集成式元數(shù)據(jù)服務(wù)模式的瓶頸問題(由于系統(tǒng)需要同步,反而會降低性能)。
2 Ceph GPFS 分布式元數(shù)據(jù)服務(wù)模型 將負(fù)載分散到多臺服務(wù)器解決了性能瓶頸問題,利用對等的服務(wù)器或冗余元數(shù)據(jù)服務(wù)分區(qū)解決了單點(diǎn)故障問題。分布式看似非常完善,然而它大大增加了設(shè)計(jì)實(shí)現(xiàn)上的復(fù)雜性,同時可能會引入了新的問題,即性能開銷和數(shù)據(jù)一致性問題。
3 GlusterFS 無元數(shù)據(jù)服務(wù)模型
無元數(shù)據(jù)服務(wù)器設(shè)計(jì)的好處是沒有單點(diǎn)故障和性能瓶頸問題,可提高系統(tǒng)擴(kuò)展性、性能、可靠性和穩(wěn)定性。對于海量小文件應(yīng)用,這種設(shè)計(jì)能夠有效解決元數(shù)據(jù)的難點(diǎn)問題。它的負(fù)面影響是,數(shù)據(jù)一致問題更加復(fù)雜,文件目錄遍歷操作效率低下,缺乏全局監(jiān)控管理功能。同時也導(dǎo)致客戶端承擔(dān)了更多的職能,比如文件定位、名字空間緩存、邏輯卷視圖維護(hù)等等,這些都增加了客戶端的負(fù)載,占用相當(dāng)?shù)腃PU和內(nèi)存。
HA高可用性
高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護(hù)操作(計(jì)劃)和突發(fā)的系統(tǒng)崩潰(非計(jì)劃)所導(dǎo)致的停機(jī)時間,以提高系統(tǒng)和應(yīng)用的可用性。它與被認(rèn)為是不間斷操作的容錯技術(shù)有所不同。HA系統(tǒng)是目前企業(yè)防止核心計(jì)算機(jī)系統(tǒng)因故障停機(jī)的最有效手段。
實(shí)現(xiàn)方法:
-
heartbeat:比較常用
-
rhcs:redhat集群套件--redhat cluster suite 圖形界面,實(shí)現(xiàn)方便,可有100多個節(jié)點(diǎn)
-
corosync/openais + paceker
2個節(jié)點(diǎn):
采用主備模式:一臺激活,另一臺備份,對外呈現(xiàn)一個虛擬ip地址。兩個節(jié)點(diǎn)之間采用心跳線,備份節(jié)點(diǎn)使用心跳線來探測活動節(jié)點(diǎn)是否處于活動狀態(tài)。
心跳線:雙絞線 或光纖跳線或 serial線
采用主主模式:兩個節(jié)點(diǎn),在提供web服務(wù)時,左側(cè)為激活狀態(tài),右側(cè)為備份狀態(tài);在實(shí)現(xiàn)mail服務(wù)時, 一個為激活狀態(tài),一個為備份狀態(tài)。
FUSE
Filesystem in userspace
在用戶態(tài)實(shí)現(xiàn)的文件系統(tǒng)
為什么使用FUSE:
首先要了解用戶態(tài)和內(nèi)核態(tài)
為了保證系統(tǒng)安全,在用戶態(tài)執(zhí)行的代碼被硬件限制,不能進(jìn)行某些操作,如修改其他程序的存儲空間、修改配置文件、殺死其他進(jìn)程、重啟等。
而在內(nèi)核態(tài)(核心態(tài))執(zhí)行的代碼,可以不加限制地對系統(tǒng)存儲、外部設(shè)備進(jìn)行操作。
但是從用戶態(tài)切換到核心態(tài)需要很大的開銷。
所以FUSE有如下優(yōu)點(diǎn):
能夠大幅提高效率,簡化了為操作系統(tǒng)提供新的文件系統(tǒng)的工作量,特別適用于各種虛擬文件系統(tǒng)和網(wǎng)絡(luò)文件系統(tǒng)。
開源軟件的版本(copyleft)問題
GPL GPL2 GPL3 LGPL AGPL
題外話
無目錄結(jié)構(gòu)、扁平化存儲是海量存儲的未來發(fā)展方向
一般來講計(jì)算機(jī)內(nèi)部對文件的操作和查找不是按目錄進(jìn)行定位的
目錄結(jié)構(gòu)完全是為了方便用戶瀏覽。
因而,一些不會與用戶直接打交道的數(shù)據(jù),完全可以不用目錄結(jié)構(gòu)存儲。設(shè)計(jì)新產(chǎn)品的時候可以采用扁平化設(shè)計(jì)。
參考資料
關(guān)于存儲,分布式存儲,分布式文件系統(tǒng)的更多信息,可以參見以下幾本資料:
-
劉愛貴整理的《
分布式文件系統(tǒng)
》。分布式文件系統(tǒng)的大體認(rèn)識。
-
張冬寫的《
大話存儲
》和《大話存儲2》。這個系列的書講得非常通俗易懂,而且很詳細(xì),例子也很生動,我認(rèn)為可以作為國內(nèi)的權(quán)威了。
- 《海量存儲》
分布式文件系統(tǒng)的評價標(biāo)準(zhǔn)
部署
-
部署復(fù)雜程度
-
服務(wù)器配置要求
-
文件系統(tǒng)接口
-
是否支持FUSE
-
是否需要配套的客戶端
-
是否支持目錄結(jié)構(gòu)
- 可拓展性
性能
-
小文件支持
-
大文件支持
-
文件大小對性能的影響
- 平均傳輸速率
數(shù)據(jù)安全
-
單點(diǎn)依賴
-
冗余保護(hù)
- 故障恢復(fù)
實(shí)際應(yīng)用
-
適用產(chǎn)品級別
-
是否成熟
-
實(shí)際應(yīng)用
- 版本號
維護(hù)
-
是否開源
-
license
-
社區(qū)活躍程度
-
文檔語言
-
開發(fā)語言
- 文檔完善程度
其他
-
數(shù)據(jù)遷移成本
-
存儲機(jī)制
-
元數(shù)據(jù)存儲方式
- 其他特點(diǎn)
如何才能選擇最好的分布式文件系統(tǒng)呢?沒有最好的分布式文件系統(tǒng),只有最適合你的實(shí)際情況的。不是說最近c(diǎn)eph很火,ceph就一定適合你,一定要在認(rèn)真分析你的實(shí)際情況后,通過理論參數(shù)做出初步篩選,然后通過性能測試來做最后的篩選,切不可魯莽選擇。
詳細(xì)的理論比對請參見理論分析報(bào)告的
原文
!
時間:2014-11-16
作者:
FingerLiu
如果您對我介紹的知識感興趣,歡迎收藏和推薦!謝謝您的支持!
-------------------------------
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

