SlideShare a Scribd company logo
1 of 22
Download to read offline
开源分布式块存储
Sheepdog 内部实现机制

            泰来 ( 刘源 )
            核心系统部

            2012 年 1 月 10 日
提纲
●
    Sheepdog 介绍
●
    整体架构
●
    节点管理
●
    数据管理
●
    本地存储(持久化)
Sheepdog 介绍
●
    开源的分布式块存储
●
    专为虚拟机提供块存储
●
    无单点
●
    低运维开销
          –   “ 零”配置
          –   对内核文件系统无特性假设
          –   节点变化无须人工参与即可恢复
          –   数据动态均衡负载
          –   支持虚拟机的热迁移、镜像快照、模板 & 克隆(快速安装部署)、集群快照
          –   计算节点和数据节点混合模式
●
    线性扩展,支持上千级别节点
图片来自 http://www.osrg.net/sheepdog/
整体架构

 Sheep          Sheep          Sheep
Gateway        Gateway        Gateway


          VM             VM             VM


 Sheep          Sheep          Sheep
 store
 Store          store
                Store          Store



  节点 A            节点 B           节点 C
节点内部
                                Sheepdog 存储
        以太网



QEMU
                         虚拟机地址空间


  块设备模拟
                        VCPU         VCPU



       eventfd                              VM_ENTRY
内核
                               KVM          VM_EXIT



                 读写请求   PCPU         PCPU
Sheepdog 线程模型
●
    两种上下文
      –   主线程上下文
            ●
                接收请求,唤醒处理函数
                   –   group_handler() ,处理节点变化和广播消息
                   –   client_handler() ,处理 IO 和数据恢复、迁移等
                         请求
      –   工作线程上下文
            ●
                12 个,其中 4 个专门处理 IO 请求, 4 个专门
                 处理 Gateway 请求
逻辑处理模型
●
    两种上下文,主线程同工作线程无竞争的全局变量
●
    将请求处理逻辑中需要串行化的逻辑放到主线程中,可以
    并行的逻辑放到工作线程中
      –   多线程、无锁的节点变化处理逻辑、数据恢复、迁
           移逻辑
      –   复杂的分布式算法简单化,根除死锁的可能性
      –   容易验证算法的正确性
节点管理
   ●
       Sheepdog 只提供节点变化后的处理机制
          –   节点变化的检测依赖外部实现
          –   消息机制依赖外部实现
                  ●
                      节点变化消息
                  ●
                      节点广播消息
   ●
       支持两种模型
          –   全对称 (依赖 Corosync ,运行于 Sheepdog 的地址空间)
                  ●
                      缺点:规模小 [<100]
                  ●
                      优点:无需配置
          –   单独的控制集群 (依赖 Accord* 或者 Zookeeper ,运行于独立地
               址空间)
                  ●
                      缺点:需要配置控制集群
                  ●
                      优点:规模大 [>1000]


*Accord 为 Sheepdog 项目的一个子项目
节点变化的处理
●
    节点加入时,内部逻辑需要一个特殊的 master 节点来处理新节
    点是否可以加入
       –   集群主动或被动关闭后,重新启动集群,也是节点变化
            的处理过程
●
    每一个节点都有一致的成员视图
●
    目前可以处理多个节点同时离开或者加入的事件(比如同时有 A , B
    加入, C 离开)
节点加入
●
    节点加入
         –   分为两个阶段
                    ●
                        1 新加入节点发送加入请求
                    ●
                        2 master 节点检查系统状态,核查能否加入,如果能,则
                          广播一个新的视图,各个节点更新视图和状态

              join(C)
     A                   C               A
                                              new_view(A,B,C)

     B                             B             C
         1.                              2.
         –   新节点加入时,在节点 1 和 2 之间 master 节点离
              开, mastership 自动转移,不会影响系统运行
                    ●
                        新的 master 节点继续检查状态以及广播视图
节点离开
●
    节点离开
      –   外部的节点检测机制发送成员变化视图
      –   各个节点更新视图和状态
●
    当多个节点变化事件发生时,外部检测机制确保离开和加入的消息的
    顺序一致
      –   剩下的节点和新加入的节点看见一致的视图
            ●
                比如集群有 (A,B,C,D) 四个节点, E 在加入的同时
                 D 因事故离开,那么 (A,B,C,E) 四个节点都将看
                 到最终如下的视图
                   –   {member(A,B,C,E), join(E), left(D)}
      –   产生一个还是多个视图变化消息跟外部检测机制相关
虚拟节点与一致性哈希
●
    Sheepdog 采用虚拟节点和一致性哈希存储块对象
       –   节点和数据都放到哈希环上
       –   一个物理节点分散成多个节点均匀到环上




                      图片来自 http://www.paperplanes.de/
节点变化的影响
●
    节点加入,数据需要重新均衡
     –   虚拟节点和一致性哈希算法保证
           ●
               数据均匀分布在各个物理节点
           ●
               很大程度上减少数据迁移
●
    节点离开,数据拷贝需要恢复,保证数据冗
    余度
     –   通过节点变化的历史信息恢复数据
数据管理
●
    虚拟机镜像被切分为 4M 大小的对象
      –   对象稀疏存储
      –   每个对象由唯一的 64 位数字索引
      –   每个对象有多个拷贝复制到节点上




                       图片来自 http://www.osrg.net/sheepdog/
数据的读写
●
    由于一个镜像只有一个虚拟机操作,所以更
    新拷贝时可以并行执行写操作
●
    读一个对象,可以从任何一个拷贝中返回
拷贝修复
●
    分布式系统中,拷贝的修复通常有两种
      –   急修复:收到节点离开消息,立刻进行修复
            ●
                优点:实现简单
            ●
                缺点:当离开的节点回来之后,造成带宽的浪费
      –   懒修复:
            ●
                优点:能区分节点的临时错误和永久错误,减少
                 带宽的浪费
            ●
                缺点 : 增加算法逻辑复杂度
                  –   如何处理关于临时离开节点的数据请求



     Sheepdog 目前采用的方法
拷贝修复逻辑
●
    对象的时间轨迹
      –   用 epoch 来记录每一次发生节点变化后的新视图
      –   通过 epoch 来区分不同时间的数据对象
      –   每一个对象都有一个以 epoch 为点的时间轨迹
               Init: (A,B,C), 3 份拷贝
                       A      B   C      D        F

               E1                        D join

               E2                             F join
          时间
               E3                                      Latest!
                                C left
               E4
本地存储 - 农场
●
    设计类似 GIT ,将数据对象分为普通对象和快照对象
      –   普通对象存于当前活动目录,平时的读写操作将操作普通对
           象
            ●
                拷贝恢复或迁移到当前活动目录
      –   当系统发生节点变化时,将普通对象存入仓库,类似快照操
           作,各个数据拷贝都需要根据一致性哈希重新计算位置
            ●
                恢复逻辑保证节点变化时,上层逻辑保证只存取恢复后的对象
●
    节点变化时,集群仍能响应虚拟机的读写请求
●
    快照对象去冗余,相同内容的对象指向同一个仓库文件
农场架构

     节点变化或者用
     户集群快照请求




                      读写
               当前活动         Sheep
仓库                         Gateway
                目录
新特性开发列表
●
    区分临时错误结点和永久错误节点
●
    加强网裂 (network partition) 处理能力
●
    本地 Cache 和 镜像预读到本地节点
●
    高性能动态内部 Trace 机制
●
    集群合并操作
●
    实现子集群概念
●
    增加更多后端 ( 如 LevelDB) 支持
●
    高性能异步日志机制
●
    更多需求驱动
                                    表示在开发中
问答

More Related Content

What's hot

再生龍於雲端環境之應用
再生龍於雲端環境之應用再生龍於雲端環境之應用
再生龍於雲端環境之應用Chenkai Sun
 
Openstack nova
Openstack novaOpenstack nova
Openstack novaYong Luo
 
Ceph in UnitedStack
Ceph in UnitedStackCeph in UnitedStack
Ceph in UnitedStackRongze Zhu
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)frogd
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCfrogd
 
Java GC Tuning
Java GC TuningJava GC Tuning
Java GC Tuningpprun
 
Openstack neutron 原理详解
Openstack neutron 原理详解Openstack neutron 原理详解
Openstack neutron 原理详解Yong Luo
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Yang Guanjun
 
Traffic server overview
Traffic server overviewTraffic server overview
Traffic server overviewqianshi
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&LockLixun Peng
 
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileCeph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileDanielle Womboldt
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0jinqing zhu
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background宗志 陈
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discusseverestsun
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期frogd
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析frogd
 

What's hot (20)

再生龍於雲端環境之應用
再生龍於雲端環境之應用再生龍於雲端環境之應用
再生龍於雲端環境之應用
 
Openstack nova
Openstack novaOpenstack nova
Openstack nova
 
Ceph in UnitedStack
Ceph in UnitedStackCeph in UnitedStack
Ceph in UnitedStack
 
Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)Mvcc (oracle, innodb, postgres)
Mvcc (oracle, innodb, postgres)
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
 
Java GC Tuning
Java GC TuningJava GC Tuning
Java GC Tuning
 
Openstack neutron 原理详解
Openstack neutron 原理详解Openstack neutron 原理详解
Openstack neutron 原理详解
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
Cephfs架构解读和测试分析
Cephfs架构解读和测试分析Cephfs架构解读和测试分析
Cephfs架构解读和测试分析
 
Traffic server overview
Traffic server overviewTraffic server overview
Traffic server overview
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
 
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileCeph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
 
Leveldb background
Leveldb backgroundLeveldb background
Leveldb background
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
数据库内核分享——第一期
数据库内核分享——第一期数据库内核分享——第一期
数据库内核分享——第一期
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析Oracle rac资源管理算法与cache fusion实现浅析
Oracle rac资源管理算法与cache fusion实现浅析
 

Viewers also liked

Overview of sheepdog
Overview of sheepdogOverview of sheepdog
Overview of sheepdogLiu Yuan
 
Sheepdog Status Report
Sheepdog Status ReportSheepdog Status Report
Sheepdog Status ReportLiu Yuan
 
Overview of Livestock Judging
Overview of Livestock JudgingOverview of Livestock Judging
Overview of Livestock JudgingCari Rincker
 
DNSSEC and DANE – E-Mail security reloaded
DNSSEC and DANE – E-Mail security reloadedDNSSEC and DANE – E-Mail security reloaded
DNSSEC and DANE – E-Mail security reloadedMen and Mice
 
Growth and Development of Craniofacial Complex
Growth and Development of Craniofacial ComplexGrowth and Development of Craniofacial Complex
Growth and Development of Craniofacial ComplexIAU Dent
 
07. The Deciduous Teeth - Dentition
07. The Deciduous Teeth - Dentition07. The Deciduous Teeth - Dentition
07. The Deciduous Teeth - DentitionCU Dentistry 2019
 
Maxillary and Mandibular Canines
Maxillary and Mandibular CaninesMaxillary and Mandibular Canines
Maxillary and Mandibular Canineshchidmd
 
Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)JungIn Jung
 
Leptospirosis- Dr Ajay Tyagi
Leptospirosis- Dr Ajay TyagiLeptospirosis- Dr Ajay Tyagi
Leptospirosis- Dr Ajay TyagiDrajay Tyagi
 
Clinical examination of an orthodontic case /certified fixed orthodontic cour...
Clinical examination of an orthodontic case /certified fixed orthodontic cour...Clinical examination of an orthodontic case /certified fixed orthodontic cour...
Clinical examination of an orthodontic case /certified fixed orthodontic cour...Indian dental academy
 
C Pointers
C PointersC Pointers
C Pointersomukhtar
 

Viewers also liked (20)

Overview of sheepdog
Overview of sheepdogOverview of sheepdog
Overview of sheepdog
 
Sheepdog Status Report
Sheepdog Status ReportSheepdog Status Report
Sheepdog Status Report
 
Pekingese
PekingesePekingese
Pekingese
 
Advanced Email
Advanced EmailAdvanced Email
Advanced Email
 
Health
HealthHealth
Health
 
Crabbing in Charleston SC
Crabbing in Charleston SCCrabbing in Charleston SC
Crabbing in Charleston SC
 
Kuvasz
KuvaszKuvasz
Kuvasz
 
Adec8446
Adec8446Adec8446
Adec8446
 
Overview of Livestock Judging
Overview of Livestock JudgingOverview of Livestock Judging
Overview of Livestock Judging
 
DNSSEC and DANE – E-Mail security reloaded
DNSSEC and DANE – E-Mail security reloadedDNSSEC and DANE – E-Mail security reloaded
DNSSEC and DANE – E-Mail security reloaded
 
Growth and Development of Craniofacial Complex
Growth and Development of Craniofacial ComplexGrowth and Development of Craniofacial Complex
Growth and Development of Craniofacial Complex
 
"Água viva"
"Água viva""Água viva"
"Água viva"
 
07. The Deciduous Teeth - Dentition
07. The Deciduous Teeth - Dentition07. The Deciduous Teeth - Dentition
07. The Deciduous Teeth - Dentition
 
Maxillary and Mandibular Canines
Maxillary and Mandibular CaninesMaxillary and Mandibular Canines
Maxillary and Mandibular Canines
 
Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)Qemu & KVM Guide #1 (intro & basic)
Qemu & KVM Guide #1 (intro & basic)
 
Parvovirus
ParvovirusParvovirus
Parvovirus
 
Leptospirosis- Dr Ajay Tyagi
Leptospirosis- Dr Ajay TyagiLeptospirosis- Dr Ajay Tyagi
Leptospirosis- Dr Ajay Tyagi
 
Clinical examination of an orthodontic case /certified fixed orthodontic cour...
Clinical examination of an orthodontic case /certified fixed orthodontic cour...Clinical examination of an orthodontic case /certified fixed orthodontic cour...
Clinical examination of an orthodontic case /certified fixed orthodontic cour...
 
Leptospirosis
LeptospirosisLeptospirosis
Leptospirosis
 
C Pointers
C PointersC Pointers
C Pointers
 

Similar to Sheepdog内部实现机制

新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum锐 张
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践mysqlops
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Dahui Feng
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向George Ang
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机EdwardBadBoy
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计YANGL *
 
京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索confluent
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现orczhou
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅Yi Sun
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向topgeek
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向areyouok
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践drewz lin
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江thinkinlamp
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysqlpwesh
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧guiyingshenxia
 

Similar to Sheepdog内部实现机制 (20)

新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
基于Fuel的超融合一体机
基于Fuel的超融合一体机基于Fuel的超融合一体机
基于Fuel的超融合一体机
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现
 
PyCon China 2012 孙毅
PyCon China 2012 孙毅PyCon China 2012 孙毅
PyCon China 2012 孙毅
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧
 

Sheepdog内部实现机制

  • 1. 开源分布式块存储 Sheepdog 内部实现机制 泰来 ( 刘源 ) 核心系统部 2012 年 1 月 10 日
  • 2. 提纲 ● Sheepdog 介绍 ● 整体架构 ● 节点管理 ● 数据管理 ● 本地存储(持久化)
  • 3. Sheepdog 介绍 ● 开源的分布式块存储 ● 专为虚拟机提供块存储 ● 无单点 ● 低运维开销 – “ 零”配置 – 对内核文件系统无特性假设 – 节点变化无须人工参与即可恢复 – 数据动态均衡负载 – 支持虚拟机的热迁移、镜像快照、模板 & 克隆(快速安装部署)、集群快照 – 计算节点和数据节点混合模式 ● 线性扩展,支持上千级别节点
  • 5. 整体架构 Sheep Sheep Sheep Gateway Gateway Gateway VM VM VM Sheep Sheep Sheep store Store store Store Store 节点 A 节点 B 节点 C
  • 6. 节点内部 Sheepdog 存储 以太网 QEMU 虚拟机地址空间 块设备模拟 VCPU VCPU eventfd VM_ENTRY 内核 KVM VM_EXIT 读写请求 PCPU PCPU
  • 7. Sheepdog 线程模型 ● 两种上下文 – 主线程上下文 ● 接收请求,唤醒处理函数 – group_handler() ,处理节点变化和广播消息 – client_handler() ,处理 IO 和数据恢复、迁移等 请求 – 工作线程上下文 ● 12 个,其中 4 个专门处理 IO 请求, 4 个专门 处理 Gateway 请求
  • 8. 逻辑处理模型 ● 两种上下文,主线程同工作线程无竞争的全局变量 ● 将请求处理逻辑中需要串行化的逻辑放到主线程中,可以 并行的逻辑放到工作线程中 – 多线程、无锁的节点变化处理逻辑、数据恢复、迁 移逻辑 – 复杂的分布式算法简单化,根除死锁的可能性 – 容易验证算法的正确性
  • 9. 节点管理 ● Sheepdog 只提供节点变化后的处理机制 – 节点变化的检测依赖外部实现 – 消息机制依赖外部实现 ● 节点变化消息 ● 节点广播消息 ● 支持两种模型 – 全对称 (依赖 Corosync ,运行于 Sheepdog 的地址空间) ● 缺点:规模小 [<100] ● 优点:无需配置 – 单独的控制集群 (依赖 Accord* 或者 Zookeeper ,运行于独立地 址空间) ● 缺点:需要配置控制集群 ● 优点:规模大 [>1000] *Accord 为 Sheepdog 项目的一个子项目
  • 10. 节点变化的处理 ● 节点加入时,内部逻辑需要一个特殊的 master 节点来处理新节 点是否可以加入 – 集群主动或被动关闭后,重新启动集群,也是节点变化 的处理过程 ● 每一个节点都有一致的成员视图 ● 目前可以处理多个节点同时离开或者加入的事件(比如同时有 A , B 加入, C 离开)
  • 11. 节点加入 ● 节点加入 – 分为两个阶段 ● 1 新加入节点发送加入请求 ● 2 master 节点检查系统状态,核查能否加入,如果能,则 广播一个新的视图,各个节点更新视图和状态 join(C) A C A new_view(A,B,C) B B C 1. 2. – 新节点加入时,在节点 1 和 2 之间 master 节点离 开, mastership 自动转移,不会影响系统运行 ● 新的 master 节点继续检查状态以及广播视图
  • 12. 节点离开 ● 节点离开 – 外部的节点检测机制发送成员变化视图 – 各个节点更新视图和状态 ● 当多个节点变化事件发生时,外部检测机制确保离开和加入的消息的 顺序一致 – 剩下的节点和新加入的节点看见一致的视图 ● 比如集群有 (A,B,C,D) 四个节点, E 在加入的同时 D 因事故离开,那么 (A,B,C,E) 四个节点都将看 到最终如下的视图 – {member(A,B,C,E), join(E), left(D)} – 产生一个还是多个视图变化消息跟外部检测机制相关
  • 13. 虚拟节点与一致性哈希 ● Sheepdog 采用虚拟节点和一致性哈希存储块对象 – 节点和数据都放到哈希环上 – 一个物理节点分散成多个节点均匀到环上 图片来自 http://www.paperplanes.de/
  • 14. 节点变化的影响 ● 节点加入,数据需要重新均衡 – 虚拟节点和一致性哈希算法保证 ● 数据均匀分布在各个物理节点 ● 很大程度上减少数据迁移 ● 节点离开,数据拷贝需要恢复,保证数据冗 余度 – 通过节点变化的历史信息恢复数据
  • 15. 数据管理 ● 虚拟机镜像被切分为 4M 大小的对象 – 对象稀疏存储 – 每个对象由唯一的 64 位数字索引 – 每个对象有多个拷贝复制到节点上 图片来自 http://www.osrg.net/sheepdog/
  • 16. 数据的读写 ● 由于一个镜像只有一个虚拟机操作,所以更 新拷贝时可以并行执行写操作 ● 读一个对象,可以从任何一个拷贝中返回
  • 17. 拷贝修复 ● 分布式系统中,拷贝的修复通常有两种 – 急修复:收到节点离开消息,立刻进行修复 ● 优点:实现简单 ● 缺点:当离开的节点回来之后,造成带宽的浪费 – 懒修复: ● 优点:能区分节点的临时错误和永久错误,减少 带宽的浪费 ● 缺点 : 增加算法逻辑复杂度 – 如何处理关于临时离开节点的数据请求 Sheepdog 目前采用的方法
  • 18. 拷贝修复逻辑 ● 对象的时间轨迹 – 用 epoch 来记录每一次发生节点变化后的新视图 – 通过 epoch 来区分不同时间的数据对象 – 每一个对象都有一个以 epoch 为点的时间轨迹 Init: (A,B,C), 3 份拷贝 A B C D F E1 D join E2 F join 时间 E3 Latest! C left E4
  • 19. 本地存储 - 农场 ● 设计类似 GIT ,将数据对象分为普通对象和快照对象 – 普通对象存于当前活动目录,平时的读写操作将操作普通对 象 ● 拷贝恢复或迁移到当前活动目录 – 当系统发生节点变化时,将普通对象存入仓库,类似快照操 作,各个数据拷贝都需要根据一致性哈希重新计算位置 ● 恢复逻辑保证节点变化时,上层逻辑保证只存取恢复后的对象 ● 节点变化时,集群仍能响应虚拟机的读写请求 ● 快照对象去冗余,相同内容的对象指向同一个仓库文件
  • 20. 农场架构 节点变化或者用 户集群快照请求 读写 当前活动 Sheep 仓库 Gateway 目录
  • 21. 新特性开发列表 ● 区分临时错误结点和永久错误节点 ● 加强网裂 (network partition) 处理能力 ● 本地 Cache 和 镜像预读到本地节点 ● 高性能动态内部 Trace 机制 ● 集群合并操作 ● 实现子集群概念 ● 增加更多后端 ( 如 LevelDB) 支持 ● 高性能异步日志机制 ● 更多需求驱动 表示在开发中