【DAOS】daos client和dfuse 是什么?

目录

什么是daos client

dfuse 是什么

dfuse 和 FUSE 之间的关系


什么是daos client

(参加:DAOS: A Scale-Out High Performance Storage Stack for Storage Class Memory | SpringerLink)

DAOS Client是一个与应用程序集成的库。

从堆栈分层的角度来看,DAOS是一个client-server模型的分布式存储系统。DAOS Client是一个与应用程序集成的库,应用程序调用daos client 的.so库与daos server 交互。DAOS Client通过DAOS的lib库提供的的数据模型可以直接集成在将在接下来介绍的所有传统数据格式和中间件库中。

4.1 DAOS数据模型

DAOS数据模型有两种不同类型的对象:

  • 数组对象(Array objects),允许应用程序表示一个多维数组;
  • 键/值存储对象(key/value store objects),原生支持常规KV I/O接口和多层次KV接口。

KV与数组对象都具备版本化数据功能,使应用程序能够做出破坏性更改并回滚到数据集的旧版本。

DAOS对象始终属于一个称为DAOS容器的域(个人理解:DAOS容器可以理解为一个命名空间),每个容器是一个私有的对象地址空间,可以独立于存储在同一个DAOS池中的其他容器进行事务性修改[1](图4)。

应用程序可以通过过多个I/O中间件库访问这些DAOS容器,有了中间件,应用程序就几乎不需要(有时甚至完全不需要)更改代码。

DAOS提供了丰富、高效的API,中间件库和应用程序可以利用这些API进行构建。由于这些在DAOS之上实现的中间件I/O库往往是遵循POSIX规范(个人理解:POSIX是符合UNIX风格的,可移植的API规范)的,所以所有建立在POSIX之上的库都得到支持。但与此同时,I/O中间件也可以移植到DAOS上直接工作,绕过具有若干缺点的POSIX序列化步骤,这些缺点在此文档中将不展开讨论。基于DAOS库实现的I/O中间件库包括POSIX、MPI-I/O和HDF5。未来将有更多I/O中间件和框架移植过来直接使用原生的DAOS存储API。

4.2 DAOS对POSIX的支持

(个人理解:POSIX是符合UNIX风格的,可移植的API规范)

POSIX中间件像任何其他I/O中间件一样,构建在DAOS后端API之上。一个POSIX命名空间可以在DAOS容器中封装,并由应用程序挂载到其文件系统树中。

例如libdfs 中间件,在图5中,在dfuse/interception(dfuse/拦截库)和libdaos之间有一层,称为libdfs。

libdfs层直接在DAOS API之上提供POSIX风格的API。它在原生的libdaos库上提供了文件和目录抽象。在libdfs中,一个POSIX命名空间被封装在容器中。容器内的对象 映射成文件和目录,因此这个命名空间容器可以挂载到Linux文件系统树中。dfuse守护进程与libdfs链接,所有来自FUSE的调用都将通过libdfs,然后通过libdaos,后者可以访问由DAOS服务器暴露的远程对象存储。

此外,如前所述,libdfs可以通过多个接口,包括SPARK、MPI-IO和HDF5等框架,直接向终端用户提供。当存在作为I/O中间件插件的shim层时,用户可以直接将应用程序与libdfs链接。这种方法是透明的,不需要更改应用程序。

dfuse 是什么

dfuse 是一个开源软件项目,它充当一个用户空间文件系统,用于将特定的存储后端(如 DAOS,Distributed Asynchronous Object Storage)映射到Linux操作系统的标准文件系统接口上。换句话说,dfuse允许应用程序和用户像操作常规文件系统一样来访问和交互那些不直接提供POSIX接口的存储系统。

在DAOS的上下文中,dfuse通过将DAOS的高级数据布局和分布特性桥接到POSIX接口,使得开发者和用户能够在不了解DAOS复杂性的情况下利用其高性能和规模化的存储能力。这意味着用户可以使用熟悉的命令行工具(如ls、cp)、应用程序或者库(通过open、read、write等系统调用)来访问存储在DAOS中的数据,而不需要修改这些工具或应用程序以直接支持DAOS API。

dfuse通过即时转换这些POSIX调用为DAOS API调用来实现这一目标,从而为用户提供了一个无缝的、高性能的存储访问体验。这种技术通常涉及到FUSE(Filesystem in Userspace)机制,FUSE允许在用户空间中实现文件系统,而不是内核空间,降低了开发和部署自定义文件系统的复杂度。因此,dfuse不仅简化了DAOS的采用过程,也为研究人员和工程师提供了一个实验新存储特性和优化的灵活平台。

dfuse 和 FUSE 之间的关系

dfuse 和 FUSE 之间的关系在于它们都与文件系统和存储技术有关,但它们指向不同的概念和层级。

FUSE(Filesystem in Userspace)是一个软件架构,它允许用户在Linux和其他类UNIX操作系统中创建自己的文件系统,而无需编写内核模块。FUSE使得开发人员能够更容易地实现在用户空间中运行的文件系统,然后通过一个轻量级的内核模块与系统的核心文件系统接口对接。这样,即使没有对操作系统底层的深入理解或权限,也能设计和实现定制化的文件系统功能。

dfuse,则是基于FUSE架构的一个具体实现或应用程序。正如之前提到的,dfuse特别与DAOS(Distributed Asynchronous Object Storage)系统相关联,它作为一个桥梁,将DAOS这样的存储后端转化为可以在Linux系统上像常规文件系统那样使用的接口。dfuse利用了FUSE提供的框架,实现了将DAOS的分布式对象存储功能映射到POSIX兼容的文件系统调用上,从而让用户和应用程序能够以熟悉的文件操作方式来访问和管理DAOS存储的数据。

简而言之,FUSE是一个通用的框架,而dfuse是一个基于FUSE实现的、针对特定存储技术(如DAOS)的文件系统适配层。类似dfuse的还有NFS-Ganesha。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/648171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

堆(建堆算法,堆排序)

目录 一.什么是堆? 1.堆 2.堆的储存 二.堆结构的创建 1.头文件的声明: 2.向上调整 3.向下调整 4.源码: 三.建堆算法 1.向上建堆法 2.向下建堆法 四.堆排序 五.在文件中Top出最小的K个数 一.什么是堆? 1.堆 堆就…

【docker】仓库harbor的部署

harbor介绍 Harbor 是一个用于存储和管理 Docker 镜像的开源仓库。它提供了一系列的功能,比如用户管理、访问控制、镜像管理、日志审计和安全扫描等。Harbor 可以作为私有仓库来使用,也可以与公有仓库(如 Docker Hub)集成使用。 …

03.tomcat环境搭建

上传软件包 JDK #man bash #PATH 存放命令的路径 ## ls #加入环境变量&#xff0c;注意&#xff1a;EOF的单引号的意思就是追加到文件中的内容带有变量的不做解析&#xff0c;否则会被解析 cat >>/etc/profile <<EOF export JAVA_HOME/application/jdk export PAT…

华为OD机试 - 寻找最富裕的小家庭(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

Python 开心消消乐

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

M00238-固定翼无人机集群飞行仿真平台MATLAB完整代码含效果

一个小型无人机集群仿真演示平台&#xff0c;使用matlab和simulink搭建。 给出的例子是5架的&#xff0c;当然如果你愿意花时间&#xff0c;也可以把它扩展到10架&#xff0c;20架甚至更多。 输入&#xff1a;5架飞机的规划路径 输出&#xff1a;每架无人机每个时刻的13个状态量…

【模拟面试问答】深入解析力扣164题:最大间距(桶排序与排序方法详解)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

【C++】从零开始构建红黑树

送给大家一句话&#xff1a; 日子没劲&#xff0c;就过得特别慢&#xff0c;但凡有那么一点劲&#xff0c;就哗哗的跟瀑布似的拦不住。 – 巫哲 《撒野》 &#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b;&#x1f30b; ⛰️⛰️…

指针(6)

1. sizeof和strlen的对比 1.1 sizeof 在学习操作符的时候&#xff0c;我们学习了 sizeof &#xff0c; sizeof 计算变量所占内存内存空间大小的&#xff0c;单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是使⽤类型创建的变量所占内存空间的大小。 sizeof 只…

leetcode:计数质数

class Solution { public:// 如果 x 是质数&#xff0c;那么大于 x 的 x 的倍数 2x,3x… 一定不是质数int countPrimes(int n) {vector<int> isPrime(n, 1);int ans 0;for (int i 2; i < n; i) {if (isPrime[i]) {ans 1;if ((long long)i * i < n) {for (int j …

Linux内核重置root密码

Ubuntu 首先重新启动Ubuntu系统&#xff0c;然后快速按下shift键&#xff0c;以调出grub启动菜单在这里我们选择第二个&#xff08;Ubuntu高级选项&#xff09;&#xff0c;选中后按下Enter键 选择最高的Linux内核版本所对应的recovery mode模式&#xff0c;按e键编辑启动项 在…

C语言 | Leetcode C语言题解之第113题路径总和II

题目&#xff1a; 题解&#xff1a; int** ret; int retSize; int* retColSize;int* path; int pathSize;typedef struct {struct TreeNode* key;struct TreeNode* val;UT_hash_handle hh; } hashTable;hashTable* parent;void insertHashTable(struct TreeNode* x, struct Tr…

数据结构——链表——模板类实现双向链表——先完成再完美——持续更

链表&#xff1a;概念&#xff0c;实现&#xff0c;《数据结构》这里实现是基于模板的 C语言基础&#xff0c;指针&#xff0c;引用。模板。《CPrimer》有些进阶用法放在语言学习的目录 LeetCode应用&#xff0c;会更新在LeetCode150&#xff0c;目前这个系列先暂停&#xff0c…

【PB案例学习笔记】-09滚动条使用

写在前面 这是PB案例学习笔记系列文章的第8篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee…

云界洞见——基于移动云云数据库MySQL应用实践

目录 简介1 新手入门1.1 创建MySQL实例1.2 公网连接MySQL实例 2 操作指南2.1 创建数据库2.2 数据备份设置2.3 日志管理2.4 监控告警2.5 代码审计 3 应用场景4 总结 如今&#xff0c;大型企业如金融企业和银行等&#xff0c;在下一代的微服务架构转型要求下&#xff0c;需要基础…

C++ prime 第五版 第14章 重载运算与类型转换

一、基本概念 重载的运算符是具有特殊名字的函数&#xff1a;它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样&#xff0c;重载的运算符也包含返回类型、参数列表以及函数体。 我们不能为内置类型的运算对象重定义运算符。对于一个运算符函数来说&…

【Week-R1】RNN实现心脏病预测,基于tensorflow框架

文章目录 一、什么是RNN&#xff1f;二、准备环境和数据2.1 导入数据 三、构建模型四、训练和预测五、其他&#xff08;1&#xff09;sklearn模块导入报错&#xff1a;ModuleNotFoundError: No module named sklearn&#xff08;2&#xff09;优化器改为SGD&#xff0c;accurac…

MySQL--备份恢复

目录 一、备份恢复的工作职责 1.备份的时间周期 2.备份的方式 3.恢复方案 4.检查备份 5.定期恢复演练 6.故障恢复策略 7.迁移升级 二、逻辑备份工具--mysqldump 1.介绍 2.使用场景 3.mysqldump命令的参数介绍 1&#xff09;全备&#xff1a; 2&#xff09;单库或…

四轮麦轮平衡车四个轮子安放位置要求,以及编码器测速注意事项(强调,否则无法正常平移)——基于STM32F103ZET6

轮子推荐ABBA&#xff0c;当然BAAB也可以 如图安放&#xff1a; 这两种安防位置可以实现平移效果 若要实现平移则需要先实现PID控制平衡&#xff0c;这里用到520编码电机&#xff0c;相较于370电机他的动力更足&#xff0c;在调节PID时能节约不少时间而且更加容易。 需要注意…

基于离散小波变换(DWT)的心电信号伪影去除及心电信号PQRST波检测(MATLAB R2018)

心电信号是心脏神经&#xff0c;肌肉组织电化学活动的表现形式。这些电化学活动使心脏内部产生一系列非常协调的电刺激脉冲&#xff0c;分别使心房&#xff0c;心室的肌肉细胞兴奋&#xff0c;从而有节律的舒张和收缩。这些生物电活动在体表的不同部位形成不同的电位差变化&…