轉(zhuǎn)帖|行業(yè)資訊|編輯:郝浩|2016-02-16 10:16:08.000|閱讀 380 次
概述:Ring 代表磁盤上存儲的實體的名稱和它們的物理位置的映射。accounts, containers, and objects都有單獨的Ring。其他組件要在這三者之一進行任何操作,他們都需要合相應(yīng)的Ring進行交互以確定它在集群中的位置。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Ring 代表磁盤上存儲的實體的名稱和它們的物理位置的映射。accounts, containers, and objects都有單獨的Ring。其他組件要在這三者之一進行任何操作,他們都需要合相應(yīng)的Ring進行交互以確定它在集群中的位置。
Ring用zones,devices,partitions,和replicas來維護映射,在Ring中的每個分區(qū)都會在集群中默認有三個副本。分區(qū)的位置存儲在Ring維護的映射中。Ring也負責(zé)確定失敗場景中接替的設(shè)備。(這點類似HDFS副本的復(fù)制)。分區(qū)的副本要保證存儲在不同的zone。Ring的分區(qū)分布在OpenStack Object Storage installation所有設(shè)備中。分區(qū)需要移動的時候,Ring確保一次移動最少的分區(qū),一次僅有一個分區(qū)的副本被移動。
權(quán)重能用來平衡分區(qū)在磁盤驅(qū)動上的分布。Ring在代理服務(wù)器和一些背景進程中使用。
代理服務(wù)器負責(zé)將OpenStack Object Storage架構(gòu)中其他部分結(jié)合在一起。對于每次請求,它都查詢在Ring中查詢account, container, or object的位置,并以此轉(zhuǎn)發(fā)請求。公有APIs也是通過代理服務(wù)器來暴露的。
大量的失敗也是由代理服務(wù)器來進行處理。比如一個服務(wù)器不可用,它就會要求Ring來為它找下一個接替的服務(wù)器,并把請求轉(zhuǎn)發(fā)到那里。
當(dāng)對象流進或流出object server時,它們都通過代理服務(wù)器來流給用戶,或者通過它從用戶獲取。代理服務(wù)器不會緩沖它們。
Proxy服務(wù)器的功能可以總結(jié)為:查詢位置,處理失敗,中轉(zhuǎn)對象。
Object Server,是非常簡單的blob存儲服務(wù)器,能存儲、檢索和刪除本地磁盤上的對象,它以二進制文件形式存放在文件系統(tǒng)中,元數(shù)據(jù)以文件的擴展屬性存放。
對象以源于對象名的hash和操作的時間戳的路徑來存放。上一次寫總會成功,確保最新的版本將被使用。刪除也視作文件的一個版本:這確保刪除的文件也被正確復(fù)制,更舊的把本不會因為失敗情形離奇消失。
其主要工作是處理對象列表,它不知道對象在哪里,只是知道哪些對象在一個特定的container。列表被存儲為sqlite 數(shù)據(jù)庫文件,類似對象的方式在集群中復(fù)制。也進行了跟蹤統(tǒng)計,包括對象的總數(shù),以及container中使用的總存儲量。
它是類似于Container Server,除了它是負責(zé)containers的列表而非對象。
設(shè)計副本的目的是,在面臨網(wǎng)絡(luò)中斷或驅(qū)動失敗等臨時錯誤條件時,保持系統(tǒng)在一致的狀態(tài)。
副本進程會比較本地的數(shù)據(jù)和每個遠處的副本,以確保他們所有都包含最新的版本。對象副本用一個Hash列表來快速比較每個分區(qū)的片段,而containe和 account replication 用的是Hash和共享的高水印結(jié)合的方法。
副本的更新,是基于推送的。對于對象副本,更新是遠程同步文件到Peer。Account和container replication通過HTTP or rsync把整個數(shù)據(jù)庫文件推送遺失的記錄。
副本也通過tombstone設(shè)置最新版本的方式,確保數(shù)據(jù)從系統(tǒng)中清除。
有時,container 或 account數(shù)據(jù)不能被立即更新,這通常是發(fā)生在失敗的情形或高負載時期。如果一個更新失敗,該更新會在文件系統(tǒng)上本地排隊,更新器將處理這些失敗的更新。事件一致性窗口(eventual consistency window)最可能來起作用。比如,假設(shè)一個container服務(wù)器正處于載入之中,一個新對象正被放進系統(tǒng),代理服務(wù)器一響應(yīng)客戶端成功,該對象就立即可讀了。然而,container服務(wù)器沒有更新Object列表,所以更新就進入隊列,以等待稍后的更新。Container列表,因此可能還不會立即包含這個對象。
實際上,一致性窗口只是與updater運行的頻率一樣大,當(dāng)代理服務(wù)器將轉(zhuǎn)發(fā)清單請求到響應(yīng)的第一個container服務(wù)器中,也許甚至還不會被注意。在載入之下的服務(wù)器可能還不是服務(wù)后續(xù)清單請求的那個。另外兩個副本中的一個可能處理這個清單。
Auditors會檢查objects, containers, 和 accounts的完整性。如果發(fā)先損壞的文件,它將被隔離,好的副本將會取代這個壞的文件。如果發(fā)現(xiàn)其他的錯誤,它們會記入到日志中。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn