Sheepdog介绍
-
Upload
liu-yuan -
Category
News & Politics
-
view
1.427 -
download
0
Transcript of Sheepdog介绍
刘源淘宝核心系统内核组
2012 年 7 月 14 日
开源分布式块存储Sheepdog
关于我● 曾在英特尔上海开源技术中心虚拟化小组实习,主要做
Moblin 、 Xen 的研发
● 2011 年 1 月加入淘宝
– 1 月到 8 月做内核方面的开发
– 9 月开始做分布式存储 (Sheepdog)
● 热爱开源, Linux 内核, Xen , KVM , QEMU , GIT 有一些补丁贡献。喜欢阅读源码和论文,从大型系统的设计与实现找到成熟的技术
● 目前是 Sheepdog 项目的核心开发,项目维护者之一
提纲
● 虚拟化技术介绍● Sheepdog 介绍● Sheepdog 面临的主要问题● 社区开发介绍● 代码统计● Sheepdog 的应用● 问答
虚拟化介绍● 软件虚拟化(半虚拟化 [Xen PV] ,二进制动态翻
译 [QEMU, Virtual box])
– X86 平台上二进制动态翻译历史最长● 硬件虚拟化(全虚拟化 [KVM, XEN HVM]
– 60 年代,硬件虚拟化技术影响着分时操作系统设计
● MULTIX[UNIX] 虚拟部分资源, CPU 和内存● IBM CP/CMS 虚拟全部资源
– X86 平台大约在 2003 年开始,学习大型机硬件虚拟技术
X86 硬件虚拟化
● CPU 虚拟化 (成熟)– 改变指令集 ISA
● 内存虚拟化(成熟)– 单个 MMU-> 二层 MMU
● IO 虚拟化 ( 目前热点 )
– 增加 IOMMU
– 硬件直接分配给客户机
Sheepdog 介绍● 开源的分布式块存储
– 2009 年由日本 NTT 实验室的 MORITA KAZUTAKA 创建
● 专为虚拟机提供块存储
– 并不完全拘泥于虚拟机,可提供一个虚拟的块设备。
● 无单点
● 低运维开销
– “ 零”配置
– 对内核文件系统无特性假设
– 节点变化无须人工参与即可恢复
– 数据动态均衡负载
– 支持虚拟机的热迁移、镜像快照、模板 & 克隆(快速安装部署)、集群快照
– 计算节点和数据节点混合模式
● 线性扩展,支持上千级别节点
图片来自 http://www.osrg.net/sheepdog/
整体架构
SheepGateway
VM
Sheepstore
SheepGateway
VM
SheepStore
SheepGateway
VM
SheepStore
SheepGateway
VM
Sheepstore
SheepGateway
VM
SheepStore
节点 A 节点 B 节点 C
节点内部
VCPU VCPU
内核
QEMU虚拟机地址空间
PCPU PCPU
VM_ENTRYVM_EXIT
块设备模拟
Sheepdog 存储
读写请求
以太网
KVMeventfd
数据管理● 虚拟机镜像被切分为 4M 大小的对象
– 对象稀疏存储– 每个对象由唯一的 64 位数字索引
– 每个对象有多个拷贝复制到节点上
图片来自 http://www.osrg.net/sheepdog/
Sheepdog 面临的主要问题● 多个节点变化
– 节点加入时,有其它节点当掉 .
– 扩容,缩容等 .
● 数据平衡,节点存储权重
– 虚拟节点和一致性哈希减少恢复时间和数据迁移
● 节点变化时对虚拟机 IO 的影响
– 本地缓存模式,几乎无影响 (高性能)
– 无本地缓存,需要等待对象恢复 (高可靠性),请求重试
● 大规模节点的扩展性
– 目标是上几千节点的规模– 内部算法的扩展性
– 专门的节点控制集群
社区开发介绍● 从一个人到社区
– 2009 年 9 月, Kazutaka宣布项目的成立● JAVA C→
– 2011 年 9 月淘宝开发人员加入开发● Farm, object cache, retry mechanism, recovery rewrite,
zookeeper driver, sheepfs, store rewrite, socket cache rewrite, event handling rewrite...
– 2012 年 3 月 Nebula 的 Christoph Hellwig 加入开发
● 目前代码树处于高速迭代的状态– 每个月合并 100+ 的补丁
– 活跃开发者 5 人 ( 补丁 30+)
● 需要更多的开发者和用户
代码统计● 2011.9 ~ 2012.7
– 代码总计: 22,978
– 补丁总计: 731
– 淘宝修改的行数: 29,508
● 近 10 个月的活跃开发者 ( 补丁 30+)
tailai.ly@taobao:~/sheepdog$ git shortlog -ns ed24aea.. 306 Liu Yuan 142 Christoph Hellwig 128 MORITA Kazutaka 59 levin li 38 Yunkai Zhang
补丁统计 ( 2011.9~ 2012.7 )
428142
14615
补丁比例图
TaobaoNTTNebulaother
SepOct
NovDec
JanFeb
MarApr
MayJun
0
20
40
60
80
100
120
140
160
180
200
38
7356
27 207
28
98
183
140
补丁数
Seq Oct Nov Dec Jan Feb Mar Apr May Jun
0
200
400
600
800
1000
1200
154
368 352
221
8757
235
440
1083
641
邮件列表统计
Sheepdog 的应用
● 数量很小,信息有限,一些小的 startup 和个人用户
● 淘宝目前主要用于开发测试环境
问答