Sheeepdog采用完全对称的结构,没有类似元数据服务的中心节点. 这种设计有以下的特点.
1) 性能于容量的线性的可扩展性. 当需要提升性能或容量时,只需向集群中增加新的机器便能使Sheeepdog线性成长. 2) 没有单点故障 即使某台机器发生故障,依然可以通过其他机器访问数据. 3) 容易管理 不需要配置机器角色,当管理员在新增的机器开启Sheepdog守护进程时, Sheepdog会自动检测新加入的机器并配置它成为存储系统中的一员. 结构概述![]()
C:%5CDocuments%20and%20Settings%5CAdministrator%5C%E6%A1%8C%E9%9D%A2
file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image002.jpg
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属性对象
| 键名的散列值
|
|