Windows SMB 卷驱动

描述

Windows SMB 卷驱动利用预先存在的 SMB 共享,用于将卷存储为虚拟磁盘镜像。

使用 Windows SMB 驱动的主要原因包括

  • 易于管理和使用

  • 与 Microsoft 其他技术的良好集成(例如 Hyper-V 故障转移集群)

  • 适用于各种部署类型和规模

cinder-volume 服务以及所需的 Python 组件将直接安装到指定的 Windows 节点上(最好是暴露共享的节点)。

常见的部署场景

SMB 驱动旨在支持各种场景,例如

  • 可伸缩文件服务器 (SoFS),提供高可用性的 SMB 共享。

  • 独立的 Windows 或 Samba 共享

  • 任何其他 SMB 3.0 兼容设备

通过使用 SoFS 共享,虚拟磁盘镜像存储在集群共享卷 (CSV) 上。

一种常见做法是在 SAN 支持的 LUN 之上部署 CSV(通过 iSCSI 或光纤通道暴露给集群的所有节点)。如果没有 SAN,可以使用存储空间/存储空间直连 (S2D) 作为底层存储。

注意

S2D 通常用于超融合部署。

特性

VHDVHDX 是当前支持的镜像格式,可被 Hyper-V 和 KVM 计算节点使用。默认情况下,将使用动态(稀疏配置)镜像,除非另有配置。

驱动程序接受一个或多个共享,这些共享将作为存储池向 Cinder 调度器报告。这可以提供分层的方式,允许通过卷类型请求特定的共享(池)。

openstack volume type set $volume_type --property pool_name=$pool_name

前端 QoS 规范可以与卷类型关联,并在消费端(例如 Hyper-V)强制执行。

openstack volume qos create $rule_name --property consumer=front-end --property total_bytes_sec=20971520
openstack volume qos associate $rule_name $volume_type_id
openstack volume create $volume_name --type $volume_type_id --size $size

Cinder Backup Service 可以在 Windows 上运行。此驱动程序使用存储在 SMB 共享上的 vhdx 镜像存储卷,可以附加这些镜像以检索卷数据并将其发送到备份服务。

先决条件

  • 所有物理磁盘必须以字节模式

  • 在将备份写入磁盘时,必须使用 rb+

集群支持

Active-Active Cinder 集群目前是实验性的,不应在生产环境中使用。这意味着多个 Cinder Volume 服务同时处理同一个共享。

另一方面,Active-Passive 集群可以轻松实现,使用 Microsoft 故障转移集群将 Cinder Volume 服务配置为集群。

通过使用 SoFS,您可以提供 Cinder 使用的共享的高可用性。这可以与 Nova Hyper-V 集群驱动程序结合使用,该驱动程序允许集群虚拟机。这确保了当计算节点受到损害时,虚拟机可以透明地迁移到健康的节点,从而保持卷的连接性。

注意

Windows SMB 驱动是唯一可以与 Nova Hyper-V 集群驱动程序一起使用的 Cinder 驱动程序。原因是,在意外故障转移期间,卷需要在目标计算节点侧可用。

先决条件

在设置 SMB 驱动程序之前,您需要创建并配置一个或多个 SMB 共享,这些共享将用于存储虚拟磁盘镜像。

注意

驱动程序不管理共享权限。您必须确保 Cinder 以及共享消费者(例如 Nova、Hyper-V)具有访问权限。

请注意,Hyper-V 虚拟机使用内置用户组运行:NT VIRTUAL MACHINE\Virtual Machines

提供共享访问的最简单方法是使用 Active Directory 帐户。您可以授予运行 OpenStack 服务的用户以及计算节点(以及可选的存储节点)共享访问权限,使用每个计算机帐户访问规则。其中一个主要优点是,通过这样做,您无需将共享凭据传递给 Cinder(以及隐式地传递给卷消费者)。

通过授予计算机帐户访问权限,您基本上是授予该节点 LocalSystem 帐户的访问权限,从而授予在该主机上运行的虚拟机访问权限。

注意

默认情况下,使用 MSI 部署的 OpenStack 服务以 LocalSystem 身份运行。

一旦您已授予特定帐户的共享访问权限,请不要忘记在共享导出的目录上配置文件系统级别的权限。

配置 cinder-volume

以下是使用 Windows SMB 驱动程序的配置示例。将这些选项附加到您现有的 cinder.conf 文件中,该文件在 安装和配置存储节点 中描述。

[DEFAULT]
enabled_backends = winsmb

[winsmb]
volume_backend_name = myWindowsSMBBackend
volume_driver = cinder.volume.drivers.windows.smbfs.WindowsSmbfsDriver
smbfs_mount_point_base = C:\OpenStack\mnt\
smbfs_shares_config = C:\Program Files\Cloudbase Solutions\OpenStack\etc\cinder\smbfs_shares_list

# The following config options are optional
#
# image_volume_cache_enabled = true
# image_volume_cache_max_size_gb = 100
# image_volume_cache_max_count = 10
#
# nas_volume_prov_type = thin
# smbfs_default_volume_format = vhdx
# max_over_subscription_ratio = 1.5
# reserved_percentage = 5
# smbfs_pool_mappings = //addr/share:pool_name,//addr/share2:pool_name2

smbfs_mount_point_base 配置选项允许您指定将安装共享的位置。此目录将包含指向 Cinder 使用的共享的符号链接。每个符号链接名称将是实际共享路径的哈希值。

配置可用共享列表

除了 cinder.conf 之外,您还需要另一个配置文件,提供 Cinder 用于存储磁盘镜像的共享列表。在上面的示例中,此文件由 smbfs_shares_config 选项引用。

共享列表配置文件必须每行包含一个共享,可以选择包括挂载选项。您还可以添加注释,在行首使用“#”。

以下是共享列表配置文件的示例

# Cinder Volume shares
//sofs-cluster/share
//10.0.0.10/volumes -o username=user,password=mypassword

请记住,Linux 主机也可以使用这些卷。因此,挂载选项类似于 mount.cifs 中使用的选项(实际上,这些选项将由 Nova Linux 节点传递给 mount.cifs)。

在 Windows 节点的情况下,只有共享位置、用户名和密码将在挂载共享时使用。共享地址必须使用斜杠而不是反斜杠(与 Windows 管理员可能期望的不同),因为上述原因。

根据配置的共享访问规则,您可以跳过在配置文件中包含共享凭据,如 先决条件 部分所述。

配置 Nova 凭据

SMB 卷驱动程序依赖于 nova assisted volume snapshots 功能,在快照使用中的卷时,就像其他使用共享文件系统的类似驱动程序一样。

默认情况下,Nova 策略需要管理员权限才能执行此操作。您可以为 Cinder 提供特定的凭据,以在请求 Nova 辅助卷快照时使用,如下所示

[nova]
region_name=RegionOne
auth_strategy=keystone
auth_type=password
auth_url=http://keystone_host/identity
project_name=service
username=nova
password=password
project_domain_name=Default
user_domain_name=Default

配置存储池

每个共享都向 Cinder 调度器报告为一个存储池。

默认情况下,共享名称将是池的名称。如果需要,您可以提供池名称映射,为每个共享指定自定义池名称,如下所示

smbfs_pool_mappings = //addr/share:pool0

在上面的示例中,//addr/share 共享将报告为 pool0