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 通常用于超融合部署。
特性¶
VHD 和 VHDX 是当前支持的镜像格式,可被 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 使用的共享的符号链接。每个符号链接名称将是实际共享路径的哈希值。
配置 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。