sheepdog是近幾年開源社區新興的分佈式塊存儲文件系統,採用徹底對稱的結構,沒有相似元數據服務的中心節點。這種架構帶來了線性可擴展性,沒有單點故障和容易管理的特性。對於磁盤和物理節點,SheepDog實現了動態管理容量以及隱藏硬件錯誤的特性。對於數據管理,SheepDog利用冗餘來實現高可用性,並提供自動恢復數據數據,平衡數據存儲的特性。除此以外,sheepdog還有具備零配置、高可靠、智能節點管理、容量線性擴展、虛擬機感知(底層支持冷熱遷移和快照、克隆等)、支持計算與存儲混合架構的特色等。目前,開源軟件如QEMU、Libvirt以及Openstack都很好的集成了對Sheepdog的支持。在 openstack中,能夠做爲cinder和glance的後端存儲。html
sheepdog整體包括集羣管理和存儲管理兩大部分。集羣管理使用已有的集羣管理工具來管理,存儲管理基於本地文件系統來實現。目前支持的本地文件系統包括ext4和xfs。後端
編譯後的sheepdog由兩個程序組成,一個是守護程序sheep,一個是集羣管理工具dog,守護程序sheep同時兼備了節點路由和和對象存儲的功能。架構
Sheep進程之間經過節點路由(gateway)的邏輯轉發請求,而具體的對象經過對象存儲的邏輯保存在各個節點上,這就把全部節點上的存儲空間聚合起來,造成一個共享的存儲空間。分佈式
Sheepdog由兩個程序組成,一個是後臺進程sheep,一個是前臺管理工具dog。Dog主要負責管理整個sheep集羣,包括集羣管理,VDI管理等。集羣管理主要包括集羣的狀態獲取,集羣快照,集羣恢復,節點信息,節點日誌,節點恢復等。VDI管理包括VDI的建立,刪除,快照,檢查,屬性等等。工具
Dog是一個命令行工具,啓動時,會向後臺sheep進程發起TCP鏈接,經過鏈接傳輸控制指令。當sheep收到控制指令時,若是有須要,會將相應指令擴散到集羣中,加上對稱式的設計,從而使得dog可以管理整個集羣spa