SMB 卷驱动

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

目前,Cinder 卷驱动利用网络附加存储文件系统,例如 GlusterFS 或 NFS。此蓝图的目的是添加一个支持基于 SMB 的卷后端的卷驱动。

问题描述

SMB 是一种广泛使用的协议,尤其是在 Microsoft 环境中。其简单性以及 SMB 3 引入的重大改进使得这种类型的卷后端成为一个很好的替代方案。

SMB 3 带来了诸如透明故障转移、使用多个网卡的通道、加密通信和 RDMA 等特性。

最近版本的 Samba 改进了对 SMB 3 协议的支持,以及 Active Directory 集成。

此驱动将向后兼容,支持旧版本的 SMB。它将支持使用任何类型的 SMB 共享,包括

  • 从 Scale-Out 文件服务器到基本的 Windows 共享;

  • Linux Samba 共享;

  • 供应商特定的硬件导出 SMB 共享。

用例

提议的变更

提议的驱动将使用 Samba 以安全的方式挂载和使用 SMB 共享,支持基于 Active Directory 的身份验证。

此驱动将包含 Juno 版本所需的所有功能。它将与其他网络附加文件系统驱动程序具有相似的流程,将托管在 SMB 共享上的镜像作为卷进行管理。

它将支持 raw、qcow2、vhd 和 vhdx 镜像。即便如此,因为它将使用 qemu-img 进行镜像相关操作,因此由于 qemu-img 的限制,尚未支持 vhd 和 vhdx 格式的快照。

快照管理将以类似于 Gluster 驱动程序的方式进行,使用一个附加的“.info”文件,其中包含快照 ID 与其实际路径之间的映射。这是必需的,因为路径可能会随着时间的推移而改变(例如,当从链中删除快照时,备份文件将被更改)。

将为 Windows 环境提出另一个基于此的驱动程序,完全支持 vhd/vhdx。

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

驱动程序将定期确保选择的共享已挂载,并检索诸如可用空间或已分配的总空间等信息。

某些卷相关操作需要同步。

为了使用本地共享,共享路径将从 Samba 配置文件中读取。

其他部署者影响

用户将提供一个 SMB 共享列表,卷可以在其上驻留。此列表将放置在 Cinder 配置文件中配置的路径上的文件中。此共享列表可以包含 SMB 挂载选项,例如标志或凭据。

配置文件还将包含 Samba 配置文件的路径。还可以配置超额订阅和已用空间比率。

用户将能够选择将用作卷类型的类型,以及选择是否使用稀疏文件或 qcow2 文件而不是原始文件。根据可用的 qemu-img 版本,vhd 和 vhdx 格式也可能被使用。

卷类型可以在创建卷时作为额外的规范进行解析。

开发人员影响

实现

负责人

主要负责人

<lpetrut@cloudbasesolutions.com>

其他贡献者

<gsamfira@cloudbasesoltions.com>

工作项

提供支持在 remotefs 客户端中挂载 SMB 共享,以及使用本地共享。

获取 SMB 共享状态,例如可用空间或已分配空间。

提供使用托管在 SMB 共享上的镜像的卷相关操作支持。

依赖项

Libvirt smbfs 卷驱动蓝图:https://blueprints.launchpad.net/nova/+spec/libvirt-smbfs-volume-support

Hyper-V smbfs 卷驱动蓝图:https://blueprints.launchpad.net/nova/+spec/hyper-v-smbfs-volume-support

测试

Cinder CI 将测试 SMB 相关功能。

文档影响

将记录使用 SMB 后端的内容。

参考资料

Samba wiki 页面:https://wiki.samba.org/index.php/Main_Page