sheepdog是NTT日本电报电话公司开源的一个分布式文件系统,初衷就是要做一个aws的ebs开源实现,可以实现镜像和块设备(block device)的分布式存储

sheepdog不是一个常规的文件系统,而是针对qemu/kvm的一个分布式存储管理系统,实现了存储的虚拟化

官网:http://www.osrg.net/sheepdog 现在的稳定版是0.3
2012.6底要发布0.4版,预计2012年底发布1.0版
网上有个官方介绍的pdf,地址如下:http://vdisk.weibo.com/s/6c9tS
基本概念定义
节点node:指部署sheepdog的物理机,数据实际存储的地方
vdi:virtural disk image,虚拟磁盘镜像,包括系统镜像和块镜像,kvm-img命令建立的
1.设计理念
sheepdog把所有的镜像(系统镜像和块镜像)都当成小绵羊(vdi--vitural disk image),然后通过corosync这只dog来管理(集群管理,和consistent hash一致性hash算法组成类p2p的dht,distribute hashtable),比如某只小羊生病了或挂了,赶出羊圈,找某只小羊(定位vdi),安置某个小羊(分布存储)等等,贴张图
去中心化、全对称的架构(non-center or symmetric)
其设计思想是采用一致性哈希consistent hash算法(DHT的一种实现,关于一致性hash具体参考后面的链接)来定位文件在存储节点中的位置,从而取消了metadata server的角色
整个系统只有storage node一个角色,不区分元数据和数据块;

2.架构
sheepdog采用完全对称架构fully symmetric,即集群中所有设备的角色和配置是一样的(其实基本没什么配置,编译安装完了,启动corosync和sheepdog守护进程就ok了),不像传统的分布式存储,有专门的metadata server来存储文件在集群中位置啊、文件大小啊等等元数据,然后还得考虑metadata的单点问题SPoF,比如FastDFS、hdfs、luster和moosefs就是如此。
sheepdog用corosync的多播和一致性hash算法来替代metadata server,实现fully symmetric
sheepdog包括几个部分:
I,节点node文件系统File system
节点上的文件系统其实并不能算做sheepdog的组成部分,不关心下面的存储系统是什么,ext3、ext4、xfs都可以,但有个要求,需要支持xattr属性才行
对于ext3,ext4,执行下面的命令,以便支持xattr
mount -o remount,user_xattr /rpool/vm0/sheepdog
为了实现多级卷备份和快照架构,建议采用zfs文件系统,后面的系列文章会详细介绍zfs+sheepdog实现高可用虚拟存储系统的方法;zfs默认挂载即支持xattr属性
II,对象存储Obj storage
sheepdog对象存储采用常规的key/value hashmap的方式存储数据对象,大文件被分割成4M,可以存储多个副本,默认是3份,学ebs
云存储的冗余备份为啥是3份?(aws就这么干的),古埃及的罗塞塔rosetta石碑用古埃及象形文字、埃及拼音和古希腊文三种文字记录一段历史,就算象形文字缺了一部分,没人能看懂,也能破译补全,这大概也是raid5的思想起源吧
object storage包括两部分,一个gateway,一个object manager
gateway是个数据对象读写的路由,根据一致性哈希算法,定位被分割对象在节点集群的读写位置
obj manager是本地存储的管理器,目录结构如下:
ll /rpool/vm1/sheepdog/
总用量 10
drwxr-x--- 5 root root   7  6月  5 16:12 ./
drwxr-xr-x 6 root root   8  6月  5 16:39 ../
-rw-r----- 1 root root   0  6月  5 16:12 config
drwxr-x--- 2 root root   2  6月  5 16:12 epoch/
drwxr-x--- 2 root root   2  6月  5 16:12 journal/
drwxr-x--- 2 root root   2  6月  5 16:12 obj/
-rw-r--r-- 1 root root 759  6月  5 16:13 sheep.log
III,VDI或者叫vm
就是虚拟机了,sheepdog通过qemu的接口使VDI挂载block卷
IV,corosync集群管理器
节点上安装,通过p2p多播muti-cast方式维护集群的节点信息。如果某个节点A状态有变,如宕机,token多次传递中断,主控就在群里吆喝一声,哥们A挂了,群里的节点们就更新自己的节点信息,登记A已阵亡。节点重新组环,数据重新排布,具体参考http://www.slideshare.net/chinainvent/totemsrprrp
还在学习corosync和totem single ring
为了维护存储节点的信息,一般采用P2P技术的totem single ring算法(corosync是一种实现)来维护和更新node路由信息
对称架构有一个问题,采用totem single ring算法的存储节点数量有限,因为node数量超过1000,集群内的通信风暴就会产生,效率下降,sheepdog提出了一个解决方案,就是在一致性hash环上做嵌套处理,如图
参考资料
https://github.com/collie/sheepdog/wiki/Sheepdog-Design
http://peterylh.blog.163.com/blog/static/12033201221594937257/
http://www.ntt.co.jp/RD/OFIS/active/2011pdfe/hot/pf/01.html

sheepdog--介绍相关推荐

  1. 分布式存储系统sheepdog

    Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备. 其架构例如以下: 以下,我们将从架构.模块等几个方面来介绍下: 一.架构图 如上图: 採用无中心节点的全对称架 ...

  2. 【KVM系列05】Libvirt 介绍

    第五章 Libvirt 介绍 1. Libvirt 是什么 1.1 Libvirt C API 1.2 Libvirt XML 定义 1.3 Libvirt API 的实现 1.4 Libvirt 的 ...

  3. KVM(五)libvirt 介绍

    1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用. Hypervisor 种类众多,没有统一的编程接口来 ...

  4. libvirt 介绍

    1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚拟机管理工具参数众多,难于使用. Hypervisor 种类众多,没有统一的编程接口来 ...

  5. KVM之libvirt 介绍

    学习 KVM 的系列文章:  (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接 ...

  6. 世民谈云计算:KVM 介绍

    http://www.cnblogs.com/sammyliu/p/4543110.html KVM 介绍(1):简介及安装 学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 ...

  7. 5G中使用的计算虚拟化技术的介绍

    计算虚拟化技术的介绍 计算虚拟化的介绍 1.Hypervisor的定义 Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件. 它可以协调 ...

  8. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  9. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  10. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

最新文章

  1. 从零开始 Code Review,两年实战经验分享!
  2. 阿里达摩院再造AI抗疫技术:20秒判读CT影像,识别准确率达96%,河南率先启用...
  3. catch里面不想做任何处理_Java 如何优雅处理 Exception? 看完这 9 个示例你秒懂
  4. 漫步线性代数十八——正交基和格拉姆-施密特正交化(下)
  5. docker 安装azkaban_azkaban安装
  6. python中math函数库矩阵_Python中矩阵库Numpy基本操作详解
  7. efs解密-Advanced EFS Data Recovery2.1-含注册KEY
  8. cocos2D中实现滑动菜单CCScrollView+CCMenu效果,(注意不是cocos2D-x)!!
  9. python查找文件夹下所有文件_如何用Python实现查找/目录下的文件夹或文件,致谢...
  10. python基础语法篇——输入与输出
  11. DELL服务器R730重装Window Server2012系统
  12. PDFcrack暴力破解pdf密码
  13. 刷入Magisk通用方法
  14. (八)flax Engine游戏引擎物理引擎——物理碰撞器
  15. 微信H5开发-采坑记
  16. c#中Debug和Release的区别实验
  17. CSFB和SRVCC
  18. springboot整合阿里云短信验证(无需签名和模板,通过阿里云api测试实现短信验证)
  19. 广工计算机学院李少娜,冯广-广东工业大学自动化学院
  20. 【金融财经】金融市场一周简报(2018-03-16)

热门文章

  1. 计算机都有哪学软件是什么,8.电脑都有哪些软件,电脑软件分类大全-电脑自学网...
  2. 7-2 使用canvas绘制动画人物
  3. 从零开始安装TensorFlow1.0+keras(Ubuntu16.04+CUDA8.0+Cudnn5.1+TITANX)
  4. Web应用中wen.xml文件配置
  5. iOS cocos2d 2游戏开发实战(第3版)
  6. mac下使用Homebrew安装nginx报错
  7. Python开发技术—网络爬虫(代码在置顶文章)
  8. mysql mvcc
  9. 浅析在航空航天型号研制项目管理中进度计划管理的应用
  10. 网络流二十四题之二十二 —— 火星探险问题