sheepdog创建vdi流程

原创 2015年07月10日 09:23:21
sd_create_hyper_volume--->opcode:SD_OP_NEW_VDI
    exec_local_req
        submit_local_request--->添加req到sys->local_req_queue
               |
               |
               V
        local_req_handler--->处理本地消息
            queue_request--->根据Op Type选择处理方式
            queue_cluster_request--->调用cluster driver(zookeeper)来全局发送消息
                sys->cdrv->block<--->zk_block
                    add_event--->type:EVENT_BLOCK
                        zk_queue_push
                            zk_create_seq_node--->添加zk事件,事件序号单调增加
                            |
                            |
                            |
                            V
                        zk_event_handler--->调用zk_event_handlers
                            zk_handle_block--->取出头结点的请求,在有unblock到来之前这个请求不从链表上摘除
                                sd_block_handler--->非本节点处理的消息直接返回,注册操作函数do_process_work和cluster_op_done,
                                                    设置cluster_op_running为true,保证阻塞的请求串行执行
                                    queue_work--->将req消息添加到sys->block_wqueue,唤醒工作线程
                            |
                            |
                            |
                            V
                -------worker_routine--->工作线程回调函数,完成后添加到finished_list中
                |           work->fn(work)<---->do_process_work
                |               req->op->process_work(req)<--->cluster_new_vdi
                |                   vdi_create--->获取可用vid,创建vdi
                |                   
                |------>worker_thread_request_done处理finished_list上的任务
                            work->done(work)<---->cluster_op_done
                                prepare_cluster_msg--->构建需要发送的消息
                                sys->cdrv->unblock<---->zk_unblock
                                    add_event--->添加EVENT_UNBLOCK事件,发送构建的消息
                            |
                            |
                            |
                            V
                        zk_event_handler--->调用zk_event_handlers
                            zk_handle_unblock
                                sd_notify_handler--->本节点消息req需要put,非本节点消息进行main处理,设置sd_notify_handler为false
                                    do_process_main--->调用注册的main函数
                                        op->process_main<---->post_cluster_new_vdi
                                            atomic_set_bit(nr, sys->vdi_inuse)--->成功时将相应的位置位
                                

sheepdog概述(安装及简单使用)

sheepdog安装
  • hello_world_2012
  • hello_world_2012
  • 2015年09月05日 14:49
  • 2708

Sheepdog 设计

周末无事,故翻译sheepdog design. 原文地址: https://github.com/collie/sheepdog/wiki/Sheepdog-Design Sheepdo...
  • igorzhang
  • igorzhang
  • 2013年11月07日 18:13
  • 4261

sheepdog创建vdi流程

sheepdog创建vdi流程
  • zb16206
  • zb16206
  • 2015年07月10日 09:23
  • 264

KVM+Sheepdog+NFS构建KVM集群

1.架构图
  • bobpen
  • bobpen
  • 2013年08月27日 15:22
  • 3347

sheepdog 源码学习(1)

最近比较忙,做毕设(sheepdog),要在sheepdog的基础上做点东西,也就是说要改sheepdog源码。我只有一个月时间,所以最近一直都在读sheepdog源码。C 语言太菜,里面好多用法都不...
  • u012250655
  • u012250655
  • 2014年03月16日 21:24
  • 2284

分布式系统sheepdog之dog执行流程

dog部分主要是执行客户端的命令行请求,然后对命令进行解析,通过指定socket发送请求到sheep端,将请求交sheep端处理。具体流程请参考下图。 init_commands(&commands...
  • wendowswd
  • wendowswd
  • 2017年11月09日 20:06
  • 94

sheepdog v0.8.0 新特性

翻译URL:http://lists.wpkg.org/pipermail/sheepdog-users/2014-January/001780.html 用户可见的变化: 1. 数据的分布式算法...
  • trickleyxm
  • trickleyxm
  • 2014年02月28日 16:56
  • 846

通过iscsi连接sheepdog vdi

1.安装环境 centos 6.4 x86_64 vmware esxi 5.1 tgt sheepdog linux iscsi-initiator   2.安装步骤 2.1shee...
  • bobpen
  • bobpen
  • 2013年08月26日 14:26
  • 2226

sheepdog集群快照

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

sheepdog(牧羊犬):一种EBS的开源实现

sheepdog是EBS的开源实现, 为虚拟机提供高可用的块级存储, 能够扩展到数百台机器, 支持快照,克隆等高级特性,其架构如图所示   sheepdog从逻辑上分为三个层次, 第一层Q...
  • igorzhang
  • igorzhang
  • 2013年11月07日 18:39
  • 1247
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sheepdog创建vdi流程
举报原因:
原因补充:

(最多只允许输入30个字)