Libvirt: 支持通过SMB挂载卷

https://blueprints.launchpad.net/nova/+spec/libvirt-smbfs-volume-support

目前,Libvirt卷驱动程序支持诸如Gluster和NFS等网络附加文件系统。此蓝图的目的是添加对挂载托管在SMB共享上的卷的支持。

问题描述

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

SMB 3带来了诸如透明故障转移、使用多个网卡进行多通道、加密通信和RDMA等功能。较新版本的Samba正在获得对SMB 3功能的更好支持,以及对Active Directory成员资格的支持。

用例

部署者将能够将以SMB共享上的虚拟磁盘形式导出的块存储附加到实例。

项目优先级

提议的变更

将添加一个新的卷驱动程序以支持挂载托管在SMB共享上的卷。该卷驱动程序将与NFS卷驱动程序具有相似的工作流程。

SMB卷驱动程序将使用在卷连接信息中指定的凭据和其他标志来挂载托管卷的SMB共享。

此功能将向后兼容,支持旧版本的SMB以执行简单的任务。它将支持使用任何类型的SMB共享,包括

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

  • 使用Samba的Linux SMB共享;

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

备选方案

数据模型影响

REST API 影响

安全影响

共享凭据将在卷连接信息中解析并在挂载SMB共享时使用。

此外,驱动程序将支持Active Directory集成(只要Samba版本支持),以便能够使用AD凭据。

请注意,由于SAMBA不支持SELinux标记,为了能够从托管在SMB共享上的卷启动,必须启用virt_use_samba SELinux选项。这具有安全隐患,因为VM磁盘镜像之间将不再有任何安全隔离。

通知影响

其他最终用户影响

性能影响

其他部署者影响

部署者将能够配置SMB共享将挂载到的路径,以及设置挂载标志。

此外,由于Libvirt尝试更改卷的所有者,因此必须将Libvirt-qemu uid和gid指定为挂载标志以支持附加卷。

为了支持SMB3和AD集成,需要Samba 4.0或更高版本。请注意,此驱动程序支持任何版本的Samba,但由于旧版本不支持AD集成,因此您将无法使用基于AD的身份验证。此外,在这种情况下,您必须确保您尝试访问的SMB服务器对SMB协议版本没有限制,能够回退到旧版本。

开发人员影响

实现

负责人

主要负责人

<lpetrut@cloudbasesolutions.com>

其他贡献者

<gsamfira@cloudbasesolutions.com>

工作项

添加支持挂载SMB共享的功能。

提供对本地共享的支持。

依赖项

测试

此功能应使用已有的SMB Cinder卷驱动程序进行测试。现有的Tempest测试以及相应的单元测试目前足以测试此功能。

虽然正在考虑CI,但目前Tempest测试将定期针对此场景运行。

文档影响

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

参考资料

Cinder SMB驱动程序蓝图:https://blueprints.launchpad.net/cinder/+spec/smbfs-volume-driver