Curve元数据节点高可用© XXX Page 1 of 30 Curve元数据节点高可用© XXX Page 2 of 30 1. 需求 2. 技术选型 3. etcd clientv3的concurrency介绍 3.1 etcd clientV3的concurrency模块构成 3.2 Campaign的流程 3.2.1 代码流程说明 3.2.2 举例说明Campagin流程 3.3 Observe的流程 Etcd集群与MDS1(当前leader)出现网络分区 4.2.5.1 事件一先发生 4.2.5.2 事件二先发生 4.2.6 异常情况4:Etcd集群的follower节点异常 4.2.7 各情况汇总 1. 需求 mds是元数据节点,负责空间分配,集群状态监控,集群节点间的资源均衡等,mds故障可能会导致client端无法写入。 因此,mds需要做高可用。满足多个mds, 但同时只有一个mds节点提供服务,称该提供服务 提供配置共享和服务发现的系统比较多,其中最为大家熟知的就是zookeeper和etcd, 考虑当前系统中mds有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制: TTL和CAS。TTL(time to live)指的是给一个key设0 码力 | 30 页 | 2.42 MB | 6 月前3
Curve文件系统元数据管理Curve文件系统元数据管理(已实现)© XXX Page 2 of 24 1. 2. 3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 5.1 分片方式一:inode和dentry都按照parentid分片 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据 内存空间分配元数据 元数据持久化 元数据扩展 小文件优化 空间管理单位 数据持久化 moosefs(mfs) 有元数据服务器 全内存 fsnode → hashtable(inode id) fsedge → hashtable (parent inode + name) 全内存 chunk → hashtable(chunk id) log + dump record 差 否 chunk 链式多副本 overwirte有数据不一致风险 chubaofs(cfs) 有元数据服务器 inode0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve文件系统元数据Proto(接口定义)© XXX Page 1 of 15 curve文件系统元数据proto(代码接口定义,已实现)© XXX Page 2 of 15 1、代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。 2、文件系统proto定义 2.1 mds.proto0 码力 | 15 页 | 80.33 KB | 6 月前3
Curve文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft muliraft 存在的问题? redis 改造 vs 自己实现? redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +--- -------+----------+ 字段 字节数 说明 type 1 操作类型,共有以下 2 类: SET (0X01):ADD 和 UPDATE 都可以转换成 SET 操作 DEL (0X02):当为 DEL 操作时,value_length 和 value 则为空 key_length 4 key 长度 key $key_length 编码后的 key [value_length]0 码力 | 12 页 | 384.47 KB | 6 月前3
Zabbix 峰会、社区和公司Zabbix峰会、社区和公司 演讲嘉宾 柳霞 Sandara, zabbix商务经理,宏时数据 01 Zabbix中国峰会 Zabbix峰会是唯一一个你可以听到来自全国/全球的行业案例、 技术分享、解决方案分享的地方。 ZABBIX 2020 Conference CHINA Zabbix峰会 峰会是桥梁,我们一直想离用户更近一点 会是平台,IT专家、IT管理人员、社区成员和Zabbix创始团队集聚一堂,交流探索 全和在线 ZABBIX| ”之 训 仙人人 4大全 2020 国开旺Conference [宏时数据和合作伙伴 关于zabbix、zabbix中国 关于zabbix合作伙伴体系、服务体系 ZABBIX 2020 Conference CHINA 2020 Conference Software 2020 Conference 关于Zabbix、宏时数据和合作伙伴 四 1998年 Zabbix的第一行代码诞生 必 2001年 2005年 Zabbix作为产品发布 Zabbix SIA公司成立 区2020 Conference CHINAL 关于Zabbix、宏时数据和合作伙伴 as 由 0 码力 | 32 页 | 6.22 MB | 1 年前3
Traefik 在⼜拍云的应⽤和改造Traefik 在⼜拍云的应⽤和改造 陈卓 ⼜拍云系统开发⼯程师 公开课 分享内容 • Traefik 简介 • Traefik 跟 Ingress-Nginx 比较 • 我们为什么使用 Traefik • Traefik 改造之路 Traefik 简介 Traefik 简介 Edge Router Auto Service Discovery Traefik 简介 traefik 纯 go 语言实现,不依赖额外的存储配置组件 Traefik 和 Nginx 性能⽐较 https://www.loggly.com/blog/benchmarking-5-popular-load-balancers-nginx-haproxy-envoy-traefik-and-alb/ Traefik 和 Ingress-Nignx 组件⽐较 traefik Edge Router Load Balance a.com b.com New Router . . Load Balance a.com b.com Traefik 中间件 记录响应status和size 增加⼀个类似gin的 Traefik 中间件动态加载 Traefik 提供的中间件 Traefik 热更新⼆进制⽂件 Traefik 其它的⼀些改造 1.Traefik Hash算法跟0 码力 | 22 页 | 1.91 MB | 1 年前3
Bootarmor 入门教程和用户手册 0.1.0全应用可 以运行在安全 系统 Bootarmor 中。运行在 Bootarmor 系统中的安全应用的代码 和数据,操作系统中任何 权限的用户(包括 root 在内)也无法读取和访问, 无论是静态反编译,还是各种内核调试 器和应用层调试器,都无法获取安全 应用的代码和数据。 本文档适用于使用 Bootarmor 来保护自己应用程序的用户。 内容: 了解 Bootarmor 基本使用教程 支持平台 发布安全应用 btarmor 语法 描述 btarmor boot btarmor make btarmor deploy btarmor patch C 用户使用手册 默认保护模式 共享字符串和全局变量 保护内存堆 保护内存栈 保护数据文件 附录 btarmor-os Debian Packages 了解 Bootarmor Bootarmor 是以为软件产品提供绝对安全,确保软件产品发布之后,其代码不 内核,把原来的嵌入式系 统 的内核替换为 Bootarmor 提供的内核之后,就升级成为安全操作系统。 Bootarmor 可以直接保护二进制代码文件,例如可执行文件和动态库,对于 C#, Java,Python 等使用伪代码和虚拟机的语言,通过将解释器编译成为安 全应用, 间接的来进行保护。例如对 Python 脚本来说,首先将 Python 解释器 使用 Bootarmor 保护起来,然后把0 码力 | 25 页 | 30.29 KB | 1 年前3
Bootarmor 入门教程和用户手册 0.1.0Bootarmor 入门教程和用户手册 发布 0.1.0 赵俊德 2022 年 05 月 08 日 Contents 1 了解 Bootarmor 3 2 基本使用教程 5 2.1 支持平台 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.2 共享字符串和全局变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.3 保护内存堆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 i ii Bootarmor 入门教程和用户手册, 发布 0.1.0 版本 0.1 主页 https://github.com/dashingsoft/bootarmor 联系方式 jondy.zhao@gmail.com 作者 赵俊德0 码力 | 29 页 | 300.11 KB | 1 年前3
curvefs client删除文件和目录功能设计© XXX Page 1 of 15 curvefs client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除inode和dentry结构,遗留了nlink和lookup count相关的内容还未实现,是不完备的。本文首先调研moosefs,chubaofs等分布式系统,参考并设计解决上述遗留问题。 当前删除接口代码如下:© (fuse_req_t req, fuse_ino_t parent, const char *name); 其中的注释内容总结如下: 当lookup count在fuse_reply_entry和fuse_reply_create时增加1 当内核移除其inode cache时,会调用forget,此时lookup count需要减nlookup(forget的参数) 当umount时,所有lookup0 码力 | 15 页 | 325.42 KB | 6 月前3
古月《ROS入门21讲》4.编程极简基础.pdf0 码力 | 7 页 | 859.13 KB | 1 年前3
共 157 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16













