第九章 通过 SMB 共享虚拟机

时间:2024-03-03 09:17:33

 

自 Windows Server 2012 起,微软引入了 SMB 3.0 的概念,通过 SMB 3.0,可以实现很多新的功能,包括我们介绍过的"SMB 多通道",以及将虚拟机的存储安装在 SMB 3.0 的文件共享服务器上,实现另外一种高可用性。

相对于硬件存储而言,搭建 SMB 的文件共享服务器成本更为低廉。将虚拟机部署在 SMB 3.0 上,可以实现基本等同于 Hyper-V 故障转移群集的效果。

9.1 SMB 3.0 的特性

9.1.1 SMB 3.0 的部署和使用条件

SMB 3.0 是一项新技术,因此在带来新功能的同时,对部署环境和使用条件也有一定的限制。

  • 部署一个常见的 Active Directory 域环境,对于域中的林和域的功能级别,SMB 3.0 并没有硬性要求。
  • 使用 SMB 3.0 的客户端和服务器均必须支持 SMB 3.0。如 Windows Server 2012/2012 R2,Windows 8/8.1。
  • 如果希望应用于 Hyper-V 主机,则 Hyper-V 角色和 SMB 3.0 角色不能同时存在于一台主机上,SMB 3.0 不支持环回的配置。
  • 可以使用非微软的文件共享服务器,但必须同样支持 SMB 3.0

     

9.1.2SMB 3.0 功能

SMB 3.0 相对于 Windows Server 2008 中存在的 SMB 2.0,增加了一些对于 Hyper-V 有用的功能:

  • SMB 透明的故障转移,在 SMB 2.0 中,如果管理员对 SMB 群集进行维护,则客户端会中断连接,用户必须重新连接才可以继续使用服务。而在 SMB 3.0 中,这一情况得到了改变。
  • SMB 多通道,该功能要求客户端和服务器双方都必须支持 SMB 3.0,但其实现的功能也是非常有用的,可以对客户端和服务器之间的流量在不同网卡之间分流、故障转移。
  • SMB 直通(RDMA),该功能只在 Windows Server 平台上使用,同样该功能要求客户端和服务器均需支持 SMB 3.0,同时需要主机拥有支持 RDMA 的网卡。
  • SMB 加密,在客户端和服务器均支持 SMB 3.0 的前提下,可以使用 SMB 3.0 加密功能。

    SMB PowerShell,在 Windows Server 2012 和 Windows8 起,开始引入 SMB PowerShell。需要注意的是,SMB PowerShell 仅支持 Windows Server 2012 以上的操作系统,之前的版本还需要使用 net.exe 或其他 API 进行管理。

9.2 部署 SMB 3.0

 

9.2.1 添加文件服务器角色

首先准备一台 Windows Server 2012 R2 的虚拟机,其 FQDN 为 fs.contoso.com。在生产环境中,为了保证良好的用户体验,可以使用物理机来实现。

第 1 步,依次打开"服务器管理器"→"添加角色和功能向导",在"安装类型"对话框中勾选"基于角色或基于功能的安装",如图 9-1 所示,点击"下一步"继续。

9-1 添加角色和功能

第 2 步,在"服务器选择"对话框,点选所需要添加角色的服务器,如图 9-2 所示,点击"下一步"继续。

9-2 选择需要添加角色的服务器

第 3 步,在"服务器角色"对话框,勾选"文件和 iSCSI 服务"下的"文件服务器",如图 9-3 所示,点击"下一步"继续。

9-3 安装文件服务器角色

第 4 步,功能对话框不勾选任何选项,点击"下一步"进入到"确认"对话框,点击"安装"完成,如图 9-4 所示。

图 9-4 确认安装角色

如果使用 PowerShell 在 fs.contoso.com 本地进行安装,则可以以管理员方式运行 PowerShell,执行以下命令。

Install-WindowsFeature File-Services, FS-FileServer

如果使用 PowerShell 在远程服务器上安装,则可以使用如下命令。

Invoke-Command -ComputerName fs -Command{Install-WindowsFeature -Name File-Services, FS-

FileServer }

 

9.2.2 添加共享文件夹

为了将 SMB 3.0 应用于 Hyper-V,还需要创建特定的共享文件夹方可使用。和普通的共享文件夹应用不同的是,Hyper-V 访问共享文件夹不是以"用户"的身份去进行访问,而是以"计算机"的身份进行访问,因此在配置共享文件夹时需要进行一些特殊的配置。第 1 步,依次点击"服务器管理器"→"文件和存储服务"→"共享",如图 9-5 所示。

9-5 共享管理界面

第 2 步,在"共享"对话框,点击"任务"按钮,选择"新建共享",启动"新建共享向导"。在"选择配置文件"对话框中,必须点选"SMB 共享-应用程序",仅此配置文件适用于 Hyper-V,如图 9-6 所示,点击"下一步"继续。

9-6 创建"SMB 共享-应用程序"

第 3 步,在"共享位置"对话框,点选"按卷选择"按钮,选择 D 盘,如图 9-7 所示,点击"下一步"继续。

9-7 创建"共享位置"

第 4 步,在"共享名称"对话框,依次输入"共享名称"和"共享描述",此处可以输入中文的名称和描述以方便识别。根据共享名称的不同,系统会自动在所选的 D 盘下创建"share\共享名称"目录,同时将其共享为"\\服务器名\共享名称"。如图 9-8 所示,点击"下一步"继续。

9-8 创建"共享名称"

第 5 步,在"其他设置"对话框,可以配置"启用基于存取的枚举"、"允许共享缓存"、 "加密数据访问"功能是否开启。由于所选共享配置文件以及本例未安装 BranchCache 功能的缘故,因此上两项功能无法使用,如图 9-9 所示,不勾选任何选项,直接点击"下一步" 继续。

9-9 创建"其他设置"

第 6 步,在"权限"对话框,需要配置能够访问该共享目录的安全权限和共享权限。点击"自定义权限"进入配置界面,如图 9-10 所示。

9-10 创建"其他设置"

第 7 步,在"高级安全设置"对话框,于默认的"权限"选项卡下,点击"添加",如图 9-11 所示。

9-11 添加安全权限

第 8 步,点击"选择主体"按钮,于弹出的"选择用户、计算机、服务账户或组"对话框中选择"对象类型",如图 9-12 所示。

9-12 选择对象类型

第 9 步,在"对象类型"对话框中,勾选"计算机"对象类型,点击"确定"返回上一级窗口,如图 9-13 所示。

9-13 选中"计算机"类型

第 10 步,在"选择用户、计算机、服务账户或组"对话框中,可以输入 hv2.contoso.com 的计算机名,如未进行过第 8-9 步的操作,则默认情况下无法选用计算机账户。点击"确定",如图 9-14 所示。

9-14 添加计算机账户

第 11 步,返回至特定安全主体的权限配置页面,可以对 hv2.contoso.com 对该共享文件夹的访问权限进行设定。此处勾选"完全控制",点击"确定"完成配置。如图 9-15 所示。

9-15 为计算机账户配置权限

第 12 步,依次对 hv3.contoso.com 和 hypervha.contoso.com(群集地址)添加相同的完全控制权限。原则上有多少台需要访问该目录的计算机,就需要添加多少个共享权限。如图 9-16 所示。

9-16 重复配置计算机安全权限

第 13 步,检查"共享"权限配置是否正确,依次对 hv3.contoso.com 和 hypervha.contoso.com(群集地址)添加相同的完全控制权限。原则上有多少台需要访问该目录的计算机,就需要添加多少个"共享"权限。如图 9-17 所示。

9-17 重复配置计算机安全权限

第 14 步,在"权限"对话框中,可以检查共享文件夹的安全权限配置是否正确。如图

9-18 所示,点击"下一步"继续。

9-18 检查安全权限的配置第 15 步,在"确认"对话框中,可以检查共享文件夹的整体配置是否正确。如图 9-19 所示,点击"创建"继续。

9-19 检查共享文件夹的整体配置

第 16 步,在"结果"对话框中,耐心等待共享文件夹的创建结束,如图 9-20 所示,点击"关闭"完成配置。

9-20 完成共享文件夹配置

第 17 步,回到"服务器管理器",可以"共享"下看到已创建的文件夹。如图 9-21 所示。

9-21 在服务器管理器中的共享文件夹

第 18 步,在运行中输入\\fs 可以看到已创建的文件夹,右键点击该文件夹,选择"属性",可以看到其安全权限的配置,后续的权限修改也可以在此进行。如图 9-22 所示。

9-22 检查共享文件夹配置

9.3 SMB 3.0 上创建虚拟机

9.3.1 创建虚拟机

完成共享文件夹的创建后,可以使用被允许的 Hyper-V 主机将虚拟机创建在该共享文件夹上。

第 1 步,远程登录 hv2.contoso.com,打开"Hyper-V 管理器",如图 9-23 所示。

9-23 远程的登录 hv2.contoso.com

第 2 步,通过"新建虚拟机向导"创建虚拟机,在"指定名称和位置"对话框,修改虚拟机的存储位置为上一阶段创建的共享文件夹:"\\fs\Hyper-V 存储共享\",如图 9-24 所示,点击"下一步"继续。

9-24 修改虚拟机存储位置。

第 3 步,依次进行其他配置,完成虚拟机的创建。如图 9-25 所示。

9-25 修改虚拟机存储位置。

第 4 步,在"Hyper-V 管理器"中,右键点击该虚拟机,选择"设置",可以检查该虚拟机的硬盘驱动器设置,能够发现其保存位置也确实在共享文件夹上。如图 9-26 所示。

9-26 检查虚拟机存储位置。

9.3.2 SMB3.0 上创建虚拟机的局限性

以上完成了在 SMB3.0 上创建虚拟机的操作,然而需要注意的是,如果仅仅是完成了以上操作,则只能登陆相应的 Hyper-V 主机,方可在共享文件夹上创建虚拟机。如登陆 hv2.contoso.com 后,只能在 hv2.contoso.com 上创建虚拟机,而无法使用"Hyper-V管理器" 在 hv3.contoso.com 上创建虚拟机。例如,在 hv1.contoso.com 上打开"Hyper-V 管理器",为 hv2.contoso.com 创建基于共享文件的虚拟机,则会出现如下错误提示,如图 9-27 共享文件夹上创建虚拟机的局限性。

图 9-27 所示。

9.4 权限委派

9.4.1 委派的意义

为了解决 SMB3.0 上创建虚拟机的局限性,需要引入一个新的概念"委派"。"委派"在Windows Server 中拥有久远的历史。其解决的是集中管理的问题,当只有少数的服务器时,服务器管理员可以远程登录到每一台服务器上,发起相应的操作,服务器和服务器之间通过用户密码或其他凭据进行正常的通信。如图 1 所示 9-28 所示。

9-28 无需使用委派的场景。

由于 Windows Server 默认只信任"自己"所发起的一些操作。当有人"代表"它进行操作时,默认是不成功的,这也就解释了默认情况下无法使用"Hyper-V 管理器"为其他 Hyper-V 主机创建虚拟机的问题,如图 9-29 所示。

9-29 不委派导致失败的场景。

然而当所需要管理的计算机越来越多时,每次都要登录到相应的计算机去操作显然不现实。此时就需要使用"委派"来解决这个问题,"委派"就好比一个声明,又可以理解为"领导"对"员工"工作的具体指派:"我允许你访问 a 资源和 b 资源,我允许 b 主机访问 c 资源和 d 资源"。委派是域内使用的一种策略,其策略实施不需要被委派方的回应。当实施委派后,就可以进行类似 hv1.contoso.com 上的"Hyper-V 管理器"操作 hv2.contoso.com 或 hv3.contoso.com 这种操作了,如图 9-30 所示。

9-30 委派的场景。

9.4.2 委派的分类

委派分为两种方式,分别是"委派"和"约束委派",顾名思义,委派就是将所有权限都委派给某一台计算机,而约束委派则是将某个或某几个应用的权限委派给某一台计算机。相对而言,约束委派的安全性要更好一些。但操作也稍微复杂一些。本例将以约束委派进行示例进行讲解。

9.4.3 委派的配置

本例要实现的最终目标是,可以在 hv1.contoso.com 上用 "Hyper-V 管理器 " 在 hv2.contoso.com、hv3.contoso.com 以及 hypervha.contoso.com(群集地址)上创建虚拟机。

委派的前提是需要操作计算机处于域环境中,对于非域环境的计算机,无法使用委派功能。

第 1 步,使用域管理员账号登录域控制器,打开"Active Directory 用户和计算机",在相应的 OU 下找到需要操作的计算机账户,本例中专门创建了一个 OU"物理主机",默认情况下,所有计算机账户位于"Computers"下。如图 9-31 所示。

9-31 打开"Active Directory 用户和计算机"

第 2 步,右键点击需要委派的计算机账户,选择"属性",如图 9-32 所示。

9-32 选择计算机账户的属性

第 3 步,在"属性"对话框中,切换至"委派"选项卡,如图 9-33 所示。此处有三个选项:

图 9-33 委派选项卡

第 4 步,点击"仅信任此计算机来委派指定的服务",默认点选"仅使用 Kerberos"。点击右下角的"添加"按钮。如图 9-34 所示。

9-34 指定"仅信任此计算机来委派指定的服务"

第 5 步,点击"用户或计算机",在弹出的"选择用户或计算机"对话框中,输入 hv2 或 hv2.contoso.com(需要委派的第一台 Hyper-V 主机),如图 9-35 所示,点击"确定"。

图 9-35 指定需委派的计算机

第 6 步,在弹出的"添加服务"对话框中,可以选择需要添加的各类服务,按下"Ctrl" 键可进行复选。本例中选择 cifs 即可。即表示允许 hv1.contoso.com 对 hv2.contoso.com 进行 cifs(Common Internet File System 通用 Internet 文件系统,即微软自家的 SMB 共享)的相应访问操作。如图 9-36 所示,点击"确定"。

图 9-36 委派 cifs 服务

第 7 步,除了 hv2.contoso.com 外,还需要依次添加 hv3.contoso.com 和

hypervha.contoso.com 的相应委派权限,以及需要访问的文件共享服务器(fs.contoso.com)的相应委派权限,如图 9-37 所示,点击"确定"完成约束委派的设置。

9-37 依次添加所有涉及的服务

第 8 步,在生产中,为了后期操作方便,而不局限于只能在 hv1.contoso.com 上管理,可以依次对其他所涉及的 Hyper-V 主机委派相应的权限,如图 9-38 所示。

9-38 依次对所有涉及的 Hyper-V 主机进行相同操作

第 9 步,在"Active Directory 用户和计算机"上完成委派后,策略可能不会即时生效,如遇这种情况,需要重启所涉及的 Hyper-V 主机,并刷新组策略方可生效。

委派生效后,即可解决未配置委派时,无法用"Hyper-V 管理器"远端创建和维护虚拟机的问题。

9.4.4 委派的其他作用

在微软的虚拟化和私有云中,委派还有另外两个重要的作用,通过委派"Hyper-V Replica Service"和"Microsoft Virtual System Migration Service",可以为虚拟化环境带来"实时迁移" 和"Hyper-V 副本"两项重要的功能。配置如图 9-39 所示,如果未正确配置委派,则这两项功能无法使用,和配置 cifs 的委派同理,该操作需要在所有涉及的 Hyper-V 主机上设置。

9-39 配置委派 Hyper-V 副本和实时迁移功能

9.5 小结

本章通过创建 SMB 文件共享和委派,实现了使用"Hyper-V 管理器"将虚拟机创建在共享文件夹上的操作。在 SMB 上创建虚拟机是一种廉价的高可用解决方案,无需企业拥有独立的硬件存储,配置方面也非常简单。通过 SMB 文件共享,可以实现接下来将要介绍的共享实时迁移。

而委派这项操作,尽管并非实时迁移的必要准备条件。但未配置"Microsoft Virtual System Migration Service"委派的情况下,就必须登录到目标主机上进行操作,这将会极大的降低工作效率。因此实际的生产活动当中,委派可以说是一项必备条件。