Native Rest Block Driver

https://blueprints.launchpad.net/cinder/+spec/restblock-driver

我们 Scality 正在开发一个 Linux 原生内核驱动:Rest Block Driver。(它在 github 上,但目前是私有的,因为我们希望在发布之前达到一定的程度。)这是一个能够与基于 REST 的存储服务通信(我们计划最终支持多个 REST 后端),以便将该存储中的文件作为主机 Linux 上的原生块设备连接的内核驱动。关键点之一是,它允许基于 REST 的卷存储利用 Linux 的块驱动程序缓存。

问题描述

作为一家公司,我们有兴趣为我们的客户提供 Openstack 集成,因此,我们希望为 cinder 提供一个新的驱动程序,以驱动和利用上述 Rest Block Driver。

此块驱动程序目前提供以下简单功能

  • 镜像服务器列表管理(故障转移和负载均衡)

  • 配置(创建/扩展/删除)

  • 自动附加/分离卷(在 cinder 中使用非常实用)

此外,我们计划在不久的将来增加一些功能

  • 存储池管理,以从不同的存储池提供卷。每个池将拥有自己的镜像列表供选择。

  • 真正的故障转移实现

  • 多后端支持(用于多种 REST 样式的协议实现,我们的是一个 CDMI 实现)

  • 原生快照管理

用例

提议的变更

Rest Block Driver 主要通过 /sys 文件系统进行控制。因此,大多数控制操作将使用 process utils 模块实现。对于通用功能实现,我们计划支持 Cinder 驱动程序所需的多个功能,如下所示

  • 配置(创建/扩展/删除):由内核驱动程序原生支持

  • 设置时自动附加卷:由内核驱动程序原生支持

  • 快照(创建/删除):通过 LVM 工具类/函数支持

  • 从镜像复制:通过 image_utils 支持

  • 卷克隆(从卷或从快照):通过 copy utils 支持

请注意,这反映了内核驱动程序的当前状态,可能会发生变化。

将来它将提供一种方式来从驱动程序本身管理快照,但目前尚未支持。因此,驱动程序将使用 lvm 代码工具来管理精简快照配置并支持由我们的 Rest Block Driver 暴露的卷的快照。

备选方案

数据模型影响

REST API 影响

安全影响

由于此驱动程序通过 /sys 文件系统进行控制,因此需要管理员权限才能进行控制(即,读取/写入 /sys 文件)。

通知影响

其他最终用户影响

性能影响

其他部署者影响

由于这是一个第三方提供的驱动程序,因此意味着首先需要设置所述软件。除此之外,只会添加新的驱动程序特定配置值。

开发人员影响

实现

负责人

主要负责人

<dav.pineau@gmail.com>

其他贡献者

工作项

提供一个 cinder 驱动程序,利用 LVM 处理未实现的功能,并利用驱动程序本身处理原生支持的功能。

依赖项

测试

该驱动程序不会对现有的 API 和行为进行任何修改。因此,根据我们的理解,不需要新的 tempest 测试。

由于此驱动程序依赖于供应商特定的软件,因此 gate 显然无法测试该驱动程序。我们目前正在为我们以前的驱动程序(Scality Sofs)和这个新的驱动程序设置第三方 CI 测试。

文档影响

参考资料