块是一个有序字节,普通的一个块大小为 512 字节。基于块的存储是最常见的存储方式,比如常见的硬盘、软盘和 CD 光盘等,都是存储数据最简单快捷的设备;
解决方案
RBD 是 RADOS Block Device 的简称。RBD 块存储是 Ceph 提供的 3 种存储类型中使用最广泛、最稳定的存储类型;
原理简述
Ceph 块设备是一种精简置备模式,可以扩展大小且数据是以条带化的方式存储在一个集群中的多个 OSD 中,RBD 具有快照、多副本、克隆和一致性功能;
挂载的方式
RBD 块设备类似于磁盘,它可以挂载到物理机或虚拟机中,挂载的方式通常有以下两种;
1)Kernel 模块(简称 KRBD)方式;
2)利用 QEMU 模拟器通过 librbd 方式;
下面是 Ceph 块设备通过 Linux 内核模块或者 librbd 库与 OSD 之间交互通信的模式;
一般在为物理主机提供块设备时才使用 Kernel 的 RBD 模块,当 Ceph 块设备使用基于内核模块驱动时,可以使用 Linux 自带的页缓存(Page Caching)来提高性能;而为虚拟机(如
QEMU/KVM 类型)提供块设备时,通常是利用 Libvirt 调用 librbd 库的方式提供块设备,使用基于 librbd 的模块时可以使用 RBD 缓存(Cache)来提供性能;
特性特征
RBD 块设备用于虚拟机的系统卷、数据卷,根据 Ceph RBD 的分层(layering)功能,还可以方便实现基于 COW 的克隆技术,还有基于 RBD 的快照、导入、导出和扩容(Resizing)等功能;
应用场景
前面介绍了 RBD 基于 Kernel 和 librbd 库的使用,大多数使用场景中是基于 QEMU/KVM 通过 librbd 的方式;