分布式存储系统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/118112.html原文链接:https://javaforall.net

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

相关推荐

  • oracle一次提交大量数据_oracle修改数据

    oracle一次提交大量数据_oracle修改数据StringBuilderstrSql=newStringBuilder();strSql.Append(“insertintoLB000(“);strSql.Append(“LBID,CARRIER,COMPANY_NAME,DOM_ASTD_WGT,FRN_ASTD_WGT,DOM_CSTD_WT,FRN_CSTD_WT,DOM_ISTD_WT,FRN_ISTD_WT,DOM_CREW…

    2022年9月6日
  • 最小二乘法的详细推导过程-比之前见过的推导都简单!!!

    最小二乘法的详细推导过程-比之前见过的推导都简单!!!最小二乘法发展于天文学和大地测量学领域,科学家和数学家尝试为大航海探索时期的海洋航行挑战提供解决方案。准确描述天体的行为是船舰在大海洋上航行的关键,水手不能再依靠陆上目标导航作航行。来源:我是码农,转载请保留出处和链接!本文链接:http://www.54manong.com/?id=1203(function(){vars=”_”+Ma…

    2022年5月16日
  • linux 下gz文件解压命令,Linux解压gz文件的命令怎么写

    linux 下gz文件解压命令,Linux解压gz文件的命令怎么写Linux解压gz文件的命令怎么写发布时间:2020-11-1713:39:53来源:亿速云阅读:122作者:小新小编给大家分享一下Linux解压gz文件的命令怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!gz文件是一种压缩文件,以.gz或者.tar.gz(.tgz)为扩展名,在Linux、UNIX和OSX下常见…

    2022年5月20日
  • 开心农场2激活成功教程版无限金币钥匙_开心农场2乡村度假内购激活成功教程版

    开心农场2激活成功教程版无限金币钥匙_开心农场2乡村度假内购激活成功教程版 最近开心农场非常火,同学用C#模拟鼠标点击操作做了一个小外挂,但是这样做有如下缺点:1、计算机不能做其他事情,2、必须开着浏览器,3、对所有好友点一遍的时间太慢,4、对于开发者来说技术含量低了点,呵呵。 所以我尝试着改进这种实现,我的想法是:不用开启浏览器,直接运行一个应用程序,该程序将自己伪装成一个浏览器,与服务器连接,并发送浇水、除虫等命令。这样,甚至可以使用多线程向服务器发送命令,无需…

    2022年9月13日
  • idea2021.11.1激活码_最新在线免费激活

    (idea2021.11.1激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
  • python测试系列教程——python+Selenium+chrome自动化测试框架

    python测试系列教程——python+Selenium+chrome自动化测试框架全栈工程师开发手册(作者:栾鹏)python教程全解需要的环境浏览器(Firefox/Chrome/IE..)PythonSeleniumSeleniumIDE(如果用Firefox)FireBug、FirePath(如果用Firefox)chromedriver、IEDriverServer、phantomjs.exeIDE(Pycharm/Subl…

    2022年4月29日

发表回复

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

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