精华内容
参与话题
问答
  • sheepdog

    2020-12-01 21:54:32
    <div><p>This is really great....https://github.com/sheepdog/sheepdog</p> <p>It is using https://github.com/corosync/corosync for sync. Lots of good algos here. <p>i found a golang client here: ...
  • Sheepdog

    2012-02-09 10:25:00
    适用: 可扩展,没有单点故障(scale-out) 简单安装和使用(在网络层是安全的) 兼容KVM(将要兼容Xen) 块级别工作 ...sheepdog 使用 corosync multi-cast 避免元数据服务器 Totem ring protocol ...

    figure of sheepdog overview

    适用:

    可扩展,没有单点故障(scale-out)

    简单安装和使用(在网络层是安全的)

    兼容KVM(将要兼容Xen)

    块级别工作

    不适用:

    高宽带,低延迟存储(scale-up)

    存储节点细粒度认证和授权

    在文件级别工作(集群文件系统)

    分级

     

    sheepdog 使用 corosync multi-cast 避免元数据服务器

    Totem ring protocol

     

    官方网站:http://www.osrg.net/sheepdog/

    转载于:https://www.cnblogs.com/zhangzhang/archive/2012/02/09/2343575.html

    展开全文
  • Sheepdog on top of ZFS

    2020-11-22 19:08:16
    <div><p>I am trying to run Sheepdog on top of a ZFS mount point. I keep getting an error: <p>Jan 01 12:12:14 [main] queue_request(354) CREATE_AND_WRITE_OBJ, 1 Jan 01 12:12:14 [gway 232] do_process_...
  • <div><h2>candidate commits to backport <h3>zk_control <ul><li>9a58c28a2af02d1a1a856bb770aed984bb536b70 zk_control: fix "purge" threshold and default behavior</li><li...sheepdog/sheepdog</p></div>
  • <div><p><strong>Please DO NOT merge this PR.</strong> This is only for review. <p>See also #354. <h2>CHANGELOG (draft) <p>IMPORTANT CHANGES: - Unlimited workqueue is now ...sheepdog/sheepdog</p></div>
  • <div><p><strong>Please DO NOT merge this PR.</strong> This is only for review. <p>See also #353. <h2>CHANGELOG (draft) <p>IMPORTANT CHANGES: - Unlimited workqueue is now ...sheepdog/sheepdog</p></div>
  • sheepdog简介

    千次阅读 2019-06-20 12:53:02
    2、sheepdog一开始为分布式块存储,如今覆盖多个应用领域,包括IAAS,File Server,冷数据存储等。 3、sheepdog目前满足可用性(iSCSI多路径机制)、持久性(全副本或EC冗余策略)、可扩展性(负载均衡...

    1、corosync,single ring最多支持50个节点;zookeeper,500个节点可稳定支撑,1000-1500个节点挑战比较大,需要优化消息传递机制。

    2、sheepdog一开始为分布式块存储,如今覆盖多个应用领域,包括IAAS,File Server,冷数据存储等。

    3、sheepdog目前满足可用性(iSCSI多路径机制)、持久性(全副本或EC冗余策略)、可扩展性(负载均衡,IO节点可扩展)、可管理性(自动恢复和卷管理)、无单点,具有GC机制(sheepgdogV0.9.1以上)。

    使用iSCSI多路径,需在集群format时指定-l选项,tgtd的版本要大于V1.0.51,sheepgdogV0.9.1以上。

    4、sheepdog对于IOPS类需求比较适合,其中全副本策略适合所有大数据块“读”,EC机制适合所有大数据块“写”。

    5、Node*100VM*10FDs=MaxConn;

    6、Object Cache和Journal在sheepdog中已不建议使用,经实测,Object Cache拖慢系统性能;

    7、Object Cache和iSCSI多路径不能同时使用。

    8、tgtd也有缓存,默认是开着的。

    9、o_sync直到I/O操作完成才返回。

    10、tgtd -t 8可指定I/O线程数。

    展开全文
  • Sheepdog 设计

    千次阅读 2013-11-07 18:13:58
    周末无事,故翻译sheepdog design. 原文地址: https://github.com/collie/sheepdog/wiki/Sheepdog-Design Sheepdog 设计 Sheeepdog采用完全对称的结构,没有类似元数据服务的中心节点. 这种设计有以下的特点. ...
    周末无事,故翻译sheepdog design.
    

    原文地址: https://github.com/collie/sheepdog/wiki/Sheepdog-Design

    Sheepdog 设计

    Sheeepdog采用完全对称的结构,没有类似元数据服务的中心节点. 这种设计有以下的特点.

    1)       性能于容量的线性的可扩展性.

    当需要提升性能或容量时,只需向集群中增加新的机器便能使Sheeepdog线性成长.

    2)       没有单点故障

    即使某台机器发生故障,依然可以通过其他机器访问数据.

    3)       容易管理

    不需要配置机器角色,当管理员在新增的机器开启Sheepdog守护进程时, Sheepdog会自动检测新加入的机器并配置它成为存储系统中的一员.

    结构概述



    Sheepdog是一个分布式存储系统.Sheepdog客户端(QEMU的块驱动程序)提供对象存储(类似于简单的键值对). 接下来几章将更加详细的阐述Sheepdog各个部分.

    1)       对象存储(Object对象存储(Object Storage)

    2)       )

    Sheepdog不同于一般的文件系统, Sheepdog进程为QEMU(Sheepdog进程名)创建一个分布式对象存储系统,它可以存储对象”.这里的对象数据大小可变,并有唯一的标识,通过标识可以进行读//创建/删除操作.对象存储组成网关对象管理器”.

    3)       网关(getway)

    Getway接收QEMU块驱动的I/O请求(对象id,偏移,长度和操作类型),通过一直散列算法获得目标节点,然后转发I/O请求至该节点.

    4)       对象管理器(Object manager)

    对象管理器接收getway转发过来的I/O请求,然后对磁盘执行读/写操作.

    5)       集群管理器(Cluster manager)

    集群管理器管理管理节点成员(探测失败/新增节点并报告节点成员的变化),以及一些需要节点一致的操作(vdi 创建, 快照 vdi).当前集群管理器使用corosync集群引擎.

    6)       QEMU 块驱动

    QEMU块驱动把VM image分为固定大小(默认4M),并通过其getway存储到对象存储中

    对象存储(Object Storage)

    每个对象使用一个64bit的整数作为全局标识,并在多台机器存有备份,QEMU块驱动并不关心存储的位置,对象存储系统负责管理存储的位置.

    对象类型(object types)

    Sheepdog的对象分为以下四种:

    1)       数据类型(data object)

    它包括虚拟磁盘映射的真实数据,虚拟磁盘映射分为固定大小的数据对象, Sheepdog客户端访问这个对象.

    2)       vdi object

    它包括虚拟磁盘映射的元数据(:映射名,磁盘大小,创建时间,vdi的数据对象ID).

    3)       vmstate object

    它存储运行中的VM状态映射.管理员通过它获取实时快照信息.

    4)       vdi attr object

    使用它存储各个vdi的属性,属性为键值对类型,类似于普通文件的扩展信息.

    对象ID规则(object ID rules)

    1) 0 - 31 (32 bits): 对象类型详细信息

    2) 32 - 55 (24 bits): vdi id

    3) 56 - 59 ( 4 bits): 预留

    4) 60 - 63 ( 4 bits): 对象类型标识符

    每个VDI有一个全局唯一的ID(vdi id), 通过VDI名求得的散列值,低三十二位使用如下:

    对象类型

    32位的作用

    数据类型

    虚拟磁盘映射的索引号

    Vdi对象

    未使用(0)

    Vm状态对象

    Vm状态映射索引

    Vdi属性对象

    键名的散列值

     

    对象格式(object format)

    1)       数据对象

    虚拟磁盘映射的块

    2)       Vdi对象

     

     1  struct sheepdog_inode {
     2      char name[SD_MAX_VDI_LEN];               /* the name of this VDI*/
     3      char tag[SD_MAX_VDI_TAG_LEN];           /* the snapshot tag name */
     4      uint64_t ctime;                                    /* creation time of this VDI */
     5      uint64_t snap_ctime;                            /* the time snapshot is taken */
     6      uint64_t vm_clock_nsec;                       /* vm clock (used for live snapshot) */
     7      uint64_t vdi_size;                                 /* the size of VDI */
     8      uint64_t vm_state_size;                        /* the size of vm state (used for live snapshot) */
     9      uint16_t copy_policy;                           /* reserved */
    10      uint8_t  nr_copies;                              /* the number of object redundancy */
    11      uint8_t  block_size_shift;                      /* info about the size of the data object */
    12      uint32_t snap_id;                                /* the snapshot id */
    13      uint32_t vdi_id;                                  /* the vdi id */
    14      uint32_t parent_vdi_id;                        /* the parent snapshot vdi id of this VDI */
    15      uint32_t child_vdi_id[MAX_CHILDREN];    /* the children VDIs of this VDI */
    16      uint32_t data_vdi_id[MAX_DATA_OBJS];   /* the data object IDs this VDI contains*/
    17  };

    3)       Vm状态对象

    Vm状态映射块

    4)       Vdi属性对象

    SD_MAX_VDI_ATTR_KEY_LEN(256)为属性的键名,余下的是属性指.

    只读/可写对象(read-only/writable objects)

    从如何访问对象的角度,我们还可以把Sheepdog对象分为以下两类.

    1)       只读对象(:VDI快照数据对象)

    只允许一个VM对其读写,其他vm无法访问

    2)       可写对象

    不允许任何VM对其写,所有VM都可读

    其他功能(other features)

    Sheepdog对象存储可接收正在写时复制(copy-on-write)的请求.当一个客户端发送一个创建和写的请求时,同时可以指定基本对象(CoW操作的来源),这用于快照和克隆操作.

    网关(Gateway)

    对象存在哪(where to store objects)

    Sheepdog使用一致性哈希算法决定存放对象的位置,一致性哈希算法提供哈希表,而且增加或介绍节点不回显著的改变对象映射,通过哈希表能使I/O负载均衡.

    副本(replication)

    Sheepdog的数据副本很简单,我们假设只有一个写,所以写冲突不会发生,客户端可以并行发生请求到目标节点,发生读请求到一个目标节点如果客户端自己处理I/O请求顺序.

    I/O(write I/O flow)

    Getway使用一致性哈希算法计算目标节点并发送写请求到所有目标节点,只有所有副本均更新成功写请求才会成功,这是因为如果一个副本未更新,getway有可能从未更新的节点读取旧数据.

    I/O(read I/O flow)

    Getway使用一致性哈希算法计算目标节点,并发送读请求到一个目标节点.

    1)       修复对象一致性

    当某节点在转发I/O请求时crash,有可能破坏副本的一致性,所以当getway第一次读取对象时会试图修复其一致性,从一节点读取整个对象并用它覆盖所有副本.

    重试I/O请求(retrying I/O requests)

    Sheepdog存储所有成员节点的历史信息,我们把历史版本号叫做”epoch”(详见章节对象恢复’). 如果getway转发I/O请求至目标节点并且getway与目标节点epoch号不相符,I/O请求失败且getway重试请求直到epcho号相符,这就需要保持副本强一致性.

    I/O重试也可能发生在目标节点挂了导致无法完成I/O操作.

    对象管理器(Object Manager)

    对象管理器把对象存储到本地磁盘,当前把每个对象存储为一个文件,这中方法简单.我们也可以使用DBMS(: BerkeleyDB, Tokyo Cabinet) 作为对象存储器,但还不支持.

    路径命名规则(path name rule)

    对象存储成如下路径:

            /store_dir/obj/[epoch number]/[object ID]

    所有对象文件有一个扩展属性: 副本数(sheepdog.copies),

    写日志(write journaling)

    sheep进程在写操作过程中失败,对象有可能至少部分更新,一般情况这不会有问题,因为如果VM未接收成功消息,不保证所写部分的内容.然而对于vdi对象,我们必须整体更新或整体未更新,因为如果vdi对象只是部分更新,VDI的元数据有可能被破坏. 为例防止这个问题,我们使用日志记录对vdi对象的写操作. 日志过程很简单:

    1)       创建日志文件"/store_dir/journal/[epoch]/[vdi object id]"

    2)       首先写数据到日志文件

    3)       写一个数据到vdi对象

    4)       删除日志文件

    集群管理器(Cluster Manager)

    大多情况, Sheepdo客户端单独访问它们的映射因为我们不允许两个客户端同时访问一个映射,但是某些VDI操作(:克隆VDI,创建VDI)必须做,因为这些操作更新全局信息,我们使用Corosync集群引擎完成而不是中心服务器.

    我们将扩展Sheepdog以支持其他集群管理系统.

    本章正在编辑

    QEMU 块驱动(QEMU Block Driver)

    Sheepdog卷被分为4M的数据对象,刚创建的对象未分配,也就是说,只有写对象被分配.

    Open

    首先QEMU块驱动通过getwaybdrv_open()从对象存储读取vdi

    /(read/write)

    块驱动通过请求的部分偏移量和大小计算数据对象id, 并向getway发送请求. 当块驱动发送写请求到那些不属于其当前vdi的数据对象是,块驱动发送CoW请求分配一个新的数据对象.

    写入快照vdi(write to snapshot vdi)

    我们可以把快照VDI附加到QEMU, 当块驱动第一次发送写请求到快照VDI, 块驱动创建一个新的可写VDI作为子快照,并发送请求到新的VDI.

    VDI操作(VDI Operations)

    查找(lookup)

    当查找VDI对象时:

    1)       通过求vdi名的哈希值得到vdi id

    2)       通过vdi id计算di对象

    3)       发送读请求到vdi对象

    4)       如果此vdi不是请求的那个,增加vdi id并重试发送读请求

    快照,克隆(snapshot, cloning)

    快照可克隆操作很简单,

    1)       读目标VDI

    2)       创建一个与目标一样的新VDI

    3)       把新vdi‘'parent_vdi_id''设为目标VDIid

    4)       设置目标vdi''child_vdi_id''为新vdiid.

    5)       设置目标vdi''snap_ctime''为当前时间, vdi变为当前vdi对象

    删除(delete)

    TODO:当前,回收未使用的数据对象是不会被执行,直到所有相关VDI对象(相关的快照VDI和克隆VDI)被删除.

    所有相关VDI被删除后, Sheepdog删除所有此VDI的数据对象,设置此VDI对象名为空字符串.

    对象恢复(Object Recovery)

    epoch

    Sheepdog把成员节点历史存储在存储路径, 路径名如下:

            /store_dir/epoch/[epoch number]

    每个文件包括节点在epoch的列表信息(IP地址,端口,虚拟节点个数).

    恢复过程(recovery process)

    1)       从所有节点接收存储对象ID

    2)       计算选择那个对象

    3)       创建对象ID list文件"/store_dir/obj/[the current epoch]/list"

    4)       发送一个读请求以获取id存在于list文件的对象. 这个请求被发送到包含前一次epoch的对象的节点.( The requests are sent to the node which had the object at the previous epoch.)

    5)       把对象存到当前epoch路径.

    冲突的I/O(conflicts I/Os)

    如果QEMU发送I/O请求到某些未恢复的对象, Sheepdog阻塞此请求并优先恢复对象.

    协议(Protocol)

    Sheepdog的所有请求包含固定大小的头部(48)和固定大小的数据部分,头部包括协议版本,操作码,epoch,数据长度等.

    between sheep and QEMU

    操作码

    描述

    SD_OP_CREATE_AND_WRITE_OBJ

    发送请求以创建新对象并写入数据,如果对象存在,操作失败

    SD_OP_READ_OBJ

    读取对象中的数据

    SD_OP_WRITE_OBJ

    向对象写入数据,如果对象不存在,失败

    SD_OP_NEW_VDI

    发送vdi名到对象存储并创建新vdi对象, 返回应答vdi的唯一的vdi id

    SD_OP_LOCK_VDI

    SD_OP_GET_VDI_INFO相同

    SD_OP_RELEASE_VDI

    未使用

    SD_OP_GET_VDI_INFO

    获取vdi信息(:vdi id)

    SD_OP_READ_VDIS

    获取已经使用的vdi id

    between sheep and collie

    操作码

    描述

    SD_OP_DEL_VDI

    删除VDI

    SD_OP_GET_NODE_LIST

    获取sheepdog的节点列表

    SD_OP_GET_VM_LIST

    未使用

    SD_OP_MAKE_FS

    创建sheepdog集群

    SD_OP_SHUTDOWN

    停止sheepdog集群

    SD_OP_STAT_SHEEP

    获取本地磁盘使用量

    SD_OP_STAT_CLUSTER

    获取sheepdog集群信息

    SD_OP_KILL_NODE

    退出sheep守护进程

    SD_OP_GET_VDI_ATTR

    获取vdi属性对象id

    between sheeps

    操作码

    描述

    SD_OP_REMOVE_OBJ

    删除对象

    SD_OP_GET_OBJ_LIST

    获取对象id列表,并存储到目标节点

     

    展开全文
  • Sheepdog简介

    2014-09-28 17:07:58
    sheepdog是近几年开源社区新兴的分布式块存储文件系统,采用完全对称的结构,没 有类似元数据服务的中心节点。这种架构带来了线性可扩展性,没有单点故障和容易管理的特性。对于磁盘和物理节点,SheepDog实现了...

    sheepdog是近几年开源社区新兴的分布式块存储文件系统,采用完全对称的结构,没 有类似元数据服务的中心节点。这种架构带来了线性可扩展性,没有单点故障和容易管理的特性。对于磁盘和物理节点,SheepDog实现了动态管理容量以及 隐藏硬件错误的特性。对于数据管理,SheepDog利用冗余来实现高可用性,并提供自动恢复数据数据,平衡数据存储的特性。除此之外,sheepdog 还有具有零配置、高可靠、智能节点管理、容量线性扩展、虚拟机感知(底层支持冷热迁移和快照、克隆等)、支持计算与存储混合架构的特点等。目前,开源软件 如QEMU、Libvirt以及Openstack都很好的集成了对Sheepdog的支持。在 openstack中,可以作为cinder和glance的后端存储。

    sheepdog总体包括集群管理和存储管理两大部分。集群管理使用已有的集群管理工具来管理,存储管理基于本地文件系统来实现。目前支持的本地文件系统包括ext4和xfs。

    编译后的sheepdog由两个程序组成,一个是守护程序sheep,一个是集群管理工具dog,守护程序sheep同时兼备了节点路由和和对象存储的功能。

    Sheep进程之间通过节点路由(gateway)的逻辑转发请求,而具体的对象通过对象存储的逻辑保存在各个节点上,这就把所有节点上的存储空间聚合起来,形成一个共享的存储空间。

    Sheepdog由两个程序组成,一个是后台进程sheep,一个是前台管理工具dog。Dog主要负责管理整个sheep集群,包括集群管 理,VDI管理等。集群管理主要包括集群的状态获取,集群快照,集群恢复,节点信息,节点日志,节点恢复等。VDI管理包括VDI的创建,删除,快照,检 查,属性等等。

    Dog是一个命令行工具,启动时,会向后台sheep进程发起TCP连接,通过连接传输控制指令。当sheep收到控制指令时,如果有需要,会将相应指令扩散到集群中,加上对称式的设计,从而使得dog能够管理整个集群

    原文:http://www.hengtianyun.com/download-show-id-123.html

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800029/viewspace-1283864/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/29800029/viewspace-1283864/

    展开全文
  • sheepdog 1

    2013-03-14 16:13:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • sheepdog 2

    2013-03-14 16:14:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • sheepdog的学习

    2015-10-10 16:54:02
    工作中有用到sheepdog这东西 所以就学习总结一下 一.原理 sheepdog是专门为 kvm-qemu设计的分布式对象存储系统 也就是说 虚拟机创建于sheepdog之上 二.安装部署 sheepdog的原理看得头疼,不过实现起来却令人发指...
  • sheepdog 与KVM

    2013-03-14 16:17:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • sheepdog集群快照

    2015-04-16 16:12:17
    近期由于自己在研究sheepdog集群快照,虽然不是很完全,但是在网上还是很难找到有关资料,于是就把自己所感想写下来分享,如果以后有人用到,可以参考,啊哈开始正题。 sheepdog的安装初始化这里就不多累述了,网上...
  • Sheepdog HTTP API

    2015-12-29 11:29:00
    1、sheepdog中http simple storage中nginx后台配置文件模板留存: events { worker_connections 1024;} http { server { listen 80; server_name localhost; location / { fastcgi_...
  • 分布式存储系统sheepdog

    万次阅读 2012-11-06 20:57:47
    Sheepdog,是由NTT的3名日本研究员开发的开源项目,主要用来为虚拟机提供块设备。 其架构如下:       下面,我们将从架构、模块等几个方面来介绍下:   一、架构图 如上图: 采用无中心节点的全对称...
  • qemu 启动虚拟机 sheepdog

    千次阅读 2015-06-17 16:28:43
    sheepdog是一个专门为qemu设计的虚拟机分布式文件系统,采用完全对称的结构,没有元数据服务的中心节点,因此免除了单点故障的隐患.本文基于最新的0.7.0版本测试,介绍sheepdog的安装配置和使用. sheepdog的后端集群...
  • sheepdog创建vdi流程

    2015-07-10 09:23:21
    sheepdog创建vdi流程
  • sheepdog--介绍

    千次阅读 2013-11-07 10:08:06
    sheepdog是NTT日本电报电话公司开源的一个分布式文件系统,初衷就是要做一个aws的ebs开源实现,可以实现镜像和块设备(block device)的分布式存储 sheepdog不是一个常规的文件系统,而是针对qemu/kvm的一个分布式...
  • Maremma Sheepdog profile Other names Abruzzenhund Abruzzese Abruzzese Shepherd Dog Cana da Pastore Maremmano-Abruzzese Cane da Past...

空空如也

1 2 3 4 5 ... 12
收藏数 235
精华内容 94
关键字:

Sheepdog