目录
什么是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。