DAOS 依靠大规模分布式单端口存储。因此,每个 Target 实际上都是一个单独的失败点。

DAOS 通过在不同的容错域中提供 Target 间的冗余来实现数据和元数据的可用性和持久性。DAOS 内部的 Pool 和 Container 的元数据通过强一致性算法进行复制。然后,通过在内部透明地利用 DAOS 分布式事务机制,DAOS 对象被安全地复制或纠删码编码。本节的目的是提供有关 DAOS 如何实现容错和保证对象弹性的详细信息。

分层容错域

容错域是一组共享同一故障点的服务器,因此很可能同时发生故障。DAOS 假设容错域是分层且不重叠的。实际的层次结构和容错域成员身份必须由 DAOS 用于生成 Pool 映射的外部数据库提供。

Pool 元数据从不同的高级容错域复制到多个节点上,以获得高可用性,而对象数据则根据选定的 Object 类在不同数量的容错域上进行复制或纠删码编码。

故障检测

DAOS 服务器通过基于 gossip 的协议 SWIM 在 DAOS 系统中进行监控,该协议提供了准确、高效和可扩展的服务故障检测。系统通过定期的本地健康评估监控附加到每个 DAOS Target 上的存储,每当本地存储 I/O 错误返回到 DAOS 服务器时,将自动调用内部运行状况检查程序。此程序将通过分析 IO 错误代码和设备智能/健康数据来进行总体健康评估。如果结果是否定的,Target 将被标记为有故障的,并且到该 Target 的进一步 I/O 将被拒绝并重新路由。

故障隔离

检测到故障后,必须从 Pool 映射中排除故障 Target 或服务器(实际上是一组 Target)。此过程自动触发或由管理员手动触发。

排除后,Pool 映射的新版本将急切地推送到所有存储 Target。此时,Pool 进入降级模式,可能需要额外的访问处理(例如,用纠删码重建数据)。此时 DAOS 客户端和存储节点无限期地重试 RPC,直到它们从新的 Pool 映射中找到替代的 Target。此时,与被排除的 Target 的所有未完成的通信都将中止,在 Target 重新显式集成之前(可能仅在维护操作之后),不应再向其发送任何消息。

Pool 服务会立即向所有存储 Target 通知 Pool 映射的更改。但客户端节点不是这样,它们每次与服务器通信时都会被延迟地通知 Pool 映射无效。为此,客户端将其当前 Pool 映射版本打包到每个 RPC 中,服务器将回复当前 Pool 映射版本。因此,当 DAOS 客户端遇到 RPC 超时时,它会定期与其他 DAOS Target 进行通信,以确保其 Pool 映射始终是最新的。最终,客户端将知晓 Target 被排除并进入降级模式。

这种机制保证了全局节点排除,并且所有节点最终共享相同的 Target 有效性视图。

故障恢复

从 Pool 映射中排除后,每个 Target 将自动启动重建过程以恢复数据冗余。首先,每个 Target 创建一个受被排除的 Target 影响的本地对象列表。该列表是通过扫描由底层存储层维护的本地对象表来完成的。然后,对于每个受影响的对象,将确定新对象分片的位置,并恢复历史对象的冗余(即快照)。重建所有受影响的对象后,Pool 映射将再次更新,以将 Target 报告为失败。这标志着集体重建过程的结束,以及此特定故障的降级模式的退出。此时,Pool 已从故障中完全恢复,客户端节点现在可以读取重建的对象分片。

此重建过程在应用程序持续访问并更新对象时在线执行。

相关信息

GitHub: https://github.com/storagezhang

Emai: debugzhang@163.com

华为云社区: https://bbs.huaweicloud.com/blogs/254523

DAOS: https://github.com/daos-stack/daos

本文翻译自 https://daos-stack.github.io/overview/fault

DAOS 分布式异步对象存储|故障模型的更多相关文章

  1. 从两个模型带你了解DAOS 分布式异步对象存储

    摘要:分布式异步对象存储 (DAOS) 是一个开源的对象存储系统,专为大规模分布式非易失性内存 (NVM, Non-Volatile Memory) 设计,利用了 SCM(Storage-Class ...

  2. DAOS 分布式异步对象存储|架构设计

    分布式异步对象存储 (DAOS) 是一个开源的对象存储系统,专为大规模分布式非易失性内存 (NVM, Non-Volatile Memory) 设计,利用了SCM(Storage-Class Memo ...

  3. DAOS 分布式异步对象存储|存储模型

    概述 DAOS Pool 是分布在 Target 集合上的存储资源预留.分配给每个 Target 上的 Pool 的实际空间称为 Pool Shard. 分配给 Pool 的总空间在创建时确定,后期可 ...

  4. DAOS 分布式异步对象存储|相关组件

    DAOS 的安装涉及多个组件,这些组件可以是集中式的,也可以是分布式的. DAOS 软件定义存储 (software-defined storage, SDS) 框架依赖于两种不同的通信通道: 用于带 ...

  5. DAOS 分布式异步对象存储|事务模型

    DAOS API 支持分布式事务,允许将针对属于同一 Container 的对象的任何更新操作组合到单个 ACID 事务中.分布式一致性是通过基于多版本时间戳排序的无锁乐观并发控制机制提供的.DAOS ...

  6. DAOS 分布式异步对象存储|数据平面

    DAOS 通过两个紧密集成的平面进行运转.数据平面处理繁重的运输操作,而控制平面负责进程编排和存储管理,简化数据平面的操作. 模块接口 I/O 引擎支持一个模块接口,该接口允许按需加载服务器端代码.每 ...

  7. DAOS 分布式异步对象存储|安全模型

    DAOS 使用了一个灵活的安全模型,将身份验证和授权分离开来.它的设计令其对 I/O 的影响被降到最小. DAOS 对用于 I/O 传输的网络结构没有提供任何传输安全性保障.在部署 DAOS 时,管理 ...

  8. OSS与文件系统的对比 文件存储 块存储 对象存储

    基本概念介绍_开发指南_对象存储 OSS-阿里云  https://help.aliyun.com/document_detail/31827.html 强一致性 Object 操作在 OSS 上具有 ...

  9. go语言实现分布式对象存储系统之单体对象存储

    对象存储 基本概念 主流存储类型分为三种:块存储.文件存储以及对象存储 NAS(文件存储):Network Attached storage,提供了存储功能和文件系统的网络服务器,客户端可以访问NAS ...

随机推荐

  1. React 17 发布候选版本, 没有添加新功能

    React 17 发布候选版本, 没有添加新功能 React v17.0 Release Candidate: No New Features https://reactjs.org/blog/202 ...

  2. how to measure function performance in javascript

    how to measure function performance in javascript Performance API Performance Timeline API Navigatio ...

  3. js & anti craw & crawler spam

    js & anti craw & crawler spam demo & X-Sign , function(t, e, n) { "use strict" ...

  4. nasm astrcat_s函数 x86

    xxx.asm %define p1 ebp+8 %define p2 ebp+12 %define p3 ebp+16 section .text global dllmain export ast ...

  5. js 创建简单的表单同步验证器

    SyncValidate declare const uni: any; export interface SyncValidateOpt { [key: string]: SyncValidateF ...

  6. Winform 判断打印机是否可用,实现设置默认打印机功能

    Winform 判断打印机是否可用,实现设置默认打印机功能 http://www.cnblogs.com/zfanlong1314/p/3878563.html

  7. MySQL学习笔记(五)

    倒数第二天!冲冲冲!!! 一.索引 一个表里面可以有多个索引. 1. 索引的作用:约束与加速查找 无索引:从前到后依次查找 有索引:会为索引列创造一个额外文件(以某种格式存储).在使用索引进行查找时, ...

  8. vmware-install.pl 如何安装?

    首先在虚拟机上安装vnware-tools工具,如图(工具为vmware workstation):  成功   但是系统屏幕大小并没有适应虚拟机,所以下边这行提示很重要. 打开左侧边栏的VMware ...

  9. 研究了一下 Webpack 打包原理,顺手挣了个 AirPods Pro

    这些年,Webpack 基本成了前端项目打包构建的标配.关于它的原理和用法的文章在网上汗牛充栋,大家或多或少都看过一些.我也一样,大概了解过它的构建过程以及常用 loader 和 plugin 的配置 ...

  10. WIFI6 基本知识(一)

    什么是WI-FI6(802.11ax) Wi-Fi 6 是下一代 802.11ax 标准的简称.随着 Wi-Fi 标准的演进,WFA 为了便于 Wi-Fi 用户和设备厂商轻松了解其设备连接或支持的 W ...