RBD 上游更新

yehudasa

QEMU-RBD

QEMU-RBD 块设备已被合并到 QEMU 项目的上游。QEMU-RBD 最初由 Christian Brunner 创建,与 Linux 原生 RBD 驱动程序二进制兼容。它允许创建在 RADOS 上条带化的 QEMU 块设备——Ceph 分布式对象存储。与相应的 Linux 设备驱动程序一样,QEMU 驱动程序可以获得所有 RBD 的优势:稀疏配置、可靠性、可扩展性和快照!

libvirt

libvirt 是一个虚拟化库,允许使用单个 API 控制虚拟机(例如基于 QEMU 的虚拟机,但也包括其他虚拟机)。已经围绕它构建了许多工具(例如 virsh、virt-manager 等),并且通过该库添加配置 RBD 设备的能力使 RBD 在现有工具中工作。在 Sheepdog 项目的帮助下(他们最近也已将他们的 QEMU 块设备合并到 QEMU 上游),我们能够将 RBD(以及 Sheepdog,以及 nbd)支持合并到 libvirt 上游。基本上,添加了一种新的“网络”磁盘类型,目前这种磁盘有 3 种可能的类型:nbd、sheepdog 或 rbd。对于每种类型,您可以指定主机名。例如,对于 rbd,主机名将包含 Ceph 集群监视器(s) 的 IP 地址和 TCP 端口。

libvirt 对 Linux 原生内核 rbd 驱动程序的支持也在进行中,这将允许 rbd 与 libvirt 支持的非 qemu 虚拟机一起使用(例如 Xen、VirtualBox、VMware 等)

Linux 内核

正如我们之前发布的那样,RBD 原生 Linux 设备已被合并到即将发布的 Linux 内核版本(2.6.37)中,该版本将在几周内发布。自最初合并以来,我们修改了 RBD sysfs 接口,使其更好地符合 sysfs 要求:最初,RBD 驱动程序基于另一个 Linux 块设备,名为 osdblk,并继承了其 sysfs 接口,该接口是单片的,并为所有设备的每个配置选项保留了一个 sysfs 条目。这样做既不正确也不繁琐,因为我们需要为每个操作指定设备 ID。新的接口将 RBD sysfs 子目录移动到更好的位置(/sys/bus/rbd),并为每个设备创建一个子目录,以便将单个设备的所有操作分组在一起,并且无需指定设备名称。我们还在设备下为每个快照创建一个子目录,该子目录包含其所有信息,并且删除了一个大列表条目。

总而言之,在发布周期深入引入这是一个很大的变化,但我们认为这是值得的。