sheepdog是EBS的开源实现, 为虚拟机提供高可用的块级存储, 能够扩展到数百台机器, 支持快照,克隆等高级特性,其架构如图所示
sheepdog从逻辑上分为三个层次, 第一层QEMU block driver是客户端,负责在kvm虚拟机中虚拟出一个块设备;第二层是对象存储层, 提供一个分布式对象存储服务, 对象类似文件,不同之处是定长且用64位ObjectID标识; 第三层是集群管理,负责检测节点故障,处理节点加入和退出,保证所有服务器看到一致的集群成员关系。 另外一个功能是负责全局协调和同步, 例如创建volume,加锁等操作需要每个节点进行状态同步,达到一致状态。集群管理目前基于corosync实现。
Object Storage包含gateway和Object Manager两个部分,gateway接受客户端请求(QEMU block driver),根据一致性哈希计算定位目标节点,并路由请求到这些节点。 Object Manager是本地对象存储,管理本地对象,实现对象上的读写操作。
数据分片和定位