分布式存儲系統sheepdog


Sheepdog,是由NTT的3名日本研究員開發的開源項目,主要用來為虛擬機提供塊設備。

其架構例如以下:

 

 

 

以下,我們將從架構、模塊等幾個方面來介紹下:

 

一、架構圖

如上圖:

採用無中心節點的全對稱架構,無單點故障,存儲容量和性能可線性擴展;

新增節點通過簡單配置可自己主動增加(IP:PORT),數據自己主動實現負載均衡;

節點故障時,數據可自己主動恢復;

直接支持QEMU/KVM應用;

 

二、模塊

 

如上圖:

由corosync,完畢集群成員管理和消息傳遞;

由Qemu作為Sheepdog的client,提供NBD/iSCSI協議支持;

由gateway實現數據的DHT路由,由storage server數據數據本地存儲;

 

三、數據詳細存儲方式

 

如上圖:

以VDI Object存儲VM數據,向用戶暴露的是一個塊設備;

包括4種數據對象:VDI、Data Object、屬性對象和用於快照的VM實時狀態數據對象;

以4M的小文件方式實現OBS,但非常easy基於此擴展,如使用使用庫替代4M的小文件;

 

四、集群管理

1. 採用corosync,tot是em協議的一個開源實現。totem協議主要用來實現集群成員管理和可靠順序傳輸。

2. corosync通過提供一個CPG API來提供服務。

首先,綁定一個fd到cpg_handle,並注冊回調函數cpg_dispatch;

然后將fd注冊到epoll;

corosync上消息會觸發fd改變,通用epoll觸發回調函數cpg_dispatch;

 

這里主要有兩個函數,cpg_deliver_fn和cpg_confchg_fn,分別相應sd_deliver和sd_confchg.

 當中,sd_deliver負責集群從corosync給本地發消息,主要是針對VDI進行操作;而sd_confchg主要是對node進行操作,用來監控集群成員變化。

 

五、存儲對象管理

集群對象版本號epoch;

obj文件夾下,每一個新的epoch要相應創建一個新的文件夾;

可從epoch恢復數據;

 

六、一致性模型

通過epoll機制保證;

通過數據操作實現強一致性(多副本的寫同一時候成功時,才向client返回); 

 

七、DHT路由

代理路由方式;

由ip:port生成節點編號,做一致性哈希;

 

八、副本放置

一致性哈希;

虛擬節點;

 

如需了解更具體信息,可參考其官網:http://www.osrg.net/sheepdog/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM