04 2019 档案
摘要:根据日志追踪启动过程: sheep启动: 使用zookeeper作为集群管理: 需要提供的接口: zk_init: ret = create_cluster(port, zone, nr_vnodes, explicit_addr); // 创建sheepdog集群 // 监控节点连接状态 ret
阅读全文
摘要:添加xml文件: 官方xml文件: 实际测试发现,qemu需要添加path才支持部分功能:如 ioeventfd="on" event_idx="off"和<transient/> 部分patch地址:https://www.redhat.com/archives/libvir-list/2011-
阅读全文
摘要:sheepdog 与QEMU: QEMU的sheepdog驱动层实现在协议层,QEMU软件的最底层;和QEMU的NBD有些相似,但比他更强大。我们可以在这里实现我们想要的任何格式,而且该协议支持实时迁移、快照、克隆等功能; Raw格式,不仅可以实现存储(性能更高),也可以实现快照、克隆、精简配置这些
阅读全文
摘要:map_with_crush(): 构造crush map 1. 创建crush map struct crush_map *m = crush_create(); 2. 添加bucket 分为两步:先make,后add 2.1 make bucket 先看一下bucket的数据结构: 产生一个bu
阅读全文
摘要:文件读写接口: 例如:rados_write(ioctx, "foo", buf, sizeof(buf), 0) do_rule函数: 函数原型: crush_choose_firstn 函数 这个函数递归的选择特定bucket或者设备,并且可以处理冲突,失败的情况. 如果当前是choose过程,
阅读全文
摘要:1. ceph群集里pg存在的意义? 由于PG和OSD的数量都比较有限,记录每个OSD承载了哪些PG可行,而且变化不频繁,开销小。 在OSD X故障后,很容易获得OSD X承载的PG列表,并计算出各个PG的另外两个副本在哪个OSD。而每个PG下面的对象,都按照PG做了聚集(称为collection,
阅读全文
摘要:vnode的数据结构: oid和vnode的映射关系: 物理node的结构体:
阅读全文
摘要:红黑树的操作: 在rbtree中查找一个节点: 创建vdisks:一个物理disk的记录就是一颗红黑子树,如果删除该disk,那么对应的是删除整棵子树 添加一个物理磁盘: 与之相反的是删除vdisk 删除物理disk操作: 更新nodes disks,这里仅在配置为disk_vnodes模式才会定义
阅读全文
摘要:1. 基本介绍 sheepdog是近几年开源社区新兴的分布式块存储文件系统,采用完全对称的结构,没 有类似元数据服务的中心节点。这种架构带来了线性可扩展性,没有单点故障和容易管理的特性。对于磁盘和物理节点,SheepDog实现了动态管理容量以及 隐藏硬件错误的特性。对于数据管理,SheepDog利用
阅读全文