分布式文件系統(tǒng)分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接再本地節(jié)點(diǎn)上,, Ceph簡介有官方(付費(fèi))的和開源的 Ceph過往Ceph最早起源于Sage就讀博士期間的工作,、成果于2004年發(fā)表,并隨后貢獻(xiàn)給開源社區(qū),。經(jīng)過多年的發(fā)展之后,,已得到眾多云計(jì)算和存儲(chǔ)廠商的支持,成為應(yīng)用最廣泛的開源分布式存儲(chǔ)平臺,。 Ceph根據(jù)場景可分為對象存儲(chǔ),、塊設(shè)備存儲(chǔ)和文件存儲(chǔ)。Ceph相比其它分布式存儲(chǔ)技術(shù),,其優(yōu)勢點(diǎn)在于:它不單是存儲(chǔ),,同時(shí)還充分利用了存儲(chǔ)節(jié)點(diǎn)上的計(jì)算能力,在存儲(chǔ)每一個(gè)數(shù)據(jù)時(shí),,都會(huì)通過計(jì)算得出該數(shù)據(jù)存儲(chǔ)的位置,,盡量將數(shù)據(jù)分布均衡。同時(shí),,由于采用了CRUSH,、HASH等算法,使得它不存在傳統(tǒng)的單點(diǎn)故障,,且隨著規(guī)模的擴(kuò)大,,性能并不會(huì)受到影響,。 1.Ceph的主要架構(gòu) Ceph的最底層是RADOS(分布式對象存儲(chǔ)系統(tǒng)),它具有可靠,、智能,、分布式等特性,實(shí)現(xiàn)高可靠,、高可拓展,、高性能、高自動(dòng)化等功能,,并最終存儲(chǔ)用戶數(shù)據(jù),。RADOS系統(tǒng)主要由兩部分組成,分別是OSD和Monitor,。 RADOS之上是LIBRADOS,,LIBRADOS是一個(gè)庫,它允許應(yīng)用程序通過訪問該庫來與RADOS系統(tǒng)進(jìn)行交互,,支持多種編程語言,,比如C、C++,、Python等,。 基于LIBRADOS層開發(fā)的有三種接口,分別是RADOSGW,、librbd和MDS,。 RADOSGW是一套基于當(dāng)前流行的RESTFUL協(xié)議的網(wǎng)關(guān),支持對象存儲(chǔ),,兼容S3和Swift,。 librbd提供分布式的塊存儲(chǔ)設(shè)備接口,支持塊存儲(chǔ),。 MDS提供兼容POSIX的文件系統(tǒng),,支持文件存儲(chǔ)。 Ceph的功能模塊Ceph的核心組件包括Client客戶端,、MON監(jiān)控服務(wù),、MDS元數(shù)據(jù)服務(wù)、OSD存儲(chǔ)服務(wù),,各組件功能如下: ? Client客戶端:負(fù)責(zé)存儲(chǔ)協(xié)議的接入,,節(jié)點(diǎn)負(fù)載均衡 ? MON監(jiān)控服務(wù):負(fù)責(zé)監(jiān)控整個(gè)集群,維護(hù)集群的健康狀態(tài),,維護(hù)展示集群狀態(tài)的各種圖表,,如OSD Map、Monitor Map、PG Map和CRUSH Map ? MDS元數(shù)據(jù)服務(wù):負(fù)責(zé)保存文件系統(tǒng)的元數(shù)據(jù),,管理目錄結(jié)構(gòu) ? OSD存儲(chǔ)服務(wù):主要功能是存儲(chǔ)數(shù)據(jù),、復(fù)制數(shù)據(jù)、平衡數(shù)據(jù),、恢復(fù)數(shù)據(jù),,以及與其它OSD間進(jìn)行心跳檢查等。一般情況下一塊硬盤對應(yīng)一個(gè)OSD,。 3.Ceph的資源劃分 Ceph采用crush算法,,在大規(guī)模集群下,實(shí)現(xiàn)數(shù)據(jù)的快速,、準(zhǔn)確存放,,同時(shí)能夠在硬件故障或擴(kuò)展硬件設(shè)備時(shí),做到盡可能小的數(shù)據(jù)遷移,,其原理如下: 當(dāng)用戶要將數(shù)據(jù)存儲(chǔ)到Ceph集群時(shí),,數(shù)據(jù)先被分割成多個(gè)object,(每個(gè)object一個(gè)object id,,大小可設(shè)置,默認(rèn)是4MB),,object是Ceph存儲(chǔ)的最小存儲(chǔ)單元,。 由于object的數(shù)量很多,為了有效減少了Object到OSD的索引表,、降低元數(shù)據(jù)的復(fù)雜度,,使得寫入和讀取更加靈活,引入了pg(Placement Group ):PG用來管理object,,每個(gè)object通過Hash,,映射到某個(gè)pg中,一個(gè)pg可以包含多個(gè)object,。 Pg再通過CRUSH計(jì)算,,映射到osd中。如果是三副本的,,則每個(gè)pg都會(huì)映射到三個(gè)osd,,保證了數(shù)據(jù)的冗余。 4.Ceph的數(shù)據(jù)寫入 Ceph數(shù)據(jù)的寫入流程
5.Ceph的特點(diǎn)
GFSGFS是google的分布式文件存儲(chǔ)系統(tǒng),是專為存儲(chǔ)海量搜索數(shù)據(jù)而設(shè)計(jì)的,,2003年提出,,是閉源的分布式文件系統(tǒng)。適用于大量的順序讀取和順序追加,,如大文件的讀寫,。注重大文件的持續(xù)穩(wěn)定帶寬,而不是單次讀寫的延遲,。 1.GFS的主要架構(gòu) GFS 架構(gòu)比較簡單,,一個(gè) GFS 集群一般由一個(gè) master 、多個(gè) chunkserver 和多個(gè) clients 組成,。 在 GFS 中,,所有文件被切分成若干個(gè) chunk,每個(gè) chunk 擁有唯一不變的標(biāo)識(在 chunk 創(chuàng)建時(shí),,由 master 負(fù)責(zé)分配),,所有 chunk 都實(shí)際存儲(chǔ)在 chunkserver 的磁盤上。 為了容災(zāi),,每個(gè) chunk 都會(huì)被復(fù)制到多個(gè) chunkserve 2.GFS的功能模塊 ? GFS client客戶端:為應(yīng)用提供API,,與POSIX API類似。同時(shí)緩存從GFS master讀取的元數(shù)據(jù)chunk信息,; ? GFS master元數(shù)據(jù)服務(wù)器:管理所有文件系統(tǒng)的元數(shù)據(jù),,包括命令空間(目錄層級)、訪問控制信息、文件到chunk的映射關(guān)系,,chunk的位置等,。同時(shí) master 還管理系統(tǒng)范圍內(nèi)的各種活動(dòng),包括chunk 創(chuàng)建,、復(fù)制,、數(shù)據(jù)遷移、垃圾回收等,; ? GFS chunksever存儲(chǔ)節(jié)點(diǎn):用于所有 chunk的存儲(chǔ),。一個(gè)文件被分割為多個(gè)大小固定的chunk(默認(rèn)64M),每個(gè)chunk有全局唯一的chunk ID,。 3.GFS的寫入流程
由上述可見,,GFS在進(jìn)行寫數(shù)據(jù)時(shí),,有如下特點(diǎn):
4.GFS特點(diǎn) ? 適合大文件場景的應(yīng)用,,特別是針對GB級別的大文件,,適用于數(shù)據(jù)訪問延時(shí)不敏感的搜索類業(yè)務(wù) ? 中心化架構(gòu),只有1個(gè)master處于active狀態(tài) ? 緩存和預(yù)取,,通過在client端緩存元數(shù)據(jù),,盡量減少與master的交互,通過文件的預(yù)讀取來提升并發(fā)性能 ? 高可靠性,,master需要持久化的數(shù)據(jù)會(huì)通過操作日志與checkpoint的方式存放多份,,故障后master會(huì)自動(dòng)切換重啟。 HDFSHDFS(Hadoop Distributed File System),,是一個(gè)適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng),,是Hadoop的核心子項(xiàng)目,是基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的,。該系統(tǒng)仿效了谷歌文件系統(tǒng)(GFS),,是GFS的一個(gè)簡化和開源版本。 1.HDFS的主要架構(gòu) ? HDFS Client(客戶端):從NameNode獲取文件的位置信息,,再從DataNode讀取或者寫入數(shù)據(jù),。此外,client在數(shù)據(jù)存儲(chǔ)時(shí),,負(fù)責(zé)文件的分割,; ? NameNode(元數(shù)據(jù)節(jié)點(diǎn)):管理名稱空間、數(shù)據(jù)塊(Block)映射信息,、配置副本策略,、處理客戶端讀寫請求; ? DataNode(存儲(chǔ)節(jié)點(diǎn)):負(fù)責(zé)執(zhí)行實(shí)際的讀寫操作,,存儲(chǔ)實(shí)際的數(shù)據(jù)塊,同一個(gè)數(shù)據(jù)塊會(huì)被存儲(chǔ)在多個(gè)DataNode上 ? Secondary NameNode:定期合并元數(shù)據(jù),,推送給NameNode,在緊急情況下,,可輔助NameNode的HA恢復(fù),。 2.HDFS的特點(diǎn)(Vs GFS) ? 分塊更大,每個(gè)數(shù)據(jù)塊默認(rèn)128MB,; ? 不支持并發(fā),,同一時(shí)刻只允許一個(gè)寫入者或追加者; ? 過程一致性,寫入數(shù)據(jù)的傳輸順序與最終寫入順序一致; ? Master HA,2.X版本支持兩個(gè)NameNode,,(分別處于Active和Standby狀態(tài)),,故障切換時(shí)間一般幾十秒到數(shù)分鐘 3.HDFS適合的應(yīng)用場景: ? 適用于大文件,、大數(shù)據(jù)處理,處理數(shù)據(jù)達(dá)到 GB,、TB,、甚至PB級別的數(shù)據(jù),。 ? 適合流式文件訪問,,一次寫入,多次讀取,。 ? 文件一旦寫入不能修改,,只能追加,。 4.HDFS不適合的場景: ? 低延時(shí)數(shù)據(jù)訪問。 ? 小文件存儲(chǔ) ? 并發(fā)寫入,、文件隨機(jī)修改 SwiftSwift 最初是由Rackspace公司開發(fā)的分布式對象存儲(chǔ)服務(wù),, 2010 年貢獻(xiàn)給 OpenStack 開源社區(qū)。作為其最初的核心子項(xiàng)目之一,,為其 Nova 子項(xiàng)目提供虛機(jī)鏡像存儲(chǔ)服務(wù),。 1.Swift的主要架構(gòu) Swift 采用完全對稱、面向資源的分布式系統(tǒng)架構(gòu)設(shè)計(jì),,所有組件都可擴(kuò)展,,避免因單點(diǎn)失效而影響整個(gè)系統(tǒng)的可用性。 Swift 組件包括: ? 代理服務(wù)(Proxy Server):對外提供對象服務(wù) API,,轉(zhuǎn)發(fā)請求至相應(yīng)的賬戶,、容器或?qū)ο蠓?wù) ? 認(rèn)證服務(wù)(Authentication Server):驗(yàn)證用戶的身份信息,并獲得一個(gè)訪問令牌(Token) ? 緩存服務(wù)(Cache Server):緩存令牌,,賬戶和容器信息,,但不會(huì)緩存對象本身的數(shù)據(jù) ? 賬戶服務(wù)(Account Server):提供賬戶元數(shù)據(jù)和統(tǒng)計(jì)信息,并維護(hù)所含容器列表的服務(wù) ? 容器服務(wù)(Container Server):提供容器元數(shù)據(jù)和統(tǒng)計(jì)信息,,并維護(hù)所含對象列表的服務(wù) ? 對象服務(wù)(Object Server):提供對象元數(shù)據(jù)和內(nèi)容服務(wù),,每個(gè)對象會(huì)以文件存儲(chǔ)在文件系統(tǒng)中 ? 復(fù)制服務(wù)(Replicator):檢測本地副本和遠(yuǎn)程副本是否一致,采用推式(Push)更新遠(yuǎn)程副本 ? 更新服務(wù)(Updater):對象內(nèi)容的更新 ? 審計(jì)服務(wù)(Auditor):檢查對象,、容器和賬戶的完整性,如果發(fā)現(xiàn)錯(cuò)誤,,文件將被隔離 ? 賬戶清理服務(wù)(Account Reaper):移除被標(biāo)記為刪除的賬戶,,刪除其所包含的所有容器和對象 2.Swift的數(shù)據(jù)模型 **Swift的數(shù)據(jù)模型采用層次結(jié)構(gòu),共設(shè)三層:**Account/Container/Object(即賬戶/容器/對象),,每層節(jié)點(diǎn)數(shù)均沒有限制,,可以任意擴(kuò)展。數(shù)據(jù)模型如下: 3.一致性散列函數(shù) Swift是基于一致性散列技術(shù),,通過計(jì)算將對象均勻分布到虛擬空間的虛擬節(jié)點(diǎn)上,,在增加或刪除節(jié)點(diǎn)時(shí)可大大減少需移動(dòng)的數(shù)據(jù)量,; 為便于高效的移位操作,虛擬空間大小通常采用 2 n,;通過獨(dú)特的數(shù)據(jù)結(jié)構(gòu) Ring(環(huán)),,再將虛擬節(jié)點(diǎn)映射到實(shí)際的物理存儲(chǔ)設(shè)備上,完成尋址過程,。如下圖所示: 散列空間4 個(gè)字節(jié)(32為),,虛擬節(jié)點(diǎn)數(shù)最大為232,如將散列結(jié)果右移 m 位,,可產(chǎn)生 2(32-m)個(gè)虛擬節(jié)點(diǎn),,(如上圖中所示,當(dāng)m=29 時(shí),,可產(chǎn)生 8 個(gè)虛擬節(jié)點(diǎn)),。 4.環(huán)的數(shù)據(jù)結(jié)構(gòu) Swift為賬戶、容器和對象分別定義了的環(huán),。 環(huán)是為了將虛擬節(jié)點(diǎn)(分區(qū))映射到一組物理存儲(chǔ)設(shè)備上,,并提供一定的冗余度而設(shè)計(jì)的,環(huán)的數(shù)據(jù)信息包括存儲(chǔ)設(shè)備列表和設(shè)備信息,、分區(qū)到設(shè)備的映射關(guān)系,、計(jì)算分區(qū)號的位移(即上圖中的m)。 賬戶,、容器和對象的尋址過程,。(以對象的尋址過程為例):
5.Swift的一致性設(shè)計(jì)
6.Swift特點(diǎn)
五,、 Lustre分布式存儲(chǔ)Lustre是基于Linux平臺的開源集群(并行)文件系統(tǒng),最早在1999年由皮特·布拉姆創(chuàng)建的集群文件系統(tǒng)公司(Cluster File Systems Inc.)開始研發(fā),,后由HP,、Intel、Cluster File System和美國能源部聯(lián)合開發(fā),,2003年正式開源,,主要用于HPC超算領(lǐng)域。 1,、Lustre的主要架構(gòu) Lustre組件包括: ? 管理服務(wù)器(MGS):存放集群中所有Lustre文件系統(tǒng)的配置信息,,Lustre客戶通過聯(lián)系MGS獲取信息,可以與MDS共享存儲(chǔ)空間 ? 元數(shù)據(jù)服務(wù)器(MDS): 管理存儲(chǔ)在MDT中的元數(shù)據(jù),,使存儲(chǔ)在一個(gè)或多個(gè)MDT中的元數(shù)據(jù)可供Lustre客戶端使用,每個(gè)MDS可管理一個(gè)或多個(gè)MDT,。 ? 元數(shù)據(jù)目標(biāo)(MDT): MDS用于存儲(chǔ)元數(shù)據(jù)(例如文件名,,目錄,,權(quán)限和文件布局),一個(gè)MDT可用于多個(gè)MDS,,但一次只能有一個(gè)MDS訪問 ? 對象存儲(chǔ)服務(wù)器(OSS):為一個(gè)或多個(gè)本地OST提供文件I / O服務(wù)和網(wǎng)絡(luò)請求處理, 通常,,OSS服務(wù)于兩個(gè)到八個(gè)OST ? 對象存儲(chǔ)目標(biāo)(OST):用戶文件數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)對象中,每個(gè)對象位于單獨(dú)OST中 ? Lustre客戶端:運(yùn)行Lustre客戶端軟件的計(jì)算節(jié)點(diǎn),,可掛載Lustre文件系統(tǒng),。客戶端軟件包括一個(gè)管理客戶端(MGC),,一個(gè)元數(shù)據(jù)客戶端(MDC)和多個(gè)對象存儲(chǔ)客戶端(OSC),。每個(gè)OSC對應(yīng)于文件系統(tǒng)中的一個(gè)OST。 ? 邏輯對象卷(LOV)通過聚合OSC以提供對所有OST的透明訪問,,邏輯元數(shù)據(jù)卷(LMV)通過聚合MDC提供一種對所有MDT透明的訪問,。 2、Lustre特點(diǎn) ? 支持?jǐn)?shù)萬個(gè)客戶端系統(tǒng),,支持PB級存儲(chǔ)容量,,單個(gè)文件最大支持320TB容量 ? 支持RDMA網(wǎng)絡(luò),大文件讀寫分片優(yōu)化,,多個(gè)OSS能獲得更高的聚合帶寬 ? 缺少副本機(jī)制,,存在單點(diǎn)故障。如果一個(gè)客戶端或節(jié)點(diǎn)發(fā)生故障,,存儲(chǔ)在該節(jié)點(diǎn)上的數(shù)據(jù)在重新啟動(dòng)前將不可訪問 ? 適用高性能計(jì)算HPC領(lǐng)域,,適用于大文件連續(xù)讀寫。 六,、 主流分布式存儲(chǔ)技術(shù)的比較幾種主流分布式存儲(chǔ)技術(shù)的特點(diǎn)比較如下: 此外,,根據(jù)分布式存儲(chǔ)系統(tǒng)的設(shè)計(jì)理念,其軟件和硬件解耦,,分布式存儲(chǔ)的許多功能,,包括可靠性和性能增強(qiáng)都由軟件提供,因此大家往往會(huì)認(rèn)為底層硬件已不再重要,。但事實(shí)往往并非如此,,我們在進(jìn)行分布式存儲(chǔ)系統(tǒng)集成時(shí),除考慮選用合適的分布式存儲(chǔ)技術(shù)以外,,還需考慮底層硬件的兼容性,。一般而言,分布式存儲(chǔ)系統(tǒng)的產(chǎn)品有三種形態(tài):軟硬件一體機(jī),、硬件OEM和軟件+標(biāo)準(zhǔn)硬件,,大家在選擇時(shí),需根據(jù)產(chǎn)品的成熟度,、風(fēng)險(xiǎn)規(guī)避,、運(yùn)維要求等,,結(jié)合自身的技術(shù)力量等,選擇合適的產(chǎn)品形態(tài),。 OpenStack簡介OpenStack 是一個(gè)開源的 IaaS 實(shí)現(xiàn),,它由一些相互關(guān)聯(lián)的子項(xiàng)目組成,主要包括計(jì)算,、存儲(chǔ),、網(wǎng)絡(luò)。 由于以 Apache 協(xié)議發(fā)布,,自 2010 年項(xiàng)目成立以來,,超過 200 個(gè)公司加入了OpenStack 項(xiàng)目,其中包括 AT&T,、AMD,、Cisco、Dell,、IBM,、Intel、Red Hat 等,。 目前參與 OpenStack 項(xiàng)目的開發(fā)人員有 17,000+,,來自 139 個(gè)國家,這一數(shù)字還在不斷增長中,。 OpenStack 兼容一部分 AWS 接口,,同時(shí)為了提供更強(qiáng)大的功能,也提供OpenStack 風(fēng)格的接口(RESTFul API),。 和其他開源 IaaS 相比,,架構(gòu)上松耦合、高可擴(kuò)展,、分布式,、純 Python實(shí)現(xiàn),以及友好活躍的社區(qū)使其大受歡迎,,每半年一次的開發(fā)峰會(huì)也吸引了來自全世界的開發(fā)者,、供應(yīng)商和客戶。 OpenStack 的主要子項(xiàng)目有: Compute(Nova)提供計(jì)算虛擬化服務(wù),,是 OpenStack 的核心,,負(fù)責(zé)管理和創(chuàng)建虛擬機(jī)。它被設(shè)計(jì)成方便擴(kuò)展,,支持多種虛擬化技術(shù),,并且可以部署在標(biāo)準(zhǔn)硬件上。 Object Storage(Swift)提供對象存儲(chǔ)服務(wù),是一個(gè)分布式,,可擴(kuò)展,,多副本的存儲(chǔ)系統(tǒng)。 Block Storage(Cinder),,提供塊存儲(chǔ)服務(wù),為 OpenStack 的虛擬機(jī)提供持久的塊級存儲(chǔ)設(shè)備,。支持多種存儲(chǔ)后端,,包括Ceph,EMC 等,。 Networking(Neutron)提供網(wǎng)絡(luò)虛擬化服務(wù),,是一個(gè)可拔插,可擴(kuò)展,,API 驅(qū)動(dòng)的服務(wù),。 Dashboard 提供了一個(gè)圖形控制臺服務(wù),讓用戶方便地訪問,,使用和維護(hù) OpenStack中的資源,。 Image(glance)提供鏡像服務(wù),它旨在發(fā)現(xiàn),,注冊和交付虛擬機(jī)磁盤和鏡像,。支持多種后端。 Telemetry(Ceilometer)提供用量統(tǒng)計(jì)服務(wù),,通過它可以方便地實(shí)現(xiàn) OpenStack計(jì)費(fèi)功能,。 Orchestration(Heat)整合了 OpenStack 中的眾多組件,類似 AWS 的 CloudFormation,,讓用戶能夠通過模板來管理資源,。 Database(Trove)基于 OpenStack 構(gòu)建的 database-as-a-service。 通常構(gòu)建企業(yè)私有云,,使用Nova,、Glance、Keystone,、Neutron 就可基本完成私有云IAAS搭建,。近幾年流行PAAS云服務(wù),一般對業(yè)務(wù)系統(tǒng)Docker化,,使用容器編排構(gòu)建容器云,。容器云可獨(dú)立直接部署在物理機(jī)之上,也可構(gòu)建在openstack私有云服務(wù)IAAS之上,。 |
|