分布式存储系统sheepdog概述
牧羊犬(Sheepdog) 是一个新的第三方的KVM开源项目,2009 年由日本 NTT 实验室创建,目前由taobao在维护,项目主页为:https://github.com/sheepdog ,其提供分布式存储管理功能。牧羊犬提供高可用性的KVM提供块级存储卷类似亚马逊电子交易系统(弹性块存储虚拟机)的客户机,其架构如下:
<a href="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog.png"><img src="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog.png" alt="sheepdog" class="aligncenter size-full wp-image-3804" height="355" width="686" /></a>
下面,我们将从架构、模块等几个方面来介绍下:
一、架构图
<a href="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog2.png"><img src="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog2.png" alt="sheepdog2" class="aligncenter size-full wp-image-3805" height="240" width="596" /></a>
如上图:
采用无中心节点的全对称架构,无单点故障,存储容量和性能可线性扩展;
新增节点通过简单配置可自动加入(IP:PORT),数据自动实现负载均衡;
节点故障时,数据可自动恢复;
直接支持QEMU/KVM应用。
二、模块
<a href="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog3.png"><img src="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog3.png" alt="sheepdog3" class="aligncenter size-full wp-image-3806" height="338" width="588" /></a>
如上图:
由corosync,完成集群成员管理和消息传递;
由Qemu作为Sheepdog的客户端,提供NBD/iSCSI协议支持;
由gateway实现数据的DHT路由,由storage server数据数据本地存储;
三、数据具体存储方式
<a href="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog4.png"><img src="https://blog.361way.com/wp-content/uploads/2014/09/sheepdog4.png" alt="sheepdog4" class="aligncenter size-full wp-image-3807" height="265" width="538" /></a>
如上图:
以VDI Object存储VM数据,向用户暴露的是一个块设备;
包含4种数据对象:VDI、Data Object、属性对象和用于快照的VM实时状态数据对象;
以4M的小文件方式实现OBS,但很容易基于此扩展,如使用使用库替代4M的小文件;
四、集群管理
-
采用corosync,tot是em协议的一个开源实现。totem协议主要用来实现集群成员管理和可靠顺序传输。
-
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/
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/sheepdog-summary/3802.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.