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)--->成功时将相应的位置位
                                

相关文章推荐

vmware vdi 安装流程(转载)收藏

  • 2011年04月15日 11:33
  • 1.59MB
  • 下载

Windows Server 2012 VDI 标准部署之准备工作——创建客户端虚拟机模板

前篇博文我们介绍了Windows Server 2012 VDI 标准部署之准备工作中的DHCP服务器的创建,本篇博文开始介绍VDI客户端的虚拟机模板的创建。 一、首先我们需要创建一个虚拟机模板,...

VirtualBox下快速创建新的虚拟机(一)——复制vdi文件

VirtualBox下通过复制已存在的vdi文件可以快速创建新的虚拟机,并解决了UUID重复的问题。...

怎样移动virtualbox下创建的vdi文件

VirtualBox可不像VMware那样,直接复制虚拟磁盘文件就可以了事的,只因为VirtualBox识别虚拟磁盘文件VDI采用了uuid识别技术. 由于测试需要搭建局域网环境,需要两台虚拟机同时...
  • JustinR
  • JustinR
  • 2011年09月29日 15:57
  • 2728

Windows Server 2012 VDI 标准部署之创建虚拟机集合(续)

前面博文我们已经介绍了VDI 标准部署之创建托管虚拟机集合的两种常用方式,请参考: http://blog.csdn.net/xiezuoyong/article/details/18220885 ,...

Windows Server 2012 VDI 标准部署之准备工作——创建DHCP服务器

最近接触微软的VDI项目,在项目实施的过程中,顺便写下VDI标准部署的步骤,下面直接进入主题: 前篇博文已经简单的写了VDI部署的几个前提条件,本篇博文开始要来详细介绍前期的准备工作: 一、首先需要创...

创建VDI黄金映像时的考虑因素

黄金映像(golden image)是创建虚拟机、虚拟桌面、服务器和磁盘驱动器的模板。黄金映像也被称为克隆映像(clone image)、主映像(master image)或基础映像(base ima...

sheepdog 与openstack

  • 2014年06月26日 20:30
  • 1.36MB
  • 下载

sheepdog for qemu/kvm

  • 2014年06月26日 20:33
  • 1022KB
  • 下载

kvm vm使用sheepdog存储空间

1.安装环境         DELL R710 *2         Centos 6.4         Centos 6.0(VM)         libvirt 1.1.1    ...
  • bobpen
  • bobpen
  • 2013年08月22日 10:35
  • 1606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sheepdog创建vdi流程
举报原因:
原因补充:

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