分布式存储系统sheepdog

分布式存储系统sheepdog

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备。

其架构例如以下:

 分布式存储系统sheepdog

 

 

以下,我们将从架构、模块等几个方面来介绍下:

 

一、架构图

分布式存储系统sheepdog

如上图:

採用无中心节点的全对称架构,无单点故障,存储容量和性能可线性扩展;

新增节点通过简单配置可自己主动添�(IP:PORT),数据自己主动实现负载均衡;

节点故障时,数据可自己主动恢复;

直接支持QEMU/KVM应用;

 

二、模块

分布式存储系统sheepdog

 

如上图:

由corosync,完毕集群成员管理和消息传递;

由Qemu作为Sheepdog的client,提供NBD/iSCSI协议支持;

由gateway实现数据的DHT路由,由storage server数据数据本地存储;

 

三、数据详细存储方式

分布式存储系统sheepdog

 

如上图:

以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/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118177.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iOS_11_tableViewCell使用alertView变更数据

    iOS_11_tableViewCell使用alertView变更数据

    2022年1月2日
    40
  • git提交时如何忽略一些文件

    git提交时如何忽略一些文件

    2021年10月20日
    43
  • vue-router beforeEach钩子

    vue-router beforeEach钩子在使用vue-routerbeforeEach钩子时,你也许会遇到如下问题:源码:router.beforeEach((to,from,next)=>{//判断登录状态简单实例varuserInfo=window.localStorage.getItem(‘token’);if(userInfo){next();…

    2022年6月20日
    39
  • matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用

    matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用摘要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科,它具有丰富的数学知识,涉及许多重要的数学思想,其在数学领域的应用很广泛,如行列式、矩阵的相关计算和求解线性方程组的解方面的应用等,求矩阵的秩运算是矩阵研究的一个重要内容,此外数学软件MATLAB在矩阵计算方面也提供了很多方法,本文主要介绍应用MATLAB求矩阵的秩运算的方法。关键词: 矩阵;秩;高等代数;MAT…

    2022年5月30日
    71
  • 查看java进程命令_linux查看进程grep

    查看java进程命令_linux查看进程grep在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab)。Linux查看进程ps命令用于查看当前正在运行的进程grep是搜索例如:ps-ef|grepjavaLinux查看进程ps命令表示查看所有进程里CMD是java的进程信息ps-aux|grepjava

    2022年8月23日
    5
  • buck降压电路解析

    buck降压电路解析1.拓扑模型如下2.需要的元器件如下:元器件:开关管T、续流二极管D、储能电感L、滤波电容C、负载电阻R输入电压:Ui输出电压:Uo特性:Ui>Uo3.三种工作模式BCM、CCM、DCM3.1CCM–电感电流连续导通模式3.2当Imin减小到零时,电路由CCM模式进入BCM—电感电流临界导通模式3.3DCM—电感电流非连续/断续导通模式4.举例子LM2576/2596下图中的R1/R2阻值一般是k级别电阻,100k左右,目的是减少功耗5.常见的厂商TI、MP

    2022年6月20日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号