Ceph client 写入osd 数据的两种方式librbd 和kernel rbd

在Ceph存储系统中,客户端(Ceph client)写入OSD(Object Storage Daemon)数据确实可以通过两种主要方式:librbd和kernel rbd。这两种方式各有特点和适用场景,下面将分别进行详细介绍。

librbd方式

  1. 概述

    librbd是Ceph提供的块存储接口的抽象,它提供了多种编程语言的接口,如C/C++、Python等。通过librbd,客户端可以直接与Ceph集群进行交互,实现对块设备的访问和管理。

  2. 工作原理

    当客户端使用librbd方式写入数据时,它不会将rbd设备映射到内核中,而是直接调用librbd提供的接口。librbd会对要写入的二进制块进行分块,每块默认大小为4MB,并给每个块命名,成为一个对象。然后,librbd会调用librados(Ceph的底层对象存储接口)将对象写入Ceph集群。librados会根据CRUSH算法计算出对象所对应的主OSD,并与该OSD建立TCP/IP连接,发送写入请求。主OSD负责将数据写入其磁盘,并同时向一个或多个次OSD写入副本,以保证数据的高可用性和冗余性。

  3. 特点与优势

    • 不需要在客户端产生块设备文件,直接通过接口访问和管理块设备。
    • 提供了灵活的编程接口,适用于多种开发语言和场景。
    • 支持数据的并发写入和高效管理。

kernel rbd方式

  1. 概述

    kernel rbd是另一种使用Ceph块存储的方式,它将rbd设备映射到内核中,形成一个虚拟的块设备。这个虚拟块设备与其他通用块设备一样,可以使用标准的块设备操作进行管理。

  2. 工作原理

    在kernel rbd模式下,客户端首先会创建一个rbd设备,并将其映射到内核中。映射成功后,客户端可以看到一个虚拟的块设备文件(如/dev/rbd0)。然后,客户端可以对这个块设备文件进行格式化、挂载等操作,就像操作普通的块设备一样。当客户端向这个块设备写入数据时,数据会通过内核的块设备驱动程序传递到librbd和librados,最终写入到Ceph集群中的OSD上。

  3. 特点与优势

    • 提供了与标准块设备兼容的接口,方便现有应用系统的迁移和集成。
    • 适用于需要直接操作块设备的场景,如虚拟机磁盘、数据库存储等。
    • 借助内核的块设备驱动程序,可以提供更好的性能和稳定性。

总结

librbd和kernel rbd是Ceph客户端写入OSD数据的两种主要方式。librbd提供了灵活的编程接口和高效的数据管理功能,适用于多种开发语言和场景;而kernel rbd则提供了与标准块设备兼容的接口,方便现有应用系统的迁移和集成。在选择使用哪种方式时,需要根据具体的应用场景、性能需求以及开发人员的技能水平进行综合考虑

相关推荐
我爱云计算3 小时前
K8S详解(5万字详细教程)
linux·运维·云原生·容器·kubernetes
2301_794333915 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
荣光波比6 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
绿箭柠檬茶9 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
工藤新一¹10 小时前
Linux —— 虚拟进程地址空间
linux·运维·服务器·c/c++·虚拟进程地址空间
Aspiresky10 小时前
浅析Linux内核scatter-gather list实现
linux·dma·scatter/gather
奔跑吧 android10 小时前
【linux kernel 常用数据结构和设计模式】【数据结构 3】【模拟input子系统input_dev和input_handler之间的多对多关系】
linux·数据结构·input·kernel·input_dev·input_handler·input_handle
再难也得平11 小时前
Linux初级篇
linux·运维·服务器
小猫挖掘机(绝版)11 小时前
通过tailscale实现一台电脑上vscode通过ssh连接另一台电脑上的VMware Linux 虚拟机
linux·windows·vscode·ubuntu·ssh
ajassi200012 小时前
开源 C++ QT Widget 开发(十三)IPC通讯--本地套接字 (Local Socket)
linux·c++·qt·开源