LiSheng's blog LiSheng's blog
首页
笔记
个人简历
随笔集
GitHub (opens new window)
首页
笔记
个人简历
随笔集
GitHub (opens new window)
  • golang

  • cplus

  • leetcode

  • 存储技术

    • 学习大纲
    • 命令ls的执行过程
    • mmap && write
    • 命令write的执行过程
    • 块
    • VFS层
    • Ceph

    • Daos

      • Daos介绍
        • Daso介绍
          • 1. 为什么现在大数据时代下的元数据比例会增加?
          • 2. 为什么元数据比例增加会影响系统性能?
          • 3. 为什么 现代现代I/O工作负载特点如随机访问、小规模读写操作、高频次和高并发,会导致数据错位和碎片化问题?
          • 4. 数据错位和碎片化问题的影响包括哪些?
          • 5. DAOS如何实现细字节粒度I/O?
          • 6. DAOS 细字节粒度I/O提供了有哪些优势?
          • 7. 最后,DAOS如何解决传统io栈性能瓶颈的问题?
      • Daos组件
      • SPDK Blob
  • 分布式系统

  • 计算机网络

  • Linux操作系统

  • Redis

  • 其他

  • 笔记
  • 存储技术
  • Daos
lisheng
2024-10-09
目录

Daos介绍

# Daso介绍

DAOS(Distributed Asynchronous Object Storage,分布式异步对象存储)。现代I/O工作负载特点是元数据比例不断上升、数据错位和碎片化。传统的存储系统在面对这些工作负载时延迟较大,并存在数据对齐的限制。DAOS基于持久内存技术以及高性能集成化网络,设计了一套新的存储体系结构,将跨架构分布的SCM和NVMe存储聚合到全局可访问的对象地址空间中,还提供了数据的一致性、可用性和弹性保证。DAOS通过其事件驱动的架构,支持高可用性和容错能力,同时优化了元数据的处理,实现了更加细粒度的随机访问。能够支持大规模分布式存储,同时保持低延迟和高带宽的访问性能,可满足大数据分析、高性能计算和机器学习等现代数据密集型应用的需求。

上面过于抽象,大白话展开解释一下:DAOS提出就是因为原有的分布式存储性能不行,为啥不行呢?原因有二,一是现在的大数据时代下,其数据类型更加复杂,元数据的比例增大了,且更加碎片化;二是新的存储硬件SSD、NVme的读写性能提高了很多,瓶颈从原来的HDD硬件读写 转移到 Linux io栈软件处理。接下来使用几个问题来完善解释:

# 1. 为什么现在大数据时代下的元数据比例会增加?

  • 数据规模扩展:海量数据需要更多元数据来标注、索引和定位,确保数据管理效率。
  • 复杂结构管理:复杂数据结构如图、文档数据库等,依赖元数据来维护结构信息。
  • 数据治理强化:合规性和安全性要求促使元数据记录访问权限、审计信息等。
  • 高级管理功能:备份、恢复、压缩、加密等操作依赖元数据来实现自动化和智能化。
  • 系统监控:系统复杂性提升,元数据用于监控状态和配置,保障系统稳定运行。

# 2. 为什么元数据比例增加会影响系统性能?

  • 存储开销:元数据本身占用存储空间。随着比例增加,存储需求上升,可能导致存储成本增加,特别是在大规模数据集中,元数据的存储开销变得显著。
  • 内存压力:元数据常驻内存以提高访问速度。元数据比例增加会占用更多内存资源,可能引发内存瓶颈,影响系统整体性能。
  • 处理延迟:处理元数据(如查询、更新)需要CPU周期。元数据量增加,处理这些操作的延迟也随之增加,影响系统响应时间。
  • 网络负载:在分布式系统中,元数据的同步和传输增加网络通信量。大量元数据传输可能导致网络拥塞,影响数据读写性能。
  • 缓存效率:缓存机制依赖于元数据来确定哪些数据应被缓存。元数据比例增加可能导致缓存命中率下降,增加磁盘I/O操作,降低性能。
  • 系统复杂性:元数据管理变得更加复杂,增加了系统设计和维护的难度。系统复杂性上升可能导致性能优化困难,甚至引入新的性能瓶颈。

# 3. 为什么 现代现代I/O工作负载特点如随机访问、小规模读写操作、高频次和高并发,会导致数据错位和碎片化问题?

  • 随机访问模式:现代应用往往采用随机访问模式进行数据读写,这与传统的顺序访问模式不同。随机访问导致数据在存储介质上的分布不连续,随着时间的推移,数据碎片化问题愈发严重。

  • 小规模读写操作:现代I/O操作倾向于处理小块数据,这些操作频繁且分散。小规模读写会在存储介质上留下许多未被充分利用的空间,导致存储空间碎片化。

  • 高频次操作:频繁的I/O操作增加了数据在存储介质上的写入次数,每次写入都可能在不连续的块上,进一步加剧了数据的碎片化。

  • 高并发访问:在多用户或多任务环境中,高并发I/O操作可能导致不同数据块的竞争写入,使得数据分布更加无序,增加了错位和碎片化的可能性。

  • 动态数据增长和删除:现代应用中的数据经常发生增删改操作,新数据可能写入到旧的删除数据留下的空间中,而这些空间往往分散在不同的位置,导致数据错位。

  • 文件系统设计:许多现代文件系统优化了随机访问性能,但这也可能导致碎片化问题。例如,文件系统可能会为了优化小文件写入速度而分配不连续的磁盘块。

  • 固态存储的特性:固态存储(SSD)的写入操作具有特定的擦写周期,频繁的随机写入可能导致SSD内部管理单元(如闪存转换层FTL)的碎片化,从而影响整体性能。

# 4. 数据错位和碎片化问题的影响包括哪些?

  • 性能下降:读取碎片化的数据需要更多的寻址时间,增加了I/O延迟,降低了系统性能。

  • 存储空间浪费:碎片化导致可用存储空间不能被有效利用,降低了存储效率。

  • 写入放大:在SSD中,碎片化可能导致写入放大效应,缩短存储介质的使用寿命。

# 5. DAOS如何实现细字节粒度I/O?

  • SSD、NVme硬件支持字节粒度访问。

  • DAOS使用对象存储模型,其中每个数据单元都是一个对象,可以独立地访问和管理。这种模型天然支持细粒度的数据操作,因为它允许直接对单个对象进行读写,而不必像文件系统那样处理整个文件。

  • DAOS设计为尽可能在内存中进行数据处理。这意味着即使是细粒度的I/O操作,也可以通过内存访问快速完成,减少了访问持久存储介质的次数。

  • DAOS利用内存映射技术,将对象的内存地址直接映射到用户空间的地址,从而减少了数据拷贝操作,提高了细粒度I/O的效率。

  • DAOS采用非阻塞I/O模型,这意味着即使在进行细粒度I/O操作时,应用程序也可以继续执行其他任务,从而提高了整体的系统性能。

  • DAOS支持直接访问存储技术,允许应用程序绕过文件系统缓存,直接在持久存储上执行细粒度的I/O操作。

  • DAOS使用远程直接内存访问(RDMA)技术,这是一种网络协议,允许在网络上直接在两个应用程序的内存之间传输数据,从而提供了低延迟和高带宽的数据传输,这对于细粒度I/O操作尤为重要。

  • DAOS内部使用了细粒度的数据结构来管理元数据和对象数据,这有助于快速定位和处理小规模的数据单元。

  • 为了支持高并发环境下的细粒度I/O,DAOS实现了高效的并发控制机制,如乐观并发控制或细粒度锁,以减少争用和提高并发性能。

  • DAOS的数据管理策略可以扩展以处理大量的小对象,通过元数据索引和高效的数据分布算法来优化细粒度I/O操作。

# 6. DAOS 细字节粒度I/O提供了有哪些优势?

  • 细粒度I/O允许应用仅访问所需的数据部分,而不是整个数据集,这减少了不必要的数据读取,提高了数据访问效率。

  • 通过减少传输的数据量,细粒度I/O降低了网络带宽的需求和存储介质的读写次数,从而减少了网络和存储的开销。

  • 细粒度I/O使得应用程序可以更有效地使用内存,因为它允许更精细的数据缓存和管理,减少了内存浪费。

  • 细粒度I/O可以支持更高的并发访问,因为多个操作可以独立地访问不同的数据部分,减少了锁竞争和数据访问冲突。

  • 对于需要频繁读写小数据块的应用,细粒度I/O可以显著提高性能,因为它减少了每次操作的数据处理开销。

  • 细粒度I/O能够更好地支持异构数据访问模式,如随机访问和顺序访问,使得不同类型的应用可以更有效地利用存储资源。

  • 细粒度I/O有助于减少数据冗余,因为应用程序可以精确地更新或修改所需的数据部分,而不是复制整个数据集。

  • 细粒度I/O可以与更精细的元数据管理和数据保护机制相结合,提高数据一致性和系统的可靠性。

  • 细粒度I/O能够更好地适应不同的工作负载,无论是大数据分析、事务处理还是高性能计算,都能提供灵活的数据访问。

  • 细粒度I/O是许多高级数据管理功能的基础,如版本控制、数据快照和高级数据恢复策略。

# 7. 最后,DAOS如何解决传统io栈性能瓶颈的问题?

  • 直接与用户空间的应用程序交互,避免了传统I/O栈中多次上下文切换和数据复制的开销。它减少了从应用层到存储介质的路径长度,从而降低了延迟。

  • 异步I/O模型,允许应用程序发起I/O操作后继续执行,无需等待I/O完成。

  • 使用快速的非易失性内存(如NVMe SSD)作为数据暂存区,来加速数据的读写操作。

  • 细粒度的数据访问,这意味着应用程序可以只读取或写入所需的数据部分,而不是整个数据块,这减少了不必要的I/O操作。

  • 高度并发,减少了锁竞争和数据访问冲突,使得多个客户端可以同时高效地访问存储系统。

  • 零拷贝技术直接在用户空间和存储设备之间传输数据,减少了CPU和内存资源的消耗。

  • DAOS利用远程直接内存访问(RDMA)技术,实现了高带宽、低延迟的网络通信,进一步减少了网络传输对I/O性能的影响。

编辑 (opens new window)
上次更新: 2024/10/09, 20:02:44
ceph分布式存储-PG和PGP的区别
Daos组件

← ceph分布式存储-PG和PGP的区别 Daos组件→

最近更新
01
ceph分布式存储-对象存储(RGW)搭建
10-27
02
ceph分布式存储-集群客户端连接
10-27
03
ceph分布式存储-管理crushmap
10-27
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式