深入探究 VMM 2012 中基于 SMB 的 Hyper-V 支持

在 Windows Server 2012 中,Hyper-V 添加了在 NAS 设备托管的网络共享上存储虚拟机 (VM) 资源的功能,您可将其作为 SAN 远程存储的一种替代方式。Windows Server 2012 中的 Hyper-V 存储堆栈现在可通过使用 SMB 协议中的“弹性句柄”功能,来增强这些虚拟机资源从网络连接断开的恢复支持。这基本上意味着诸如虚拟机配置文件、ISO 文件、VHD 文件和 VHD 快照文件等虚拟机资源现在可存储于支持 SMB 2.2+ 协议的任何远程 SMB 文件共享中。

System Center 2012 Virtual Machine Manager (VMM) 中基于 SMB 功能的 Hyper-V 通过增强管理支持和新增 NAS 存储管理的全面支持,进而构建了这一功能。用户现可通过 VMM 进行从创建,到修改权限,再到删除的整个网络共享生命周期。这些网络共享可驻留于 Windows Server 2012(现已升级为 SMB 3.0)文件服务器中,亦可驻留于实施了 SMB 2.2 或更高协议的 NAS 设备中。就目前而言,VMM 可为支持符合 SMI-S 要求的存储提供程序的 NAS 设备(NetApp 和/或 EMC)提供支持。

基础知识

以下是在 VMM 中管理 SMB 共享的步骤:

1. 添加存储设备:首个步骤是将存储设备或 Windows 文件服务器添加到 VMM 的管理中。此操作可通过使用构造工作区à 存储\提供程序节点à 右键单击并选择“添加存储设备”选项完成。为 Windows 文件服务器选择“本机 Windows WMI”,或为符合 SMI-S NAS 要求的存储提供程序选择“SMI-S CIMXML”。使用对文件服务器具有管理员访问权限的运行方式帐户。VMM 将使用这一指定的运行方式帐户来执行今后其他文件共享的管理操作,如创建共享、修改共享权限,以及删除共享。作为此操作的一部分,VMM 将发现所有位于存储设备上的现有共享,并将它们添加到 VMM 管理中。VMM 也将定期发现稍后(从 WMM 带外)添加到存储设备上的任何共享,并将其添加到 VMM 管理中。您也可使用 Add-SCStorageProvider cmdlet 来从 PowerShell 命令行添加存储设备。

图像

 

2. 创建共享:您也可选择使用构造工作区 à 存储\提供程序节点 à 从适当的视图或数据网格中选择提供程序à 选择功能区操作来创建文件共享在此提供程序上直接创建文件共享。如果用户指定了一个非位于文件服务器上的本地路径,那么 VMM 将自动为您添加该路径。New-SCStorageFileShare cmdlet 也可用于从 PowerShell 命令行创建共享。

图像

 

3. 将共享注册到主机或群集:当共享被添加或发现时,您需要将其注册到您希望创建可使用文件服务器远程存储的虚拟机的任何主机或群集上。此操作可通过使用构造工作区à 选择主机或群集à 右键单击“属性”à “存储”页面(针对主机)和“文件共享存储”页面(针对群集) à 选择“添加文件共享”选项完成。作为此操作中的一部分,VMM 将修改共享针对 Hyper-V 主机的必要权限,以访问存储。“我何时应手动修改共享的权限”部分提供了有关这些权限的额外详细信息。Register-SCStorageFileShare cmdlet 也可用于从 PowerShell 命令行注册共享。

图像

 

4. 在 SMB 共享上创建包含虚拟机资源的虚拟机实例:当共享被注册到主机或群集后,您可将虚拟机 VHD 和/或虚拟机资源存储于此共享上。在新虚拟机创建向导中,您可在“配置设置”页面中选择一个 SMB 共享:

a. 您可选择将所有虚拟机文件存储于 SMB 共享上。您可选择 [Virtual machine location](虚拟机位置)作为注册的 SMB 共享来完成此步骤。

图像

 

b. 您也可选择仅将单个 VHD 文件放于 SMB 共享上。您可选择 [Transfer the virtual hard disk by using the network](通过使用网络来传输虚拟硬盘),然后选择将源作为一个库共享,并将目标路径作为注册的 SMB 共享来完成此步骤。

图像

 

c. 您也可选择使用来自 SMB 共享中的一个现有 VHD。您可选择 [Use the virtual hard disk that exists at the destination](使用存在于目标中的虚拟硬盘)选项,然后选择将目标路径作为注册 SMB 共享上的 VHD 的路径来完成此操作。

图像

 

 

5. 从主机或群集注销共享注册在删除主机或群集之前,我们建议您从主机或群集注销共享。这将清除针对 Hyper-V 主机的所有不必要共享权限。此操作可通过使用构造工作区à 选择主机或群集à 右键单击“属性”à“存储”页面à 选择“删除文件共享”选项来完成。Unregister-SCStorageFileShare cmdlet 也可用于从 PowerShell 命令行注销共享。基于可选的用户输入 –LeavePermissionsOnShare,用户可选择不修改共享权限。该选项仅在使用 PowerShell 命令行时可用。此选项的默认值是 $false,即始终删除共享的权限。

6. 删除共享:您也可使用 VMM 来从文件服务器上彻底删除共享。此操作可通过使用构造工作区à 存储/提供程序节点à 从数据网格中选择提供程序à 选择共享à 选择功能区操作“删除”来完成。请注意,这将永久从文件系统中删除共享。 但这不会删除共享的文件。Remove-SCStorageFileShare cmdlet 也可用于从 PowerShell 命令行中删除共享。

有关这些步骤的其他详细信息,请访问 TechNet 库并查看基于 SMB 的 Hyper-V 支持。

常见问题解答

我应何时手动修改共享权限?

VMM 将为您更新所有要求的共享权限。您不需要手动修改任何权限来让 Hyper-V 访问文件共享。

图像

 

图 1:文件服务器管理

VMM 将向共享权限添加以下运行方式帐户:

a) Hyper-V 主机管理员帐户。这是在添加主机或群集时使用的管理域帐户。

b) 主机的计算机帐户。在使用群集的情形中,VMM 服务器将添加群集所有节点的计算机帐户。当新节点被添加到群集时,VMM 将自动更新针对注册到群集,并作为群集定期刷新一部分的所有共享的权限。

对于 Windows 服务器 SMB 文件共享,VMM 将为上述所有帐户添加以下共享:

a) 共享权限:AccessRights.Full b) NTFS 权限:FileSystemRights.Modify | FileSystemRights.ChangePermissions | FileSystemRights.DeleteSubdirectoriesAndFiles

  •  

图像

对于符合 SMI-S NAS 要求的存储提供程序,VMM 将为上述帐户提供以下权限:

a) 5 (读取)、6 (写入)和更改权限 (14)的CIM_AssociatedPrivilege。 您唯一需要为共享修改权限的情况是未管理的共享。VMM 中未管理的共享,是一个与提供程序或文件服务器无关联的共享。VMM 也可以管理此类共享,但其功能仅限于在这些共享上创建虚拟机,而不共享 ACL 管理。

凭据委派:VMM 为什么不需要为 Hyper-V SMB 存储约束委派?

 

图像

图 2:凭据委派

在首次调用 SMB 共享时,Hyper-V 将模拟已经启动 VHD 安装操作的用户(在此示例中为 CONTOSO\AdminH)。此操作的目的在于验证调用用户是否拥有访问 SMB 共享上 VHD 文件的适当权限。如果此调用成功,那么在以下调用中,Hyper-V 将使用 Hyper-V 主机的计算机帐户凭据(在此示例中为 CONTOSO\HyperVHost$)。

当 VMM 服务器/客户端或任何其他管理客户端尝试远程管理 Hyper-V 虚拟机或 SMB 共享时,身份级别令牌将发送到 Hyper-V(首个跃点),在默认情况下,这将导致(上述)模拟后的 SMB 共享(第二个跃点)SMB 身份验证失败。此身份验证失败是由于身份级别令牌无法被除创建此令牌的任何其他计算机使用所造成的。为了避免这一问题,您必须在 Hyper-V 服务器和 SMB 共享服务器之间设置约束委派,以允许 AN 接受 Hyper-V 服务器上的身份令牌来验证 SMB 服务器,或者 VMM 必须将完整的交互式令牌传递到 Hyper-V,以进行(CredSSP 提供的)操作。

使用约束委派的首个选项不仅需要在域中进行更高级别的授权,而且由于构造(Hyper-V 主机/群集)将随着时间的推移而变化,因此其还需要不断更新。进行凭据委派的第二种替代方式是使用 CredSSP。Hyper-V 远程 API(WinRM) 允许使用 CredSSP 身份验证来委派调用方的凭据。VMM 将使用 CredSSP,并在主机代理 WinRM 调用上启用 CredSSP。

为启用 CredSSP, VMM 将自动为您进行以下操作:

1. VMM 服务器设置: VMM 服务器设置将配置计算机的组策略设置,以允许 WinRM 使用 CredSSP 身份验证提供程序。

o 启用 WinRM 客户端 GPO:Computer Configuration\Administrative template\Windows Components\Windows Remote Management (WinRM)\WinRM Client

[Allow CredSSP authentication] = true

                                                或

                                                命令行:winrm set winrm/config/client/auth '@{CredSSP="true"}'

o 启用凭据委派 GPO: Computer Configuration\Administrative Templates\System\Credentials Delegation

[AllowFreshCredentials ] = "WSMAN/*"

2. 主机代理设置:

o 启用 WinRM 服务 GPO: Computer Configuration\Administrative template\Windows Components\Windows Remote Management (WinRM)\WinRM Service。

[Allow CredSSP authentication] = true

命令行:winrm set winrm/config/service/auth '@{CredSSP="true"}'

3. VMM 的 WinRM 通信通道: WinRM 仅允许“全新凭据”的委派。这需要 VMM 在创建 WinRM 会话时显式传递有效凭据。(请注意,由于 WinRM 并不支持“默认凭据”,因此我们无法使用 VMM 服务帐户)。我们将在针对这一目的添加主机或群集时使用分配的运行方式帐户。以下所有针对主机的 WinRM 调用都将使用运行方式帐户来管理主机。因此,请务必利用运行方式帐户来添加主机和/或群集,而非仅仅提供直接凭据,进而让 VMM 来使用这些保存的凭据进行委派。

 

希望本篇博文对您有所帮助。欢迎您在博文底部提供反馈,并/或在 VMM 论坛上提问。 另外,请访问 VMM 2012 TechNet 库了解信息!

谢谢,

Radhika Gupta | 开发人员 | MSFT

App-V 团队博客:https://blogs.technet.com/appv/
ConfigMgr 支持团队博客:https://blogs.technet.com/configurationmgr/
DPM 团队博客:https://blogs.technet.com/dpm/
MED-V 团队博客:https://blogs.technet.com/medv/
Orchestrator 支持团队博客:https://blogs.technet.com/b/orchestrator/
Operations Manager 团队博客:https://blogs.technet.com/momteam/
SCVMM 团队博客:https://blogs.technet.com/scvmm
Server App-V 团队博客:https://blogs.technet.com/b/serverappv
Service Manager 团队博客:https://blogs.technet.com/b/servicemanager
System Center Essentials 团队博客:https://blogs.technet.com/b/systemcenteressentials
WSUS 支持团队博客:https://blogs.technet.com/sus/

Forefront Server Protection 博客:https://blogs.technet.com/b/fss/
Forefront Endpoint Security 博客:https://blogs.technet.com/b/clientsecurity/
Forefront Identity Manager 博客:https://blogs.msdn.com/b/ms-identity-support/
Forefront TMG 博客:https://blogs.technet.com/b/isablog/
Forefront UAG 博客:https://blogs.technet.com/b/edgeaccessblog/